feat(est-test): preserve nested JDL details
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
function exportMachines(project, tables, map, ambiguous, num, next, source, warnings) {
|
||||
const groups = new Map();
|
||||
let group;
|
||||
for (const row of project.tables.MachMainDat || []) {
|
||||
if (num(row.Index) > 0) {
|
||||
group = [];
|
||||
if (groups.has(row.Code)) groups.set(row.Code, null);
|
||||
else groups.set(row.Code, group);
|
||||
} else if (group) group.push(row);
|
||||
}
|
||||
for (const title of project.tables.MachTitleDat || []) {
|
||||
const parts = groups.get(title.Code);
|
||||
if (
|
||||
!title.Code ||
|
||||
ambiguous.has("105:" + title.Code) ||
|
||||
!parts?.length ||
|
||||
num(title.SC) ||
|
||||
parts.some((row) => !row.JdlSummary || num(row.CalcIndex) !== 1 || num(row.SC)) ||
|
||||
["GC", "NC", "JC"].some(
|
||||
(field) =>
|
||||
Math.abs(parts.reduce((sum, row) => sum + num(row[field]), 0) - num(title[field])) > 1e-6,
|
||||
)
|
||||
)
|
||||
continue;
|
||||
const code = "J" + String(next()).padStart(10, "0");
|
||||
map.set("105:" + title.Code, code);
|
||||
tables["junit.txt"].push({
|
||||
F_CODE: code,
|
||||
F_DES: title.Name,
|
||||
F_SIZE: title.Size,
|
||||
F_UNIT: title.Unite,
|
||||
F_MPRICE: num(title.GC),
|
||||
F_LPRICE: num(title.NC),
|
||||
F_EPRICE: num(title.JC),
|
||||
F_ORICODE: "00000000000",
|
||||
});
|
||||
for (const [index, row] of parts.entries()) {
|
||||
const code1 = source(0, { ...row, Code: "MACHINE-PART-" + next() });
|
||||
tables["jpart.txt"].push({
|
||||
F_CODE: code,
|
||||
F_SEQ: String(index + 1),
|
||||
F_CODE1: code1,
|
||||
F_DES: row.Name,
|
||||
F_SIZE: row.Size,
|
||||
F_UNIT: row.Unite,
|
||||
F_QQTY: 1,
|
||||
F_MPRICE: num(row.GC),
|
||||
F_LPRICE: num(row.NC),
|
||||
F_EPRICE: num(row.JC),
|
||||
F_SPROPER: "0",
|
||||
F_LOADBM: "T",
|
||||
F_SAVEBM: "T",
|
||||
F_ORICODE: "00000000000",
|
||||
});
|
||||
}
|
||||
warnings.push(`${title.Code}: 기계 상세를 고정 금액으로 내보냅니다.`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { exportMachines };
|
||||
Reference in New Issue
Block a user