Andrew Wallo 4 mesi fa
parent
commit
b2e392f3a5

+ 1
- 1
app/DTO/AccountTransactionDTO.php Vedi File

14
         public string $credit,
14
         public string $credit,
15
         public string $balance,
15
         public string $balance,
16
         public ?TransactionType $type,
16
         public ?TransactionType $type,
17
-        public ?array $tableAction,
17
+        public ?string $url = null,
18
     ) {}
18
     ) {}
19
 }
19
 }

+ 51
- 13
app/Filament/Company/Resources/Accounting/TransactionResource/Pages/ViewTransaction.php Vedi File

4
 
4
 
5
 use App\Filament\Actions\EditTransactionAction;
5
 use App\Filament\Actions\EditTransactionAction;
6
 use App\Filament\Company\Resources\Accounting\TransactionResource;
6
 use App\Filament\Company\Resources\Accounting\TransactionResource;
7
+use App\Filament\Company\Resources\Purchases\BillResource\Pages\ViewBill;
8
+use App\Filament\Company\Resources\Purchases\VendorResource;
9
+use App\Filament\Company\Resources\Sales\ClientResource;
10
+use App\Filament\Company\Resources\Sales\InvoiceResource\Pages\ViewInvoice;
11
+use App\Models\Accounting\Bill;
12
+use App\Models\Accounting\Invoice;
7
 use App\Models\Accounting\JournalEntry;
13
 use App\Models\Accounting\JournalEntry;
8
 use App\Models\Accounting\Transaction;
14
 use App\Models\Accounting\Transaction;
15
+use App\Models\Common\Client;
16
+use App\Models\Common\Vendor;
9
 use Filament\Actions;
17
 use Filament\Actions;
18
+use Filament\Infolists\Components\IconEntry;
10
 use Filament\Infolists\Components\Section;
19
 use Filament\Infolists\Components\Section;
11
 use Filament\Infolists\Components\TextEntry;
20
 use Filament\Infolists\Components\TextEntry;
12
 use Filament\Infolists\Infolist;
21
 use Filament\Infolists\Infolist;
13
 use Filament\Resources\Pages\ViewRecord;
22
 use Filament\Resources\Pages\ViewRecord;
14
 use Filament\Support\Enums\IconPosition;
23
 use Filament\Support\Enums\IconPosition;
15
 
24
 
25
+use function Filament\Support\get_model_label;
26
+
16
 class ViewTransaction extends ViewRecord
27
 class ViewTransaction extends ViewRecord
