fix(promotion): handle promotion buy X get X scenario (#9002)

* fix(promotion): handle promotion buy X get X scenario

* chore: fix qualifiication rules
This commit is contained in:
Riqwan Thamir
2024-09-10 15:12:56 +02:00
committed by GitHub
parent e9b5f76f9a
commit 3593bdfebe
3 changed files with 571 additions and 53 deletions
@@ -53,6 +53,7 @@ import {
validateApplicationMethodAttributes,
validatePromotionRuleAttributes,
} from "@utils"
import { EligibleItem } from "src/utils/compute-actions"
import { joinerConfig } from "../joiner-config"
import { CreatePromotionRuleValueDTO } from "../types/promotion-rule-value"
@@ -337,6 +338,10 @@ export default class PromotionModuleService
PromotionTypes.ComputeActionAdjustmentLine[]
>()
const methodIdPromoValueMap = new Map<string, number>()
// Keeps a map of all elgible items in the buy section and its eligible quantity
const eligibleBuyItemMap = new Map<string, EligibleItem[]>()
// Keeps a map of all elgible items in the target section and its eligible quantity
const eligibleTargetItemMap = new Map<string, EligibleItem[]>()
const automaticPromotions = preventAutoPromotions
? []
: await this.listPromotions(
@@ -467,8 +472,10 @@ export default class PromotionModuleService
const computedActionsForItems =
ComputeActionUtils.getComputedActionsForBuyGet(
promotion,
applicationContext[ApplicationMethodTargetType.ITEMS],
methodIdPromoValueMap
applicationContext[ApplicationMethodTargetType.ITEMS]!,
methodIdPromoValueMap,
eligibleBuyItemMap,
eligibleTargetItemMap
)
computedActions.push(...computedActionsForItems)