ranjith-dev #361

Merged
jothi merged 3 commits from ranjith-dev into master 2026-02-20 14:27:17 +00:00
4 changed files with 124 additions and 87 deletions

View File

@@ -40,10 +40,10 @@ class CharacteristicValueExporter extends Exporter
->label('OBSERVED VALUE'), ->label('OBSERVED VALUE'),
ExportColumn::make('created_at') ExportColumn::make('created_at')
->label('CREATED AT'), ->label('CREATED AT'),
ExportColumn::make('updated_at')
->label('UPDATED AT'),
ExportColumn::make('created_by') ExportColumn::make('created_by')
->label('CREATED BY'), ->label('CREATED BY'),
ExportColumn::make('updated_at')
->label('UPDATED AT'),
ExportColumn::make('updated_by') ExportColumn::make('updated_by')
->label('UPDATED BY'), ->label('UPDATED BY'),
ExportColumn::make('deleted_at') ExportColumn::make('deleted_at')

View File

@@ -46,10 +46,10 @@ class ProcessOrderExporter extends Exporter
->label('REWORK STATUS'), ->label('REWORK STATUS'),
ExportColumn::make('created_at') ExportColumn::make('created_at')
->label('CREATED AT'), ->label('CREATED AT'),
ExportColumn::make('updated_at')
->label('UPDATED AT'),
ExportColumn::make('created_by') ExportColumn::make('created_by')
->label('CREATED BY'), ->label('CREATED BY'),
ExportColumn::make('updated_at')
->label('UPDATED AT'),
ExportColumn::make('updated_by') ExportColumn::make('updated_by')
->label('UPDATED BY'), ->label('UPDATED BY'),
ExportColumn::make('deleted_at') ExportColumn::make('deleted_at')

View File

