Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

EditBill.php 1.5KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. <?php
  2. namespace App\Filament\Company\Resources\Purchases\BillResource\Pages;
  3. use App\Concerns\ManagesLineItems;
  4. use App\Filament\Company\Resources\Purchases\BillResource;
  5. use App\Models\Accounting\Bill;
  6. use Filament\Actions;
  7. use Filament\Resources\Pages\EditRecord;
  8. use Filament\Support\Enums\MaxWidth;
  9. use Illuminate\Database\Eloquent\Model;
  10. class EditBill extends EditRecord
  11. {
  12. use ManagesLineItems;
  13. protected static string $resource = BillResource::class;
  14. protected function getHeaderActions(): array
  15. {
  16. return [
  17. Actions\DeleteAction::make(),
  18. ];
  19. }
  20. public function getMaxContentWidth(): MaxWidth | string | null
  21. {
  22. return MaxWidth::Full;
  23. }
  24. protected function getRedirectUrl(): string
  25. {
  26. return $this->getResource()::getUrl('view', ['record' => $this->record]);
  27. }
  28. protected function handleRecordUpdate(Model $record, array $data): Model
  29. {
  30. /** @var Bill $record */
  31. $lineItems = collect($data['lineItems'] ?? []);
  32. $this->deleteRemovedLineItems($record, $lineItems);
  33. $this->handleLineItems($record, $lineItems);
  34. $totals = $this->updateDocumentTotals($record, $data);
  35. $data = array_merge($data, $totals);
  36. $record = parent::handleRecordUpdate($record, $data);
  37. if (! $record->initialTransaction) {
  38. $record->createInitialTransaction();
  39. } else {
  40. $record->updateInitialTransaction();
  41. }
  42. return $record;
  43. }
  44. }