17
 {
28
 {
18
     protected static string $resource = TransactionResource::class;
29
     protected static string $resource = TransactionResource::class;
22
         return [
33
         return [
23
             EditTransactionAction::make()
34
             EditTransactionAction::make()
24
                 ->outlined(),
35
                 ->outlined(),
36
+            Actions\ViewAction::make('viewAssociatedDocument')
37
+                ->outlined()
38
+                ->icon('heroicon-o-document-text')
39
+                ->hidden(static fn (Transaction $record): bool => ! $record->transactionable_id)
40
+                ->label(static function (Transaction $record) {
41
+                    if (! $record->transactionable_type) {
42
+                        return 'View document';
43
+                    }
44
+
45
+                    return 'View ' . get_model_label($record->transactionable_type);
46
+                })
47
+                ->url(static function (Transaction $record) {
48
+                    return match ($record->transactionable_type) {
49
+                        Bill::class => ViewBill::getUrl(['record' => $record->transactionable_id]),
50
+                        Invoice::class => ViewInvoice::getUrl(['record' => $record->transactionable_id]),
51
+                        default => null,
52
+                    };
53
+                }),
25
             Actions\ActionGroup::make([
54
             Actions\ActionGroup::make([
26
                 Actions\ActionGroup::make([
55
                 Actions\ActionGroup::make([
27
                     Actions\Action::make('markAsReviewed')
56
                     Actions\Action::make('markAsReviewed')
69
                             ->date(),
98
                             ->date(),
70
                         TextEntry::make('type')
99
                         TextEntry::make('type')
71
                             ->badge(),
100
                             ->badge(),
72
-                        TextEntry::make('is_payment')
101
+                        IconEntry::make('is_payment')
73
                             ->label('Payment')
102
                             ->label('Payment')
74
-                            ->badge()
75
-                            ->formatStateUsing(fn (bool $state): string => $state ? 'Yes' : 'No')
76
-                            ->color(fn (bool $state): string => $state ? 'info' : 'gray')
77
-                            ->visible(fn (Transaction $record): bool => $record->isPayment()),
103
+                            ->boolean(),
78
                         TextEntry::make('description')
104
                         TextEntry::make('description')
79
                             ->label('Description'),
105
                             ->label('Description'),
80
                         TextEntry::make('bankAccount.account.name')
106
                         TextEntry::make('bankAccount.account.name')
81
-                            ->label('Bank Account')
82
-                            ->visible(fn (Transaction $record): bool => $record->bankAccount !== null),
107
+                            ->label('Account')
108
+                            ->hidden(static fn (Transaction $record): bool => ! $record->bankAccount),
83
                         TextEntry::make('payeeable.name')
109
                         TextEntry::make('payeeable.name')
84
                             ->label('Payee')
110
                             ->label('Payee')
85
-                            ->visible(fn (Transaction $record): bool => $record->payeeable !== null),
111
+                            ->hidden(static fn (Transaction $record): bool => ! $record->payeeable_type)
112
+                            ->url(static function (Transaction $record): ?string {
113
+                                if (! $record->payeeable_type) {
114
+                                    return null;
115
+                                }
116
+
117
+                                return match ($record->payeeable_type) {
118
+                                    Vendor::class => VendorResource::getUrl('view', ['record' => $record->payeeable_id]),
119
+                                    Client::class => ClientResource::getUrl('view', ['record' => $record->payeeable_id]),
120
+                                    default => null,
121
+                                };
122
+                            })
123
+                            ->link(),
86
                         TextEntry::make('account.name')
124
                         TextEntry::make('account.name')
87
                             ->label('Category')
125
                             ->label('Category')
88
-                            ->visible(fn (Transaction $record): bool => $record->account !== null),
126
+                            ->hidden(static fn (Transaction $record): bool => ! $record->account),
89
                         TextEntry::make('amount')
127
                         TextEntry::make('amount')
90
                             ->label('Amount')
128
                             ->label('Amount')
91
-                            ->currency(fn (Transaction $record) => $record->bankAccount?->account->currency_code ?? 'USD'),
129
+                            ->currency(static fn (Transaction $record) => $record->bankAccount?->account->currency_code ?? 'USD'),
92
                         TextEntry::make('reviewed')
130
                         TextEntry::make('reviewed')
93
                             ->label('Status')
131
                             ->label('Status')
94
                             ->badge()
132
                             ->badge()
95
-                            ->formatStateUsing(fn (bool $state): string => $state ? 'Reviewed' : 'Not Reviewed')
96
-                            ->color(fn (bool $state): string => $state ? 'success' : 'warning'),
133
+                            ->formatStateUsing(static fn (bool $state): string => $state ? 'Reviewed' : 'Not Reviewed')
134
+                            ->color(static fn (bool $state): string => $state ? 'success' : 'warning'),
97
                         TextEntry::make('notes')
135
                         TextEntry::make('notes')
98
                             ->label('Notes')
136
                             ->label('Notes')
99
                             ->columnSpan(2)
137
                             ->columnSpan(2)
100
-                            ->visible(fn (Transaction $record): bool => filled($record->notes)),
138
+                            ->visible(static fn (Transaction $record): bool => filled($record->notes)),
101
                     ]),
139
                     ]),
102
             ]);
140
             ]);
103
     }
141
     }

+ 2
- 4
app/Filament/Company/Resources/Purchases/BillResource/Pages/ViewBill.php Vedi File

10
 use Filament\Infolists\Components\TextEntry;
10
 use Filament\Infolists\Components\TextEntry;
11
 use Filament\Infolists\Infolist;
11
 use Filament\Infolists\Infolist;
12
 use Filament\Resources\Pages\ViewRecord;
12
 use Filament\Resources\Pages\ViewRecord;
13
-use Filament\Support\Enums\FontWeight;
14
 use Filament\Support\Enums\IconPosition;
13
 use Filament\Support\Enums\IconPosition;
15
 
14
 
16
 class ViewBill extends ViewRecord
15
 class ViewBill extends ViewRecord
55
                             ->badge(),
54
                             ->badge(),
56
                         TextEntry::make('vendor.name')
55
                         TextEntry::make('vendor.name')
57
                             ->label('Vendor')
56
                             ->label('Vendor')
58
-                            ->color('primary')
59
-                            ->weight(FontWeight::SemiBold)
60
-                            ->url(static fn (Bill $record) => VendorResource::getUrl('view', ['record' => $record->vendor_id])),
57
+                            ->url(static fn (Bill $record) => VendorResource::getUrl('view', ['record' => $record->vendor_id]))
58
+                            ->link(),
61
                         TextEntry::make('total')
59
                         TextEntry::make('total')
62
                             ->label('Total')
60
                             ->label('Total')
63
                             ->currency(fn (Bill $record) => $record->currency_code),
61
                             ->currency(fn (Bill $record) => $record->currency_code),

+ 2
- 1
app/Filament/Company/Resources/Purchases/VendorResource/Pages/ViewVendor.php Vedi File

77
                             ->label('Primary phone'),
77
                             ->label('Primary phone'),
78
                         TextEntry::make('website')
78
                         TextEntry::make('website')
79
                             ->label('Website')
79
                             ->label('Website')
80
-                            ->url(static fn ($state) => $state, true),
80
+                            ->url(static fn ($state) => $state, true)
81
+                            ->link(),
81
                     ]),
