diff --git a/app/Filament/Resources/ProcessOrderResource.php b/app/Filament/Resources/ProcessOrderResource.php index 88bc975..744659c 100644 --- a/app/Filament/Resources/ProcessOrderResource.php +++ b/app/Filament/Resources/ProcessOrderResource.php @@ -30,6 +30,8 @@ use Filament\Forms\Components\Select; use App\Models\Line; use Filament\Forms\Components\TextInput; use App\Models\Item; +// use App\Models\PalletValidation; +// use Dom\Text; class ProcessOrderResource extends Resource { @@ -81,7 +83,7 @@ class ProcessOrderResource extends Resource return []; } - return \App\Models\Item::where('plant_id', $plantId)->pluck('code', 'id'); + return Item::where('plant_id', $plantId)->pluck('code', 'id'); }) ->afterStateUpdated(function (callable $set, callable $get, ?string $state) { $plantId = $get('plant_id'); @@ -90,20 +92,23 @@ class ProcessOrderResource extends Resource if ($plantId && $itemId) { // Get the item code using item_id - $itemCode = \App\Models\Item::where('id', $itemId)->value('code'); + $itemCode = Item::where('id', $itemId)->value('code'); if ($itemCode) { // Now get the item description using plant_id + code - $item = \App\Models\Item::where('plant_id', $plantId) + $item = Item::where('plant_id', $plantId) ->where('code', $itemCode) ->first(); $set('item_description', $item?->description); + $set('item_uom', $item?->uom); } else { $set('item_description', null); + $set('item_uom', null); } } else { $set('item_description', null); + $set('item_uom', null); } }) ->required(), @@ -115,7 +120,7 @@ class ProcessOrderResource extends Resource ->afterStateHydrated(function ($component, $state, Get $get, Set $set) { $itemId = $get('item_id'); if ($get('id')) { - $item = \App\Models\Item::where('id', $itemId)->first()?->description; + $item = Item::where('id', $itemId)->first()?->description; if ($item) { $set('item_description', $item); } else { @@ -124,6 +129,22 @@ class ProcessOrderResource extends Resource } }), + Forms\Components\TextInput::make('item_uom') + ->label('UOM') + ->required() + ->reactive() + ->afterStateHydrated(function ($component, $state, Get $get, Set $set) { + $itemId = $get('item_id'); + if ($get('id')) { + $item = Item::where('id', $itemId)->first()?->uom; + if ($item) { + $set('item_uom', $item); + } else { + $set('item_uom', null); + } + } + }), + Forms\Components\TextInput::make('id') ->hidden() ->readOnly(), @@ -450,7 +471,6 @@ class ProcessOrderResource extends Resource $paginator = $livewire->getTableRecords(); $perPage = method_exists($paginator, 'perPage') ? $paginator->perPage() : 10; $currentPage = method_exists($paginator, 'currentPage') ? $paginator->currentPage() : 1; - return ($currentPage - 1) * $perPage + $rowLoop->iteration; }), Tables\Columns\TextColumn::make('plant.name') @@ -528,8 +548,7 @@ class ProcessOrderResource extends Resource // ->filters([ // Tables\Filters\TrashedFilter::make(), // ]) - ->filters([ - + ->filters([ Tables\Filters\TrashedFilter::make(), Filter::make('advanced_filters') ->label('Advanced Filters') @@ -548,10 +567,17 @@ class ProcessOrderResource extends Resource Select::make('Item') ->label('Item Code') ->nullable() + ->searchable() ->options(function (callable $get) { $plantId = $get('Plant'); - return $plantId ? Item::where('plant_id', $plantId)->pluck('code', 'id') : []; + if(empty($plantId)) { + return []; + } + + return Item::where('plant_id', $plantId)->pluck('code', 'id'); + + //return $plantId ? Item::where('plant_id', $plantId)->pluck('code', 'id') : []; }) ->reactive() ->afterStateUpdated(function ($state, callable $set, callable $get) { @@ -611,8 +637,6 @@ class ProcessOrderResource extends Resource if (!empty($data['created_to'])) { $query->where('created_at', '<=', $data['created_to']); } - - //$query->orderBy('created_at', 'asc'); }) ->indicateUsing(function (array $data) { @@ -662,6 +686,130 @@ class ProcessOrderResource extends Resource ]), ]) ->headerActions([ + Tables\Actions\Action::make('reprint_process') + ->label('Re-Print Process Order') + ->form([ + Forms\Components\Section::make() + ->schema([ + Forms\Components\Select::make('plant') + ->label('Select Plant') + // ->options(Plant::pluck('name', 'id')->toArray()) + ->options(function (callable $get) { + $userHas = Filament::auth()->user()->plant_id; + + return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray(); + }) + ->required() + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $set('Item', null); + $set('process_order', null); + $set('coil_number', null); + $set('received_quantity', null); + $set('machine_name', null); + }), + Select::make('Item') + ->label('Item Code') + ->nullable() + ->required() + ->searchable() + ->options(function (callable $get) { + $plantId = $get('plant'); + + if(empty($plantId)) { + return []; + } + + return Item::where('plant_id', $plantId)->pluck('code', 'id'); + + //return $plantId ? Item::where('plant_id', $plantId)->pluck('code', 'id') : []; + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $set('process_order', null); + $set('coil_number', null); + $set('received_quantity', null); + $set('machine_name', null); + }), + TextInput::make('process_order') + ->label('Process Order') + ->required() + ->placeholder('Enter Process Order') + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $set('coil_number', null); + $set('received_quantity', null); + $set('machine_name', null); + }), + Select::make('coil_number') + ->label('Coil Number') + ->nullable() + ->required() + ->searchable() + ->options(function (callable $get) { + $plantId = $get('plant'); + $itemId = $get('Item'); + $processOrder = $get('process_order'); + + if(empty($plantId) || empty($itemId) || empty($processOrder)) { + return []; + } + + return ProcessOrder::where('plant_id', $plantId) + ->where('item_id', $itemId) + ->where('process_order', $processOrder) + ->pluck('coil_number', 'coil_number'); + + //return $plantId ? Item::where('plant_id', $plantId)->pluck('code', 'id') : []; + }) + ->reactive() + ->afterStateUpdated(function ($state, callable $set, callable $get) { + $plantId = $get('plant'); + $itemId = $get('Item'); + $processOrder = $get('process_order'); + + if(!$plantId || !$itemId || !$processOrder || !$state) { + $set('received_quantity', null); + $set('machine_name', null); + return; + } + + $processOrderData = ProcessOrder::where('plant_id', $plantId) + ->where('item_id', $itemId) + ->where('process_order', $processOrder) + ->where('coil_number', $state) + ->first(); + + $set('received_quantity', $processOrderData?->received_quantity); + $set('machine_name', $processOrderData?->machine_name); + }), + TextInput::make('received_quantity') + ->label('Received Quantity') + ->readOnly(), + + TextInput::make('machine_name') + ->label('Machine ID') + ->readOnly(), + ]) + ->columns(['default' => 1, 'sm' => 3]), + ]) + // ->action(function (array $data) { + // $selectedPalletNumber = $data['pallet_list']; + // return redirect()->route('download-reprint-qr-pdf', ['palletNo' => $selectedPalletNumber]); + // }) + ->action(function (array $data) { + $username = Filament::auth()->user()->name; + return redirect()->route('download-reprint-process-pdf', [ + 'plant' => $data['plant'], + 'item' => $data['Item'], + 'process_order' => $data['process_order'], + 'coil_number' => $data['coil_number'], + 'name' => $username, + ]); + }) + ->visible(function () { + return Filament::auth()->user()->can('view reprint process order'); + }), ImportAction::make() ->label('Import Process Order') ->color('warning')