| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-quote/Model/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-quote/Model/ShippingAddressAssignment.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Quote\Model;
class ShippingAddressAssignment
{
/**
* @var \Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentProcessor
*/
private $shippingAssignmentProcessor;
/**
* @var \Magento\Quote\Api\Data\CartExtensionFactory
*/
private $cartExtensionFactory;
/**
* ShippingAddressAssignment constructor.
* @param \Magento\Quote\Api\Data\CartExtensionFactory $cartExtensionFactory
* @param Quote\ShippingAssignment\ShippingAssignmentProcessor $shippingAssignmentProcessor
*/
public function __construct(
\Magento\Quote\Api\Data\CartExtensionFactory $cartExtensionFactory,
\Magento\Quote\Model\Quote\ShippingAssignment\ShippingAssignmentProcessor $shippingAssignmentProcessor
) {
$this->shippingAssignmentProcessor = $shippingAssignmentProcessor;
$this->cartExtensionFactory = $cartExtensionFactory;
}
/**
* @param \Magento\Quote\Api\Data\CartInterface $quote
* @param \Magento\Quote\Api\Data\AddressInterface $address
* @param bool $useForShipping
* @return void
*/
public function setAddress(
\Magento\Quote\Api\Data\CartInterface $quote,
\Magento\Quote\Api\Data\AddressInterface $address,
$useForShipping = false
) {
if ($useForShipping) {
$quote->removeAddress($quote->getShippingAddress()->getId());
$address->setSameAsBilling(1);
$address->setCollectShippingRates(true);
} else {
$address = $quote->getShippingAddress()->setSameAsBilling(0);
}
$quote->setShippingAddress($address);
$cartExtension = $quote->getExtensionAttributes();
if ($cartExtension === null) {
$cartExtension = $this->cartExtensionFactory->create();
}
/** @var \Magento\Quote\Api\Data\ShippingAssignmentInterface $shippingAssignment */
$shippingAssignment = $this->shippingAssignmentProcessor->create($quote);
$cartExtension->setShippingAssignments([$shippingAssignment]);
$quote->setExtensionAttributes($cartExtension);
}
}