From 08c11473369071d8345ba4c8a5a9479e761b4ed4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Tue, 15 Apr 2025 16:32:23 +0200 Subject: [PATCH] fix: correctly calculate option price per person closes #8697b8j0m --- .../js/components/GroupsPriceCalculator.vue | 49 ++++++++++++------- 1 file changed, 31 insertions(+), 18 deletions(-) diff --git a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/GroupsPriceCalculator.vue b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/GroupsPriceCalculator.vue index 37d28a19..a291d6f3 100644 --- a/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/GroupsPriceCalculator.vue +++ b/public/typo3conf/ext/ep_theme/Resources/Private/Assets/js/components/GroupsPriceCalculator.vue @@ -95,7 +95,7 @@ {{ selectedOption.title }} - {{ formatCurrency(selectedOption.price) }} + {{ formatCurrency(calculateOptionPrice(selectedOption)) }} @@ -114,8 +114,11 @@ Gesamtpreis - {{ formatCurrency(priceTotal) }}
zzgl. vor Ort zu entrichtender - Ortstaxe + + {{ formatCurrency(priceTotal) }} +
+ zzgl. vor Ort zu entrichtender Ortstaxe + @@ -371,6 +374,28 @@ export default { return price }, + calculateOptionPrice(option) { + let price = { + EUR: 0, + CHF: 0, + }; + let optionPriceEUR = option.price.EUR + let optionPriceCHF = option.price.CHF + if (1 === option.type) { + price.EUR = optionPriceEUR; + price.CHF = optionPriceCHF; + } else if (2 === option.type) { + price.EUR = optionPriceEUR * this.selectedPax; + price.CHF = optionPriceCHF * this.selectedPax; + } else if (3 === option.type) { + price.EUR = optionPriceEUR * this.nightsCount; + price.CHF = optionPriceCHF * this.nightsCount; + } else if (4 === option.type) { + price.EUR = optionPriceEUR * this.nightsCount * this.selectedPax; + price.CHF = optionPriceCHF * this.nightsCount * this.selectedPax; + } + return price; + }, formatOptionPriceType(option) { if (2 === option.type) { return ` (${this.formatCurrency(option.price)} pro Person)` @@ -518,21 +543,9 @@ export default { CHF: 0, }; for (let option of this.selectedOptions) { - let optionPriceEUR = option.price.EUR - let optionPriceCHF = option.price.CHF - if (1 === option.type) { - price.EUR += optionPriceEUR; - price.CHF += optionPriceCHF; - } else if (2 === option.type) { - price.EUR += optionPriceEUR * this.selectedPax; - price.CHF += optionPriceCHF * this.selectedPax; - } else if (3 === option.type) { - price.EUR += optionPriceEUR * this.nightsCount; - price.CHF += optionPriceCHF * this.nightsCount; - } else if (4 === option.type) { - price.EUR += optionPriceEUR * this.nightsCount * this.selectedPax; - price.CHF += optionPriceCHF * this.nightsCount * this.selectedPax; - } + let optionPrice = this.calculateOptionPrice(option) + price.EUR += optionPrice.EUR; + price.CHF += optionPrice.CHF; } return price; },