Magento 2 Documentation  2.3
Documentation for Magento 2 CMS v2.3 (December 2018)
SourceItemsConfigurationProcessor.php
Go to the documentation of this file.
1 <?php
6 declare(strict_types=1);
7 
9 
13 use Magento\InventoryLowQuantityNotificationApi\Api\Data\SourceItemConfigurationInterfaceFactory;
17 
22 {
26  private $sourceItemConfigurationFactory;
27 
31  private $sourceItemConfigurationsSave;
32 
36  private $dataObjectHelper;
37 
41  private $sourceItemsConfigurationDelete;
42 
52  public function __construct(
53  SourceItemConfigurationInterfaceFactory $sourceItemConfigurationFactory,
54  SourceItemConfigurationsSaveInterface $sourceItemConfigurationsSave,
55  DeleteSourceItemsConfigurationInterface $sourceItemsConfigurationDelete,
56  DataObjectHelper $dataObjectHelper
57  ) {
58  $this->sourceItemConfigurationsSave = $sourceItemConfigurationsSave;
59  $this->sourceItemConfigurationFactory = $sourceItemConfigurationFactory;
60  $this->dataObjectHelper = $dataObjectHelper;
61  $this->sourceItemsConfigurationDelete = $sourceItemsConfigurationDelete;
62  }
63 
73  public function process($sku, array $sourceItemsData)
74  {
76  foreach ($sourceItemsData as $sourceItemData) {
77  $this->validateSourceItemData($sourceItemData);
78  $sourceItemConfiguration = $this->sourceItemConfigurationFactory->create();
79 
80  if ($sourceItemData['notify_stock_qty_use_default'] == 1) {
81  unset($sourceItemData['notify_stock_qty']);
82  }
83 
84  $sourceItemData[SourceItemInterface::SKU] = $sku;
85  $this->dataObjectHelper->populateWithArray(
86  $sourceItemConfiguration,
87  $sourceItemData,
88  SourceItemConfigurationInterface::class
89  );
90 
91  $sourceItemConfigurations[] = $sourceItemConfiguration;
92  }
93 
94  if (count($sourceItemConfigurations) > 0) {
95  $this->deleteSourceItemsConfiguration($sourceItemConfigurations);
96  $this->sourceItemConfigurationsSave->execute($sourceItemConfigurations);
97  }
98  }
99 
107  private function validateSourceItemData(array $sourceItemData)
108  {
109  if (!isset($sourceItemData[SourceItemInterface::SOURCE_CODE])) {
110  throw new InputException(__('Wrong Product to Source relation parameters given.'));
111  }
112  }
113 
121  private function deleteSourceItemsConfiguration(array $sourceItemsConfigurations)
122  {
124  $this->sourceItemsConfigurationDelete->execute($sourceItemsConfigurations);
125  }
126 }
$sourceItemConfigurationFactory
__()
Definition: __.php:13
$sourceItemConfigurationsSave
__construct(SourceItemConfigurationInterfaceFactory $sourceItemConfigurationFactory, SourceItemConfigurationsSaveInterface $sourceItemConfigurationsSave, DeleteSourceItemsConfigurationInterface $sourceItemsConfigurationDelete, DataObjectHelper $dataObjectHelper)