CSR-1392
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:
parent
a16b494013
commit
166940db04
7 changed files with 74 additions and 51 deletions
|
|
@ -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",
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -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",
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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);
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -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;
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue