feat(est): edit review summary in workflow
This commit is contained in:
@@ -1,6 +1,20 @@
|
||||
from test_est_rea_parity import run
|
||||
|
||||
|
||||
def test_review_summary_updates_the_print_document_and_active_settings():
|
||||
result = run(
|
||||
"math",
|
||||
"""(()=>{
|
||||
const handlers={},p=EstNative.empty();p.printSettings={form:'173',notes:'old'};
|
||||
globalThis.document={addEventListener:(name,fn)=>handlers[name]=fn};
|
||||
globalThis.EstApp={state:{project:p},change:fn=>fn(),render:()=>{}};
|
||||
EstReview.install();handlers.change({target:{dataset:{reviewSummary:''},value:'review summary'}});
|
||||
return {document:p.documents['173'],notes:p.printSettings.notes};
|
||||
})()""",
|
||||
)
|
||||
assert result == {"document": "review summary", "notes": "review summary"}
|
||||
|
||||
|
||||
def test_review_rejects_unallocated_fixed_amounts_and_ambiguous_targets():
|
||||
result = run(
|
||||
"math",
|
||||
|
||||
@@ -115,7 +115,7 @@ const EstReview = (() => {
|
||||
({ row }) => editable(row) && (row.Name || row.Code),
|
||||
);
|
||||
byId("work-content").innerHTML =
|
||||
`<div class="business-tools"><b>계약심사</b><button data-review-copy>심사 내역 사본 열기</button><button data-review-clear>심사 입력 초기화</button><span>기존 ${number(output.before)} · 심사 ${number(output.after)} · 차액 ${number(output.after - output.before)}</span></div><p>심사 수량과 비목별 단가를 직접 입력합니다. 고정금액 행은 비목별 금액을 입력합니다. 원래 내역은 유지되며 심사 사본에서 변경됩니다.</p><p class="business-note">${esc(output.errors.join(" / "))}</p><table class="sheet"><thead><tr>${["코드", "품명", "기존 수량", "심사 수량", "노무", "재료", "경비", "실적", "기존 금액", "심사 금액", "차액", "심사 사유", "작업"].map((value) => `<th>${value}</th>`).join("")}</tr></thead><tbody>${rows
|
||||
`<div class="business-tools"><b>계약심사</b><button data-review-copy>심사 내역 사본 열기</button><button data-review-clear>심사 입력 초기화</button><span>기존 ${number(output.before)} · 심사 ${number(output.after)} · 차액 ${number(output.after - output.before)}</span></div><p>심사 수량과 비목별 단가를 직접 입력합니다. 고정금액 행은 비목별 금액을 입력합니다. 원래 내역은 유지되며 심사 사본에서 변경됩니다.</p><label>주요심사 내용<textarea data-review-summary rows="4" maxlength="100000" style="width:100%">${esc(project.documents?.["173"] || "")}</textarea></label><p class="business-note">${esc(output.errors.join(" / "))}</p><table class="sheet"><thead><tr>${["코드", "품명", "기존 수량", "심사 수량", "노무", "재료", "경비", "실적", "기존 금액", "심사 금액", "차액", "심사 사유", "작업"].map((value) => `<th>${value}</th>`).join("")}</tr></thead><tbody>${rows
|
||||
.map(({ row, index }) => {
|
||||
const key = rowKey(row, index),
|
||||
input = edits[key] || {},
|
||||
@@ -136,6 +136,15 @@ const EstReview = (() => {
|
||||
function install() {
|
||||
document.addEventListener("change", (event) => {
|
||||
const node = event.target;
|
||||
if (node.dataset.reviewSummary !== undefined) {
|
||||
EstApp.change(() => {
|
||||
const project = EstApp.state.project;
|
||||
(project.documents ||= {})["173"] = node.value;
|
||||
if (String(project.printSettings?.form) === "173")
|
||||
project.printSettings.notes = node.value;
|
||||
}, false);
|
||||
return;
|
||||
}
|
||||
if (!node.dataset.review) return;
|
||||
const field = node.dataset.review,
|
||||
value = field === "Reason" ? node.value : Number(node.value),
|
||||
|
||||
Reference in New Issue
Block a user