| Current Path : /home/rtorresani/www/vendor/magento/module-sales/Model/Order/ |
| Current File : //home/rtorresani/www/vendor/magento/module-sales/Model/Order/ShippingAssignmentBuilder.php |
<?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;
}
}