SSR-1250 Pricing bug fixes

Fixed child line items not being priced
Fixed repair chips having incorrect prices applied
This commit is contained in:
Josh Dassinger 2024-07-17 11:41:10 -05:00
parent 203898871b
commit 03ba2c158c
2 changed files with 11 additions and 4 deletions

View file

@ -2,3 +2,7 @@
export function getLineItemsFlattened(lineItems) { export function getLineItemsFlattened(lineItems) {
return lineItems?.flatMap((li) => [li, ...(getLineItemsFlattened(li.childParts))]) ?? []; 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);
}

View file

@ -25,7 +25,7 @@ import partTypeStrings from '@/constants/part-type-strings';
import bailoutMessage from '@/constants/bailoutMessage'; import bailoutMessage from '@/constants/bailoutMessage';
import bailoutCode from '@/constants/bailoutCode'; import bailoutCode from '@/constants/bailoutCode';
import partNumberStrings from '@/constants/part-number-strings'; 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 { buildQueryStringParameterFromArrayOfComplexObjects, getLineItemQueryString, getTaxLineItemQueryString } from '@/helpers/querystring-helper';
import coverageType from '@/constants/coverage-type'; import coverageType from '@/constants/coverage-type';
import { getFeatureTogglesQueryString } from '@/helpers/experiment-helper'; import { getFeatureTogglesQueryString } from '@/helpers/experiment-helper';
@ -1085,7 +1085,7 @@ export const useMainStore = defineStore({
ReferralNumber: this.order.referralNumber, ReferralNumber: this.order.referralNumber,
ReferralSequenceNumber: this.order.referralSequenceNumber, ReferralSequenceNumber: this.order.referralSequenceNumber,
ReferralDate: `${this.order.referralDate}Z`, ReferralDate: `${this.order.referralDate}Z`,
lineItems: availableLineItems, lineItems: getLineItemsFlattened(availableLineItems),
ServerData: this.order.lineItems.serverData, ServerData: this.order.lineItems.serverData,
ServiceZipCode: serviceLocation.zipCode, ServiceZipCode: serviceLocation.zipCode,
Customer: { Customer: {
@ -2699,16 +2699,19 @@ function convertGlassPieceNamingFromApi(glassArray) {
} }
function addPricesToLineItems(lineItems, pricingLineItems) { function addPricesToLineItems(lineItems, pricingLineItems) {
const partOffset = {};
lineItems.forEach((lineItem) => { lineItems.forEach((lineItem) => {
if (lineItem.childParts) { if (lineItem.childParts) {
addPricesToLineItems(lineItem.childParts, pricingLineItems); addPricesToLineItems(lineItem.childParts, pricingLineItems);
} }
const pricedLineItem = pricingLineItems.find((pricingLineItem) => pricingLineItem.partNumber === lineItem.partNumber); const pricedIndex = findLineItemIndex(pricingLineItems, lineItem.partNumber, partOffset[lineItem.partNumber] ?? 0);
if (pricedLineItem) { if (pricedIndex !== -1) {
const pricedLineItem = pricingLineItems[pricedIndex];
lineItem.laborAmount = pricedLineItem.laborAmount; lineItem.laborAmount = pricedLineItem.laborAmount;
lineItem.sellingPrice = pricedLineItem.sellingPrice; lineItem.sellingPrice = pricedLineItem.sellingPrice;
lineItem.kitPrice = pricedLineItem.kitPrice; lineItem.kitPrice = pricedLineItem.kitPrice;
partOffset[lineItem.partNumber] = pricedIndex + 1;
} }
}); });
return lineItems; return lineItems;