From de68e746c815a537d42edab1f3eab080b0d7dd8c Mon Sep 17 00:00:00 2001 From: Blessy Louis <112788477+BlessyLouis@users.noreply.github.com> Date: Tue, 30 Jun 2026 14:13:36 +0530 Subject: [PATCH] Enhance processCart to include cart discount logic Refactor processCart to calculate cart subtotal and apply cart-level discounts based on rules. --- src/engine/discountEngine.js | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/src/engine/discountEngine.js b/src/engine/discountEngine.js index 190f2a7..316ced9 100644 --- a/src/engine/discountEngine.js +++ b/src/engine/discountEngine.js @@ -163,7 +163,38 @@ export function applyDiscounts(item, rules) { * Returns an array of DiscountResult objects. */ export function processCart(cartItems, rules) { - return cartItems.map((item) => applyDiscounts(item, rules)) + const itemResults = cartItems.map((item) => + applyDiscounts(item, rules) + ) + + const subtotal = cartTotal(itemResults) + + const cartRule = rules.find( + (r) => + r.scope === 'cart' && + subtotal >= Number(r.minCartValue) + ) + + if (!cartRule) { + return { + items: itemResults, + subtotal, + cartDiscount: 0, + finalTotal: subtotal, + cartRule: null + } + } + + const cartDiscount = + Math.round(subtotal * cartRule.value / 100) + + return { + items: itemResults, + subtotal, + cartDiscount, + finalTotal: subtotal - cartDiscount, + cartRule + } } /**