Hoan thien core finance v2

This commit is contained in:
2026-04-25 04:04:14 +00:00
parent 86216ef872
commit 002c9a8b99
39 changed files with 1308 additions and 89 deletions

View File

@@ -0,0 +1,46 @@
<?php
namespace App\Filament\Widgets;
use App\Models\Contract;
use App\Models\PaymentScheduleItem;
use Filament\Widgets\StatsOverviewWidget as BaseWidget;
use Filament\Widgets\StatsOverviewWidget\Stat;
class ContractStatsOverview extends BaseWidget
{
protected function getStats(): array
{
$totalRevenue = (float) Contract::sum('total_value');
$totalPaid = (float) Contract::sum('paid_amount');
$totalRemaining = (float) Contract::sum('remaining_amount');
$activeContracts = Contract::where('status', 'Đang hiệu lực')->count();
$upcomingPayments = PaymentScheduleItem::whereNull('schedule_id')
->orWhereHas('schedule', fn ($q) => $q->whereHas('contract'))
->whereDate('due_date', '<=', now()->addDays(30))
->whereDate('due_date', '>=', now())
->count();
return [
Stat::make('Tổng doanh thu', number_format($totalRevenue) . ' VNĐ')
->description('Tổng giá trị tất cả HĐ')
->color('primary'),
Stat::make('Đã thu', number_format($totalPaid) . ' VNĐ')
->description('Tổng tiền đã thanh toán')
->color('success'),
Stat::make('Công nợ phải thu', number_format($totalRemaining) . ' VNĐ')
->description('Tổng tiền chưa thu')
->color('danger'),
Stat::make('HĐ hiệu lực', $activeContracts)
->description('Số hợp đồng đang hiệu lực')
->color('warning'),
Stat::make('Đợt TT sắp đến hạn', $upcomingPayments)
->description('Trong 30 ngày tới')
->color('info'),
];
}
}