Skip to content

Commit 2ada289

Browse files
author
Yu Tang
committed
Merge branch 'FearlessKiwis-MAGETWO-32893-Tax-Immutability' into develop
Conflicts: app/code/Magento/Tax/Model/TaxCalculation.php dev/tests/unit/testsuite/Magento/Tax/Model/TaxCalculationTest.php
2 parents 465b4a7 + 5530a3a commit 2ada289

File tree

66 files changed

+2480
-999
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

66 files changed

+2480
-999
lines changed

app/code/Magento/Catalog/Helper/Data.php

Lines changed: 37 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -110,11 +110,11 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
110110
protected $_templateFilterFactory;
111111

112112
/**
113-
* Tax class key builder
113+
* Tax class key factory
114114
*
115-
* @var \Magento\Tax\Api\Data\TaxClassKeyDataBuilder
115+
* @var \Magento\Tax\Api\Data\TaxClassKeyInterfaceFactory
116116
*/
117-
protected $_taxClassKeyBuilder;
117+
protected $_taxClassKeyFactory;
118118

119119
/**
120120
* Tax helper
@@ -124,18 +124,18 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
124124
protected $_taxConfig;
125125

126126
/**
127-
* Quote details builder
127+
* Quote details factory
128128
*
129-
* @var \Magento\Tax\Api\Data\QuoteDetailsDataBuilder
129+
* @var \Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory
130130
*/
131-
protected $_quoteDetailsBuilder;
131+
protected $_quoteDetailsFactory;
132132

133133
/**
134-
* Quote details item builder
134+
* Quote details item factory
135135
*
136-
* @var \Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder
136+
* @var \Magento\Tax\Api\Data\QuoteDetailsItemInterfaceFactory
137137
*/
138-
protected $_quoteDetailsItemBuilder;
138+
protected $_quoteDetailsItemFactory;
139139

