<?xml version="1.0"?>
<!--
/**
 * @copyright: Copyright © 2020 Firebear Studio. All rights reserved.
 * @author   : Firebear Studio <fbeardev@gmail.com>
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <preference for="Firebear\ImportExport\Model\Import\Product"
                type="Firebear\PlatformSap\Model\Import\Product" />
    <preference for="Firebear\ImportExport\Model\Import\CustomerComposite"
                type="Firebear\PlatformSap\Model\Import\CustomerComposite" />
    <preference for="Firebear\ImportExport\Model\Import\Category"
                type="Firebear\PlatformSap\Model\Import\Category" />
    <preference for="Firebear\ImportExport\Model\Import\CatalogRule"
                type="Firebear\PlatformSap\Model\Import\CatalogRule" />
    <preference for="Firebear\ImportExport\Model\Import\SalesRule"
                type="Firebear\PlatformSap\Model\Import\SalesRule" />
    <preference for="Firebear\ImportExport\Model\Import\Customer"
                type="Firebear\PlatformSap\Model\Import\Customer" />
    <preference for="Firebear\ImportExport\Model\Import\Address"
                type="Firebear\PlatformSap\Model\Import\Address" />
    <preference for="Firebear\ImportExport\Model\Job\Processor"
                type="Firebear\PlatformSap\Model\Job\Processor" />
    <type name="Firebear\ImportExport\Ui\Component\Listing\Column\Entity\Import\Options">
        <plugin name="firebear_platformsap_import_options"
                type="Firebear\PlatformSap\Plugin\Ui\Component\Listing\Column\Entity\Import\OptionsPlugin"/>
    </type>
    <type name="Firebear\ImportExport\Model\Import\Address">
        <plugin name="firebear_platformsap_import_address"
                type="Firebear\PlatformSap\Plugin\Model\Import\AddressPlugin"/>
    </type>
    <type name="Firebear\ImportExport\Ui\DataProvider\Import\Job\Form\Modifier\DeferredImages">
        <plugin name="change_sort_order_for_deffered_images"
                type="Firebear\PlatformSap\Plugin\Ui\DataProvider\Import\Job\Form\Modifier\DeferredImages"/>
    </type>
    <type name="Magento\Customer\Controller\Address\FormPost">
        <plugin name="publish_customer_update"
                type="Firebear\PlatformSap\Plugin\CustomerUpdatePlugin"/>
    </type>
    <type name="Magento\Framework\Console\CommandListInterface">
        <arguments>
            <argument name="commands" xsi:type="array">
                <item name="test" xsi:type="object">Firebear\PlatformSap\Console\Command\OrderSend</item>
            </argument>
        </arguments>
    </type>
    <type name="Magento\Framework\View\Element\UiComponent\DataProvider\CollectionFactory">
        <arguments>
            <argument name="collections" xsi:type="array">
                <item name="sales_order_grid_data_source"
                      xsi:type="string">Firebear\PlatformSap\Model\ResourceModel\Order\Grid\Collection</item>
            </argument>
        </arguments>
    </type>
    <type name="Firebear\PlatformSap\Model\ResourceModel\Order\Grid\Collection">
        <arguments>
            <argument name="mainTable" xsi:type="string">sales_order_grid</argument>
            <argument name="resourceModel" xsi:type="string">Magento\Sales\Model\ResourceModel\Order</argument>
        </arguments>
    </type>
    <preference for="Firebear\ImportExport\Model\Import\AdvancedPricing"
                type="Firebear\PlatformSap\Model\Import\AdvancedPricing" />
    <preference for="Firebear\PlatformSap\Api\RefundOrderInterface" type="Firebear\PlatformSap\Model\RefundOrder"/>
    <preference for="Firebear\PlatformSap\Api\ShipOrderInterface" type="Firebear\PlatformSap\Model\ShipOrder"/>
    <preference for="Firebear\PlatformSap\Api\InvoiceOrderInterface" type="Firebear\PlatformSap\Model\InvoiceOrder"/>
    <preference for="Firebear\PlatformSap\Api\Data\ShipmentItemCreationInterface" type="Firebear\PlatformSap\Model\Order\Shipment\ItemCreation"/>
    <preference for="Firebear\PlatformSap\Api\Data\CreditmemoItemCreationInterface" type="Firebear\PlatformSap\Model\Order\Creditmemo\ItemCreation"/>
    <preference for="Firebear\PlatformSap\Api\Data\InvoiceItemCreationInterface" type="Firebear\PlatformSap\Model\Order\Invoice\ItemCreation"/>
    <preference for="Firebear\PlatformSap\Api\OrderRepositoryInterface" type="Firebear\PlatformSap\Model\OrderRepository"/>
    <virtualType name="orderMetadata" type="Magento\Sales\Model\ResourceModel\Metadata">
        <arguments>
            <argument name="resourceClassName" xsi:type="string">Magento\Sales\Model\ResourceModel\Order</argument>
            <argument name="modelClassName" xsi:type="string">Magento\Sales\Model\Order</argument>
        </arguments>
    </virtualType>
    <type name="Firebear\PlatformSap\Model\OrderRepository">
        <arguments>
            <argument name="metadata" xsi:type="object">orderMetadata</argument>
        </arguments>
    </type>
    <preference for="Firebear\PlatformSap\Api\ProductRepositoryInterface" type="Firebear\PlatformSap\Model\ProductRepository"/>

    <type name="Firebear\PlatformSap\Logger\Handler">
        <arguments>
            <argument name="filesystem" xsi:type="object">Magento\Framework\Filesystem\Driver\File</argument>
        </arguments>
    </type>
</config>