82
                     ]),
82
                 Section::make('Additional Details')
83
                 Section::make('Additional Details')
83
                     ->columns()
84
                     ->columns()

+ 2
- 1
app/Filament/Company/Resources/Sales/ClientResource/Pages/ViewClient.php Vedi File

90
                             ->label('Primary phone'),
90
                             ->label('Primary phone'),
91
                         TextEntry::make('website')
91
                         TextEntry::make('website')
92
                             ->label('Website')
92
                             ->label('Website')
93
-                            ->url(static fn ($state) => $state, true),
93
+                            ->url(static fn ($state) => $state, true)
94
+                            ->link(),
94
                     ]),
95
                     ]),
95
                 Section::make('Additional Details')
96
                 Section::make('Additional Details')
96
                     ->columns()
97
                     ->columns()

+ 2
- 4
app/Filament/Company/Resources/Sales/EstimateResource/Pages/ViewEstimate.php Vedi File

14
 use Filament\Infolists\Components\TextEntry;
14
 use Filament\Infolists\Components\TextEntry;
15
 use Filament\Infolists\Infolist;
15
 use Filament\Infolists\Infolist;
16
 use Filament\Resources\Pages\ViewRecord;
16
 use Filament\Resources\Pages\ViewRecord;
17
-use Filament\Support\Enums\FontWeight;
18
 use Filament\Support\Enums\IconPosition;
17
 use Filament\Support\Enums\IconPosition;
19
 use Illuminate\Support\HtmlString;
18
 use Illuminate\Support\HtmlString;
20
 
19
 
93
                                     ->badge(),
92
                                     ->badge(),
94
                                 TextEntry::make('client.name')
93
                                 TextEntry::make('client.name')
95
                                     ->label('Client')
94
                                     ->label('Client')
