ShippingAssignmentBuilder.php 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. <?php
  2. /**
  3. * Copyright © Magento, Inc. All rights reserved.
  4. * See COPYING.txt for license details.
  5. */
  6. namespace Magento\Sales\Model\Order;
  7. use Magento\Sales\Api\Data\ShippingAssignmentInterface;
  8. use Magento\Sales\Api\Data\ShippingAssignmentInterfaceFactory;
  9. use Magento\Sales\Model\OrderFactory;
  10. /**
  11. * Class ShippingAssignmentBuilder
  12. * @package Magento\Sales\Model\Order
  13. */
  14. class ShippingAssignmentBuilder
  15. {
  16. /**
  17. * @var OrderFactory
  18. */
  19. private $orderFactory;
  20. /**
  21. * @var ShippingAssignmentInterfaceFactory
  22. */
  23. private $shippingAssignmentFactory;
  24. /**
  25. * @var ShippingBuilderFactory
  26. */
  27. private $shippingBuilderFactory;
  28. /**
  29. * @var int|null
  30. */
  31. private $orderId = null;
  32. /**
  33. * ShippingAssignment constructor.
  34. *
  35. * @param OrderFactory $orderFactory
  36. * @param ShippingAssignmentInterfaceFactory $shippingAssignmentFactory
  37. * @param ShippingBuilderFactory $shippingBuilderFactory
  38. */
  39. public function __construct(
  40. OrderFactory $orderFactory,
  41. ShippingAssignmentInterfaceFactory $shippingAssignmentFactory,
  42. ShippingBuilderFactory $shippingBuilderFactory
  43. ) {
  44. $this->orderFactory = $orderFactory;
  45. $this->shippingAssignmentFactory = $shippingAssignmentFactory;
  46. $this->shippingBuilderFactory = $shippingBuilderFactory;
  47. }
  48. /**
  49. * @param int $orderId
  50. * @return void
  51. */
  52. public function setOrderId($orderId)
  53. {
  54. $this->orderId = $orderId;
  55. }
  56. /**
  57. * @return int|null
  58. */
  59. private function getOrderId()
  60. {
  61. return $this->orderId;
  62. }
  63. /**
  64. * @return ShippingAssignmentInterface[]|null
  65. */
  66. public function create()
  67. {
  68. $shippingAssignments = null;
  69. if ($this->getOrderId()) {
  70. $order = $this->orderFactory->create()->load($this->getOrderId());
  71. /** @var ShippingAssignmentInterface $shippingAssignment */
  72. $shippingAssignment = $this->shippingAssignmentFactory->create();
  73. $shipping = $this->shippingBuilderFactory->create();
  74. $shipping->setOrderId($this->getOrderId());
  75. $shippingAssignment->setShipping($shipping->create());
  76. $shippingAssignment->setItems($order->getItems());
  77. $shippingAssignment->setStockId($order->getStockId());
  78. //for now order has only one shipping assignment
  79. $shippingAssignments = [$shippingAssignment];
  80. }
  81. return $shippingAssignments;
  82. }
  83. }