Merge branch 'develop' into defect/CSR-1432
This commit is contained in:
commit
f543e5fac4
3 changed files with 111 additions and 19 deletions
|
|
@ -26,7 +26,7 @@ module.exports = {
|
||||||
testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],
|
testMatch: ["**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)"],
|
||||||
coverageThreshold: {
|
coverageThreshold: {
|
||||||
global: {
|
global: {
|
||||||
statements: 78,
|
statements: 77,
|
||||||
// Got the go ahead from Mark to temporarily lower this. Taking out initialize component made the year,make,model and style coverage drop a bit. Once unit tests for license plate lookup, vin lookup and address lookup are in the coverage should go back up to 90
|
// Got the go ahead from Mark to temporarily lower this. Taking out initialize component made the year,make,model and style coverage drop a bit. Once unit tests for license plate lookup, vin lookup and address lookup are in the coverage should go back up to 90
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -68,7 +68,7 @@ import {
|
||||||
getRouterLinkRouteFromCopy,
|
getRouterLinkRouteFromCopy,
|
||||||
getRouterLinkDisplayTextFromCopy,
|
getRouterLinkDisplayTextFromCopy,
|
||||||
} from "@/helpers/cms-content-helper";
|
} from "@/helpers/cms-content-helper";
|
||||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants";
|
||||||
import { errorMessages } from "@/constants/error-messages";
|
import { errorMessages } from "@/constants/error-messages";
|
||||||
import { required } from "@/helpers/validation-rules";
|
import { required } from "@/helpers/validation-rules";
|
||||||
import store from "@/store";
|
import store from "@/store";
|
||||||
|
|
@ -338,7 +338,8 @@ export default {
|
||||||
backButtonAction() {
|
backButtonAction() {
|
||||||
this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
|
this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
|
||||||
},
|
},
|
||||||
async forwardButtonAction() {
|
forwardButtonAction() {
|
||||||
|
this.updateSupportingItems();
|
||||||
this.dispatchStoreAction(
|
this.dispatchStoreAction(
|
||||||
this.storeActions.SAVE_SCHEDULE,
|
this.storeActions.SAVE_SCHEDULE,
|
||||||
this.appointmentDateAndTime,
|
this.appointmentDateAndTime,
|
||||||
|
|
@ -346,6 +347,51 @@ export default {
|
||||||
);
|
);
|
||||||
navigateToHeritageFunnel({ loadingModal: this.$refs.loadingModal });
|
navigateToHeritageFunnel({ loadingModal: this.$refs.loadingModal });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
updateSupportingItems() {
|
||||||
|
const supportingItems = store.getters.lineItems.supportingItems;
|
||||||
|
|
||||||
|
// if we have a premium fee(early bird), then save/update supporting items
|
||||||
|
if (
|
||||||
|
this.appointmentType === AppointmentTypeStrings.MOBILE &&
|
||||||
|
this.selectedTimeSlotData?.isPremiumAppointment
|
||||||
|
) {
|
||||||
|
const earlyBirdIndex = supportingItems.findIndex(
|
||||||
|
(item) => item.partNumber == PREMIUM_FEE_PART_TYPE
|
||||||
|
);
|
||||||
|
|
||||||
|
if (earlyBirdIndex >= 0) {
|
||||||
|
supportingItems[earlyBirdIndex].laborAmount =
|
||||||
|
this.mobilePremiumAppointmentFee.laborAmount;
|
||||||
|
supportingItems[earlyBirdIndex].selingPrice =
|
||||||
|
this.mobilePremiumAppointmentFee.selingPrice;
|
||||||
|
supportingItems[earlyBirdIndex].kitPrice =
|
||||||
|
this.mobilePremiumAppointmentFee.kitPrice;
|
||||||
|
} else {
|
||||||
|
supportingItems.push(this.mobilePremiumAppointmentFee);
|
||||||
|
}
|
||||||
|
|
||||||
|
this.dispatchStoreAction(
|
||||||
|
this.storeActions.SAVE_SUPPORTING_ITEMS,
|
||||||
|
supportingItems,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
// if it's not a mobile and/or premium early bird, then make sure we remove any that may have been added
|
||||||
|
const removeEarlyBirdIndex = supportingItems.findIndex(
|
||||||
|
(item) => item.partNumber == PREMIUM_FEE_PART_TYPE
|
||||||
|
);
|
||||||
|
|
||||||
|
if (removeEarlyBirdIndex >= 0) {
|
||||||
|
supportingItems.splice(removeEarlyBirdIndex, 1);
|
||||||
|
this.dispatchStoreAction(
|
||||||
|
this.storeActions.SAVE_SUPPORTING_ITEMS,
|
||||||
|
supportingItems,
|
||||||
|
false
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
watch: {
|
||||||
selectedDate(newValue, oldValue) {
|
selectedDate(newValue, oldValue) {
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import { damageLocationsSelected } from "@/constants/damage-locations-selected";
|
||||||
import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
|
import { fmgPageValues } from "@/router/router-constants/fmgPage-values";
|
||||||
import router from "@/router";
|
import router from "@/router";
|
||||||
import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js";
|
import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper.js";
|
||||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants";
|
||||||
|
|
||||||
// Export State
|
// Export State
|
||||||
const getDefaultState = () => {
|
const getDefaultState = () => {
|
||||||
|
|
@ -351,6 +351,17 @@ export const mutations = {
|
||||||
state.order.schedule.endTime = null;
|
state.order.schedule.endTime = null;
|
||||||
state.order.schedule.routeCode = null;
|
state.order.schedule.routeCode = null;
|
||||||
state.order.schedule.jobMaxMinutes = null;
|
state.order.schedule.jobMaxMinutes = null;
|
||||||
|
|
||||||
|
//early bird fee used on schedule page also needs reset when schedule is reset
|
||||||
|
const supportingItems = state.order.lineItems.supportingItems;
|
||||||
|
const removeEarlyBirdIndex = supportingItems.findIndex(
|
||||||
|
(item) => item.partNumber == PREMIUM_FEE_PART_TYPE
|
||||||
|
);
|
||||||
|
|
||||||
|
if (removeEarlyBirdIndex >= 0) {
|
||||||
|
supportingItems.splice(removeEarlyBirdIndex, 1);
|
||||||
|
state.order.lineItems.supportingItems = supportingItems;
|
||||||
|
}
|
||||||
},
|
},
|
||||||
resetState(state) {
|
resetState(state) {
|
||||||
Object.assign(state, getDefaultState());
|
Object.assign(state, getDefaultState());
|
||||||
|
|
@ -1411,6 +1422,7 @@ export const actions = {
|
||||||
if (context.state.order.eon && context.state.order.eon != response.data.eon) {
|
if (context.state.order.eon && context.state.order.eon != response.data.eon) {
|
||||||
context.commit(storeMutations.RESET_STATE);
|
context.commit(storeMutations.RESET_STATE);
|
||||||
}
|
}
|
||||||
|
|
||||||
context.commit(
|
context.commit(
|
||||||
storeMutations.UPDATE_STATE_WITH_ORDER_INFORMATION,
|
storeMutations.UPDATE_STATE_WITH_ORDER_INFORMATION,
|
||||||
response.data
|
response.data
|
||||||
|
|
@ -2074,6 +2086,40 @@ async function validateAppointment(context, order) {
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
if (newTimeSlotsResponse?.data.days?.length === 0) {
|
||||||
|
context.commit(storeMutations.RESET_SCHEDULE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var mobileRouteCodeFound = false;
|
||||||
|
// if early bird fee is in supporting items then need to check the timeslot to see if offer premium is also still available
|
||||||
|
if (
|
||||||
|
order.lineItem?.supportingItems?.findIndex(
|
||||||
|
(item) => item.partNumber == PREMIUM_FEE_PART_TYPE
|
||||||
|
)
|
||||||
|
) {
|
||||||
|
newTimeSlotsResponse.data.days?.forEach((day) => {
|
||||||
|
day.timeSlots.forEach((ts) => {
|
||||||
|
if (ts.id === order.schedule.routeCode && ts.offerPremium) {
|
||||||
|
mobileRouteCodeFound = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
newTimeSlotsResponse.data.days?.forEach((day) => {
|
||||||
|
day.timeSlots.forEach((ts) => {
|
||||||
|
if (ts.id === order.schedule.routeCode) {
|
||||||
|
mobileRouteCodeFound = true;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mobileRouteCodeFound) {
|
||||||
|
context.commit(storeMutations.RESET_SCHEDULE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
newTimeSlotsResponse = await context.dispatch(
|
newTimeSlotsResponse = await context.dispatch(
|
||||||
storeActions.GET_SHOP_TIME_SLOTS,
|
storeActions.GET_SHOP_TIME_SLOTS,
|
||||||
|
|
@ -2085,24 +2131,24 @@ async function validateAppointment(context, order) {
|
||||||
},
|
},
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
}
|
|
||||||
|
|
||||||
if (newTimeSlotsResponse?.data.days?.length === 0) {
|
if (newTimeSlotsResponse?.data.days?.length === 0) {
|
||||||
context.commit(storeMutations.RESET_SCHEDULE);
|
context.commit(storeMutations.RESET_SCHEDULE);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
var routeCodeFound = false;
|
var routeCodeFound = false;
|
||||||
newTimeSlotsResponse.data.days?.forEach((day) => {
|
newTimeSlotsResponse.data.days?.forEach((day) => {
|
||||||
day.timeSlots.forEach((ts) => {
|
day.timeSlots.forEach((ts) => {
|
||||||
if (ts.id === order.schedule.routeCode) {
|
if (ts.id === order.schedule.routeCode) {
|
||||||
routeCodeFound = true;
|
routeCodeFound = true;
|
||||||
}
|
}
|
||||||
|
});
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
if (!routeCodeFound) {
|
if (!routeCodeFound) {
|
||||||
context.commit(storeMutations.RESET_SCHEDULE);
|
context.commit(storeMutations.RESET_SCHEDULE);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue