+
+
+
+
+
+
-
-
{{ this.ScheduleDateFormatted }}
-
{{ this.ScheduleTimeFormatted }}
-
-
-
-
-
+
+
+
+
+
{{ this.ScheduleDateFormatted }}
+
{{ this.ScheduleTimeFormatted }}
+
+
+
+
+
+
+
+
-
+
+
-
-
-
+
diff --git a/src/layouts/payment/payment.vue b/src/layouts/payment/payment.vue
index 6e94bfaed..914a51df2 100644
--- a/src/layouts/payment/payment.vue
+++ b/src/layouts/payment/payment.vue
@@ -98,7 +98,7 @@
-
+
@@ -152,7 +152,7 @@
value="https://fixmyglasstest.safelite.com/FixMyGlass/Payment.aspx?error=ccTimeout" />
-
+
@@ -186,6 +186,7 @@ import { externalUrls } from "@/router/router-constants/externalUrl-values";
import { fetchCmsContentForPage } from "@/helpers/cms-content-helper";
import { settleAllPromises } from "@/helpers/layout-helper";
import { applicationConfig } from "@/constants/application-config";
+import baseMixin from "@/mixins/base-mixin.js";
// Validation
import { Form } from "vee-validate";
@@ -213,12 +214,11 @@ export default {
phoneNumber: store.getters.order.customer.phoneNumber,
ctu: store.getters.order.serviceLocation.zipCodeCtu,
referralCorrelationId: store.getters.order.referralCorrelationId,
- // TODO: replace these
- workOrderNumber: Math.floor(Math.random() * 90000) + 10000,
- invoiceNumber: Math.floor(Math.random() * 90000) + 10000,
- totalAmount: "321.00", // TODO: get from cart?
- displayAmount: "$321.00", // TODO: get from cart?
- lineItems: "Labor|189.99|1||Repair supplies|7.99|1",
+ workOrderNumber: this.getWOrkOrderNumber(),
+ invoiceNumber: this.getInvoiceNumber(),
+ totalAmount: this.getAmountDue(),
+ displayAmount: this.getDisplayAmountDue(),
+ piaLineItems: this.getPiaLineItems(),
sgHeaderline1: this.getHeaderLine1(),
sgHeaderline2: this.getHeaderLine2(),
paypalPayment: this.isPaypal(),
@@ -249,6 +249,25 @@ export default {
// TODO
return true;
},
+ getWOrkOrderNumber() {
+ if (store.getters.order.workOrderNumber) {
+ var items = store.getters.order.workOrderNumber.split("-");
+ return items[1];
+ }
+
+ // no work order, set pia error and return
+ this.dispatchStoreAction(storeActions.SAVE_PIA_ERROR_CODE, "NO WORK ORDER", false);
+ this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
+ },
+ getInvoiceNumber() {
+ if (store.getters.order.workOrderNumber) {
+ return store.getters.order.workOrderNumber.replace("-", "");
+ }
+
+ // no work order, set pia error and return
+ this.dispatchStoreAction(storeActions.SAVE_PIA_ERROR_CODE, "NO WORK ORDER", false);
+ this.$router.navigateWithoutSaving(this.navigationScenarios.CLICKED_BACK, this.$route);
+ },
getAddress1() {
return store.getters.order.serviceLocation.address
? store.getters.order.serviceLocation.address
@@ -289,6 +308,27 @@ export default {
}
return "";
},
+ getPiaLineItems() {
+ const itemsClone = { ...store.getters.order.lineItems };
+ delete itemsClone.serverData;
+
+ var itemsForPia = "";
+ for (var propertyName in itemsClone) {
+ for (var item in itemsClone[propertyName]) {
+ var amount =
+ +itemsClone[propertyName][item].laborAmount +
+ +itemsClone[propertyName][item].sellingPrice;
+ itemsForPia += itemsClone[propertyName][item].partType + "|" + amount + "|1|";
+ }
+ }
+ return itemsForPia;
+ },
+ getAmountDue() {
+ return baseMixin.methods.getAmountDue(store.getters.order.lineItems);
+ },
+ getDisplayAmountDue() {
+ return baseMixin.methods.getDisplayAmountDue(store.getters.order.lineItems);
+ },
isPaypal() {
if (this.getPaymentType() == "pp") {
return true;
diff --git a/src/mixins/base-mixin.js b/src/mixins/base-mixin.js
index d87b3cc85..74b44c983 100644
--- a/src/mixins/base-mixin.js
+++ b/src/mixins/base-mixin.js
@@ -115,6 +115,25 @@ export default {
getTotalLineItemPrice(lineItem) {
return lineItem.kitPrice + lineItem.laborAmount + lineItem.sellingPrice;
},
+ getDisplayAmountDue(lineItems) {
+ return this.getAmountDue(lineItems).toLocaleString("en-US", {
+ style: "currency",
+ currency: "USD",
+ });
+ },
+ getAmountDue(lineItems) {
+ // TODO: verify tax is included in lineitems
+ // Price everything in lineitems except the server data string
+ var amountDue = 0;
+ const itemsClone = { ...lineItems };
+ delete itemsClone.serverData;
+ for (var propertyName in itemsClone) {
+ amountDue += this.getTotalPriceOfAllLineItemsAndChildParts(
+ itemsClone[propertyName]
+ );
+ }
+ return amountDue;
+ },
scrollToPageTop() {
const container = document.getElementsByClassName("page-container-grouped-styles")[0];
container.scrollTo({ top: 0, left: 0, behavior: "smooth" });
diff --git a/src/store/index.js b/src/store/index.js
index 431fce721..add9f355f 100644
--- a/src/store/index.js
+++ b/src/store/index.js
@@ -109,6 +109,7 @@ const getDefaultState = () => {
referralCorrelationId: null,
eon: null,
workOrderNumber: null,
+ createDeleteStatusWorkOrderForPia: false,
},
applicationUser: {
eventBus: [],
@@ -223,6 +224,9 @@ export const mutations = {
updatePiaErrorCode(state, piaErrorCode) {
state.order.payment.piaErrorCode = piaErrorCode;
},
+ updatePiaWorkOrder(state, piaWorkOrder) {
+ state.order.createDeleteStatusWorkOrderForPia = piaWorkOrder;
+ },
updateWorkOrderNumber(state, workOrderNumber) {
state.order.workOrderNumber = workOrderNumber;
},
@@ -1618,6 +1622,7 @@ export const actions = {
referralNumber: order.referralNumber?.toString(),
referralSequenceNumber: order.referralSequenceNumber,
eon: order.eon,
+ createDeleteStatusWorkOrderForPia: order.createDeleteStatusWorkOrderForPia,
},
},
logApiCall: true,
@@ -1694,6 +1699,9 @@ export const actions = {
savePiaErrorCode(context, piaErrorCode) {
context.commit(storeMutations.UPDATE_PIA_ERROR_CODE, piaErrorCode);
},
+ savePiaWorkOrder(context, piaWorkOrder) {
+ context.commit(storeMutations.UPDATE_PIA_WORK_ORDER, piaWorkOrder);
+ },
// Business domain actions