fix(malaysia): 랙보기를 '최근 저장' 재고조사 기준으로
기존 랙보기는 latest_stocktake(조사 날짜 DESC) 기준이라, 방금 저장한 조사라도 날짜가 더 늦은 다른 조사가 있으면 안 보였다. 랙을 마지막으로 저장한 조사를 보여주도록 latest_rack_stocktake 추가 — daily_stocktake_rack .created_at MAX 기준(replace_rack 이 매 저장마다 delete+insert 하므로 랙 저장 시각과 일치). 재고현황 index 의 날짜 기준 latest_stocktake 는 유지. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -397,6 +397,25 @@ class MalaysiaStockStore:
|
|||||||
).fetchone()
|
).fetchone()
|
||||||
return self._serialize(row) if row else None
|
return self._serialize(row) if row else None
|
||||||
|
|
||||||
|
def latest_rack_stocktake(self, *, warehouse_code: str) -> dict[str, Any] | None:
|
||||||
|
"""랙 입력을 가장 최근에 저장한(취소 제외) 재고조사 헤더. 없으면 None.
|
||||||
|
|
||||||
|
랙보기 전용. '최근'을 조사 날짜가 아니라 랙 저장 시각으로 판단한다.
|
||||||
|
replace_rack 은 매 저장마다 daily_stocktake_rack 을 delete+insert 하므로
|
||||||
|
그 created_at MAX 가 곧 마지막 랙 저장 시각이 된다. 랙 항목이 없는
|
||||||
|
조사는 보여줄 게 없으므로 자연히 제외된다.
|
||||||
|
"""
|
||||||
|
with self._pool.connection() as conn:
|
||||||
|
row = conn.execute(
|
||||||
|
"SELECT s.* FROM daily_stocktake s "
|
||||||
|
"JOIN daily_stocktake_rack r ON r.stocktake_id = s.id "
|
||||||
|
"WHERE s.warehouse_code = %s AND s.status <> 'cancelled' "
|
||||||
|
"GROUP BY s.id "
|
||||||
|
"ORDER BY MAX(r.created_at) DESC, s.id DESC LIMIT 1",
|
||||||
|
(warehouse_code,),
|
||||||
|
).fetchone()
|
||||||
|
return self._serialize(row) if row else None
|
||||||
|
|
||||||
def delete_stocktake(self, *, stocktake_id: int) -> None:
|
def delete_stocktake(self, *, stocktake_id: int) -> None:
|
||||||
"""재고조사 완전 삭제(헤더+라인 CASCADE). 슈퍼관리자 전용 동작.
|
"""재고조사 완전 삭제(헤더+라인 CASCADE). 슈퍼관리자 전용 동작.
|
||||||
|
|
||||||
|
|||||||
@@ -187,7 +187,8 @@ async def rack_view(request: Request) -> HTMLResponse:
|
|||||||
return guard
|
return guard
|
||||||
st, user = guard
|
st, user = guard
|
||||||
wh = _selected_wh(request, st)
|
wh = _selected_wh(request, st)
|
||||||
latest = st.latest_stocktake(warehouse_code=wh)
|
# 랙보기는 '랙을 가장 최근에 저장한' 조사 기준(조사 날짜 아님).
|
||||||
|
latest = st.latest_rack_stocktake(warehouse_code=wh)
|
||||||
rack_by_cell: dict[str, list[dict[str, Any]]] = {}
|
rack_by_cell: dict[str, list[dict[str, Any]]] = {}
|
||||||
names = st.item_name_map()
|
names = st.item_name_map()
|
||||||
if latest:
|
if latest:
|
||||||
|
|||||||
Reference in New Issue
Block a user