Additional schedule page prereqs refactor
This commit is contained in:
parent
e138dfe508
commit
3b950302ff
3 changed files with 143 additions and 112 deletions
|
|
@ -1,7 +1,7 @@
|
|||
import { debugLog } from "@/helpers/debug-log-helper.js";
|
||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||
import { coverageStatus } from "@/constants/insurance";
|
||||
import store from "@/store";
|
||||
import { applicationConfig } from "@/constants/application-config";
|
||||
|
||||
export function logPagePrereqsStart(source, preReqResult) {
|
||||
// prettier-ignore
|
||||
|
|
@ -87,19 +87,31 @@ export function hasServiceLocationInfo(order, logQueue = null) {
|
|||
}
|
||||
|
||||
export function hasInsuranceInfo(order, logQueue = null) {
|
||||
const isInsurance = order.payment.isInsurance;
|
||||
const insuranceCoverageStatus = store.getters.payment?.insuranceCoverage?.coverageStatus;
|
||||
const currentDeductible = store.getters.policy?.currentDeductible;
|
||||
const isInsurance = order.payment?.isInsurance;
|
||||
const insuranceCoverageStatus = order.payment?.insuranceCoverage?.coverageStatus;
|
||||
const currentDeductible = order.policy?.currentDeductible;
|
||||
const parentAccountNumber = order.payment?.parentAccountNumber;
|
||||
const policyNumber = order.policy?.policyNumber;
|
||||
|
||||
let result = false;
|
||||
if (isInsurance !== null) {
|
||||
if (
|
||||
insuranceCoverageStatus === coverageStatus.VERIFIED &&
|
||||
!(currentDeductible === 0 || currentDeductible > 0)
|
||||
) {
|
||||
result = false; // if coverageStatus is verified there must be a valid deductible also
|
||||
if (isInsurance === false) {
|
||||
result = true; // Cash selected - no need for policy number or parent account
|
||||
} else {
|
||||
result = true;
|
||||
const parentAccountNotCash =
|
||||
parentAccountNumber !== applicationConfig.CASH_PARENT_ACCOUNT_NUMBER;
|
||||
const hasPolicyNumber = !!policyNumber;
|
||||
|
||||
if (!parentAccountNotCash || !hasPolicyNumber) {
|
||||
result = false;
|
||||
} else if (
|
||||
insuranceCoverageStatus === coverageStatus.VERIFIED &&
|
||||
!(currentDeductible === 0 || currentDeductible > 0)
|
||||
) {
|
||||
result = false; // if coverageStatus is verified there must be a valid deductible also
|
||||
} else {
|
||||
result = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -107,6 +119,10 @@ export function hasInsuranceInfo(order, logQueue = null) {
|
|||
// prettier-ignore
|
||||
{
|
||||
debugLog("hasInsuranceInfo:", result, !result);
|
||||
if (isInsurance === true) {
|
||||
debugLog("hasInsuranceInfo parentAccountNumber:", parentAccountNumber, !result);
|
||||
debugLog("hasInsuranceInfo policyNumber:", policyNumber, !result);
|
||||
}
|
||||
if (insuranceCoverageStatus === coverageStatus.VERIFIED) {
|
||||
debugLog("hasInsuranceInfo coverageStatus:", insuranceCoverageStatus, !result);
|
||||
debugLog("hasInsuranceInfo currentDeductible:", currentDeductible, !result);
|
||||
|
|
|
|||
|
|
@ -1,5 +1,4 @@
|
|||
import * as pagePrereqsHelper from "@/helpers/page-prerequisites-helper";
|
||||
import store from "@/store";
|
||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||
import { coverageStatus } from "@/constants/insurance";
|
||||
|
||||
|
|
@ -293,25 +292,6 @@ describe("page-prerequisites-helper.js", () => {
|
|||
});
|
||||
|
||||
describe("hasInsuranceInfo", () => {
|
||||
const baseOrder = {
|
||||
payment: {
|
||||
isInsurance: false,
|
||||
},
|
||||
};
|
||||
|
||||
beforeEach(() => {
|
||||
store.getters = {
|
||||
payment: {
|
||||
insuranceCoverage: {
|
||||
coverageStatus: null,
|
||||
},
|
||||
},
|
||||
policy: {
|
||||
currentDeductible: 100,
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
test("returns false when isInsurance is null", () => {
|
||||
const order = { payment: { isInsurance: null } };
|
||||
|
||||
|
|
@ -320,19 +300,43 @@ describe("page-prerequisites-helper.js", () => {
|
|||
expect(result).toBe(false);
|
||||
});
|
||||
|
||||
test("returns true when isInsurance is false and coverage is not verified", () => {
|
||||
// Arrange
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.PENDING;
|
||||
test("returns true when isInsurance is false (cash selected)", () => {
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: false,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.PENDING },
|
||||
},
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(baseOrder);
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
test("returns true when isInsurance is true and coverage is not verified", () => {
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.PENDING },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123" },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
test("returns true when isInsurance is true and coverage is verified with valid deductible", () => {
|
||||
const order = { payment: { isInsurance: true } };
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.VERIFIED;
|
||||
store.getters.policy.currentDeductible = 100;
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.VERIFIED },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123", currentDeductible: 100 },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
|
|
@ -340,19 +344,59 @@ describe("page-prerequisites-helper.js", () => {
|
|||
});
|
||||
|
||||
test("returns true when coverage is verified and deductible is 0", () => {
|
||||
const order = { payment: { isInsurance: true } };
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.VERIFIED;
|
||||
store.getters.policy.currentDeductible = 0;
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.VERIFIED },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123", currentDeductible: 0 },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
expect(result).toBe(true);
|
||||
});
|
||||
|
||||
test("returns false when isInsurance is true but parentAccountNumber is CASH_PARENT_ACCOUNT_NUMBER", () => {
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.PENDING },
|
||||
parentAccountNumber: 167132,
|
||||
},
|
||||
policy: { policyNumber: "POL123" },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
|
||||
test("returns false when isInsurance is true but policyNumber is missing", () => {
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.PENDING },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: null },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
expect(result).toBe(false);
|
||||
});
|
||||
|
||||
test("returns false when coverage is verified but deductible is null", () => {
|
||||
const order = { payment: { isInsurance: true } };
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.VERIFIED;
|
||||
store.getters.policy.currentDeductible = null;
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.VERIFIED },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123", currentDeductible: null },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
|
|
@ -360,9 +404,14 @@ describe("page-prerequisites-helper.js", () => {
|
|||
});
|
||||
|
||||
test("returns false when coverage is verified but deductible is undefined", () => {
|
||||
const order = { payment: { isInsurance: true } };
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.VERIFIED;
|
||||
store.getters.policy.currentDeductible = undefined;
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.VERIFIED },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123", currentDeductible: undefined },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
|
|
@ -370,9 +419,14 @@ describe("page-prerequisites-helper.js", () => {
|
|||
});
|
||||
|
||||
test("returns false when coverage is verified but deductible is negative", () => {
|
||||
const order = { payment: { isInsurance: true } };
|
||||
store.getters.payment.insuranceCoverage.coverageStatus = coverageStatus.VERIFIED;
|
||||
store.getters.policy.currentDeductible = -1;
|
||||
const order = {
|
||||
payment: {
|
||||
isInsurance: true,
|
||||
insuranceCoverage: { coverageStatus: coverageStatus.VERIFIED },
|
||||
parentAccountNumber: 999999,
|
||||
},
|
||||
policy: { policyNumber: "POL123", currentDeductible: -1 },
|
||||
};
|
||||
|
||||
const result = pagePrereqsHelper.hasInsuranceInfo(order);
|
||||
|
||||
|
|
|
|||
|
|
@ -261,6 +261,12 @@ import { getAmountDue, getPricingByDayPartWithPrice } from "@/helpers/pricing-he
|
|||
import { getItemsWithoutRecalParts } from "@/helpers/recal-helper";
|
||||
import { deepClone } from "@/helpers/object-helper";
|
||||
import { debugLog } from "@/helpers/debug-log-helper";
|
||||
import {
|
||||
flushPagePrereqsLogs,
|
||||
hasServiceZipInfo,
|
||||
hasGlassPartsOrRepairInfo,
|
||||
hasInsuranceInfo,
|
||||
} from "@/helpers/page-prerequisites-helper.js";
|
||||
import {
|
||||
getSessionKeyValue,
|
||||
getUserIdValue,
|
||||
|
|
@ -981,76 +987,31 @@ export default {
|
|||
methods: {
|
||||
splitCopyOnCMSPlaceHolder,
|
||||
arePagePrerequisitesValid() {
|
||||
const paymentInfo = store.getters.payment.isInsurance !== null;
|
||||
const damageInfo =
|
||||
store.getters.order.damage.isRepair ||
|
||||
(store.getters.order.lineItems?.glassParts != null &&
|
||||
store.getters.order.lineItems.glassParts.length > 0);
|
||||
const parentAccountNumberInfo =
|
||||
store.getters.payment.parentAccountNumber !==
|
||||
applicationConfig.CASH_PARENT_ACCOUNT_NUMBER;
|
||||
const policyNumberInfo = store.getters.order.policy.policyNumber;
|
||||
const zipCodeInfo = store.getters.order.serviceLocation.zipCode;
|
||||
const supportingItemsInfo = store.getters.lineItems.supportingItems;
|
||||
const order = store.getters.order;
|
||||
const logQueue = [];
|
||||
|
||||
const serviceZip = hasServiceZipInfo(order, logQueue);
|
||||
const glassPartsOrRepair = hasGlassPartsOrRepairInfo(order, logQueue);
|
||||
const insuranceInfo = hasInsuranceInfo(order, logQueue);
|
||||
|
||||
// insurance drops the recycle fee on replace orders so it won't be in supportingItems
|
||||
const insurancePreReqResult =
|
||||
parentAccountNumberInfo &&
|
||||
policyNumberInfo &&
|
||||
zipCodeInfo &&
|
||||
paymentInfo &&
|
||||
damageInfo;
|
||||
const cashPreReqResult =
|
||||
supportingItemsInfo && zipCodeInfo && paymentInfo && damageInfo;
|
||||
const supportingItemsInfo = store.getters.lineItems?.supportingItems;
|
||||
const supportingItemsPreReqs = order.payment?.isInsurance
|
||||
? true
|
||||
: !!supportingItemsInfo;
|
||||
|
||||
const outputDebugLog = (preReqResult) => {
|
||||
// prettier-ignore
|
||||
debugLog("--- schedule.vue pagePrereqs start ---", null, !preReqResult);
|
||||
debugLog(
|
||||
"store.getters.payment.isInsurance:",
|
||||
store.getters.payment?.isInsurance,
|
||||
!preReqResult
|
||||
);
|
||||
debugLog(
|
||||
"store.getters.order.damage.isRepair:",
|
||||
store.getters.order.damage?.isRepair,
|
||||
!preReqResult
|
||||
);
|
||||
debugLog(
|
||||
"store.getters.order.lineItems.glassParts:",
|
||||
store.getters.order.lineItems?.glassParts,
|
||||
!preReqResult
|
||||
);
|
||||
debugLog(
|
||||
"store.getters.payment.parentAccountNumber:",
|
||||
store.getters.payment.parentAccountNumber,
|
||||
!preReqResult
|
||||
);
|
||||
debugLog(
|
||||
"store.getters.order.policy.policyNumber:",
|
||||
store.getters.order.policy.policyNumber,
|
||||
!preReqResult
|
||||
);
|
||||
debugLog(
|
||||
"store.getters.order.serviceLocation.zipCode:",
|
||||
store.getters.order.serviceLocation.zipCode,
|
||||
!preReqResult
|
||||
);
|
||||
const preReqResult = serviceZip && insuranceInfo && glassPartsOrRepair && supportingItemsPreReqs;
|
||||
|
||||
logQueue.push(() => {
|
||||
debugLog(
|
||||
"store.getters.lineItems.supportingItems:",
|
||||
store.getters.lineItems.supportingItems,
|
||||
!preReqResult
|
||||
store.getters.lineItems?.supportingItems,
|
||||
!supportingItemsPreReqs
|
||||
);
|
||||
debugLog("--- schedule.vue pagePrereqs end ---", null, !preReqResult);
|
||||
};
|
||||
});
|
||||
|
||||
if (store.getters.payment.isInsurance) {
|
||||
outputDebugLog(insurancePreReqResult);
|
||||
return insurancePreReqResult;
|
||||
} else {
|
||||
outputDebugLog(cashPreReqResult);
|
||||
return cashPreReqResult;
|
||||
}
|
||||
flushPagePrereqsLogs("schedule.vue", preReqResult, logQueue);
|
||||
return preReqResult;
|
||||
},
|
||||
|
||||
setDataOnLoad(zipCodeData, serviceabilityDetails, mobileFeePart, shopProviderData) {
|
||||
|
|
|
|||
Loading…
Reference in a new issue