diff --git a/src/layouts/service-location/service-location.vue b/src/layouts/service-location/service-location.vue index 2c0e0619b..0eaaffbd4 100644 --- a/src/layouts/service-location/service-location.vue +++ b/src/layouts/service-location/service-location.vue @@ -116,6 +116,8 @@ import store from "@/store"; import { defineRule } from "vee-validate"; import { errorMessages } from "@/constants/error-messages"; +const MOBILE_FEE_PART_TYPE = "MOBILE FEE"; + // DEFINE VALIDATION RULES defineRule("mobile-location-required", (value) => { if ( @@ -375,6 +377,43 @@ export default { backButtonAction() { this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route); }, + updateAndSaveSupportingItems() { + const supportingItems = store.getters.lineItems.supportingItems; + // if we have a mobile fee, then save/update supporting items + if (this.selectedAppointmentType == "Mobile") { + const mobileFeeIndex = supportingItems.findIndex( + (item) => item.partType == MOBILE_FEE_PART_TYPE + ); + // If it already exists, update the price with latest data + if (mobileFeeIndex >= 0) { + supportingItems[mobileFeeIndex].laborAmount = this.mobileFeePart.laborAmount; + supportingItems[mobileFeeIndex].selingPrice = this.mobileFeePart.selingPrice; + supportingItems[mobileFeeIndex].kitPrice = this.mobileFeePart.kitPrice; + } else { + supportingItems.push(this.mobileFeePart); + } + + this.dispatchStoreAction( + this.storeActions.SAVE_SUPPORTING_ITEMS_SUPPRESSING_STATE_RESETTING, + supportingItems, + false + ); + } else { + // if it's not a mobile, then make sure we remove any that may have been added + const removeMobileFeeIndex = supportingItems.findIndex( + (item) => item.partType == MOBILE_FEE_PART_TYPE + ); + + if (removeMobileFeeIndex >= 0) { + supportingItems.splice(removeMobileFeeIndex, 1); + this.dispatchStoreAction( + this.storeActions.SAVE_SUPPORTING_ITEMS_SUPPRESSING_STATE_RESETTING, + supportingItems, + false + ); + } + } + }, async forwardButtonAction() { await this.dispatchStoreAction( this.storeActions.SAVE_SERVICE_LOCATION, @@ -401,6 +440,8 @@ export default { false ); + this.updateAndSaveSupportingItems(); + this.$router.navigateWithSaving( this.navigationScenarios.SELECTED_LOCATION, this.$route