123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- <?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;
- }
- }
|