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