Hello,
I am facing a problem:
I have written an extension for a massaction in the Sales_Order_Invoice_Grid.
When I select an Invoice in the backend and execute the extension I wrote, the extension gets another invoiceobject than I selected in the backend?!?!
has anyone a hint for this problem?
<?php namespace Hebein\Exporter\Controller\Adminhtml\Invoice; use Magento\Backend\App\Action\Context; use Magento\Ui\Component\MassAction\Filter; use Magento\Framework\Controller\ResultFactory; use Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction; use Magento\Sales\Model\ResourceModel\Order\CollectionFactory; class massExportInvoice extends \Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction { const ADMIN_RESOURCE = 'Invoice'; /** * @var \Magento\Catalog\Api\ProductRepositoryInterface */ protected $productRepository; /** * @var \Magento\Ui\Component\MassAction\Filter $filter */ protected $filter; /** * @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */ protected $collectionfactory; public function __construct(Context $context, Filter $filter, CollectionFactory $collection) { parent::__construct($context, $filter); $this->collectionfactory = $collection; $this->context=$context; $this->filter=$filter; } protected function massAction(\Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection $in_collection) { nix; } public function execute() { echo "<table style=\"width:100%\" border=\"1\"><tr><th>Invoice#</th><th>order#</th><th>Bezeichnung</th><th>Value</th></tr>"; $collection = $this->filter->getCollection($this->collectionfactory->create()); foreach ($collection as $invoice) { echo "<tr>"; //$order=$invoice->getOrder(); //if ($order===null) echo "NULL"; //var_dump($taxinfo); echo "<th>". $invoiceID=$invoice->getIncrementId()."</th>"; echo "<th> ".$orderID=$invoice->getIncrementID(); $adress=$invoice->getShippingAddress(); echo "<br/>COUNTRY: ".$country=$adress->getCountryId(); echo "<br/>invoice GT: ".$gt=$invoice->getGrandTotal(); echo "<br/> WHRG: ".$invoice->getOrderCurrencyCode ()."</th>"; echo "</tr>"; echo "<tr><th></th><th></th><th>SHIP INCL TAX: </th><th>".$invoice->getShippingAmount()."</th></tr>"; echo "<tr><th></th><th></th><th>SHIP TAX:</th><th> ".$invoice->getShippingTaxAmount()."</th></tr>"; echo "<tr><th></th><th></th><th>SHIP TAX PERCENT:</th><th> ".$invoice->getShippingTax()."</th></tr>"; echo "<tr><th></th><th></th><th>SHIP TAX PERCENT CALC:</th><th> ".round(($invoice->getShippingTaxAmount()/$invoice->getShippingAmount())*100,0)."</th></tr>"; foreach ($invoice->getAllItems() as $item) { echo "<tr><th></th><th></th><th>gBTI:</th><th>".$item->getBaseTaxInvoiced()."</th></tr>"; echo "<tr><th></th><th></th><th>gTA:</th><th> ".$item->getTaxAmount()."</th></tr>"; //echo "gBTI: ".$item->getBaseTaxInvoiced(); //echo "gBTI: ".$item->getBaseTaxInvoiced(); echo "<tr><th></th><th></th><th>netto:</th><th> ".$item->getBaseSubtotal()."</th></tr>"; echo "<tr><th></th><th></th><th>brutto:</th><th> ".$item->getBaseSubtotalInclTax()."</th></tr>"; echo "<tr><th></th><th></th><th>Price incl.</th><th>".$item->getPriceInclTax ()."</th></tr>"; echo "<tr><th></th><th></th><th>Price</th><th> ".$item->getPrice ()."</th></tr>"; echo "<tr><th></th><th></th><th>ROW TOTAL</th><th>".$item->getRowTotal()."</th></tr>"; echo "<tr><th></th><th></th><th>ROW TOTAL incl.</th><th>".$item->getRowTotalInclTax ()."</th></tr>"; echo "<tr><th></th><th></th><th>TAX PERCENT</th><th>".$item->getTaxPercent ()."</th></tr>"; //getKonto (TAX,COUNTRY,SOURCE); } } echo "</table>"; } }
Solved! Go to Solution.
Hello @kornblumenapo
you mention wrong collection factory.
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
Replace with
use Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory;
If it will help you then Mark as Solution.
Now I get
Fatal error: Uncaught TypeError: Argument 3 passed to Hebein\Exporter\Controller\Adminhtml\Invoice\massExportInvoice::__construct() must be an instance of Magento\Sales\Model\ResourceModel\Order\Invoice\CollectionFactory, instance of Magento\Sales\Model\ResourceModel\Order\CollectionFactory given