Files
Aislo/tools/est-test/jdl-special-unit.cjs

43 lines
1.0 KiB
JavaScript

function canPreserveSpecial(parts, title, num) {
const sequences = new Set(parts.map((part) => part.F_SEQ));
return (
parts.length > 0 &&
sequences.size === parts.length &&
parts.every((part) => Boolean(part.F_SEQ)) &&
[
["F_MCOST", "F_MPRICE"],
["F_LCOST", "F_LPRICE"],
["F_ECOST", "F_EPRICE"],
].every(
([field, total]) =>
Math.abs(parts.reduce((sum, part) => sum + num(part[field]), 0) - num(title[total])) < 1e-6,
)
);
}
function fixedSpecialPart(part, source, pk, num) {
const GC = num(part.F_MCOST),
NC = num(part.F_LCOST),
JC = num(part.F_ECOST);
return {
PkID: pk,
Index: 0,
Code: source ? part.F_CODE1 : "",
JdlSourceCode: part.F_CODE1,
Name: part.F_DES,
Size: part.F_SIZE,
Unite: part.F_UNIT,
LinkIndex: source?.kind || 0,
CalcIndex: 1,
JdlSummary: true,
GN: num(part.F_QQTY),
GC,
NC,
JC,
SC: 0,
TC: GC + NC + JC,
};
}
module.exports = { canPreserveSpecial, fixedSpecialPart };