diff --git a/src/helpers/line-items-helper.js b/src/helpers/line-items-helper.js index b31d6f53..9ad4bca3 100644 --- a/src/helpers/line-items-helper.js +++ b/src/helpers/line-items-helper.js @@ -2,3 +2,7 @@ export function getLineItemsFlattened(lineItems) { return lineItems?.flatMap((li) => [li, ...(getLineItemsFlattened(li.childParts))]) ?? []; } + +export function findLineItemIndex(lineItems, partNumber, startIndex = 0) { + return lineItems.findIndex((li, index) => index >= startIndex && li.partNumber === partNumber); +} diff --git a/src/store/index.js b/src/store/index.js index 8dd6e86a..8552b9bf 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -25,7 +25,7 @@ import partTypeStrings from '@/constants/part-type-strings'; import bailoutMessage from '@/constants/bailoutMessage'; import bailoutCode from '@/constants/bailoutCode'; import partNumberStrings from '@/constants/part-number-strings'; -import { getLineItemsFlattened } from '@/helpers/line-items-helper'; +import { findLineItemIndex, getLineItemsFlattened } from '@/helpers/line-items-helper'; import { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper'; import coverageType from '@/constants/coverage-type'; import { getFeatureTogglesQueryString } from '@/helpers/experiment-helper'; @@ -1085,7 +1085,7 @@ export const useMainStore = defineStore({ ReferralNumber: this.order.referralNumber, ReferralSequenceNumber: this.order.referralSequenceNumber, ReferralDate: `${this.order.referralDate}Z`, - lineItems: availableLineItems, + lineItems: getLineItemsFlattened(availableLineItems), ServerData: this.order.lineItems.serverData, ServiceZipCode: serviceLocation.zipCode, Customer: { @@ -2699,16 +2699,19 @@ function convertGlassPieceNamingFromApi(glassArray) { } function addPricesToLineItems(lineItems, pricingLineItems) { + const partOffset = {}; lineItems.forEach((lineItem) => { if (lineItem.childParts) { addPricesToLineItems(lineItem.childParts, pricingLineItems); } - const pricedLineItem = pricingLineItems.find((pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber); - if (pricedLineItem) { + const pricedIndex = findLineItemIndex(pricingLineItems, lineItem.partNumber, partOffset[lineItem.partNumber] ?? 0); + if (pricedIndex !== -1) { + const pricedLineItem = pricingLineItems[pricedIndex]; lineItem.laborAmount = pricedLineItem.laborAmount; lineItem.sellingPrice = pricedLineItem.sellingPrice; lineItem.kitPrice = pricedLineItem.kitPrice; + partOffset[lineItem.partNumber] = pricedIndex + 1; } }); return lineItems;