Andrew Wallo 4 месяцев назад
Родитель
Сommit
2871be8acb

+ 5
- 6
app/Filament/Exports/Accounting/BillExporter.php Просмотреть файл

@@ -2,7 +2,6 @@
2 2
 
3 3
 namespace App\Filament\Exports\Accounting;
4 4
 
5
-use App\Enums\Accounting\BillStatus;
6 5
 use App\Models\Accounting\Bill;
7 6
 use Filament\Actions\Exports\ExportColumn;
8 7
 use Filament\Actions\Exports\Exporter;
@@ -22,9 +21,7 @@ class BillExporter extends Exporter
22 21
                 ->date(),
23 22
             ExportColumn::make('vendor.name'),
24 23
             ExportColumn::make('status')
25
-                ->formatStateUsing(function (?BillStatus $state) {
26
-                    return $state?->getLabel();
27
-                }),
24
+                ->enum(),
28 25
             ExportColumn::make('total')
29 26
                 ->money(),
30 27
             ExportColumn::make('amount_paid')
@@ -45,9 +42,11 @@ class BillExporter extends Exporter
45 42
             ExportColumn::make('notes')
46 43
                 ->enabledByDefault(false),
47 44
             ExportColumn::make('discount_method')
48
-                ->enabledByDefault(false),
45
+                ->enabledByDefault(false)
46
+                ->enum(),
49 47
             ExportColumn::make('discount_computation')
50
-                ->enabledByDefault(false),
48
+                ->enabledByDefault(false)
49
+                ->enum(),
51 50
         ];
52 51
     }
53 52
 

+ 5
- 6
app/Filament/Exports/Accounting/EstimateExporter.php Просмотреть файл

@@ -2,7 +2,6 @@
2 2
 
3 3
 namespace App\Filament\Exports\Accounting;
4 4
 
5
-use App\Enums\Accounting\EstimateStatus;
6 5
 use App\Models\Accounting\Estimate;
7 6
 use Filament\Actions\Exports\ExportColumn;
8 7
 use Filament\Actions\Exports\Exporter;
@@ -22,9 +21,7 @@ class EstimateExporter extends Exporter
22 21
                 ->date(),
23 22
             ExportColumn::make('client.name'),
24 23
             ExportColumn::make('status')
25
-                ->formatStateUsing(function (?EstimateStatus $state) {
26
-                    return $state?->getLabel();
27
-                }),
24
+                ->enum(),
28 25
             ExportColumn::make('total')
29 26
                 ->money(),
30 27
             ExportColumn::make('subtotal')
@@ -47,9 +44,11 @@ class EstimateExporter extends Exporter
47 44
             ExportColumn::make('last_sent_at')
48 45
                 ->dateTime(),
49 46
             ExportColumn::make('discount_method')
50
-                ->enabledByDefault(false),
47
+                ->enabledByDefault(false)
48
+                ->enum(),
51 49
             ExportColumn::make('discount_computation')
52
-                ->enabledByDefault(false),
50
+                ->enabledByDefault(false)
51
+                ->enum(),
53 52
         ];
54 53
     }
55 54
 

+ 6
- 5
app/Filament/Exports/Accounting/InvoiceExporter.php Просмотреть файл

@@ -2,7 +2,6 @@
2 2
 
3 3
 namespace App\Filament\Exports\Accounting;
4 4
 
5
-use App\Enums\Accounting\InvoiceStatus;
6 5
 use App\Models\Accounting\Invoice;
7 6
 use Filament\Actions\Exports\ExportColumn;
8 7
 use Filament\Actions\Exports\Exporter;
@@ -22,9 +21,7 @@ class InvoiceExporter extends Exporter
22 21
                 ->date(),
23 22
             ExportColumn::make('client.name'),
24 23
             ExportColumn::make('status')
25
-                ->formatStateUsing(function (?InvoiceStatus $state) {
26
-                    return $state?->getLabel();
27
-                }),
24
+                ->enum(),
28 25
             ExportColumn::make('total')
29 26
                 ->money(),
30 27
             ExportColumn::make('amount_paid')
@@ -53,7 +50,11 @@ class InvoiceExporter extends Exporter
53 50
                 ->label('Recurring invoice number')
54 51
                 ->enabledByDefault(false),
55 52
             ExportColumn::make('discount_method')
56
-                ->enabledByDefault(false),
53
+                ->enabledByDefault(false)
54
+                ->enum(),
55
+            ExportColumn::make('discount_computation')
56
+                ->enabledByDefault(false)
57
+                ->enum(),
57 58
         ];
58 59
     }
59 60
 

+ 99
- 0
app/Filament/Exports/Accounting/RecurringInvoiceExporter.php Просмотреть файл

