123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Sales\Model\Order;
- use Magento\Sales\Api\Data\ShippingAssignmentInterface;
- use Magento\Sales\Api\Data\ShippingAssignmentInterfaceFactory;
- use Magento\Sales\Model\OrderFactory;
- /**
- * Class ShippingAssignmentBuilder
- * @package Magento\Sales\Model\Order
- */
- class ShippingAssignmentBuilder
- {
- /**
- * @var OrderFactory
- */
- private $orderFactory;
- /**
- * @var ShippingAssignmentInterfaceFactory
- */
- private $shippingAssignmentFactory;
- /**
- * @var ShippingBuilderFactory
- */
- private $shippingBuilderFactory;
- /**
- * @var int|null
- */
- private $orderId = null;
- /**
- * ShippingAssignment constructor.
- *
- * @param OrderFactory $orderFactory
- * @param ShippingAssignmentInterfaceFactory $shippingAssignmentFactory
- * @param ShippingBuilderFactory $shippingBuilderFactory
- */
- public function __construct(
- OrderFactory $orderFactory,
- ShippingAssignmentInterfaceFactory $shippingAssignmentFactory,
- ShippingBuilderFactory $shippingBuilderFactory
- ) {
- $this->orderFactory = $orderFactory;
- $this->shippingAssignmentFactory = $shippingAssignmentFactory;
- $this->shippingBuilderFactory = $shippingBuilderFactory;
- }
- /**
- * @param int $orderId
- * @return void
- */
- public function setOrderId($orderId)
- {
- $this->orderId = $orderId;
- }
- /**
- * @return int|null
- */
- private function getOrderId()
- {
- return $this->orderId;
- }
- /**
- * @return ShippingAssignmentInterface[]|null
- */
- public function create()
- {
- $shippingAssignments = null;
- if ($this->getOrderId()) {
- $order = $this->orderFactory->create()->load($this->getOrderId());
- /** @var ShippingAssignmentInterface $shippingAssignment */
- $shippingAssignment = $this->shippingAssignmentFactory->create();
- $shipping = $this->shippingBuilderFactory->create();
- $shipping->setOrderId($this->getOrderId());
- $shippingAssignment->setShipping($shipping->create());
- $shippingAssignment->setItems($order->getItems());
- $shippingAssignment->setStockId($order->getStockId());
- //for now order has only one shipping assignment
- $shippingAssignments = [$shippingAssignment];
- }
- return $shippingAssignments;
- }
- }
|