3.6 KiB
3.6 KiB
재고생산 자동 확정+생산지시 구조 변경
날짜: 2026-03-18 작업자: Claude Code
변경 개요
재고생산의 3단계 프로세스(저장 → 확정 → 생산지시 생성)를 1단계(저장 = 즉시 생산지시)로 단축했다. 재고생산은 수주와 달리 별도 확정 절차가 불필요하다.
변경 배경
| 항목 | 기존 | 변경 후 |
|---|---|---|
| 저장 | DRAFT 상태로 생성 | CONFIRMED → IN_PROGRESS (자동) |
| 확정 | 사용자가 수동 클릭 | 불필요 (삭제) |
| 생산지시 생성 | 확정 후 사용자가 수동 클릭 | 저장 시 자동 생성 |
| 단계 수 | 3단계 | 1단계 |
기존: 저장(DRAFT) ──→ 확정(CONFIRMED) ──→ 생산지시 생성(IN_PROGRESS)
변경: 저장 ──→ 확정+재고예약+생산지시 자동 ──→ IN_PROGRESS
수정된 파일
| 파일 | 변경 내용 |
|---|---|
api/app/Services/OrderService.php |
store() 메서드에 STOCK 자동 확정+생산지시 로직 추가 |
상세 변경 사항
OrderService::store() — STOCK 타입 후처리 추가
store() 메서드 마지막, 주문 생성 완료 후 isStock 조건 블록 추가:
if ($isStock) {
// 1. 확정 처리 (DRAFT → CONFIRMED)
$order->status_code = Order::STATUS_CONFIRMED;
$order->save();
// 2. 재고 예약
$order->load('items');
app(StockService::class)->reserveForOrder($order->items, $order->id);
// 3. 생산지시 자동 생성
$this->createProductionOrder($order->id, []);
// 최종 상태 반영 (IN_PROGRESS)
$order->refresh();
}
동작 순서:
- 주문 생성 (기존 로직 그대로)
- 상태를 CONFIRMED로 변경
StockService::reserveForOrder()로 재고 예약createProductionOrder()로 절곡 공정 작업지시 자동 생성- 최종 상태 IN_PROGRESS (createProductionOrder 내부에서 변경)
기존 로직 재활용
createProductionOrder()의 STOCK 분기: 모든 품목을 "절곡" 공정에 직접 배정 (BOM 매칭 스킵)reserveForOrder(): 기존 updateStatus()에서 사용하던 재고 예약 로직과 동일- 새 코드는 기존 메서드를 호출하므로, 향후 확정/생산지시 로직 변경 시 자동 반영
React 프론트엔드 변경 요청
| 항목 | 설명 |
|---|---|
| "확정" 버튼 제거 | StockProductionDetail.tsx — draft 상태에서 확정 버튼 제거 |
| "생산지시 생성" 버튼 제거 | StockProductionDetail.tsx — confirmed 상태에서 생산지시 버튼 제거 |
| 저장 후 리다이렉트 | 저장 완료 → 상세 페이지로 이동 시 이미 IN_PROGRESS 상태 표시 |
| 상태 표시 조정 | DRAFT 상태가 목록에 노출되지 않을 수 있음 (저장 즉시 IN_PROGRESS) |
테스트 체크리스트
- 재고생산 저장 시 상태가 IN_PROGRESS로 표시
- 생산지시(작업지시)가 자동으로 생성되는지 확인
- 절곡 공정에 품목이 정상 배정되는지 확인
- 재고 예약이 정상 동작하는지 확인
- 일반 수주(TYPE_ORDER)는 기존 흐름(DRAFT → 확정 → 생산지시) 유지
- React 화면에서 확정/생산지시 버튼 제거 확인 (프론트엔드 작업 후)
관련 문서
| 문서 | 설명 |
|---|---|
| stock-production-api.md | 재고생산 API 명세 |
| 20260316_stock_production_order.md | 재고생산 기능 최초 추가 |
최종 업데이트: 2026-03-18