feat(dispatch): 말레이시아 재고 차감 버튼(날짜 1회성)

- 달력 다운로드 아래 '말레이시아 재고 차감' 버튼. 선택 날짜 출고를
  말레이시아 재고관리에 OUT 으로 반영(movement_date=해당 날짜)
  · 낱개(MT/MX/MZ)=낱개 OUT, 콤보(MY-)=세트 OUT(재고관리가 BOM 분해)
  · _N 배수 반영, MD-(뚜껑) 제외
- 날짜당 1회만: dispatch_stock_deductions 마커로 재차감 차단(이중 출고 방지)
  · 마커 선점 후 반영, 콤보 BOM 누락은 사전검증으로 차단
- export.split_singles_combos, db 차감 가드 메서드, 라우터 POST /dispatch/stock-deduct
- 스키마: dispatch_stock_deductions (init + 마이그레이션 dispatch_add_deductions.sql)
- 이미 차감된 날짜는 버튼 비활성 + 안내

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-22 18:07:37 +09:00
parent 27e2c17606
commit b583627bd3
6 changed files with 259 additions and 3 deletions
+27
View File
@@ -0,0 +1,27 @@
-- =====================================================================
-- dispatch_db 마이그레이션 — 말레이시아 재고 차감 1회성 기록
-- =====================================================================
-- 멱등(idempotent): 여러 번 실행해도 안전.
--
-- 배경: 배송 배치의 그날 출고를 말레이시아 재고관리(OUT)로 1회만 반영하기 위해,
-- 날짜 단위로 차감 완료를 기록한다. 같은 날짜를 다시 차감하면 재고가
-- 이중으로 빠지므로 이 표의 존재 여부로 재실행을 차단한다.
--
-- 실행:
-- docker exec -i postgres-db psql -U postgres -d dispatch_db \
-- < scripts/sql/dispatch_add_deductions.sql
-- =====================================================================
\set ON_ERROR_STOP on
\connect dispatch_db
CREATE TABLE IF NOT EXISTS dispatch_stock_deductions (
dispatch_date DATE PRIMARY KEY,
warehouse_code TEXT NOT NULL DEFAULT '',
single_lines INTEGER NOT NULL DEFAULT 0,
combo_lines INTEGER NOT NULL DEFAULT 0,
worker_name TEXT NOT NULL DEFAULT '',
deducted_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
SELECT 'dispatch_stock_deductions ready' AS status;