From 673f52154385527d65fa826cdd4238478984ebe4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 18 Mar 2026 20:45:47 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[stock]=20=EC=9E=AC=EA=B3=A0=EC=83=9D?= =?UTF-8?q?=EC=82=B0=20=EC=A0=80=EC=9E=A5=20=EC=8B=9C=20=EC=9E=90=EB=8F=99?= =?UTF-8?q?=20=ED=99=95=EC=A0=95+=EC=83=9D=EC=82=B0=EC=A7=80=EC=8B=9C=20?= =?UTF-8?q?=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존: 저장(DRAFT) → 확정(CONFIRMED) → 생산지시 생성 (3단계) - 변경: 저장 즉시 확정 + 생산지시 자동 생성 (1단계) - store()에서 STOCK 타입 감지 시 CONFIRMED 전환 + 재고 예약 + createProductionOrder 호출 --- app/Services/OrderService.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/app/Services/OrderService.php b/app/Services/OrderService.php index 4cf71153..254df9a8 100644 --- a/app/Services/OrderService.php +++ b/app/Services/OrderService.php @@ -326,6 +326,23 @@ public function store(array $data) ->update(['order_id' => $order->id]); } + // 재고생산: 저장 즉시 확정 + 생산지시 자동 생성 (2단계 프로세스 제거) + 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. 생산지시 자동 생성 (createProductionOrder 재활용) + $this->createProductionOrder($order->id, []); + + // 최종 상태 반영 (createProductionOrder에서 IN_PROGRESS로 변경됨) + $order->refresh(); + } + return $this->loadDetailRelations($order); }); }