cancel
Showing results for 
Search instead for 
Did you mean: 

Add tax_amount to Orders/Invoice grid

Re: Add tax_amount to Orders/Invoice grid

@Sunil PatelHi, I tried to see how your solution works to see which one could be best, but I'm havin a problem, blank page :

 

mod_fcgid: stderr: PHP Fatal error:  Allowed memory size of 805306368 bytes exhausted (tried to allocate 134217736 bytes)

 

Though I only have one order in sandbox site.

 

Any idea on what could be wrong ?

Re: Add tax_amount to Orders/Invoice grid

I can see why I get the error, there are some errors in your code like :

 

& in :

foreach ($dataSource['data']['items'] as & $item) {

 

= // value; in :

$dataSource['data']['items'][$i]['tax_amount'] = // value;

...

 

As for now I cannot manage to make it work

Re: Add tax_amount to Orders/Invoice grid

OK, I get it quite better, I have to replace

// value

with the tax amount, but that's where I'm stuck, can not retrieve tax_amount from orders table.

Re: Add tax_amount to Orders/Invoice grid

<?php
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */

namespace Vendor\Name\Ui\Component\Listing\Column;

use \Magento\Sales\Api\OrderRepositoryInterface;
use \Magento\Framework\View\Element\UiComponent\ContextInterface;
use \Magento\Framework\View\Element\UiComponentFactory;
use \Magento\Ui\Component\Listing\Columns\Column;
use \Magento\Framework\Api\SearchCriteriaBuilder;

/**
 * Class TaxAmount
 * @package GenteRecInc\AnkaaCms\Ui\Component\Listing\Column
 */
class TaxAmount extends Column
{
    /**
     * @var OrderRepositoryInterface
     */
    protected $_orderRepository;

    /**
     * @var SearchCriteriaBuilder
     */
    protected $_searchCriteria;

    /**
     * TaxAmount constructor.
     * @param ContextInterface $context
     * @param UiComponentFactory $uiComponentFactory
     * @param OrderRepositoryInterface $orderRepository
     * @param SearchCriteriaBuilder $criteria
     * @param array $components
     * @param array $data
     */
    public function __construct(ContextInterface $context, UiComponentFactory $uiComponentFactory, OrderRepositoryInterface $orderRepository, SearchCriteriaBuilder $criteria, array $components = [], array $data = [])
    {
        $this->_orderRepository = $orderRepository;
        $this->_searchCriteria  = $criteria;
        parent::__construct($context, $uiComponentFactory, $components, $data);
    }

    /**
     * @param array $dataSource
     * @return array
     */
    public function prepareDataSource(array $dataSource)
    {
        if (isset($dataSource['data']['items'])) {
            foreach ($dataSource['data']['items'] as & $item) {
                $order  = $this->_orderRepository->get($item["entity_id"]);
                $item['tax_amount'] = $order->getData("tax_amount");
            }
        }

        return $dataSource;
    }
}