Resolve CCC supplement with UNQ_SEQ.
This commit is contained in:
@@ -15,23 +15,43 @@ export const GetSupplementDelta = async (client, jobId, newLines) => {
|
|||||||
const linesToUpdate = [];
|
const linesToUpdate = [];
|
||||||
|
|
||||||
newLines.forEach((newLine) => {
|
newLines.forEach((newLine) => {
|
||||||
const matchingIndex = existingLines.findIndex((eL) => eL.unq_seq === newLine.unq_seq);
|
const matchingIndexLines = [];
|
||||||
|
existingLines.forEach((eL, index) => {
|
||||||
|
if (eL.unq_seq === newLine.unq_seq) {
|
||||||
|
matchingIndexLines.push({ index, record: eL });
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
//Should do a check to make sure there is only 1 matching unq sequence number.
|
if (matchingIndexLines.length === 0) {
|
||||||
|
|
||||||
if (matchingIndex >= 0) {
|
|
||||||
//Found a relevant matching line. Add it to lines to update.
|
|
||||||
linesToUpdate.push({
|
|
||||||
id: existingLines[matchingIndex].id,
|
|
||||||
newData: { ...newLine, removed: false, act_price_before_ppc: null }
|
|
||||||
});
|
|
||||||
|
|
||||||
//Splice out item we found for performance.
|
|
||||||
existingLines.splice(matchingIndex, 1);
|
|
||||||
} else {
|
|
||||||
//Didn't find a match. Must be a new line.
|
//Didn't find a match. Must be a new line.
|
||||||
linesToInsert.push(newLine);
|
linesToInsert.push(newLine);
|
||||||
}
|
}
|
||||||
|
//If we find only 1, we can use the old logic.
|
||||||
|
else if (matchingIndexLines.length === 1) {
|
||||||
|
//Found a relevant matching line. Add it to lines to update.
|
||||||
|
linesToUpdate.push({
|
||||||
|
id: matchingIndexLines[0].record.id,
|
||||||
|
newData: { ...newLine, removed: false, act_price_before_ppc: null }
|
||||||
|
});
|
||||||
|
//Splice out item we found for performance.
|
||||||
|
existingLines.splice(matchingIndexLines[0].index, 1);
|
||||||
|
} else if (matchingIndexLines.length === 2) {
|
||||||
|
//if we find 2, we need to separate it out by the non-refinish lines and splice one out.
|
||||||
|
//Find the mathcing one depending on whether this is the refiniish one or not.
|
||||||
|
const matchingLine = matchingIndexLines.find((i) =>
|
||||||
|
newLine.mod_lbr_ty === "LAR" ? i.record.mod_lbr_ty === "LAR" : i.record.mod_lbr_ty !== "LAR"
|
||||||
|
);
|
||||||
|
|
||||||
|
linesToUpdate.push({
|
||||||
|
id: matchingLine.record.id,
|
||||||
|
newData: { ...newLine, removed: false, act_price_before_ppc: null }
|
||||||
|
});
|
||||||
|
//Splice out item we found for performance.
|
||||||
|
existingLines.splice(matchingLine.index, 1);
|
||||||
|
} else {
|
||||||
|
//We found more than 2 matching lines. We should never get here. Throw a warning and back out!
|
||||||
|
throw new Error("Too many matching lines found. Ensure EMS file is valid.");
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
//Wahtever is left in the existing lines, are lines that should be removed.
|
//Wahtever is left in the existing lines, are lines that should be removed.
|
||||||
|
|||||||
Reference in New Issue
Block a user