diff --git a/app/Http/Controllers/PdfController.php b/app/Http/Controllers/PdfController.php index 5f29047..c1615b8 100644 --- a/app/Http/Controllers/PdfController.php +++ b/app/Http/Controllers/PdfController.php @@ -71,6 +71,17 @@ class PdfController extends Controller ], 400); } + $grExists = GRMaster::where('plant_id', $plantId) + ->where('gr_number', $data['gr_number']) + ->first(); + + if (!$grExists) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => "GR Number {$data['gr_number']} not found for plant {$data['plant_code']}!" + ], 404); + } + $scannedBy = $data['scanned_by'] ?? null; if ($scannedBy == '' || $scannedBy == null) { @@ -146,6 +157,45 @@ class PdfController extends Controller ], 400); } + $missingSerialsByItem = []; + + foreach ($data['item_codes'] as $item) { + $itemCode = $item['item_code']; + $serialNumbers = $item['serial_numbers']; + + // Get the item id + $itemObj = Item::where('plant_id', $plantId) + ->where('code', $itemCode) + ->first(); + + if (!$itemObj) { + continue; + } + + $itemId = $itemObj->id; + + $foundSerials = GRMaster::where('plant_id', $plantId) + ->where('gr_number', $data['gr_number']) + ->where('item_id', $itemId) + ->whereIn('serial_number', $serialNumbers) + ->pluck('serial_number') + ->toArray(); + + $missingSerials = array_diff($serialNumbers, $foundSerials); + + if (count($missingSerials) > 0) { + $missingSerialsByItem[$itemCode] = array_values($missingSerials); + } + } + + if (count($missingSerialsByItem) > 0) { + return response()->json([ + 'status_code' => 'ERROR', + 'status_description' => 'Some serial numbers not found in DB for given plant, GR number, and item!', + 'missing_serials' => $missingSerialsByItem + ], 400); + } + // foreach ($data['item_codes'] as $item) // { // $itemCode = $item['item_code'];