So there were (quite a few) changes from the merchant beta to the RTM. One of those seems to be related to the Sales Order Grid.
Previously, I was able to register an observer (I'm aware of the changes to Observers) to the sales_order_grid_collection_load_before event, however that event no longer seems to fire.
What I am using it for is to add two custom data columns to the order grid based on a table that my extension adds.
Hello @mar_velcapt ,
Please follow below way
Instead of adding a column to the grid via the database, I created a UI component sales_order_grid.xml under [COMPANY]/[MODULE]/view/adminhtml/ui_component/sales_order_grid.xml
<?xml version="1.0" encoding="UTF-8"?> <listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd"> <columns name="sales_order_columns"> <column name="export_status" class="[COMPANY]\[MODULE]\Ui\Component\Listing\Column\Status"> <argument name="data" xsi:type="array"> <item name="config" xsi:type="array"> <item name="visible" xsi:type="boolean">true</item> <item name="label" xsi:type="string" translate="true">XML Exported</item> </item> </argument> </column> </columns> </listing>
Then created the UI class under [COMPANY]/[MODULE]/Ui/Component/Listing/Column/Status.php
<?php namespace [COMPANY]\[MODULE]\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 Status extends Column { protected $_orderRepository; protected $_searchCriteria; 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); } public function prepareDataSource(array $dataSource) { if (isset($dataSource['data']['items'])) { foreach ($dataSource['data']['items'] as & $item) { $order = $this->_orderRepository->get($item["entity_id"]); $status = $order->getData("export_status"); switch ($status) { case "0": $export_status = "No"; break; case "1"; $export_status = "Yes"; break; default: $export_status = "Failed"; break; } // $this->getData('name') returns the name of the column so in this case it would return export_status $item[$this->getData('name')] = $export_status; } } return $dataSource; } }
--
If my answer is useful, please Accept as Solution & give Kudos