InventoryRequest.php 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. declare(strict_types=1);
  7. namespace Magento\InventorySourceSelection\Model\Request;
  8. use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestExtensionInterface;
  9. use Magento\InventorySourceSelectionApi\Api\Data\InventoryRequestInterface;
  10. use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterface;
  11. use Magento\InventorySourceSelectionApi\Api\Data\ItemRequestInterfaceFactory;
  12. use Magento\Framework\Model\AbstractExtensibleModel;
  13. /**
  14. * @inheritdoc
  15. */
  16. class InventoryRequest extends AbstractExtensibleModel implements InventoryRequestInterface
  17. {
  18. /**
  19. * @var int
  20. */
  21. private $stockId;
  22. /**
  23. * @var ItemRequestInterface[]
  24. */
  25. private $items;
  26. /**
  27. * @var ItemRequestInterfaceFactory
  28. */
  29. private $itemRequestFactory;
  30. /**
  31. * InventoryRequest constructor.
  32. *
  33. * @param \Magento\Framework\Model\Context $context
  34. * @param \Magento\Framework\Registry $registry
  35. * @param \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory
  36. * @param \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory
  37. * @param ItemRequestInterfaceFactory $itemRequestFactory
  38. * @param int $stockId
  39. * @param ItemRequestInterface[] $items
  40. * @param \Magento\Framework\Model\ResourceModel\AbstractResource|null $resource
  41. * @param \Magento\Framework\Data\Collection\AbstractDb|null $resourceCollection
  42. * @param array $data
  43. * @SuppressWarnings(PHPMD.ExcessiveParameterList)
  44. */
  45. public function __construct(
  46. \Magento\Framework\Model\Context $context,
  47. \Magento\Framework\Registry $registry,
  48. \Magento\Framework\Api\ExtensionAttributesFactory $extensionFactory,
  49. \Magento\Framework\Api\AttributeValueFactory $customAttributeFactory,
  50. ItemRequestInterfaceFactory $itemRequestFactory,
  51. int $stockId,
  52. array $items,
  53. \Magento\Framework\Model\ResourceModel\AbstractResource $resource = null,
  54. \Magento\Framework\Data\Collection\AbstractDb $resourceCollection = null,
  55. array $data = []
  56. ) {
  57. parent::__construct(
  58. $context,
  59. $registry,
  60. $extensionFactory,
  61. $customAttributeFactory,
  62. $resource,
  63. $resourceCollection,
  64. $data
  65. );
  66. $this->itemRequestFactory = $itemRequestFactory;
  67. $this->stockId = $stockId;
  68. //TODO: Temporary fix for resolving issue with webApi (https://github.com/magento-engcom/msi/issues/1524)
  69. foreach ($items as $item) {
  70. if (false === $item instanceof ItemRequestInterface) {
  71. $this->items[] = $this->itemRequestFactory->create([
  72. 'sku' => $item['sku'],
  73. 'qty' => $item['qty']
  74. ]);
  75. } else {
  76. $this->items[] = $item;
  77. }
  78. }
  79. }
  80. /**
  81. * @inheritdoc
  82. */
  83. public function getStockId(): int
  84. {
  85. return $this->stockId;
  86. }
  87. /**
  88. * @inheritdoc
  89. */
  90. public function getItems(): array
  91. {
  92. return $this->items;
  93. }
  94. /**
  95. * @inheritdoc
  96. */
  97. public function setStockId(int $stockId): void
  98. {
  99. $this->stockId = $stockId;
  100. }
  101. /**
  102. * @inheritdoc
  103. */
  104. public function setItems(array $items): void
  105. {
  106. $this->items = $items;
  107. }
  108. /**
  109. * @inheritdoc
  110. */
  111. public function getExtensionAttributes(): ?InventoryRequestExtensionInterface
  112. {
  113. $extensionAttributes = $this->_getExtensionAttributes();
  114. if (null === $extensionAttributes) {
  115. $extensionAttributes = $this->extensionAttributesFactory->create(InventoryRequestInterface::class);
  116. $this->setExtensionAttributes($extensionAttributes);
  117. }
  118. return $extensionAttributes;
  119. }
  120. /**
  121. * @inheritdoc
  122. */
  123. public function setExtensionAttributes(InventoryRequestExtensionInterface $extensionAttributes): void
  124. {
  125. $this->_setExtensionAttributes($extensionAttributes);
  126. }
  127. }