- 까닭: SK 셈이 바탕 로직 재료 줄에 일위대가 기본(별도계상 · 162-1)을 써 drop_apart 가 줄 · 재료비에서 뺌 - M02_Sangeun_Calc.resolve · run 에 line 인자 — SK = 바탕 재료 별도계상 빈 칸을 직접계산으로(고른 「별도계상」 만 밖) - 일위대가 덮개 줄(Labor_Patch.run · Item_Sangeun._freeze_lines)은 line=True — 일위대가 기본 그대로 - 테스트1(GC000211) 재료비 1,404.81 → 36,525.06 · 계 = M01 124,419.85 · 기존 SK 17 중 GC000211 바탕 3 만 바뀜 - 새 지킴 시험 test_747_1_sk_material Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
51 lines
2.2 KiB
Python
51 lines
2.2 KiB
Python
"""SK 바탕 재료 = M01 기초 그대로 셈(PLAN 747-1) — 별도계상 빈 칸 = 직접계산 · 고른 줄만 밖 ·
|
|
일위대가 덮개 줄(`M02_Labor_Patch.run`)은 일위대가 기본(별도계상) 그대로."""
|
|
|
|
import pytest
|
|
|
|
from M01_MasterData import M01_MasterData_Store as m01
|
|
from M02_MasterTemplete import M02_Labor_Doc as labor
|
|
from M02_MasterTemplete import M02_Labor_Patch as patch
|
|
from M02_MasterTemplete import M02_Sangeun_Calc as calc
|
|
from M02_MasterTemplete import M02_Sangeun_Doc as sd
|
|
|
|
FORM = "GC000211" # 6-3-1 합판거푸집 — 합판 1.03 · 각재 0.038 · 폼타이 0 · 소모자재 = 재료비 %
|
|
PLY = "material:합판(내수 12㎜)#0"
|
|
|
|
|
|
def _whole():
|
|
return m01.loaded()[1]
|
|
|
|
|
|
def _run(**doc):
|
|
whole = _whole()
|
|
clean = sd.clean({"키": "SK-000001", "이름": "시험", "단위": "㎡", **doc}, None, whole)
|
|
return labor._json(calc.run(clean, whole))
|
|
|
|
|
|
def test_base_materials_count_like_m01():
|
|
m01_ = labor._json(labor.run_line(_whole(), FORM, None))
|
|
got = _run(바탕={"로직": FORM})
|
|
assert got["기준"]["재료비"] == pytest.approx(m01_["기준"]["재료비"])
|
|
assert got["기준"]["계"] == pytest.approx(m01_["기준"]["계"])
|
|
qty = {x["cid"]: x["수량"] for x in got["줄"]}
|
|
assert qty[PLY] == pytest.approx(1.03)
|
|
assert qty["material:폼타이 12.7㎜#0"] == 0 # M01 수량 0 = 0 그대로
|
|
|
|
|
|
def test_cover_and_explicit_apart():
|
|
base = _run(바탕={"로직": FORM})
|
|
more = _run(바탕={"로직": FORM}, 덮개={PLY: {"qty": 2}})
|
|
ply = next(x for x in base["줄"] if x["cid"] == PLY)
|
|
assert more["기준"]["재료비"] > base["기준"]["재료비"] + ply["단가"] * 0.9
|
|
out = _run(바탕={"로직": FORM}, 자재표시={PLY: {"별도계상": "별도계상"}})
|
|
assert all(x["cid"] != PLY for x in out["줄"])
|
|
assert out["기준"]["재료비"] < base["기준"]["재료비"] - ply["금액"] + 1
|
|
|
|
|
|
def test_hopyo_line_keeps_line_default():
|
|
whole = _whole()
|
|
line = {"로직": FORM, "입력값": {}, "패치": {"덮개": {PLY: {"qty": 2}}}}
|
|
got = labor._json(patch.run(whole, line))
|
|
assert all(x["cid"] != PLY for x in got["줄"]) # 일위대가 기본 = 별도계상(222-1)
|