diff --git a/src/stores/customTariffs.ts b/src/stores/customTariffs.ts index b78254d..e41d75b 100644 --- a/src/stores/customTariffs.ts +++ b/src/stores/customTariffs.ts @@ -5,7 +5,7 @@ import { ServiceKeyToPrivilegesMap } from "@root/model/privilege" import { produce } from "immer" import { create } from "zustand" import { devtools, persist } from "zustand/middleware" -import { Discount, PrivilegeWithAmount/* , findCartDiscount */, findDiscountFactor, findLoyaltyDiscount/* , findPrivilegeDiscount *//* , findServiceDiscount */} from "@frontend/kitui" +import { Discount, PrivilegeWithAmount/* , findCartDiscount */, findDiscountFactor/* , findLoyaltyDiscount *//* , findPrivilegeDiscount *//* , findServiceDiscount */} from "@frontend/kitui" import { findNkoDiscount, calcCart } from "@root/utils/calcCart/calcCart" import { useCartStore } from "./cart" @@ -24,6 +24,28 @@ const initialState: CustomTariffsStore = { summaryPriceAfterDiscountsMap: {}, } +function findLoyaltyDiscount( + purchasesAmount: number, + discounts: Discount[], +): Discount | null { + const applicableDiscounts = discounts.filter(discount => { + return ( + discount.Layer === 4 && + discount.Condition.UserType !== "nko" && + purchasesAmount >= Number(discount.Condition.PurchasesAmount) + ); + }); + + if (!applicableDiscounts.length) return null; + + const maxValueDiscount = applicableDiscounts.reduce((prev, current) => { + return Number(current.Condition.PurchasesAmount) > Number(prev.Condition.PurchasesAmount) ? current : prev; + }); + + return maxValueDiscount; +} + + function findServiceDiscount( serviceKey: string, currentPrice: number, @@ -168,16 +190,19 @@ export const setCustomTariffsUserValue = ( } else { state.privilegeByService[serviceKey].forEach(privilege => { const amount = state.userValuesMap[serviceKey]?.[privilege._id] ?? 0 + console.log(amount, serviceKey, privilege._id) priceWithoutDiscounts += privilege.price * amount const discount = cart.allAppliedDiscounts?.find(e => e.Condition.Product === privilege.privilegeId) + console.log(discount, privilege.price*amount, findDiscountFactor(discount)) //const discount = findPrivilegeDiscount(privilege.privilegeId, amount, discounts) priceAfterDiscounts += privilege.price * amount * findDiscountFactor(discount) }) + console.log(priceAfterDiscounts) - const serviceDiscount = findServiceDiscount(serviceKey, priceAfterDiscounts, discounts) - console.log(serviceDiscount, serviceKey, priceAfterDiscounts, discounts) + const serviceDiscount = cart.allAppliedDiscounts?.find(e => e.Condition.Group === serviceKey) priceAfterDiscounts *= findDiscountFactor(serviceDiscount) + console.log(serviceDiscount, serviceKey, priceAfterDiscounts, discounts) const cartDiscount = findCartDiscount(currentCartTotal+priceAfterDiscounts, discounts) priceAfterDiscounts *= findDiscountFactor(cartDiscount)