topnotch_website/app/Filament/Resources/InvoiceReportResource.php

111 lines
3.8 KiB
PHP
Raw Normal View History

2024-11-18 22:18:41 -05:00
<?php
namespace App\Filament\Resources;
use App\Filament\Resources\InvoiceReportResource\Pages;
2024-12-02 12:21:01 -05:00
use App\Filament\Resources\InvoiceReportResource\RelationManagers\InvoicesRelationManager;
2024-11-18 22:18:41 -05:00
use Filament\Forms\Components\DatePicker;
2024-11-29 12:39:20 -05:00
use Filament\Forms\Components\Section;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\ToggleButtons;
2024-11-18 22:18:41 -05:00
use Filament\Forms\Form;
use Filament\Resources\Resource;
2024-11-29 12:39:20 -05:00
use Filament\Support\Enums\FontFamily;
use Filament\Tables\Columns\TextColumn;
2024-11-18 22:18:41 -05:00
use Filament\Tables\Table;
class InvoiceReportResource extends Resource
{
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
protected static ?string $navigationGroup = 'Reports';
protected static ?string $navigationLabel = 'Invoice Reports';
protected static ?int $navigationSort = 2;
public static function form(Form $form): Form
{
return $form
->schema([
2024-11-29 12:39:20 -05:00
Section::make([
Select::make('customer_id')
->relationship('customer', 'company_name')
->preload()
->required()
->searchable(),
ToggleButtons::make('filter_paid')
->boolean()
->required()
->default(false)
->colors([
'true' => 'info',
'false' => 'info',
])
->inline(),
DatePicker::make('date_start')
->required(),
DatePicker::make('date_end')
->required()
->default(today()),
])->columns(2),
2024-11-18 22:18:41 -05:00
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
2024-12-02 12:21:01 -05:00
TextColumn::make('internal_id')
->label('ID')
2024-11-29 12:39:20 -05:00
->fontFamily(FontFamily::Mono)
2024-12-02 12:21:01 -05:00
->color('primary')
->searchable()
->sortable(),
2024-11-29 12:39:20 -05:00
TextColumn::make('customer.company_name')
2024-12-02 12:21:01 -05:00
->extraHeaderAttributes(['class' => 'w-full'])
->searchable(),
2024-11-29 12:39:20 -05:00
TextColumn::make('date_start')
->label('Start Date')
->date('Y-m-d'),
TextColumn::make('date_end')
->label('End Date')
->date('Y-m-d'),
TextColumn::make('total')
2024-11-19 15:54:02 -05:00
->money(),
2024-11-18 22:18:41 -05:00
])
2024-11-29 12:39:20 -05:00
->defaultSort('created_at', 'desc')
2024-11-18 22:18:41 -05:00
->filters([
2024-11-29 12:39:20 -05:00
])
->actions([]);
// ->defaultGroup(
// Group::make('date')
// ->getKeyFromRecordUsing(fn (Order $record): string => $record->invoice->date->format('Y-m-0'))
// ->getTitleFromRecordUsing(fn (Order $record): string => $record->invoice->date->format('F Y'))
// ->orderQueryUsing(function (Builder $query) {
//
// return $query->join('invoices', 'orders.invoice_id', '=', 'invoices.id')
// ->orderBy('invoices.date', 'desc');
// })
// ->titlePrefixedWithLabel(false),
// );
2024-11-18 22:18:41 -05:00
}
public static function getRelations(): array
{
return [
2024-12-02 12:21:01 -05:00
InvoicesRelationManager::class,
2024-11-18 22:18:41 -05:00
];
}
public static function getPages(): array
{
return [
2024-11-29 12:39:20 -05:00
'index' => Pages\ListInvoiceReports::route('/'),
'edit' => Pages\EditInvoiceReport::route('/{record}/edit'),
'create' => Pages\CreateInvoiceReport::route('/create'),
2024-11-18 22:18:41 -05:00
];
}
}