front-hub/src/utils/calcTariffPrices.ts
2023-12-27 01:40:31 +03:00

41 lines
1.5 KiB
TypeScript

import { Discount, Tariff, findDiscountFactor } from "@frontend/kitui"
import { calcCart } from "./calcCart/calcCart"
export function calcIndividualTariffPrices(
tariff: Tariff,
discounts: Discount[],
purchasesAmount: number,
currentTariffs: Tariff[],
isUserNko?: boolean,
): {
priceBeforeDiscounts: number;
priceAfterDiscounts: number;
} {
const priceBeforeDiscounts =
tariff.price || tariff.privileges.reduce((sum, privilege) => sum + privilege.amount * privilege.price, 0)
let priceAfterDiscounts = 0
const cart = calcCart([...currentTariffs, tariff], discounts, purchasesAmount, isUserNko)
if (cart.allAppliedDiscounts[0]?.Target.Overhelm) return {priceBeforeDiscounts: priceBeforeDiscounts, priceAfterDiscounts: priceBeforeDiscounts * cart.allAppliedDiscounts[0].Target.Factor }
cart.services.forEach(s => {
if (s.serviceKey === tariff.privileges[0].serviceKey) {
let processed = false
s.tariffs.forEach(t => {
if (t.id === tariff._id && !processed) {
processed = true
t.privileges.forEach(p => priceAfterDiscounts+=p.price)
}
})
priceAfterDiscounts *=findDiscountFactor(s.appliedServiceDiscount)
}
})
priceAfterDiscounts*=findDiscountFactor(cart.appliedLoyaltyDiscount)
priceAfterDiscounts*=findDiscountFactor(cart.appliedCartPurchasesDiscount)
// cart.allAppliedDiscounts.forEach((discount) => {
// priceAfterDiscounts *= findDiscountFactor(discount)
// })
//priceAfterDiscounts = cart.priceAfterDiscounts
return { priceBeforeDiscounts, priceAfterDiscounts }
}