+
diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js
index d87b3cc85..df03693ee 100644
--- a/src/mixins/base-mixin.js
+++ b/src/mixins/base-mixin.js
@@ -115,6 +115,27 @@ export default {
getTotalLineItemPrice(lineItem) {
return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice;
},
+ getDisplayAmountDue(lineItems) {
+ return this.getAmountDue(lineItems).toLocaleString("en-US", {
+ style: "currency",
+ currency: "USD",
+ });
+ },
+ getAmountDue(lineItems) {
+ // TODO: verify tax is included in lineitems
+ // Price everything in lineitems except the server data string
+ var amountDue = 0;
+ const itemsClone = { ...lineItems };
+ delete itemsClone.serverData;
+ for (var propertyName in itemsClone) {
+ if (itemsClone[propertyName]) {
+ amountDue += this.getTotalPriceOfAllLineItemsAndChildParts(
+ itemsClone[propertyName]
+ );
+ }
+ }
+ return amountDue;
+ },
scrollToPageTop() {
const container = document.getElementsByClassName("page-container-grouped-styles")[0];
container.scrollTo({ top: 0, left: 0, behavior: "smooth" });
diff --git a/src/store/index.js b/src/store/index.js
index 39dede74e..14bc5ce4c 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -14,6 +14,7 @@ import { deleteFunnelCookie } from "@/helpers/heritage-integration/cookie-helper
import { deepEqual } from "@/helpers/object-helper";
import { AppointmentTypeStrings, PREMIUM_FEE_PART_TYPE } from "@/constants/schedule-constants";
import { getQuerystringParameter } from "@/helpers/querystring-helper";
+import { deepClone } from "@/helpers/object-helper";
import { queryStrings } from "@/constants/query-strings";
import { partTypeStrings } from "@/constants/part-type-strings";
import {
@@ -111,6 +112,7 @@ const getDefaultState = () => {
referralCorrelationId: null,
eon: null,
workOrderNumber: null,
+ createDeleteStatusWorkOrderForPia: false,
},
applicationUser: {
eventBus: [],
@@ -231,6 +233,9 @@ export const mutations = {
updatePiaErrorCode(state, piaErrorCode) {
state.order.payment.piaErrorCode = piaErrorCode;
},
+ updatePiaWorkOrder(state, piaWorkOrder) {
+ state.order.createDeleteStatusWorkOrderForPia = piaWorkOrder;
+ },
updateWorkOrderNumber(state, workOrderNumber) {
state.order.workOrderNumber = workOrderNumber;
},
@@ -602,7 +607,10 @@ export const getters = {
funnelServiceCity: state.order.serviceLocation.city,
funnelServiceState: state.order.serviceLocation.state,
funnelServiceZipCode: state.order.serviceLocation.zipCode,
+ funnelServiceZipCodeCtu: state.order.serviceLocation.zipCodeCtu,
+ funnelProviderNumber: state.order.serviceLocation.provider.providerNumber,
funnelParentAccountNumber: state.order.payment.parentAccountNumber,
+ funnelReferralType: state.order.payment.isInsurance ? "INSURANCE" : "CASH QUOTE",
funnelIsCoverageVerified: state.order.payment.insuranceCoverage.isVerified,
funnelHasRecalibrationPart: getHasRecalibrationPart(state),
funnelSelectedMultiGlass: state.order.damage.glassToReplace?.length > 1,
@@ -1633,6 +1641,7 @@ export const actions = {
referralNumber: order.referralNumber?.toString(),
referralSequenceNumber: order.referralSequenceNumber,
eon: order.eon,
+ createDeleteStatusWorkOrderForPia: order.createDeleteStatusWorkOrderForPia,
},
},
logApiCall: true,
@@ -1709,6 +1718,9 @@ export const actions = {
savePiaErrorCode(context, piaErrorCode) {
context.commit(storeMutations.UPDATE_PIA_ERROR_CODE, piaErrorCode);
},
+ savePiaWorkOrder(context, piaWorkOrder) {
+ context.commit(storeMutations.UPDATE_PIA_WORK_ORDER, piaWorkOrder);
+ },
// Business domain actions
@@ -2075,9 +2087,9 @@ export const actions = {
context.commit(storeMutations.UPDATE_LINE_ITEMS_SERVER_DATA, response.data.serverData);
- availableLineItems = addPricesToLineItems(availableLineItems, response.data.lineItems);
+ const pricedLineItems = addPricesToLineItems(availableLineItems, response.data.lineItems);
- return availableLineItems;
+ return pricedLineItems;
},
async validateOrderPromoAndSaveServerData(
@@ -2374,7 +2386,8 @@ function convertGlassPieceNamingFromApi(glassArray) {
}
function addPricesToLineItems(lineItems, pricingLineItems) {
- lineItems.forEach((lineItem) => {
+ const pricedLineItems = deepClone(lineItems);
+ pricedLineItems.forEach((lineItem) => {
let lineItemIndex = pricingLineItems.findIndex(
(pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber
);
@@ -2386,7 +2399,7 @@ function addPricesToLineItems(lineItems, pricingLineItems) {
lineItem.sellingPrice = pricedLineItem.sellingPrice;
lineItem.kitPrice = pricedLineItem.kitPrice;
});
- return lineItems;
+ return pricedLineItems;
}
function getArrayOfAllLineItems(lineItems) {
diff --git a/src/store/store.spec.js b/src/store/store.spec.js
index 85227a390..1c9a5e92b 100644
--- a/src/store/store.spec.js
+++ b/src/store/store.spec.js
@@ -2945,6 +2945,9 @@ describe("Getters", () => {
funnelSupportingItems: null,
funnelVaps: null,
funnelGlassToReplace: null,
+ funnelProviderNumber: "1",
+ funnelReferralType: "CASH QUOTE",
+ funnelServiceZipCodeCtu: "11111",
};
//Act
@@ -2959,12 +2962,17 @@ describe("Getters", () => {
city: mockStateValues.funnelServiceCity,
state: mockStateValues.funnelServiceState,
zipCode: mockStateValues.funnelServiceZipCode,
+ zipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
+ provider: {
+ providerNumber: mockStateValues.funnelProviderNumber,
+ },
});
mutations.updateParentAcctNumber(storeState, mockStateValues.funnelParentAccountNumber);
mutations.updateInsuranceVerifiedStatus(
storeState,
mockStateValues.funnelIsCoverageVerified
);
+ mutations.updateIsInsurance(storeState, false);
mutations.updateGlassParts(storeState, mockStateValues.funnelGlassParts);
mutations.updateSupportingItems(storeState, mockStateValues.funnelSupportingItems);
mutations.updateVaps(storeState, mockStateValues.funnelVaps);
@@ -2992,6 +3000,9 @@ describe("Getters", () => {
funnelSelectedBackGlass: false,
funnelSelectedDriverSideGlass: false,
funnelSelectedPassengerSideGlass: false,
+ funnelProviderNumber: mockStateValues.funnelProviderNumber,
+ funnelReferralType: mockStateValues.funnelReferralType,
+ funnelServiceZipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
});
});
@@ -3014,6 +3025,9 @@ describe("Getters", () => {
funnelGlassParts: [],
funnelOtherParts: [],
funnelGlassToReplace: [],
+ funnelProviderNumber: "1",
+ funnelReferralType: "CASH QUOTE",
+ funnelServiceZipCodeCtu: "11111",
};
//Act
@@ -3028,12 +3042,17 @@ describe("Getters", () => {
city: mockStateValues.funnelServiceCity,
state: mockStateValues.funnelServiceState,
zipCode: mockStateValues.funnelServiceZipCode,
+ zipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
+ provider: {
+ providerNumber: mockStateValues.funnelProviderNumber,
+ },
});
mutations.updateParentAcctNumber(storeState, mockStateValues.funnelParentAccountNumber);
mutations.updateInsuranceVerifiedStatus(
storeState,
mockStateValues.funnelIsCoverageVerified
);
+ mutations.updateIsInsurance(storeState, false);
mutations.updateGlassParts(storeState, mockStateValues.funnelGlassParts);
mutations.updateSupportingItems(storeState, mockStateValues.funnelSupportingItems);
mutations.updateVaps(storeState, mockStateValues.funnelVaps);
@@ -3061,6 +3080,9 @@ describe("Getters", () => {
funnelSelectedBackGlass: false,
funnelSelectedDriverSideGlass: false,
funnelSelectedPassengerSideGlass: false,
+ funnelProviderNumber: mockStateValues.funnelProviderNumber,
+ funnelReferralType: mockStateValues.funnelReferralType,
+ funnelServiceZipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
});
});
@@ -3096,6 +3118,9 @@ describe("Getters", () => {
glassName: "Single",
},
],
+ funnelProviderNumber: "1",
+ funnelReferralType: "CASH QUOTE",
+ funnelServiceZipCodeCtu: "11111",
};
//Act
@@ -3110,9 +3135,14 @@ describe("Getters", () => {
city: mockStateValues.serviceCity,
state: mockStateValues.serviceState,
zipCode: mockStateValues.serviceZipCode,
+ zipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
+ provider: {
+ providerNumber: mockStateValues.funnelProviderNumber,
+ },
});
mutations.updateParentAcctNumber(storeState, mockStateValues.parentAccountNumber);
mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.isCoverageVerified);
+ mutations.updateIsInsurance(storeState, false);
mutations.updateGlassParts(storeState, mockStateValues.glassParts);
mutations.updateSupportingItems(storeState, mockStateValues.funnelSupportingItems);
mutations.updateVaps(storeState, mockStateValues.funnelVaps);
@@ -3140,6 +3170,9 @@ describe("Getters", () => {
funnelSelectedBackGlass: false,
funnelSelectedDriverSideGlass: false,
funnelSelectedPassengerSideGlass: false,
+ funnelProviderNumber: mockStateValues.funnelProviderNumber,
+ funnelReferralType: mockStateValues.funnelReferralType,
+ funnelServiceZipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
});
});
@@ -3201,6 +3234,9 @@ describe("Getters", () => {
glassName: "Quarter",
},
],
+ funnelProviderNumber: "1",
+ funnelReferralType: "CASH QUOTE",
+ funnelServiceZipCodeCtu: "11111",
};
//Act
@@ -3215,9 +3251,14 @@ describe("Getters", () => {
city: mockStateValues.serviceCity,
state: mockStateValues.serviceState,
zipCode: mockStateValues.serviceZipCode,
+ zipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
+ provider: {
+ providerNumber: mockStateValues.funnelProviderNumber,
+ },
});
mutations.updateParentAcctNumber(storeState, mockStateValues.parentAccountNumber);
mutations.updateInsuranceVerifiedStatus(storeState, mockStateValues.isCoverageVerified);
+ mutations.updateIsInsurance(storeState, false);
mutations.updateGlassParts(storeState, mockStateValues.glassParts);
mutations.updateSupportingItems(storeState, mockStateValues.funnelSupportingItems);
mutations.updateVaps(storeState, mockStateValues.funnelVaps);
@@ -3245,6 +3286,9 @@ describe("Getters", () => {
funnelSelectedBackGlass: true,
funnelSelectedDriverSideGlass: true,
funnelSelectedPassengerSideGlass: true,
+ funnelProviderNumber: mockStateValues.funnelProviderNumber,
+ funnelReferralType: mockStateValues.funnelReferralType,
+ funnelServiceZipCodeCtu: mockStateValues.funnelServiceZipCodeCtu,
});
});
});
diff --git a/src/styles/common-styles.scss b/src/styles/common-styles.scss
index f6d19dc4f..6bb1bd64c 100644
--- a/src/styles/common-styles.scss
+++ b/src/styles/common-styles.scss
@@ -5,6 +5,7 @@ body {
background-color: #fff;
color: #4d5151;
.container-fluid {
+ padding: 0 1.5rem;
.prevent-squish {
overflow-x: unset;
}