您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

ViewInvoice.php 3.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. <?php
  2. namespace App\Filament\Company\Resources\Sales\InvoiceResource\Pages;
  3. use App\Filament\Company\Resources\Sales\ClientResource;
  4. use App\Filament\Company\Resources\Sales\InvoiceResource;
  5. use App\Models\Accounting\Invoice;
  6. use Carbon\CarbonInterface;
  7. use Filament\Infolists\Components\Section;
  8. use Filament\Infolists\Components\TextEntry;
  9. use Filament\Infolists\Infolist;
  10. use Filament\Resources\Pages\ViewRecord;
  11. use Filament\Support\Enums\FontWeight;
  12. use Illuminate\Support\Carbon;
  13. class ViewInvoice extends ViewRecord
  14. {
  15. protected static string $resource = InvoiceResource::class;
  16. protected $listeners = [
  17. 'refresh' => '$refresh',
  18. ];
  19. public function infolist(Infolist $infolist): Infolist
  20. {
  21. return $infolist
  22. ->schema([
  23. Section::make('Invoice Details')
  24. ->columns(4)
  25. ->schema([
  26. TextEntry::make('invoice_number')
  27. ->label('Invoice #'),
  28. TextEntry::make('status')
  29. ->badge(),
  30. TextEntry::make('client.name')
  31. ->label('Client')
  32. ->color('primary')
  33. ->weight(FontWeight::SemiBold)
  34. ->url(fn (Invoice $record) => ClientResource::getUrl('edit', ['record' => $record->client_id])),
  35. TextEntry::make('total')
  36. ->label('Total')
  37. ->money(),
  38. TextEntry::make('amount_due')
  39. ->label('Amount Due')
  40. ->money(),
  41. TextEntry::make('date')
  42. ->label('Date')
  43. ->date(),
  44. TextEntry::make('due_date')
  45. ->label('Due')
  46. ->formatStateUsing(function (TextEntry $entry, mixed $state) {
  47. if (blank($state)) {
  48. return null;
  49. }
  50. $date = Carbon::parse($state)
  51. ->setTimezone($timezone ?? $entry->getTimezone());
  52. if ($date->isToday()) {
  53. return 'Today';
  54. }
  55. return $date->diffForHumans([
  56. 'options' => CarbonInterface::ONE_DAY_WORDS,
  57. ]);
  58. }),
  59. TextEntry::make('approved_at')
  60. ->label('Approved At')
  61. ->placeholder('Not Approved')
  62. ->date(),
  63. TextEntry::make('last_sent')
  64. ->label('Last Sent')
  65. ->placeholder('Never')
  66. ->date(),
  67. TextEntry::make('paid_at')
  68. ->label('Paid At')
  69. ->placeholder('Not Paid')
  70. ->date(),
  71. ]),
  72. ]);
  73. }
  74. }