You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

CreateInvoice.php 1.2KB

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