|
@@ -35,6 +35,7 @@ use Filament\Forms\Components\TextInput;
|
35
|
35
|
use Filament\Forms\Form;
|
36
|
36
|
use Filament\Forms\Get;
|
37
|
37
|
use Filament\Forms\Set;
|
|
38
|
+use Filament\Notifications\Notification;
|
38
|
39
|
use Filament\Pages\Page;
|
39
|
40
|
use Filament\Support\Colors\Color;
|
40
|
41
|
use Filament\Support\Enums\FontWeight;
|
|
@@ -372,7 +373,7 @@ class Transactions extends Page implements HasTable
|
372
|
373
|
->modalHeading('Edit Transaction')
|
373
|
374
|
->modalWidth(MaxWidth::ThreeExtraLarge)
|
374
|
375
|
->form(fn (Form $form) => $this->transactionForm($form))
|
375
|
|
- ->visible(static fn (Transaction $transaction) => $transaction->type->isStandard()),
|
|
376
|
+ ->visible(static fn (Transaction $transaction) => $transaction->type->isStandard() && ! $transaction->transactionable_id),
|
376
|
377
|
Tables\Actions\EditAction::make('editTransfer')
|
377
|
378
|
->label('Edit transfer')
|
378
|
379
|
->modalHeading('Edit Transfer')
|
|
@@ -396,13 +397,14 @@ class Transactions extends Page implements HasTable
|
396
|
397
|
})
|
397
|
398
|
->modalSubmitAction(fn (Actions\StaticAction $action) => $action->disabled(! $this->isJournalEntryBalanced()))
|
398
|
399
|
->after(fn (Transaction $transaction) => $transaction->updateAmountIfBalanced())
|
399
|
|
- ->visible(static fn (Transaction $transaction) => $transaction->type->isJournal()),
|
|
400
|
+ ->visible(static fn (Transaction $transaction) => $transaction->type->isJournal() && ! $transaction->transactionable_id),
|
400
|
401
|
Tables\Actions\ReplicateAction::make()
|
401
|
402
|
->excludeAttributes(['created_by', 'updated_by', 'created_at', 'updated_at'])
|
402
|
403
|
->modal(false)
|
403
|
404
|
->beforeReplicaSaved(static function (Transaction $replica) {
|
404
|
405
|
$replica->description = '(Copy of) ' . $replica->description;
|
405
|
406
|
})
|
|
407
|
+ ->hidden(static fn (Transaction $transaction) => $transaction->transactionable_id)
|
406
|
408
|
->after(static function (Transaction $original, Transaction $replica) {
|
407
|
409
|
$original->journalEntries->each(function (JournalEntry $entry) use ($replica) {
|
408
|
410
|
$entry->replicate([
|
|
@@ -430,6 +432,20 @@ class Transactions extends Page implements HasTable
|
430
|
432
|
->beforeReplicaSaved(static function (Transaction $replica) {
|
431
|
433
|
$replica->description = '(Copy of) ' . $replica->description;
|
432
|
434
|
})
|
|
435
|
+ ->before(function (\Illuminate\Database\Eloquent\Collection $records, ReplicateBulkAction $action) {
|
|
436
|
+ $isInvalid = $records->contains(fn (Transaction $record) => $record->transactionable_id);
|
|
437
|
+
|
|
438
|
+ if ($isInvalid) {
|
|
439
|
+ Notification::make()
|
|
440
|
+ ->title('Cannot replicate transactions')
|
|
441
|
+ ->body('You cannot replicate transactions associated with bills or invoices')
|
|
442
|
+ ->persistent()
|
|
443
|
+ ->danger()
|
|
444
|
+ ->send();
|
|
445
|
+
|
|
446
|
+ $action->cancel(true);
|
|
447
|
+ }
|
|
448
|
+ })
|
433
|
449
|
->withReplicatedRelationships(['journalEntries']),
|
434
|
450
|
]),
|
435
|
451
|
]);
|