Andrew Wallo 5 months ago
parent
commit
a8bb34476a

+ 1
- 1
app/Filament/Company/Resources/Purchases/BillResource/Widgets/BillOverview.php View File

37
 
37
 
38
             if ($driver === 'pgsql') {
38
             if ($driver === 'pgsql') {
39
                 $query->selectRaw('AVG(EXTRACT(EPOCH FROM (paid_at - date)) / 86400) as avg_days');
39
                 $query->selectRaw('AVG(EXTRACT(EPOCH FROM (paid_at - date)) / 86400) as avg_days');
40
-            } elseif ($driver === 'mysql') {
40
+            } else {
41
                 $query->selectRaw('AVG(TIMESTAMPDIFF(DAY, date, paid_at)) as avg_days');
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 View File

7
 use App\Utilities\Currency\CurrencyAccessor;
7
 use App\Utilities\Currency\CurrencyAccessor;
8
 use App\Utilities\Currency\CurrencyConverter;
8
 use App\Utilities\Currency\CurrencyConverter;
9
 use Illuminate\Database\Eloquent\Model;
9
 use Illuminate\Database\Eloquent\Model;
10
+use Illuminate\Support\Facades\DB;
10
 use Illuminate\Support\Number;
11
 use Illuminate\Support\Number;
11
 
12
 
12
 class BillOverview extends EnhancedStatsOverviewWidget
13
 class BillOverview extends EnhancedStatsOverviewWidget
32
             ->get()
33
             ->get()
33
             ->sumMoneyInDefaultCurrency('amount_due');
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
             ->value('avg_days');
50
             ->value('avg_days');
39
 
51
 
40
         $averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);
52
         $averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);

+ 15
- 3
app/Filament/Company/Resources/Sales/ClientResource/Widgets/InvoiceOverview.php View File

7
 use App\Utilities\Currency\CurrencyAccessor;
7
 use App\Utilities\Currency\CurrencyAccessor;
8
 use App\Utilities\Currency\CurrencyConverter;
8
 use App\Utilities\Currency\CurrencyConverter;
9
 use Illuminate\Database\Eloquent\Model;
9
 use Illuminate\Database\Eloquent\Model;
10
+use Illuminate\Support\Facades\DB;
10
 use Illuminate\Support\Number;
11
 use Illuminate\Support\Number;
11
 
12
 
12
 class InvoiceOverview extends EnhancedStatsOverviewWidget
13
 class InvoiceOverview extends EnhancedStatsOverviewWidget
43
             ? (int) round($totalValidInvoiceAmount / $totalValidInvoiceCount)
44
             ? (int) round($totalValidInvoiceAmount / $totalValidInvoiceCount)
44
             : 0;
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
             ->value('avg_days');
61
             ->value('avg_days');
50
 
62
 
51
         $averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);
63
         $averagePaymentTimeFormatted = Number::format($averagePaymentTime ?? 0, maxPrecision: 1);

Loading…
Cancel
Save