Skip to content

Commit 892218a

Browse files
committed
Merge branch 'main' of github.com:ecomplus/cloud-commerce
2 parents f987611 + 6a44ad5 commit 892218a

1 file changed

Lines changed: 24 additions & 9 deletions

File tree

packages/apps/discounts/lib-mjs/apply-discount.mjs

Lines changed: 24 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -280,14 +280,27 @@ export default async ({ params, application }) => {
280280
return kitDiscount;
281281
});
282282
}
283-
const itemsForKit = params.items.filter((item) => {
284-
return !item.flags?.includes('freebie');
285-
});
286-
const kitDiscounts = getValidDiscountRules(
287-
config.product_kit_discounts,
288-
params,
289-
itemsForKit,
290-
)
283+
const freebieProductIds = [];
284+
if (Array.isArray(config.freebies_rules)) {
285+
config.freebies_rules.forEach((rule) => {
286+
if (
287+
validateDateRange(rule)
288+
&& validateCustomerId(rule, params)
289+
&& mapCampaignProducts({ product_ids: rule.check_product_ids }, params).valid
290+
&& Array.isArray(rule.product_ids)
291+
&& rule.product_ids.length
292+
&& matchFreebieRule(rule, params)
293+
) {
294+
rule.product_ids.forEach((id) => {
295+
if (!freebieProductIds.includes(id)) freebieProductIds.push(id);
296+
});
297+
}
298+
});
299+
}
300+
const kitEligibleItems = freebieProductIds.length
301+
? params.items.filter((item) => !freebieProductIds.includes(item.product_id))
302+
: params.items;
303+
const kitDiscounts = getValidDiscountRules(config.product_kit_discounts, params, kitEligibleItems)
291304
.sort((a, b) => {
292305
if (!Array.isArray(a.product_ids) || !a.product_ids.length) {
293306
if (Array.isArray(b.product_ids) && b.product_ids.length) {
@@ -339,7 +352,9 @@ export default async ({ params, application }) => {
339352
}
340353
// eslint-disable-next-line no-loop-func
341354
kitItems = kitItems.filter((item) => {
342-
return item.quantity && discountedItemIds.indexOf(item.product_id) === -1;
355+
return item.quantity
356+
&& discountedItemIds.indexOf(item.product_id) === -1
357+
&& !freebieProductIds.includes(item.product_id);
343358
});
344359
if (!kitItems.length) {
345360
continue;

0 commit comments

Comments
 (0)