From 1f393fcf242eab851546f99336bcbf75267dc274 Mon Sep 17 00:00:00 2001 From: Serreau Jovann Date: Mon, 9 Feb 2026 11:48:43 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(r=C3=A9servation):=20Applique?= =?UTF-8?q?=20les=20promotions=20au=20devis=20et=20les=20affiche=20dans=20?= =?UTF-8?q?l'e-mail=20de=20confirmation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Controller/ReserverController.php | 18 ++++++++++++++++++ templates/mails/reserve/confirmation.twig | 10 ++++++++++ 2 files changed, 28 insertions(+) diff --git a/src/Controller/ReserverController.php b/src/Controller/ReserverController.php index dcfc97d..b6951f4 100644 --- a/src/Controller/ReserverController.php +++ b/src/Controller/ReserverController.php @@ -101,6 +101,7 @@ class ReserverController extends AbstractController $devis->setEndAt($dates['end']); $selectedOptionsMap = $sessionData['options'] ?? []; + $runningTotalHT = 0; if (!empty($ids)) { $products = $productRepository->findBy(['id' => $ids]); @@ -116,6 +117,8 @@ class ReserverController extends AbstractController $line->setDay($duration); $devis->addDevisLine($line); + $runningTotalHT += $product->getPriceDay() + ($product->getPriceSup() * max(0, $duration - 1)); + if (isset($selectedOptionsMap[$product->getId()])) { $optionIds = $selectedOptionsMap[$product->getId()]; if (!empty($optionIds)) { @@ -127,6 +130,8 @@ class ReserverController extends AbstractController $lineOpt->setPriceHtSup(0); $lineOpt->setDay($duration); $devis->addDevisLine($lineOpt); + + $runningTotalHT += $option->getPriceHt(); } } } @@ -142,11 +147,24 @@ class ReserverController extends AbstractController $lineOpt->setPriceHtSup(0); $lineOpt->setDay($duration); $devis->addDevisLine($lineOpt); + + $runningTotalHT += $option->getPriceHt(); } } } } + $promoData = $session->getPromotion(); + if ($promoData && $runningTotalHT > 0) { + $discount = $runningTotalHT * ($promoData['percentage'] / 100); + $promoLine = new DevisLine(); + $promoLine->setProduct("Promotion : " . $promoData['name'] . " (-" . $promoData['percentage'] . "%)"); + $promoLine->setPriceHt(-$discount); + $promoLine->setPriceHtSup(0); + $promoLine->setDay(1); + $devis->addDevisLine($promoLine); + } + $pdfService = new DevisPdfService($this->kernel, $devis, $productRepository); $content = $pdfService->generate(); diff --git a/templates/mails/reserve/confirmation.twig b/templates/mails/reserve/confirmation.twig index ad05517..bbdef78 100644 --- a/templates/mails/reserve/confirmation.twig +++ b/templates/mails/reserve/confirmation.twig @@ -34,6 +34,16 @@ Lieu : {{ datas.session.adressEvent }} {{ datas.session.zipCodeEvent }} {{ datas.session.townEvent }} + {% if datas.session.promotion %} + + Promotion Appliquée + + + Offre : {{ datas.session.promotion.name }}
+ Réduction : -{{ datas.session.promotion.percentage }}% +
+ {% endif %} + Lien vers la session