@@ -188,10 +188,10 @@ public function collect(
188188 $ items = $ this ->calculator ->sortItemsByPriority ($ items , $ address );
189189 $ itemsToApplyRules = $ items ;
190190 $ rules = $ this ->calculator ->getRules ($ address );
191- $ totalDiscount = [];
192191 $ address ->setBaseDiscountAmount (0 );
193192 /** @var Rule $rule */
194193 foreach ($ rules as $ rule ) {
194+ $ ruleTotalDiscount = 0 ;
195195 /** @var Item $item */
196196 foreach ($ itemsToApplyRules as $ key => $ item ) {
197197 if ($ item ->getNoDiscount () || !$ this ->calculator ->canApplyDiscount ($ item ) || $ item ->getParentItem ()) {
@@ -221,14 +221,14 @@ public function collect(
221221 unset($ itemsToApplyRules [$ key ]);
222222 }
223223
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 ();
227227 }
228228 }
229- $ totalDiscount [ $ item -> getId ()] = $ item ->getBaseDiscountAmount ();
229+ $ ruleTotalDiscount + = $ item ->getBaseDiscountAmount ();
230230 }
231- $ address ->setBaseDiscountAmount (array_sum ( array_values ( $ totalDiscount )) );
231+ $ address ->setBaseDiscountAmount ($ ruleTotalDiscount );
232232 }
233233 $ this ->calculator ->initTotals ($ items , $ address );
234234 foreach ($ items as $ item ) {
0 commit comments