Несовместимый тип аргумента при компиляции - PullRequest
1 голос
/ 15 апреля 2019

У нас есть специальное расширение, которое работало над расширением счета-фактуры 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);
}

}

Любая помощь будет очень ценной. Я надеюсь, что объяснил это ясно и большое спасибо за вашу помощь!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...