| Current Path : /var/www/www.indacotrentino.com/www/vendor/magento/module-tax/Model/Quote/ |
| Current File : /var/www/www.indacotrentino.com/www/vendor/magento/module-tax/Model/Quote/ToOrderConverter.php |
<?php
/**
* Copyright © Magento, Inc. All rights reserved.
* See COPYING.txt for license details.
*/
namespace Magento\Tax\Model\Quote;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\Quote\Model\Quote\Address\ToOrder as QuoteAddressToOrder;
use Magento\Quote\Model\Quote\Address as QuoteAddress;
class ToOrderConverter
{
/**
* @var QuoteAddress
*/
protected $quoteAddress;
/**
* @var \Magento\Sales\Api\Data\OrderExtensionFactory
*/
protected $orderExtensionFactory;
/**
* @param \Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory
*/
public function __construct(
\Magento\Sales\Api\Data\OrderExtensionFactory $orderExtensionFactory
) {
$this->orderExtensionFactory = $orderExtensionFactory;
}
/**
* @param QuoteAddressToOrder $subject
* @param QuoteAddress $address
* @param array $additional
* @return array
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function beforeConvert(QuoteAddressToOrder $subject, QuoteAddress $address, $additional = [])
{
$this->quoteAddress = $address;
return [$address, $additional];
}
/**
* @param QuoteAddressToOrder $subject
* @param OrderInterface $order
* @return OrderInterface
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
public function afterConvert(QuoteAddressToOrder $subject, OrderInterface $order)
{
/** @var \Magento\Sales\Model\Order $order */
$taxes = $this->quoteAddress->getAppliedTaxes();
$extensionAttributes = $order->getExtensionAttributes();
if ($extensionAttributes == null) {
$extensionAttributes = $this->orderExtensionFactory->create();
}
if (!empty($taxes)) {
foreach ($taxes as $key => $tax) {
$tax['extension_attributes']['rates'] = $tax['rates'];
unset($tax['rates']);
$taxes[$key] = $tax;
}
$extensionAttributes->setAppliedTaxes($taxes);
$extensionAttributes->setConvertingFromQuote(true);
}
$itemAppliedTaxes = $this->quoteAddress->getItemsAppliedTaxes();
$itemAppliedTaxesModified = [];
if (!empty($itemAppliedTaxes)) {
foreach ($itemAppliedTaxes as $key => $itemAppliedTaxItem) {
if (is_array($itemAppliedTaxItem) && !empty($itemAppliedTaxItem)) {
foreach ($itemAppliedTaxItem as $itemAppliedTax) {
$itemAppliedTaxesModified[$key]['type'] = $itemAppliedTax['item_type'];
$itemAppliedTaxesModified[$key]['item_id'] = $itemAppliedTax['item_id'];
$itemAppliedTaxesModified[$key]['associated_item_id'] = $itemAppliedTax['associated_item_id'];
$itemAppliedTax['extension_attributes']['rates'] = $itemAppliedTax['rates'];
unset($itemAppliedTax['rates']);
$itemAppliedTaxesModified[$key]['applied_taxes'][] = $itemAppliedTax;
}
}
}
$extensionAttributes->setItemAppliedTaxes($itemAppliedTaxesModified);
}
$order->setExtensionAttributes($extensionAttributes);
return $order;
}
}