diff --git a/app/Filament/Exports/ProcessOrderExporter.php b/app/Filament/Exports/ProcessOrderExporter.php index 833edcb..bd5b6a5 100644 --- a/app/Filament/Exports/ProcessOrderExporter.php +++ b/app/Filament/Exports/ProcessOrderExporter.php @@ -24,6 +24,8 @@ class ProcessOrderExporter extends Exporter }), ExportColumn::make('plant.code') ->label('PLANT CODE'), + ExportColumn::make('line.name') + ->label('LINE NAME'), ExportColumn::make('item.code') ->label('ITEM CODE'), ExportColumn::make('process_order') @@ -38,6 +40,10 @@ class ProcessOrderExporter extends Exporter ->label('SFG NUMBER'), ExportColumn::make('machine_name') ->label('MACHINE ID'), + ExportColumn::make('scrap_quantity') + ->label('SCRAP QUANTITY'), + ExportColumn::make('rework_status') + ->label('REWORK STATUS'), ExportColumn::make('created_at') ->label('CREATED AT'), ExportColumn::make('updated_at') diff --git a/app/Filament/Imports/ProcessOrderImporter.php b/app/Filament/Imports/ProcessOrderImporter.php index 3248ef8..91854d8 100644 --- a/app/Filament/Imports/ProcessOrderImporter.php +++ b/app/Filament/Imports/ProcessOrderImporter.php @@ -3,6 +3,7 @@ namespace App\Filament\Imports; use App\Models\Item; +use App\Models\Line; use App\Models\Plant; use App\Models\ProcessOrder; use App\Models\User; @@ -27,6 +28,12 @@ class ProcessOrderImporter extends Importer ->label('PLANT CODE') ->relationship(resolveUsing: 'code') ->rules(['required']), + ImportColumn::make('line') + ->requiredMapping() + ->exampleHeader('LINE NAME') + ->example(' Polywrapped line') + ->label('LINE NAME') + ->relationship(resolveUsing: 'name'), ImportColumn::make('item') ->requiredMapping() ->exampleHeader('ITEM CODE') @@ -39,16 +46,44 @@ class ProcessOrderImporter extends Importer ->example('202500123456') ->label('PROCESS ORDER') ->rules(['required']), + ImportColumn::make('coil_number') + ->exampleHeader('COIL NUMBER') + ->example('01') + ->label('COIL NUMBER') + ->rules(['required']), ImportColumn::make('order_quantity') ->exampleHeader('ORDER QUANTITY') ->example('100') ->label('ORDER QUANTITY') ->rules(['required']), - // ImportColumn::make('created_by') - // ->exampleHeader('CREATED BY') - // ->example('RAW01234') - // ->label('CREATED BY') - // ->rules(['required']), + ImportColumn::make('received_quantity') + ->exampleHeader('RECEIVED QUANTITY') + ->example('01') + ->label('RECEIVED QUANTITY') + ->rules(['required']), + ImportColumn::make('sfg_number') + ->exampleHeader('SFG NUMBER') + ->example('200000220613-72') + ->label('SFG NUMBER'), + ImportColumn::make('machine_name') + ->exampleHeader('MACHINE NAME') + ->example('WMIWRM13 - 2-L2') + ->label('MACHINE NAME') + ->rules(['required']), + ImportColumn::make('scrap_quantity') + ->exampleHeader('SCRAP QUANTITY') + ->example('0') + ->label('SCRAP QUANTITY'), + ImportColumn::make('rework_status') + ->exampleHeader('REWORK STATUS') + ->example('0') + ->label('REWORK STATUS') + ->rules(['required']), + ImportColumn::make('created_by') + ->exampleHeader('CREATED BY') + ->example('RAW01234') + ->label('CREATED BY') + ->rules(['required']), ]; } @@ -58,9 +93,18 @@ class ProcessOrderImporter extends Importer $plantCod = $this->data['plant']; $plant = null; $iCode = trim($this->data['item']); + $lineName = trim($this->data['line']); + $coilNo = trim($this->data['coil_number'] ?? ''); + $sfgNo = trim($this->data['sfg_number'] ?? ''); + $machineName = trim($this->data['machine_name'] ?? ''); + $scrapQuan = trim($this->data['scrap_quantity'] ?? ''); + $reworkStatus = trim($this->data['rework_status'] ?? ''); + $orderQuan = trim($this->data['order_quantity'] ?? ''); + $recQuan = trim($this->data['received_quantity'] ?? ''); $processOrder = trim($this->data['process_order'] ?? ''); - $user = Filament::auth()->user(); - $operatorName = $user->name; + $createdBy = trim($this->data['created_by'] ?? ''); + // $user = Filament::auth()->user(); + // $operatorName = $user->name; if (Str::length($plantCod) < 4 || ! is_numeric($plantCod) || ! preg_match('/^[1-9]\d{3,}$/', $plantCod)) { $warnMsg[] = 'Invalid plant code found'; @@ -84,6 +128,17 @@ class ProcessOrderImporter extends Importer $warnMsg[] = 'Process Order cannot be empty'; } + if($lineName != null || $lineName != ''){ + $lineAgaPlant = Line::where('plant_id', $plant->id)->where('name', $lineName)->first(); + + if(! $lineAgaPlant){ + $warnMsg[] = "Line not found against plant code $plantCod"; + } + else{ + $lineId = $lineAgaPlant->id; + } + } + // $user = User::where('name', $this->data['created_by'])->first(); // if (! $user) { // $warnMsg[] = 'User not found'; @@ -104,15 +159,98 @@ class ProcessOrderImporter extends Importer throw new RowImportFailedException(implode(', ', $warnMsg)); } - return ProcessOrder::create([ - 'plant_id' => $plant->id, - 'item_id' => $itemCode->id, - 'process_order' => trim($this->data['process_order']), - 'coil_number' => '0', - 'order_quantity' => 0, - 'received_quantity' => 0, - 'created_by' => $operatorName, - ]); + // return ProcessOrder::create([ + // 'plant_id' => $plant->id, + // 'item_id' => $itemCode->id, + // 'line_id' => $lineId, + // 'process_order' => trim($this->data['process_order']), + // 'coil_number' => $coilNo, + // 'order_quantity' => $orderQuan, + // 'received_quantity' => $recQuan, + // 'sfg_number' => $sfgNo, + // 'machine_name' => $machineName, + // 'scrap_quantity' => $scrapQuan, + // 'rework_status' => $reworkStatus, + // 'created_by' => $createdBy, + // ]); + + if($lineName != null || $lineName != ''){ + + $existingCoil = ProcessOrder::where('plant_id', $plant->id) + ->where('process_order', $processOrder) + ->where('line_id', $lineId) + ->where('coil_number', $coilNo) + ->first(); + + if (! $existingCoil) + { + $record = ProcessOrder::Create( + [ + 'plant_id' => $plant->id, + 'line_id' => $lineId, + 'process_order' => $processOrder, + 'item_id' => $itemCode->id, + 'coil_number' => $coilNo, + 'order_quantity' => $orderQuan, + 'received_quantity' => $recQuan, + 'scrap_quantity' => empty(trim($scrapQuan)) ? 0 : $scrapQuan, + 'sfg_number' => $sfgNo, + 'machine_name' => $machineName, + 'rework_status' => $reworkStatus, + 'created_by' => $createdBy, + ] + ); + + return $record; + } + return $existingCoil; + } + else if($lineName == null || $lineName == ''){ + $existing = ProcessOrder::where('plant_id', $plant->id) + ->where('process_order', $processOrder) + ->where('coil_number', $coilNo) + ->first(); + + if(!$existing){ + $record = ProcessOrder::Create( + [ + 'plant_id' => $plant->id, + 'line_id' => '', + 'process_order' => $processOrder, + 'item_id' => $itemCode->id, + 'coil_number' => $coilNo, + 'order_quantity' => $orderQuan, + 'received_quantity' => $recQuan, + 'scrap_quantity' => empty(trim($scrapQuan)) ? 0 : $scrapQuan, + 'sfg_number' => $sfgNo, + 'machine_name' => $machineName, + 'rework_status' => $reworkStatus, + 'created_by' => $createdBy, + ] + ); + + return $record; + } + return $existing; + } + else + { + $updated = ProcessOrder::where('plant_id', $plant->id) + ->where('process_order', $processOrder) + ->where('line_id', $lineId) + ->where('coil_number', $coilNo) + ->update([ + // 'order_quantity' => $orderQty, + 'received_quantity' => $recQuan, + 'scrap_quantity' => $scrapQuan == '' ? 0 : $scrapQuan, + // 'sfg_number' => $sfgNo, + // 'machine_name' => $machineId, + 'rework_status' => 1, + 'updated_by' => $createdBy, + 'updated_at' => now(), + ]); + return $updated; + } // return new ProcessOrder(); }