96
-                                    ->color('primary')
97
-                                    ->weight(FontWeight::SemiBold)
98
-                                    ->url(static fn (Estimate $record) => ClientResource::getUrl('view', ['record' => $record->client_id])),
95
+                                    ->url(static fn (Estimate $record) => ClientResource::getUrl('view', ['record' => $record->client_id]))
96
+                                    ->link(),
99
                                 TextEntry::make('expiration_date')
97
                                 TextEntry::make('expiration_date')
100
                                     ->label('Expiration date')
98
                                     ->label('Expiration date')
101
                                     ->asRelativeDay(),
99
                                     ->asRelativeDay(),

+ 2
- 4
app/Filament/Company/Resources/Sales/InvoiceResource/Pages/ViewInvoice.php Vedi File

14
 use Filament\Infolists\Components\TextEntry;
14
 use Filament\Infolists\Components\TextEntry;
15
 use Filament\Infolists\Infolist;
15
 use Filament\Infolists\Infolist;
16
 use Filament\Resources\Pages\ViewRecord;
16
 use Filament\Resources\Pages\ViewRecord;
17
-use Filament\Support\Enums\FontWeight;
18
 use Filament\Support\Enums\IconPosition;
17
 use Filament\Support\Enums\IconPosition;
19
 use Illuminate\Support\HtmlString;
18
 use Illuminate\Support\HtmlString;
20
 
19
 
90
                                     ->badge(),
89
                                     ->badge(),
91
                                 TextEntry::make('client.name')
90
                                 TextEntry::make('client.name')
92
                                     ->label('Client')
91
                                     ->label('Client')
93
-                                    ->color('primary')
94
-                                    ->weight(FontWeight::SemiBold)
95
-                                    ->url(static fn (Invoice $record) => ClientResource::getUrl('view', ['record' => $record->client_id])),
92
+                                    ->url(static fn (Invoice $record) => ClientResource::getUrl('view', ['record' => $record->client_id]))
93
+                                    ->link(),
96
                                 TextEntry::make('amount_due')
94
                                 TextEntry::make('amount_due')
97
                                     ->label('Amount due')
95
                                     ->label('Amount due')
98
                                     ->currency(static fn (Invoice $record) => $record->currency_code),
96
                                     ->currency(static fn (Invoice $record) => $record->currency_code),

+ 2
- 1
app/Filament/Company/Resources/Sales/RecurringInvoiceResource/Pages/ViewRecurringInvoice.php Vedi File

108
                                     ->label('Client')
108
                                     ->label('Client')
109
                                     ->color('primary')
109
                                     ->color('primary')
110
                                     ->weight(FontWeight::SemiBold)
110
                                     ->weight(FontWeight::SemiBold)
111
-                                    ->url(static fn (RecurringInvoice $record) => ClientResource::getUrl('view', ['record' => $record->client_id])),
111
+                                    ->url(static fn (RecurringInvoice $record) => ClientResource::getUrl('view', ['record' => $record->client_id]))
112
+                                    ->link(),
112
                                 TextEntry::make('last_date')
113
                                 TextEntry::make('last_date')
113
                                     ->label('Last invoice')
114
                                     ->label('Last invoice')
114
                                     ->date()
115
                                     ->date()

+ 15
- 0
app/Models/Accounting/Transaction.php Vedi File

9
 use App\Enums\Accounting\AccountType;
9
 use App\Enums\Accounting\AccountType;
10
 use App\Enums\Accounting\PaymentMethod;
10
 use App\Enums\Accounting\PaymentMethod;
11
 use App\Enums\Accounting\TransactionType;
11
 use App\Enums\Accounting\TransactionType;
12
+use App\Filament\Company\Resources\Accounting\TransactionResource\Pages\ViewTransaction;
13
+use App\Filament\Company\Resources\Purchases\BillResource\Pages\ViewBill;
14
+use App\Filament\Company\Resources\Sales\InvoiceResource\Pages\ViewInvoice;
12
 use App\Models\Banking\BankAccount;
15
 use App\Models\Banking\BankAccount;
