From 458a34c6a8883eb37f863ee4463df795f67c29ae Mon Sep 17 00:00:00 2001 From: Korina Cordero Date: Fri, 28 Jul 2023 05:58:03 +0000 Subject: [PATCH] Fix setting of promo for invoice. #755 --- src/Service/InvoiceManager.php | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/Service/InvoiceManager.php b/src/Service/InvoiceManager.php index 06536ba2..ce3caa7f 100644 --- a/src/Service/InvoiceManager.php +++ b/src/Service/InvoiceManager.php @@ -192,12 +192,11 @@ class InvoiceManager implements InvoiceGeneratorInterface $invoice_items = []; $data = []; + $promo = null; foreach ($this->available_rules as $rule) { $items = $rule->compute($criteria, $total); - $promo = null; - if (count($items) > 0) { foreach ($items as $item) @@ -210,7 +209,6 @@ class InvoiceManager implements InvoiceGeneratorInterface if (isset($item['battery'])) $battery = $item['battery']; - $promo = null; if (isset($item['promo'])) $promo = $item['promo']; @@ -219,13 +217,13 @@ class InvoiceManager implements InvoiceGeneratorInterface 'quantity' => $quantity, 'price' => $price, 'battery' => $battery, - 'promo' => $promo, ]; } } } // also need to return the total and the promo + // promo is set per invoice, not per item $data[] = [ 'promo' => $promo, 'invoice_items' => $invoice_items, @@ -254,8 +252,12 @@ class InvoiceManager implements InvoiceGeneratorInterface // check if promo is set if (isset($data['promo'])) + { $promo = $data['promo']; + $invoice->setPromo($promo); + } + foreach ($invoice_items as $item) { $invoice_item = new InvoiceItem(); -- 2.43.5