Merge pull request #793 from Safelite/defect/digital/SSR-1250

SSR-1250 Pricing bug fixes
This commit is contained in:
Josh Dassinger 2024-07-17 12:40:14 -05:00 committed by GitHub
commit f317233313
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 11 additions and 4 deletions

View file

@ -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);
}

View file

@ -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;