UIKit/src/utils/cart/cartDiscount.ts

38 lines
1.2 KiB
TypeScript
Raw Normal View History

2023-07-13 13:45:38 +00:00
import { CartData, Discount } from "../../model";
export function applyCartDiscount(
cartData: CartData,
discounts: Discount[],
) {
const cartDiscount = findCartDiscount(cartData.priceAfterDiscounts, discounts);
2023-07-22 14:02:07 +00:00
if (cartDiscount.discount) {
cartData.priceAfterDiscounts *= cartDiscount.factor;
cartData.allAppliedDiscounts.push(cartDiscount.discount);
cartData.appliedCartPurchasesDiscount = cartDiscount.discount;
2023-07-22 14:02:07 +00:00
}
2023-07-13 13:45:38 +00:00
}
export function findCartDiscount(
cartPurchasesAmount: number,
discounts: Discount[],
): {
discount: Discount | null,
factor: number,
} {
2023-07-13 13:45:38 +00:00
const applicableDiscounts = discounts.filter(discount => {
return (
discount.Layer === 3 &&
cartPurchasesAmount >= discount.Condition.CartPurchasesAmount
);
});
if (!applicableDiscounts.length) return { discount: null, factor: 1 };
2023-07-13 13:45:38 +00:00
const maxValueDiscount = applicableDiscounts.reduce((prev, current) => {
return current.Condition.CartPurchasesAmount > prev.Condition.CartPurchasesAmount ? current : prev;
});
return { discount: maxValueDiscount, factor: maxValueDiscount.Target.Factor };
2023-07-13 13:45:38 +00:00
}