From ba8fc0834ccb9cf40816e4ea5e327ea39f615c43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Tue, 17 Mar 2026 20:21:27 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20[receiving]=20=EC=9B=90=EC=9E=90?= =?UTF-8?q?=EC=9E=AC=EB=A1=9C=ED=8A=B8=EB=B2=88=ED=98=B8=20=EC=B1=84?= =?UTF-8?q?=EB=B2=88=EA=B7=9C=EC=B9=99=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - NumberingService(material_receipt) 우선 호출 - 채번규칙 없으면 레거시 로직(YYMMDD-NN) 폴백 - QuoteNumberService, OrderService와 동일 패턴 --- app/Services/ReceivingService.php | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) diff --git a/app/Services/ReceivingService.php b/app/Services/ReceivingService.php index 4948f23b..8571051a 100644 --- a/app/Services/ReceivingService.php +++ b/app/Services/ReceivingService.php @@ -428,13 +428,31 @@ private function generateReceivingNumber(int $tenantId): string /** * LOT번호 자동 생성 * - * 5130 레거시 차용: YYMMDD-NN (일별 시퀀스, 01부터 시작) - * 개선: 파일 기반 → DB 기반 (테넌트별 격리, 동시성 안전) + * 채번규칙이 있으면 NumberingService 사용, 없으면 레거시 로직 (YYMMDD-NN) */ private function generateLotNo(): string + { + $numberingService = app(NumberingService::class); + $numberingService->setContext($this->tenantId(), $this->apiUserId()); + + $number = $numberingService->generate('material_receipt'); + + if ($number !== null) { + return $number; + } + + return $this->generateLotNoLegacy(); + } + + /** + * LOT번호 레거시 생성 + * + * 5130 레거시 차용: YYMMDD-NN (일별 시퀀스, 01부터 시작) + */ + private function generateLotNoLegacy(): string { $tenantId = $this->tenantId(); - $prefix = now()->format('ymd'); // 예: 260317 + $prefix = now()->format('ymd'); $lastReceiving = Receiving::query() ->where('tenant_id', $tenantId)