13
 use App\Models\Common\Client;
16
 use App\Models\Common\Client;
14
 use App\Models\Common\Contact;
17
 use App\Models\Common\Contact;
246
         ];
249
         ];
247
     }
250
     }
248
 
251
 
252
+    public function getReportTableUrl(): string
253
+    {
254
+        if ($this->transactionable_type && ! $this->is_payment) {
255
+            return match ($this->transactionable_type) {
256
+                Bill::class => ViewBill::getUrl(['record' => $this->transactionable_id]),
257
+                default => ViewInvoice::getUrl(['record' => $this->transactionable_id]),
258
+            };
259
+        }
260
+
261
+        return ViewTransaction::getUrl(['record' => $this->id]);
262
+    }
263
+
249
     protected static function newFactory(): Factory
264
     protected static function newFactory(): Factory
250
     {
265
     {
251
         return TransactionFactory::new();
266
         return TransactionFactory::new();

+ 14
- 0
app/Providers/MacroServiceProvider.php Vedi File

19
 use Filament\Forms\Components\Field;
19
 use Filament\Forms\Components\Field;
20
 use Filament\Forms\Components\TextInput;
20
 use Filament\Forms\Components\TextInput;
21
 use Filament\Infolists\Components\TextEntry;
21
 use Filament\Infolists\Components\TextEntry;
22
+use Filament\Support\Enums\IconPosition;
22
 use Filament\Tables\Columns\TextColumn;
23
 use Filament\Tables\Columns\TextColumn;
23
 use Filament\Tables\Contracts\HasTable;
24
 use Filament\Tables\Contracts\HasTable;
24
 use Illuminate\Contracts\Support\Htmlable;
25
 use Illuminate\Contracts\Support\Htmlable;
375
             return $this;
376
             return $this;
376
         });
377
         });
377
 
378
 
379
+        TextEntry::macro('link', function (bool $condition = true): static {
380
+            if ($condition) {
381
+                $this
382
+                    ->limit(50)
383
+                    ->openUrlInNewTab()
384
+                    ->icon('heroicon-o-arrow-top-right-on-square')
385
+                    ->iconColor('primary')
386
+                    ->iconPosition(IconPosition::After);
387
+            }
388
+
389
+            return $this;
390
+        });
391
+
378
         Money::macro('swapAmountFor', function ($newCurrency) {
392
         Money::macro('swapAmountFor', function ($newCurrency) {
379
             $oldCurrency = $this->currency->getCurrency();
393
             $oldCurrency = $this->currency->getCurrency();
380
             $balanceInSubunits = $this->getAmount();
394
             $balanceInSubunits = $this->getAmount();

+ 1
- 35
app/Services/ReportService.php Vedi File

20
 use App\Enums\Accounting\BillStatus;
20
 use App\Enums\Accounting\BillStatus;
21
 use App\Enums\Accounting\DocumentEntityType;
21
 use App\Enums\Accounting\DocumentEntityType;
22
 use App\Enums\Accounting\InvoiceStatus;
22
 use App\Enums\Accounting\InvoiceStatus;
23
-use App\Enums\Accounting\TransactionType;
24
-use App\Filament\Company\Resources\Accounting\TransactionResource\Pages\ViewTransaction;
25
 use App\Models\Accounting\Account;
23
 use App\Models\Accounting\Account;
26
 use App\Models\Accounting\Bill;
24
 use App\Models\Accounting\Bill;
27
 use App\Models\Accounting\Invoice;
25
 use App\Models\Accounting\Invoice;
28
-use App\Models\Accounting\Transaction;
29
 use App\Support\Column;
26
 use App\Support\Column;
30
 use App\Utilities\Currency\CurrencyAccessor;
27
 use App\Utilities\Currency\CurrencyAccessor;
31
 use App\Utilities\Currency\CurrencyConverter;
28
 use App\Utilities\Currency\CurrencyConverter;
207
                 credit: '',
204
                 credit: '',
208
                 balance: money($currentBalance, $defaultCurrency)->format(),
205
                 balance: money($currentBalance, $defaultCurrency)->format(),
209
                 type: null,
206
                 type: null,
210
-                tableAction: null
211
             );
207
             );
212
 
208
 
213
             foreach ($account->journalEntries as $journalEntry) {
209
             foreach ($account->journalEntries as $journalEntry) {
237
                     credit: $journalEntry->type->isCredit() ? $formattedAmount : '',
233
                     credit: $journalEntry->type->isCredit() ? $formattedAmount : '',
238
                     balance: money($currentBalance, $defaultCurrency)->format(),
234
                     balance: money($currentBalance, $defaultCurrency)->format(),
239
                     type: $transaction->type,
235
                     type: $transaction->type,
240
-                    tableAction: $this->determineTableAction($transaction),
236
+                    url: $transaction->getReportTableUrl(),
241
                 );
237
                 );
242
             }
238
             }
243
 
239
 
251
                 credit: money($periodCreditTotal, $defaultCurrency)->format(),
247
                 credit: money($periodCreditTotal, $defaultCurrency)->format(),
252
                 balance: money($currentBalance, $defaultCurrency)->format(),
248
                 balance: money($currentBalance, $defaultCurrency)->format(),
253
                 type: null,
249
                 type: null,
254
-                tableAction: null
255
             );
250
             );
256
 
251
 
257
             $accountTransactions[] = new AccountTransactionDTO(
252
             $accountTransactions[] = new AccountTransactionDTO(
262
                 credit: '',
257
                 credit: '',
263
                 balance: money($balanceChange, $defaultCurrency)->format(),
258
                 balance: money($balanceChange, $defaultCurrency)->format(),
264
                 type: null,
259
                 type: null,
265
-                tableAction: null
266
             );
260
             );
267
 
261
 
268
             $reportCategories[] = [
262
             $reportCategories[] = [
275
         return new ReportDTO(categories: $reportCategories, fields: $columns);
269
         return new ReportDTO(categories: $reportCategories, fields: $columns);
276
     }
270
     }
277
 
271
 
278
-    // TODO: Refactor and potentially only use the url
279
-    private function determineTableAction(Transaction $transaction): array
280
-    {
281
-        if ($transaction->transactionable_type === null) {
282
-            return [
283
-                'type' => 'transaction',
284
-                'action' => match ($transaction->type) {
285
-                    TransactionType::Journal => 'editJournalEntry',
286
-                    TransactionType::Transfer => 'editTransfer',
287
-                    default => 'editTransaction',
288
-                },
289
-                'id' => $transaction->id,
290
-            ];
291
-        } elseif ($transaction->is_payment) {
292
-            return [
293
-                'type' => 'view_transaction',
294
-                'url' => ViewTransaction::getUrl(['record' => $transaction->id]),
295
-                'id' => $transaction->id,
296
-            ];
297
-        } else {
298
-            return [
299
-                'type' => 'transactionable',
300
-                'model' => $transaction->transactionable_type,
301
-                'id' => $transaction->transactionable_id,
302
-            ];
303
-        }
304
-    }
305
-
306
     public function buildTrialBalanceReport(string $trialBalanceType, string $asOfDate, array $columns = []): ReportDTO
272
     public function buildTrialBalanceReport(string $trialBalanceType, string $asOfDate, array $columns = []): ReportDTO
