CSR-1845 | Fix quote pricing with bundle promos
This commit is contained in:
parent
064d1a1bc4
commit
f165bd41b9
1 changed files with 18 additions and 1 deletions
|
|
@ -213,16 +213,33 @@ export function buildToastMessagesFromRevalidateOrValidatePromoResponse(
|
|||
}
|
||||
|
||||
export function getPromosThatMatchLineItemsOnOrder(promos, lineItemsOnOrder) {
|
||||
const matchingPromoCodes = [];
|
||||
const matchingPromos = [];
|
||||
const consolidatedPromosWithIds = {};
|
||||
// Combine bundle promos to make sure each part of the bundle is satisfied
|
||||
promos.forEach((promo) => {
|
||||
const cleanPromoCode = getPromoCodeWithoutBundleIdentifier(promo.promoCode);
|
||||
if (consolidatedPromosWithIds[cleanPromoCode]) {
|
||||
consolidatedPromosWithIds[cleanPromoCode].push(...promo.discountedLineItemIds);
|
||||
} else {
|
||||
consolidatedPromosWithIds[cleanPromoCode] = promo.discountedLineItemIds.slice(0);
|
||||
}
|
||||
});
|
||||
Object.keys(consolidatedPromosWithIds).forEach((promoCode) => {
|
||||
let allIdsMatch = true;
|
||||
promo.discountedLineItemIds.forEach((id) => {
|
||||
consolidatedPromosWithIds[promoCode].forEach((id) => {
|
||||
if (lineItemsOnOrder.filter((x) => x.id === id).length === 0) {
|
||||
allIdsMatch = false;
|
||||
return;
|
||||
}
|
||||
});
|
||||
if (allIdsMatch) {
|
||||
matchingPromoCodes.push(promoCode);
|
||||
}
|
||||
});
|
||||
promos.forEach((promo) => {
|
||||
const cleanPromoCode = getPromoCodeWithoutBundleIdentifier(promo.promoCode);
|
||||
if (matchingPromoCodes.includes(cleanPromoCode)) {
|
||||
matchingPromos.push(promo);
|
||||
}
|
||||
});
|
||||
|
|
|
|||
Loading…
Reference in a new issue