topnotch_website/app/Filament/Admin/Resources/InvoiceReportResource.php

123 lines
4.3 KiB
PHP
Raw Normal View History

2024-11-18 22:18:41 -05:00
<?php
2024-12-10 15:28:14 -08:00
namespace App\Filament\Admin\Resources;
2024-11-18 22:18:41 -05:00
2025-01-16 17:37:32 -05:00
use App\Enums\IconEnum;
2024-12-10 15:28:14 -08:00
use App\Filament\Admin\Resources\InvoiceReportResource\RelationManagers\InvoicesRelationManager;
2025-02-11 21:40:03 -05:00
use App\Models\InvoiceReport;
2024-11-18 22:18:41 -05:00
use Filament\Forms\Components\DatePicker;
2025-02-11 21:40:03 -05:00
use Filament\Forms\Components\Placeholder;
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;
2024-12-10 15:28:14 -08:00
use Filament\Support\Enums\FontWeight;
2024-11-29 12:39:20 -05:00
use Filament\Tables\Columns\TextColumn;
2024-11-18 22:18:41 -05:00
use Filament\Tables\Table;
class InvoiceReportResource extends Resource
{
2025-01-24 21:37:05 -05:00
protected static ?string $navigationIcon = IconEnum::INVOICE_REPORT->value;
2024-11-18 22:18:41 -05:00
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)
2025-02-11 21:40:03 -05:00
->columnSpan(2),
Section::make([
Placeholder::make('created_at')
->label('Created')
->content(fn (InvoiceReport $record): ?string => $record->created_at?->diffForHumans()),
Placeholder::make('updated_at')
->label('Last modified')
->content(fn (InvoiceReport $record): ?string => $record->updated_at?->diffForHumans()),
])
->columnSpan(1)
->hidden(fn (?InvoiceReport $record) => $record === null)
->extraAttributes(['class' => 'h-full']),
])->columns(3);
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-12-10 15:28:14 -08:00
->weight(FontWeight::Bold)
2024-11-19 15:54:02 -05:00
->money(),
TextColumn::make('balance')
->weight(FontWeight::Bold)
->money(),
2024-11-18 22:18:41 -05:00
])
->defaultSort('id', 'desc');
2024-11-18 22:18:41 -05:00
}
2025-01-04 16:41:24 -05:00
public static function canAccess(): bool
{
return auth()->user()->is_admin ?? false;
2025-01-04 16:41:24 -05:00
}
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-12-10 15:28:14 -08:00
'index' => \App\Filament\Admin\Resources\InvoiceReportResource\Pages\ListInvoiceReports::route('/'),
'create' => \App\Filament\Admin\Resources\InvoiceReportResource\Pages\CreateInvoiceReport::route('/create'),
'view' => \App\Filament\Admin\Resources\InvoiceReportResource\Pages\ViewInvoiceReport::route('/{record}'),
2024-11-18 22:18:41 -05:00
];
}
}