Andrew Wallo 5 月之前
父節點
當前提交
a8bb34476a

+ 1
- 1
app/Filament/Company/Resources/Purchases/BillResource/Widgets/BillOverview.php 查看文件

@@ -37,7 +37,7 @@ class BillOverview extends EnhancedStatsOverviewWidget
37 37
 
38 38
             if ($driver === 'pgsql') {
39 39
                 $query->selectRaw('AVG(EXTRACT(EPOCH FROM (paid_at - date)) / 86400) as avg_days');
40
-            } elseif ($driver === 'mysql') {
40
+            } else {
41 41
                 $query->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days');
42 42
             }
43 43
 

+ 15
- 3
app/Filament/Company/Resources/Purchases/VendorResource/Widgets/BillOverview.php 查看文件

@@ -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 BillOverview extends EnhancedStatsOverviewWidget
@@ -32,9 +33,20 @@ class BillOverview extends EnhancedStatsOverviewWidget
32 33
             ->get()
33 34
             ->sumMoneyInDefaultCurrency('amount_due');
34 35
 
35
-        $averagePaymentTime = $this->record->bills()
36
-            ->whereNotNull('paid_at')
37
-            ->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days')
36
+        $driver = DB::getDriverName();
37
+
38
+        $query = $this->record->bills()
39
+            ->whereNotNull('paid_at');
40
+
41
+        if ($driver === 'pgsql') {
42
+            $query->selectRaw('AVG(EXTRACT(EPOCH FROM (paid_at - date)) / 86400) as avg_days');
43
+        } else {
44
+            $query->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days');
45
+        }
46
+
47
+        $averagePaymentTime = $query
48
+            ->groupBy('company_id')
49
+            ->reorder()
38 50
             ->value('avg_days');
39 51
 
40 52
         $averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);

+ 15
- 3
app/Filament/Company/Resources/Sales/ClientResource/Widgets/InvoiceOverview.php 查看文件

@@ -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);

Loading…
取消
儲存