diff --git a/B09_Estimation/B09_Estimation_UI_Page.ts b/B09_Estimation/B09_Estimation_UI_Page.ts index 7afc0166..ff6538f6 100644 --- a/B09_Estimation/B09_Estimation_UI_Page.ts +++ b/B09_Estimation/B09_Estimation_UI_Page.ts @@ -1019,6 +1019,16 @@ export async function renderB09Estimation(root: HTMLElement): Promise { return; } + // 자재가 아예 없으면 **빈 표 셋을 늘어놓지 않는다** — 「없다」 한 줄이면 된다 + // (2026-09-08 화면 전수에서 세 무리가 모두 「(0) — 0」 으로 뜨고 있었다). + if (sheet.contractor.length === 0 && sheet.owner.length === 0 && sheet.unknown.length === 0) { + const none = document.createElement("div"); + none.className = "b09-empty"; + none.textContent = L("B09_Estimation_Mat_None"); + body.append(none); + return; + } + for (const [labelKey, rows, total] of [ ["B09_Estimation_Mat_Contractor", sheet.contractor, sheet.contractor_total_krw], ["B09_Estimation_Mat_Owner", sheet.owner, sheet.owner_total_krw], diff --git a/ui_template/ui_template_locale_b2.ts b/ui_template/ui_template_locale_b2.ts index b25bbbb4..738e388e 100644 --- a/ui_template/ui_template_locale_b2.ts +++ b/ui_template/ui_template_locale_b2.ts @@ -696,6 +696,10 @@ export const ui_locales_b2 = { "관급·사급이 안 갈린 것 — 어느 합계에도 안 넣습니다", "Supply type undecided — excluded from both totals", ], + B09_Estimation_Mat_None: [ + "이 프로젝트에는 자재 줄이 없습니다 — 구조물이 없거나 자재가 안 나온 상태입니다.", + "This project has no material rows yet.", + ], B09_Estimation_Mat_Empty: [ "설계내역서를 먼저 불러오면 자재대가 섭니다.", "Load the bill first and the material sheet appears.",