Refactored plant selection logic and added 'updated_by' tracking in ProcessOrderResource form #297

Merged
jothi merged 1 commits from ranjith-dev into master 2026-02-04 03:34:35 +00:00

View File

@@ -48,13 +48,13 @@ class ProcessOrderResource extends Resource
->schema([ ->schema([
Forms\Components\Select::make('plant_id') Forms\Components\Select::make('plant_id')
->label('Plant') ->label('Plant')
->reactive()
->relationship('plant', 'name') ->relationship('plant', 'name')
->options(function (callable $get) { ->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id; $userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray();
}) })
->reactive()
->afterStateUpdated(function ($state, $set, callable $get, $livewire) { ->afterStateUpdated(function ($state, $set, callable $get, $livewire) {
$plantId = $get('plant_id'); $plantId = $get('plant_id');
$set('coil_number', null); $set('coil_number', null);
@@ -65,6 +65,7 @@ class ProcessOrderResource extends Resource
$set('coilNumberError', null); $set('coilNumberError', null);
$set('sfgNumberError', null); $set('sfgNumberError', null);
} }
$set('updated_by', Filament::auth()->user()?->name);
}) })
->extraAttributes(fn ($get) => [ ->extraAttributes(fn ($get) => [
'class' => $get('poPlantError') ? 'border-red-500' : '', 'class' => $get('poPlantError') ? 'border-red-500' : '',
@@ -74,7 +75,6 @@ class ProcessOrderResource extends Resource
->required(), ->required(),
Forms\Components\Select::make('line_id') Forms\Components\Select::make('line_id')
->label('Line') ->label('Line')
->reactive()
->options(function (callable $get) { ->options(function (callable $get) {
$plantId = $get('plant_id'); $plantId = $get('plant_id');
if (empty($plantId)) { if (empty($plantId)) {
@@ -83,6 +83,7 @@ class ProcessOrderResource extends Resource
return Line::where('plant_id', $plantId)->pluck('name', 'id'); return Line::where('plant_id', $plantId)->pluck('name', 'id');
}) })
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) { ->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('item_id', null); $set('item_id', null);
$set('item_description', null); $set('item_description', null);
@@ -92,13 +93,13 @@ class ProcessOrderResource extends Resource
$set('received_quantity', null); $set('received_quantity', null);
$set('sfg_number', null); $set('sfg_number', null);
$set('machine_name', null); $set('machine_name', null);
$set('updated_by', Filament::auth()->user()?->name);
}) })
->required(), ->required(),
Forms\Components\Select::make('item_id') Forms\Components\Select::make('item_id')
->label('Item Code') ->label('Item Code')
// ->relationship('item', 'id') // ->relationship('item', 'id')
// ->required(), // ->required(),
->reactive()
->searchable() ->searchable()
->options(function (callable $get) { ->options(function (callable $get) {
$plantId = $get('plant_id'); $plantId = $get('plant_id');
@@ -108,6 +109,7 @@ class ProcessOrderResource extends Resource
return Item::where('plant_id', $plantId)->pluck('code', 'id'); return Item::where('plant_id', $plantId)->pluck('code', 'id');
}) })
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) { ->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$plantId = $get('plant_id'); $plantId = $get('plant_id');
$itemId = $get('item_id'); $itemId = $get('item_id');
@@ -133,6 +135,7 @@ class ProcessOrderResource extends Resource
$set('item_description', null); $set('item_description', null);
$set('item_uom', null); $set('item_uom', null);
} }
$set('updated_by', Filament::auth()->user()?->name);
}) })
->required(), ->required(),
@@ -150,8 +153,10 @@ class ProcessOrderResource extends Resource
$set('item_description', null); $set('item_description', null);
} }
} }
})
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}), }),
Forms\Components\TextInput::make('item_uom') Forms\Components\TextInput::make('item_uom')
->label('UOM') ->label('UOM')
->readOnly() ->readOnly()
@@ -167,13 +172,10 @@ class ProcessOrderResource extends Resource
$set('item_uom', null); $set('item_uom', null);
} }
} }
})
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}), }),
Forms\Components\TextInput::make('id')
->hidden()
->readOnly(),
// ->readOnly(true),
Forms\Components\TextInput::make('process_order') Forms\Components\TextInput::make('process_order')
->label('Process Order') ->label('Process Order')
->reactive() ->reactive()
@@ -188,6 +190,7 @@ class ProcessOrderResource extends Resource
$set('coilNumberError', null); $set('coilNumberError', null);
$set('sfgNumberError', null); $set('sfgNumberError', null);
} }
$set('updated_by', Filament::auth()->user()?->name);
}) })
->rule(function (callable $get) { ->rule(function (callable $get) {
return function (string $attribute, $value, \Closure $fail) use ($get) { return function (string $attribute, $value, \Closure $fail) use ($get) {
@@ -255,6 +258,7 @@ class ProcessOrderResource extends Resource
$set('coilNumberError', null); $set('coilNumberError', null);
} }
} }
$set('updated_by', Filament::auth()->user()?->name);
}) })
->extraAttributes(fn ($get) => [ ->extraAttributes(fn ($get) => [
'class' => $get('coilNumberError') ? 'border-red-500' : '', 'class' => $get('coilNumberError') ? 'border-red-500' : '',
@@ -264,13 +268,27 @@ class ProcessOrderResource extends Resource
->required(), ->required(),
Forms\Components\TextInput::make('order_quantity') Forms\Components\TextInput::make('order_quantity')
->label('Order Quantity') ->label('Order Quantity')
->required(), ->default('1.000')
->required()
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}),
Forms\Components\TextInput::make('received_quantity') Forms\Components\TextInput::make('received_quantity')
->label('Received Quantity') ->label('Received Quantity')
->default('0') ->default('0.000')
->required(), ->required()
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}),
Forms\Components\TextInput::make('scrap_quantity') Forms\Components\TextInput::make('scrap_quantity')
->label('Scrap Quantity'), ->label('Scrap Quantity')
->default('0.000')
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}),
Forms\Components\TextInput::make('sfg_number') Forms\Components\TextInput::make('sfg_number')
->label('SFG Number') ->label('SFG Number')
->reactive() ->reactive()
@@ -297,6 +315,7 @@ class ProcessOrderResource extends Resource
$set('sfgNumberError', null); $set('sfgNumberError', null);
} }
} }
$set('updated_by', Filament::auth()->user()?->name);
}) })
->extraAttributes(fn ($get) => [ ->extraAttributes(fn ($get) => [
'class' => $get('sfgNumberError') ? 'border-red-500' : '', 'class' => $get('sfgNumberError') ? 'border-red-500' : '',
@@ -304,10 +323,27 @@ class ProcessOrderResource extends Resource
->hint(fn ($get) => $get('sfgNumberError') ? $get('sfgNumberError') : null) ->hint(fn ($get) => $get('sfgNumberError') ? $get('sfgNumberError') : null)
->hintColor('danger'), ->hintColor('danger'),
Forms\Components\TextInput::make('machine_name') Forms\Components\TextInput::make('machine_name')
->label('Machine ID'), ->label('Machine ID')
Forms\Components\TextInput::make('rework_status') ->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
$set('updated_by', Filament::auth()->user()?->name);
}),
Forms\Components\Select::make('rework_status')
->label('Rework Status') ->label('Rework Status')
->default(0), ->default(0)
->reactive()
->options([0 => 'No', 1 => 'Yes'])
->reactive()
->afterStateUpdated(function (callable $set, callable $get, ?string $state) {
// if ($get('id') && $get('rework_status') == 1) {
// $set('rework_status', 1);
// }
$set('updated_by', Filament::auth()->user()?->name);
})
->visible(function () {
return Filament::auth()->user()->hasRole('Super Admin'); // || Filament::auth()->user()->can('update process order rework status')
})
->required(),
Forms\Components\FileUpload::make('attachment') Forms\Components\FileUpload::make('attachment')
->label('PDF Upload') ->label('PDF Upload')
->acceptedFileTypes(['application/pdf']) ->acceptedFileTypes(['application/pdf'])
@@ -327,6 +363,7 @@ class ProcessOrderResource extends Resource
}) })
->action(function ($get, callable $set) { ->action(function ($get, callable $set) {
$uploadedFiles = $get('attachment'); $uploadedFiles = $get('attachment');
$set('updated_by', Filament::auth()->user()?->name);
if (is_array($uploadedFiles) && count($uploadedFiles) > 0) { if (is_array($uploadedFiles) && count($uploadedFiles) > 0) {
$uploaded = reset($uploadedFiles); $uploaded = reset($uploadedFiles);
@@ -415,8 +452,9 @@ class ProcessOrderResource extends Resource
->visible(function () { ->visible(function () {
return Filament::auth()->user()->can('view process order packing slip'); return Filament::auth()->user()->can('view process order packing slip');
}) })
->action(function ($get) { ->action(function ($get, callable $set) {
$equipmentNumber = $get('process_order'); $equipmentNumber = $get('process_order');
$set('updated_by', Filament::auth()->user()?->name);
if (! $equipmentNumber) { if (! $equipmentNumber) {
Notification::make() Notification::make()
@@ -448,54 +486,16 @@ class ProcessOrderResource extends Resource
return response()->download(Storage::disk('local')->path($fileToDownload)); return response()->download(Storage::disk('local')->path($fileToDownload));
}), }),
// Action::make('removeAttachment')
// ->label('Remove PDF')
// ->action(function ($get) {
// $equipmentNumber = $get('process_order');
// if (!$equipmentNumber) {
// Notification::make()
// ->title('No process order entered')
// ->danger()
// ->send();
// return;
// }
// // Get all files from uploads/temp
// $files = Storage::disk('local')->files('uploads/ProcessOrder');
// $fileToDelete = null;
// foreach ($files as $file) {
// if (str_contains($file, $equipmentNumber)) {
// $fileToDelete = $file;
// break;
// }
// }
// if (!$fileToDelete) {
// Notification::make()
// ->title('PDF not found for this process order')
// ->danger()
// ->send();
// return;
// }
// // Delete the matched file
// Storage::disk('local')->delete($fileToDelete);
// Notification::make()
// ->title('PDF removed successfully')
// ->body("File for process order {$equipmentNumber} has been deleted.")
// ->success()
// ->send();
// }),
]), ]),
Forms\Components\Hidden::make('created_by') Forms\Components\Hidden::make('created_by')
->label('Created By') ->label('Created By')
->default(Filament::auth()->user()?->name), ->default(Filament::auth()->user()?->name),
Forms\Components\Hidden::make('updated_by') Forms\Components\Hidden::make('updated_by')
->label('Updated By')
->default(Filament::auth()->user()?->name), ->default(Filament::auth()->user()?->name),
Forms\Components\TextInput::make('id')
->hidden()
->readOnly(),
]); ]);
} }
@@ -616,7 +616,7 @@ class ProcessOrderResource extends Resource
->options(function (callable $get) { ->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id; $userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray();
}) })
->reactive() ->reactive()
->afterStateUpdated(function ($state, callable $set, callable $get) { ->afterStateUpdated(function ($state, callable $set, callable $get) {
@@ -765,7 +765,7 @@ class ProcessOrderResource extends Resource
->options(function (callable $get) { ->options(function (callable $get) {
$userHas = Filament::auth()->user()->plant_id; $userHas = Filament::auth()->user()->plant_id;
return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::orderBy('code')->pluck('name', 'id')->toArray();
}) })
->required() ->required()
->reactive() ->reactive()