OwlCyberSecurity - MANAGER
Edit File: TransactionReportResource.php
<?php namespace App\Filament\Resources; use App\Filament\Resources\TransactionReportResource\Pages; use App\Filament\Resources\TransactionReportResource\RelationManagers; use Filament\Forms; use Filament\Forms\Components\DatePicker; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Actions\Action; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope; use App\Models\Transaction; use Filament\Tables\Columns\TextColumn; use Filament\Tables\Filters\Filter; use Filament\Tables\Actions\ExportAction; use Filament\Forms\Components\TextInput; use App\Models\Invoice; use App\Filament\Resources\TransactionReportResource\Pages\ViewAllTransactions; use Filament\Forms\Components\Select; class TransactionReportResource extends Resource { protected static ?string $model = Transaction::class; protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack'; protected static ?string $label = 'گزارش تراکنشها'; protected static ?string $pluralModelLabel = 'گزارش تراکنشها'; protected static ?string $navigationGroup = 'مالی'; protected static ?int $navigationSort = 5; protected static ?string $slug = 'tranaction-user'; // public static function form(Form $form): Form // { // return $form // ->schema([ // // // ]); // } public static function getEloquentQuery(): Builder { return parent::getEloquentQuery() ->has('invoice') ->where('issuccess', 1); } public static function table(Table $table): Table { return $table ->columns([ TextColumn::make('user.name')->label('نام مشتری'), TextColumn::make('user.nationalcode')->label('کد ملی'), TextColumn::make('date')->label('تاریخ')->dateTime('Y-m-d H:i')->jalaliDateTime(), TextColumn::make('transId')->label('کد تراکنش'), TextColumn::make('trackingCode')->label('کد رهگیری'), TextColumn::make('payment_method.title_fa') ->label('نوع پرداخت') ->getStateUsing(function ($record) { if ($record->payment_method->title_fa == 'آنلاین') { $gatewayName = $record->getway->name ?? ''; return $gatewayName ? "آنلاین = {$gatewayName}" : 'آنلاین'; } return $record->payment_method->title_fa; }), TextColumn::make('amount')->label('واریزی'), TextColumn::make('sumCost')->label('مبلغ فاکتور اولیه')->getStateUsing(fn(Transaction $record): float => $record->invoice->totaltransportprice + $record->invoice->totalitemprice + $record->invoice->othercosts)->money('irr'), TextColumn::make('allCost') ->label('هزینه اولیه پس از تخفیف') ->getStateUsing(fn(Transaction $record): string => isset($record->invoice->UserDiscount[0]) ? number_format(($record->invoice->totaltransportprice + $record->invoice->totalitemprice + $record->invoice->othercosts) - $record->invoice->UserDiscount[0]["discount_price"]) . ' ریال' : 'تخفیف ندارد' ), TextColumn::make('sumFinalCost')->label('مبلغ نهایی فاکتور')->getStateUsing(fn(Transaction $record): float => $record->invoice->finalTotaltransportprice + $record->invoice->finalTotalitemprice + $record->invoice->finalOthercosts)->money('irr'), TextColumn::make('finalCost') ->label('هزینه نهایی پس از تخفیف') ->getStateUsing(fn(Transaction $record): string => $record->invoice->finalTotaltransportprice == 0 ? '0' : (isset($record->UserDiscount[0]) && $record->invoice->finalTotaltransportprice != 0 ? number_format(($record->invoice->finalTotaltransportprice + $record->invoice->finalTotalitemprice + $record->invoice->finalOthercosts) - $record->UserDiscount[0]["discount_price"]) . ' ریال' : 'تخفیف ندارد') ), TextColumn::make('invoice.code')->label('شماره سفارش'), TextColumn::make('admin_comment')->label('توضیحات ادمین'), ]) ->filters([ Filter::make('user_name') ->form([ TextInput::make('name')->label('نام مشتری'), ]) ->query(fn(Builder $query, array $data): Builder => $query->when( $data['name'], fn(Builder $query, $name): Builder => $query->whereHas('user', fn($q) => $q->where('name', 'like', "%{$name}%")) )), 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, $cell_number): Builder => $query->whereHas('user', fn($q) => $q->where('cell_number', 'like', "%{$cell_number}%")) )), Filter::make('national_code') ->form([ TextInput::make('national_code')->label('کد ملی'), ]) ->query(fn(Builder $query, array $data): Builder => $query->when( $data['national_code'], fn(Builder $query, $national_code): Builder => $query->whereHas('user', fn($q) => $q->where('national_code', 'like', "%{$national_code}%")) )), Filter::make('invoice_code') ->form([ TextInput::make('code')->label('شماره سفارش'), ]) ->query(fn(Builder $query, array $data): Builder => $query->when( $data['code'], fn(Builder $query, $code): Builder => $query->whereHas('invoice', fn($q) => $q->where('code', 'like', "%{$code}%")) )), Filter::make('from')->form([ DatePicker::make('date')->label('از تاریخ'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['date'], fn(Builder $query, $data): Builder => $query->where('date', '>=', $data) )), Filter::make('until')->form([ DatePicker::make('date')->label('تا تاریخ'), ])->query(fn(Builder $query, array $data): Builder => $query->when( $data['date'], fn(Builder $query, $data): Builder => $query->where('date', '<=', $data) )), Filter::make('payment_method') ->form([ Select::make('title_fa')->label('نوع پرداخت') ->options([ 'آنلاین' => 'آنلاین', 'کارت به کارت' => 'کارت به کارت', 'دستگاه پوز' => 'دستگاه پوز', 'نقدی' => 'نقدی', 'وندار' => 'وندار', 'کیف پول' => 'کیف پول', 'پرداخت هدیه' => 'پرداخت هدیه' ]) ->searchable() ]) ->query(fn(Builder $query, array $data): Builder => $query->when( $data['title_fa'], fn(Builder $query, $title_fa): Builder => $query->whereHas('payment_method', fn($q) => $q->where('title_fa', $title_fa)) )) ]) ->actions([ Action::make('final-factor')->label('مشاهده فاکتور')->color('primary')->icon('heroicon-o-currency-dollar') ->url(fn(Transaction $invoice) => config('app.url') . "/admin/invoice-search/view-factor/" . "{$invoice->invoice_id}") ->openUrlInNewTab() ->icon('heroicon-o-link') ->color('primary'), Action::make('view-all-transactions') ->label('مشاهده تراکنشها') ->url(fn(Transaction $record) => static::getUrl('view-all-transactions', ['record' => $record->user_id])) ->icon('heroicon-o-eye') ->openUrlInNewTab() ]) ->bulkActions([ Tables\Actions\BulkActionGroup::make([ Tables\Actions\DeleteBulkAction::make(), ]), ]) ->defaultSort('date', 'desc'); } public static function getRelations(): array { return [ // ]; } public static function getPages(): array { return [ 'index' => Pages\ListTransactionReports::route('/'), 'view-all-transactions' => ViewAllTransactions::route('/view-all-transactions/{record}'), // 'create' => Pages\CreateTransactionReport::route('/create'), // 'edit' => Pages\EditTransactionReport::route('/{record}/edit'), ]; } public static function canViewAny(): bool { return auth()->user()->can('transaction-report::view'); } }