diff --git a/app/modules/malaysia/db.py b/app/modules/malaysia/db.py index c6dd9a6..8d5bac1 100644 --- a/app/modules/malaysia/db.py +++ b/app/modules/malaysia/db.py @@ -531,14 +531,18 @@ class MalaysiaStockStore: 콤보는 movement 테이블(낱개 전용)에 직접 안 들어가므로, 재고조사 입력을 기준점으로 set_movement(콤보 출고 원장)를 차감해 현재 콤보 재고를 낸다. - 콤보재고 = 최근(취소 제외) 재고조사 콤보수량 − 재고조사일 이후 콤보 OUT 합 + 콤보재고 = 최근(취소 제외) 재고조사 콤보수량 − 재고조사 기록 이후 콤보 OUT 합 + + 차감 기준은 날짜가 아니라 재고조사 생성시각(created_at)이다. 같은 날 + 재고조사 후 출고해도 반영되도록(날짜만 비교하면 당일 출고가 누락됨). + 재고조사를 다시 카운트하면 기준점이 갱신돼 이전 출고는 자동 리셋된다. 반환: {"stocktake_date": str|None, "rows": [{set_code, set_name, stocktake_qty, out_qty, qty}]} """ with self._pool.connection() as conn: head = conn.execute( - "SELECT id, stocktake_date FROM daily_stocktake " + "SELECT id, stocktake_date, created_at FROM daily_stocktake " "WHERE warehouse_code = %s AND status <> 'cancelled' " "ORDER BY stocktake_date DESC, id DESC LIMIT 1", (warehouse_code,), @@ -551,17 +555,17 @@ class MalaysiaStockStore: "ORDER BY sku_code ASC", (head["id"],), ).fetchall() - # 재고조사일 이후의 콤보 출고(OUT)/조정(ADJUST) 합. 재고조사 시점 - # 물리 카운트가 기준이므로, 그 이후 출고만 차감한다. + # 재고조사 기록 시점 이후의 콤보 출고(OUT)/조정(ADJUST) 합. + # created_at 비교라 같은 날 출고도 반영된다. out_rows = conn.execute( """ SELECT set_code, SUM(CASE WHEN movement_type = 'OUT' THEN qty ELSE -qty END) AS out_qty FROM set_movement - WHERE warehouse_code = %s AND movement_date > %s + WHERE warehouse_code = %s AND created_at > %s GROUP BY set_code """, - (warehouse_code, head["stocktake_date"]), + (warehouse_code, head["created_at"]), ).fetchall() out_map = {r["set_code"]: int(r["out_qty"] or 0) for r in out_rows} names = self.item_name_map()