WIP - Taxes added
This commit is contained in:
parent
936bc95957
commit
3d1a9d6299
3 changed files with 43 additions and 36 deletions
|
|
@ -82,7 +82,7 @@ import { LineItemUtilities } from "@/store";
|
||||||
import { deepClone } from "@/helpers/object-helper";
|
import { deepClone } from "@/helpers/object-helper";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "modal",
|
name: "cart",
|
||||||
props: {
|
props: {
|
||||||
modelValue: Object,
|
modelValue: Object,
|
||||||
damage: Object,
|
damage: Object,
|
||||||
|
|
@ -117,9 +117,8 @@ export default {
|
||||||
},
|
},
|
||||||
removeItem(cartItem) {
|
removeItem(cartItem) {
|
||||||
cartItem.lineItemIds.forEach((lineItemIdToDelete) => {
|
cartItem.lineItemIds.forEach((lineItemIdToDelete) => {
|
||||||
console.log(lineItemIdToDelete);
|
|
||||||
this.lineItems[cartItem.category] = this.lineItems[cartItem.category].filter(
|
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);
|
nonpackageCartItems.push(this.rainDefenseCartItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
// if (this.packageLevel == "TierOne" && this.rainDefenseCartItem) {
|
|
||||||
// return this.cartItems.filter((cartItem) => cartItem.cartItemType == "RAIN DEFENSE");
|
|
||||||
// }
|
|
||||||
|
|
||||||
return nonpackageCartItems;
|
return nonpackageCartItems;
|
||||||
},
|
},
|
||||||
frontWipersCartItem() {
|
frontWipersCartItem() {
|
||||||
|
|
@ -274,7 +269,7 @@ export default {
|
||||||
if (frontWiperLineItems.length > 0) {
|
if (frontWiperLineItems.length > 0) {
|
||||||
cartItem = {
|
cartItem = {
|
||||||
name: this.getCmsContentForVapsType("FRONT WIPER"), //"Front Wipers", // TODO: Get from CMS
|
name: this.getCmsContentForVapsType("FRONT WIPER"), //"Front Wipers", // TODO: Get from CMS
|
||||||
category: "vaps",
|
category: "vaps-front-wiper",
|
||||||
cartItemType: "FRONT WIPER",
|
cartItemType: "FRONT WIPER",
|
||||||
subTotal: 0,
|
subTotal: 0,
|
||||||
salesTax: 0,
|
salesTax: 0,
|
||||||
|
|
@ -305,7 +300,7 @@ export default {
|
||||||
if (rearWiperLineItems.length > 0) {
|
if (rearWiperLineItems.length > 0) {
|
||||||
cartItem = {
|
cartItem = {
|
||||||
name: this.getCmsContentForVapsType("REAR WIPER"), // TODO: Get from CMS
|
name: this.getCmsContentForVapsType("REAR WIPER"), // TODO: Get from CMS
|
||||||
category: "vaps",
|
category: "vaps-rear-wiper",
|
||||||
cartItemType: "REAR WIPER",
|
cartItemType: "REAR WIPER",
|
||||||
subTotal: 0,
|
subTotal: 0,
|
||||||
salesTax: 0,
|
salesTax: 0,
|
||||||
|
|
@ -499,9 +494,6 @@ export default {
|
||||||
salesTaxText() {
|
salesTaxText() {
|
||||||
return this.getCmsContent("SalesTaxTextWidget", "Text");
|
return this.getCmsContent("SalesTaxTextWidget", "Text");
|
||||||
},
|
},
|
||||||
recycleFee() {
|
|
||||||
return "$35.00";
|
|
||||||
},
|
|
||||||
amountDueText() {
|
amountDueText() {
|
||||||
return this.getCmsContent("AmountDueTextWidget", "Text");
|
return this.getCmsContent("AmountDueTextWidget", "Text");
|
||||||
},
|
},
|
||||||
|
|
@ -529,14 +521,6 @@ export default {
|
||||||
return this.subTotal + this.salesTax;
|
return this.subTotal + this.salesTax;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
watch: {
|
|
||||||
modelValue: {
|
|
||||||
handler(newValue) {
|
|
||||||
console.log(newValue);
|
|
||||||
this.lineItems = deepClone(newValue);
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
components: {
|
components: {
|
||||||
textBlock,
|
textBlock,
|
||||||
textLink,
|
textLink,
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@
|
||||||
<cart
|
<cart
|
||||||
:damage="damageInfo"
|
:damage="damageInfo"
|
||||||
:availableLineItems="availableLineItems"
|
:availableLineItems="availableLineItems"
|
||||||
v-model="lineItems"
|
v-model="cartLineItems"
|
||||||
servicePackageOptionsCmsName="ServicePackageTitle"
|
servicePackageOptionsCmsName="ServicePackageTitle"
|
||||||
@cart-remove="cartRemove" />
|
@cart-remove="cartRemove" />
|
||||||
|
|
||||||
|
|
@ -42,7 +42,7 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<add-vaps-modal-buttons
|
<add-vaps-modal-buttons
|
||||||
v-model="lineItems"
|
v-model="cartLineItems"
|
||||||
:availableLineItems="availableLineItems"
|
:availableLineItems="availableLineItems"
|
||||||
vapsTilesCmsName="VapsProductTiles" />
|
vapsTilesCmsName="VapsProductTiles" />
|
||||||
|
|
||||||
|
|
@ -90,7 +90,8 @@ import { defineRule } from "vee-validate";
|
||||||
import { required } from "@/helpers/validation-rules";
|
import { required } from "@/helpers/validation-rules";
|
||||||
import { errorMessages } from "@/constants/error-messages";
|
import { errorMessages } from "@/constants/error-messages";
|
||||||
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
import { AppointmentTypeStrings } from "@/constants/schedule-constants";
|
||||||
import { deepClone } from "@/helpers/object-helper";
|
import { LineItemUtilities, mapTaxedAvailableLineItemsToStoreFormat } from "../../store";
|
||||||
|
|
||||||
|
|
||||||
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
|
defineRule("option-required", required(errorMessages.OPTION_REQUIRED));
|
||||||
|
|
||||||
|
|
@ -141,7 +142,7 @@ export default {
|
||||||
|
|
||||||
const glassParts = store.getters.order.lineItems.glassParts ?? [];
|
const glassParts = store.getters.order.lineItems.glassParts ?? [];
|
||||||
|
|
||||||
const availableLineItems = [
|
let availableLineItems = [
|
||||||
resultMap.rainDefense,
|
resultMap.rainDefense,
|
||||||
...resultMap.supportingItems,
|
...resultMap.supportingItems,
|
||||||
...resultMap.wipers,
|
...resultMap.wipers,
|
||||||
|
|
@ -159,7 +160,7 @@ export default {
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
const taxingResults = await baseMixin.methods.dispatchStoreActionWithLogging(
|
const taxedAvailableLineItems = await baseMixin.methods.dispatchStoreActionWithLogging(
|
||||||
storeActions.TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
|
storeActions.TAX_ORDER_ITEMS_AND_SAVE_SERVER_DATA,
|
||||||
{
|
{
|
||||||
billToAccountNumber: "87291",
|
billToAccountNumber: "87291",
|
||||||
|
|
@ -173,26 +174,27 @@ export default {
|
||||||
false
|
false
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const lineItemUtilities = new LineItemUtilities();
|
||||||
|
lineItemUtilities.addGuidToLineItemsIfNotAlreadyThere(availableLineItems);
|
||||||
|
|
||||||
|
const cartLineItems = mapTaxedAvailableLineItemsToStoreFormat(availableLineItems, lineItems);
|
||||||
|
|
||||||
// Call the "next" function to complete the transition to this page.
|
// Call the "next" function to complete the transition to this page.
|
||||||
next((vm) => {
|
next((vm) => {
|
||||||
vm.setCmsContent(resultMap.cmsContent);
|
vm.setCmsContent(resultMap.cmsContent);
|
||||||
vm.availableLineItems = taxingResults;
|
vm.availableLineItems = taxedAvailableLineItems;
|
||||||
console.log(lineItems);
|
vm.cartLineItems = cartLineItems;
|
||||||
vm.lineItems = deepClone(lineItems);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
data() {
|
data() {
|
||||||
return {
|
return {
|
||||||
lineItems: [],
|
cartLineItems: [],
|
||||||
availableLineItems: [],
|
availableLineItems: [],
|
||||||
paymentMethodInternalModel: this.getPaymentMethodFromStore(),
|
paymentMethodInternalModel: this.getPaymentMethodFromStore(),
|
||||||
displayPiaAlert: this.getPiaAlert(),
|
displayPiaAlert: this.getPiaAlert(),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
getLineItemsFromStore() {
|
|
||||||
return store.getters.order.lineItems;
|
|
||||||
},
|
|
||||||
arePagePrerequisitesValid() {
|
arePagePrerequisitesValid() {
|
||||||
// Line Items
|
// Line Items
|
||||||
const packageReqs = !!store.getters.order.lineItems.supportingItems;
|
const packageReqs = !!store.getters.order.lineItems.supportingItems;
|
||||||
|
|
@ -358,10 +360,6 @@ export default {
|
||||||
customCtaCopy(newValue) {
|
customCtaCopy(newValue) {
|
||||||
this.$refs.navbar.updateButtonText(newValue);
|
this.$refs.navbar.updateButtonText(newValue);
|
||||||
},
|
},
|
||||||
// modelValue(newValue) {
|
|
||||||
// this.lineItems = newValue;
|
|
||||||
// console.log(newValue)
|
|
||||||
// }
|
|
||||||
},
|
},
|
||||||
components: {
|
components: {
|
||||||
funnelHeader,
|
funnelHeader,
|
||||||
|
|
|
||||||
|
|
@ -1298,6 +1298,7 @@ export const actions = {
|
||||||
});
|
});
|
||||||
|
|
||||||
syncLineItemIds(response.data, context.getters.order.lineItems.vaps);
|
syncLineItemIds(response.data, context.getters.order.lineItems.vaps);
|
||||||
|
console.log(response.data)
|
||||||
return response;
|
return response;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
@ -2566,9 +2567,30 @@ export class LineItemUtilities {
|
||||||
this.getArrayOfAllLineItems = getArrayOfAllLineItems;
|
this.getArrayOfAllLineItems = getArrayOfAllLineItems;
|
||||||
this.getFlattenedArrayOfLineItemsWithChildParts =
|
this.getFlattenedArrayOfLineItemsWithChildParts =
|
||||||
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) {
|
function getArrayOfAllLineItems(lineItems) {
|
||||||
let consolidatedLineItemsArray = [];
|
let consolidatedLineItemsArray = [];
|
||||||
|
|
||||||
|
|
@ -2641,11 +2663,14 @@ function addGuidToLineItemsIfNotAlreadyThere(lineItems) {
|
||||||
}
|
}
|
||||||
|
|
||||||
function syncLineItemIds(lineItemsWithoutIds, lineItemsWithIds) {
|
function syncLineItemIds(lineItemsWithoutIds, lineItemsWithIds) {
|
||||||
|
|
||||||
if (!lineItemsWithIds || !lineItemsWithoutIds) {
|
if (!lineItemsWithIds || !lineItemsWithoutIds) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
lineItemsWithoutIds.forEach((noId) => {
|
lineItemsWithoutIds.forEach((noId) => {
|
||||||
|
debugger; // eslint-disable-line no-debugger
|
||||||
lineItemsWithIds.forEach((withId) => {
|
lineItemsWithIds.forEach((withId) => {
|
||||||
|
debugger; // eslint-disable-line no-debugger
|
||||||
if (noId.partNumber === withId.partNumber && noId.partType === withId.partType) {
|
if (noId.partNumber === withId.partNumber && noId.partType === withId.partType) {
|
||||||
noId.id = withId.id;
|
noId.id = withId.id;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue