CSR-1845 | Fix quote pricing with bundle promos

This commit is contained in:
Scott Kiener 2023-11-28 15:10:28 -05:00
parent 064d1a1bc4
commit f165bd41b9

View file

@ -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);
}
});