diff --git a/app/Filament/Resources/ReworkLocatorInvoiceValidationResource.php b/app/Filament/Resources/ReworkLocatorInvoiceValidationResource.php
index 332f8f1..4f05334 100644
--- a/app/Filament/Resources/ReworkLocatorInvoiceValidationResource.php
+++ b/app/Filament/Resources/ReworkLocatorInvoiceValidationResource.php
@@ -5,30 +5,28 @@ namespace App\Filament\Resources;
use App\Filament\Exports\ReworkLocatorInvoiceValidationExporter;
use App\Filament\Imports\ReworkLocatorInvoiceValidationImporter;
use App\Filament\Resources\ReworkLocatorInvoiceValidationResource\Pages;
-use App\Filament\Resources\ReworkLocatorInvoiceValidationResource\RelationManagers;
-use App\Models\InvoiceValidation;
use App\Models\LocatorInvoiceValidation;
use App\Models\PalletValidation;
use App\Models\Plant;
use App\Models\ReworkLocatorInvoiceValidation;
use Filament\Facades\Filament;
use Filament\Forms;
+use Filament\Forms\Components\DateTimePicker;
+use Filament\Forms\Components\Section;
+use Filament\Forms\Components\Select;
+use Filament\Forms\Components\TextInput;
+use Filament\Forms\Components\ToggleButtons;
use Filament\Forms\Form;
+use Filament\Forms\Get;
+use Filament\Notifications\Notification;
use Filament\Resources\Resource;
use Filament\Tables;
+use Filament\Tables\Actions\ExportAction;
+use Filament\Tables\Actions\ImportAction;
+use Filament\Tables\Filters\Filter;
use Filament\Tables\Table;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\SoftDeletingScope;
-use Filament\Forms\Components\Section;
-use Filament\Forms\Components\ToggleButtons;
-use Filament\Forms\Get;
-use Filament\Notifications\Notification;
-use Filament\Tables\Actions\ExportAction;
-use Filament\Tables\Actions\ImportAction;
-use Filament\Forms\Components\DateTimePicker;
-use Filament\Tables\Filters\Filter;
-use Filament\Forms\Components\TextInput;
-use Filament\Forms\Components\Select;
class ReworkLocatorInvoiceValidationResource extends Resource
{
@@ -45,238 +43,163 @@ class ReworkLocatorInvoiceValidationResource extends Resource
return $form
->schema([
Section::make('')
- ->schema([
- Forms\Components\Select::make('plant_id')
- ->label('Plant')
- ->reactive()
- ->relationship('plant', 'name')
- ->disabled(fn (Get $get) => $get('rework_type'))
- ->required()
- ->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();
- })
- ->afterStateUpdated(function ($state, callable $set, callable $get) {
- $plantId = $get('plant_id');
- if ($plantId)
- {
- $set('plant', $plantId);
- $set('invoice_number', null);
- $set('scan_pallet_no', null);
- $set('scan_serial_no', null);
- $set('rework_type', null);
- }
- else
- {
- $set('plant', null);
- $set('invoice_number', null);
- $set('scan_pallet_no', null);
- $set('scan_serial_no', null);
- $set('rework_type', null);
- }
- }),
- Forms\Components\Hidden::make('plant')
- ->reactive(),
- Forms\Components\TextInput::make('invoice_number')
- ->label('Scan Invoice No')
- ->required( fn ($get) => $get('rework_type') == 'invoice')
- ->readOnly(fn (callable $get) => (!$get('plant') || $get('rework_type') != 'invoice' || $get('scan_pallet_no') || $get('scan_serial_no')))
- // ->readOnly(fn ($get) => $get('rework_type') == 'pallet')
- ->reactive()
- ->extraAttributes([
- 'wire:keydown.enter' => 'processInvoiceRework($event.target.value)',
- ]),
- Forms\Components\TextInput::make('scan_pallet_no')
- ->label('Scan Pallet No')
- ->required( fn ($get) => $get('rework_type') == 'pallet')
- ->readOnly(fn ($get) => $get('rework_type') == 'invoice')
- ->minLength(10)
- ->reactive()
- ->readOnly(fn (callable $get) => (!$get('plant') || !$get('rework_type') || ($get('rework_type') == 'invoice' && !$get('invoice_number')) || $get('scan_serial_no')))
- ->extraAttributes([
- 'wire:keydown.enter' => 'processPalletno($event.target.value)',
- ]),
- Forms\Components\TextInput::make('scan_serial_no')
- ->label('Scan Serial No')
- ->readOnly(fn (callable $get) => (!$get('plant') || !$get('rework_type') || ($get('rework_type') == 'invoice' && !$get('invoice_number')) || ($get('rework_type') == 'invoice' && $get('scan_pallet_no')) || ($get('rework_type') == 'pallet' && !$get('scan_pallet_no'))))
- ->minLength(9)
- ->reactive()
- ->extraAttributes([
- 'wire:keydown.enter' => 'processSno($event.target.value)',
- ]),
- Forms\Components\Radio::make('rework_type')
- ->label('Rework Type')
- ->options([
- 'invoice' => 'Invoice',
- 'pallet' => 'Pallet',
- ])
- ->reactive()
- ->required()
- ->disabled(fn (Get $get) => ($get('invoice_number') || $get('scan_pallet_no') || $get('scan_serial_no')))
- ->hidden(fn (callable $get) => !$get('plant'))
- ->inline()
- ->inlineLabel(false)
- // ->default('invoice')
- ->afterStateUpdated(function ($state, callable $set) {
- if ($state == 'pallet') {
- $set('reworkType', $state);
- $set('invoice_number', null);
- $set('scan_pallet_no', null);
- $set('scan_serial_no', null);
- } elseif ($state == 'invoice') {
- $set('reworkType', $state);
- $set('invoice_number', null);
- $set('scan_pallet_no', null);
- $set('scan_serial_no', null);
- }
- else {
- $set('reworkType', null);
- $set('invoice_number', null);
- $set('scan_pallet_no', null);
- $set('scan_serial_no', null);
- }
- }),
- Forms\Components\Hidden::make('reworkType')
- ->reactive(),
+ ->schema([
+ Forms\Components\Select::make('plant_id')
+ ->label('Plant')
+ ->reactive()
+ ->relationship('plant', 'name')
+ ->disabled(fn (Get $get) => $get('rework_type'))
+ ->required()
+ ->options(function (callable $get) {
+ $userHas = Filament::auth()->user()->plant_id;
- ToggleButtons::make('update_invoice')
- ->label('Rework entire invoice?')
- ->boolean()
- ->grouped()
- ->reactive()
- ->hidden(fn (callable $get) => (!$get('plant') || $get('rework_type') != 'invoice' || !$get('invoice_number') || $get('update_invoice') == '0' || $get('scan_pallet_no') || $get('scan_serial_no')))
- ->afterStateUpdated(function ($state, callable $set, callable $get, $livewire) {
- $plantId = $get('plant');
-
- $invoiceNumber = $get('invoice_number');
-
- $rows = LocatorInvoiceValidation::where('invoice_number', $invoiceNumber)
- ->where('plant_id', $plantId)
- ->get();
-
- $notCompletedCount = LocatorInvoiceValidation::where('invoice_number', $invoiceNumber)
- ->where('plant_id', $plantId)
- ->where(function($query) {
- $query->whereNull('scanned_status')
- ->orWhere('scanned_status', '');
- })
- ->count();
-
- $isScanningComplete = true;
- foreach ($rows as $row)
- {
- if ($row->scanned_status != 'Scanned') {
- $isScanningComplete = false;
- break;
+ return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
+ })
+ ->afterStateUpdated(function ($state, callable $set, callable $get) {
+ $plantId = $get('plant_id');
+ if ($plantId) {
+ $set('plant', $plantId);
+ $set('invoice_number', null);
+ $set('scan_pallet_no', null);
+ $set('scan_serial_no', null);
+ $set('rework_type', null);
+ } else {
+ $set('plant', null);
+ $set('invoice_number', null);
+ $set('scan_pallet_no', null);
+ $set('scan_serial_no', null);
+ $set('rework_type', null);
}
- }
-
- if (!$isScanningComplete)
- {
- Notification::make()
- ->title("Scanned invoice number: '$invoiceNumber' does not completed the scanning process!
Has '$notCompletedCount' pending serial number to scan!
Please, scan the valid completed invoice number to proceed...")
- ->danger()
- ->duration(5000)
- ->send();
-
- $set('invoice_number', null);
- $set('update_invoice', null);
- return;
- }
- }),
-
- ToggleButtons::make('update_pallet')
- ->label('Rework entire pallet?')
- ->boolean()
- ->grouped()
- ->reactive()
- ->hidden(fn (callable $get) => (!$get('plant') || $get('rework_type') != 'pallet' || $get('update_pallet') == '0' || !$get('scan_pallet_no') || $get('scan_serial_no')))
- ->afterStateUpdated(function ($state, callable $set, callable $get, $livewire) {
- $plantId = $get('plant');
-
- $palletNumber = trim($get('scan_pallet_no'));
- $serialNo = trim($get('scan_serial_no'));
- $updatePalletStatus = $get('update_pallet') ?? null;
-
- if ($updatePalletStatus == 0)
- {
- return;
- }
-
- if (strlen($palletNumber) < 10)
- {
- Notification::make()
- ->title("Invalid: Pallet Number")
- ->body("Pallet number '$palletNumber' must be at least 10 digits.")
- ->danger()
- ->duration(5000)
- ->send();
-
- $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
- $set('scan_serial_no', null);
- $set('scan_pallet_no', null);
- $set('update_pallet', null);
- return;
- }
-
- $PalletSerialNumbers = PalletValidation::where('plant_id', $plantId)->where('pallet_number', $palletNumber)->first();
-
- if (!$PalletSerialNumbers)
- {
- Notification::make()
- ->title('Pallet Not Found')
- ->body("Pallet number '$palletNumber' doesn't exist in pallet table!
Scan the valid exist 'Pallet Number' to proceed..!")
- ->danger()
- ->duration(5000)
- ->send();
-
- $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
- $set('scan_serial_no', null);
- $set('scan_pallet_no', null);
- $set('update_pallet', null);
- return;
- }
-
- $rows = PalletValidation::where('pallet_number', $palletNumber)
- ->where('plant_id', $plantId)
- ->get();
-
- $isScanningComplete = true;
- foreach ($rows as $row)
- {
- if ($row->pallet_status != 'Completed') {
- $isScanningComplete = false;
- break;
+ }),
+ Forms\Components\Hidden::make('plant')
+ ->reactive(),
+ Forms\Components\TextInput::make('invoice_number')
+ ->label('Scan Invoice No')
+ ->required(fn ($get) => $get('rework_type') == 'invoice')
+ ->readOnly(fn (callable $get) => (! $get('plant') || $get('rework_type') != 'invoice' || $get('scan_pallet_no') || $get('scan_serial_no')))
+ // ->readOnly(fn ($get) => $get('rework_type') == 'pallet')
+ ->reactive()
+ ->extraAttributes([
+ 'wire:keydown.enter' => 'processInvoiceRework($event.target.value)',
+ ]),
+ Forms\Components\TextInput::make('scan_pallet_no')
+ ->label('Scan Pallet No')
+ ->required(fn ($get) => $get('rework_type') == 'pallet')
+ ->readOnly(fn ($get) => $get('rework_type') == 'invoice')
+ ->minLength(10)
+ ->reactive()
+ ->readOnly(fn (callable $get) => (! $get('plant') || ! $get('rework_type') || ($get('rework_type') == 'invoice' && ! $get('invoice_number')) || $get('scan_serial_no')))
+ ->extraAttributes([
+ 'wire:keydown.enter' => 'processPalletno($event.target.value)',
+ ]),
+ Forms\Components\TextInput::make('scan_serial_no')
+ ->label('Scan Serial No')
+ ->readOnly(fn (callable $get) => (! $get('plant') || ! $get('rework_type') || ($get('rework_type') == 'invoice' && ! $get('invoice_number')) || ($get('rework_type') == 'invoice' && $get('scan_pallet_no')) || ($get('rework_type') == 'pallet' && ! $get('scan_pallet_no'))))
+ ->minLength(9)
+ ->reactive()
+ ->extraAttributes([
+ 'wire:keydown.enter' => 'processSno($event.target.value)',
+ ]),
+ Forms\Components\Radio::make('rework_type')
+ ->label('Rework Type')
+ ->options([
+ 'invoice' => 'Invoice',
+ 'pallet' => 'Pallet',
+ ])
+ ->reactive()
+ ->required()
+ ->disabled(fn (Get $get) => ($get('invoice_number') || $get('scan_pallet_no') || $get('scan_serial_no')))
+ ->hidden(fn (callable $get) => ! $get('plant'))
+ ->inline()
+ ->inlineLabel(false)
+ // ->default('invoice')
+ ->afterStateUpdated(function ($state, callable $set) {
+ if ($state == 'pallet') {
+ $set('reworkType', $state);
+ $set('invoice_number', null);
+ $set('scan_pallet_no', null);
+ $set('scan_serial_no', null);
+ } elseif ($state == 'invoice') {
+ $set('reworkType', $state);
+ $set('invoice_number', null);
+ $set('scan_pallet_no', null);
+ $set('scan_serial_no', null);
+ } else {
+ $set('reworkType', null);
+ $set('invoice_number', null);
+ $set('scan_pallet_no', null);
+ $set('scan_serial_no', null);
}
- }
+ }),
+ Forms\Components\Hidden::make('reworkType')
+ ->reactive(),
- if(count($rows) <= 0) {
- $isScanningComplete = false;
- }
+ ToggleButtons::make('update_invoice')
+ ->label('Rework entire invoice?')
+ ->boolean()
+ ->grouped()
+ ->reactive()
+ ->hidden(fn (callable $get) => (! $get('plant') || $get('rework_type') != 'invoice' || ! $get('invoice_number') || $get('update_invoice') == '0' || $get('scan_pallet_no') || $get('scan_serial_no')))
+ ->afterStateUpdated(function ($state, callable $set, callable $get, $livewire) {
+ $plantId = $get('plant');
- if (!$isScanningComplete)
- {
- Notification::make()
- ->title('Pallet Not Completed')
- ->body("Scanned pallet number '$palletNumber' doesn't completed the master packing!
Please, scan the valid completed pallet number to proceed..!")
- ->danger()
- ->duration(5000)
- ->send();
+ $invoiceNumber = $get('invoice_number');
- $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
- $set('scan_serial_no', null);
- $set('scan_pallet_no', null);
- $set('update_pallet', null);
- return;
- }
- else
- {
- $locatExist = ($PalletSerialNumbers->locator_number != null && $PalletSerialNumbers->locator_number != '') ? $PalletSerialNumbers->locator_number : '';
- if ($locatExist)
- {
+ $rows = LocatorInvoiceValidation::where('invoice_number', $invoiceNumber)
+ ->where('plant_id', $plantId)
+ ->get();
+
+ $notCompletedCount = LocatorInvoiceValidation::where('invoice_number', $invoiceNumber)
+ ->where('plant_id', $plantId)
+ ->where(function ($query) {
+ $query->whereNull('scanned_status')
+ ->orWhere('scanned_status', '');
+ })
+ ->count();
+
+ $isScanningComplete = true;
+ foreach ($rows as $row) {
+ if ($row->scanned_status != 'Scanned') {
+ $isScanningComplete = false;
+ break;
+ }
+ }
+
+ if (! $isScanningComplete) {
Notification::make()
- ->title('Locator Pallet Found')
- ->body("Scanned pallet number '$palletNumber' exist in locator number '$locatExist'.
Remove scanned 'Pallet' from 'Locator' to proceed re-master packing..!")
+ ->title("Scanned invoice number: '$invoiceNumber' does not completed the scanning process!
Has '$notCompletedCount' pending serial number to scan!
Please, scan the valid completed invoice number to proceed...")
+ ->danger()
+ ->duration(5000)
+ ->send();
+
+ $set('invoice_number', null);
+ $set('update_invoice', null);
+
+ return;
+ }
+ }),
+
+ ToggleButtons::make('update_pallet')
+ ->label('Rework entire pallet?')
+ ->boolean()
+ ->grouped()
+ ->reactive()
+ ->hidden(fn (callable $get) => (! $get('plant') || $get('rework_type') != 'pallet' || $get('update_pallet') == '0' || ! $get('scan_pallet_no') || $get('scan_serial_no')))
+ ->afterStateUpdated(function ($state, callable $set, callable $get, $livewire) {
+ $plantId = $get('plant');
+
+ $palletNumber = trim($get('scan_pallet_no'));
+ $serialNo = trim($get('scan_serial_no'));
+ $updatePalletStatus = $get('update_pallet') ?? null;
+
+ if ($updatePalletStatus == 0) {
+ return;
+ }
+
+ if (strlen($palletNumber) < 10) {
+ Notification::make()
+ ->title('Invalid: Pallet Number')
+ ->body("Pallet number '$palletNumber' must be at least 10 digits.")
->danger()
->duration(5000)
->send();
@@ -285,71 +208,134 @@ class ReworkLocatorInvoiceValidationResource extends Resource
$set('scan_serial_no', null);
$set('scan_pallet_no', null);
$set('update_pallet', null);
+
return;
}
- else
- {
- if (strlen($serialNo) > 0 && (strlen($serialNo) < 9 || strlen($serialNo) > 20))
- {
+
+ $PalletSerialNumbers = PalletValidation::where('plant_id', $plantId)->where('pallet_number', $palletNumber)->first();
+
+ if (! $PalletSerialNumbers) {
+ Notification::make()
+ ->title('Pallet Not Found')
+ ->body("Pallet number '$palletNumber' doesn't exist in pallet table!
Scan the valid exist 'Pallet Number' to proceed..!")
+ ->danger()
+ ->duration(5000)
+ ->send();
+
+ $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
+ $set('scan_serial_no', null);
+ $set('scan_pallet_no', null);
+ $set('update_pallet', null);
+
+ return;
+ }
+
+ $rows = PalletValidation::where('pallet_number', $palletNumber)
+ ->where('plant_id', $plantId)
+ ->get();
+
+ $isScanningComplete = true;
+ foreach ($rows as $row) {
+ if ($row->pallet_status != 'Completed') {
+ $isScanningComplete = false;
+ break;
+ }
+ }
+
+ if (count($rows) <= 0) {
+ $isScanningComplete = false;
+ }
+
+ if (! $isScanningComplete) {
+ Notification::make()
+ ->title('Pallet Not Completed')
+ ->body("Scanned pallet number '$palletNumber' doesn't completed the master packing!
Please, scan the valid completed pallet number to proceed..!")
+ ->danger()
+ ->duration(5000)
+ ->send();
+
+ $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
+ $set('scan_serial_no', null);
+ $set('scan_pallet_no', null);
+ $set('update_pallet', null);
+
+ return;
+ } else {
+ $locatExist = ($PalletSerialNumbers->locator_number != null && $PalletSerialNumbers->locator_number != '') ? $PalletSerialNumbers->locator_number : '';
+ if ($locatExist) {
Notification::make()
- ->title("Invalid: Serial Number")
- ->body("Serial number '$serialNo' should contain minimum 9 digits and maximum 20 digits.")
+ ->title('Locator Pallet Found')
+ ->body("Scanned pallet number '$palletNumber' exist in locator number '$locatExist'.
Remove scanned 'Pallet' from 'Locator' to proceed re-master packing..!")
->danger()
->duration(5000)
->send();
- $livewire->dispatch('loadData', '', $palletNumber, $plantId, 'pallet');
- $set('scan_serial_no', null);
- $set('update_pallet', null);
- return;
- }
- else if (strlen($serialNo) > 0 && !ctype_alnum($serialNo))
- {
- Notification::make()
- ->title("Invalid: Serial Number")
- ->body("Serial number '$serialNo' must contain alpha-numeric values only.")
- ->danger()
- ->duration(5000)
- ->send();
-
- $livewire->dispatch('loadData', '', $palletNumber, $plantId, 'pallet');
- $set('scan_serial_no', null);
- $set('update_pallet', null);
- return;
- }
-
- if ($updatePalletStatus == 1)
- {
- foreach ($rows as $row)
- {
- $row->forceDelete(); // Delete the row from the original table
- }
-
- Notification::make()
- ->title('Completed: Rework Pallet')
- ->body("Scanned pallet number '$palletNumber' successfully removed from pallet table.
Please, scan the next pallet number to re-master packing..!")
- ->success()
- ->duration(800)
- ->send();
-
$livewire->dispatch('loadData', '', '', $plantId, 'pallet');
$set('scan_serial_no', null);
$set('scan_pallet_no', null);
$set('update_pallet', null);
+
return;
+ } else {
+ if (strlen($serialNo) > 0 && (strlen($serialNo) < 9 || strlen($serialNo) > 20)) {
+ Notification::make()
+ ->title('Invalid: Serial Number')
+ ->body("Serial number '$serialNo' should contain minimum 9 digits and maximum 20 digits.")
+ ->danger()
+ ->duration(5000)
+ ->send();
+
+ $livewire->dispatch('loadData', '', $palletNumber, $plantId, 'pallet');
+ $set('scan_serial_no', null);
+ $set('update_pallet', null);
+
+ return;
+ } elseif (strlen($serialNo) > 0 && ! ctype_alnum($serialNo)) {
+ Notification::make()
+ ->title('Invalid: Serial Number')
+ ->body("Serial number '$serialNo' must contain alpha-numeric values only.")
+ ->danger()
+ ->duration(5000)
+ ->send();
+
+ $livewire->dispatch('loadData', '', $palletNumber, $plantId, 'pallet');
+ $set('scan_serial_no', null);
+ $set('update_pallet', null);
+
+ return;
+ }
+
+ if ($updatePalletStatus == 1) {
+ foreach ($rows as $row) {
+ $row->forceDelete(); // Delete the row from the original table
+ }
+
+ Notification::make()
+ ->title('Completed: Rework Pallet')
+ ->body("Scanned pallet number '$palletNumber' successfully removed from pallet table.
Please, scan the next pallet number to re-master packing..!")
+ ->success()
+ ->duration(800)
+ ->send();
+
+ $livewire->dispatch('loadData', '', '', $plantId, 'pallet');
+ $set('scan_serial_no', null);
+ $set('scan_pallet_no', null);
+ $set('update_pallet', null);
+
+ return;
+ }
}
}
- }
- }),
- Forms\Components\Hidden::make('created_by')
- ->default(Filament::auth()->user()?->name),
- Forms\Components\Hidden::make('scanned_by')
- ->default(Filament::auth()->user()?->name),
- Forms\Components\TextInput::make('id')
- ->hidden()
- ->readOnly(),
- ])
- ->columns(5)
+ }),
+ Forms\Components\Hidden::make('created_by')
+ ->default(Filament::auth()->user()?->name),
+ Forms\Components\Hidden::make('scanned_by')
+ ->default(Filament::auth()->user()?->name),
+ Forms\Components\TextInput::make('id')
+ ->hidden()
+ ->readOnly(),
+ ])
+ ->columns(5),
]);
}
@@ -364,6 +350,7 @@ class ReworkLocatorInvoiceValidationResource 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')
@@ -444,207 +431,221 @@ class ReworkLocatorInvoiceValidationResource extends Resource
->importer(ReworkLocatorInvoiceValidationImporter::class)
->label('Import Rework Invoice')
->color('warning')
- ->visible(function() {
+ ->visible(function () {
return Filament::auth()->user()->can('view import rework invoice validation');
}),
ExportAction::make()
->exporter(ReworkLocatorInvoiceValidationExporter::class)
->label('Export Rework Invoice')
->color('warning')
- ->visible(function() {
+ ->visible(function () {
return Filament::auth()->user()->can('view export rework invoice validation');
}),
])
- // ->filters([
- // Tables\Filters\TrashedFilter::make(),
- // ])
->filters([
Tables\Filters\TrashedFilter::make(),
Filter::make('advanced_filters')
- ->label('Advanced Filters')
- ->form([
- Select::make('Plant')
- ->label('Select Plant')
- ->nullable()
- // ->options(function () {
- // return Plant::pluck('name', 'id');
- // })
- ->options(function (callable $get) {
+ ->label('Advanced Filters')
+ ->form([
+ Select::make('Plant')
+ ->label('Select Plant')
+ ->nullable()
+ // ->options(function () {
+ // return Plant::pluck('name', 'id');
+ // })
+ ->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();
+ })
+ ->reactive()
+ ->afterStateUpdated(function ($state, callable $set, callable $get): void {
+ $set('pallet_number', null);
+ $set('invoice_number', null);
+ $set('serial_number', null);
+ $set('scanned_status', null);
+ $set('locator_number', null);
+ $set('created_from', null);
+ $set('created_to', null);
+ $set('created_by', null);
+ $set('scanned_from', null);
+ $set('scanned_to', null);
+ $set('scanned_by', null);
+ }),
+ Select::make('invoice_number')
+ ->label('Invoice Number')
+ ->options(function (callable $get) {
+ $plantId = $get('Plant');
+ if (! $plantId) {
+ return [];
+ }
+
+ return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
+ ->whereNotNull('invoice_number')
+ ->where('invoice_number', '!=', '')
+ ->orderBy('invoice_number', 'asc')
+ ->get()
+ ->unique('invoice_number')
+ ->pluck('invoice_number', 'invoice_number')
+ ->toArray();
+ })
+ ->searchable()
+ ->reactive(),
+ TextInput::make('serial_number')
+ ->label('Serial Number')
+ ->placeholder(placeholder: 'Enter Serial Number'),
+ Select::make('pallet_number')
+ ->label('Pallet Number')
+ ->options(function (callable $get) {
+ $plantId = $get('Plant');
+ if (! $plantId) {
+ return [];
+ }
+
+ return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
+ ->whereNotNull('pallet_number')
+ ->where('pallet_number', '!=', '')
+ ->orderBy('pallet_number', 'asc')
+ ->get()
+ ->unique('pallet_number')
+ ->pluck('pallet_number', 'pallet_number')
+ ->toArray();
+ })
+ ->searchable()
+ ->reactive(),
+ Select::make('locator_number')
+ ->label('Locator Number')
+ ->options(function (callable $get) {
+ $plantId = $get('Plant');
+ if (! $plantId) {
+ return [];
+ }
+
+ return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
+ ->whereNotNull('locator_number')
+ ->where('locator_number', '!=', '')
+ ->orderBy('locator_number', 'asc')
+ ->get()
+ ->unique('locator_number')
+ ->pluck('locator_number', 'locator_number')
+ ->toArray();
+ })
+ ->searchable()
+ ->reactive(),
+ Select::make('scanned_status')
+ ->label('Scanned Status')
+ ->options([
+ 'Scanned' => 'Scanned',
+ ]),
+ DateTimePicker::make(name: 'rework_from')
+ ->label('Rework From')
+ ->placeholder(placeholder: 'Select From DateTime')
+ ->reactive()
+ ->native(false),
+ DateTimePicker::make('rework_to')
+ ->label('Rework To')
+ ->placeholder(placeholder: 'Select To DateTime')
+ ->reactive()
+ ->native(false),
+ TextInput::make('rework_by')
+ ->label('Rework By')
+ ->placeholder(placeholder: 'Enter Rework By'),
+ ])
+ ->query(function ($query, array $data) {
+ // Hide all records initially if no filters are applied
+ if (empty($data['Plant']) && empty($data['invoice_number']) && empty($data['serial_number']) && empty($data['pallet_number']) && empty($data['locator_number']) && empty($data['scanned_status']) && empty($data['rework_from']) && empty($data['rework_to']) && empty($data['rework_by'])) {
+ return $query->whereRaw('1 = 0');
+ }
+
+ if (! empty($data['Plant'])) { // $plant = $data['Plant'] ?? null
+ $query->where('plant_id', $data['Plant']);
+ } else {
$userHas = Filament::auth()->user()->plant_id;
- return ($userHas && strlen($userHas) > 0) ? Plant::where('id', $userHas)->pluck('name', 'id')->toArray() : Plant::pluck('name', 'id')->toArray();
- })
- ->reactive()
- ->afterStateUpdated(function ($state, callable $set, callable $get): void {
- $set('pallet_number', null);
- $set('invoice_number', null);
- $set('serial_number', null);
- $set('scanned_status', null);
- $set('locator_number', null);
- $set('created_from', null);
- $set('created_to', null);
- $set('created_by', null);
- $set('scanned_from', null);
- $set('scanned_to', null);
- $set('scanned_by', null);
- }),
- Select::make('invoice_number')
- ->label('Invoice Number')
- ->options(function (callable $get) {
- $plantId = $get('Plant');
- if (!$plantId) {
- return [];
+
+ if ($userHas && strlen($userHas) > 0) {
+ return $query->whereRaw('1 = 0');
}
- return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
- ->whereNotNull('invoice_number')
- ->where('invoice_number','!=', '')
- ->orderBy('invoice_number', 'asc')
- ->get()
- ->unique('invoice_number')
- ->pluck('invoice_number', 'invoice_number')
- ->toArray();
- })
- ->searchable()
- ->reactive(),
- TextInput::make('serial_number')
- ->label('Serial Number')
- ->placeholder(placeholder: 'Enter Serial Number'),
- Select::make('pallet_number')
- ->label('Pallet Number')
- ->options(function (callable $get) {
- $plantId = $get('Plant');
- if (!$plantId) {
- return [];
+ }
+
+ if (! empty($data['invoice_number'])) {
+ $query->where('invoice_number', $data['invoice_number']);
+ }
+
+ if (! empty($data['serial_number'])) {
+ $query->where('serial_number', $data['serial_number']);
+ }
+
+ if (! empty($data['pallet_number'])) {
+ $query->where('pallet_number', $data['pallet_number']);
+ }
+
+ if (! empty($data['locator_number'])) {
+ $query->where('locator_number', $data['locator_number']);
+ }
+ if (! empty($data['scanned_status'])) {
+ $query->where('scanned_status', $data['scanned_status']);
+ }
+
+ if (! empty($data['rework_from'])) {
+ $query->where('reworked_at', '>=', $data['rework_from']);
+ }
+
+ if (! empty($data['rework_to'])) {
+ $query->where('reworked_at', '<=', $data['rework_to']);
+ }
+
+ if (! empty($data['rework_by'])) {
+ $query->where('reworked_by', $data['rework_by']);
+ }
+
+ })
+ ->indicateUsing(function (array $data) {
+ $indicators = [];
+
+ if (! empty($data['Plant'])) {
+ $indicators[] = 'Plant: '.Plant::where('id', $data['Plant'])->value('name');
+ } else {
+ $userHas = Filament::auth()->user()->plant_id;
+
+ if ($userHas && strlen($userHas) > 0) {
+ return 'Plant: Choose plant to filter records.';
}
- return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
- ->whereNotNull('pallet_number')
- ->where('pallet_number','!=', '')
- ->orderBy('pallet_number', 'asc')
- ->get()
- ->unique('pallet_number')
- ->pluck('pallet_number', 'pallet_number')
- ->toArray();
- })
- ->searchable()
- ->reactive(),
- Select::make('locator_number')
- ->label('Locator Number')
- ->options(function (callable $get) {
- $plantId = $get('Plant');
- if (!$plantId) {
- return [];
- }
- return ReworkLocatorInvoiceValidation::where('plant_id', $plantId)
- ->whereNotNull('locator_number')
- ->where('locator_number','!=', '')
- ->orderBy('locator_number', 'asc')
- ->get()
- ->unique('locator_number')
- ->pluck('locator_number', 'locator_number')
- ->toArray();
- })
- ->searchable()
- ->reactive(),
- Select::make('scanned_status')
- ->label('Scanned Status')
- ->options([
- 'Scanned' => 'Scanned',
- ]),
- DateTimePicker::make(name: 'rework_from')
- ->label('Rework From')
- ->placeholder(placeholder: 'Select From DateTime')
- ->reactive()
- ->native(false),
- DateTimePicker::make('rework_to')
- ->label('Rework To')
- ->placeholder(placeholder: 'Select To DateTime')
- ->reactive()
- ->native(false),
- TextInput::make('rework_by')
- ->label('Rework By')
- ->placeholder(placeholder: 'Enter Rework By'),
- ])
- ->query(function ($query, array $data) {
- // Hide all records initially if no filters are applied
- if (empty($data['Plant']) && empty($data['invoice_number']) && empty($data['serial_number']) && empty($data['pallet_number']) && empty($data['locator_number']) && empty($data['scanned_status']) && empty($data['rework_from']) && empty($data['rework_to']) && empty($data['rework_by'])) {
- return $query->whereRaw('1 = 0');
- }
+ }
- if (!empty($data['Plant'])) { //$plant = $data['Plant'] ?? null
- $query->where('plant_id', $data['Plant']);
- }
+ if (! empty($data['invoice_number'])) {
+ $indicators[] = 'Invoice Number: '.$data['invoice_number'];
+ }
- if (!empty($data['invoice_number'])) {
- $query->where('invoice_number', $data['invoice_number']);
- }
+ if (! empty($data['serial_number'])) {
+ $indicators[] = 'Serial Number: '.$data['serial_number'];
+ }
- if (!empty($data['serial_number'])) {
- $query->where('serial_number', $data['serial_number']);
- }
+ if (! empty($data['pallet_number'])) {
+ $indicators[] = 'Pallet Number: '.$data['pallet_number'];
+ }
- if (!empty($data['pallet_number'])) {
- $query->where('pallet_number', $data['pallet_number']);
- }
+ if (! empty($data['locator_number'])) {
+ $indicators[] = 'Locator Number: '.$data['locator_number'];
+ }
- if (!empty($data['locator_number'])) {
- $query->where('locator_number', $data['locator_number']);
- }
- if (!empty($data['scanned_status'])) {
- $query->where('scanned_status', $data['scanned_status']);
- }
+ if (! empty($data['scanned_status'])) {
+ $indicators[] = 'Scanned Status: '.$data['scanned_status'];
+ }
- if (!empty($data['rework_from'])) {
- $query->where('reworked_at', '>=', $data['rework_from']);
- }
+ if (! empty($data['rework_from'])) {
+ $indicators[] = 'From: '.$data['rework_from'];
+ }
- if (!empty($data['rework_to'])) {
- $query->where('reworked_at', '<=', $data['rework_to']);
- }
+ if (! empty($data['rework_to'])) {
+ $indicators[] = 'To: '.$data['rework_to'];
+ }
- if (!empty($data['rework_by'])) {
- $query->where('reworked_by', $data['rework_by']);
- }
+ if (! empty($data['rework_by'])) {
+ $indicators[] = 'Reworked By: '.$data['rework_by'];
+ }
- })
- ->indicateUsing(function (array $data) {
- $indicators = [];
-
- if (!empty($data['Plant'])) {
- $indicators[] = 'Plant: ' . Plant::where('id', $data['Plant'])->value('name');
- }
-
- if (!empty($data['invoice_number'])) {
- $indicators[] = 'Invoice Number: ' . $data['invoice_number'];
- }
-
- if (!empty($data['serial_number'])) {
- $indicators[] = 'Serial Number: ' . $data['serial_number'];
- }
-
- if (!empty($data['pallet_number'])) {
- $indicators[] = 'Pallet Number: ' . $data['pallet_number'];
- }
-
- if (!empty($data['locator_number'])) {
- $indicators[] = 'Locator Number: ' . $data['locator_number'];
- }
-
- if (!empty($data['scanned_status'])) {
- $indicators[] = 'Scanned Status: ' . $data['scanned_status'];
- }
-
- if (!empty($data['rework_from'])) {
- $indicators[] = 'From: ' . $data['rework_from'];
- }
-
- if (!empty($data['rework_to'])) {
- $indicators[] = 'To: ' . $data['rework_to'];
- }
-
- if (!empty($data['rework_by'])) {
- $indicators[] = 'Reworked By: ' . $data['rework_by'];
- }
- return $indicators;
- })
+ return $indicators;
+ }),
])
->filtersFormMaxHeight('280px')
->actions([