У нас есть специальное расширение, которое работало над расширением счета-фактуры pdf mageplaza в magento 2.2.7.
Модуль mageplaza нужно было обновить, что мы и сделали. Теперь обновленный модуль не совместим с другим расширением, которое исправляет расположение атрибутов magento2 в счете-фактуре ...
Итак, два расширения, которые должны работать вместе:
- Счет FrikandelX
- Mageplaza / Pdfinvoice
К сожалению, когда мы скомпилировали magento-код, он выдает эту ошибку:
Ошибки при компиляции:
FrikandelX \ Счет \ Block \ Счет \ Items
Несовместимый тип аргумента: Обязательный тип:
\ Mageplaza \ PdfInvoice \ Helper \ Data. Фактический тип: массив; Файл:
/ XX / XX / mage227-DEV / приложение / код / FrikandelX / Счет / Block / Счет / Items.php
Общее количество ошибок: 1
Это файл FrikandelX:
/ public_html / приложение / код / FrikandelX / Счет / Block / Счет / Items.php
use Magento \ Framework \ View \ Element \ Template \ Context;
используйте Magento \ Tax \ Helper \ Data;
Класс Предметов extends \ Mageplaza \ PdfInvoice \ Block \ Invoice \ Items {
защищенный $ _productRepository;
public function __construct(
Context $context,
Data $taxHelper,
\Magento\Catalog\Api\ProductRepositoryInterface $productRepository,
array $data = []
)
{
parent::__construct($context, $taxHelper, $data);
$this->_productRepository = $productRepository;
}
public function getProduct($sku)
{
try {
$product = $this->_productRepository->get($sku);
} catch (\Exception $e) {
return false;
}
return $product;
}
private function _getProduct($sku)
{
try {
$product = $this->_productRepository->get($sku);
} catch (\Exception $e) {
var_dump($sku);
exit($e->getMessage());
}
die;
}
public function getDiscount($item, $product, $invoice)
{
if($item->getPrice() == $product->getPrice()){
$discountAmount = $item->getDiscountAmount();
if($discountAmount){
$rowTotalDiscounted = $item->getRowTotal() - $discountAmount;
$rowTotal = $product->getPrice() * $item->getQty();
$item->setRowTotal($rowTotalDiscounted);
$invoice->setSubTotal($invoice->getSubTotal() - $rowTotal + $rowTotalDiscounted);
$invoice->setDiscountAmount(null);
return 100 - round($rowTotalDiscounted / $rowTotal * 100, 0);
}
return '0';
}
return 100 - round($item->getPrice() / $product->getPrice() * 100, 0);
}
}
Любая помощь будет очень ценной. Я надеюсь, что объяснил это ясно и большое спасибо за вашу помощь!