Quality Validation - Dashboard - Production Quantity Validation and Plan Quantity Updation

This commit is contained in:
dhanabalan
2025-03-31 19:10:13 +05:30
parent a93fe806bb
commit 29687b109c
7 changed files with 483 additions and 120 deletions

View File

@@ -143,20 +143,24 @@ class ProductionQuantityResource extends Resource
->reactive()
->afterStateUpdated(function ($state, callable $set, callable $get) {
$lineId = $get('line_id');
$set('item_code', null);
if (!$lineId) {
$set('ppLineError', 'Please select a line first.');
$set('pqLineError', 'Please select a line first.');
return;
}
else
{
$set('validationError', null);
$set('ppLineError', null);
$set('pqLineError', null);
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
}
})
->extraAttributes(fn ($get) => [
'class' => $get('ppLineError') ? 'border-red-500' : '',
'class' => $get('pqLineError') ? 'border-red-500' : '',
])
->hint(fn ($get) => $get('ppLineError') ? $get('ppLineError') : null)
->hint(fn ($get) => $get('pqLineError') ? $get('pqLineError') : null)
->hintColor('danger'),
// Forms\Components\Select::make('item_id')
// ->label('Item Code')
@@ -214,62 +218,128 @@ class ProductionQuantityResource extends Resource
$set('validationError', 'Please select a line first.');
return;
}
$exists = \App\Models\ProductionPlan::where('plant_id', $get('plant_id'))
->where('shift_id', $get('shift_id'))
->where('line_id', $get('line_id'))
->whereDate('created_at', today())
->exists();
if (!$exists)
{
$set('item_code', null);
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
$set('validationError', 'Please set production plan first.');
return;
}
$set('validationError', null);
}
if (!preg_match('/^[a-zA-Z0-9]+\|[a-zA-Z0-9]+(\|)?$/', $state)) {
if (!preg_match('/^[a-zA-Z0-9]{6,}+\|[1-9][a-zA-Z0-9]{8,}+(\|)?$/', $state)) {
if (strpos($state, '|') === false) {
$set('validationError', 'Scan valid QR code. (Ex: Item_Code|Serial_Number )');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else
{
$splits = explode('|', $state);
$iCode = trim($splits[0]);
$sNumber = isset($splits[1]) ? trim($splits[1]) : null;
if (!ctype_alnum($iCode)) {
$set('validationError', 'Item code must contain alpha-numeric values.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else if (strlen($iCode) < 6) {
$set('validationError', 'Item code must be at least 6 digits.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else if (!ctype_alnum($sNumber)) {
$set('validationError', 'Serial Number must contain alpha-numeric values.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else if (strlen($sNumber) < 9) {
$set('validationError', 'Serial Number must be at least 9 digits.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
}
$set('validationError', 'Scan valid QR code. (Ex: Item_Code|Serial_Number )');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
// Only search when all parent IDs are selected
$parts = explode('|', $state);
$itemCode = trim($parts[0]); // Extract item code // 123456|123456789
$serialNumber = isset($parts[1]) ? trim($parts[1]) : null;
if (strlen($itemCode) < 6) {
$set('validationError', 'Item code must be at least 6 digits.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else if (!ctype_alnum($itemCode)) {
$set('validationError', 'Item code should contain alpha-numeric values.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else if ($serialNumber === '') {
$set('validationError', 'Waiting for full QR scan...');
$set('item_description', null);
$set('serial_number', null);
return; // Do not clear item_id, just wait for full input
}
else if (strlen($serialNumber) < 9) {
$set('validationError', 'Serial Number must be at least 9 digits.');
$set('item_description', null);
$set('serial_number', null);
return;
}
else if (!ctype_alnum($serialNumber)) {
$set('validationError', 'Serial Number should contain alpha-numeric values.');
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
return;
}
else
{
$set('validationError', null);
$set('item_id', null);
$set('item_description', null);
$set('serial_number', null);
}
// Only search when all parent IDs are selected
$parts = explode('|', $state);
$itemCode = trim($parts[0]);
$serialNumber = isset($parts[1]) ? trim($parts[1]) : null;
// if (strlen($itemCode) < 6) {
// $set('validationError', 'Item code must be at least 6 digits.');
// $set('item_id', null);
// $set('item_description', null);
// $set('serial_number', null);
// return;
// }
// else if (!ctype_alnum($itemCode)) {
// $set('validationError', 'Item code must contain alpha-numeric values.');
// $set('item_id', null);
// $set('item_description', null);
// $set('serial_number', null);
// return;
// }
// else if ($serialNumber === '') {
// $set('validationError', 'Waiting for full QR scan...');
// $set('item_id', null);
// $set('item_description', null);
// $set('serial_number', null);
// return; // Do not clear item_id, just wait for full input
// }
// else if (strlen($serialNumber) < 9) {
// $set('validationError', 'Serial Number must be at least 9 digits.');
// $set('item_description', null);
// $set('serial_number', null);
// return;
// }
// else if (!ctype_alnum($serialNumber)) {
// $set('validationError', 'Serial Number must contain alpha-numeric values.');
// $set('item_id', null);
// $set('item_description', null);
// $set('serial_number', null);
// return;
// }
// else
// {
// $set('validationError', null);
// }
// Fetch item using item code and plant_id
$item = \App\Models\Item::where('code', $itemCode)
->where('plant_id', $get('plant_id'))
@@ -284,7 +354,7 @@ class ProductionQuantityResource extends Resource
{
$set('serial_number', $serialNumber);
$set('item_id', $item->id);
$set('item_code', $itemCode); //$itemCode
$set('item_code', $itemCode);
$set('item_description', $item->description);
}
else