@@ -78,105 +78,110 @@ protected function saveOrderTax(\Magento\Sales\Api\Data\OrderInterface $order)
78
78
$ ratesIdQuoteItemId = [];
79
79
foreach ($ taxesForItems as $ taxesArray ) {
80
80
foreach ($ taxesArray ['applied_taxes ' ] as $ rates ) {
81
- /** @var \Magento\Tax\Api\Data\AppliedTaxRateInterface $rates */
82
- $ taxRates = $ rates ['extension_attributes ' ]->getRates ();
83
- if (count ($ taxRates ) == 1 ) {
84
- $ ratesIdQuoteItemId [$ rates ['id ' ]][] = [
85
- 'id ' => $ taxesArray ['item_id ' ],
86
- 'percent ' => $ rates ['percent ' ],
87
- 'code ' => $ taxRates [0 ]['code ' ],
88
- 'associated_item_id ' => $ taxesArray ['associated_item_id ' ],
89
- 'item_type ' => $ taxesArray ['type ' ],
90
- 'amount ' => $ rates ['amount ' ],
91
- 'base_amount ' => $ rates ['base_amount ' ],
92
- 'real_amount ' => $ rates ['amount ' ],
93
- 'real_base_amount ' => $ rates ['base_amount ' ],
94
- ];
95
- } else {
96
- $ percentSum = 0 ;
97
- foreach ($ taxRates as $ rate ) {
98
- $ realAmount = $ rates ['amount ' ] * $ rate ['percent ' ] / $ rates ['percent ' ];
99
- $ realBaseAmount = $ rates ['base_amount ' ] * $ rate ['percent ' ] / $ rates ['percent ' ];
81
+ if ($ rates ['extension_attributes ' ]) {
82
+ $ taxRates = $ rates ['extension_attributes ' ]->getRates ();
83
+ /** @var \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $taxRates */
84
+ if (count ($ taxRates ) == 1 ) {
100
85
$ ratesIdQuoteItemId [$ rates ['id ' ]][] = [
101
86
'id ' => $ taxesArray ['item_id ' ],
102
- 'percent ' => $ rate ['percent ' ],
103
- 'code ' => $ rate ['code ' ],
87
+ 'percent ' => $ rates ['percent ' ],
88
+ 'code ' => $ taxRates [ 0 ] ['code ' ],
104
89
'associated_item_id ' => $ taxesArray ['associated_item_id ' ],
105
90
'item_type ' => $ taxesArray ['type ' ],
106
91
'amount ' => $ rates ['amount ' ],
107
92
'base_amount ' => $ rates ['base_amount ' ],
108
- 'real_amount ' => $ realAmount ,
109
- 'real_base_amount ' => $ realBaseAmount ,
93
+ 'real_amount ' => $ rates [ ' amount ' ] ,
94
+ 'real_base_amount ' => $ rates [ ' base_amount ' ] ,
110
95
];
111
- $ percentSum += $ rate ['percent ' ];
96
+ } else {
97
+ $ percentSum = 0 ;
98
+ foreach ($ taxRates as $ rate ) {
99
+ $ realAmount = $ rates ['amount ' ] * $ rate ['percent ' ] / $ rates ['percent ' ];
100
+ $ realBaseAmount = $ rates ['base_amount ' ] * $ rate ['percent ' ] / $ rates ['percent ' ];
101
+ $ ratesIdQuoteItemId [$ rates ['id ' ]][] = [
102
+ 'id ' => $ taxesArray ['item_id ' ],
103
+ 'percent ' => $ rate ['percent ' ],
104
+ 'code ' => $ rate ['code ' ],
105
+ 'associated_item_id ' => $ taxesArray ['associated_item_id ' ],
106
+ 'item_type ' => $ taxesArray ['type ' ],
107
+ 'amount ' => $ rates ['amount ' ],
108
+ 'base_amount ' => $ rates ['base_amount ' ],
109
+ 'real_amount ' => $ realAmount ,
110
+ 'real_base_amount ' => $ realBaseAmount ,
111
+ ];
112
+ $ percentSum += $ rate ['percent ' ];
113
+ }
112
114
}
113
115
}
114
116
}
115
117
}
116
118
117
119
foreach ($ taxes as $ row ) {
118
120
$ id = $ row ['id ' ];
119
- $ taxRates = $ row ['extension_attributes ' ]->getRates ();
120
- foreach ($ taxRates as $ tax ) {
121
- if ($ row ['percent ' ] == null ) {
122
- $ baseRealAmount = $ row ['base_amount ' ];
123
- } else {
124
- if ($ row ['percent ' ] == 0 || $ tax ['percent ' ] == 0 ) {
125
- continue ;
121
+ if ($ row ['extension_attributes ' ]) {
122
+ /** @var \Magento\Tax\Api\Data\AppliedTaxRateInterface[] $taxRates */
123
+ $ taxRates = $ row ['extension_attributes ' ]->getRates ();
124
+ foreach ($ taxRates as $ tax ) {
125
+ if ($ row ['percent ' ] == null ) {
126
+ $ baseRealAmount = $ row ['base_amount ' ];
127
+ } else {
128
+ if ($ row ['percent ' ] == 0 || $ tax ['percent ' ] == 0 ) {
129
+ continue ;
130
+ }
131
+ $ baseRealAmount = $ row ['base_amount ' ] / $ row ['percent ' ] * $ tax ['percent ' ];
126
132
}
127
- $ baseRealAmount = $ row ['base_amount ' ] / $ row ['percent ' ] * $ tax ['percent ' ];
128
- }
129
- $ hidden = isset ($ row ['hidden ' ]) ? $ row ['hidden ' ] : 0 ;
130
- $ priority = isset ($ tax ['priority ' ]) ? $ tax ['priority ' ] : 0 ;
131
- $ position = isset ($ tax ['position ' ]) ? $ tax ['position ' ] : 0 ;
132
- $ process = isset ($ row ['process ' ]) ? $ row ['process ' ] : 0 ;
133
- $ data = [
134
- 'order_id ' => $ order ->getEntityId (),
135
- 'code ' => $ tax ['code ' ],
136
- 'title ' => $ tax ['title ' ],
137
- 'hidden ' => $ hidden ,
138
- 'percent ' => $ tax ['percent ' ],
139
- 'priority ' => $ priority ,
140
- 'position ' => $ position ,
141
- 'amount ' => $ row ['amount ' ],
142
- 'base_amount ' => $ row ['base_amount ' ],
143
- 'process ' => $ process ,
144
- 'base_real_amount ' => $ baseRealAmount ,
145
- ];
133
+ $ hidden = isset ($ row ['hidden ' ]) ? $ row ['hidden ' ] : 0 ;
134
+ $ priority = isset ($ tax ['priority ' ]) ? $ tax ['priority ' ] : 0 ;
135
+ $ position = isset ($ tax ['position ' ]) ? $ tax ['position ' ] : 0 ;
136
+ $ process = isset ($ row ['process ' ]) ? $ row ['process ' ] : 0 ;
137
+ $ data = [
138
+ 'order_id ' => $ order ->getEntityId (),
139
+ 'code ' => $ tax ['code ' ],
140
+ 'title ' => $ tax ['title ' ],
141
+ 'hidden ' => $ hidden ,
142
+ 'percent ' => $ tax ['percent ' ],
143
+ 'priority ' => $ priority ,
144
+ 'position ' => $ position ,
145
+ 'amount ' => $ row ['amount ' ],
146
+ 'base_amount ' => $ row ['base_amount ' ],
147
+ 'process ' => $ process ,
148
+ 'base_real_amount ' => $ baseRealAmount ,
149
+ ];
146
150
147
- /** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */
148
- $ orderTax = $ this ->orderTaxFactory ->create ();
149
- $ result = $ orderTax ->setData ($ data )->save ();
151
+ /** @var $orderTax \Magento\Tax\Model\Sales\Order\Tax */
152
+ $ orderTax = $ this ->orderTaxFactory ->create ();
153
+ $ result = $ orderTax ->setData ($ data )->save ();
150
154
151
- if (isset ($ ratesIdQuoteItemId [$ id ])) {
152
- foreach ($ ratesIdQuoteItemId [$ id ] as $ quoteItemId ) {
153
- if ($ quoteItemId ['code ' ] == $ tax ['code ' ]) {
154
- $ itemId = null ;
155
- $ associatedItemId = null ;
156
- if (isset ($ quoteItemId ['id ' ])) {
157
- //This is a product item
158
- $ item = $ order ->getItemByQuoteItemId ($ quoteItemId ['id ' ]);
159
- $ itemId = $ item ->getId ();
160
- } elseif (isset ($ quoteItemId ['associated_item_id ' ])) {
161
- //This item is associated with a product item
162
- $ item = $ order ->getItemByQuoteItemId ($ quoteItemId ['associated_item_id ' ]);
163
- $ associatedItemId = $ item ->getId ();
164
- }
155
+ if (isset ($ ratesIdQuoteItemId [$ id ])) {
156
+ foreach ($ ratesIdQuoteItemId [$ id ] as $ quoteItemId ) {
157
+ if ($ quoteItemId ['code ' ] == $ tax ['code ' ]) {
158
+ $ itemId = null ;
159
+ $ associatedItemId = null ;
160
+ if (isset ($ quoteItemId ['id ' ])) {
161
+ //This is a product item
162
+ $ item = $ order ->getItemByQuoteItemId ($ quoteItemId ['id ' ]);
163
+ $ itemId = $ item ->getId ();
164
+ } elseif (isset ($ quoteItemId ['associated_item_id ' ])) {
165
+ //This item is associated with a product item
166
+ $ item = $ order ->getItemByQuoteItemId ($ quoteItemId ['associated_item_id ' ]);
167
+ $ associatedItemId = $ item ->getId ();
168
+ }
165
169
166
- $ data = [
167
- 'item_id ' => $ itemId ,
168
- 'tax_id ' => $ result ->getTaxId (),
169
- 'tax_percent ' => $ quoteItemId ['percent ' ],
170
- 'associated_item_id ' => $ associatedItemId ,
171
- 'amount ' => $ quoteItemId ['amount ' ],
172
- 'base_amount ' => $ quoteItemId ['base_amount ' ],
173
- 'real_amount ' => $ quoteItemId ['real_amount ' ],
174
- 'real_base_amount ' => $ quoteItemId ['real_base_amount ' ],
175
- 'taxable_item_type ' => $ quoteItemId ['item_type ' ],
176
- ];
177
- /** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */
178
- $ taxItem = $ this ->taxItemFactory ->create ();
179
- $ taxItem ->setData ($ data )->save ();
170
+ $ data = [
171
+ 'item_id ' => $ itemId ,
172
+ 'tax_id ' => $ result ->getTaxId (),
173
+ 'tax_percent ' => $ quoteItemId ['percent ' ],
174
+ 'associated_item_id ' => $ associatedItemId ,
175
+ 'amount ' => $ quoteItemId ['amount ' ],
176
+ 'base_amount ' => $ quoteItemId ['base_amount ' ],
177
+ 'real_amount ' => $ quoteItemId ['real_amount ' ],
178
+ 'real_base_amount ' => $ quoteItemId ['real_base_amount ' ],
179
+ 'taxable_item_type ' => $ quoteItemId ['item_type ' ],
180
+ ];
181
+ /** @var $taxItem \Magento\Sales\Model\Order\Tax\Item */
182
+ $ taxItem = $ this ->taxItemFactory ->create ();
183
+ $ taxItem ->setData ($ data )->save ();
184
+ }
180
185
}
181
186
}
182
187
}
0 commit comments