From 5ff73cc095fbfa96744e591b6c22ec8debeedd7c Mon Sep 17 00:00:00 2001 From: Scott Kiener Date: Thu, 16 Nov 2023 09:56:01 -0500 Subject: [PATCH] CSR-1393 | Fix the display/removal of bundle promo codes in modal --- src/helpers/promotions-helper.js | 21 +++++++++++-------- .../promo-modal-question.vue | 20 ++++++++++++------ 2 files changed, 26 insertions(+), 15 deletions(-) diff --git a/src/helpers/promotions-helper.js b/src/helpers/promotions-helper.js index b8b8f2b4e..567304de6 100644 --- a/src/helpers/promotions-helper.js +++ b/src/helpers/promotions-helper.js @@ -305,18 +305,13 @@ export function createPromoErrorAlert(promoCode, errorCode = null, additionalInf return alert; } -// private methods -function findLineItemsWithPartType(typeToFind, itemsToSearch) { - const partTypeMatches = itemsToSearch?.filter( - (lineItem) => lineItem.partType.toUpperCase() === typeToFind.toUpperCase() - ); - return partTypeMatches; -} - // returns a list of promo codes (string) only without duplicates or bundle identifiers // parameter must be an array of objects with a 'promoCode' field -function getPromoCodesFromPromoObjectsWithoutDuplicates(promos) { +export function getPromoCodesFromPromoObjectsWithoutDuplicates(promos) { const promoCodes = []; + if (!promos) { + return promoCodes; + } promos.forEach((promo) => { const promoCodeToDisplay = getPromoCodeWithoutBundleIdentifier(promo.promoCode); if (!promoCodes.includes(promoCodeToDisplay)) { @@ -326,3 +321,11 @@ function getPromoCodesFromPromoObjectsWithoutDuplicates(promos) { return promoCodes; } + +// private methods +function findLineItemsWithPartType(typeToFind, itemsToSearch) { + const partTypeMatches = itemsToSearch?.filter( + (lineItem) => lineItem.partType.toUpperCase() === typeToFind.toUpperCase() + ); + return partTypeMatches; +} diff --git a/src/layouts/payment-method/promo-modal-question/promo-modal-question.vue b/src/layouts/payment-method/promo-modal-question/promo-modal-question.vue index 1f9fc4a9a..25a9d1fe8 100644 --- a/src/layouts/payment-method/promo-modal-question/promo-modal-question.vue +++ b/src/layouts/payment-method/promo-modal-question/promo-modal-question.vue @@ -35,14 +35,14 @@ cmsWidgetName="AlertInvalidPromoOnOrderWidget" alertClass="alert-danger" v-bind:isDismissible="true" /> -
- Promo code "{{ promo.promoCode }}" applied +
+ Promo code "{{ promoCode }}" applied + @click-event="removeItem(promoCode)" />
@@ -56,6 +56,8 @@ import { storeActions } from "@/constants/store-actions.js"; import { getVapsThatNeedToBeAddedToSatisfyPromos, promoErrorCodes, + getPromoCodesFromPromoObjectsWithoutDuplicates, + getPromoCodeWithoutBundleIdentifier, } from "@/helpers/promotions-helper"; import { deepClone } from "@/helpers/object-helper"; import baseMixin from "@/mixins/base-mixin.js"; @@ -122,8 +124,11 @@ export default { resetsOnPromoInput() { this.resetAlerts(); }, - getPromoList() { - return this.lineItems.promos; + getPromoCodeList() { + const promosToDisplay = getPromoCodesFromPromoObjectsWithoutDuplicates( + this.lineItems.promos + ); + return promosToDisplay; }, getPromoCode() { return this.lineItems.promos?.[0].promoCode; @@ -171,7 +176,10 @@ export default { removeItem(promo) { this.lineItems[cartItemCategories.PROMOS] = this.lineItems[ cartItemCategories.PROMOS - ].filter((lineItemsToKeep) => lineItemsToKeep.promoCode != promo); + ].filter( + (lineItemsToKeep) => + getPromoCodeWithoutBundleIdentifier(lineItemsToKeep.promoCode) != promo + ); }, async addPromoCode() { if (this.promoCode) {