140140
/**
141141
* @var CustomerSession
@@ -177,10 +177,10 @@ class Data extends \Magento\Framework\App\Helper\AbstractHelper
177177
* @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
178178
* @param \Magento\Catalog\Model\Template\Filter\Factory $templateFilterFactory
179179
* @param string $templateFilterModel
180-
* @param \Magento\Tax\Api\Data\TaxClassKeyDataBuilder $taxClassKeyBuilder
180+
* @param \Magento\Tax\Api\Data\TaxClassKeyInterfaceFactory $taxClassKeyFactory
181181
* @param Config $taxConfig
182-
* @param \Magento\Tax\Api\Data\QuoteDetailsDataBuilder $quoteDetailsBuilder
183-
* @param \Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder $quoteDetailsItemBuilder
182+
* @param \Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory $quoteDetailsFactory
183+
* @param \Magento\Tax\Api\Data\QuoteDetailsItemInterfaceFactory $quoteDetailsItemFactory
184184
* @param \Magento\Tax\Api\TaxCalculationInterface $taxCalculationService
185185
* @param CustomerSession $customerSession
186186
* @param PriceCurrencyInterface $priceCurrency
@@ -199,10 +199,10 @@ public function __construct(
199199
\Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
200200
\Magento\Catalog\Model\Template\Filter\Factory $templateFilterFactory,
201201
$templateFilterModel,
202-
\Magento\Tax\Api\Data\TaxClassKeyDataBuilder $taxClassKeyBuilder,
202+
\Magento\Tax\Api\Data\TaxClassKeyInterfaceFactory $taxClassKeyFactory,
203203
\Magento\Tax\Model\Config $taxConfig,
204-
\Magento\Tax\Api\Data\QuoteDetailsDataBuilder $quoteDetailsBuilder,
205-
\Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder $quoteDetailsItemBuilder,
204+
\Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory $quoteDetailsFactory,
205+
\Magento\Tax\Api\Data\QuoteDetailsItemInterfaceFactory $quoteDetailsItemFactory,
206206
\Magento\Tax\Api\TaxCalculationInterface $taxCalculationService,
207207
CustomerSession $customerSession,
208208
PriceCurrencyInterface $priceCurrency,
@@ -218,10 +218,10 @@ public function __construct(
218218
$this->_scopeConfig = $scopeConfig;
219219
$this->_coreRegistry = $coreRegistry;
220220
$this->_templateFilterModel = $templateFilterModel;
221-
$this->_taxClassKeyBuilder = $taxClassKeyBuilder;
221+
$this->_taxClassKeyFactory = $taxClassKeyFactory;
222222
$this->_taxConfig = $taxConfig;
223-
$this->_quoteDetailsBuilder = $quoteDetailsBuilder;
224-
$this->_quoteDetailsItemBuilder = $quoteDetailsItemBuilder;
223+
$this->_quoteDetailsFactory = $quoteDetailsFactory;
224+
$this->_quoteDetailsItemFactory = $quoteDetailsItemFactory;
225225
$this->_taxCalculationService = $taxCalculationService;
226226
$this->_customerSession = $customerSession;
227227
$this->priceCurrency = $priceCurrency;
@@ -501,27 +501,29 @@ public function getTaxPrice(
501501
$billingAddressDataObject = $billingAddress->getDataModel();
502502
}
503503

504-
$item = $this->_quoteDetailsItemBuilder->setQuantity(1)
504+
$taxClassKey = $this->_taxClassKeyFactory->create();
505+
$taxClassKey->setType(TaxClassKeyInterface::TYPE_ID)
506+
->setValue($product->getTaxClassId());
507+
508+
$customerTaxClassKey = $this->_taxClassKeyFactory->create();
509+
$customerTaxClassKey->setType(TaxClassKeyInterface::TYPE_ID)
510+
->setValue($ctc);
511+
512+
$item = $this->_quoteDetailsItemFactory->create();
513+
$item->setQuantity(1)
505514
->setCode($product->getSku())
506515
->setShortDescription($product->getShortDescription())
507-
->setTaxClassKey(
508-
$this->_taxClassKeyBuilder->setType(TaxClassKeyInterface::TYPE_ID)
509-
->setValue($product->getTaxClassId())
510-
->create()
511-
)->setTaxIncluded($priceIncludesTax)
516+
->setTaxClassKey($taxClassKey)
517+
->setIsTaxIncluded($priceIncludesTax)
512518
->setType('product')
513-
->setUnitPrice($price)
514-
->create();
515-
$quoteDetails = $this->_quoteDetailsBuilder
516-
->setShippingAddress($shippingAddressDataObject)
519+
->setUnitPrice($price);
520+
521+
$quoteDetails = $this->_quoteDetailsFactory->create();
522+
$quoteDetails->setShippingAddress($shippingAddressDataObject)
517523
->setBillingAddress($billingAddressDataObject)
518-
->setCustomerTaxClassKey(
519-
$this->_taxClassKeyBuilder->setType(TaxClassKeyInterface::TYPE_ID)
520-
->setValue($ctc)
521-
->create()
522-
)->setItems([$item])
523-
->setCustomerId($this->_customerSession->getCustomerId())
524-
->create();
524+
->setCustomerTaxClassKey($customerTaxClassKey)
525+
->setItems([$item])
526+
->setCustomerId($this->_customerSession->getCustomerId());
525527

526528
$storeId = null;
527529
if ($store) {

app/code/Magento/GoogleShopping/Model/Attribute/Tax.php

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -49,18 +49,11 @@ class Tax extends \Magento\GoogleShopping\Model\Attribute\DefaultAttribute
4949
protected $_taxCalculationService;
5050

5151
/**
52-
* Quote Details Builder
52+
* Quote Details Factory
5353
*
54-
* @var \Magento\Tax\Api\Data\QuoteDetailsDataBuilder
54+
* @var \Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory
5555
*/
56-
protected $_quoteDetailsBuilder;
57-
58-
/**
59-
* Quote Details Item Builder
60-
*
61-
* @var \Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder
62-
*/
63-
protected $_quoteDetailsItemBuilder;
56+
protected $_quoteDetailsFactory;
6457

