121 lines
3.8 KiB
JavaScript
121 lines
3.8 KiB
JavaScript
import store from "@/store";
|
|
import { storeActions } from "@/constants/store-actions";
|
|
import baseMixin from "@/mixins/base-mixin.js";
|
|
import { deepClone } from "@/helpers/object-helper";
|
|
|
|
export function getDisplayAmountDue(lineItemsObject, includeTax = true) {
|
|
return getAmountDue(lineItemsObject, includeTax).toLocaleString("en-US", {
|
|
style: "currency",
|
|
currency: "USD",
|
|
});
|
|
}
|
|
|
|
export function getAmountDue(lineItemsObject, includeTax = true) {
|
|
let amountDue = 0;
|
|
const order = baseMixin?.methods?.hasSubmittedOrder()
|
|
? baseMixin?.methods?.getSubmittedOrder()
|
|
: store.getters.order;
|
|
|
|
if (lineItemsObject?.glassParts) {
|
|
amountDue += baseMixin.methods.getTotalPriceOfAllLineItemsAndChildParts(
|
|
lineItemsObject.glassParts,
|
|
includeTax
|
|
);
|
|
}
|
|
|
|
if (lineItemsObject?.supportingItems) {
|
|
amountDue += baseMixin?.methods?.getTotalPriceOfAllLineItemsAndChildParts(
|
|
lineItemsObject.supportingItems,
|
|
includeTax
|
|
);
|
|
}
|
|
|
|
if (store.getters.coverageIsVerified && !order.policy.isNoComp && !order.policy.isItac) {
|
|
amountDue = order.policy.currentDeductible;
|
|
}
|
|
|
|
if (lineItemsObject?.vaps) {
|
|
amountDue += baseMixin?.methods?.getTotalPriceOfAllLineItemsAndChildParts(
|
|
lineItemsObject.vaps,
|
|
includeTax
|
|
);
|
|
}
|
|
|
|
if (lineItemsObject?.promos) {
|
|
amountDue += baseMixin?.methods?.getTotalPriceOfAllLineItemsAndChildParts(
|
|
lineItemsObject.promos,
|
|
includeTax
|
|
);
|
|
}
|
|
|
|
return ((amountDue * 100) / 100).toFixed(2);
|
|
}
|
|
|
|
export function getSubTotal(lineItemsObject) {
|
|
// this is amountDue without sales tax
|
|
return getAmountDue(lineItemsObject, false);
|
|
}
|
|
|
|
export function getSalesTax(lineItemsObject) {
|
|
// this is amountDue minus subTotal
|
|
return (((getAmountDue(lineItemsObject) - getSubTotal(lineItemsObject)) * 100) / 100).toFixed(
|
|
2
|
|
);
|
|
}
|
|
|
|
export function getAmountDueWithDonation(lineItemsObject, donationLineItem) {
|
|
// this is amount due with Donation added
|
|
const lineItemsCloneWithDonation = deepClone(lineItemsObject);
|
|
lineItemsCloneWithDonation.supportingItems.push(donationLineItem);
|
|
return getAmountDue(lineItemsCloneWithDonation);
|
|
}
|
|
|
|
export async function getPricingByDayPartWithPrice(pageNameToLog) {
|
|
// Get the Pricing By Day Part
|
|
const basePriceByDayPart = await baseMixin.methods.dispatchStoreActionWithLogging(
|
|
storeActions.GET_PRICING_BY_DAY_PART,
|
|
null,
|
|
pageNameToLog,
|
|
false
|
|
);
|
|
|
|
if (
|
|
basePriceByDayPart?.data === null ||
|
|
basePriceByDayPart?.data === undefined ||
|
|
basePriceByDayPart?.data === ""
|
|
) {
|
|
return null;
|
|
}
|
|
|
|
// Get the Pricing By Day Base Part price
|
|
const pricingResults = await baseMixin.methods.dispatchStoreActionWithLogging(
|
|
storeActions.PRICE_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
|
|
{
|
|
availableLineItems: [basePriceByDayPart?.data],
|
|
},
|
|
pageNameToLog,
|
|
false
|
|
);
|
|
|
|
return pricingResults[0];
|
|
}
|
|
|
|
export function addPricesToLineItems(lineItems, pricingLineItems) {
|
|
lineItems.forEach((lineItem) => {
|
|
const lineItemIndex = pricingLineItems.findIndex(
|
|
(pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber
|
|
);
|
|
|
|
if (lineItem.childParts) {
|
|
addPricesToLineItems(lineItem.childParts, pricingLineItems);
|
|
}
|
|
|
|
const pricedLineItem = pricingLineItems.splice(lineItemIndex, 1)[0];
|
|
lineItem.laborAmount = pricedLineItem.laborAmount;
|
|
lineItem.sellingPrice = pricedLineItem.sellingPrice;
|
|
lineItem.kitPrice = pricedLineItem.kitPrice;
|
|
lineItem.salesTax = pricedLineItem.salesTax;
|
|
});
|
|
|
|
return lineItems;
|
|
}
|