From 033251c79d7c859e75b621e2a12528ecdd5dbad0 Mon Sep 17 00:00:00 2001 From: Methapon2001 <61303214+Methapon2001@users.noreply.github.com> Date: Thu, 26 Dec 2024 16:44:01 +0700 Subject: [PATCH] fix: wrong price --- .../expansion/ProductExpansion.vue | 24 ++++++++----------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/src/pages/09_task-order/expansion/ProductExpansion.vue b/src/pages/09_task-order/expansion/ProductExpansion.vue index 32d69f8c..e5fe1d34 100644 --- a/src/pages/09_task-order/expansion/ProductExpansion.vue +++ b/src/pages/09_task-order/expansion/ProductExpansion.vue @@ -55,7 +55,7 @@ function openList(index: number) { function calcPricePerUnit(product: RequestWork['productService']['product']) { return product.vatIncluded - ? precisionRound(product.serviceCharge / (1 + (config.value?.vat || 0.07))) + ? product.serviceCharge / (1 + (config.value?.vat || 0.07)) : product.serviceCharge; } @@ -63,21 +63,17 @@ function calcPrice( product: RequestWork['productService']['product'], amount: number, ) { - const disc = + const pricePerUnit = product.serviceCharge; + const discount = taskProduct.value.find((v) => v.productId === product.id)?.discount || 0; - const pricePerUnit = calcPricePerUnit(product); + const priceNoVat = product.vatIncluded + ? pricePerUnit / (1 + (config.value?.vat || 0.07)) + : pricePerUnit; + const priceDiscountNoVat = priceNoVat * amount - discount; - return precisionRound( - pricePerUnit * amount - - disc + - precisionRound( - product.calcVat - ? (pricePerUnit * (disc ? amount : 1) - disc) * - (config.value?.vat || 0.07) - : 0, - ) * - (!disc ? amount : 1), - ); + const rawVatTotal = priceDiscountNoVat * (config.value?.vat || 0.07); + + return precisionRound(priceNoVat * amount + rawVatTotal); }