diff --git a/src/utils/cart/cartDiscount.ts b/src/utils/cart/cartDiscount.ts index b3a0b9a..913c4b7 100644 --- a/src/utils/cart/cartDiscount.ts +++ b/src/utils/cart/cartDiscount.ts @@ -6,7 +6,10 @@ export function applyCartDiscount( discounts: Discount[], ) { const cartDiscount = findCartDiscount(cartData.priceAfterDiscounts, discounts); - if (cartDiscount) cartData.priceAfterDiscounts *= cartDiscount.factor; + if (cartDiscount.discount) { + cartData.priceAfterDiscounts *= cartDiscount.factor; + cartData.envolvedDiscounts.push(cartDiscount.discount); + } } export function findCartDiscount( diff --git a/src/utils/cart/loyaltyDiscount.ts b/src/utils/cart/loyaltyDiscount.ts index 8fbc102..a99f6c1 100644 --- a/src/utils/cart/loyaltyDiscount.ts +++ b/src/utils/cart/loyaltyDiscount.ts @@ -7,7 +7,10 @@ export function applyLoyaltyDiscount( purchasesAmount: number, ) { const loyalDiscount = findLoyaltyDiscount(purchasesAmount, discounts); - if (loyalDiscount) cartData.priceAfterDiscounts *= loyalDiscount.factor; + if (loyalDiscount.discount) { + cartData.priceAfterDiscounts *= loyalDiscount.factor; + cartData.envolvedDiscounts.push(loyalDiscount.discount); + } } export function findLoyaltyDiscount( diff --git a/src/utils/cart/privilegeDiscount.ts b/src/utils/cart/privilegeDiscount.ts index 7777cbd..e734d3a 100644 --- a/src/utils/cart/privilegeDiscount.ts +++ b/src/utils/cart/privilegeDiscount.ts @@ -8,8 +8,15 @@ export function applyPrivilegeDiscounts( cartData.services.forEach(service => { service.privileges.forEach(privilege => { const privilegeDiscount = findPrivilegeDiscount(privilege.privilegeId, privilege.price, discounts); - if (privilegeDiscount) privilege.price *= privilegeDiscount.factor; + if (privilegeDiscount.discount) { + privilege.price *= privilegeDiscount.factor; + cartData.envolvedDiscounts.push(privilegeDiscount.discount); + } }); + + cartData.priceAfterDiscounts -= service.price; + service.price = service.privileges.reduce((sum, privilege) => privilege.price + sum, 0); + cartData.priceAfterDiscounts += service.price; }); } diff --git a/src/utils/cart/serviceDiscount.ts b/src/utils/cart/serviceDiscount.ts index f119732..292fe34 100644 --- a/src/utils/cart/serviceDiscount.ts +++ b/src/utils/cart/serviceDiscount.ts @@ -8,8 +8,15 @@ export function applyServiceDiscounts( cartData.services.forEach(service => { service.privileges.forEach(privilege => { const privilegeDiscount = findServiceDiscount(privilege.serviceKey, privilege.price, discounts); - if (privilegeDiscount) privilege.price *= privilegeDiscount.factor; + if (privilegeDiscount.discount) { + privilege.price *= privilegeDiscount.factor; + cartData.envolvedDiscounts.push(privilegeDiscount.discount); + } }); + + cartData.priceAfterDiscounts -= service.price; + service.price = service.privileges.reduce((sum, privilege) => privilege.price + sum, 0); + cartData.priceAfterDiscounts += service.price; }); }