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:
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user