fix(malaysia): 같은 날 콤보 출고도 콤보 재고에 반영

콤보 재고 차감 기준을 movement_date > stocktake_date 에서
재고조사 created_at < set_movement.created_at 으로 변경.
날짜만 비교하면 재고조사 당일 출고가 누락되던 문제 수정.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-16 11:40:30 +09:00
parent c786fbabd7
commit 5b9d9c45ea
+10 -6
View File
@@ -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()