feat(est-test): ES 정보(물가변동 기준일·선급금)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-11-12 13:29:57 +09:00
co-authored by Claude Opus 5.5
parent 009c58a72d
commit 3900d88a7c
5 changed files with 37 additions and 1 deletions
+2
View File
@@ -489,6 +489,8 @@ ative-standard.js에 표준시장단가 원천(SilJukDat)과 내역 행(EstMainD
- 남음: 구성비·요율 전환(CalcBase), 약어 표시(SName), 제비율 기준 문서 보기(원본 한글 파일).
- [x] 수량산출서 검색·전체보기(원본 TFRMMULLANG btnSerch·btnAllDisplay — 빈칸·|·괄호 무시 포함 검색) — 고르기 줄을 `native-quantity-sheets.js` 로 옮겨 700줄 제한 유지.
- 검증완료: `test_est_quantity_sheets.py` 검색 시험 포함 수량 시험 22개 통과. ORCA 브라우저에서 「집수」 검색 → 항목에 집수정이 있는 「배수」만·선택 이동, 전체보기 → 3개 복귀, 샘플 복구.
- [x] ES 정보(원본 mnuESInfo → TfrmESInfo 0x10b838c) — 기준시점·비교시점·최종기성일·선급금지급일(기본 오늘)·선급금지급액을 `project.esInfo` 에 기록(원본 [EscInfo] SDATE·CDATE·ACDATE·PreDATE·PreCost). 원본도 ES 제출 파일 작성에만 씀 — 웹 물가변동 계산과 잇지 않음, ESTX 에는 남지 않음.
- 검증완료: 바인딩 시험 통과. ORCA 브라우저에서 기본 오늘 · 기준시점 2025-01-15·선급금 1,000,000 저장 → 다시 열면 그대로, 지워 복구.
- [x] 설계참고철(Main Data)과 단가 범위 검색(원본 TfrmMainTableList 「MAIN DATA(설계참고철) 추가 및 삭제」 · TfrmFolderSerch 「Main Data에서 검색」·범위 검색 0xefefb0) — 통합 검색 「설계참고철 관리」에서 저장된 작업 중 최대 10개 지정(양식 보관함 종류 options), 검색위치 「설계참고철」이면 그 작업만, 검색어 「a~b」·숫자 하나는 단가 범위·같음. 원본의 검색중지는 서버 검색이 바로 끝나 두지 않음.
- 검증완료: `test_est_multi_search.py` 2개(범위·같음·지정 작업만) 통과. ORCA 브라우저에서 2개 지정 → 「1000~2000」 24건 모두 지정 작업·범위 안, 목록 지워 복구.
- [x] 줄 연결 도구(원본 TfrmHead popupCostNC·GC·JC·All 0xf1b54c · popMainSumIndex · mnuDataLink 0xf00e6c — 디스어셈블 근거) — 비목별 단가 불러오기(일위대가 줄: 하위 견적·일위·단산·기계에서 고른 비목 단가만 남기고 나머지 0, 기준비목 지정, 노임·자재·표준 거부), SUM 색인지정(해제·A~Z → 구간 SKind, 레벨·소계·도급액·조달수수료·호표머리 줄 거부), 하위데이타 연결/끊기(연결 줄은 끊고 값 유지, 끊긴 줄은 일위→단산→기계→표준→견적→자재→노임 차례로 코드 또는 품명·규격·단위 맞춤으로 연결, 자재는 재료단가·노임은 노무단가 = 원본 TC). 원본은 초점 한 줄, 웹은 고른 줄 모두.
+2
View File
@@ -61,6 +61,7 @@
<script defer src="native-block-file.js"></script>
<script defer src="native-cell-clip.js"></script>
<script defer src="native-row-links.js"></script>
<script defer src="native-es-info.js"></script>
<script defer src="native-wonga-tools.js"></script>
<script defer src="native-estimate-print.js"></script>
<script defer src="native-xml-check.js"></script>
@@ -245,6 +246,7 @@
><button data-view="machine-change">기계경비 설계변경</button
><button data-view="change">설계변경</button><button data-view="progress">기성고</button
><button data-view="escalation">물가변동</button
><button data-action="es-info">ES 정보</button
><button data-view="annual">연차공사</button><button data-view="review">계약심사</button
><button data-view="resources">동원인원·자재·장비</button>
<button data-view="schedule">예정공정표</button>
+2 -1
View File
@@ -632,7 +632,8 @@ const EstBusinessActions = (() => {
(typeof EstBlockFile !== "undefined" && EstBlockFile.handle(name, state)) ||
(typeof EstDisplay !== "undefined" && EstDisplay.handle(name, state)) ||
(typeof EstCellClip !== "undefined" && EstCellClip.handle(name, state)) ||
(typeof EstRowLinks !== "undefined" && EstRowLinks.handle(name, state))
(typeof EstRowLinks !== "undefined" && EstRowLinks.handle(name, state)) ||
(typeof EstEsInfo !== "undefined" && EstEsInfo.handle(name, state))
) {
EstApp.render();
} else if (name === "insert-annual") {
+30
View File
@@ -0,0 +1,30 @@
// 원본 「ES 정보」(ES도구 mnuESInfo → TfrmESInfo 0x10b838c) — 조달청 물가변동(ES) 제출용 기준시점·비교시점·최종기성일·
// 선급금지급일·선급금지급액. 원본은 작업 폴더 ProjectDataInfo.Ini [EscInfo] SDATE·CDATE·ACDATE·PreDATE·PreCost 에 두고
// 날짜 기본값은 오늘. 웹은 project.esInfo 에 둔다(물가변동 계산과는 직접 잇지 않음 — 원본도 ES 제출 파일 작성에만 씀).
const EstEsInfo = (() => {
const today = () => new Date().toISOString().slice(0, 10);
function dialog(state) {
const e = state.project.esInfo || {};
EstActions.form(
"ES 정보",
[
{ name: "SDATE", label: "기준시점", type: "date", value: e.SDATE || today() },
{ name: "CDATE", label: "비교시점", type: "date", value: e.CDATE || today() },
{ name: "ACDATE", label: "최종기성일", type: "date", value: e.ACDATE || today() },
{ name: "PreDATE", label: "선급금지급일", type: "date", value: e.PreDATE || today() },
{ name: "PreCost", label: "선급금지급액(원)", type: "number", value: e.PreCost ?? 0 },
],
(values) => {
if (!Number.isFinite(values.PreCost) || values.PreCost < 0)
throw Error("선급금지급액은 0 이상 수치입니다.");
EstApp.change((project) => (project.esInfo = { ...values }), false);
},
);
}
function handle(name, state) {
if (name !== "es-info") return false;
dialog(state);
return true;
}
return { handle };
})();
+1
View File
@@ -82,6 +82,7 @@ const allowed = new Set([
"native-display.js",
"native-cell-clip.js",
"native-row-links.js",
"native-es-info.js",
"native-wonga-tools.js",
"native-estimate-print.js",
"native-xml-check.js",