modalContent( fn (): View => view('filament.pages.detail-profit-and-loss', [ 'record' => '', ]) ) ]; } public function table(Table $table): Table { return $table ->actions([ ActionsAction::make('view') ->modalContent(view('filament.pages.actions.detail-profit-and-loss')) ]) ->query(ProfitAndLoss::query()) ->columns([ TextColumn::make('period') ->label('Date') ->date('d M Y') ->sortable(), TextColumn::make('total_revenue') ->label('Revenue') ->numeric() ->sortable() ->summarize(Sum::make()), TextColumn::make('total_expenses') ->label('Expenses') ->numeric() ->sortable() ->summarize(Sum::make()), TextColumn::make('total_payroll') ->label('Payroll') ->numeric() ->sortable() ->summarize(Sum::make()), TextColumn::make('net_profit') ->label('Net Profit') ->numeric() ->sortable() ->summarize(Sum::make()), ]) ->filtersLayout(FiltersLayout::AboveContent) ->filtersFormColumns(1) ->filters([ Filter::make('period') ->label('Date') ->columns(2) ->form([ Select::make('month') ->label('Month') ->options([ '1' => 'January', '2' => 'February', '3' => 'March', '4' => 'April', '5' => 'May', '6' => 'June', '7' => 'July', '8' => 'August', '9' => 'September', '10' => 'October', '11' => 'November', '12' => 'December', ]) ->default(now()->month), Select::make('year') ->label('Year') ->options( collect(range(now()->year - 5, now()->year + 5)) ->mapWithKeys(fn($year) => [$year => $year]) ->toArray() ) ->default(now()->year) ]) ->query(function ($query, $data) { if (isset($data['month']) && isset($data['year'])) { $query->whereMonth('period', '=', $data['month']) ->whereYear('period', '=', $data['year']); } }), ]) ->headerActions([ ExportAction::make() ->exporter(ProfitAndLossExporter::class) ->columnMapping(false) ->formats([ ExportFormat::Xlsx, ]) ]); } }