diff --git a/src/layouts/payment-return/payment-return.vue b/src/layouts/payment-return/payment-return.vue
index 3f47102a..c7814569 100644
--- a/src/layouts/payment-return/payment-return.vue
+++ b/src/layouts/payment-return/payment-return.vue
@@ -13,6 +13,7 @@ import { useMainStore } from '@/store/index.js';
import queryStrings from '@/constants/query-strings';
import getQueryStringParameter from '@/helpers/querystring-helper.js';
import { paymentMethods } from '@/constants/payment-method-constants.js';
+import { getCartTotal } from '@/helpers/cart-helper';
import { submitWorkOrder } from '@/helpers/order-helper.js';
import showIssLoadingModal from '@/helpers/loading-modal-helper';
import submitType from '@/constants/submit-type';
@@ -105,7 +106,8 @@ export default {
async processPaypalResponse() {
const token = getQueryStringParameter(queryStrings.TOKEN);
this.mainStore.updatePaypalToken(token);
-
+ const cartTotal = getCartTotal(useMainStore().order);
+ useMainStore().order.payment.nextGenSettledAmount = cartTotal;
await this.saveAndSubmitWorkOrder();
},
async processCreditCardResponse() {
@@ -115,6 +117,8 @@ export default {
this.navigateOnPayInAdvanceError();
} else {
useMainStore().updateCreditCardToken(this.creditCardToken);
+ const cartTotal = getCartTotal(useMainStore().order);
+ useMainStore().order.payment.nextGenSettledAmount = cartTotal;
await this.saveAndSubmitWorkOrder();
}
},
diff --git a/src/layouts/service-packages/service-packages.vue b/src/layouts/service-packages/service-packages.vue
index 9c1d2985..924bf0fb 100644
--- a/src/layouts/service-packages/service-packages.vue
+++ b/src/layouts/service-packages/service-packages.vue
@@ -38,8 +38,8 @@
+ ref="loadingModal"
+ :textSlides="loadingText" />
diff --git a/src/store/index.js b/src/store/index.js
index 9ab28b15..d95c6a07 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -162,6 +162,7 @@ export const getDefaultState = () => ({
payment: {
parentAccountNumber: 0,
isPayInAdvance: null,
+ nextGenSettledAmount: 0,
payInAdvanceType: null,
paypalToken: null,
creditCardToken: {
@@ -1283,8 +1284,11 @@ export const useMainStore = defineStore({
}
const loadedFromDupeCheck = !!(this.order.loadedFromDupeCheck && !this.order.loadedSessionClearedPreviousData);
-
const newGlassToReplace = convertGlassPieceNamingForApi(damage.glassToReplace);
+ const shouldClearOnSubmit = this.isVerified && this.isDeductible;
+ const payloadGlassParts = setClearOnSubmit(lineItems.glassParts, shouldClearOnSubmit);
+ const payloadSupportingItems = setClearOnSubmit(lineItems.supportingItems, shouldClearOnSubmit);
+ const payloadVapsItems = setClearOnSubmit(lineItems.vaps, shouldClearOnSubmit);
const payload = {
applicationUser: {
@@ -1349,10 +1353,10 @@ export const useMainStore = defineStore({
isSmsOptIn: contactInfo.requestTextUpdates ?? false
},
lineItems: {
- glassParts: lineItems.glassParts,
+ glassParts: payloadGlassParts,
serverData: lineItems.serverData,
- supportingItems: lineItems.supportingItems,
- vaps: lineItems.vaps
+ supportingItems: payloadSupportingItems,
+ vaps: payloadVapsItems
},
insuranceCoverage: {
coverageType: insuranceCoverage.coverageType,
@@ -1365,6 +1369,7 @@ export const useMainStore = defineStore({
isPaypal: payment.payInAdvanceType === paymentMethods.PAYPAL,
isCreditCard: payment.payInAdvanceType === paymentMethods.CREDIT_CARD,
isAfterpay: payment.payInAdvanceType === paymentMethods.AFTERPAY,
+ nextGenSettledAmount: payment.nextGenSettledAmount,
CCToken: payment.creditCardToken,
insuranceCoverage: {
isVerified: this.isVerified,
@@ -1724,17 +1729,31 @@ export const useMainStore = defineStore({
},
async setPriceAndSalesTaxForOrderLineItems() {
- const lineItemsToTax = [
+ const lineItemsToPrice = [
...(this.order.lineItems.supportingItems ?? []),
...(this.order.lineItems.glassParts ?? []),
...(this.order.lineItems.otherParts ?? []),
...(this.order.lineItems.vaps ?? []),
- ...(this.order.lineItems.feeItems ?? []
- )
+ ...(this.order.lineItems.feeItems ?? [])
];
- await this.getInsurancePriceOrderItems(lineItemsToTax);
- await this.getTaxOrderItems(lineItemsToTax);
+ let lineItemsToTax = [];
+ if (!this.isVerified || !this.isDeductible) {
+ lineItemsToTax = [
+ ...lineItemsToPrice
+ ];
+ } else {
+ lineItemsToTax = [
+ ...(this.order.lineItems.vaps ?? []),
+ ...(this.order.lineItems.feeItems ?? [])
+ ];
+ }
+
+ await this.getInsurancePriceOrderItems(lineItemsToPrice);
+
+ if (lineItemsToTax && lineItemsToTax.length > 0) {
+ await this.getTaxOrderItems(lineItemsToTax);
+ }
},
updateVehicle(vehicle) {
@@ -2723,3 +2742,17 @@ function providersEqual(providerA, providerB) {
function provisionalTriggersToString(provisionalTriggers) {
return `ProvisionalTriggers:${provisionalTriggers.join(',')}`;
}
+
+function setClearOnSubmit(lineItemArray, shouldClearOnSubmit) {
+ const retArray = [];
+ if (lineItemArray && lineItemArray.length > 0) {
+ lineItemArray.forEach((part) => {
+ const newPart = { ...part };
+ newPart.clearOnSubmit = shouldClearOnSubmit;
+
+ retArray.push(newPart);
+ });
+ }
+
+ return retArray;
+}
diff --git a/src/store/store.spec.js b/src/store/store.spec.js
index d0db8a1a..866e5773 100644
--- a/src/store/store.spec.js
+++ b/src/store/store.spec.js
@@ -779,9 +779,18 @@ describe('Store', () => {
});
it('calls api with expected lineItems', async () => {
// Arrange
- const glassParts = getRandomString(6, 6);
- const supportingItems = getRandomString(6, 6);
- const vaps = getRandomString(6, 6);
+ const glassParts = [{
+ partNumber: getRandomString(6, 6),
+ clearOnSubmit: false
+ }];
+ const supportingItems = [{
+ partNumber: getRandomString(6, 6),
+ clearOnSubmit: false
+ }];
+ const vaps = [{
+ partNumber: getRandomString(6, 6),
+ clearOnSubmit: false
+ }];
store.order.lineItems.glassParts = glassParts;
store.order.lineItems.supportingItems = supportingItems;
store.order.lineItems.vaps = vaps;
@@ -808,7 +817,7 @@ describe('Store', () => {
[coverageStatuses.PENDING, coverageType.Deductible, null],
[coverageStatuses.VERIFIED, coverageType.ITAC, 'V_ITAC_123'],
[coverageStatuses.VERIFIED, coverageType.Deductible, 'V_Deductible_123'],
- [coverageStatuses.NO_COVERAGE, coverageType.NONE, null],
+ [coverageStatuses.NO_COVERAGE, coverageType.NONE, null]
])('calls api with expected insuranceCoverage', (status, type, claimNumber) => {
test(`calls api with coverageStatus is ${getEnumName(coverageStatuses, status)} and coverageType is ${getEnumName(coverageType, type)} and claimNumber is ${claimNumber}`, async () => {
// Arrange