CSR-2166: refactoring to include logic to retrieve an insurance threshold from external parameters
This commit is contained in:
parent
c9c651b7e5
commit
9bf5255f2b
2 changed files with 63 additions and 29 deletions
|
|
@ -13,6 +13,8 @@ const experimentSettings = {
|
||||||
IS_EMAIL_OPTIONAL: "isEmailOptional",
|
IS_EMAIL_OPTIONAL: "isEmailOptional",
|
||||||
SERVICE_PACKAGE_DISCOUNT: "OfferServicePackageDiscount",
|
SERVICE_PACKAGE_DISCOUNT: "OfferServicePackageDiscount",
|
||||||
RECAL_PRICE_REMOVE: "RecalPriceRemove",
|
RECAL_PRICE_REMOVE: "RecalPriceRemove",
|
||||||
|
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL: "NextGen_InternalInsuranceTabDisplayThreshold",
|
||||||
|
INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL: "NextGen_ExternalInsuranceTabDisplayThreshold",
|
||||||
};
|
};
|
||||||
|
|
||||||
const experimentTriggers = {
|
const experimentTriggers = {
|
||||||
|
|
|
||||||
|
|
@ -135,6 +135,8 @@ import { packageNames } from "@/constants/package-names";
|
||||||
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
import { navigateToHeritageFunnel } from "@/helpers/heritage-integration/navigation-helper";
|
||||||
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
|
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
|
||||||
|
|
||||||
|
const INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT = 300;
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "quote",
|
name: "quote",
|
||||||
async beforeRouteEnter(to, from, next) {
|
async beforeRouteEnter(to, from, next) {
|
||||||
|
|
@ -262,7 +264,6 @@ export default {
|
||||||
vm.addableVaps = addableVaps;
|
vm.addableVaps = addableVaps;
|
||||||
vm.lineItems = lineItems;
|
vm.lineItems = lineItems;
|
||||||
vm.availableLineItems = pricingResults;
|
vm.availableLineItems = pricingResults;
|
||||||
vm.isInsuranceSelected = vm.getDefaultIsInsuranceSelectedValue(vm.availableLineItems);
|
|
||||||
vm.holdParentAccountNumber = holdParentAccountNumber;
|
vm.holdParentAccountNumber = holdParentAccountNumber;
|
||||||
vm.holdBillToAccountNumber = holdBillToAccountNumber;
|
vm.holdBillToAccountNumber = holdBillToAccountNumber;
|
||||||
|
|
||||||
|
|
@ -291,8 +292,51 @@ export default {
|
||||||
navigateToHeritageFunnel({ shouldSaveSession: true, pageNameToLog: "quote" });
|
navigateToHeritageFunnel({ shouldSaveSession: true, pageNameToLog: "quote" });
|
||||||
}
|
}
|
||||||
|
|
||||||
if (store.getters.externalParameterState?.isExternalParameter) {
|
const getIsInsuranceSelectedValue = (availableLineItems, insuranceThreshold) => {
|
||||||
if (store.getters.externalParameterQuote.isInsurance == true) {
|
const serviceLocationState = store.getters.order.serviceLocation.state;
|
||||||
|
// Override if coming back from QuoteDetails. Remove override after Quote release
|
||||||
|
const isInsuranceOverrideValue = to.query?.isInsurance;
|
||||||
|
|
||||||
|
const defaultIsInsuranceSelectedValue = store.getters.order.payment.isInsurance;
|
||||||
|
//Default to Insurance Tab if user Service zip is from certain States
|
||||||
|
if (
|
||||||
|
serviceLocationState != null &&
|
||||||
|
payWithInsuranceStates.find((item) => item === serviceLocationState)
|
||||||
|
)
|
||||||
|
return true;
|
||||||
|
else if (isInsuranceOverrideValue != null) {
|
||||||
|
return isInsuranceOverrideValue == "true";
|
||||||
|
} else if (defaultIsInsuranceSelectedValue != null) {
|
||||||
|
return defaultIsInsuranceSelectedValue;
|
||||||
|
} else {
|
||||||
|
// TEMPORARY CODE WHILE DEVELOPING
|
||||||
|
if (availableLineItems) {
|
||||||
|
let tierOnePackagePriceTemp = baseMixin.methods.getTierOnePackagePrice(
|
||||||
|
baseMixin.methods.filterOutFees(availableLineItems)
|
||||||
|
);
|
||||||
|
let whatToReturn = baseMixin.methods.getTierOnePackagePrice(
|
||||||
|
baseMixin.methods.filterOutFees(availableLineItems)
|
||||||
|
) > insuranceThreshold;
|
||||||
|
return whatToReturn; // TODO AJC: TIGHTEN THIS BACK UP AFTER TESTING
|
||||||
|
} else {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let thresholdToUse = INSURANCE_TAB_TO_DISPLAY_THRESHOLD_DEFAULT;
|
||||||
|
let internalThreshold = experimentMixin.methods.getSettingValue(
|
||||||
|
experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_INTERNAL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (!store.getters.externalParameterState?.isExternalParameter) { // there are no external parameters
|
||||||
|
|
||||||
|
if (internalThreshold) thresholdToUse = internalThreshold;
|
||||||
|
vm.isInsuranceSelected = getIsInsuranceSelectedValue(vm.availableLineItems, thresholdToUse);
|
||||||
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
|
|
||||||
|
} else { // there ARE external parameters
|
||||||
|
|
||||||
|
if (store.getters.externalParameterQuote.isInsurance == true) { // did user intentionally select insurance?
|
||||||
vm.isInsuranceSelected = true;
|
vm.isInsuranceSelected = true;
|
||||||
vm.servicePackage = store.getters.externalParameterQuote.servicePackage;
|
vm.servicePackage = store.getters.externalParameterQuote.servicePackage;
|
||||||
await nextTick();
|
await nextTick();
|
||||||
|
|
@ -303,10 +347,22 @@ export default {
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
// did user come from external source (LeadGen)?
|
||||||
|
let externalSource = store.getters.externalParameterSource ? store.getters.externalParameterSource : null;
|
||||||
|
|
||||||
|
// Business logic to determine what "external" source is
|
||||||
|
if (externalSource?.includes("LeadGen")) {
|
||||||
|
const externalThreshold = experimentMixin.methods.getSettingValue(
|
||||||
|
experimentSettings.INSURANCE_TAB_TO_DISPLAY_THRESHOLD_EXTERNAL
|
||||||
|
);
|
||||||
|
if (externalThreshold) thresholdToUse = externalThreshold;
|
||||||
|
} else {
|
||||||
|
if (internalThreshold) thresholdToUse = internalThreshold;
|
||||||
|
}
|
||||||
|
vm.isInsuranceSelected = getIsInsuranceSelectedValue(vm.availableLineItems, thresholdToUse);
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
baseMixin.methods.ResetExternalParamsAndHideModal();
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
baseMixin.methods.ResetExternalParamsAndHideModal();
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
@ -392,30 +448,6 @@ export default {
|
||||||
payment.insuranceCoverage?.isVerified === false)
|
payment.insuranceCoverage?.isVerified === false)
|
||||||
);
|
);
|
||||||
},
|
},
|
||||||
getDefaultIsInsuranceSelectedValue(availableLineItems) {
|
|
||||||
const serviceLocationState = store.getters.order.serviceLocation.state;
|
|
||||||
// Override if coming back from QuoteDetails. Remove override after Quote release
|
|
||||||
const isInsuranceOverrideValue = this.$route.query?.isInsurance;
|
|
||||||
|
|
||||||
const defaultIsInsuranceSelectedValue = this.$store.getters.order.payment.isInsurance;
|
|
||||||
//Default to Insurance Tab if user Service zip is from certain States
|
|
||||||
if (
|
|
||||||
serviceLocationState != null &&
|
|
||||||
payWithInsuranceStates.find((item) => item === serviceLocationState)
|
|
||||||
)
|
|
||||||
return true;
|
|
||||||
else if (isInsuranceOverrideValue != null) {
|
|
||||||
return isInsuranceOverrideValue == "true";
|
|
||||||
} else if (defaultIsInsuranceSelectedValue != null) {
|
|
||||||
return defaultIsInsuranceSelectedValue;
|
|
||||||
} else {
|
|
||||||
return availableLineItems
|
|
||||||
? baseMixin.methods.getTierOnePackagePrice(
|
|
||||||
baseMixin.methods.filterOutFees(availableLineItems)
|
|
||||||
) > 300
|
|
||||||
: null;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
vapsItemsSelectedAction(vapsItemsSelected) {
|
vapsItemsSelectedAction(vapsItemsSelected) {
|
||||||
this.lineItems.vaps = vapsItemsSelected;
|
this.lineItems.vaps = vapsItemsSelected;
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue