diff --git a/app/Filament/Resources/InvoiceValidationResource.php b/app/Filament/Resources/InvoiceValidationResource.php index 097a95228..0f2d4017c 100644 --- a/app/Filament/Resources/InvoiceValidationResource.php +++ b/app/Filament/Resources/InvoiceValidationResource.php @@ -17,6 +17,7 @@ use Filament\Forms; use Filament\Forms\Components\Actions\Action as ActionsAction; use Filament\Forms\Components\DateTimePicker; use Filament\Forms\Components\FileUpload; +use Filament\Forms\Components\Radio; use Filament\Forms\Components\Section; use Filament\Forms\Components\Select; use Filament\Forms\Components\TextInput; @@ -929,6 +930,16 @@ class InvoiceValidationResource extends Resource Filter::make('advanced_filters') ->label('Advanced Filters') ->form([ + Radio::make('invoice_type') + ->label('Type ?') + ->boolean() + ->options([ + 'Serial' => 'Serial', + 'Material' => 'Material' + ]) + ->default('Serial') + ->inlineLabel(false) + ->inline(), Select::make('Plant') ->label('Select Plant') ->nullable() @@ -963,6 +974,15 @@ class InvoiceValidationResource extends Resource }) ->searchable() ->reactive(), + Select::make('scanned_status') + ->label('Scanned Status') + ->nullable() + ->options([ + 'Scanned' => 'Scanned', + 'Pending' => 'Pending', + ]) + ->searchable() + ->reactive(), Select::make('operator_id') ->label('Created By') ->nullable() @@ -979,15 +999,6 @@ class InvoiceValidationResource extends Resource }) ->searchable() ->reactive(), - Select::make('scanned_status') - ->label('Scanned Status') - ->nullable() - ->options([ - 'Scanned' => 'Scanned', - 'Pending' => 'Pending', - ]) - ->searchable() - ->reactive(), DateTimePicker::make(name: 'created_from') ->label('Created From') ->placeholder(placeholder: 'Select From DateTime') @@ -1001,10 +1012,39 @@ class InvoiceValidationResource extends Resource ]) ->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['created_from']) && empty($data['created_to']) && empty($data['operator_id']) && empty($data['scanned_status']) && empty($data['sticker_master_id'])) { + if (empty($data['invoice_type']) || (empty($data['Plant']) && empty($data['invoice_number']) && empty($data['serial_number']) && empty($data['created_from']) && empty($data['created_to']) && empty($data['operator_id']) && empty($data['scanned_status']) && empty($data['sticker_master_id']))) { return $query->whereRaw('1 = 0'); } + if ($data['invoice_type'] == 'Serial') { + $query->whereNull('quantity'); + + if (!empty($data['scanned_status'])) { + if ($data['scanned_status'] == 'Scanned') { + $query->whereNotNull('scanned_status')->where('scanned_status', '!=', ''); + } elseif ($data['scanned_status'] == 'Pending') { + //$query->whereNull('scanned_status')->orWhere('scanned_status', ''); + $query->where(function ($query) use ($data) { + // if (empty($data['scanned_status']) || $data['scanned_status'] == 'Pending') { + $query->whereNull('scanned_status')->orWhere('scanned_status', '!=', 'Scanned'); + // } + }); + } + } + } elseif ($data['invoice_type'] == 'Material') { + $query->whereNotNull('quantity');//->where('quantity', '>', 0) + + if (!empty($data['scanned_status'])) { + if ($data['scanned_status'] == 'Scanned') { + $query->whereNotNull('serial_number')->where('serial_number', '!=', ''); + } elseif ($data['scanned_status'] == 'Pending') { + $query->where(function ($query) use ($data) { + $query->whereNull('serial_number')->orWhere('serial_number', '=', ''); + }); + } + } + } + if (!empty($data['Plant'])) { //$plant = $data['Plant'] ?? null $query->where('plant_id', $data['Plant']); } @@ -1038,14 +1078,6 @@ class InvoiceValidationResource extends Resource $query->whereIn('sticker_master_id', $stickerMasterIds); } } - - if (!empty($data['scanned_status'])) { - if ($data['scanned_status'] == 'Scanned') { - $query->whereNotNull('scanned_status')->where('scanned_status', '!=', ''); - } elseif ($data['scanned_status'] == 'Pending') { - $query->whereNull('scanned_status')->orWhere('scanned_status', ''); - } - } }) ->indicateUsing(function (array $data) { $indicators = [];