Skip to content

Commit 3fd8c4b

Browse files
committed
ACP2E-2483: [QUANS]Create Order using Rest API with item_applied_taxes
1 parent ad34f12 commit 3fd8c4b

File tree

14 files changed

+528
-183
lines changed

14 files changed

+528
-183
lines changed

app/code/Magento/Sales/Model/Data/Order/Tax.php

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -205,22 +205,6 @@ public function setProcess($process)
205205
return $this->setData(self::PROCESS, $process);
206206
}
207207

208-
/**
209-
* @inheritDoc
210-
*/
211-
public function getItems()
212-
{
213-
return $this->getData(self::ITEMS) ?? [];
214-
}
215-
216-
/**
217-
* @inheritDoc
218-
*/
219-
public function setItems($items)
220-
{
221-
return $this->setData(self::ITEMS, $items);
222-
}
223-
224208
/**
225209
* @inheritDoc
226210
*/

app/code/Magento/Sales/Model/Data/Order/Tax/Item.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,22 @@ public function setItemId($itemId)
7777
return $this->setData(self::ITEM_ID, $itemId);
7878
}
7979

80+
/**
81+
* @inheritDoc
82+
*/
83+
public function getTaxCode()
84+
{
85+
return $this->getData(self::TAX_CODE);
86+
}
87+
88+
/**
89+
* @inheritDoc
90+
*/
91+
public function setTaxCode($taxCode)
92+
{
93+
return $this->setData(self::TAX_CODE, $taxCode);
94+
}
95+
8096
/**
8197
* @inheritDoc
8298
*/

app/code/Magento/Tax/Api/Data/OrderTaxInterface.php

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -200,21 +200,6 @@ public function getProcess();
200200
*/
201201
public function setProcess($process);
202202

203-
/**
204-
* Get tax items.
205-
*
206-
* @return \Magento\Tax\Api\Data\OrderTaxItemInterface[] Array of items.
207-
*/
208-
public function getItems();
209-
210-
/**
211-
* Set tax items.
212-
*
213-
* @param \Magento\Tax\Api\Data\OrderTaxItemInterface[] $items
214-
* @return $this
215-
*/
216-
public function setItems($items);
217-
218203
/**
219204
* Get extension attributes object
220205
*

app/code/Magento/Tax/Api/Data/OrderTaxItemInterface.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ interface OrderTaxItemInterface extends ExtensibleDataInterface
2626
public const TAX_ID = 'tax_id';
2727
public const ITEM_ID = 'item_id';
2828
public const TAX_PERCENT = 'tax_percent';
29+
public const TAX_CODE = 'tax_code';
2930
public const AMOUNT = 'amount';
3031
public const BASE_AMOUNT = 'base_amount';
3132
public const REAL_AMOUNT = 'real_amount';
@@ -78,6 +79,21 @@ public function getItemId();
7879
*/
7980
public function setItemId($itemId);
8081

