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.

PaymentTerms.php 1.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. <?php
  2. namespace App\Enums\Setting;
  3. use App\Enums\Concerns\ParsesEnum;
  4. use Filament\Support\Contracts\HasLabel;
  5. enum PaymentTerms: string implements HasLabel
  6. {
  7. use ParsesEnum;
  8. case DueUponReceipt = 'due_upon_receipt';
  9. case Net7 = 'net_7';
  10. case Net10 = 'net_10';
  11. case Net15 = 'net_15';
  12. case Net30 = 'net_30';
  13. case Net60 = 'net_60';
  14. case Net90 = 'net_90';
  15. public const DEFAULT = self::DueUponReceipt->value;
  16. public function getLabel(): ?string
  17. {
  18. $label = ucwords(str_replace('_', ' ', $this->value));
  19. return translate($label);
  20. }
  21. public function getDays(): int
  22. {
  23. return match ($this) {
  24. self::DueUponReceipt => 0,
  25. self::Net7 => 7,
  26. self::Net10 => 10,
  27. self::Net15 => 15,
  28. self::Net30 => 30,
  29. self::Net60 => 60,
  30. self::Net90 => 90,
  31. };
  32. }
  33. public function getDueDate(string $format): string
  34. {
  35. $days = $this->getDays() ?? 0;
  36. return company_today()->addDays($days)->translatedFormat($format);
  37. }
  38. }