fix: cudtom tariffs wasn't use calcCart discounts

This commit is contained in:
skeris 2024-01-07 12:59:13 +03:00
parent d577453e5e
commit 13aa89591d

@ -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)