@@ -0,0 +1,99 @@
1
+<?php
2
+
3
+namespace App\Filament\Exports\Accounting;
4
+
5
+use App\Models\Accounting\RecurringInvoice;
6
+use Carbon\Carbon;
7
+use Filament\Actions\Exports\ExportColumn;
8
+use Filament\Actions\Exports\Exporter;
9
+use Filament\Actions\Exports\Models\Export;
10
+
11
+class RecurringInvoiceExporter extends Exporter
12
+{
13
+    protected static ?string $model = RecurringInvoice::class;
14
+
15
+    public static function getColumns(): array
16
+    {
17
+        return [
18
+            ExportColumn::make('order_number'),
19
+            ExportColumn::make('client.name'),
20
+            ExportColumn::make('status')
21
+                ->enum(),
22
+            ExportColumn::make('schedule')
23
+                ->formatStateUsing(function ($state, RecurringInvoice $record) {
24
+                    return $record->getScheduleDescription();
25
+                }),
26
+            ExportColumn::make('timeline')
27
+                ->formatStateUsing(function ($state, RecurringInvoice $record) {
28
+                    return $record->getTimelineDescription();
29
+                }),
30
+            ExportColumn::make('total')
31
+                ->money(),
32
+            ExportColumn::make('subtotal')
33
+                ->money(),
34
+            ExportColumn::make('tax_total')
35
+                ->money(),
36
+            ExportColumn::make('discount_total')
37
+                ->money(),
38
+            ExportColumn::make('discount_rate'),
39
+            ExportColumn::make('currency_code'),
40
+            ExportColumn::make('payment_terms')
41
+                ->enum(),
42
+            ExportColumn::make('start_date')
43
+                ->date(),
44
+            ExportColumn::make('end_date')
45
+                ->date(),
46
+            ExportColumn::make('next_date')
47
+                ->date(),
48
+            ExportColumn::make('last_date')
49
+                ->date(),
50
+            ExportColumn::make('approved_at')
51
+                ->dateTime(),
52
+            ExportColumn::make('ended_at')
53
+                ->dateTime(),
54
+            ExportColumn::make('occurrences_count'),
55
+            ExportColumn::make('max_occurrences'),
56
+            ExportColumn::make('send_time')
57
+                ->formatStateUsing(function (?Carbon $state) {
58
+                    return $state?->format('H:i');
59
+                }),
60
+            ExportColumn::make('frequency')
61
+                ->enabledByDefault(false)
62
+                ->enum(),
63
+            ExportColumn::make('interval_type')
64
+                ->enabledByDefault(false)
65
+                ->enum(),
66
+            ExportColumn::make('interval_value')
67
+                ->enabledByDefault(false),
68
+            ExportColumn::make('month')
69
+                ->enabledByDefault(false)
70
+                ->enum(),
71
+            ExportColumn::make('day_of_month')
72
+                ->enabledByDefault(false)
73
+                ->enum(),
74
+            ExportColumn::make('day_of_week')
75
+                ->enabledByDefault(false)
76
+                ->enum(),
77
+            ExportColumn::make('end_type')
78
+                ->enabledByDefault(false)
79
+                ->enum(),
80
+            ExportColumn::make('discount_method')
81
+                ->enabledByDefault(false)
82
+                ->enum(),
83
+            ExportColumn::make('discount_computation')
84
+                ->enabledByDefault(false)
85
+                ->enum(),
86
+        ];
87
+    }
88
+
89
+    public static function getCompletedNotificationBody(Export $export): string
90
+    {
91
+        $body = 'Your recurring invoice export has completed and ' . number_format($export->successful_rows) . ' ' . str('row')->plural($export->successful_rows) . ' exported.';
92
+
93
+        if ($failedRowsCount = $export->getFailedRowsCount()) {
94
+            $body .= ' ' . number_format($failedRowsCount) . ' ' . str('row')->plural($failedRowsCount) . ' failed to export.';
95
+        }
96
+
97
+        return $body;
98
+    }
99
+}

+ 2
- 8
app/Filament/Exports/Accounting/TransactionExporter.php Просмотреть файл

@@ -2,8 +2,6 @@
2 2
 
3 3
 namespace App\Filament\Exports\Accounting;
4 4
 
5
-use App\Enums\Accounting\PaymentMethod;
6
-use App\Enums\Accounting\TransactionType;
7 5
 use App\Models\Accounting\Transaction;
8 6
 use Filament\Actions\Exports\ExportColumn;
9 7
 use Filament\Actions\Exports\Exporter;
@@ -26,15 +24,11 @@ class TransactionExporter extends Exporter
26 24
             ExportColumn::make('bankAccount.account.name')
27 25
                 ->label('Account'),
28 26
             ExportColumn::make('type')
29
-                ->formatStateUsing(function (?TransactionType $state) {
30
-                    return $state?->getLabel();
31
-                }),
27
+                ->enum(),
32 28
             ExportColumn::make('payeeable.name')
33 29
                 ->label('Payee'),
34 30
             ExportColumn::make('payment_method')
35
-                ->formatStateUsing(function (?PaymentMethod $state) {
36
-                    return $state?->getLabel();
37
-                }),
31
+                ->enum(),
38 32
             ExportColumn::make('notes')
39 33
                 ->enabledByDefault(false),
40 34
             ExportColumn::make('transactionable_type')

+ 21
- 0
app/Providers/MacroServiceProvider.php Просмотреть файл

@@ -20,6 +20,7 @@ use Filament\Forms\Components\DatePicker;
20 20
 use Filament\Forms\Components\Field;
21 21
 use Filament\Forms\Components\TextInput;
22 22
 use Filament\Infolists\Components\TextEntry;
23
+use Filament\Support\Contracts\HasLabel;
23 24
 use Filament\Support\Enums\IconPosition;
24 25
 use Filament\Support\RawJs;
25 26
 use Filament\Tables\Columns\TextColumn;
@@ -504,5 +505,25 @@ class MacroServiceProvider extends ServiceProvider
504 505
 
505 506
             return $this;
506 507
         });
508
+
509
+        ExportColumn::macro('enum', function () {
510
+            $this->formatStateUsing(static function ($state) {
511
+                if (blank($state)) {
512
+                    return null;
513
+                }
514
+
515
+                if (! ($state instanceof BackedEnum)) {
516
+                    return $state;
517
+                }
518
+
519
+                if ($state instanceof HasLabel) {
520
+                    return $state->getLabel();
521
+                }
522
+
523
+                return $state->value;
524
+            });
525
+
526
+            return $this;
527
+        });
507 528
     }
508 529
 }

Загрузка…
Отмена
Сохранить