Files
sam-docs/changes/20260318_stock_production_auto_confirm.md

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();
}

동작 순서:

  1. 주문 생성 (기존 로직 그대로)
  2. 상태를 CONFIRMED로 변경
  3. StockService::reserveForOrder()로 재고 예약
  4. createProductionOrder()로 절곡 공정 작업지시 자동 생성
  5. 최종 상태 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