@@ -112,22 +112,30 @@ class CharacteristicValueImporter extends Importer
$iCode = trim($this->data['item']); $iCode = trim($this->data['item']);
$workCenter = trim($this->data['machine']); $workCenter = trim($this->data['machine']);
$lineName = trim($this->data['line']); $lineName = trim($this->data['line']);
$status = trim($this->data['status']);
$createdBy = trim($this->data['created_by']);
$coilNo = trim($this->data['coil_number']); $coilNo = trim($this->data['coil_number']);
$obserVal = trim($this->data['observed_value']); $obserVal = trim($this->data['observed_value']);
$status = trim($this->data['status']);
$createdBy = trim($this->data['created_by']);
if ($plantCode == null || $plantCode == '') { if ($plantCode == null || $plantCode == '') {
$warnMsg[] = 'Plant code cannot be empty'; $warnMsg[] = 'Plant code cannot be empty';
} elseif ($iCode == null || $iCode == '') { } elseif ($iCode == null || $iCode == '') {// process_order
$warnMsg[] = 'Item code cannot be empty';
} elseif ($processOrder == null || $processOrder == '') {//
$warnMsg[] = 'Process Order cannot be empty'; $warnMsg[] = 'Process Order cannot be empty';
} elseif ($workCenter == null || $workCenter == '') { } elseif ($workCenter == null || $workCenter == '') {
$warnMsg[] = 'Work center cannot be empty'; $warnMsg[] = 'Work center cannot be empty';
} elseif ($lineName == null || $lineName == '') { } elseif ($lineName == null || $lineName == '') {
$warnMsg[] = 'Line cannot be empty'; $warnMsg[] = 'Line name cannot be empty';
} elseif ($coilNo == null || $coilNo == '') {
$warnMsg[] = 'Coil number cannot be empty';
} elseif ($obserVal == null || $obserVal == '') {
$warnMsg[] = 'Observed value cannot be empty';
} elseif ($status == null || $status == '') {
$warnMsg[] = 'Status cannot be empty';
} }
if (Str::length($plantCode) < 4 || ! is_numeric($plantCode) || ! preg_match('/^[1-9]\d{3,}$/', $plantCode)) { if (Str::length($plantCode) > 0 && (Str::length($plantCode) < 4 || ! is_numeric($plantCode) || ! preg_match('/^[1-9]\d{3,}$/', $plantCode))) {
$warnMsg[] = 'Invalid plant code found'; $warnMsg[] = 'Invalid plant code found';
} else { } else {
$plant = Plant::where('code', $plantCode)->first(); $plant = Plant::where('code', $plantCode)->first();
@@ -138,7 +146,7 @@ class CharacteristicValueImporter extends Importer
} }
} }
if (Str::length($iCode) < 6 || ! ctype_alnum($iCode)) { if (Str::length($iCode) > 0 && (Str::length($iCode) < 6 || ! ctype_alnum($iCode))) {
$warnMsg[] = 'Invalid item code found'; $warnMsg[] = 'Invalid item code found';
} else { } else {
$itemCode = Item::where('code', $iCode)->first(); $itemCode = Item::where('code', $iCode)->first();
@@ -198,25 +206,15 @@ class CharacteristicValueImporter extends Importer
} }
} }
if ($processOrder == null || $processOrder == '') { if (Str::length($coilNo) > 0 && ! is_numeric($coilNo)) {
$warnMsg[] = 'Process Order cannot be empty';
}
if ($coilNo == null || $coilNo == '') {
$warnMsg[] = 'Coil No cannot be empty';
} elseif (! is_numeric($coilNo)) {
$warnMsg[] = 'Coil number should contain only numeric values!'; $warnMsg[] = 'Coil number should contain only numeric values!';
} }
if ($obserVal == null || $obserVal == '') { if (Str::length($obserVal) > 0 && ! is_numeric($obserVal)) {
$warnMsg[] = 'Observed value cannot be empty';
} elseif (! is_numeric($obserVal)) {
$warnMsg[] = 'Observed value should contain only numeric values!'; $warnMsg[] = 'Observed value should contain only numeric values!';
} }
if ($status == null || $status == '' || ! $status) { if (Str::length($status) > 0 && ! in_array($status, ['Ok', 'NotOk'], true)) {
$warnMsg[] = 'Status cannot be empty';
} elseif (! in_array($status, ['Ok', 'NotOk'], true)) {
$warnMsg[] = "Status must be either 'Ok' or 'NotOk'!"; $warnMsg[] = "Status must be either 'Ok' or 'NotOk'!";
} }
// else { // else {
@@ -255,7 +253,7 @@ class CharacteristicValueImporter extends Importer
$warnMsg[] = 'Created By cannot be empty'; $warnMsg[] = 'Created By cannot be empty';
} }
if ($plantId != null) { if ($plantId) {
$user = User::where('name', $createdBy)->first(); $user = User::where('name', $createdBy)->first();
$userPlant = User::where('name', $createdBy)->where('plant_id', $plantId)->first(); $userPlant = User::where('name', $createdBy)->where('plant_id', $plantId)->first();
@@ -280,7 +278,7 @@ class CharacteristicValueImporter extends Importer
} }
} }
if ($plant && $itemCode && $processOrder != '') { if ($plant && $itemCode && $processOrder != '' && $processOrder != null) {
$existingOrder = ProcessOrder::where('plant_id', $plantId) $existingOrder = ProcessOrder::where('plant_id', $plantId)
->where('process_order', $processOrder) ->where('process_order', $processOrder)

View File

@@ -29,7 +29,6 @@ class ProcessOrderImporter extends Importer
->relationship(resolveUsing: 'code') ->relationship(resolveUsing: 'code')
->rules(['required']), ->rules(['required']),
ImportColumn::make('line') ImportColumn::make('line')
->requiredMapping()
->exampleHeader('LINE NAME') ->exampleHeader('LINE NAME')
->example(' Polywrapped line') ->example(' Polywrapped line')
->label('LINE NAME') ->label('LINE NAME')
@@ -42,6 +41,7 @@ class ProcessOrderImporter extends Importer
->relationship(resolveUsing: 'code') ->relationship(resolveUsing: 'code')
->rules(['required']), ->rules(['required']),
ImportColumn::make('process_order') ImportColumn::make('process_order')
->requiredMapping()
->exampleHeader('PROCESS ORDER') ->exampleHeader('PROCESS ORDER')
->example('202500123456') ->example('202500123456')
->label('PROCESS ORDER') ->label('PROCESS ORDER')
@@ -49,9 +49,9 @@ class ProcessOrderImporter extends Importer
ImportColumn::make('coil_number') ImportColumn::make('coil_number')
->exampleHeader('COIL NUMBER') ->exampleHeader('COIL NUMBER')
->example('01') ->example('01')
->label('COIL NUMBER') ->label('COIL NUMBER'),
->rules(['required']),
ImportColumn::make('order_quantity') ImportColumn::make('order_quantity')
->requiredMapping()
->exampleHeader('ORDER QUANTITY') ->exampleHeader('ORDER QUANTITY')
->example('100') ->example('100')
->label('ORDER QUANTITY') ->label('ORDER QUANTITY')
@@ -59,8 +59,7 @@ class ProcessOrderImporter extends Importer
ImportColumn::make('received_quantity') ImportColumn::make('received_quantity')
->exampleHeader('RECEIVED QUANTITY') ->exampleHeader('RECEIVED QUANTITY')
->example('01') ->example('01')
->label('RECEIVED QUANTITY') ->label('RECEIVED QUANTITY'),
->rules(['required']),
ImportColumn::make('sfg_number') ImportColumn::make('sfg_number')
->exampleHeader('SFG NUMBER') ->exampleHeader('SFG NUMBER')
->example('200000220613-72') ->example('200000220613-72')
@@ -80,8 +79,7 @@ class ProcessOrderImporter extends Importer
ImportColumn::make('created_at') ImportColumn::make('created_at')
->exampleHeader('CREATED AT') ->exampleHeader('CREATED AT')
->example('2026-02-20 13:00:00') ->example('2026-02-20 13:00:00')
->label('CREATED AT') ->label('CREATED AT'),
->rules(['required']),
ImportColumn::make('updated_at') ImportColumn::make('updated_at')
->exampleHeader('UPDATED AT') ->exampleHeader('UPDATED AT')
->example('2026-02-20 13:00:00') ->example('2026-02-20 13:00:00')
@@ -102,16 +100,18 @@ class ProcessOrderImporter extends Importer
$warnMsg = []; $warnMsg = [];
$plantCod = $this->data['plant']; $plantCod = $this->data['plant'];
$plant = null; $plant = null;
$plantId = null;
$itemId = null;
$iCode = trim($this->data['item']); $iCode = trim($this->data['item']);
$lineName = trim($this->data['line']); $lineName = trim($this->data['line']);
$processOrder = trim($this->data['process_order'] ?? '');
$coilNo = trim($this->data['coil_number'] ?? ''); $coilNo = trim($this->data['coil_number'] ?? '');
$sfgNo = trim($this->data['sfg_number'] ?? ''); $sfgNo = trim($this->data['sfg_number'] ?? '');
$machineName = trim($this->data['machine_name'] ?? ''); $machineName = trim($this->data['machine_name'] ?? '');
$orderQuan = trim($this->data['order_quantity'] ?? '');
$scrapQuan = trim($this->data['scrap_quantity'] ?? ''); $scrapQuan = trim($this->data['scrap_quantity'] ?? '');
$reworkStatus = trim($this->data['rework_status'] ?? ''); $reworkStatus = trim($this->data['rework_status'] ?? '');
$orderQuan = trim($this->data['order_quantity'] ?? '');
$recQuan = trim($this->data['received_quantity'] ?? ''); $recQuan = trim($this->data['received_quantity'] ?? '');
$processOrder = trim($this->data['process_order'] ?? '');
$createdAt = trim($this->data['created_at'] ?? ''); $createdAt = trim($this->data['created_at'] ?? '');
$createdBy = trim($this->data['created_by'] ?? ''); $createdBy = trim($this->data['created_by'] ?? '');
$updatedAt = trim($this->data['updated_at'] ?? ''); $updatedAt = trim($this->data['updated_at'] ?? '');
@@ -119,12 +119,41 @@ class ProcessOrderImporter extends Importer
// $user = Filament::auth()->user(); // $user = Filament::auth()->user();
// $operatorName = $user->name; // $operatorName = $user->name;
if ($plantCod == null || $plantCod == '') {
$warnMsg[] = 'Plant code cannot be empty';
}
if ($iCode == null || $iCode == '') {
$warnMsg[] = 'Item code cannot be empty';
}
if ($processOrder == null || $processOrder == '') {
$warnMsg[] = 'Process order cannot be empty';
}
if ($orderQuan == null || $orderQuan == '') {
$warnMsg[] = 'Order quantity cannot be empty';
} elseif ($orderQuan == 0 || $orderQuan == '0') {
$warnMsg[] = 'Order quantity cannot be zero';
}
if ($coilNo == null || $coilNo == '') {
$coilNo = '0';
}
if ($scrapQuan == null || $scrapQuan == '') {
$scrapQuan = 0;
}
if ($recQuan == null || $recQuan == '') {
$recQuan = 0;
}
if ($reworkStatus == null || $reworkStatus = '') {
$reworkStatus = 0;
}
if (Str::length($plantCod) < 4 || ! is_numeric($plantCod) || ! preg_match('/^[1-9]\d{3,}$/', $plantCod)) { if (Str::length($plantCod) < 4 || ! is_numeric($plantCod) || ! preg_match('/^[1-9]\d{3,}$/', $plantCod)) {
$warnMsg[] = 'Invalid plant code found'; $warnMsg[] = 'Invalid plant code found';
} else { } else {
$plant = Plant::where('code', $plantCod)->first(); $plant = Plant::where('code', $plantCod)->first();
if (! $plant) { if (! $plant) {
$warnMsg[] = 'Plant not found'; $warnMsg[] = 'Plant not found';
} else {
$plantId = $plant->id;
} }
} }
@@ -133,27 +162,46 @@ class ProcessOrderImporter extends Importer
} else { } else {
$itemCode = Item::where('code', $iCode)->first(); $itemCode = Item::where('code', $iCode)->first();
if (! $itemCode) { if (! $itemCode) {
$warnMsg[] = 'Item Code not found'; $warnMsg[] = 'Item code not found';
} else {
if ($plantId) {
$itemCode = Item::where('code', $iCode)->where('plant_id', $plantId)->first();
if (! $itemCode) {
$warnMsg[] = 'Item code not found for the given plant';
} else {
$itemId = $itemCode->id;
}
}
} }
} }
if ($processOrder == '') { if ($plant && $itemCode && $processOrder != '') {
$warnMsg[] = 'Process Order cannot be empty';
}
if($lineName != null && $lineName != ''){ $existingOrder = ProcessOrder::where('plant_id', $plantId)
$lineAgaPlant = Line::where('plant_id', $plant->id)->where('name', $lineName)->first(); ->where('process_order', $processOrder)
->first();
if(! $lineAgaPlant){ if ($existingOrder && $existingOrder->item_id !== ($itemId ?? null)) {
$warnMsg[] = "Line not found against plant code $plantCod"; $warnMsg[] = 'Same Process Order already exists for this Plant with a different Item Code';
}
else{
$lineId = $lineAgaPlant->id;
} }
} }
if($scrapQuan == null || $scrapQuan == ''){ if ($lineName != null && $lineName != '') {
$scrapQuan = 0; $lineExists = Line::where('name', $lineName)->first();
if (! $lineExists) {
$warnMsg[] = 'Line name not found';
} else {
if ($plantId) {
$lineAgainstPlant = Line::where('name', $lineName)->where('plant_id', $plantId)->first();
if (! $lineAgainstPlant) {
$warnMsg[] = 'Line name not found for the given plant';
} else {
$lineId = $lineAgainstPlant->id;
}
}
}
} else {
$lineId = null;
} }
// $user = User::where('name', $this->data['created_by'])->first(); // $user = User::where('name', $this->data['created_by'])->first();
@@ -161,43 +209,28 @@ class ProcessOrderImporter extends Importer
// $warnMsg[] = 'User not found'; // $warnMsg[] = 'User not found';
// } // }
if ($plant && $itemCode && $processOrder != '') {
$existingOrder = ProcessOrder::where('plant_id', $plant->id)
->where('process_order', $processOrder)
->first();
if ($existingOrder && $existingOrder->item_id !== ($itemCode->id ?? null)) {
$warnMsg[] = 'Same Process Order already exists for this Plant with a different Item Code';
}
}
if (! empty($warnMsg)) { if (! empty($warnMsg)) {
throw new RowImportFailedException(implode(', ', $warnMsg)); throw new RowImportFailedException(implode(', ', $warnMsg));
} }
$lineId = null; if ($lineName != null && $lineName != '') {
$existingCoil = ProcessOrder::where('plant_id', $plantId)
if($lineName != null && $lineName != ''){
$existingCoil = ProcessOrder::where('plant_id', $plant->id)
->where('process_order', $processOrder) ->where('process_order', $processOrder)
->where('line_id', $lineId) ->where('line_id', $lineId)
->where('coil_number', $coilNo) ->where('coil_number', $coilNo)
->first(); ->first();
if (! $existingCoil) if (! $existingCoil) {
{
ProcessOrder::Create( ProcessOrder::Create(
[ [
'plant_id' => $plant->id, 'plant_id' => $plantId,
'line_id' => $lineId, 'line_id' => $lineId,
'process_order' => $processOrder, 'process_order' => $processOrder,
'item_id' => $itemCode->id, 'item_id' => $itemId,
'coil_number' => $coilNo, 'coil_number' => $coilNo,
'order_quantity' => $orderQuan, 'order_quantity' => $orderQuan,
'received_quantity' => $recQuan, 'received_quantity' => $recQuan,
'scrap_quantity' => $scrapQuan, 'scrap_quantity' => $scrapQuan,
'sfg_number' => $sfgNo, 'sfg_number' => $sfgNo,
'machine_name' => $machineName, 'machine_name' => $machineName,
'rework_status' => $reworkStatus, 'rework_status' => $reworkStatus,
@@ -207,17 +240,15 @@ class ProcessOrderImporter extends Importer
'updated_by' => $updatedBy, 'updated_by' => $updatedBy,
] ]
); );
} } else {
else ProcessOrder::where('plant_id', $plantId)
{
ProcessOrder::where('plant_id', $plant->id)
->where('process_order', $processOrder) ->where('process_order', $processOrder)
->where('line_id', $lineId) ->where('line_id', $lineId)
->where('coil_number', $coilNo) ->where('coil_number', $coilNo)
->update([ ->update([
// 'order_quantity' => $orderQty, // 'order_quantity' => $orderQty,
'received_quantity' => $recQuan, 'received_quantity' => $recQuan,
'scrap_quantity' => $scrapQuan, 'scrap_quantity' => $scrapQuan,
// 'sfg_number' => $sfgNo, // 'sfg_number' => $sfgNo,
// 'machine_name' => $machineId, // 'machine_name' => $machineId,
'rework_status' => $reworkStatus, 'rework_status' => $reworkStatus,
@@ -226,24 +257,23 @@ class ProcessOrderImporter extends Importer
]); ]);
} }
} } elseif ($lineName == null || $lineName == '') {
else if($lineName == null || $lineName == ''){ $existing = ProcessOrder::where('plant_id', $plantId)
$existing = ProcessOrder::where('plant_id', $plant->id)
->where('process_order', $processOrder) ->where('process_order', $processOrder)
->where('coil_number', $coilNo) ->where('coil_number', $coilNo)
->first(); ->first();
if(!$existing){ if (! $existing) {
ProcessOrder::Create( ProcessOrder::Create(
[ [
'plant_id' => $plant->id, 'plant_id' => $plantId,
'line_id' => null, 'line_id' => $lineId,
'process_order' => $processOrder, 'process_order' => $processOrder,
'item_id' => $itemCode->id, 'item_id' => $itemId,
'coil_number' => $coilNo, 'coil_number' => $coilNo,
'order_quantity' => $orderQuan, 'order_quantity' => $orderQuan,
'received_quantity' => $recQuan, 'received_quantity' => $recQuan,
'scrap_quantity' => $scrapQuan ?? 0, 'scrap_quantity' => $scrapQuan ?? 0,
'sfg_number' => $sfgNo, 'sfg_number' => $sfgNo,
'machine_name' => $machineName, 'machine_name' => $machineName,
'rework_status' => $reworkStatus, 'rework_status' => $reworkStatus,
@@ -253,17 +283,26 @@ class ProcessOrderImporter extends Importer
'updated_by' => $updatedBy, 'updated_by' => $updatedBy,
] ]
); );
} } elseif ($coilNo == '0' || $coilNo == 0) {
else ProcessOrder::create([
{ 'plant_id' => $plantId,
ProcessOrder::where('plant_id', $plant->id) 'item_id' => $itemId,
'process_order' => $processOrder,
'coil_number' => '0',
'order_quantity' => $orderQuan,
'received_quantity' => 0,
'scrap_quantity' => 0,
'created_by' => $createdBy,
'updated_by' => $updatedBy,
]);
} else {// $coilNo = '0'
ProcessOrder::where('plant_id', $plantId)
->where('process_order', $processOrder) ->where('process_order', $processOrder)
->where('line_id', $lineId)
->where('coil_number', $coilNo) ->where('coil_number', $coilNo)
->update([ ->update([
// 'order_quantity' => $orderQty, // 'order_quantity' => $orderQty,
'received_quantity' => $recQuan, 'received_quantity' => $recQuan,
'scrap_quantity' => $scrapQuan, 'scrap_quantity' => $scrapQuan,
// 'sfg_number' => $sfgNo, // 'sfg_number' => $sfgNo,
// 'machine_name' => $machineId, // 'machine_name' => $machineId,
'rework_status' => $reworkStatus, 'rework_status' => $reworkStatus,