feat(malaysia): 재고조사에 '이전값 불러오기' 버튼 추가
작성중 재고조사 상세에서 직전 조사의 랙 저장값을 한 번에 불러와 채운다.
사용자는 이어서 수정 후 저장/확정. 직전 조사에 랙 입력이 있을 때만 버튼 노출.
- db.previous_rack_entries: 현재 제외·취소 제외, 랙 있는 가장 최근 조사의
랙 항목 반환(replace_rack 입력 형식과 호환)
- POST /stocktakes/{id}/rack/load-previous: 이전 랙을 현재 조사로 replace_rack
적용 후 리다이렉트(화면 복원). 작성중만 허용, 이전값 없으면 400
- 상세 핸들러에 has_prev_rack 플래그, 템플릿에 formaction 버튼(덮어쓰기 confirm)
- i18n '이전값 불러오기'→'Load previous', JS 캐시버스트 v20260615b
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -416,6 +416,28 @@ class MalaysiaStockStore:
|
||||
).fetchone()
|
||||
return self._serialize(row) if row else None
|
||||
|
||||
def previous_rack_entries(
|
||||
self, *, warehouse_code: str, exclude_stocktake_id: int
|
||||
) -> list[dict[str, Any]]:
|
||||
"""직전(현재 조사 제외, 취소 제외, 랙 입력 있는) 재고조사의 랙 항목.
|
||||
|
||||
'이전값 불러오기' 버튼용. 조사 날짜 기준 가장 최근 다른 조사를 고른다.
|
||||
replace_rack 의 entries 형식(cell_code/sku_code/units_per_box/box_count)과
|
||||
호환되는 list_rack_entries 결과를 그대로 반환. 없으면 [].
|
||||
"""
|
||||
with self._pool.connection() as conn:
|
||||
head = conn.execute(
|
||||
"SELECT s.id FROM daily_stocktake s "
|
||||
"JOIN daily_stocktake_rack r ON r.stocktake_id = s.id "
|
||||
"WHERE s.warehouse_code = %s AND s.id <> %s AND s.status <> 'cancelled' "
|
||||
"GROUP BY s.id "
|
||||
"ORDER BY s.stocktake_date DESC, s.id DESC LIMIT 1",
|
||||
(warehouse_code, exclude_stocktake_id),
|
||||
).fetchone()
|
||||
if not head:
|
||||
return []
|
||||
return self.list_rack_entries(stocktake_id=head["id"])
|
||||
|
||||
def delete_stocktake(self, *, stocktake_id: int) -> None:
|
||||
"""재고조사 완전 삭제(헤더+라인 CASCADE). 슈퍼관리자 전용 동작.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user