Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

CreateRecurringInvoice.php 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. <?php
  2. namespace App\Filament\Company\Resources\Sales\RecurringInvoiceResource\Pages;
  3. use App\Concerns\ManagesLineItems;
  4. use App\Filament\Company\Resources\Sales\RecurringInvoiceResource;
  5. use App\Models\Accounting\RecurringInvoice;
  6. use App\Models\Common\Client;
  7. use Filament\Resources\Pages\CreateRecord;
  8. use Filament\Support\Enums\MaxWidth;
  9. use Illuminate\Database\Eloquent\Model;
  10. use Livewire\Attributes\Url;
  11. class CreateRecurringInvoice extends CreateRecord
  12. {
  13. use ManagesLineItems;
  14. protected static string $resource = RecurringInvoiceResource::class;
  15. #[Url(as: 'client')]
  16. public ?int $clientId = null;
  17. public function mount(): void
  18. {
  19. parent::mount();
  20. if ($this->clientId) {
  21. $this->data['client_id'] = $this->clientId;
  22. if ($currencyCode = Client::find($this->clientId)?->currency_code) {
  23. $this->data['currency_code'] = $currencyCode;
  24. }
  25. }
  26. }
  27. public function getMaxContentWidth(): MaxWidth | string | null
  28. {
  29. return MaxWidth::Full;
  30. }
  31. protected function handleRecordCreation(array $data): Model
  32. {
  33. /** @var RecurringInvoice $record */
  34. $record = parent::handleRecordCreation($data);
  35. $this->handleLineItems($record, collect($data['lineItems'] ?? []));
  36. $totals = $this->updateDocumentTotals($record, $data);
  37. $record->updateQuietly($totals);
  38. return $record;
  39. }
  40. }