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)