This commit is contained in:
seb
2026-10-14 15:00:31 +02:00
parent 4188d8f46f
commit b8fdef4e11
5 changed files with 87 additions and 96 deletions

View File

@@ -271,6 +271,7 @@ export function getManifestDirtyDetails(current, baseline) {
};
const dirtyLineKeys = [];
const dirtyLineFields = {};
const curLines = current.lines || [];
const baseLines = baseline.lines || [];
@@ -291,27 +292,49 @@ export function getManifestDirtyDetails(current, baseline) {
const bl =
(cl.key && baseLinesByKey.get(cl.key)) ||
(cl.id != null && baseLinesByKey.get(`id-${cl.id}`)) ||
baseLines[i];
(baseLinesByKey.size === 0 ? baseLines[i] : null);
if (!bl) {
if (cl.sku || cl.name || (cl.amount && cl.amount !== '1') || cl.net || cl.gross) {
dirtyLineKeys.push(key);
fields.lines = true;
}
dirtyLineKeys.push(key);
dirtyLineFields[key] = { __all__: true };
fields.lines = true;
} else {
const lineChanged =
String(cl.sku ?? '').trim() !== String(bl.sku ?? '').trim() ||
String(cl.name ?? '').trim() !== String(bl.name ?? '').trim() ||
String(cl.amount ?? '').trim() !== String(bl.amount ?? '').trim() ||
String(cl.net ?? cl.netprice ?? '').trim() !== String(bl.net ?? bl.netprice ?? '').trim() ||
String(cl.gross ?? '').trim() !== String(bl.gross ?? '').trim() ||
String(cl.rebate ?? '').trim() !== String(bl.rebate ?? '').trim() ||
String(cl.tax ?? cl.taxrate ?? '').trim() !== String(bl.tax ?? bl.taxrate ?? '').trim() ||
String(cl.pu ?? '').trim() !== String(bl.pu ?? '').trim() ||
String(cl.unit ?? '').trim() !== String(bl.unit ?? '').trim();
const lineFieldDiffs = {};
if (String(cl.sku ?? '').trim() !== String(bl.sku ?? '').trim()) {
lineFieldDiffs.sku = true;
}
if (String(cl.name ?? '').trim() !== String(bl.name ?? '').trim()) {
lineFieldDiffs.name = true;
}
if (String(cl.amount ?? cl.count ?? '').trim() !== String(bl.amount ?? bl.count ?? '').trim()) {
lineFieldDiffs.amount = true;
lineFieldDiffs.count = true;
}
if (String(cl.net ?? cl.netprice ?? '').trim() !== String(bl.net ?? bl.netprice ?? '').trim()) {
lineFieldDiffs.net = true;
lineFieldDiffs.netprice = true;
}
if (String(cl.gross ?? '').trim() !== String(bl.gross ?? '').trim()) {
lineFieldDiffs.gross = true;
}
if (String(cl.rebate ?? '').trim() !== String(bl.rebate ?? '').trim()) {
lineFieldDiffs.rebate = true;
}
if (String(cl.tax ?? cl.taxrate ?? '').trim() !== String(bl.tax ?? bl.taxrate ?? '').trim()) {
lineFieldDiffs.tax = true;
lineFieldDiffs.taxrate = true;
}
if (String(cl.pu ?? cl.vpe ?? '').trim() !== String(bl.pu ?? bl.vpe ?? '').trim()) {
lineFieldDiffs.pu = true;
lineFieldDiffs.vpe = true;
}
if (String(cl.unit ?? '').trim() !== String(bl.unit ?? '').trim()) {
lineFieldDiffs.unit = true;
}
if (lineChanged) {
if (Object.keys(lineFieldDiffs).length > 0) {
dirtyLineKeys.push(key);
dirtyLineFields[key] = lineFieldDiffs;
fields.lines = true;
}
}
@@ -348,6 +371,7 @@ export function getManifestDirtyDetails(current, baseline) {
isDirty,
fields,
dirtyLineKeys,
dirtyLineFields,
summary,
};
}
@@ -413,6 +437,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: false,
dirtyFields: { ...emptyFields },
dirtyLineKeys: [],
dirtyLineFields: {},
dirtySummary: [],
});
},
@@ -425,6 +450,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: dirtyInfo.isDirty,
dirtyFields: dirtyInfo.fields,
dirtyLineKeys: dirtyInfo.dirtyLineKeys,
dirtyLineFields: dirtyInfo.dirtyLineFields,
dirtySummary: dirtyInfo.summary,
});
},
@@ -442,6 +468,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: false,
dirtyFields: { ...emptyFields },
dirtyLineKeys: [],
dirtyLineFields: {},
dirtySummary: [],
});
},
@@ -474,6 +501,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: false,
dirtyFields: { ...emptyFields },
dirtyLineKeys: [],
dirtyLineFields: {},
dirtySummary: [],
});
},
@@ -493,6 +521,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: false,
dirtyFields: { ...emptyFields },
dirtyLineKeys: [],
dirtyLineFields: {},
dirtySummary: [],
});
},
@@ -513,6 +542,7 @@ export function createManifestEditAutomat({ kind, name }) {
isDirty: false,
dirtyFields: { ...emptyFields },
dirtyLineKeys: [],
dirtyLineFields: {},
dirtySummary: [],
},
actions,