diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index bb2ef16a0..847b14477 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -73,7 +73,7 @@ const storeActions = { SAVE_VIN: "saveVin", SAVE_REGISTRATION_ADDRESS_LOOKUP: "saveRegistrationAddressLookup", SAVE_GLASS_PARTS: "saveGlassParts", - SAVE_GLASS_PART_PRICES: "saveGlassPartPrices", + SAVE_GLASS_PARTS_SUPPRESSING_STATE_RESETTING: "saveGlassPartsSuppressingStateResetting", SAVE_PART_QUESTION_ANSWERS: "savePartQuestionAnswers", RESET_MOLDING_AND_CAPABILITY_QUESTIONS_IF_NEEDED: "resetMoldingAndCapabilityQuestionAnswersIfNeeded", diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index b7ac47d38..4f1d4e395 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -53,6 +53,7 @@ const storeMutations = { UPDATE_IS_PIA: "updateIsPia", UPDATE_PIA_TYPE: "updatePiaType", WORK_ORDER_NUMBER: "updateWorkOrderNumber", + Customer_Portal_Login_Token: "updateCustomerPortalLoginToken", // EVENT BUS MUTATIONS ADD_EVENT_TO_BUS: "addEventToBus", diff --git a/src/helpers/heritage-integration/order-helper.js b/src/helpers/heritage-integration/order-helper.js index 01a5a780f..27bc735e3 100644 --- a/src/helpers/heritage-integration/order-helper.js +++ b/src/helpers/heritage-integration/order-helper.js @@ -162,6 +162,7 @@ async function saveSessionHelper( crmCustomerId: savedSessionInfo.data.crmCustomerId?.toString(), eon: savedSessionInfo.data.eon, workOrderNumber: savedSessionInfo.data.workOrderNumber, + customerPortalLoginToken: savedSessionInfo.data.customerPortalLoginToken, }, false ); diff --git a/src/layouts/confirmation/confirmation.vue b/src/layouts/confirmation/confirmation.vue index b958d5b9f..505f41bf0 100644 --- a/src/layouts/confirmation/confirmation.vue +++ b/src/layouts/confirmation/confirmation.vue @@ -94,9 +94,13 @@ export default { ScheduleConfirmationImage() { return this.getCmsContent("ScheduleConfirmationWidget", "Image"); }, + CustomerPortalLoginToken() { + return store.getters.order.customerPortalLoginToken; + }, ConfirmationEmailText() { return this.getCmsContent("ConfirmationEmailWidget", "BodyText") ?.replaceAll("{custom:MY_ACCOUNT_URL}", applicationConfig.MY_ACCOUNT) + ?.replaceAll("{custom:CUSTOMER_PORTAL_LOGIN_TOKEN}", this.CustomerPortalLoginToken) ?.replaceAll("<", "<") ?.replaceAll(">", ">"); }, diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index ba1424542..ef0a17a19 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -271,8 +271,19 @@ export default { false ); - await this.dispatchStoreAction(storeActions.SAVE_VAPS, this.lineItems.vaps, false); + // save lineitems as they now have salestax added + await this.dispatchStoreAction( + storeActions.SAVE_GLASS_PARTS_SUPPRESSING_STATE_RESETTING, + this.lineItems.glassParts, + false + ); + await this.dispatchStoreAction( + storeActions.SAVE_SUPPORTING_ITEMS_SUPPRESSING_STATE_RESETTING, + this.lineItems.supportingItems, + false + ); + await this.dispatchStoreAction(storeActions.SAVE_VAPS, this.lineItems.vaps, false); await this.dispatchStoreAction(storeActions.SAVE_PROMOS, this.lineItems.promos, false); if (this.paymentMethod == paymentMethods.LATER) { diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 437fbe743..2b4121c98 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -419,12 +419,10 @@ export default { return itemsForPia; }, getAmountDue() { - return 1600; - //return baseMixin.methods.getAmountDue(store.getters.order.lineItems); + return baseMixin.methods.getAmountDue(store.getters.order.lineItems); }, getDisplayAmountDue() { - return "$1600.00"; - //return baseMixin.methods.getDisplayAmountDue(store.getters.order.lineItems); + return baseMixin.methods.getDisplayAmountDue(store.getters.order.lineItems); }, isPaypal() { if (this.getPaymentType() == "pp") { diff --git a/src/layouts/quote/quote.vue b/src/layouts/quote/quote.vue index 42916b47f..507532f4e 100644 --- a/src/layouts/quote/quote.vue +++ b/src/layouts/quote/quote.vue @@ -258,7 +258,7 @@ export default { if (this.pricedGlassParts.length > 0) { this.dispatchStoreAction( - this.storeActions.SAVE_GLASS_PART_PRICES, + this.storeActions.SAVE_GLASS_PARTS_SUPPRESSING_STATE_RESETTING, this.pricedGlassParts, false ); diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js index 5a99a4960..02f1ed960 100644 --- a/src/mixins/base-mixin.js +++ b/src/mixins/base-mixin.js @@ -114,7 +114,9 @@ export default { return totalPrice; }, getTotalLineItemPrice(lineItem) { - return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice; + return ( + lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice + lineItem.salesTax + ); }, getDisplayAmountDue(lineItems) { return this.getAmountDue(lineItems).toLocaleString("en-US", { @@ -123,7 +125,6 @@ export default { }); }, getAmountDue(lineItems) { - // TODO: verify tax is included in lineitems var amountDue = 0; if (lineItems.glassParts) { amountDue = this.getTotalPriceOfAllLineItemsAndChildParts(lineItems.glassParts); @@ -133,7 +134,7 @@ export default { lineItems.supportingItems ); } - if (lineItems.supportingItems.vaps) { + if (lineItems.vaps) { amountDue += this.getTotalPriceOfAllLineItemsAndChildParts(lineItems.vaps); } return amountDue; diff --git a/src/store/index.js b/src/store/index.js index a7e9be549..0d90f5e92 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -126,6 +126,7 @@ const getDefaultState = () => { referralCorrelationId: null, eon: null, workOrderNumber: null, + customerPortalLoginToken: null, }, applicationUser: { eventBus: [], @@ -245,6 +246,9 @@ export const mutations = { updateWorkOrderNumber(state, workOrderNumber) { state.order.workOrderNumber = workOrderNumber; }, + updateCustomerPortalLoginToken(state, customerPortalLoginToken) { + state.order.customerPortalLoginToken = customerPortalLoginToken; + }, updateCCToken(state, ccToken) { state.order.payment.ccToken.subscriptionId = ccToken.subscriptionId; state.order.payment.ccToken.expMonth = ccToken.expMonth; @@ -451,6 +455,7 @@ export const mutations = { state.order.referralDate = sessionInformation.order.referralDate; state.order.referralCorrelationId = sessionInformation.order.referralCorrelationId; state.order.eon = sessionInformation.order.eon; + state.order.customerPortalLoginToken = sessionInformation.order.CustomerPortalLoginToken; if (state.order.vehicle.vin !== sessionInformation.order.vehicle?.vin) { state.applicationUser.pageData[fmgPageValues.PART_QUESTIONS] = null; @@ -1014,6 +1019,7 @@ export const actions = { savedSessionId, crmCustomerId, workOrderNumber, + customerPortalLoginToken, } ) { context.commit(storeMutations.UPDATE_REFERRAL_NUMBER, referralNumber); @@ -1025,6 +1031,7 @@ export const actions = { context.commit(storeMutations.UPDATE_SAVED_SESSION_ID, savedSessionId); context.commit(storeMutations.UPDATE_CRM_CUSTOMER_ID, crmCustomerId); context.commit(storeMutations.WORK_ORDER_NUMBER, workOrderNumber); + context.commit(storeMutations.Customer_Portal_Login_Token, customerPortalLoginToken); }, logPageView( @@ -2381,7 +2388,7 @@ export const actions = { context.commit(storeMutations.UPDATE_GLASS_PARTS, parts); }, - saveGlassPartPrices(context, parts) { + saveGlassPartsSuppressingStateResetting(context, parts) { context.commit(storeMutations.UPDATE_GLASS_PARTS, parts); },