source_items.php 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. use Magento\Framework\Api\DataObjectHelper;
  8. use Magento\InventoryApi\Api\Data\SourceItemInterface;
  9. use Magento\InventoryApi\Api\Data\SourceItemInterfaceFactory;
  10. use Magento\InventoryApi\Api\SourceItemsSaveInterface;
  11. use Magento\TestFramework\Helper\Bootstrap;
  12. /** @var DataObjectHelper $dataObjectHelper */
  13. $dataObjectHelper = Bootstrap::getObjectManager()->get(DataObjectHelper::class);
  14. /** @var SourceItemInterfaceFactory $sourceItemFactory */
  15. $sourceItemFactory = Bootstrap::getObjectManager()->get(SourceItemInterfaceFactory::class);
  16. /** @var SourceItemsSaveInterface $sourceItemsSave */
  17. $sourceItemsSave = Bootstrap::getObjectManager()->get(SourceItemsSaveInterface::class);
  18. /**
  19. * SKU-1 - EU-source-1(id:10) - 5.5qty
  20. * SKU-1 - EU-source-2(id:20) - 3qty
  21. * SKU-1 - EU-source-3(id:30) - 10qty (out of stock)
  22. * SKU-1 - EU-source-4(id:40) - 10qty (disabled source)
  23. *
  24. * SKU-2 - US-source-1(id:30) - 5qty
  25. *
  26. * SKU-3 - EU-source-2(id:20) - 6qty (out of stock)
  27. */
  28. $sourcesItemsData = [
  29. [
  30. SourceItemInterface::SOURCE_CODE => 'eu-1',
  31. SourceItemInterface::SKU => 'SKU-1',
  32. SourceItemInterface::QUANTITY => 5.5,
  33. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  34. ],
  35. [
  36. SourceItemInterface::SOURCE_CODE => 'eu-2',
  37. SourceItemInterface::SKU => 'SKU-1',
  38. SourceItemInterface::QUANTITY => 3,
  39. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  40. ],
  41. [
  42. SourceItemInterface::SOURCE_CODE => 'eu-3',
  43. SourceItemInterface::SKU => 'SKU-1',
  44. SourceItemInterface::QUANTITY => 10,
  45. SourceItemInterface::STATUS => SourceItemInterface::STATUS_OUT_OF_STOCK,
  46. ],
  47. [
  48. SourceItemInterface::SOURCE_CODE => 'eu-disabled',
  49. SourceItemInterface::SKU => 'SKU-1',
  50. SourceItemInterface::QUANTITY => 10,
  51. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  52. ],
  53. [
  54. SourceItemInterface::SOURCE_CODE => 'us-1',
  55. SourceItemInterface::SKU => 'SKU-2',
  56. SourceItemInterface::QUANTITY => 5,
  57. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  58. ],
  59. [
  60. SourceItemInterface::SOURCE_CODE => 'eu-2',
  61. SourceItemInterface::SKU => 'SKU-3',
  62. SourceItemInterface::QUANTITY => 6,
  63. SourceItemInterface::STATUS => SourceItemInterface::STATUS_OUT_OF_STOCK,
  64. ],
  65. [
  66. SourceItemInterface::SOURCE_CODE => 'eu-2',
  67. SourceItemInterface::SKU => 'SKU-4',
  68. SourceItemInterface::QUANTITY => 6,
  69. SourceItemInterface::STATUS => SourceItemInterface::STATUS_IN_STOCK,
  70. ],
  71. ];
  72. $sourceItems = [];
  73. foreach ($sourcesItemsData as $sourceItemData) {
  74. /** @var SourceItemInterface $source */
  75. $sourceItem = $sourceItemFactory->create();
  76. $dataObjectHelper->populateWithArray($sourceItem, $sourceItemData, SourceItemInterface::class);
  77. $sourceItems[] = $sourceItem;
  78. }
  79. $sourceItemsSave->execute($sourceItems);