1

HI I want to know that i need to create a module that will show the report of sold product and their generated revenue.

so I want to know that can we fetch custom table data and display it in admin grid anyone have any idea about it kindly please provide some guidance.

I think I needs to fetch this table data

sales_order

enter image description here

Vrajesh Patel
  • 1,964
  • 2
  • 12
  • 28
Pramod
  • 1,464
  • 1
  • 11
  • 38

1 Answers1

2

First create a module using this link click here

OR Download Sample Module

and put name like this

enter image description here

now replace this files

Emipro/Custom/Model/ResourceModel

Job.php

<?php

namespace Emipro\Custom\Model\ResourceModel;

use Magento\Framework\Model\ResourceModel\Db\AbstractDb;

class Job extends AbstractDb { protected function _construct() { $this->_init('sales_order', 'entity_id'); } }

Emipro/Custom/etc

di.xml

<?xml version="1.0"?>

<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="../../../../../lib/internal/Magento/Framework/ObjectManager/etc/config.xsd">

&lt;!--    For Job     --&gt;
&lt;virtualType name=&quot;EmiproCustomJobFilterPool&quot; type=&quot;Magento\Framework\View\Element\UiComponent\DataProvider\FilterPool&quot;&gt;
    &lt;arguments&gt;
        &lt;argument name=&quot;appliers&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;regular&quot; xsi:type=&quot;object&quot;&gt;Magento\Framework\View\Element\UiComponent\DataProvider\RegularFilter&lt;/item&gt;
            &lt;item name=&quot;fulltext&quot; xsi:type=&quot;object&quot;&gt;Magento\Framework\View\Element\UiComponent\DataProvider\FulltextFilter&lt;/item&gt;
        &lt;/argument&gt;
    &lt;/arguments&gt;
&lt;/virtualType&gt;
&lt;virtualType name=&quot;EmiproCustomJobFilterPool&quot; type=&quot;Magento\Framework\View\Element\UiComponent\DataProvider\DataProvider&quot;&gt;
    &lt;arguments&gt;
        &lt;argument name=&quot;collection&quot; xsi:type=&quot;object&quot; shared=&quot;false&quot;&gt;Emipro\Custom\Model\ResourceModel\Job\Collection&lt;/argument&gt;
        &lt;argument name=&quot;filterPool&quot; xsi:type=&quot;object&quot; shared=&quot;false&quot;&gt;EmiproCustomJobFilterPool&lt;/argument&gt;
    &lt;/arguments&gt;
&lt;/virtualType&gt;
&lt;type name=&quot;Emipro\Custom\Model\ResourceModel\Job\Grid\Collection&quot;&gt;
    &lt;arguments&gt;
        &lt;argument name=&quot;mainTable&quot; xsi:type=&quot;string&quot;&gt;sales_order&lt;/argument&gt;
        &lt;argument name=&quot;eventPrefix&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_grid_collection&lt;/argument&gt;
        &lt;argument name=&quot;eventObject&quot; xsi:type=&quot;string&quot;&gt;job_grid_collection&lt;/argument&gt;
        &lt;argument name=&quot;resourceModel&quot; xsi:type=&quot;string&quot;&gt;Emipro\Custom\Model\ResourceModel\Job&lt;/argument&gt;
    &lt;/arguments&gt;
&lt;/type&gt;

&lt;type name=&quot;Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory&quot;&gt;
    &lt;arguments&gt;
        &lt;argument name=&quot;collections&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;emipro_custom_job_listing_data_source&quot; xsi:type=&quot;string&quot;&gt;Emipro\Custom\Model\ResourceModel\Job\Grid\Collection&lt;/item&gt;
        &lt;/argument&gt;
    &lt;/arguments&gt;
&lt;/type&gt;


</config>

Emipro/Custom/view/adminhtml/ui_component

emipro_custom_job_listing.xml

<?xml version="1.0"?>
<!-- https://magento.stackexchange.com/questions/97291/explanation-of-ui-component-grid-in-magento-2 -->
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
&lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
    &lt;item name=&quot;js_config&quot; xsi:type=&quot;array&quot;&gt;
        &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing_data_source&lt;/item&gt;
        &lt;item name=&quot;deps&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing_data_source&lt;/item&gt;
    &lt;/item&gt;
    &lt;item name=&quot;spinner&quot; xsi:type=&quot;string&quot;&gt;custom_job_columns&lt;/item&gt;
&lt;/argument&gt;
&lt;dataSource name=&quot;emipro_custom_job_listing_data_source&quot;&gt;
    &lt;argument name=&quot;dataProvider&quot; xsi:type=&quot;configurableObject&quot;&gt;
        &lt;argument name=&quot;class&quot; xsi:type=&quot;string&quot;&gt;EmiproCustomJobFilterPool&lt;/argument&gt;
        &lt;argument name=&quot;name&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing_data_source&lt;/argument&gt;
        &lt;argument name=&quot;primaryFieldName&quot; xsi:type=&quot;string&quot;&gt;entity_id&lt;/argument&gt;
        &lt;argument name=&quot;requestFieldName&quot; xsi:type=&quot;string&quot;&gt;id&lt;/argument&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Ui/js/grid/provider&lt;/item&gt;
                &lt;item name=&quot;update_url&quot; xsi:type=&quot;url&quot; path=&quot;mui/index/render&quot;/&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;cacheRequests&quot; xsi:type=&quot;boolean&quot;&gt;false&lt;/item&gt;
                &lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/argument&gt;
    &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
        &lt;item name=&quot;js_config&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Ui/js/grid/provider&lt;/item&gt;
        &lt;/item&gt;
    &lt;/argument&gt;
