diff --git a/src/constants/payment-method-constants.js b/src/constants/payment-method-constants.js index 807e44c0e..0799f2b2a 100644 --- a/src/constants/payment-method-constants.js +++ b/src/constants/payment-method-constants.js @@ -5,9 +5,3 @@ export const paymentMethods = { PAYPAL: "Paypal", AFTERPAY: "Afterpay", }; - -export const paymentTimes = { - NONE: null, - ADVANCE: "Advance", - LATER: "Later", -}; diff --git a/src/constants/store-actions.js b/src/constants/store-actions.js index 5620612bb..cc1c90d61 100644 --- a/src/constants/store-actions.js +++ b/src/constants/store-actions.js @@ -80,7 +80,7 @@ const storeActions = { SAVE_MOLDING_QUESTION_ANSWERS: "saveMoldingQuestionAnswers", SAVE_CAPABILITY_QUESTION_ANSWERS: "saveCapabilityQuestionAnswers", SAVE_PAYMENT_TYPE: "savePaymentType", - SAVE_PAY_NOW_TYPE: "savePayNowType", + SAVE_PAYMENT_METHOD_CHOICE: "savePaymentMethodChoice", SAVE_PARENT_ACCOUNT_NUMBER: "saveParentAccountNumber", SAVE_SUPPORTING_ITEMS: "saveSupportingItems", SAVE_SUPPORTING_ITEMS_SUPPRESSING_STATE_RESETTING: diff --git a/src/constants/store-mutations.js b/src/constants/store-mutations.js index af3a0a5ad..f5f2ca432 100644 --- a/src/constants/store-mutations.js +++ b/src/constants/store-mutations.js @@ -50,7 +50,8 @@ const storeMutations = { UPDATE_IS_INSURANCE: "updateIsInsurance", UPDATE_SAVED_SESSION_ID: "updateSavedSessionId", UPDATE_CRM_CUSTOMER_ID: "updateCrmCustomerId", - UPDATE_PAY_NOW_TYPE: "updatePayNowType", + UPDATE_IS_PIA: "updateIsPia", + UPDATE_PIA_TYPE: "updatePiaType", WORK_ORDER_NUMBER: "updateWorkOrderNumber", // EVENT BUS MUTATIONS @@ -68,6 +69,7 @@ const storeMutations = { RESET_SERVICE_LOCATION_PROVIDER: "resetServiceLocationProvider", RESET_SERVICE_LOCATION_MOBILE_ADDRESS: "resetServiceLocationMobileAddress", RESET_SCHEDULE: "resetSchedule", + RESET_PAYMENT_METHOD_CHOICE: "resetPaymentMethodChoice", // OTHER MUTATIONS UPDATE_PAGE_DATA: "updatePageData", diff --git a/src/layouts/payment-method/payment-method-question/payment-method-question.vue b/src/layouts/payment-method/payment-method-question/payment-method-question.vue index 473e36114..1544cede7 100644 --- a/src/layouts/payment-method/payment-method-question/payment-method-question.vue +++ b/src/layouts/payment-method/payment-method-question/payment-method-question.vue @@ -8,6 +8,7 @@ :questionText="paymentMethodQuestionText" :answers="paymentMethodAnswerData" isRequired + :validationRules="validationRules" v-model="selectedMethod" textPosition="text-start" /> @@ -27,6 +28,7 @@ export default { }, props: { modelValue: String, + validationRules: String, }, methods: { getAnswersNullSafe(widgetName) { diff --git a/src/layouts/payment-method/payment-method.vue b/src/layouts/payment-method/payment-method.vue index c8e54d9cf..e587bbbcc 100644 --- a/src/layouts/payment-method/payment-method.vue +++ b/src/layouts/payment-method/payment-method.vue @@ -13,7 +13,16 @@ cmsWidgetName="VehicleBannerWidget" :displayGenericVehicleImage="false" /> - + + +

+ {{ noPiaDisclaimer }} +

+ +
+ v-model="paymentMethodInternalModel" + validationRules="option-required" /> + + diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue index 914a51df2..2349ff5cf 100644 --- a/src/layouts/payment/payment.vue +++ b/src/layouts/payment/payment.vue @@ -294,7 +294,7 @@ export default { : store.getters.order.serviceLocation.provider.address.zipCode; }, getPaymentType() { - return store.getters.order.payment.payNowType; + return store.getters.order.payment.piaType; }, getHeaderLine1() { if (!this.isPaypal()) { diff --git a/src/store/index.js b/src/store/index.js index 32395696e..0b0f684eb 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -22,6 +22,7 @@ import { militaryToTwelveHourTime, getDisplayTextForDurationLength, } from "@/layouts/schedule/helpers/schedule-helper"; +import { paymentMethods } from "@/constants/payment-method-constants"; import { getDateDifferenceInDays } from "@/helpers/date-helper"; // Export State @@ -94,7 +95,8 @@ const getDefaultState = () => { coverageStatus: null, }, parentAccountNumber: 0, - payNowType: "cc", + isPia: null, + piaType: null, piaErrorCode: null, inactivePromos: null, }, @@ -227,8 +229,11 @@ export const mutations = { updateIsInsurance(state, isInsurance) { state.order.payment.isInsurance = isInsurance; }, - updatePayNowType(state, payNowType) { - state.order.payment.payNowType = payNowType; + updateIsPia(state, isPia) { + state.order.payment.isPia = isPia; + }, + updatePiaType(state, piaType) { + state.order.payment.piaType = piaType; }, updatePiaErrorCode(state, piaErrorCode) { state.order.payment.piaErrorCode = piaErrorCode; @@ -418,6 +423,10 @@ export const mutations = { state.order.serviceLocation.state = null; state.order.serviceLocation.isVehicleProtected = null; }, + resetPaymentMethodChoice(state) { + state.order.payment.isPia = null; + state.order.payment.piaType = null; + }, // Misc Mutations updateStateWithOrderInformation(state, sessionInformation) { state.order.referralNumber = sessionInformation.order.referralNumber; @@ -888,6 +897,7 @@ export const actions = { context.commit(storeMutations.RESET_SERVICE_LOCATION_PROVIDER); context.commit(storeMutations.RESET_SCHEDULE); + context.commit(storeMutations.RESET_PAYMENT_METHOD_CHOICE); }, resetState(context) { @@ -2012,10 +2022,16 @@ export const actions = { savePaymentType(context, isInsurance) { context.commit(storeMutations.UPDATE_IS_INSURANCE, isInsurance); + + context.commit(storeMutations.RESET_PAYMENT_METHOD_CHOICE); }, - savePayNowType(context, payNowType) { - context.commit(storeMutations.UPDATE_PAY_NOW_TYPE, payNowType); + savePaymentMethodChoice(context, paymentMethod) { + const isPia = paymentMethod !== paymentMethods.LATER; + + context.commit(storeMutations.UPDATE_IS_PIA, isPia); + + context.commit(storeMutations.UPDATE_PIA_TYPE, isPia ? paymentMethod : null); }, saveParentAccountNumber(context, parentAccountNumber) { @@ -2285,6 +2301,7 @@ export const actions = { context.state.order.serviceLocation.appointmentType ) { context.commit(storeMutations.RESET_SCHEDULE); + context.commit(storeMutations.RESET_PAYMENT_METHOD_CHOICE); } }