diff --git a/app/modules/malaysia/db.py b/app/modules/malaysia/db.py index 53140ed..981563f 100644 --- a/app/modules/malaysia/db.py +++ b/app/modules/malaysia/db.py @@ -14,6 +14,7 @@ from __future__ import annotations +import logging from datetime import date, datetime from typing import Any @@ -24,6 +25,8 @@ from app.timezone import KST, now_kst from . import store +logger = logging.getLogger("malaysia.db") + class MalaysiaStockStore: def __init__(self, dsn: str, *, min_size: int = 1, max_size: int = 5): @@ -817,7 +820,9 @@ class MalaysiaStockStore: - 차이 = total_qty - current_system_qty → qty 부호 그대로 STOCKTAKE 저장 - movement 이력이 남고, 현재고 계산은 단순 합산으로 유지된다. - - BOM 없는 MY- 세트가 있으면 확정 거부(요구사항 8). + - BOM 없는 MY- 세트는 확정을 막지 않는다(경고만). 해당 세트는 낱개로 + 분해되지 않아 낱개 재고에 0 으로 반영된다. BOM 은 itemcode_db + (set_components)에서 등록해야 분해가 적용된다. 반환: {"stocktake": {...}, "adjustments": [{item_code, before, after, diff}], "rows": [...]} """ computed = self.compute_result(stocktake_id=stocktake_id, bom_map=bom_map) @@ -825,9 +830,10 @@ class MalaysiaStockStore: if head["status"] != "draft": raise ValueError("이미 확정/취소된 재고조사입니다.") if computed["missing_bom"]: - raise ValueError( - "BOM 구성이 없는 세트가 있어 확정할 수 없습니다: " - + ", ".join(computed["missing_bom"]) + logger.warning( + "재고조사 #%s 확정 — BOM 없는 세트 무시(낱개 0 반영): %s", + stocktake_id, + ", ".join(computed["missing_bom"]), ) wh = head["warehouse_code"] st_date = head["stocktake_date"]