&lt;/dataSource&gt;
&lt;container name=&quot;listing_top&quot;&gt;
    &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
        &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;template&quot; xsi:type=&quot;string&quot;&gt;ui/grid/toolbar&lt;/item&gt;
            &lt;item name=&quot;stickyTmpl&quot; xsi:type=&quot;string&quot;&gt;ui/grid/sticky/toolbar&lt;/item&gt;
        &lt;/item&gt;
    &lt;/argument&gt;
    &lt;bookmark name=&quot;bookmarks&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing&lt;/item&gt;
                &lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/bookmark&gt;
    &lt;component name=&quot;columns_controls&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;columnsData&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns&lt;/item&gt;
                &lt;/item&gt;
                &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Ui/js/grid/controls/columns&lt;/item&gt;
                &lt;item name=&quot;displayArea&quot; xsi:type=&quot;string&quot;&gt;dataGridActions&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/component&gt;

    &lt;filterSearch name=&quot;fulltext&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing_data_source&lt;/item&gt;
                &lt;item name=&quot;chipsProvider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.listing_filters_chips&lt;/item&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.bookmarks&lt;/item&gt;
                    &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;current.search&lt;/item&gt;
                &lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/filterSearch&gt;
    &lt;filters name=&quot;listing_filters&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;columnsProvider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns&lt;/item&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.bookmarks&lt;/item&gt;
                    &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;current.filters&lt;/item&gt;
                &lt;/item&gt;
                &lt;item name=&quot;templates&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;filters&quot; xsi:type=&quot;array&quot;&gt;
                        &lt;item name=&quot;select&quot; xsi:type=&quot;array&quot;&gt;
                            &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Ui/js/form/element/ui-select&lt;/item&gt;
                            &lt;item name=&quot;template&quot; xsi:type=&quot;string&quot;&gt;ui/grid/filters/elements/ui-select&lt;/item&gt;
                        &lt;/item&gt;
                    &lt;/item&gt;
                &lt;/item&gt;
                &lt;item name=&quot;childDefaults&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.listing_filters&lt;/item&gt;
                    &lt;item name=&quot;imports&quot; xsi:type=&quot;array&quot;&gt;
                        &lt;item name=&quot;visible&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns.${ $.index }:visible&lt;/item&gt;
                    &lt;/item&gt;
                &lt;/item&gt;
            &lt;/item&gt;

            &lt;item name=&quot;observers&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;column&quot; xsi:type=&quot;string&quot;&gt;column&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
        &lt;filterSelect name=&quot;store_id&quot;&gt;
            &lt;argument name=&quot;optionsProvider&quot; xsi:type=&quot;configurableObject&quot;&gt;
                &lt;argument name=&quot;class&quot; xsi:type=&quot;string&quot;&gt;Magento\Cms\Ui\Component\Listing\Column\Cms\Options&lt;/argument&gt;
            &lt;/argument&gt;
            &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;${ $.parentName }&lt;/item&gt;
                    &lt;item name=&quot;imports&quot; xsi:type=&quot;array&quot;&gt;
                        &lt;item name=&quot;visible&quot; xsi:type=&quot;string&quot;&gt;componentType = column, index = ${ $.index }:visible&lt;/item&gt;
                    &lt;/item&gt;
                    &lt;item name=&quot;dataScope&quot; xsi:type=&quot;string&quot;&gt;store_id&lt;/item&gt;
                    &lt;item name=&quot;label&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Store View&lt;/item&gt;
                    &lt;item name=&quot;captionValue&quot; xsi:type=&quot;string&quot;&gt;0&lt;/item&gt;
                &lt;/item&gt;
            &lt;/argument&gt;
        &lt;/filterSelect&gt;

    &lt;/filters&gt;

    &lt;massaction name=&quot;listing_massaction&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;selectProvider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns.ids&lt;/item&gt;
                &lt;item name=&quot;component&quot; xsi:type=&quot;string&quot;&gt;Magento_Ui/js/grid/tree-massactions&lt;/item&gt;
                &lt;item name=&quot;indexField&quot; xsi:type=&quot;string&quot;&gt;id&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;

        &lt;action name=&quot;is_delete&quot;&gt;
            &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;type&quot; xsi:type=&quot;string&quot;&gt;delete&lt;/item&gt;
                    &lt;item name=&quot;label&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Delete&lt;/item&gt;
                    &lt;item name=&quot;url&quot; xsi:type=&quot;url&quot; path=&quot;custom/index/massDelete&quot;&gt;
                    &lt;/item&gt;
                    &lt;item name=&quot;confirm&quot; xsi:type=&quot;array&quot;&gt;
                        &lt;item name=&quot;title&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Delete items&lt;/item&gt;
                        &lt;item name=&quot;message&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Are you sure you wan't to delete selected items?&lt;/item&gt;
                    &lt;/item&gt;
                &lt;/item&gt;
            &lt;/argument&gt;
        &lt;/action&gt;

    &lt;/massaction&gt;

    &lt;paging name=&quot;listing_paging&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.bookmarks&lt;/item&gt;
                    &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;current.paging&lt;/item&gt;
                &lt;/item&gt;
                &lt;item name=&quot;selectProvider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns.ids&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/paging&gt;
