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.

DocumentStatus.php 1.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. <?php
  2. namespace App\Enums\Accounting;
  3. use Filament\Support\Contracts\HasColor;
  4. use Filament\Support\Contracts\HasLabel;
  5. enum DocumentStatus: string implements HasColor, HasLabel
  6. {
  7. case Draft = 'draft';
  8. case Sent = 'sent';
  9. case Partial = 'partial';
  10. case Paid = 'paid';
  11. case Overdue = 'overdue';
  12. case Void = 'void';
  13. case Unpaid = 'unpaid';
  14. public function getInvoiceStatuses(): array
  15. {
  16. return [
  17. self::Draft,
  18. self::Sent,
  19. self::Partial,
  20. self::Paid,
  21. self::Overdue,
  22. self::Void,
  23. ];
  24. }
  25. public function getBillStatuses(): array
  26. {
  27. return [
  28. self::Partial,
  29. self::Paid,
  30. self::Unpaid,
  31. self::Void,
  32. ];
  33. }
  34. public function getLabel(): ?string
  35. {
  36. return $this->name;
  37. }
  38. public function getColor(): string | array | null
  39. {
  40. return match ($this) {
  41. self::Draft, self::Void => 'gray',
  42. self::Sent => 'primary',
  43. self::Partial, self::Unpaid => 'warning',
  44. self::Paid => 'success',
  45. self::Overdue => 'danger',
  46. };
  47. }
  48. }