OwlCyberSecurity - MANAGER
Edit File: InvoiceSearchResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\InvoiceSearchResource\Pages; use App\Models\Invoice; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\TextInput; use Filament\Resources\Resource; use Filament\Tables\Filters\Filter; use Filament\Tables\Filters\SelectFilter; use Filament\Tables\Table; use Filament\Tables\Actions\Action; use Filament\Tables\Columns\TextColumn; use Illuminate\Database\Eloquent\Builder; class InvoiceSearchResource extends Resource { protected static ?string $model = Invoice::class; protected static ?string $navigationIcon = 'heroicon-o-document-magnifying-glass'; protected static ?string $modelLabel = 'جستجو فاکتورها'; protected static ?string $pluralModelLabel = 'جستجو فاکتورها'; protected static ?string $slug = 'invoice-search'; protected static ?string $navigationGroup = 'جستجو'; protected static ?int $navigationSort = 2; public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('id')->label('ایدی'), TextColumn::make('code')->label('کد رهگیری'), TextColumn::make('user.name')->label('نام کاربر'), TextColumn::make('user.cell_number')->label('شماره کاربر'), // TextColumn::make('agent.name')->label('کارشناس')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('status')->label('وضعیت'), TextColumn::make('cancel_description')->label('دلیل کنسلی')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('orderlevel')->label('سطح')->toggleable(isToggledHiddenByDefault: true), TextColumn::make('invoicedate')->label('تاریخ'), TextColumn::make('finalTotaltransportprice')->label('هزینه ارسال نهایی')->money('irr'), TextColumn::make('finalTotalitemprice')->label('هزینه های ایتم ها نهایی')->money('irr'), TextColumn::make('finalOthercosts')->label('هزینه های اضافی نهایی')->money('irr'), TextColumn::make('sumFinalCost')->label('مجموع هزینه ها')->getStateUsing(fn(Invoice $record): float => $record->finalTotaltransportprice + $record->finalTotalitemprice + $record->finalOthercosts)->money('irr'), TextColumn::make('finalOthercosts')->label('هزینه های اضافی نهایی')->money('irr'), ]) ->filters([ Filter::make('uname')->form([ TextInput::make('name')->label('نام مشتری'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['name'], fn(Builder $query, $data): Builder => $query->whereHas( 'user', fn($q) => $q->where('users.name', 'like', '%' . $data . '%')), )), Filter::make('cell_number')->form([ TextInput::make('cell_number')->label('تلفن همراه'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['cell_number'], fn(Builder $query, $data): Builder => $query->whereHas( 'user', fn($q) => $q->where('users.cell_number', 'like', '%' . $data . '%')), )), Filter::make('code')->form([ TextInput::make('code')->label('کد رهگیری'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['code'], fn(Builder $query, $date): Builder => $query->where('code', 'like', '%' . $date . '%'), )), Filter::make('created_at')->form([ DatePicker::make('created_from')->label('از تاریخ')->displayFormat('Y-m-d')->required(), DatePicker::make('created_until')->label('تا تاریخ')->displayFormat('Y-m-d')->required(), ])->query(fn(Builder $query, array $data): Builder => $query ->when( $data['created_from'], fn(Builder $query, $date): Builder => $query->whereDate('created_at', '>=', $date), ) ->when( $data['created_until'], fn(Builder $query, $date): Builder => $query->whereDate('created_at', '<=', $date), )), SelectFilter::make('status')->label('وضعیت')->options([ 'در حال بررسی' => 'در حال بررسی', 'پیش فاکتور ارسال شد در انتظار پرداخت' => 'پیش فاکتور ارسال شد در انتظار پرداخت', 'در حال خرید' => 'در حال خرید', 'خریداری شده' => 'خریداری شده', 'تحویل دفتر آمریکا' => 'تحویل دفتر آمریکا', 'تحویل دفتر اروپا' => 'تحویل دفتر اروپا', 'تحویل دفتر کانادا' => 'تحویل دفتر کانادا', 'تحویل دفتر آسیا' => 'تحویل دفتر آسیا', 'ارسال به دوبی' => 'ارسال به دوبی', 'تحویل دفتر دوبی' => 'تحویل دفتر دوبی', 'ارسال به ایران' => 'ارسال به ایران', 'تحویل دفتر ایران' => 'تحویل دفتر ایران', 'تحویل مشتری' => 'تحویل مشتری', 'کنسل' => 'کنسل', ]), ]) ->actions([ Action::make('final-factor')->label('مشاهده فاکتور')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn($record): string => self::getUrl('view-factor', [$record->id])), ]) ->bulkActions([]) ->defaultSort('id', 'desc'); } public static function getPages(): array { return [ 'index' => Pages\ListInvoiceSearches::route('/'), 'view-factor' => Pages\InvoiceViewFactor::route('/view-factor/{record}'), ]; } public static function canViewAny(): bool { return auth()->user()->can('invoice-search::view'); } }