82+
/**
83+
* Get tax code
84+
*
85+
* @return string|null
86+
*/
87+
public function getTaxCode();
88+
89+
/**
90+
* Set tax code
91+
*
92+
* @param string $taxCode
93+
* @return $this
94+
*/
95+
public function setTaxCode($taxCode);
96+
8197
/**
8298
* Get tax percent
8399
*
Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
<?php
2+
/************************************************************************
3+
*
4+
* Copyright 2023 Adobe
5+
* All Rights Reserved.
6+
*
7+
* NOTICE: All information contained herein is, and remains
8+
* the property of Adobe and its suppliers, if any. The intellectual
9+
* and technical concepts contained herein are proprietary to Adobe
10+
* and its suppliers and are protected by all applicable intellectual
11+
* property laws, including trade secret and copyright laws.
12+
* Dissemination of this information or reproduction of this material
13+
* is strictly forbidden unless prior written permission is obtained
14+
* from Adobe.
15+
* ************************************************************************
16+
*/
17+
declare(strict_types=1);
18+
19+
namespace Magento\Tax\Model\Api\Data;
20+
21+
use Magento\Sales\Model\Order\Tax;
22+
use Magento\Sales\Model\Order\Tax\Item;
23+
use Magento\Sales\Model\Order\Tax\ItemFactory;
24+
use Magento\Sales\Model\Order\TaxFactory;
25+
use Magento\Tax\Api\Data\OrderTaxInterface;
26+
use Magento\Tax\Api\Data\OrderTaxInterfaceFactory;
27+
use Magento\Tax\Api\Data\OrderTaxItemInterface;
28+
use Magento\Tax\Api\Data\OrderTaxItemInterfaceFactory;
29+
30+
class Converter
31+
{
32+
/**
33+
* @param TaxFactory $taxModelFactory
34+
* @param ItemFactory $taxItemModelFactory
35+
* @param OrderTaxInterfaceFactory $orderTaxFactory
36+
* @param OrderTaxItemInterfaceFactory $orderTaxItemFactory
37+
*/
38+
public function __construct(
39+
private readonly TaxFactory $taxModelFactory,
40+
private readonly ItemFactory $taxItemModelFactory,
41+
private readonly OrderTaxInterfaceFactory $orderTaxFactory,
42+
private readonly OrderTaxItemInterfaceFactory $orderTaxItemFactory
43+
) {
44+
}
45+
46+
/**
47+
* Create tax data model
48+
*
49+
* @return OrderTaxInterface
50+
*/
51+
public function createTaxDataModel(): OrderTaxInterface
52+
{
53+
return $this->orderTaxFactory->create();
54+
}
55+
56+
/**
57+
* Create tax item data model
58+
*
59+
* @return OrderTaxItemInterface
60+
*/
61+
public function createTaxItemDataModel(): OrderTaxItemInterface
62+
{
63+
return $this->orderTaxItemFactory->create();
64+
}
65+
66+
/**
67+
* Create tax model
68+
*
69+
* @return Tax
70+
*/
71+
public function createTaxModel(): Tax
72+
{
73+
return $this->taxModelFactory->create();
74+
}
75+
76+
/**
77+
* Create tax item model
78+
*
79+
* @return Item
80+
*/
81+
public function createTaxItemModel(): Item
82+
{
83+
return $this->taxItemModelFactory->create();
84+
}
85+
86+
/**
87+
* Hydrate tax data model from tax model
88+
*
89+
* @param OrderTaxInterface $taxDataModel
90+
* @param Tax $taxModel
91+
* @return void
92+
*/
93+
public function hydrateTaxDataModel(OrderTaxInterface $taxDataModel, Tax $taxModel): void
94+
{
95+
$taxDataModel->setTaxId($taxModel->getData(OrderTaxInterface::TAX_ID));
96+
$taxDataModel->setOrderId($taxModel->getData(OrderTaxInterface::ORDER_ID));
97+
$taxDataModel->setCode($taxModel->getData(OrderTaxInterface::CODE));
98+
$taxDataModel->setTitle($taxModel->getData(OrderTaxInterface::TITLE));
99+
$taxDataModel->setPercent($taxModel->getData(OrderTaxInterface::PERCENT));
100+
$taxDataModel->setAmount($taxModel->getData(OrderTaxInterface::AMOUNT));
101+
$taxDataModel->setBaseAmount($taxModel->getData(OrderTaxInterface::BASE_AMOUNT));
102+
$taxDataModel->setBaseRealAmount($taxModel->getData(OrderTaxInterface::BASE_REAL_AMOUNT));
103+
$taxDataModel->setPriority($taxModel->getData(OrderTaxInterface::PRIORITY));
104+
$taxDataModel->setPosition($taxModel->getData(OrderTaxInterface::POSITION));
105+
$taxDataModel->setProcess($taxModel->getData(OrderTaxInterface::PROCESS));
106+
}
107+
108+
/**
109+
* Hydrate tax item data model from tax item model
110+
*
111+
* @param OrderTaxItemInterface $taxItemDataModel
112+
* @param Item $taxItemModel
113+
* @return void
114+
*/
115+
public function hydrateTaxItemDataModel(OrderTaxItemInterface $taxItemDataModel, Item $taxItemModel): void
116+
{
117+
$taxItemDataModel->setTaxItemId($taxItemModel->getData(OrderTaxItemInterface::TAX_ITEM_ID));
118+
$taxItemDataModel->setTaxId($taxItemModel->getData(OrderTaxItemInterface::TAX_ID));
119+
$taxItemDataModel->setItemId($taxItemModel->getData(OrderTaxItemInterface::ITEM_ID));
120+
$taxItemDataModel->setTaxPercent($taxItemModel->getData(OrderTaxItemInterface::TAX_PERCENT));
121+
$taxItemDataModel->setAmount($taxItemModel->getData(OrderTaxItemInterface::AMOUNT));
122+
$taxItemDataModel->setBaseAmount($taxItemModel->getData(OrderTaxItemInterface::BASE_AMOUNT));
123+
$taxItemDataModel->setRealAmount($taxItemModel->getData(OrderTaxItemInterface::REAL_AMOUNT));
124+
$taxItemDataModel->setRealBaseAmount($taxItemModel->getData(OrderTaxItemInterface::REAL_BASE_AMOUNT));
125+
$taxItemDataModel->setAssociatedItemId($taxItemModel->getData(OrderTaxItemInterface::ASSOCIATED_ITEM_ID));
126+
$taxItemDataModel->setTaxableItemType($taxItemModel->getData(OrderTaxItemInterface::TAXABLE_ITEM_TYPE));
127+
}
128+
129+
/**
130+
* Hydrate tax model from tax data model
131+
*
132+
* @param Tax $taxModel
133+
* @param OrderTaxInterface $taxDataModel
134+
* @return void
135+
*/
136+
public function hydrateTaxModel(Tax $taxModel, OrderTaxInterface $taxDataModel): void
137+
{
138+
$taxModel->addData([
139+
OrderTaxInterface::ORDER_ID => $taxDataModel->getOrderId(),
140+
OrderTaxInterface::CODE => $taxDataModel->getCode(),
141+
OrderTaxInterface::TITLE => $taxDataModel->getTitle(),
142+
OrderTaxInterface::PERCENT => $taxDataModel->getPercent(),
143+
OrderTaxInterface::AMOUNT => $taxDataModel->getAmount(),
144+
OrderTaxInterface::BASE_AMOUNT => $taxDataModel->getBaseAmount(),
145+
OrderTaxInterface::BASE_REAL_AMOUNT => $taxDataModel->getBaseRealAmount(),
146+
OrderTaxInterface::PRIORITY => $taxDataModel->getPriority(),
147+
OrderTaxInterface::POSITION => $taxDataModel->getPosition(),
148+
OrderTaxInterface::PROCESS => $taxDataModel->getProcess(),
149+
]);
150+
}
151+
152+
/**
153+
* Hydrate tax item model from tax item data model
154+
*
155+
* @param Item $taxItemModel
156+
* @param OrderTaxItemInterface $taxItemDataModel
157+
* @return void
158+
*/
159+
public function hydrateTaxItemModel(Item $taxItemModel, OrderTaxItemInterface $taxItemDataModel): void
160+
{
161+
$taxItemModel->addData([
162+
OrderTaxItemInterface::TAX_ID => $taxItemDataModel->getTaxId(),
163+
OrderTaxItemInterface::ITEM_ID => $taxItemDataModel->getItemId(),
164+
OrderTaxItemInterface::ASSOCIATED_ITEM_ID => $taxItemDataModel->getAssociatedItemId(),
165+
OrderTaxItemInterface::TAX_PERCENT => $taxItemDataModel->getTaxPercent(),
166+
OrderTaxItemInterface::TAXABLE_ITEM_TYPE => $taxItemDataModel->getTaxableItemType(),
167+
OrderTaxItemInterface::AMOUNT => $taxItemDataModel->getAmount(),
168+
OrderTaxItemInterface::BASE_AMOUNT => $taxItemDataModel->getBaseAmount(),
169+
OrderTaxItemInterface::REAL_AMOUNT => $taxItemDataModel->getRealAmount(),
170+
OrderTaxItemInterface::REAL_BASE_AMOUNT => $taxItemDataModel->getRealBaseAmount(),
171+
]);
172+
}
173+
}

0 commit comments

Comments
 (0)