Add validation for existing GR numbers and check for missing serials in updateGR method

This commit is contained in:
dhanabalan
2025-09-27 16:26:34 +05:30
parent aa4e42d790
commit f58c36383b

View File

@@ -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'];