Skip to content

Commit e676db3

Browse files
committed
Adapt current logic of Product Qty Update on the Product Form in admin panel to save data in default Source magento#169
1 parent 5e692c8 commit e676db3

File tree

1 file changed

+55
-3
lines changed

1 file changed

+55
-3
lines changed

app/code/Magento/InventoryCatalog/Observer/ProcessSourceItemsObserver.php

+55-3
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,18 @@
33
* Copyright © Magento, Inc. All rights reserved.
44
* See COPYING.txt for license details.
55
*/
6+
declare(strict_types=1);
7+
68
namespace Magento\InventoryCatalog\Observer;
79

810
use Magento\Catalog\Api\Data\ProductInterface;
911
use Magento\Catalog\Controller\Adminhtml\Product\Save;
1012
use Magento\Framework\Event\ObserverInterface;
1113
use Magento\Framework\Event\Observer as EventObserver;
14+
use Magento\InventoryApi\Api\Data\SourceItemInterface;
15+
use Magento\InventoryApi\Api\SourceItemsSaveInterface;
16+
use Magento\InventoryCatalog\Api\DefaultSourceProviderInterface;
17+
use Magento\InventoryApi\Api\Data\SourceItemInterfaceFactory;
1218

1319
/**
1420
* Save source product relations during product persistence via controller
@@ -21,14 +27,36 @@ class ProcessSourceItemsObserver implements ObserverInterface
2127
/**
2228
* @var SourceItemsProcessor
2329
*/
24-
private $sourceItemsProcessor;
30+
protected $sourceItemsProcessor;
31+
/**
32+
* @var DefaultSourceProviderInterface
33+
*/
34+
protected $defaultSourceProvider;
35+
/**
36+
* @var SourceItemInterfaceFactory
37+
*/
38+
protected $sourceItemInterfaceFactory;
39+
/**
40+
* @var SourceItemsSaveInterface
41+
*/
42+
protected $sourceItemsSave;
2543

2644
/**
2745
* @param SourceItemsProcessor $sourceItemsProcessor
46+
* @param DefaultSourceProviderInterface $defaultSourceProvider
47+
* @param SourceItemInterfaceFactory $sourceItemInterfaceFactory
48+
* @param SourceItemsSaveInterface $sourceItemsSave
2849
*/
29-
public function __construct(SourceItemsProcessor $sourceItemsProcessor)
30-
{
50+
public function __construct(
51+
SourceItemsProcessor $sourceItemsProcessor,
52+
DefaultSourceProviderInterface $defaultSourceProvider,
53+
SourceItemInterfaceFactory $sourceItemInterfaceFactory,
54+
SourceItemsSaveInterface $sourceItemsSave
55+
) {
3156
$this->sourceItemsProcessor = $sourceItemsProcessor;
57+
$this->defaultSourceProvider = $defaultSourceProvider;
58+
$this->sourceItemInterfaceFactory = $sourceItemInterfaceFactory;
59+
$this->sourceItemsSave = $sourceItemsSave;
3260
}
3361

3462
/**
@@ -53,5 +81,29 @@ public function execute(EventObserver $observer)
5381
$product->getSku(),
5482
$assignedSources
5583
);
84+
85+
$this->updateDefaultSourceQty($controller);
86+
}
87+
88+
/**
89+
* @param $controller Save
90+
*/
91+
public function updateDefaultSourceQty($controller)
92+
{
93+
/** @var $sourceItem SourceItemInterface */
94+
$sourceItem = $this->sourceItemInterfaceFactory->create();
95+
$productParams = $controller->getRequest()->getParam('product');
96+
97+
$sku = $productParams['sku'];
98+
$sourceItem->setSku($sku);
99+
$qtyAndStockStatus = $productParams['quantity_and_stock_status'];
100+
$qty = $qtyAndStockStatus['qty'];
101+
$sourceItem->setQuantity($qty);
102+
$stockStatus = $qtyAndStockStatus['is_in_stock'];
103+
$sourceItem->setStatus($stockStatus);
104+
$defaultSourceId = $this->defaultSourceProvider->getId();
105+
$sourceItem->setSourceId($defaultSourceId);
106+
107+
$this->sourceItemsSave->execute([$sourceItem]);
56108
}
57109
}

0 commit comments

Comments
 (0)