OwlCyberSecurity - MANAGER
Edit File: BuyInvoiceManagementResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\BuyInvoiceManagementResource\Pages; use App\Helpers\InvoiceGlobalSearch; use App\Models\Invoice; use Filament\Actions\StaticAction; use Filament\Forms\Components\DatePicker; use Filament\Forms\Components\Textarea; use Filament\Forms\Components\TextInput; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Table; use Filament\Tables; use Illuminate\Contracts\View\View; use Illuminate\Database\Eloquent\Builder; use Filament\Tables\Actions\Action; class BuyInvoiceManagementResource extends Resource { use InvoiceGlobalSearch; protected static ?string $model = Invoice::class; protected static ?string $navigationIcon = 'heroicon-o-shopping-cart'; protected static ?string $modelLabel = 'سفارش'; protected static ?string $pluralModelLabel = 'سفارشات'; protected static ?string $slug = 'buy-invoice'; protected static ?int $navigationSort = 4; public static function getNavigationBadge(): ?string { return static::getModel()::where('invoices.orderlevel', 'سفارش')->where('invoices.status', '!=', 'کنسل')->where('invoices.submit_factor', false)->count(); } public static function getEloquentQuery(): Builder { return parent::getEloquentQuery()->where('invoices.orderlevel', 'سفارش')->where('invoices.status', '!=', 'کنسل')->where('invoices.submit_factor', false); } public static function table(Table $table): Table { return $table ->columns([ Tables\Columns\TextColumn::make('user.name')->label('نام مشتری'), Tables\Columns\TextColumn::make('user.cell_number')->label('تلفن همراه'), Tables\Columns\TextColumn::make('code')->label('کد رهگیری'), Tables\Columns\TextColumn::make('latestTransaction.date')->label('تاریخ آخرین پرداخت'), // Tables\Columns\TextColumn::make('agent.name')->label('کارشناس'), // Tables\Columns\TextColumn::make('bought_invoice_items_count')->label('وضعیت خرید')->counts('BoughtInvoiceItems') // ->getStateUsing(fn($record) => $record->bought_invoice_items_count == 0 ? 'خریداری شده' : 'خریداری نشده'), ]) ->filters([ 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', $date), )), Filter::make('username')->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('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), )), ]) ->actions([ Action::make('final-factor')->label('مشاهده فاکتور')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn(Invoice $invoice) => config('app.url') . "/admin/invoice-search/view-factor/" . "{$invoice->id}") ->openUrlInNewTab() ->icon('heroicon-o-link') ->color('primary'), Action::make('agent-buy')->label('خرید سفارش')->color('danger')->icon('heroicon-o-credit-card') ->url(fn($record): string => self::getUrl('agent-buy', [$record->id])), Action::make('payment')->label('پرداخت ها')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn($record): string => self::getUrl('payment', [$record->id])), Action::make('notes')->label('نوت های پیش خرید')->color(function (Invoice $record) { return $record->invoiceItems->every(fn($item) => $item->preordercomment == null) ? 'gray' : 'primary'; })->icon('heroicon-o-pencil-square') ->modalContent(fn(Invoice $record): View => view('filament.buy-invoice.show-note-modal', ['record' => $record])) ->modalCancelAction(false) ->modalSubmitAction(false) ->action(function () { }), ]) ->bulkActions([]) ->defaultSort('id', 'desc'); } public static function getPages(): array { return [ 'index' => Pages\ListBuyInvoiceManagement::route('/'), 'payment' => Pages\InvoicePaymentLogs::route('/payment-logs/{record}'), 'agent-buy' => Pages\InvoiceAgentBuy::route('/agent-buy/{record}'), ]; } public static function canViewAny(): bool { return auth()->user()->can('buy-invoice::view'); } }