2023-08-11 09:38:05 +00:00
|
|
|
import { Discount, Tariff, findDiscountFactor } from "@frontend/kitui";
|
|
|
|
import { calcCart } from "./calcCart/calcCart";
|
2023-07-14 13:41:31 +00:00
|
|
|
|
2023-07-25 22:31:04 +00:00
|
|
|
|
2023-07-14 13:41:31 +00:00
|
|
|
export function calcIndividualTariffPrices(
|
|
|
|
tariff: Tariff,
|
|
|
|
discounts: Discount[],
|
|
|
|
purchasesAmount: number,
|
2023-08-11 09:38:05 +00:00
|
|
|
currentTariffs: Tariff[],
|
2023-07-14 13:41:31 +00:00
|
|
|
): {
|
2023-08-11 09:38:05 +00:00
|
|
|
priceBeforeDiscounts: number;
|
|
|
|
priceAfterDiscounts: number;
|
2023-06-16 20:09:56 +00:00
|
|
|
} {
|
2023-09-15 23:16:58 +00:00
|
|
|
const priceBeforeDiscounts = tariff.price || tariff.privileges.reduce((sum, privilege) => sum + privilege.amount * privilege.price, 0);
|
2023-08-11 09:38:05 +00:00
|
|
|
let priceAfterDiscounts = priceBeforeDiscounts;
|
2023-06-16 20:09:56 +00:00
|
|
|
|
2023-08-11 09:38:05 +00:00
|
|
|
const cart = calcCart([...currentTariffs, tariff], discounts, purchasesAmount);
|
2023-07-11 01:33:36 +00:00
|
|
|
|
2023-08-11 09:38:05 +00:00
|
|
|
cart.allAppliedDiscounts.forEach(discount => {
|
|
|
|
priceAfterDiscounts *= findDiscountFactor(discount);
|
|
|
|
});
|
2023-07-11 01:33:36 +00:00
|
|
|
|
2023-08-11 09:38:05 +00:00
|
|
|
return { priceBeforeDiscounts, priceAfterDiscounts };
|
2023-06-16 20:09:56 +00:00
|
|
|
}
|