diff --git a/src/Cart.php b/src/Cart.php index 6853670..17838b9 100644 --- a/src/Cart.php +++ b/src/Cart.php @@ -458,9 +458,6 @@ public function removeItemCondition($itemId, $conditionName) } } - // reset indexes - $item['conditions'] = array_values($item['conditions']); - $this->update($itemId, [ 'conditions' => $item['conditions'], ]); @@ -601,10 +598,14 @@ public function getTotal(): int|float return Helpers::formatValue($subTotal, $this->config['format_numbers'], $this->config); } - $conditionsForTotal->each(function (CartCondition $condition) use ($subTotal, &$total) { - $toBeCalculated = $total > 0 ? $total : $subTotal; + $index = 0; + + $conditionsForTotal->each(function (CartCondition $condition) use ($subTotal, &$total, &$index) { + $toBeCalculated = ($index > 0) ? $total : $subTotal; $total = $condition->applyCondition($toBeCalculated); + + $index++; }); return Helpers::formatValue($total, $this->config['format_numbers'], $this->config); diff --git a/tests/Unit/CartConditionsTest.php b/tests/Unit/CartConditionsTest.php index f375d3e..1a218f4 100644 --- a/tests/Unit/CartConditionsTest.php +++ b/tests/Unit/CartConditionsTest.php @@ -1310,7 +1310,7 @@ // now we should have only 1 condition left on that item expect($this->cart->get(1)['conditions'])->toHaveCount(1, 'Item should have one condition left'); - expect($this->cart->get(1)['conditions'][0]->getName())->toEqual('Mother\'s Day Gift Pack'); + expect($this->cart->get(1)['conditions'][1]->getName())->toEqual('Mother\'s Day Gift Pack'); }); test('can add item with multiple negative item conditions', function () {