<?xml version="1.0"?>
<!--
/**
 * Copyright © Magento, Inc. All rights reserved.
 * See COPYING.txt for license details.
 */
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
    <type name="Magento\Sales\Api\OrderRepositoryInterface">
        <plugin name="get_pickup_location_for_order" type="Magento\InventoryInStorePickupSales\Plugin\Sales\Order\GetPickupLocationForOrderPlugin"/>
        <plugin name="save_pickup_location_for_order" type="Magento\InventoryInStorePickupSales\Plugin\Sales\Order\SavePickupLocationForOrderPlugin"/>
    </type>
    <preference for="Magento\InventoryInStorePickupSalesApi\Api\NotifyOrdersAreReadyForPickupInterface" type="Magento\InventoryInStorePickupSales\Model\NotifyOrdersAreReadyForPickup"/>
    <preference for="Magento\InventoryInStorePickupSalesApi\Model\IsOrderReadyForPickupInterface" type="Magento\InventoryInStorePickupSales\Model\IsOrderReadyForPickup"/>
    <type name="Magento\InventoryInStorePickupSales\Model\Order\Email\ReadyForPickupSender">
        <arguments>
            <argument name="identityContainer" xsi:type="object">Magento\InventoryInStorePickupSales\Model\Order\Email\Container\ReadyForPickupIdentity</argument>
        </arguments>
    </type>
    <type name="Magento\InventoryInStorePickupSales\Model\SourceSelection\GetActiveStorePickupOrdersBySource">
        <arguments>
            <argument name="statesToFilter" xsi:type="array">
                <item xsi:type="const" name="complete">Magento\Sales\Model\Order::STATE_COMPLETE</item>
                <item xsi:type="const" name="closed">Magento\Sales\Model\Order::STATE_CLOSED</item>
                <item xsi:type="const" name="canceled">Magento\Sales\Model\Order::STATE_CANCELED</item>
            </argument>
        </arguments>
    </type>
    <preference for="Magento\InventorySourceSelectionApi\Model\GetSourceItemQtyAvailableInterface" type="Magento\InventoryInStorePickupSales\Model\SourceSelection\GetSourceItemQtyAvailableService"/>
    <preference for="Magento\InventoryInStorePickupSalesApi\Model\IsStorePickupOrderInterface" type="Magento\InventoryInStorePickupSales\Model\IsStorePickupOrder"/>
    <type name="Magento\InventoryInStorePickupSales\Observer\UpdateOrderGrid">
        <arguments>
            <argument name="entityGrid" xsi:type="object">Magento\Sales\Model\ResourceModel\Order\Grid</argument>
        </arguments>
    </type>
    <virtualType name="Magento\Sales\Model\ResourceModel\Order\Grid">
        <arguments>
            <argument name="joins" xsi:type="array">
                <item name="inventory_pickup_location_order" xsi:type="array">
                    <item name="table" xsi:type="string">inventory_pickup_location_order</item>
                    <item name="origin_column" xsi:type="string">entity_id</item>
                    <item name="target_column" xsi:type="string">order_id</item>
                </item>
            </argument>
            <argument name="columns" xsi:type="array">
                <item name="pickup_location_code" xsi:type="string">inventory_pickup_location_order.pickup_location_code</item>
            </argument>
        </arguments>
    </virtualType>
    <preference for="Magento\InventoryInStorePickupSalesApi\Api\Data\ResultInterface" type="Magento\InventoryInStorePickupSales\Model\Result"/>
</config>
