removed work order flags for submitting a pia in delete substatus and the final submit flag from the store and pass it as a parameter to save session instead.
This commit is contained in:
CarlNation 2023-10-29 08:28:32 -04:00
parent a16b494013
commit 166940db04
7 changed files with 74 additions and 51 deletions

View file

@ -89,8 +89,6 @@ const storeActions = {
SAVE_PROMOS: "savePromos", SAVE_PROMOS: "savePromos",
SAVE_CUSTOMER_DETAILS: "saveCustomerDetails", SAVE_CUSTOMER_DETAILS: "saveCustomerDetails",
SAVE_SERVICE_LOCATION_TECH_NOTES: "saveServiceLocationTechNotes", SAVE_SERVICE_LOCATION_TECH_NOTES: "saveServiceLocationTechNotes",
SAVE_WORK_ORDER_FLAG: "saveWorkOrderFlag",
SAVE_PIA_WORK_ORDER: "savePiaWorkOrder",
SAVE_CCTOKEN: "saveCCToken", SAVE_CCTOKEN: "saveCCToken",
SAVE_PAYPAL_TOKEN: "savePaypalToken", SAVE_PAYPAL_TOKEN: "savePaypalToken",
}; };

View file

@ -1,7 +1,5 @@
const storeMutations = { const storeMutations = {
// PAYMENT MUTATIONS // PAYMENT MUTATIONS
UPDATE_WORK_ORDER_FLAG: "updateWorkOrderFlag",
UPDATE_PIA_WORK_ORDER: "updatePiaWorkOrder",
UPDATE_CCTOKEN: "updateCCToken", UPDATE_CCTOKEN: "updateCCToken",
UPDATE_PAYPAL_TOKEN: "updatePaypalToken", UPDATE_PAYPAL_TOKEN: "updatePaypalToken",

View file

@ -53,17 +53,30 @@ export async function loadSessionIfPresent(isConceptInsurance, pageNameToLog) {
This will also set Referral information in the store after saving, and then This will also set Referral information in the store after saving, and then
update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue update the cookie. To force synchronous behavior pass in 'true' for shouldAwaitSaveSessionQueue
*/ */
export async function saveSession({ pageNameToLog, shouldAwaitSaveSessionQueue = false }) { export async function saveSession({
pageNameToLog,
shouldAwaitSaveSessionQueue = false,
submitAfterSave = false,
createDeleteStatusWorkOrderForPia = false,
}) {
var saveSessionPromise; var saveSessionPromise;
if (store.getters.applicationUser.saveSessionPromise) { if (store.getters.applicationUser.saveSessionPromise) {
// queue newest request after current saveSessionPromise resolves // queue newest request after current saveSessionPromise resolves
saveSessionPromise = store.getters.applicationUser.saveSessionPromise.then(() => { saveSessionPromise = store.getters.applicationUser.saveSessionPromise.then(() => {
// get a new saveSessionPromise // get a new saveSessionPromise
return saveSessionHelper(pageNameToLog); return saveSessionHelper(
pageNameToLog,
submitAfterSave,
createDeleteStatusWorkOrderForPia
);
}); });
} else { } else {
// create an initial saveSessionPromise // create an initial saveSessionPromise
saveSessionPromise = saveSessionHelper(pageNameToLog); saveSessionPromise = saveSessionHelper(
pageNameToLog,
submitAfterSave,
createDeleteStatusWorkOrderForPia
);
} }
store.commit(storeMutations.UPDATE_SAVE_SESSION_PROMISE, saveSessionPromise); store.commit(storeMutations.UPDATE_SAVE_SESSION_PROMISE, saveSessionPromise);
// await here to allow for a caller to await and make the function synchronous // await here to allow for a caller to await and make the function synchronous
@ -72,10 +85,16 @@ export async function saveSession({ pageNameToLog, shouldAwaitSaveSessionQueue =
} }
} }
export async function submitWorkOrder({ pageNameToLog }) { export async function submitWorkOrder({
pageNameToLog,
submitAfterSave = false,
createDeleteStatusWorkOrderForPia = false,
}) {
await saveSession({ await saveSession({
pageNameToLog: pageNameToLog, pageNameToLog: pageNameToLog,
shouldAwaitSaveSessionQueue: true, shouldAwaitSaveSessionQueue: true,
submitAfterSave: submitAfterSave,
createDeleteStatusWorkOrderForPia: createDeleteStatusWorkOrderForPia,
}); });
} }
@ -117,10 +136,17 @@ async function loadSession(
/* /*
Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing Encapsulates asynchronous Save Session logic inside a promise to allow for Save Session queuing
*/ */
async function saveSessionHelper(pageNameToLog) { async function saveSessionHelper(
pageNameToLog,
submitAfterSave = false,
createDeleteStatusWorkOrderForPia = false
) {
const savedSessionInfo = await baseMixin.methods.dispatchStoreActionWithLogging( const savedSessionInfo = await baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.SAVE_SESSION, storeActions.SAVE_SESSION,
null, {
submitAfterSave: submitAfterSave,
createDeleteStatusWorkOrderForPia: createDeleteStatusWorkOrderForPia,
},
pageNameToLog pageNameToLog
); );
// Update the store with information received from the saveSession response // Update the store with information received from the saveSession response

View file

@ -266,7 +266,6 @@ export default {
const matchedIndices = []; const matchedIndices = [];
this.cartItems.forEach((cartItem, i) => { this.cartItems.forEach((cartItem, i) => {
if (cartItem.partType === item.partType) { if (cartItem.partType === item.partType) {
// console.log("adding this to matchedIndices: ", i);
matchedIndices.push(i); matchedIndices.push(i);
} }
}); });
@ -289,8 +288,8 @@ export default {
await this.dispatchStoreAction(storeActions.SAVE_PROMOS, this.lineItems.promos, false); await this.dispatchStoreAction(storeActions.SAVE_PROMOS, this.lineItems.promos, false);
if (this.paymentMethod == paymentMethods.LATER) { if (this.paymentMethod == paymentMethods.LATER) {
this.dispatchStoreAction(this.storeActions.SAVE_WORK_ORDER_FLAG, true, false); // this creates the final work order
await submitWorkOrder({ pageNameToLog: "payment-method" }); await submitWorkOrder({ pageNameToLog: "payment-method", submitAfterSave: true });
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(
this.navigationScenarios.CLICKED_FORWARD, this.navigationScenarios.CLICKED_FORWARD,
this.$route this.$route
@ -302,14 +301,25 @@ export default {
async setupPia() { async setupPia() {
this.$refs.loadingModal.showModal(); this.$refs.loadingModal.showModal();
// if we don't have a work order in delete substatus, set the flag and submit // if we don't have a work order in delete substatus, set the flag and submit.
// we need a work order number for pia so we can pass it to safeliteHop.
if (!store.getters.order.workOrderNumber) { if (!store.getters.order.workOrderNumber) {
this.dispatchStoreAction(storeActions.SAVE_PIA_WORK_ORDER, true); try {
await submitWorkOrder({ pageNameToLog: "payment-method" }); await submitWorkOrder({
this.dispatchStoreAction(storeActions.SAVE_PIA_WORK_ORDER, false); pageNameToLog: "payment-method",
this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE); submitAfterSave: false,
createDeleteStatusWorkOrderForPia: true,
});
} 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;
return;
}
} }
this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
this.$router.navigateWithoutSaving( this.$router.navigateWithoutSaving(
this.navigationScenarios.CLICKED_PAY_NOW, this.navigationScenarios.CLICKED_PAY_NOW,
this.$route this.$route

View file

@ -58,14 +58,12 @@ export default {
async processPaypalResponse() { async processPaypalResponse() {
const token = getQuerystringParameter(queryStrings.TOKEN); const token = getQuerystringParameter(queryStrings.TOKEN);
const payerId = getQuerystringParameter(queryStrings.PAYERID); const payerId = getQuerystringParameter(queryStrings.PAYERID);
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_WORK_ORDER_FLAG, true, false);
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_PAYPAL_TOKEN, token, false); baseMixin.methods.dispatchStoreAction(storeActions.SAVE_PAYPAL_TOKEN, token, false);
await this.saveAndSubmitWorkOrder(); await this.saveAndSubmitWorkOrder();
}, },
async processCreditCardResponse() { async processCreditCardResponse() {
const subscriptionID = getQuerystringParameter(queryStrings.SUBSCRIPTIONID); const subscriptionID = getQuerystringParameter(queryStrings.SUBSCRIPTIONID);
baseMixin.methods.dispatchStoreAction(storeActions.SAVE_WORK_ORDER_FLAG, true, false);
const referralSeqNum = getQuerystringParameter(queryStrings.REFERRAL_SEQ_NUM); const referralSeqNum = getQuerystringParameter(queryStrings.REFERRAL_SEQ_NUM);
if (referralSeqNum != store.getters.order.referralSequenceNumber) { if (referralSeqNum != store.getters.order.referralSequenceNumber) {
@ -115,7 +113,23 @@ export default {
async saveAndSubmitWorkOrder() { async saveAndSubmitWorkOrder() {
// Final work order submit after returning from PIA. // Final work order submit after returning from PIA.
await this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE); await this.dispatchStoreAction(storeActions.RESET_SAVE_SESSION_PROMISE);
await submitWorkOrder({ pageNameToLog: "payment-pia-return" }); try {
await submitWorkOrder({
pageNameToLog: "payment-pia-return",
submitAfterSave: true,
});
} catch (error) {
console.log("error: response from submit work order:" + error.message);
this.$router.navigateWithoutSaving(
this.navigationScenarios.PIA_ERROR,
this.$route,
{},
{ [routerParams.DISPLAY_PIA_ALERT]: true }
);
this.$refs.loadingModal.isModalVisible = false;
return;
}
this.$refs.loadingModal.isModalVisible = false; this.$refs.loadingModal.isModalVisible = false;
this.$router.navigateWithoutSaving(this.navigationScenarios.PIA_SUCCESS, this.$route); this.$router.navigateWithoutSaving(this.navigationScenarios.PIA_SUCCESS, this.$route);
}, },

View file

@ -28,7 +28,6 @@ import { getDateDifferenceInDays } from "@/helpers/date-helper";
// Export State // Export State
const getDefaultState = () => { const getDefaultState = () => {
return { return {
submitAfterSave: false,
order: { order: {
vehicle: { vehicle: {
year: null, year: null,
@ -127,7 +126,6 @@ const getDefaultState = () => {
referralCorrelationId: null, referralCorrelationId: null,
eon: null, eon: null,
workOrderNumber: null, workOrderNumber: null,
createDeleteStatusWorkOrderForPia: false,
}, },
applicationUser: { applicationUser: {
eventBus: [], eventBus: [],
@ -147,10 +145,6 @@ export const state = getDefaultState();
// Export Mutations // Export Mutations
export const mutations = { export const mutations = {
updateWorkOrderFlag(state, submitAfterSave) {
state.submitAfterSave = submitAfterSave;
},
// VEHICLE MUTATIONS // VEHICLE MUTATIONS
updateYear(state, year) { updateYear(state, year) {
state.order.vehicle.year = year; state.order.vehicle.year = year;
@ -248,9 +242,6 @@ export const mutations = {
updatePiaType(state, piaType) { updatePiaType(state, piaType) {
state.order.payment.piaType = piaType; state.order.payment.piaType = piaType;
}, },
updatePiaWorkOrder(state, piaWorkOrder) {
state.order.createDeleteStatusWorkOrderForPia = piaWorkOrder;
},
updateWorkOrderNumber(state, workOrderNumber) { updateWorkOrderNumber(state, workOrderNumber) {
state.order.workOrderNumber = workOrderNumber; state.order.workOrderNumber = workOrderNumber;
}, },
@ -566,7 +557,6 @@ export const mutations = {
// Export Getters // Export Getters
export const getters = { export const getters = {
submitAfterSave: (state) => state.submitAfterSave,
vehicle: (state) => state.order.vehicle, vehicle: (state) => state.order.vehicle,
eventBusItem: (state) => (eventCategory, eventSubCategory) => { eventBusItem: (state) => (eventCategory, eventSubCategory) => {
const matchedEvent = state.applicationUser.eventBus.find( const matchedEvent = state.applicationUser.eventBus.find(
@ -1577,13 +1567,17 @@ export const actions = {
}, },
// Session API Actions // Session API Actions
saveSession(context, { pageNameToLog }) { saveSession(context, { pageNameToLog, payload }) {
const vehicle = context.getters.vehicle; const vehicle = context.getters.vehicle;
const damage = context.getters.damage; const damage = context.getters.damage;
const order = context.state.order; const order = context.state.order;
const applicationUser = context.getters.applicationUser; const applicationUser = context.getters.applicationUser;
const lineItems = context.state.order.lineItems; const lineItems = context.state.order.lineItems;
const submitAfterSave = payload?.submitAfterSave === "true";
const createDeleteStatusWorkOrderForPia =
payload?.createDeleteStatusWorkOrderForPia === "true";
// create a new array to avoid mutating state // create a new array to avoid mutating state
const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace); const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace);
@ -1591,7 +1585,7 @@ export const actions = {
method: endpoints.SaveSession.method, method: endpoints.SaveSession.method,
endpoint: endpoints.SaveSession.url, endpoint: endpoints.SaveSession.url,
payload: { payload: {
submitAfterSave: context.state.submitAfterSave, submitAfterSave: submitAfterSave,
userAgent: navigator.userAgent, userAgent: navigator.userAgent,
applicationUser: { applicationUser: {
crmCustomerId: applicationUser.crmCustomerId, crmCustomerId: applicationUser.crmCustomerId,
@ -1702,7 +1696,7 @@ export const actions = {
referralNumber: order.referralNumber?.toString(), referralNumber: order.referralNumber?.toString(),
referralSequenceNumber: order.referralSequenceNumber, referralSequenceNumber: order.referralSequenceNumber,
eon: order.eon, eon: order.eon,
createDeleteStatusWorkOrderForPia: order.createDeleteStatusWorkOrderForPia, createDeleteStatusWorkOrderForPia: createDeleteStatusWorkOrderForPia,
}, },
}, },
logApiCall: true, logApiCall: true,
@ -1773,12 +1767,6 @@ export const actions = {
); );
}, },
saveWorkOrderFlag(context, submitAfterSave) {
context.commit(storeMutations.UPDATE_WORK_ORDER_FLAG, submitAfterSave);
},
savePiaWorkOrder(context, piaWorkOrder) {
context.commit(storeMutations.UPDATE_PIA_WORK_ORDER, piaWorkOrder);
},
saveCCToken(context, ccToken) { saveCCToken(context, ccToken) {
context.commit(storeMutations.UPDATE_CCTOKEN, ccToken); context.commit(storeMutations.UPDATE_CCTOKEN, ccToken);
}, },

View file

@ -2791,17 +2791,6 @@ describe("Actions", () => {
}); });
describe("Getters", () => { describe("Getters", () => {
it("submitAfterSave, should return true", () => {
// Arrange
const storeState = state;
// Act
mutations.updateWorkOrderFlag(storeState, true);
// Assert
expect(getters.submitAfterSave(storeState)).toEqual(true);
});
it("Vehicle getter, should return vehicle data", () => { it("Vehicle getter, should return vehicle data", () => {
// Arrange // Arrange
const storeState = state; const storeState = state;