我们有一个自定义扩展程序,适用于magento 2.2.7上的mageplaza自定义pdf发票扩展程序。
mageplaza模块需要更新,所以我们做了。现在,更新的模块与其他扩展程序不兼容,该扩展程序修复了发票上magento2属性的布局...
所以应该一起使用的两个扩展是:
不幸的是,当我们编译magento代码时,它会引发此错误:
编译期间的错误:
FrikandelX \ Invoice \ Block \ Invoice \ Items
参数类型不兼容:必填类型:
\ Mageplaza \ PdfInvoice \ Helper \ Data。实际类型:数组;文件:
/xx/Xx/mage227-dev/app/code/FrikandelX/Invoice/Block/Invoice/Items.php
总错误计数:1
这是FrikandelX文件:
使用Magento \ Framework \ View \ Element \ Template \ Context; 使用Magento \ Tax \ Helper \ Data;
类物品扩展了\ 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);
}
}
任何帮助都会得到极大的帮助。希望我能解释清楚,并非常感谢您的帮助!
答案 0 :(得分:0)
有时,当您使用的IDE自动导入代码所引用的类或接口时,例如$data
。
在这种情况下,根据您的Data $taxHelper
语句,注入到构造函数中的参数use
的类型错误:
use Magento\Tax\Helper\Data;
因此,您需要确保Data $taxHelper
参数实际上包含以下类型的数据:
Mageplaza\PdfInvoice\Helper\Data
希望有帮助。