diff --git a/src/store/index.js b/src/store/index.js index 84a34782c..732a210cf 100644 --- a/src/store/index.js +++ b/src/store/index.js @@ -1480,9 +1480,16 @@ export const actions = { const ctuToUse = serviceZipCodeCtu ? serviceZipCodeCtu : context.getters.order.serviceLocation.zipCodeCtu; - + const flattenedLineItemsWithChildParts = + getFlattenedArrayOfLineItemsWithChildParts(availableLineItems); + const lineItemsWithOnlyPartNumbers = flattenedLineItemsWithChildParts.map((lineItem) => ({ + partNumber: lineItem.partNumber, + })); const availableLineItemsFormattedForRequest = - getLineItemQueryStringForPricing(availableLineItems); + buildQueryStringParameterFromArrayOfComplexObjects( + lineItemsWithOnlyPartNumbers, + "lineItems" + ); const vehicle = context.getters.order.vehicle; @@ -1495,7 +1502,7 @@ export const actions = { `&Year=${vehicle.year}` + `&EON=${context.getters.order.eon}` + `&ZipCode=${zipCodeToUse}` + - `${availableLineItemsFormattedForRequest}`; + `&${availableLineItemsFormattedForRequest}`; const lineItemServerData = context.getters.order.lineItems.serverData; @@ -1677,16 +1684,19 @@ function addPricesToLineItems(lineItems, pricingLineItems) { }); return lineItems; } -function getLineItemQueryStringForPricing(lineItems) { - return lineItems - .map((lineItem) => { - let queryStringSnippet = `&LineItems=${lineItem.partNumber}`; - if (lineItem.childParts) { - queryStringSnippet += getLineItemQueryStringForPricing(lineItem.childParts); - } - return queryStringSnippet; - }) - .join(""); + +function getFlattenedArrayOfLineItemsWithChildParts(lineItems) { + let flattenedArray = []; + lineItems.forEach((lineItem) => { + flattenedArray.push(lineItem); + if (lineItem.childParts) { + flattenedArray = [ + ...flattenedArray, + ...getFlattenedArrayOfLineItemsWithChildParts(lineItem.childParts), + ]; + } + }); + return flattenedArray; } function buildQueryStringParameterFromArrayOfComplexObjects(arrayOfObjects, parameterName) {