6558
/**
6659
* Default customer tax classId
@@ -76,6 +69,11 @@ class Tax extends \Magento\GoogleShopping\Model\Attribute\DefaultAttribute
7669
*/
7770
protected $_regionFactory;
7871

72+
/**
73+
* @var \Magento\Framework\Api\DataObjectHelper
74+
*/
75+
protected $dataObjectHelper;
76+
7977
/**
8078
* @param \Magento\Framework\Model\Context $context
8179
* @param \Magento\Framework\Registry $registry
@@ -88,10 +86,10 @@ class Tax extends \Magento\GoogleShopping\Model\Attribute\DefaultAttribute
8886
* @param \Magento\Tax\Helper\Data $taxData
8987
* @param \Magento\Tax\Api\TaxRateManagementInterface $taxRateManagement
9088
* @param \Magento\Tax\Api\TaxCalculationInterface $taxCalculationService
91-
* @param \Magento\Tax\Api\Data\QuoteDetailsDataBuilder $quoteDetailsBuilder
92-
* @param \Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder $quoteDetailsItemBuilder
89+
* @param \Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory $quoteDetailsFactory
9390
* @param \Magento\Directory\Model\RegionFactory $regionFactory
9491
* @param \Magento\Customer\Api\GroupManagementInterface $groupManagement
92+
* @param \Magento\Framework\Api\DataObjectHelper $dataObjectHelper
9593
* @param \Magento\Framework\Data\Collection\Db $resourceCollection
9694
* @param array $data
9795
* @SuppressWarnings(PHPMD.ExcessiveParameterList)
@@ -108,21 +106,21 @@ public function __construct(
108106
\Magento\Tax\Helper\Data $taxData,
109107
\Magento\Tax\Api\TaxRateManagementInterface $taxRateManagement,
110108
\Magento\Tax\Api\TaxCalculationInterface $taxCalculationService,
111-
\Magento\Tax\Api\Data\QuoteDetailsDataBuilder $quoteDetailsBuilder,
112-
\Magento\Tax\Api\Data\QuoteDetailsItemDataBuilder $quoteDetailsItemBuilder,
109+
\Magento\Tax\Api\Data\QuoteDetailsInterfaceFactory $quoteDetailsFactory,
113110
\Magento\Directory\Model\RegionFactory $regionFactory,
114111
\Magento\Customer\Api\GroupManagementInterface $groupManagement,
112+
\Magento\Framework\Api\DataObjectHelper $dataObjectHelper,
115113
\Magento\Framework\Data\Collection\Db $resourceCollection = null,
116114
array $data = []
117115
) {
118116
$this->_config = $config;
119117
$this->_taxData = $taxData;
120118
$this->_taxRateManagement = $taxRateManagement;
121119
$this->_taxCalculationService = $taxCalculationService;
122-
$this->_quoteDetailsBuilder = $quoteDetailsBuilder;
123-
$this->_quoteDetailsItemBuilder = $quoteDetailsItemBuilder;
120+
$this->_quoteDetailsFactory = $quoteDetailsFactory;
124121
$this->_regionFactory = $regionFactory;
125122
$this->groupManagement = $groupManagement;
123+
$this->dataObjectHelper = $dataObjectHelper;
126124
parent::__construct(
127125
$context,
128126
$registry,
@@ -214,9 +212,12 @@ public function convertAttribute($product, $entry)
214212
],
215213
];
216214

217-
$quoteDetailsObject = $this->_quoteDetailsBuilder
218-
->populateWithArray($quoteDetailsDataArray)
219-
->create();
215+
$quoteDetailsObject = $this->_quoteDetailsFactory->create();
216+
$this->dataObjectHelper->populateWithArray(
217+
$quoteDetailsObject,
218+
$quoteDetailsDataArray,
219+
'\Magento\Tax\Api\Data\QuoteDetailsInterface'
220+
);
220221

221222
$taxDetails = $this->_taxCalculationService
222223
->calculateTax($quoteDetailsObject, $product->getStoreId());

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,24 +26,56 @@ interface AppliedTaxInterface extends \Magento\Framework\Api\ExtensibleDataInter
2626
*/
2727
public function getTaxRateKey();
2828

