From 352f81c426ddd03002ed2a090bec1acd06f90353 Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Wed, 27 Dec 2023 10:12:57 -0500 Subject: [PATCH] CSR-1862 | Avoid clearing valid and active promo on page load --- src/helpers/promotions-helper.js | 29 +++++++++++++++++++---------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index a592a6d9d..ecdb433ff 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -149,16 +149,25 @@ export async function revalidatePromosAndValidateQueryStringPromo( } else if (!excludeFromInactivePromoErrorCodes.includes(validatePromoResponse.errorCode)) { // Save any valid query string promoCode (not applied) to inactivePromos // in order to not lose the query string promoCode if back button is pressed - const inactivePromoCodes = store.getters.payment.inactivePromos ?? []; - if (!inactivePromoCodes.includes(newPromo)) { - inactivePromoCodes.push(newPromo); - baseMixin.methods.dispatchStoreAction( - storeActions.SAVE_ACTIVE_AND_OR_INACTIVE_PROMOS, - { - inactivePromos: inactivePromoCodes, - }, - false - ); + const activePromoCodes = store.getters.order.lineItems.promos.map((promoObject) => { + return promoObject.promoCode.toUpperCase(); + }); + const isErrorPromoAlreadyOnOrder = activePromoCodes.includes( + validatePromoResponse.promoCode.toUpperCase() + ); + // Do not save an inactivePromo if it is already active on the order + if (!isErrorPromoAlreadyOnOrder) { + const inactivePromoCodes = store.getters.payment.inactivePromos ?? []; + if (!inactivePromoCodes.includes(newPromo)) { + inactivePromoCodes.push(newPromo); + baseMixin.methods.dispatchStoreAction( + storeActions.SAVE_ACTIVE_AND_OR_INACTIVE_PROMOS, + { + inactivePromos: inactivePromoCodes, + }, + false + ); + } } } }