From 1ef8c48d1d4c5db3e954e27959ba0a04da4ac7ab Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 19:00:14 -0600 Subject: [PATCH 01/10] MSI-1866: Changes to Source Selection Service Contracts --- .../etc/di.xml | 9 --- .../GetSourceSelectionResultFromInvoice.php | 21 +++---- .../SourceSelection/ProcessAlgorithm.php | 26 ++++---- .../GetSourcesByOrderIdStockIdSkuAndQty.php | 18 +++--- .../FromOrder/DefaultBuilder.php | 49 --------------- .../InventorySourceSelection/etc/di.xml | 8 --- ...efinedInventoryRequestBuilderException.php | 15 ----- .../Model/GetInventoryRequestFromOrder.php} | 11 ++-- .../GetInventoryRequestFromOrderBuilder.php | 61 ------------------- ...entoryRequestFromOrderBuilderInterface.php | 29 --------- 10 files changed, 32 insertions(+), 215 deletions(-) delete mode 100644 app/code/Magento/InventorySourceSelection/Model/InventoryRequestBuilder/FromOrder/DefaultBuilder.php delete mode 100644 app/code/Magento/InventorySourceSelectionApi/Exception/UndefinedInventoryRequestBuilderException.php rename app/code/Magento/{InventoryDistanceBasedSourceSelection/Model/InventoryRequestBuilder/FromOrder/DistanceBuilder.php => InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php} (88%) delete mode 100644 app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrderBuilder.php delete mode 100644 app/code/Magento/InventorySourceSelectionApi/Model/InventoryRequestFromOrderBuilderInterface.php diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml index 9439c8ae84c4..dabe1cbb68e1 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml @@ -57,15 +57,6 @@ type="Magento\InventoryDistanceBasedSourceSelection\Plugin\FillSourceLatitudeAndLongitude"/> - - - - Magento\InventoryDistanceBasedSourceSelection\Model\InventoryRequestBuilder\FromOrder\DistanceBuilder - - - - diff --git a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php index 0241b559f12f..6900efa9a97b 100644 --- a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php +++ b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php @@ -11,8 +11,7 @@ use Magento\InventorySalesApi\Model\GetSkuFromOrderItemInterface; use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterfaceFactory; -use Magento\InventorySourceSelectionApi\Exception\UndefinedInventoryRequestBuilderException; -use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrderBuilder; +use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrder; use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory; use Magento\Sales\Api\Data\InvoiceInterface; use Magento\Sales\Api\Data\InvoiceItemInterface; @@ -55,9 +54,9 @@ class GetSourceSelectionResultFromInvoice private $sourceSelectionService; /** - * @var GetInventoryRequestFromOrderBuilder + * @var GetInventoryRequestFromOrder */ - private $getInventoryRequestFromOrderBuilder; + private $getInventoryRequestFromOrder; /** * GetSourceSelectionResultFromInvoice constructor. @@ -68,7 +67,7 @@ class GetSourceSelectionResultFromInvoice * @param InventoryRequestInterfaceFactory $inventoryRequestFactory * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceSelectionServiceInterface $sourceSelectionService - * @param GetInventoryRequestFromOrderBuilder|null $getInventoryRequestFromOrderBuilder + * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function __construct( @@ -78,15 +77,15 @@ public function __construct( InventoryRequestInterfaceFactory $inventoryRequestFactory, GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode, SourceSelectionServiceInterface $sourceSelectionService, - GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder = null + GetInventoryRequestFromOrder $getInventoryRequestFromOrder = null ) { $this->itemRequestFactory = $itemRequestFactory; $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->getDefaultSourceSelectionAlgorithmCode = $getDefaultSourceSelectionAlgorithmCode; $this->sourceSelectionService = $sourceSelectionService; $this->getSkuFromOrderItem = $getSkuFromOrderItem; - $this->getInventoryRequestFromOrderBuilder = $getInventoryRequestFromOrderBuilder ?: - ObjectManager::getInstance()->get(GetInventoryRequestFromOrderBuilder::class); + $this->getInventoryRequestFromOrder = $getInventoryRequestFromOrder ?: + ObjectManager::getInstance()->get(GetInventoryRequestFromOrder::class); } /** @@ -94,7 +93,6 @@ public function __construct( * * @param InvoiceInterface $invoice * @return SourceSelectionResultInterface - * @throws UndefinedInventoryRequestBuilderException */ public function execute(InvoiceInterface $invoice): SourceSelectionResultInterface { @@ -103,10 +101,7 @@ public function execute(InvoiceInterface $invoice): SourceSelectionResultInterfa $websiteId = (int) $order->getStore()->getWebsiteId(); $stockId = (int) $this->stockByWebsiteIdResolver->execute($websiteId)->getStockId(); - $selectionAlgorithmCode = $this->getDefaultSourceSelectionAlgorithmCode->execute(); - $inventoryRequestBuilder = $this->getInventoryRequestFromOrderBuilder->execute($selectionAlgorithmCode); - - $inventoryRequest = $inventoryRequestBuilder->execute( + $inventoryRequest = $this->getInventoryRequestFromOrder->execute( $stockId, (int) $order->getEntityId(), $this->getSelectionRequestItems($invoice->getItems()) diff --git a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php index 1b3d84aadc6f..ae94bda342f2 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php +++ b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php @@ -17,12 +17,11 @@ use Magento\Framework\Exception\NoSuchEntityException; use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterfaceFactory; -use Magento\InventorySourceSelectionApi\Exception\UndefinedInventoryRequestBuilderException; -use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrderBuilder; use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory; use Magento\InventorySourceSelectionApi\Api\SourceSelectionServiceInterface; use Magento\InventorySourceSelectionApi\Api\GetDefaultSourceSelectionAlgorithmCodeInterface; use Magento\InventoryApi\Api\SourceRepositoryInterface; +use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrder; /** * ProcessAlgorithm Controller @@ -54,11 +53,6 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface */ private $stockByWebsiteIdResolver; - /** - * @var GetInventoryRequestFromOrderBuilder - */ - private $getInventoryRequestFromOrderBuilder; - /** * @var ItemRequestInterfaceFactory */ @@ -69,6 +63,11 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface */ private $sources = []; + /** + * @var GetInventoryRequestFromOrder + */ + private $inventoryRequestFromOrder; + /** * ProcessAlgorithm constructor. * @@ -79,7 +78,7 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceRepositoryInterface $sourceRepository - * @param GetInventoryRequestFromOrderBuilder|null $getInventoryRequestFromOrderBuilder + * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder */ public function __construct( Context $context, @@ -89,7 +88,7 @@ public function __construct( SourceSelectionServiceInterface $sourceSelectionService, GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode, SourceRepositoryInterface $sourceRepository, - GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder = null + GetInventoryRequestFromOrder $getInventoryRequestFromOrder = null ) { parent::__construct($context); $this->sourceSelectionService = $sourceSelectionService; @@ -97,8 +96,8 @@ public function __construct( $this->sourceRepository = $sourceRepository; $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->itemRequestFactory = $itemRequestFactory; - $this->getInventoryRequestFromOrderBuilder = $getInventoryRequestFromOrderBuilder ?: - ObjectManager::getInstance()->get(GetInventoryRequestFromOrderBuilder::class); + $this->inventoryRequestFromOrder = $getInventoryRequestFromOrder ?: + ObjectManager::getInstance()->get(GetInventoryRequestFromOrder::class); } /** @@ -123,7 +122,6 @@ private function getRequestItems(array $requestData): array /** * @inheritdoc * @throws NoSuchEntityException - * @throws UndefinedInventoryRequestBuilderException */ public function execute(): ResultInterface { @@ -144,9 +142,7 @@ public function execute(): ResultInterface $requestItems = $this->getRequestItems($requestData); - $inventoryRequestBuilder = $this->getInventoryRequestFromOrderBuilder->execute($algorithmCode); - $inventoryRequest = $inventoryRequestBuilder->execute($stockId, $orderId, $requestItems); - + $inventoryRequest = $this->inventoryRequestFromOrder->execute($stockId, $orderId, $requestItems); $sourceSelectionResult = $this->sourceSelectionService->execute($inventoryRequest, $algorithmCode); foreach ($requestData as $data) { diff --git a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php index 1e130712c214..2f80ceb4be3a 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php +++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php @@ -8,8 +8,7 @@ namespace Magento\InventoryShippingAdminUi\Ui\DataProvider; use Magento\Framework\Exception\NoSuchEntityException; -use Magento\InventorySourceSelectionApi\Exception\UndefinedInventoryRequestBuilderException; -use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrderBuilder; +use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrder; use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory; use Magento\InventorySourceSelectionApi\Api\SourceSelectionServiceInterface; use Magento\InventorySourceSelectionApi\Api\GetDefaultSourceSelectionAlgorithmCodeInterface; @@ -42,9 +41,9 @@ class GetSourcesByOrderIdStockIdSkuAndQty private $sourceRepository; /** - * @var GetInventoryRequestFromOrderBuilder + * @var GetInventoryRequestFromOrder */ - private $getInventoryRequestFromOrderBuilder; + private $getInventoryRequestFromOrder; /** * @var array @@ -57,7 +56,7 @@ class GetSourcesByOrderIdStockIdSkuAndQty * @param ItemRequestInterfaceFactory $itemRequestFactory * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode - * @param GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder + * @param GetInventoryRequestFromOrder $getInventoryRequestFromOrder * @param SourceRepositoryInterface $sourceRepository * @SuppressWarnings(PHPMD.LongVariable) */ @@ -65,14 +64,14 @@ public function __construct( ItemRequestInterfaceFactory $itemRequestFactory, SourceSelectionServiceInterface $sourceSelectionService, GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode, - GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder, + GetInventoryRequestFromOrder $getInventoryRequestFromOrder, SourceRepositoryInterface $sourceRepository ) { $this->itemRequestFactory = $itemRequestFactory; $this->sourceSelectionService = $sourceSelectionService; $this->getDefaultSourceSelectionAlgorithmCode = $getDefaultSourceSelectionAlgorithmCode; $this->sourceRepository = $sourceRepository; - $this->getInventoryRequestFromOrderBuilder = $getInventoryRequestFromOrderBuilder; + $this->getInventoryRequestFromOrder = $getInventoryRequestFromOrder; } /** @@ -84,7 +83,6 @@ public function __construct( * @param float $qty * @return array * @throws NoSuchEntityException - * @throws UndefinedInventoryRequestBuilderException * @SuppressWarnings(PHPMD.LongVariable) */ public function execute(int $orderId, int $stockId, string $sku, float $qty): array @@ -96,9 +94,7 @@ public function execute(int $orderId, int $stockId, string $sku, float $qty): ar 'qty' => $qty ]); - $inventoryRequestBuilder = $this->getInventoryRequestFromOrderBuilder->execute($algorithmCode); - $inventoryRequest = $inventoryRequestBuilder->execute($stockId, $orderId, [$requestItem]); - + $inventoryRequest = $this->getInventoryRequestFromOrder->execute($stockId, $orderId, [$requestItem]); $sourceSelectionResult = $this->sourceSelectionService->execute( $inventoryRequest, $algorithmCode diff --git a/app/code/Magento/InventorySourceSelection/Model/InventoryRequestBuilder/FromOrder/DefaultBuilder.php b/app/code/Magento/InventorySourceSelection/Model/InventoryRequestBuilder/FromOrder/DefaultBuilder.php deleted file mode 100644 index 6ef2c9f8dd88..000000000000 --- a/app/code/Magento/InventorySourceSelection/Model/InventoryRequestBuilder/FromOrder/DefaultBuilder.php +++ /dev/null @@ -1,49 +0,0 @@ -inventoryRequestFactory = $inventoryRequestFactory; - } - - /** - * @inheritdoc - * @SuppressWarnings(PHPMD.UnusedFormalParameter) - */ - public function execute(int $stockId, int $orderId, array $requestItems): InventoryRequestInterface - { - $inventoryRequest = $this->inventoryRequestFactory->create([ - 'stockId' => $stockId, - 'items' => $requestItems - ]); - - return $inventoryRequest; - } -} diff --git a/app/code/Magento/InventorySourceSelection/etc/di.xml b/app/code/Magento/InventorySourceSelection/etc/di.xml index aaf5acda3f4c..c63e3eca12e4 100644 --- a/app/code/Magento/InventorySourceSelection/etc/di.xml +++ b/app/code/Magento/InventorySourceSelection/etc/di.xml @@ -31,12 +31,4 @@ - - - - Magento\InventorySourceSelection\Model\InventoryRequestBuilder\FromOrder\DefaultBuilder - - - diff --git a/app/code/Magento/InventorySourceSelectionApi/Exception/UndefinedInventoryRequestBuilderException.php b/app/code/Magento/InventorySourceSelectionApi/Exception/UndefinedInventoryRequestBuilderException.php deleted file mode 100644 index 30b7542e27c2..000000000000 --- a/app/code/Magento/InventorySourceSelectionApi/Exception/UndefinedInventoryRequestBuilderException.php +++ /dev/null @@ -1,15 +0,0 @@ -buildersByAlgorithm = $buildersByAlgorithm; - - foreach ($this->buildersByAlgorithm as $code => $builder) { - if (!($builder instanceof InventoryRequestFromOrderBuilderInterface)) { - throw new \InvalidArgumentException( - 'Builder ' . $code . ' must implement InventoryRequestBuilderFromOrderInterface' - ); - } - } - } - - /** - * Get a builder from one algorithm - * - * @param string $algorithm - * @return InventoryRequestFromOrderBuilderInterface - * @throws UndefinedInventoryRequestBuilderException - */ - public function execute(string $algorithm): InventoryRequestFromOrderBuilderInterface - { - if (!isset($this->buildersByAlgorithm[$algorithm])) { - throw new UndefinedInventoryRequestBuilderException( - __('No request builder is defined for algorithm %1', $algorithm) - ); - } - - return $this->buildersByAlgorithm[$algorithm]; - } -} diff --git a/app/code/Magento/InventorySourceSelectionApi/Model/InventoryRequestFromOrderBuilderInterface.php b/app/code/Magento/InventorySourceSelectionApi/Model/InventoryRequestFromOrderBuilderInterface.php deleted file mode 100644 index 5bb9c33d6325..000000000000 --- a/app/code/Magento/InventorySourceSelectionApi/Model/InventoryRequestFromOrderBuilderInterface.php +++ /dev/null @@ -1,29 +0,0 @@ - Date: Thu, 17 Jan 2019 19:22:22 -0600 Subject: [PATCH 02/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Adminhtml/SourceSelection/ProcessAlgorithm.php | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php index ae94bda342f2..91eefd8c262f 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php +++ b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php @@ -66,7 +66,7 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface /** * @var GetInventoryRequestFromOrder */ - private $inventoryRequestFromOrder; + private $getInventoryRequestFromOrder; /** * ProcessAlgorithm constructor. @@ -96,7 +96,7 @@ public function __construct( $this->sourceRepository = $sourceRepository; $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->itemRequestFactory = $itemRequestFactory; - $this->inventoryRequestFromOrder = $getInventoryRequestFromOrder ?: + $this->getInventoryRequestFromOrder = $getInventoryRequestFromOrder ?: ObjectManager::getInstance()->get(GetInventoryRequestFromOrder::class); } @@ -142,7 +142,7 @@ public function execute(): ResultInterface $requestItems = $this->getRequestItems($requestData); - $inventoryRequest = $this->inventoryRequestFromOrder->execute($stockId, $orderId, $requestItems); + $inventoryRequest = $this->getInventoryRequestFromOrder->execute($stockId, $orderId, $requestItems); $sourceSelectionResult = $this->sourceSelectionService->execute($inventoryRequest, $algorithmCode); foreach ($requestData as $data) { From f012e88c02f244b7af5ff2547fd08de92edaa1fa Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 19:26:07 -0600 Subject: [PATCH 03/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Model/Algorithms/Result/GetDefaultSortedSourcesResult.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php b/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php index 4b38a7760073..8881bbabc3bc 100644 --- a/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php +++ b/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php @@ -105,6 +105,8 @@ public function execute( $isShippable = true; $sourceItemSelections = []; + //@TODO from performance perspective it's better to switch these foreaches and make the inner one + //which loops over sources to be outermost and iterate over inventory request inside foreach ($inventoryRequest->getItems() as $item) { $itemSku = $item->getSku(); $qtyToDeliver = $item->getQty(); From 2ac2752d5b8770683b1542790ea94d9318614119 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 19:32:10 -0600 Subject: [PATCH 04/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php | 1 + 1 file changed, 1 insertion(+) diff --git a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php index 2f80ceb4be3a..cac618d6ca3f 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php +++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php @@ -75,6 +75,7 @@ public function __construct( } /** + * TODO passing both OrderID and StockID is excessive, because you can always retrieve Website from Order and resolve Stock * Get sources by stock id sku and qty * * @param int $orderId From 7e0596c0fb5f66fbac70be348ab5dde2f677f339 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 23:17:05 -0600 Subject: [PATCH 05/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Algorithms/DistanceBasedAlgorithm.php | 2 +- .../Convert/AddressToComponentsString.php | 2 +- .../Model/Convert/AddressToQueryString.php | 2 +- .../Model/Convert/AddressToString.php | 2 +- .../GetDistanceFromSourceToAddress.php | 2 +- .../DistanceProvider/GetLatLngFromSource.php | 2 +- .../GoogleMap/GetLatLngFromAddress.php | 2 +- .../Offline/GetLatLngFromAddress.php | 2 +- .../Model/GetAddressFromOrder.php | 65 -------------- .../ResourceModel/GetGeoNameDataByAddress.php | 2 +- .../etc/di.xml | 2 - .../Api/GetLatLngFromAddressInterface.php | 4 +- .../Model/GetLatLngFromAddress.php | 2 +- .../GetSourceSelectionResultFromInvoice.php | 24 ++--- .../SourceSelection/ProcessAlgorithm.php | 23 ++--- ...y.php => GetSourcesByOrderIdSkuAndQty.php} | 15 ++-- .../SourceSelectionDataProvider.php | 29 +++--- .../Model/Address.php | 4 +- .../InventorySourceSelection/etc/di.xml | 2 + .../Api/Data/AddressInterface.php | 4 +- .../Result/GetDefaultSortedSourcesResult.php | 4 +- .../Model/GetInventoryRequestFromOrder.php | 90 +++++++++++++++---- .../InventorySourceSelectionApi/composer.json | 3 + 23 files changed, 123 insertions(+), 166 deletions(-) delete mode 100644 app/code/Magento/InventoryDistanceBasedSourceSelection/Model/GetAddressFromOrder.php rename app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/{GetSourcesByOrderIdStockIdSkuAndQty.php => GetSourcesByOrderIdSkuAndQty.php} (87%) rename app/code/Magento/{InventoryDistanceBasedSourceSelection => InventorySourceSelection}/Model/Address.php (92%) rename app/code/Magento/{InventoryDistanceBasedSourceSelectionApi => InventorySourceSelectionApi}/Api/Data/AddressInterface.php (86%) diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Algorithms/DistanceBasedAlgorithm.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Algorithms/DistanceBasedAlgorithm.php index 55be34d5662f..9b833a9e4f6c 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Algorithms/DistanceBasedAlgorithm.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Algorithms/DistanceBasedAlgorithm.php @@ -11,7 +11,7 @@ use Magento\InventoryApi\Api\GetSourcesAssignedToStockOrderedByPriorityInterface; use Magento\InventoryApi\Api\Data\SourceInterface; use Magento\InventoryDistanceBasedSourceSelection\Model\DistanceProvider\GetDistanceFromSourceToAddress; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; use Magento\InventorySourceSelectionApi\Model\Algorithms\Result\GetDefaultSortedSourcesResult; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterface; use Magento\InventorySourceSelectionApi\Api\Data\SourceSelectionResultInterface; diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToComponentsString.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToComponentsString.php index ebea921666fc..b03ad341edf3 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToComponentsString.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToComponentsString.php @@ -7,7 +7,7 @@ namespace Magento\InventoryDistanceBasedSourceSelection\Model\Convert; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; class AddressToComponentsString { diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToQueryString.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToQueryString.php index 12a7f502be24..1ac5dd46a3ee 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToQueryString.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToQueryString.php @@ -7,7 +7,7 @@ namespace Magento\InventoryDistanceBasedSourceSelection\Model\Convert; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; class AddressToQueryString { diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToString.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToString.php index f8307981f341..e6f5908e0f98 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToString.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Convert/AddressToString.php @@ -7,7 +7,7 @@ namespace Magento\InventoryDistanceBasedSourceSelection\Model\Convert; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; class AddressToString { diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetDistanceFromSourceToAddress.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetDistanceFromSourceToAddress.php index 4b1362491a74..40aad7326a53 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetDistanceFromSourceToAddress.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetDistanceFromSourceToAddress.php @@ -8,7 +8,7 @@ namespace Magento\InventoryDistanceBasedSourceSelection\Model\DistanceProvider; use Magento\InventoryApi\Api\Data\SourceInterface; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetDistanceInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetLatLngFromAddressInterface; diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetLatLngFromSource.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetLatLngFromSource.php index 24a6b3e5d0d5..36539ffc38ca 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetLatLngFromSource.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GetLatLngFromSource.php @@ -8,7 +8,7 @@ namespace Magento\InventoryDistanceBasedSourceSelection\Model\DistanceProvider; use Magento\InventoryApi\Api\Data\SourceInterface; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterfaceFactory; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterfaceFactory; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetLatLngFromAddressInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterfaceFactory; diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GoogleMap/GetLatLngFromAddress.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GoogleMap/GetLatLngFromAddress.php index 27809e93a138..6b95c3b6674e 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GoogleMap/GetLatLngFromAddress.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/GoogleMap/GetLatLngFromAddress.php @@ -13,7 +13,7 @@ use Magento\InventoryDistanceBasedSourceSelection\Model\Convert\AddressToComponentsString; use Magento\InventoryDistanceBasedSourceSelection\Model\Convert\AddressToQueryString; use Magento\InventoryDistanceBasedSourceSelection\Model\Convert\AddressToString; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterfaceFactory; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetLatLngFromAddressInterface; diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/Offline/GetLatLngFromAddress.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/Offline/GetLatLngFromAddress.php index 87496f5b4b8d..b875b31f30fe 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/Offline/GetLatLngFromAddress.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/DistanceProvider/Offline/GetLatLngFromAddress.php @@ -13,7 +13,7 @@ use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterfaceFactory; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetLatLngFromAddressInterface; use Magento\InventoryDistanceBasedSourceSelection\Model\ResourceModel\GetGeoNameDataByAddress; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; /** * @inheritdoc diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/GetAddressFromOrder.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/GetAddressFromOrder.php deleted file mode 100644 index 76a5f4910dfd..000000000000 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/GetAddressFromOrder.php +++ /dev/null @@ -1,65 +0,0 @@ -addressInterfaceFactory = $addressInterfaceFactory; - $this->orderRepository = $orderRepository; - } - - /** - * Create an address from an order - * - * @param int $orderId - * @return AddressInterface - */ - public function execute(int $orderId): AddressInterface - { - $order = $this->orderRepository->get($orderId); - - /** @var \Magento\Sales\Model\Order\Address $shippingAddress */ - $shippingAddress = $order->getShippingAddress(); - - return $this->addressInterfaceFactory->create([ - 'country' => $shippingAddress->getCountryId(), - 'postcode' => $shippingAddress->getPostcode(), - 'streetAddress' => implode("\n", $shippingAddress->getStreet()), - 'region' => $shippingAddress->getRegion() ?? $shippingAddress->getRegionCode() ?? '', - 'city' => $shippingAddress->getCity() - ]); - } -} diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/ResourceModel/GetGeoNameDataByAddress.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/ResourceModel/GetGeoNameDataByAddress.php index 366b26cbae85..66b310200fe5 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/ResourceModel/GetGeoNameDataByAddress.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/ResourceModel/GetGeoNameDataByAddress.php @@ -10,7 +10,7 @@ use Magento\Framework\App\ResourceConnection; use Magento\Framework\Exception\NoSuchEntityException; use Magento\InventoryDistanceBasedSourceSelection\Model\Convert\AddressToString; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; /** * Get geoname data by postcode diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml index dabe1cbb68e1..8fc7e26b32cf 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml @@ -9,8 +9,6 @@ xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd"> - diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php index 1529c239081f..8df2afe7dddb 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php @@ -17,10 +17,10 @@ interface GetLatLngFromAddressInterface /** * Get latitude and longitude object from source * - * @param \Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface $address + * @param \Magento\InventorySourceSelectionApi\Api\Data\AddressInterface $address * @return \Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface */ public function execute( - \Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface $address + \Magento\InventorySourceSelectionApi\Api\Data\AddressInterface $address ): \Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface; } diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Model/GetLatLngFromAddress.php b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Model/GetLatLngFromAddress.php index 2ce146b1ac3c..185189b0ea96 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Model/GetLatLngFromAddress.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Model/GetLatLngFromAddress.php @@ -7,7 +7,7 @@ namespace Magento\InventoryDistanceBasedSourceSelectionApi\Model; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetDistanceProviderCodeInterface; use Magento\InventoryDistanceBasedSourceSelectionApi\Api\GetLatLngFromAddressInterface; diff --git a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php index 6900efa9a97b..fa21dd178f54 100644 --- a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php +++ b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php @@ -9,8 +9,6 @@ use Magento\Framework\App\ObjectManager; use Magento\InventorySalesApi\Model\GetSkuFromOrderItemInterface; -use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface; -use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterfaceFactory; use Magento\InventorySourceSelectionApi\Model\GetInventoryRequestFromOrder; use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory; use Magento\Sales\Api\Data\InvoiceInterface; @@ -23,8 +21,8 @@ use Traversable; /** - * Creates instance of InventoryRequestInterface by given InvoiceInterface object. - * Only virtual type items will be used. + * Provides Source Selection by given InvoiceInterface object. + * Used for Virtual and Downloadable products only */ class GetSourceSelectionResultFromInvoice { @@ -38,11 +36,6 @@ class GetSourceSelectionResultFromInvoice */ private $itemRequestFactory; - /** - * @var StockByWebsiteIdResolverInterface - */ - private $stockByWebsiteIdResolver; - /** * @var GetDefaultSourceSelectionAlgorithmCodeInterface */ @@ -63,8 +56,8 @@ class GetSourceSelectionResultFromInvoice * * @param GetSkuFromOrderItemInterface $getSkuFromOrderItem * @param ItemRequestInterfaceFactory $itemRequestFactory - * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver - * @param InventoryRequestInterfaceFactory $inventoryRequestFactory + * @param $stockByWebsiteIdResolver + * @param $inventoryRequestFactory * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder @@ -73,14 +66,13 @@ class GetSourceSelectionResultFromInvoice public function __construct( GetSkuFromOrderItemInterface $getSkuFromOrderItem, ItemRequestInterfaceFactory $itemRequestFactory, - StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver, - InventoryRequestInterfaceFactory $inventoryRequestFactory, + $stockByWebsiteIdResolver, + $inventoryRequestFactory, GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode, SourceSelectionServiceInterface $sourceSelectionService, GetInventoryRequestFromOrder $getInventoryRequestFromOrder = null ) { $this->itemRequestFactory = $itemRequestFactory; - $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->getDefaultSourceSelectionAlgorithmCode = $getDefaultSourceSelectionAlgorithmCode; $this->sourceSelectionService = $sourceSelectionService; $this->getSkuFromOrderItem = $getSkuFromOrderItem; @@ -98,11 +90,7 @@ public function execute(InvoiceInterface $invoice): SourceSelectionResultInterfa { /** @var OrderInterface $order */ $order = $invoice->getOrder(); - $websiteId = (int) $order->getStore()->getWebsiteId(); - $stockId = (int) $this->stockByWebsiteIdResolver->execute($websiteId)->getStockId(); - $inventoryRequest = $this->getInventoryRequestFromOrder->execute( - $stockId, (int) $order->getEntityId(), $this->getSelectionRequestItems($invoice->getItems()) ); diff --git a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php index 91eefd8c262f..af857b06a824 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php +++ b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php @@ -15,7 +15,6 @@ use Magento\Framework\Controller\ResultFactory; use Magento\Framework\Controller\ResultInterface; use Magento\Framework\Exception\NoSuchEntityException; -use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterfaceFactory; use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory; use Magento\InventorySourceSelectionApi\Api\SourceSelectionServiceInterface; @@ -48,11 +47,6 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface */ private $sourceRepository; - /** - * @var StockByWebsiteIdResolverInterface - */ - private $stockByWebsiteIdResolver; - /** * @var ItemRequestInterfaceFactory */ @@ -72,19 +66,20 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface * ProcessAlgorithm constructor. * * @param Context $context - * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver + * @param $stockByWebsiteIdResolver * @param ItemRequestInterfaceFactory $itemRequestFactory - * @param InventoryRequestInterfaceFactory $inventoryRequestFactory + * @param $inventoryRequestFactory * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceRepositoryInterface $sourceRepository * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder + * @SuppressWarnings(PHPMD.UnusedFormalParameter) */ public function __construct( Context $context, - StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver, + $stockByWebsiteIdResolver, ItemRequestInterfaceFactory $itemRequestFactory, - InventoryRequestInterfaceFactory $inventoryRequestFactory, + $inventoryRequestFactory, SourceSelectionServiceInterface $sourceSelectionService, GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode, SourceRepositoryInterface $sourceRepository, @@ -94,7 +89,6 @@ public function __construct( $this->sourceSelectionService = $sourceSelectionService; $this->getDefaultSourceSelectionAlgorithmCode = $getDefaultSourceSelectionAlgorithmCode; $this->sourceRepository = $sourceRepository; - $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->itemRequestFactory = $itemRequestFactory; $this->getInventoryRequestFromOrder = $getInventoryRequestFromOrder ?: ObjectManager::getInstance()->get(GetInventoryRequestFromOrder::class); @@ -135,14 +129,9 @@ public function execute(): ResultInterface $requestData = $postRequest['requestData']; $defaultCode = $this->getDefaultSourceSelectionAlgorithmCode->execute(); $algorithmCode = !empty($postRequest['algorithmCode']) ? $postRequest['algorithmCode'] : $defaultCode; - - //TODO: maybe need to add exception when websiteId empty - $websiteId = (int) $postRequest['websiteId'] ?? 1; - $stockId = (int) $this->stockByWebsiteIdResolver->execute($websiteId)->getStockId(); - $requestItems = $this->getRequestItems($requestData); - $inventoryRequest = $this->getInventoryRequestFromOrder->execute($stockId, $orderId, $requestItems); + $inventoryRequest = $this->getInventoryRequestFromOrder->execute($orderId, $requestItems); $sourceSelectionResult = $this->sourceSelectionService->execute($inventoryRequest, $algorithmCode); foreach ($requestData as $data) { diff --git a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php similarity index 87% rename from app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php rename to app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php index cac618d6ca3f..358820e9f2f4 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php +++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php @@ -15,10 +15,9 @@ use Magento\InventoryApi\Api\SourceRepositoryInterface; /** - * Class GetSourcesByOrderIdStockIdSkuAndQty - * @package Magento\InventoryShippingAdminUi\Ui\DataProvider + * Class GetSourcesByOrderIdSkuAndQty */ -class GetSourcesByOrderIdStockIdSkuAndQty +class GetSourcesByOrderIdSkuAndQty { /** * @var ItemRequestInterfaceFactory @@ -51,8 +50,6 @@ class GetSourcesByOrderIdStockIdSkuAndQty private $sources = []; /** - * GetSourcesByStockIdSkuAndQty constructor. - * * @param ItemRequestInterfaceFactory $itemRequestFactory * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode @@ -75,18 +72,16 @@ public function __construct( } /** - * TODO passing both OrderID and StockID is excessive, because you can always retrieve Website from Order and resolve Stock - * Get sources by stock id sku and qty + * Get sources by order id sku and qty * * @param int $orderId - * @param int $stockId * @param string $sku * @param float $qty * @return array * @throws NoSuchEntityException * @SuppressWarnings(PHPMD.LongVariable) */ - public function execute(int $orderId, int $stockId, string $sku, float $qty): array + public function execute(int $orderId, string $sku, float $qty): array { $algorithmCode = $this->getDefaultSourceSelectionAlgorithmCode->execute(); @@ -95,7 +90,7 @@ public function execute(int $orderId, int $stockId, string $sku, float $qty): ar 'qty' => $qty ]); - $inventoryRequest = $this->getInventoryRequestFromOrder->execute($stockId, $orderId, [$requestItem]); + $inventoryRequest = $this->getInventoryRequestFromOrder->execute($orderId, [$requestItem]); $sourceSelectionResult = $this->sourceSelectionService->execute( $inventoryRequest, $algorithmCode diff --git a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php index 739071b84018..ddbc3adaba70 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php +++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php @@ -31,11 +31,6 @@ class SourceSelectionDataProvider extends AbstractDataProvider */ private $orderRepository; - /** - * @var StockByWebsiteIdResolverInterface - */ - private $stockByWebsiteIdResolver; - /** * @var GetStockItemConfigurationInterface */ @@ -52,9 +47,9 @@ class SourceSelectionDataProvider extends AbstractDataProvider private $sources = []; /** - * @var GetSourcesByOrderIdStockIdSkuAndQty + * @var GetSourcesByOrderIdSkuAndQty */ - private $getSourcesByOrderIdStockIdSkuAndQty; + private $getSourcesByOrderIdSkuAndQty; /** * @param string $name @@ -64,9 +59,9 @@ class SourceSelectionDataProvider extends AbstractDataProvider * @param OrderRepository $orderRepository * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver * @param GetStockItemConfigurationInterface $getStockItemConfiguration - * @param GetSourcesByStockIdSkuAndQty $getSourcesByStockIdSkuAndQty + * @param $getSourcesByStockIdSkuAndQty * @param GetSkuFromOrderItemInterface $getSkuFromOrderItem - * @param GetSourcesByOrderIdStockIdSkuAndQty $getSourcesByOrderIdStockIdSkuAndQty + * @param GetSourcesByOrderIdSkuAndQty $getSourcesByOrderIdSkuAndQty * @param array $meta * @param array $data * @SuppressWarnings(PHPMD.ExcessiveParameterList) @@ -81,20 +76,19 @@ public function __construct( OrderRepository $orderRepository, StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver, GetStockItemConfigurationInterface $getStockItemConfiguration, - GetSourcesByStockIdSkuAndQty $getSourcesByStockIdSkuAndQty, + $getSourcesByStockIdSkuAndQty, GetSkuFromOrderItemInterface $getSkuFromOrderItem, - GetSourcesByOrderIdStockIdSkuAndQty $getSourcesByOrderIdStockIdSkuAndQty = null, + GetSourcesByOrderIdSkuAndQty $getSourcesByOrderIdSkuAndQty = null, array $meta = [], array $data = [] ) { parent::__construct($name, $primaryFieldName, $requestFieldName, $meta, $data); $this->request = $request; $this->orderRepository = $orderRepository; - $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; $this->getStockItemConfiguration = $getStockItemConfiguration; $this->getSkuFromOrderItem = $getSkuFromOrderItem; - $this->getSourcesByOrderIdStockIdSkuAndQty = $getSourcesByOrderIdStockIdSkuAndQty ?: - ObjectManager::getInstance()->get(GetSourcesByOrderIdStockIdSkuAndQty::class); + $this->getSourcesByOrderIdSkuAndQty = $getSourcesByOrderIdSkuAndQty ?: + ObjectManager::getInstance()->get(GetSourcesByOrderIdSkuAndQty::class); } /** @@ -137,7 +131,7 @@ public function getData() 'sku' => $sku, 'product' => $this->getProductName($orderItem), 'qtyToShip' => $qty, - 'sources' => $this->getSources($orderId, $stockId, $sku, $qty), + 'sources' => $this->getSources($orderId, $sku, $qty), 'isManageStock' => $this->isManageStock($sku, $stockId) ]; } @@ -157,15 +151,14 @@ public function getData() * Get sources * * @param int $orderId - * @param int $stockId * @param string $sku * @param float $qty * @return array * @throws NoSuchEntityException */ - private function getSources(int $orderId, int $stockId, string $sku, float $qty): array + private function getSources(int $orderId, string $sku, float $qty): array { - $sources = $this->getSourcesByOrderIdStockIdSkuAndQty->execute($orderId, $stockId, $sku, $qty); + $sources = $this->getSourcesByOrderIdSkuAndQty->execute($orderId, $sku, $qty); foreach ($sources as $source) { $this->sources[$source['sourceCode']] = $source['sourceName']; } diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Address.php b/app/code/Magento/InventorySourceSelection/Model/Address.php similarity index 92% rename from app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Address.php rename to app/code/Magento/InventorySourceSelection/Model/Address.php index 84d9b2a68836..0673e10aae58 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/Address.php +++ b/app/code/Magento/InventorySourceSelection/Model/Address.php @@ -5,9 +5,9 @@ */ declare(strict_types=1); -namespace Magento\InventoryDistanceBasedSourceSelection\Model; +namespace Magento\InventorySourceSelection\Model; -use Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\AddressInterface; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterface; /** * @inheritdoc diff --git a/app/code/Magento/InventorySourceSelection/etc/di.xml b/app/code/Magento/InventorySourceSelection/etc/di.xml index c63e3eca12e4..e8aa7f754200 100644 --- a/app/code/Magento/InventorySourceSelection/etc/di.xml +++ b/app/code/Magento/InventorySourceSelection/etc/di.xml @@ -21,6 +21,8 @@ type="Magento\InventorySourceSelection\Model\SourceSelectionService"/> + diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/Data/AddressInterface.php b/app/code/Magento/InventorySourceSelectionApi/Api/Data/AddressInterface.php similarity index 86% rename from app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/Data/AddressInterface.php rename to app/code/Magento/InventorySourceSelectionApi/Api/Data/AddressInterface.php index bbf94d6e89b8..fea3be369f0b 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/Data/AddressInterface.php +++ b/app/code/Magento/InventorySourceSelectionApi/Api/Data/AddressInterface.php @@ -5,10 +5,10 @@ */ declare(strict_types=1); -namespace Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data; +namespace Magento\InventorySourceSelectionApi\Api\Data; /** - * DTO for shipping source or shipping destination + * Data interface for shipping source or shipping destination * * @api */ diff --git a/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php b/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php index 8881bbabc3bc..8d1d80a51587 100644 --- a/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php +++ b/app/code/Magento/InventorySourceSelectionApi/Model/Algorithms/Result/GetDefaultSortedSourcesResult.php @@ -105,8 +105,8 @@ public function execute( $isShippable = true; $sourceItemSelections = []; - //@TODO from performance perspective it's better to switch these foreaches and make the inner one - //which loops over sources to be outermost and iterate over inventory request inside + //TODO from performance perspective it's better to switch these foreaches and make the inner one + //TODO which loops over sources to be outermost and iterate over inventory request items inside foreach ($inventoryRequest->getItems() as $item) { $itemSku = $item->getSku(); $qtyToDeliver = $item->getQty(); diff --git a/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php b/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php index 8a286cd5f33a..c378eb28b0ac 100644 --- a/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php +++ b/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php @@ -7,10 +7,15 @@ namespace Magento\InventorySourceSelectionApi\Model; -use Magento\InventoryDistanceBasedSourceSelection\Model\GetAddressFromOrder; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestExtensionInterfaceFactory; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterface; use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterfaceFactory; +use Magento\InventorySourceSelectionApi\Api\Data\AddressInterfaceFactory;; +use Magento\InventorySalesApi\Model\StockByWebsiteIdResolverInterface; +use Magento\Sales\Api\Data\OrderInterface; +use Magento\Sales\Model\Order\Address; +use Magento\Sales\Api\OrderRepositoryInterface; +use Magento\Store\Model\StoreManagerInterface; /** * Build inventory request based on Order Id @@ -25,49 +30,98 @@ class GetInventoryRequestFromOrder private $inventoryRequestFactory; /** - * @var GetAddressFromOrder + * @var InventoryRequestExtensionInterfaceFactory */ - private $getAddressFromOrder; + private $inventoryRequestExtensionFactory; /** - * @var InventoryRequestExtensionInterfaceFactory + * @var OrderRepositoryInterface */ - private $inventoryRequestExtensionInterfaceFactory; + private $orderRepository; + + /** + * @var AddressInterfaceFactory + */ + private $addressInterfaceFactory; + + /** + * @var StoreManagerInterface + */ + private $storeManager; + + /** + * @var StockByWebsiteIdResolverInterface + */ + private $stockByWebsiteIdResolver; /** - * DistanceBuilder constructor. - * * @param InventoryRequestInterfaceFactory $inventoryRequestFactory - * @param GetAddressFromOrder $getAddressFromOrder - * @param InventoryRequestExtensionInterfaceFactory $inventoryRequestExtensionInterfaceFactory - * @SuppressWarnings(PHPMD.LongVariable) + * @param InventoryRequestExtensionInterfaceFactory $inventoryRequestExtensionFactory + * @param OrderRepositoryInterface $orderRepository + * @param AddressInterfaceFactory $addressInterfaceFactory + * @param StoreManagerInterface $storeManager + * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver */ public function __construct( InventoryRequestInterfaceFactory $inventoryRequestFactory, - GetAddressFromOrder $getAddressFromOrder, - InventoryRequestExtensionInterfaceFactory $inventoryRequestExtensionInterfaceFactory + InventoryRequestExtensionInterfaceFactory $inventoryRequestExtensionFactory, + OrderRepositoryInterface $orderRepository, + AddressInterfaceFactory $addressInterfaceFactory, + StoreManagerInterface $storeManager, + StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver ) { $this->inventoryRequestFactory = $inventoryRequestFactory; - $this->getAddressFromOrder = $getAddressFromOrder; - $this->inventoryRequestExtensionInterfaceFactory = $inventoryRequestExtensionInterfaceFactory; + $this->inventoryRequestExtensionFactory = $inventoryRequestExtensionFactory; + $this->orderRepository = $orderRepository; + $this->addressInterfaceFactory = $addressInterfaceFactory; + $this->storeManager = $storeManager; + $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver; } /** * Build inventory request based on Order Id and provided request items + * + * @param int $orderId + * @param array $requestItems */ - public function execute(int $stockId, int $orderId, array $requestItems): InventoryRequestInterface + public function execute(int $orderId, array $requestItems): InventoryRequestInterface { - $address = $this->getAddressFromOrder->execute($orderId); + /** @var OrderInterface $order */ + $order = $this->orderRepository->get($orderId); + + $address = $this->getAddressFromOrder($order); + $store = $this->storeManager->getStore($order->getStoreId()); + $stock = $this->stockByWebsiteIdResolver->execute($store->getWebsiteId()); $inventoryRequest = $this->inventoryRequestFactory->create([ - 'stockId' => $stockId, + 'stockId' => $stock->getStockId(), 'items' => $requestItems ]); - $extensionAttributes = $this->inventoryRequestExtensionInterfaceFactory->create(); + $extensionAttributes = $this->inventoryRequestExtensionFactory->create(); $extensionAttributes->setDestinationAddress($address); $inventoryRequest->setExtensionAttributes($extensionAttributes); return $inventoryRequest; } + + /** + * Create an address from an order + * + * @param OrderInterface $order + * @return AddressInterface + */ + private function getAddressFromOrder(OrderInterface $order): AddressInterface + { + /** @var Address $shippingAddress */ + $shippingAddress = $order->getShippingAddress(); + + return $this->addressInterfaceFactory->create([ + 'country' => $shippingAddress->getCountryId(), + 'postcode' => $shippingAddress->getPostcode(), + 'streetAddress' => implode("\n", $shippingAddress->getStreet()), + 'region' => $shippingAddress->getRegion() ?? $shippingAddress->getRegionCode() ?? '', + 'city' => $shippingAddress->getCity() + ]); + } } diff --git a/app/code/Magento/InventorySourceSelectionApi/composer.json b/app/code/Magento/InventorySourceSelectionApi/composer.json index 5305314cab19..a15fef7b8fe0 100644 --- a/app/code/Magento/InventorySourceSelectionApi/composer.json +++ b/app/code/Magento/InventorySourceSelectionApi/composer.json @@ -4,6 +4,9 @@ "require": { "php": "~7.1.3||~7.2.0", "magento/module-inventory-api": "*", + "magento/module-inventory-sales-api": "*", + "magento/module-store": "*", + "magento/module-sales": "*", "magento/framework": "*" }, "type": "magento2-module", From 77f3f0ba897ee0c096066d0f540d41065075dbf5 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 23:24:10 -0600 Subject: [PATCH 06/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Api/GetLatLngFromAddressInterface.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php index 8df2afe7dddb..d2f5589d2fd1 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php +++ b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php @@ -15,7 +15,7 @@ interface GetLatLngFromAddressInterface { /** - * Get latitude and longitude object from source + * Get latitude and longitude object from address * * @param \Magento\InventorySourceSelectionApi\Api\Data\AddressInterface $address * @return \Magento\InventoryDistanceBasedSourceSelectionApi\Api\Data\LatLngInterface From abf1ece2c9d61a70aea3377a5c750387bc0c9501 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 23:48:12 -0600 Subject: [PATCH 07/10] MSI-1866: Changes to Source Selection Service Contracts --- .../Magento/InventoryDistanceBasedSourceSelection/composer.json | 1 - .../Magento/InventoryDistanceBasedSourceSelection/etc/di.xml | 2 +- .../Model/SourceSelectionService.php | 2 +- 3 files changed, 2 insertions(+), 3 deletions(-) rename app/code/Magento/{InventorySourceSelection => InventorySourceSelectionApi}/Model/SourceSelectionService.php (97%) diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json index 945ebfbe7fc7..3734400e7516 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json @@ -6,7 +6,6 @@ "magento/framework": "*", "magento/module-inventory-distance-based-source-selection-api": "*", "magento/module-inventory-source-selection-api": "*", - "magento/module-inventory-source-selection": "*", "magento/module-inventory-api": "*", "magento/module-config": "*", "magento/module-sales": "*" diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml index 8fc7e26b32cf..62afa6d97a53 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml @@ -12,7 +12,7 @@ - + Date: Thu, 17 Jan 2019 23:51:43 -0600 Subject: [PATCH 08/10] MSI-1866: Changes to Source Selection Service Contracts --- app/code/Magento/InventorySourceSelection/etc/di.xml | 4 +--- app/code/Magento/InventorySourceSelectionApi/etc/di.xml | 2 ++ 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/code/Magento/InventorySourceSelection/etc/di.xml b/app/code/Magento/InventorySourceSelection/etc/di.xml index e8aa7f754200..30e7d66b5149 100644 --- a/app/code/Magento/InventorySourceSelection/etc/di.xml +++ b/app/code/Magento/InventorySourceSelection/etc/di.xml @@ -17,14 +17,12 @@ type="Magento\InventorySourceSelection\Model\Result\SourceSelectionItem"/> - - + + From 9bacd235e1b00320ccf767911ef2e09448cf5cd8 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Thu, 17 Jan 2019 23:54:55 -0600 Subject: [PATCH 09/10] MSI-1866: Changes to Source Selection Service Contracts --- .../InventoryDistanceBasedSourceSelectionApi/composer.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/composer.json b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/composer.json index ff5bccb8526a..fe027de3d297 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/composer.json +++ b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/composer.json @@ -3,7 +3,8 @@ "description": "N/A", "require": { "php": "~7.1.3||~7.2.0", - "magento/framework": "*" + "magento/framework": "*", + "magento/module-inventory-source-selection-api": "*" }, "type": "magento2-module", "license": [ From 446760151b033a7a9297da131ed2b035f2d56327 Mon Sep 17 00:00:00 2001 From: Igor Miniailo Date: Fri, 18 Jan 2019 08:13:33 -0600 Subject: [PATCH 10/10] MSI-1866: Changes to Source Selection Service Contracts --- .../composer.json | 3 +-- .../Model/GetSourceSelectionResultFromInvoice.php | 4 ++-- app/code/Magento/InventoryShipping/etc/di.xml | 8 ++++++++ .../Adminhtml/SourceSelection/ProcessAlgorithm.php | 4 ++-- .../DataProvider/SourceSelectionDataProvider.php | 2 +- .../InventoryShippingAdminUi/etc/adminhtml/di.xml | 14 ++++++++++++++ 6 files changed, 28 insertions(+), 7 deletions(-) diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json index 3734400e7516..75238bb167a0 100644 --- a/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json +++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json @@ -7,8 +7,7 @@ "magento/module-inventory-distance-based-source-selection-api": "*", "magento/module-inventory-source-selection-api": "*", "magento/module-inventory-api": "*", - "magento/module-config": "*", - "magento/module-sales": "*" + "magento/module-config": "*" }, "type": "magento2-module", "license": [ diff --git a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php index fa21dd178f54..21b3b47a053a 100644 --- a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php +++ b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php @@ -56,8 +56,8 @@ class GetSourceSelectionResultFromInvoice * * @param GetSkuFromOrderItemInterface $getSkuFromOrderItem * @param ItemRequestInterfaceFactory $itemRequestFactory - * @param $stockByWebsiteIdResolver - * @param $inventoryRequestFactory + * @param null $stockByWebsiteIdResolver @deprecated + * @param null $inventoryRequestFactory @deprecated * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder diff --git a/app/code/Magento/InventoryShipping/etc/di.xml b/app/code/Magento/InventoryShipping/etc/di.xml index d19203b41a40..bf575600c911 100644 --- a/app/code/Magento/InventoryShipping/etc/di.xml +++ b/app/code/Magento/InventoryShipping/etc/di.xml @@ -21,6 +21,14 @@ + + + + + + + + diff --git a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php index af857b06a824..43f1b12ca80a 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php +++ b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php @@ -66,9 +66,9 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface * ProcessAlgorithm constructor. * * @param Context $context - * @param $stockByWebsiteIdResolver + * @param null $stockByWebsiteIdResolver @deprecated * @param ItemRequestInterfaceFactory $itemRequestFactory - * @param $inventoryRequestFactory + * @param null $inventoryRequestFactory @deprecated * @param SourceSelectionServiceInterface $sourceSelectionService * @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode * @param SourceRepositoryInterface $sourceRepository diff --git a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php index ddbc3adaba70..32cefe7eb116 100644 --- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php +++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/SourceSelectionDataProvider.php @@ -59,7 +59,7 @@ class SourceSelectionDataProvider extends AbstractDataProvider * @param OrderRepository $orderRepository * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver * @param GetStockItemConfigurationInterface $getStockItemConfiguration - * @param $getSourcesByStockIdSkuAndQty + * @param null $getSourcesByStockIdSkuAndQty @deprecated * @param GetSkuFromOrderItemInterface $getSkuFromOrderItem * @param GetSourcesByOrderIdSkuAndQty $getSourcesByOrderIdSkuAndQty * @param array $meta diff --git a/app/code/Magento/InventoryShippingAdminUi/etc/adminhtml/di.xml b/app/code/Magento/InventoryShippingAdminUi/etc/adminhtml/di.xml index 132a0bbd2689..f2d41f52f6a9 100644 --- a/app/code/Magento/InventoryShippingAdminUi/etc/adminhtml/di.xml +++ b/app/code/Magento/InventoryShippingAdminUi/etc/adminhtml/di.xml @@ -23,4 +23,18 @@ + + + + + + + + + + + + + +