WIP - Taxes added

This commit is contained in:
Leah Schumann 2023-10-25 11:32:01 -04:00
parent 936bc95957
commit 3d1a9d6299
3 changed files with 43 additions and 36 deletions

View file

@ -82,7 +82,7 @@ import { LineItemUtilities } from "@/store";
import { deepClone } from "@/helpers/object-helper";
export default {
name: "modal",
name: "cart",
props: {
modelValue: Object,
damage: Object,
@ -117,9 +117,8 @@ export default {
},
removeItem(cartItem) {
cartItem.lineItemIds.forEach((lineItemIdToDelete) => {
console.log(lineItemIdToDelete);
this.lineItems[cartItem.category] = this.lineItems[cartItem.category].filter(
(lineItem) => lineItem.id != lineItemIdToDelete
(lineItem) => lineItem.partType != cartItem.cartItemType
);
});
@ -258,10 +257,6 @@ export default {
nonpackageCartItems.push(this.rainDefenseCartItem);
}
// if (this.packageLevel == "TierOne" && this.rainDefenseCartItem) {
// return this.cartItems.filter((cartItem) => cartItem.cartItemType == "RAIN DEFENSE");
// }
return nonpackageCartItems;
},
frontWipersCartItem() {
@ -274,7 +269,7 @@ export default {
if (frontWiperLineItems.length > 0) {
cartItem = {
name: this.getCmsContentForVapsType("FRONT WIPER"), //"Front Wipers", // TODO: Get from CMS
category: "vaps",
category: "vaps-front-wiper",
cartItemType: "FRONT WIPER",
subTotal: 0,
salesTax: 0,
@ -305,7 +300,7 @@ export default {
if (rearWiperLineItems.length > 0) {
cartItem = {
name: this.getCmsContentForVapsType("REAR WIPER"), // TODO: Get from CMS
category: "vaps",
category: "vaps-rear-wiper",
cartItemType: "REAR WIPER",
subTotal: 0,
salesTax: 0,
@ -499,9 +494,6 @@ export default {
salesTaxText() {
return this.getCmsContent("SalesTaxTextWidget", "Text");
},
recycleFee() {
return "$35.00";
},
amountDueText() {
return this.getCmsContent("AmountDueTextWidget", "Text");
},
@ -529,14 +521,6 @@ export default {
return this.subTotal + this.salesTax;
},
},
watch: {
modelValue: {
handler(newValue) {
console.log(newValue);
this.lineItems = deepClone(newValue);
},
},
},
components: {
textBlock,
textLink,

View file

@ -27,7 +27,7 @@
<cart
:damage="damageInfo"
:availableLineItems="availableLineItems"
v-model="lineItems"
v-model="cartLineItems"
servicePackageOptionsCmsName="ServicePackageTitle"
@cart-remove="cartRemove" />
@ -42,7 +42,7 @@
</div>
<add-vaps-modal-buttons
v-model="lineItems"
v-model="cartLineItems"
:availableLineItems="availableLineItems"
vapsTilesCmsName="VapsProductTiles" />
@ -90,7 +90,8 @@ import { defineRule } from "vee-validate";
import { required } from "@/helpers/validation-rules";
import { errorMessages } from "@/constants/error-messages";
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
import { deepClone } from "@/helpers/object-helper";
import { LineItemUtilities, mapTaxedAvailableLineItemsToStoreFormat } from "../../store";
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
@ -141,7 +142,7 @@ export default {
const glassParts = store.getters.order.lineItems.glassParts ?? [];
const availableLineItems = [
let availableLineItems = [
resultMap.rainDefense,
...resultMap.supportingItems,
...resultMap.wipers,
@ -159,7 +160,7 @@ export default {
false
);
const taxingResults = await baseMixin.methods.dispatchStoreActionWithLogging(
const taxedAvailableLineItems = await baseMixin.methods.dispatchStoreActionWithLogging(
storeActions.TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
{
billToAccountNumber: "87291",
@ -173,26 +174,27 @@ export default {
false
);
const lineItemUtilities = new LineItemUtilities();
lineItemUtilities.addGuidToLineItemsIfNotAlreadyThere(availableLineItems);
const cartLineItems = mapTaxedAvailableLineItemsToStoreFormat(availableLineItems, lineItems);
// Call the "next" function to complete the transition to this page.
next((vm) => {
vm.setCmsContent(resultMap.cmsContent);
vm.availableLineItems = taxingResults;
console.log(lineItems);
vm.lineItems = deepClone(lineItems);
vm.availableLineItems = taxedAvailableLineItems;
vm.cartLineItems = cartLineItems;
});
},
data() {
return {
lineItems: [],
cartLineItems: [],
availableLineItems: [],
paymentMethodInternalModel: this.getPaymentMethodFromStore(),
displayPiaAlert: this.getPiaAlert(),
};
},
methods: {
getLineItemsFromStore() {
return store.getters.order.lineItems;
},
arePagePrerequisitesValid() {
// Line Items
const packageReqs = !!store.getters.order.lineItems.supportingItems;
@ -358,10 +360,6 @@ export default {
customCtaCopy(newValue) {
this.$refs.navbar.updateButtonText(newValue);
},
// modelValue(newValue) {
// this.lineItems = newValue;
// console.log(newValue)
// }
},
components: {
funnelHeader,

View file

@ -1298,6 +1298,7 @@ export const actions = {
});
syncLineItemIds(response.data, context.getters.order.lineItems.vaps);
console.log(response.data)
return response;
},
@ -2566,9 +2567,30 @@ export class LineItemUtilities {
this.getArrayOfAllLineItems = getArrayOfAllLineItems;
this.getFlattenedArrayOfLineItemsWithChildParts =
getFlattenedArrayOfLineItemsWithChildParts;
this.addGuidToLineItemsIfNotAlreadyThere = addGuidToLineItemsIfNotAlreadyThere;
}
}
export function mapTaxedAvailableLineItemsToStoreFormat(availableLineItems, storeLineItems)
{
// clone the lineItems array because what we're passing in is referencing the store directly
const lineItems = deepClone(storeLineItems);
for (let [category, lineItemsInCategory] of Object.entries(lineItems)) {
lineItemsInCategory = lineItemsInCategory ?? [];
for (let lineItemIndex = 0; lineItemIndex < lineItemsInCategory.length; lineItemIndex++) {
const availableLineItem = availableLineItems.find(ali => ali.partNumber == lineItemsInCategory[lineItemIndex].partNumber);
if (availableLineItem) {
lineItemsInCategory[lineItemIndex].salesTax = availableLineItem.salesTax;
}
}
}
return lineItems;
}
function getArrayOfAllLineItems(lineItems) {
let consolidatedLineItemsArray = [];
@ -2641,11 +2663,14 @@ function addGuidToLineItemsIfNotAlreadyThere(lineItems) {
}
function syncLineItemIds(lineItemsWithoutIds, lineItemsWithIds) {
if (!lineItemsWithIds || !lineItemsWithoutIds) {
return;
}
lineItemsWithoutIds.forEach((noId) => {
debugger; // eslint-disable-line no-debugger
lineItemsWithIds.forEach((withId) => {
debugger; // eslint-disable-line no-debugger
if (noId.partNumber === withId.partNumber && noId.partType === withId.partType) {
noId.id = withId.id;
}