Incompatible argument type: Required type: \Magento\Customer\Api\AddressRepositoryInterface
-
21-03-2021 - |
Question
During compiling I've got the following compilation error:
Incompatible argument type:
Required type: \Magento\Customer\Api\AddressRepositoryInterface.
Actual type: \Magento\Framework\App\Response\Http\FileFactory;
Any ideas what is wrong and how this can be corrected?
<?php
namespace Support\Cart2QuotePdf\Model\Quote\Pdf;
/**
* Quote PDF model
*/
class Quote extends \Cart2Quote\Quotation\Model\Quote\Pdf\Quote
{
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
/**
* @var \Cart2Quote\Quotation\Model\Quote\Address\Renderer|\Magento\Sales\Model\Order\Address\Renderer
*/
protected $_addressRenderer;
/**
* @var \Magento\Framework\Locale\ResolverInterface
*/
protected $localeResolver;
/**
* @var \Magento\Framework\App\Response\Http\FileFactory
*/
protected $fileFactory;
/**
* @var array
*/
protected $quotes;
/**
* @var \Magento\Framework\Translate
*/
protected $translate;
/**
* Quote constructor.
*
* @param \Magento\Framework\Translate $translate
* @param \Magento\Payment\Helper\Data $paymentData
* @param \Magento\Framework\Stdlib\StringUtils $string
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Framework\Filesystem $filesystem
* @param \Magento\Sales\Model\Order\Pdf\Config $pdfConfig
* @param \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory
* @param \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
* @param \Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
* @param Items\QuoteItem $renderer
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
* @param array $data
*/
public function __construct(
\Magento\Framework\Translate $translate,
\Magento\Payment\Helper\Data $paymentData,
\Magento\Framework\Stdlib\StringUtils $string,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Framework\Filesystem $filesystem,
\Magento\Sales\Model\Order\Pdf\Config $pdfConfig,
\Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory,
\Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\Locale\ResolverInterface $localeResolver,
\Cart2Quote\Quotation\Model\Quote\Pdf\Items\QuoteItem $renderer,
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
array $data = []
) {
$this->translate = $translate;
$this->fileFactory = $fileFactory;
$this->_storeManager = $storeManager;
$this->localeResolver = $localeResolver;
$this->_addressRenderer = $addressRenderer;
parent::__construct(
$translate,
$paymentData,
$string,
$scopeConfig,
$filesystem,
$pdfConfig,
$pdfTotalFactory,
$pdfItemsFactory,
$localeDate,
$inlineTranslation,
$addressRenderer,
$storeManager,
$localeResolver,
$renderer,
$fileFactory,
$data
);
}
di.xml looks as follows:
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<preference for="Cart2Quote\Quotation\Model\Quote\Pdf\Quote" type="Support\Cart2QuotePdf\Model\Quote\Pdf\Quote" />
<preference for="Cart2Quote\Quotation\Model\Quote\Pdf\Items\QuoteItem" type="Support\Cart2QuotePdf\Model\Quote\Pdf\Items\QuoteItem" />
</config>
Cart2Quote/Quotation/Model/Quote/Pdf/Quote.php
looks like this:
<?php
/**
* Copyright (c) 2019. Cart2Quote B.V. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Cart2Quote\Quotation\Model\Quote\Pdf;
/**
* Quote PDF model
*/
class Quote extends \Cart2Quote\Quotation\Model\Quote\Pdf\AbstractPdf
{
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
/**
* @var \Cart2Quote\Quotation\Model\Quote\Address\Renderer|\Magento\Sales\Model\Order\Address\Renderer
*/
protected $_addressRenderer;
/**
* @var \Magento\Framework\Locale\ResolverInterface
*/
protected $localeResolver;
/**
* @var \Magento\Framework\App\Response\Http\FileFactory
*/
protected $fileFactory;
/**
* @var array
*/
protected $quotes;
/**
* @var \Magento\Framework\Translate
*/
protected $translate;
/**
* @var \Magento\Quote\Model\QuoteFactory
*/
protected $quoteFactory;
/**
* @var \Magento\Customer\Model\Session
*/
protected $customerSession;
/**
* @var \Cart2Quote\Quotation\Model\QuoteFactory
*/
protected $quotationFactory;
/**
* @var \Magento\Customer\Api\CustomerRepositoryInterface
*/
protected $customerRepositoryInterface;
/**
* System event manager
*
* @var \Magento\Framework\Event\ManagerInterface
*/
protected $eventManager;
/**
* Quote constructor
*
* @param \Magento\Framework\Translate $translate
* @param \Magento\Payment\Helper\Data $paymentData
* @param \Magento\Framework\Stdlib\StringUtils $string
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Framework\Filesystem $filesystem
* @param \Magento\Sales\Model\Order\Pdf\Config $pdfConfig
* @param \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory
* @param \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
* @param \Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
* @param Items\QuoteItem $renderer
* @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepository
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
* @param \Magento\Customer\Model\Session $customerSession
* @param \Magento\Quote\Model\QuoteFactory $quoteFactory
* @param \Cart2Quote\Quotation\Model\QuoteFactory $quotationFactory
* @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
* @param \Magento\Framework\Event\ManagerInterface $eventManager
* @param array $data
* @throws \Magento\Framework\Exception\FileSystemException
*/
public function __construct(
\Magento\Framework\Translate $translate,
\Magento\Payment\Helper\Data $paymentData,
\Magento\Framework\Stdlib\StringUtils $string,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Framework\Filesystem $filesystem,
\Magento\Sales\Model\Order\Pdf\Config $pdfConfig,
\Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory,
\Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\Locale\ResolverInterface $localeResolver,
\Cart2Quote\Quotation\Model\Quote\Pdf\Items\QuoteItem $renderer,
\Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
\Magento\Customer\Model\Session $customerSession,
\Magento\Quote\Model\QuoteFactory $quoteFactory,
\Cart2Quote\Quotation\Model\QuoteFactory $quotationFactory,
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface,
\Magento\Framework\Event\ManagerInterface $eventManager,
array $data = []
) {
$this->translate = $translate;
$this->fileFactory = $fileFactory;
$this->_storeManager = $storeManager;
$this->localeResolver = $localeResolver;
$this->_addressRenderer = $addressRenderer;
$this->customerSession = $customerSession;
$this->quoteFactory = $quoteFactory;
$this->quotationFactory = $quotationFactory;
$this->customerRepositoryInterface = $customerRepositoryInterface;
$this->eventManager = $eventManager;
parent::__construct(
$paymentData,
$string,
$scopeConfig,
$filesystem,
$pdfConfig,
$pdfTotalFactory,
$pdfItemsFactory,
$localeDate,
$inlineTranslation,
$addressRenderer,
$renderer,
$data
);
}
Solution
<preference for="Cart2Quote\Quotation\Model\Quote\Pdf\Quote" type="Support\Cart2QuotePdf\Model\Quote\Pdf\Quote" />
For this preference added in di.xml, Please use the below code and check whether you can get rid of the error.
<?php
namespace Support\Cart2QuotePdf\Model\Quote\Pdf;
use Cart2Quote\Quotation\Model\Quote\Pdf\Quote as CartQuote
class Quote extends CartQuote
{
/**
* @var \Magento\Store\Model\StoreManagerInterface
*/
protected $_storeManager;
/**
* @var \Cart2Quote\Quotation\Model\Quote\Address\Renderer|\Magento\Sales\Model\Order\Address\Renderer
*/
protected $_addressRenderer;
/**
* @var \Magento\Framework\Locale\ResolverInterface
*/
protected $localeResolver;
/**
* @var \Magento\Framework\App\Response\Http\FileFactory
*/
protected $fileFactory;
/**
* @var array
*/
protected $quotes;
/**
* @var \Magento\Framework\Translate
*/
protected $translate;
/**
* @var \Magento\Quote\Model\QuoteFactory
*/
protected $quoteFactory;
/**
* @var \Magento\Customer\Model\Session
*/
protected $customerSession;
/**
* @var \Cart2Quote\Quotation\Model\QuoteFactory
*/
protected $quotationFactory;
/**
* @var \Magento\Customer\Api\CustomerRepositoryInterface
*/
protected $customerRepositoryInterface;
/**
* System event manager
*
* @var \Magento\Framework\Event\ManagerInterface
*/
protected $eventManager;
/**
* Quote constructor
*
* @param \Magento\Framework\Translate $translate
* @param \Magento\Payment\Helper\Data $paymentData
* @param \Magento\Framework\Stdlib\StringUtils $string
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
* @param \Magento\Framework\Filesystem $filesystem
* @param \Magento\Sales\Model\Order\Pdf\Config $pdfConfig
* @param \Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory
* @param \Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory
* @param \Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate
* @param \Magento\Framework\Translate\Inline\StateInterface $inlineTranslation
* @param \Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer
* @param \Magento\Store\Model\StoreManagerInterface $storeManager
* @param \Magento\Framework\Locale\ResolverInterface $localeResolver
* @param \Cart2Quote\Quotation\Model\Quote\Pdf\Items\QuoteItem $renderer
* @param \Magento\Customer\Api\AddressRepositoryInterface $addressRepository
* @param \Magento\Framework\App\Response\Http\FileFactory $fileFactory
* @param \Magento\Customer\Model\Session $customerSession
* @param \Magento\Quote\Model\QuoteFactory $quoteFactory
* @param \Cart2Quote\Quotation\Model\QuoteFactory $quotationFactory
* @param \Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface
* @param \Magento\Framework\Event\ManagerInterface $eventManager
* @param array $data
* @throws \Magento\Framework\Exception\FileSystemException
*/
public function __construct(
\Magento\Framework\Translate $translate,
\Magento\Payment\Helper\Data $paymentData,
\Magento\Framework\Stdlib\StringUtils $string,
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
\Magento\Framework\Filesystem $filesystem,
\Magento\Sales\Model\Order\Pdf\Config $pdfConfig,
\Magento\Sales\Model\Order\Pdf\Total\Factory $pdfTotalFactory,
\Magento\Sales\Model\Order\Pdf\ItemsFactory $pdfItemsFactory,
\Magento\Framework\Stdlib\DateTime\TimezoneInterface $localeDate,
\Magento\Framework\Translate\Inline\StateInterface $inlineTranslation,
\Cart2Quote\Quotation\Model\Quote\Address\Renderer $addressRenderer,
\Magento\Store\Model\StoreManagerInterface $storeManager,
\Magento\Framework\Locale\ResolverInterface $localeResolver,
\Cart2Quote\Quotation\Model\Quote\Pdf\Items\QuoteItem $renderer,
\Magento\Customer\Api\AddressRepositoryInterface $addressRepository,
\Magento\Framework\App\Response\Http\FileFactory $fileFactory,
\Magento\Customer\Model\Session $customerSession,
\Magento\Quote\Model\QuoteFactory $quoteFactory,
\Cart2Quote\Quotation\Model\QuoteFactory $quotationFactory,
\Magento\Customer\Api\CustomerRepositoryInterface $customerRepositoryInterface,
\Magento\Framework\Event\ManagerInterface $eventManager,
array $data = []
) {
parent::__construct(
$translate,
$paymentData,
$string,
$scopeConfig,
$filesystem,
$pdfConfig,
$pdfTotalFactory,
$pdfItemsFactory,
$localeDate,
$inlineTranslation,
$addressRenderer,
$storeManager,
$localeResolver,
$renderer,
$addressRepository,
$fileFactory,
$customerSession,
$quoteFactory,
$quotationFactory,
$customerRepositoryInterface,
$eventManager,
$data
);
}
}
Make sure you run setup:di:compile command
Licensed under: CC-BY-SA with attribution
Not affiliated with magento.stackexchange