@@ -188,10 +188,10 @@ public function collect(
188
188
$ items = $ this ->calculator ->sortItemsByPriority ($ items , $ address );
189
189
$ itemsToApplyRules = $ items ;
190
190
$ rules = $ this ->calculator ->getRules ($ address );
191
- $ totalDiscount = [];
192
191
$ address ->setBaseDiscountAmount (0 );
193
192
/** @var Rule $rule */
194
193
foreach ($ rules as $ rule ) {
194
+ $ ruleTotalDiscount = 0 ;
195
195
/** @var Item $item */
196
196
foreach ($ itemsToApplyRules as $ key => $ item ) {
197
197
if ($ item ->getNoDiscount () || !$ this ->calculator ->canApplyDiscount ($ item ) || $ item ->getParentItem ()) {
@@ -221,14 +221,14 @@ public function collect(
221
221
unset($ itemsToApplyRules [$ key ]);
222
222
}
223
223
224
- if (( $ children = $ item ->getChildren () ) && $ item ->isChildrenCalculated ()) {
225
- foreach ($ children as $ child ) {
226
- $ totalDiscount [ $ child -> getId ()] = $ child ->getBaseDiscountAmount ();
224
+ if ($ item ->getChildren () && $ item ->isChildrenCalculated ()) {
225
+ foreach ($ item -> getChildren () as $ child ) {
226
+ $ ruleTotalDiscount + = $ child ->getBaseDiscountAmount ();
227
227
}
228
228
}
229
- $ totalDiscount [ $ item -> getId ()] = $ item ->getBaseDiscountAmount ();
229
+ $ ruleTotalDiscount + = $ item ->getBaseDiscountAmount ();
230
230
}
231
- $ address ->setBaseDiscountAmount (array_sum ( array_values ( $ totalDiscount )) );
231
+ $ address ->setBaseDiscountAmount ($ ruleTotalDiscount );
232
232
}
233
233
$ this ->calculator ->initTotals ($ items , $ address );
234
234
foreach ($ items as $ item ) {
0 commit comments