ifconfig to disable part of an extension

by RLTcode   Last Updated September 13, 2018 00:09 AM

I have added a Column to the New Order -> Customer Grid. I am having a really tough time getting the system config to disable this code if turned off. I was hoping I could use a simple ifconfig in the sales_order_create_customer_block.xml or the di.xml to check but it does not work. I have tried calling isNewOrderCustomerGridEnabled() as an if before but I get a cannot be null error.

In the other grids, I added the column with a Plugin and the ui_component xml. Which I was able to add a specific class Ui/Component/Listing/Column/Company.php which checks the Data.php and displays the information depending on the system config setting.

Here is some of the code. Please let me know if you need any more information.

sales_order_create_customer_block.xml

<?xml version="1.0"?>
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<body>
    <referenceBlock name="adminhtml.customer.grid.container">
        <arguments>
            <argument name="dataSource" xsi:type="object">Trucatch\CompanyColumn\Model\ResourceModel\Order\Customer\Collection</argument>
        </arguments>
        <referenceBlock name="adminhtml.customer.grid.columnSet">
            <block class="Magento\Backend\Block\Widget\Grid\Column" as="billing_company" after="name">
                <arguments>
                    <argument name="header" xsi:type="string" translate="true">Company</argument>
                    <argument name="index" xsi:type="string">billing_company</argument>
                </arguments>
            </block>
        </referenceBlock>
    </referenceBlock>
</body>
</page>

di.xml

<preference for="Magento\Sales\Model\ResourceModel\Order\Customer\Collection" type="Trucatch\CompanyColumn\Model\ResourceModel\Order\Customer\Collection"/>

Data.php

const CONFIG_PATH_GENERAL_NEW_ORDER_CUSTOMER_GRID = 'companycolumn/general/new_order_customer_grid_enabled';

public function isNewOrderCustomerGridEnabled()
{
    return $this->scopeConfig->getValue(
        self::CONFIG_PATH_GENERAL_NEW_ORDER_CUSTOMER_GRID,
        \Magento\Store\Model\ScopeInterface::SCOPE_STORE
    );
}

Collection.php

protected function _initSelect()
{
    parent::_initSelect();
    $this->joinAttribute(
        'billing_company',
        'customer_address/company',
        'default_billing',
        null,
        'left'
    );
    return $this;
}


Related Questions