307
     {
273
     {
308
         $asOfDateCarbon = Carbon::parse($asOfDate);
274
         $asOfDateCarbon = Carbon::parse($asOfDate);

+ 1
- 1
app/Transformers/AccountTransactionReportTransformer.php Vedi File

44
                         'description' => [
44
                         'description' => [
45
                             'id' => $transaction->id,
45
                             'id' => $transaction->id,
46
                             'description' => $transaction->description,
46
                             'description' => $transaction->description,
47
-                            'tableAction' => $transaction->tableAction,
47
+                            'url' => $transaction->url,
48
                         ],
48
                         ],
49
                         'debit' => $transaction->debit,
49
                         'debit' => $transaction->debit,
50
                         'credit' => $transaction->credit,
50
                         'credit' => $transaction->credit,

+ 4
- 0
resources/css/filament/company/theme.css Vedi File

10
 
10
 
11
 @config 'tailwind.config.js';
11
 @config 'tailwind.config.js';
12
 
12
 
13
+.fi-in-text-item .group-hover\/item\:underline, .fi-ta-text-item .group-hover\/item\:underline {
14
+    @apply text-primary-600 dark:text-primary-400 font-semibold;
15
+}
16
+
13
 .fi-sidebar-nav {
17
 .fi-sidebar-nav {
14
     scrollbar-width: thin;
18
     scrollbar-width: thin;
15
 }
19
 }

+ 11
- 40
resources/views/components/company/tables/reports/account-transactions.blade.php Vedi File

49
                             ])
49
                             ])
50
                         >
50
                         >
51
                             @if(is_array($cell) && isset($cell['description']))
51
                             @if(is_array($cell) && isset($cell['description']))
52
-                                @if(isset($cell['id']) && $cell['tableAction'])
53
-                                    @if($cell['tableAction']['type'] === 'transaction')
54
-                                        <x-filament::link
55
-                                            :href="TransactionResource::getUrl(parameters: [
56
-                                                'tableAction' => $cell['tableAction']['action'],
57
-                                                'tableActionRecord' => $cell['tableAction']['id'],
58
-                                            ])"
59
-                                            target="_blank"
60
-                                            color="primary"
61
-                                            icon="heroicon-o-arrow-top-right-on-square"
62
-                                            :icon-position="$iconPosition"
63
-                                            icon-size="w-4 h-4 min-w-4 min-h-4"
64
-                                        >
65
-                                            {{ $cell['description'] }}
66
-                                        </x-filament::link>
67
-                                    @elseif($cell['tableAction']['type'] === 'view_transaction')
68
-                                        <x-filament::link
69
-                                            :href="$cell['tableAction']['url']"
70
-                                            target="_blank"
71
-                                            color="primary"
72
-                                            icon="heroicon-o-arrow-top-right-on-square"
73
-                                            :icon-position="$iconPosition"
74
-                                            icon-size="w-4 h-4 min-w-4 min-h-4"
75
-                                        >
76
-                                            {{ $cell['description'] }}
77
-                                        </x-filament::link>
78
-                                    @else
79
-                                        <x-filament::link
80
-                                            :href="$cell['tableAction']['model'] === Bill::class
81
-                                                ? ViewBill::getUrl(['record' => $cell['tableAction']['id']])
82
-                                                : ViewInvoice::getUrl(['record' => $cell['tableAction']['id']])"
83
-                                            target="_blank"
84
-                                            color="primary"
85
-                                            icon="heroicon-o-arrow-top-right-on-square"
86
-                                            :icon-position="$iconPosition"
87
-                                            icon-size="w-4 h-4 min-w-4 min-h-4"
88
-                                        >
89
-                                            {{ $cell['description'] }}
90
-                                        </x-filament::link>
91
-                                    @endif
52
+                                @if(isset($cell['id']) && isset($cell['url']))
53
+                                    <x-filament::link
54
+                                        :href="$cell['url']"
55
+                                        target="_blank"
56
+                                        color="primary"
57
+                                        icon="heroicon-o-arrow-top-right-on-square"
58
+                                        :icon-position="$iconPosition"
59
+                                        icon-size="w-4 h-4 min-w-4 min-h-4"
60
+                                    >
61
+                                        {{ $cell['description'] }}
62
+                                    </x-filament::link>
92
                                 @else
63
                                 @else
93
                                     {{ $cell['description'] }}
64
                                     {{ $cell['description'] }}
94
                                 @endif
65
                                 @endif

Loading…
Annulla
Salva