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/InventoryRequestBuilder/FromOrder/DistanceBuilder.php b/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/InventoryRequestBuilder/FromOrder/DistanceBuilder.php
deleted file mode 100644
index 4b61b129e24b..000000000000
--- a/app/code/Magento/InventoryDistanceBasedSourceSelection/Model/InventoryRequestBuilder/FromOrder/DistanceBuilder.php
+++ /dev/null
@@ -1,72 +0,0 @@
-inventoryRequestFactory = $inventoryRequestFactory;
- $this->getAddressFromOrder = $getAddressFromOrder;
- $this->inventoryRequestExtensionInterfaceFactory = $inventoryRequestExtensionInterfaceFactory;
- }
-
- /**
- * @inheritdoc
- */
- public function execute(int $stockId, int $orderId, array $requestItems): InventoryRequestInterface
- {
- $address = $this->getAddressFromOrder->execute($orderId);
-
- $inventoryRequest = $this->inventoryRequestFactory->create([
- 'stockId' => $stockId,
- 'items' => $requestItems
- ]);
-
- $extensionAttributes = $this->inventoryRequestExtensionInterfaceFactory->create();
- $extensionAttributes->setDestinationAddress($address);
- $inventoryRequest->setExtensionAttributes($extensionAttributes);
-
- return $inventoryRequest;
- }
-}
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/composer.json b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json
index 945ebfbe7fc7..75238bb167a0 100644
--- a/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json
+++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/composer.json
@@ -6,10 +6,8 @@
"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": "*"
+ "magento/module-config": "*"
},
"type": "magento2-module",
"license": [
diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml
index 9439c8ae84c4..62afa6d97a53 100644
--- a/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml
+++ b/app/code/Magento/InventoryDistanceBasedSourceSelection/etc/di.xml
@@ -9,12 +9,10 @@
xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
-
-
+
-
-
-
- - Magento\InventoryDistanceBasedSourceSelection\Model\InventoryRequestBuilder\FromOrder\DistanceBuilder
-
-
-
-
diff --git a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php
index 1529c239081f..d2f5589d2fd1 100644
--- a/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php
+++ b/app/code/Magento/InventoryDistanceBasedSourceSelectionApi/Api/GetLatLngFromAddressInterface.php
@@ -15,12 +15,12 @@
interface GetLatLngFromAddressInterface
{
/**
- * Get latitude and longitude object from source
+ * Get latitude and longitude object from address
*
- * @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/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": [
diff --git a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php
index 0241b559f12f..21b3b47a053a 100644
--- a/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php
+++ b/app/code/Magento/InventoryShipping/Model/GetSourceSelectionResultFromInvoice.php
@@ -9,10 +9,7 @@
use Magento\Framework\App\ObjectManager;
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;
@@ -24,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
{
@@ -39,11 +36,6 @@ class GetSourceSelectionResultFromInvoice
*/
private $itemRequestFactory;
- /**
- * @var StockByWebsiteIdResolverInterface
- */
- private $stockByWebsiteIdResolver;
-
/**
* @var GetDefaultSourceSelectionAlgorithmCodeInterface
*/
@@ -55,38 +47,37 @@ class GetSourceSelectionResultFromInvoice
private $sourceSelectionService;
/**
- * @var GetInventoryRequestFromOrderBuilder
+ * @var GetInventoryRequestFromOrder
*/
- private $getInventoryRequestFromOrderBuilder;
+ private $getInventoryRequestFromOrder;
/**
* GetSourceSelectionResultFromInvoice constructor.
*
* @param GetSkuFromOrderItemInterface $getSkuFromOrderItem
* @param ItemRequestInterfaceFactory $itemRequestFactory
- * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver
- * @param InventoryRequestInterfaceFactory $inventoryRequestFactory
+ * @param null $stockByWebsiteIdResolver @deprecated
+ * @param null $inventoryRequestFactory @deprecated
* @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode
* @param SourceSelectionServiceInterface $sourceSelectionService
- * @param GetInventoryRequestFromOrderBuilder|null $getInventoryRequestFromOrderBuilder
+ * @param GetInventoryRequestFromOrder|null $getInventoryRequestFromOrder
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function __construct(
GetSkuFromOrderItemInterface $getSkuFromOrderItem,
ItemRequestInterfaceFactory $itemRequestFactory,
- StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver,
- InventoryRequestInterfaceFactory $inventoryRequestFactory,
+ $stockByWebsiteIdResolver,
+ $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,20 +85,12 @@ public function __construct(
*
* @param InvoiceInterface $invoice
* @return SourceSelectionResultInterface
- * @throws UndefinedInventoryRequestBuilderException
*/
public function execute(InvoiceInterface $invoice): SourceSelectionResultInterface
{
/** @var OrderInterface $order */
$order = $invoice->getOrder();
- $websiteId = (int) $order->getStore()->getWebsiteId();
- $stockId = (int) $this->stockByWebsiteIdResolver->execute($websiteId)->getStockId();
-
- $selectionAlgorithmCode = $this->getDefaultSourceSelectionAlgorithmCode->execute();
- $inventoryRequestBuilder = $this->getInventoryRequestFromOrderBuilder->execute($selectionAlgorithmCode);
-
- $inventoryRequest = $inventoryRequestBuilder->execute(
- $stockId,
+ $inventoryRequest = $this->getInventoryRequestFromOrder->execute(
(int) $order->getEntityId(),
$this->getSelectionRequestItems($invoice->getItems())
);
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 1b3d84aadc6f..43f1b12ca80a 100644
--- a/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php
+++ b/app/code/Magento/InventoryShippingAdminUi/Controller/Adminhtml/SourceSelection/ProcessAlgorithm.php
@@ -15,14 +15,12 @@
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\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
@@ -49,16 +47,6 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface
*/
private $sourceRepository;
- /**
- * @var StockByWebsiteIdResolverInterface
- */
- private $stockByWebsiteIdResolver;
-
- /**
- * @var GetInventoryRequestFromOrderBuilder
- */
- private $getInventoryRequestFromOrderBuilder;
-
/**
* @var ItemRequestInterfaceFactory
*/
@@ -69,36 +57,41 @@ class ProcessAlgorithm extends Action implements HttpPostActionInterface
*/
private $sources = [];
+ /**
+ * @var GetInventoryRequestFromOrder
+ */
+ private $getInventoryRequestFromOrder;
+
/**
* ProcessAlgorithm constructor.
*
* @param Context $context
- * @param StockByWebsiteIdResolverInterface $stockByWebsiteIdResolver
+ * @param null $stockByWebsiteIdResolver @deprecated
* @param ItemRequestInterfaceFactory $itemRequestFactory
- * @param InventoryRequestInterfaceFactory $inventoryRequestFactory
+ * @param null $inventoryRequestFactory @deprecated
* @param SourceSelectionServiceInterface $sourceSelectionService
* @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode
* @param SourceRepositoryInterface $sourceRepository
- * @param GetInventoryRequestFromOrderBuilder|null $getInventoryRequestFromOrderBuilder
+ * @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,
- GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder = null
+ GetInventoryRequestFromOrder $getInventoryRequestFromOrder = null
) {
parent::__construct($context);
$this->sourceSelectionService = $sourceSelectionService;
$this->getDefaultSourceSelectionAlgorithmCode = $getDefaultSourceSelectionAlgorithmCode;
$this->sourceRepository = $sourceRepository;
- $this->stockByWebsiteIdResolver = $stockByWebsiteIdResolver;
$this->itemRequestFactory = $itemRequestFactory;
- $this->getInventoryRequestFromOrderBuilder = $getInventoryRequestFromOrderBuilder ?:
- ObjectManager::getInstance()->get(GetInventoryRequestFromOrderBuilder::class);
+ $this->getInventoryRequestFromOrder = $getInventoryRequestFromOrder ?:
+ ObjectManager::getInstance()->get(GetInventoryRequestFromOrder::class);
}
/**
@@ -123,7 +116,6 @@ private function getRequestItems(array $requestData): array
/**
* @inheritdoc
* @throws NoSuchEntityException
- * @throws UndefinedInventoryRequestBuilderException
*/
public function execute(): ResultInterface
{
@@ -137,16 +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);
- $inventoryRequestBuilder = $this->getInventoryRequestFromOrderBuilder->execute($algorithmCode);
- $inventoryRequest = $inventoryRequestBuilder->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 76%
rename from app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php
rename to app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php
index 1e130712c214..358820e9f2f4 100644
--- a/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdStockIdSkuAndQty.php
+++ b/app/code/Magento/InventoryShippingAdminUi/Ui/DataProvider/GetSourcesByOrderIdSkuAndQty.php
@@ -8,18 +8,16 @@
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;
use Magento\InventoryApi\Api\SourceRepositoryInterface;
/**
- * Class GetSourcesByOrderIdStockIdSkuAndQty
- * @package Magento\InventoryShippingAdminUi\Ui\DataProvider
+ * Class GetSourcesByOrderIdSkuAndQty
*/
-class GetSourcesByOrderIdStockIdSkuAndQty
+class GetSourcesByOrderIdSkuAndQty
{
/**
* @var ItemRequestInterfaceFactory
@@ -42,9 +40,9 @@ class GetSourcesByOrderIdStockIdSkuAndQty
private $sourceRepository;
/**
- * @var GetInventoryRequestFromOrderBuilder
+ * @var GetInventoryRequestFromOrder
*/
- private $getInventoryRequestFromOrderBuilder;
+ private $getInventoryRequestFromOrder;
/**
* @var array
@@ -52,12 +50,10 @@ class GetSourcesByOrderIdStockIdSkuAndQty
private $sources = [];
/**
- * GetSourcesByStockIdSkuAndQty constructor.
- *
* @param ItemRequestInterfaceFactory $itemRequestFactory
* @param SourceSelectionServiceInterface $sourceSelectionService
* @param GetDefaultSourceSelectionAlgorithmCodeInterface $getDefaultSourceSelectionAlgorithmCode
- * @param GetInventoryRequestFromOrderBuilder $getInventoryRequestFromOrderBuilder
+ * @param GetInventoryRequestFromOrder $getInventoryRequestFromOrder
* @param SourceRepositoryInterface $sourceRepository
* @SuppressWarnings(PHPMD.LongVariable)
*/
@@ -65,29 +61,27 @@ 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;
}
/**
- * 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
- * @throws UndefinedInventoryRequestBuilderException
* @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();
@@ -96,9 +90,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($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..32cefe7eb116 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 null $getSourcesByStockIdSkuAndQty @deprecated
* @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/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 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
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/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..30e7d66b5149 100644
--- a/app/code/Magento/InventorySourceSelection/etc/di.xml
+++ b/app/code/Magento/InventorySourceSelection/etc/di.xml
@@ -17,12 +17,12 @@
type="Magento\InventorySourceSelection\Model\Result\SourceSelectionItem"/>
-
+
-
+
-
-
-
-
- - Magento\InventorySourceSelection\Model\InventoryRequestBuilder\FromOrder\DefaultBuilder
-
-
-
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/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 @@
-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
new file mode 100644
index 000000000000..c378eb28b0ac
--- /dev/null
+++ b/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrder.php
@@ -0,0 +1,127 @@
+inventoryRequestFactory = $inventoryRequestFactory;
+ $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 $orderId, array $requestItems): InventoryRequestInterface
+ {
+ /** @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' => $stock->getStockId(),
+ 'items' => $requestItems
+ ]);
+
+ $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/Model/GetInventoryRequestFromOrderBuilder.php b/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrderBuilder.php
deleted file mode 100644
index 68b94057471c..000000000000
--- a/app/code/Magento/InventorySourceSelectionApi/Model/GetInventoryRequestFromOrderBuilder.php
+++ /dev/null
@@ -1,61 +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 @@
-
+