|
@@ -7,6 +7,7 @@ use App\Filament\Widgets\EnhancedStatsOverviewWidget;
|
7
|
7
|
use App\Utilities\Currency\CurrencyAccessor;
|
8
|
8
|
use App\Utilities\Currency\CurrencyConverter;
|
9
|
9
|
use Illuminate\Database\Eloquent\Model;
|
|
10
|
+use Illuminate\Support\Facades\DB;
|
10
|
11
|
use Illuminate\Support\Number;
|
11
|
12
|
|
12
|
13
|
class InvoiceOverview extends EnhancedStatsOverviewWidget
|
|
@@ -43,9 +44,20 @@ class InvoiceOverview extends EnhancedStatsOverviewWidget
|
43
|
44
|
? (int) round($totalValidInvoiceAmount / $totalValidInvoiceCount)
|
44
|
45
|
: 0;
|
45
|
46
|
|
46
|
|
- $averagePaymentTime = $this->record->invoices()
|
47
|
|
- ->whereNotNull('paid_at')
|
48
|
|
- ->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days')
|
|
47
|
+ $driver = DB::getDriverName();
|
|
48
|
+
|
|
49
|
+ $query = $this->record->invoices()
|
|
50
|
+ ->whereNotNull('paid_at');
|
|
51
|
+
|
|
52
|
+ if ($driver === 'pgsql') {
|
|
53
|
+ $query->selectRaw('AVG(EXTRACT(EPOCH FROM (paid_at - date)) / 86400) as avg_days');
|
|
54
|
+ } else {
|
|
55
|
+ $query->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days');
|
|
56
|
+ }
|
|
57
|
+
|
|
58
|
+ $averagePaymentTime = $query
|
|
59
|
+ ->groupBy('company_id')
|
|
60
|
+ ->reorder()
|
49
|
61
|
->value('avg_days');
|
50
|
62
|
|
51
|
63
|
$averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);
|