mirror of
https://github.com/bdnugget/magento2.git
synced 2026-11-07 09:17:35 +00:00
64 lines
2.2 KiB
PHP
64 lines
2.2 KiB
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);
|
|
}
|
|
}
|