Merge remote-tracking branch 'origin/release/2023.12.07' into feature/skiener/CSR-1841

This commit is contained in:
Scott Kiener 2023-11-28 15:40:55 -05:00
commit 981d9ba02b
4 changed files with 28 additions and 9 deletions

View file

@ -19,6 +19,7 @@ const queryStrings = {
AUTH_CODE: "auth_code",
TRANSACTION_ID: "transaction_id",
TRANS_REFERENCE_NUMBER: "auth_trans_ref_no",
DISPLAY_PIA_ALERT: "displayPiaAlert",
};
export { queryStrings };

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

View file

@ -103,6 +103,7 @@ import {
getNewlyInactivatedPromos,
} from "@/helpers/promotions-helper";
import { queryStrings } from "@/constants/query-strings";
import { routerParams } from "@/router/router-constants/router-params";
import { getQuerystringParameter } from "@/helpers/querystring-helper";
import { deepClone } from "@/helpers/object-helper";
@ -421,7 +422,7 @@ export default {
} catch (error) {
console.log("error: response from pia submit work order:" + error.message);
this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
this.$route.params[this.routerParams.DISPLAY_PIA_ALERT] = true;
this.$route.params[routerParams.DISPLAY_PIA_ALERT] = true;
return;
}
}
@ -469,7 +470,10 @@ export default {
return this.paymentMethodInternalModel;
},
shouldDisplayPiaAlert() {
return this.$route.params[this.routerParams.DISPLAY_PIA_ALERT];
return (
this.$route.query[queryStrings.DISPLAY_PIA_ALERT] ||
this.$route.params[routerParams.DISPLAY_PIA_ALERT]
);
},
// Necessary to make the watcher of lineItems work
// JavaScript does not keep a record of the old value, only a reference to it's location in the memory.

View file

@ -24,12 +24,9 @@ export default {
if (piaError) {
console.log("Error during payment: " + piaError);
this.$router.navigateWithoutSaving(
this.navigationScenarios.PIA_ERROR,
this.$route,
{},
{ [routerParams.DISPLAY_PIA_ALERT]: true }
);
this.$router.navigateWithoutSaving(this.navigationScenarios.PIA_ERROR, this.$route, {
[queryStrings.DISPLAY_PIA_ALERT]: true,
});
} else {
switch (store.getters.order.payment.piaType) {
case paymentMethods.CREDIT_CARD: