ShipmentProvider.php 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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\InventoryShippingAdminUi\Model;
  8. use Magento\Shipping\Model\ShipmentProviderInterface;
  9. use Magento\Framework\App\RequestInterface;
  10. class ShipmentProvider implements ShipmentProviderInterface
  11. {
  12. /**
  13. * @var RequestInterface
  14. */
  15. private $request;
  16. /**
  17. * @param RequestInterface $request
  18. */
  19. public function __construct(
  20. RequestInterface $request
  21. ) {
  22. $this->request = $request;
  23. }
  24. /**
  25. * @inheritdoc
  26. */
  27. public function getShipmentData(): array
  28. {
  29. $sourceCode = $this->request->getParam('sourceCode');
  30. $items = $this->request->getParam('items', []);
  31. $shipmentItems = [];
  32. foreach ($items as $item) {
  33. if (empty($item['sources'])) {
  34. continue;
  35. }
  36. $orderItemId = $item['orderItemId'];
  37. foreach ($item['sources'] as $source) {
  38. if ($source['sourceCode'] == $sourceCode) {
  39. $qty = ($shipmentItems[$orderItemId] ?? 0) + (float)$source['qtyToDeduct'];
  40. $shipmentItems['items'][$orderItemId] = $qty;
  41. }
  42. }
  43. }
  44. return count($shipmentItems) > 0 ? $shipmentItems : [];
  45. }
  46. }