29+
/**
30+
* Set tax rate key
31+
*
32+
* @param string $taxRateKey
33+
* @return $this
34+
*/
35+
public function setTaxRateKey($taxRateKey);
36+
2937
/**
3038
* Get percent
3139
*
3240
* @return float
3341
*/
3442
public function getPercent();
3543

44+
/**
45+
* Set percent
46+
*
47+
* @param float $percent
48+
* @return $this
49+
*/
50+
public function setPercent($percent);
51+
3652
/**
3753
* Get amount
3854
*
3955
* @return float
4056
*/
4157
public function getAmount();
4258

59+
/**
60+
* Get amount
61+
*
62+
* @param float $amount
63+
* @return $this
64+
*/
65+
public function setAmount($amount);
66+
4367
/**
4468
* Get rates
4569
*
4670
* @return \Magento\Tax\Api\Data\AppliedTaxRateInterface[]|null
4771
*/
4872
public function getRates();
73+
74+
/**
75+
* Set rates
76+
*
77+
* @param \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $rates
78+
* @return $this
79+
*/
80+
public function setRates(array $rates = null);
4981
}

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

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,41 @@ interface AppliedTaxRateInterface extends \Magento\Framework\Api\ExtensibleDataI
2525
*/
2626
public function getCode();
2727

28+
/**
29+
* Set code
30+
*
31+
* @param string $code
32+
* @return $this
33+
*/
34+
public function setCode($code);
35+
2836
/**
2937
* Get Title
3038
*
3139
* @return string|null
3240
*/
3341
public function getTitle();
3442

43+
/**
44+
* Set Title
45+
*
46+
* @param string $title
47+
* @return $this
48+
*/
49+
public function setTitle($title);
50+
3551
/**
3652
* Get Tax Percent
3753
*
3854
* @return float|null
3955
*/
4056
public function getPercent();
57+
58+
/**
59+
* Set Tax Percent
60+
*
61+
* @param float $percent
62+
* @return $this
63+
*/
64+
public function setPercent($percent);
4165
}

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

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,31 +30,71 @@ interface OrderTaxDetailsAppliedTaxInterface extends \Magento\Framework\Api\Exte
3030
*/
3131
public function getCode();
3232

33+
/**
34+
* Set code
35+
*
36+
* @param string $code
37+
* @return $this
38+
*/
39+
public function setCode($code);
40+
3341
/**
3442
* Get Title
3543
*
3644
* @return string|null
3745
*/
3846
public function getTitle();
3947

48+
/**
49+
* Set Title
50+
*
51+
* @param string $title
52+
* @return $this
53+
*/
54+
public function setTitle($title);
55+
4056
/**
4157
* Get Tax Percent
4258
*
4359
* @return float|null
4460
*/
4561
public function getPercent();
4662

63+
/**
64+
* Set Tax Percent
65+
*
66+
* @param float $percent
67+
* @return $this
68+
*/
69+
public function setPercent($percent);
70+
4771
/**
4872
* Get tax amount
4973
*
5074
* @return float
5175
*/
5276
public function getAmount();
5377

78+
/**
79+
* Set tax amount
80+
*
81+
* @param float $amount
82+
* @return $this
83+
*/
84+
public function setAmount($amount);
85+
5486
/**
5587
* Get tax amount in base currency
5688
*
5789
* @return float
5890
*/
5991
public function getBaseAmount();
92+
93+
/**
94+
* Set tax amount in base currency
95+
*
96+
* @param float $baseAmount
97+
* @return $this
98+
*/
99+
public function setBaseAmount($baseAmount);
60100
}

0 commit comments

Comments
 (0)