Andrew Wallo 5 달 전
부모
커밋
795b468aba
1개의 변경된 파일18개의 추가작업 그리고 2개의 파일을 삭제
  1. 18
    2
      app/Filament/Company/Pages/Accounting/Transactions.php

+ 18
- 2
app/Filament/Company/Pages/Accounting/Transactions.php 파일 보기

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

Loading…
취소
저장