&lt;/container&gt;

&lt;columns name=&quot;custom_job_columns&quot;&gt;
    &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
        &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.bookmarks&lt;/item&gt;
                &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;current&lt;/item&gt;
            &lt;/item&gt;
            &lt;item name=&quot;childDefaults&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;fieldAction&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.custom_job_columns&lt;/item&gt;
                    &lt;item name=&quot;target&quot; xsi:type=&quot;string&quot;&gt;startEdit&lt;/item&gt;
                    &lt;item name=&quot;params&quot; xsi:type=&quot;array&quot;&gt;
                        &lt;item name=&quot;0&quot; xsi:type=&quot;string&quot;&gt;${ $.$data.rowIndex }&lt;/item&gt;
                        &lt;item name=&quot;1&quot; xsi:type=&quot;boolean&quot;&gt;true&lt;/item&gt;
                    &lt;/item&gt;
                &lt;/item&gt;
                &lt;item name=&quot;storageConfig&quot; xsi:type=&quot;array&quot;&gt;
                    &lt;item name=&quot;provider&quot; xsi:type=&quot;string&quot;&gt;emipro_custom_job_listing.emipro_custom_job_listing.listing_top.bookmarks&lt;/item&gt;
                    &lt;item name=&quot;root&quot; xsi:type=&quot;string&quot;&gt;columns.${ $.index }&lt;/item&gt;
                    &lt;item name=&quot;namespace&quot; xsi:type=&quot;string&quot;&gt;current.${ $.storageConfig.root}&lt;/item&gt;
                &lt;/item&gt;
            &lt;/item&gt;
        &lt;/item&gt;
    &lt;/argument&gt;


    &lt;selectionsColumn name=&quot;ids&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;resizeEnabled&quot; xsi:type=&quot;boolean&quot;&gt;false&lt;/item&gt;
                &lt;item name=&quot;resizeDefaultWidth&quot; xsi:type=&quot;string&quot;&gt;55&lt;/item&gt;
                &lt;item name=&quot;indexField&quot; xsi:type=&quot;string&quot;&gt;entity_id&lt;/item&gt;
            &lt;/item&gt;
                &lt;item name=&quot;sortOrder&quot; xsi:type=&quot;number&quot;&gt;0&lt;/item&gt;
        &lt;/argument&gt;
    &lt;/selectionsColumn&gt;

    &lt;column name=&quot;entity_id&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;filter&quot; xsi:type=&quot;string&quot;&gt;textRange&lt;/item&gt;
                &lt;item name=&quot;sorting&quot; xsi:type=&quot;string&quot;&gt;asc&lt;/item&gt;
                &lt;item name=&quot;label&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;Id&lt;/item&gt;
                &lt;item name=&quot;sortOrder&quot; xsi:type=&quot;number&quot;&gt;20&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/column&gt;

    &lt;column name=&quot;state&quot;&gt;
        &lt;argument name=&quot;data&quot; xsi:type=&quot;array&quot;&gt;
            &lt;item name=&quot;config&quot; xsi:type=&quot;array&quot;&gt;
                &lt;item name=&quot;label&quot; xsi:type=&quot;string&quot; translate=&quot;true&quot;&gt;state&lt;/item&gt;
                &lt;item name=&quot;sortOrder&quot; xsi:type=&quot;number&quot;&gt;20&lt;/item&gt;
            &lt;/item&gt;
        &lt;/argument&gt;
    &lt;/column&gt;

&lt;/columns&gt;

</listing>

Now Add Simple Column to this listing file. column name must be match with the sales_order table column name.

Column name in table sales_order must be match with column name

<column name="table_column_name">
    <argument name="data" xsi:type="array">
        <item name="config" xsi:type="array">
            <item name="filter" xsi:type="string">text</item>
            <item name="label" xsi:type="string" translate="true">Lable Name</item>
            <item name="resizeEnabled" xsi:type="boolean">true</item>
        </item>
    </argument>
</column>

enter image description here

Msquare
  • 9,063
  • 7
  • 25
  • 63
  • column name must be match with the sales_order table column name. can you please explain this – Pramod Feb 27 '20 at 06:49
  • is there anyway to filter a order grid as to show pending order status only show in the grid – Divya Sekar Nov 03 '20 at 11:23
  • open this file Emipro\Custom\Model\ResourceModel\Job\Grid\Collection and add this function
    public function _beforeLoad()
    {
     // add here to filter your status
        $this->addFieldToFilter("status", "pending");
        return $this;
    }
    
    – Msquare Nov 03 '20 at 11:57