58 lines
1.6 KiB
PHP
58 lines
1.6 KiB
PHP
<?php
|
|
|
|
namespace Modules\FinancialManagement\Enums;
|
|
|
|
enum InvoiceStatus: string
|
|
{
|
|
case Draft = 'draft';
|
|
case Submitted = 'submitted';
|
|
case Approved = 'approved';
|
|
case Rejected = 'rejected';
|
|
case Sent = 'sent';
|
|
case PartiallyPaid = 'partially_paid';
|
|
case Paid = 'paid';
|
|
case Overdue = 'overdue';
|
|
|
|
public function label(): string
|
|
{
|
|
return match ($this) {
|
|
self::Draft => 'Draft',
|
|
self::Submitted => 'Submitted',
|
|
self::Approved => 'Approved',
|
|
self::Rejected => 'Rejected',
|
|
self::Sent => 'Sent',
|
|
self::PartiallyPaid => 'Partially Paid',
|
|
self::Paid => 'Paid',
|
|
self::Overdue => 'Overdue',
|
|
};
|
|
}
|
|
|
|
public function allowedTransitions(): array
|
|
{
|
|
return match ($this) {
|
|
self::Draft => [self::Submitted],
|
|
self::Submitted => [self::Approved, self::Rejected],
|
|
self::Approved => [self::Sent],
|
|
self::Rejected => [self::Draft],
|
|
self::Sent => [self::PartiallyPaid, self::Paid, self::Overdue],
|
|
self::PartiallyPaid => [self::Paid, self::Overdue],
|
|
self::Paid => [],
|
|
self::Overdue => [self::PartiallyPaid, self::Paid],
|
|
};
|
|
}
|
|
|
|
public function color(): string
|
|
{
|
|
return match ($this) {
|
|
self::Draft => 'gray',
|
|
self::Submitted => 'blue',
|
|
self::Approved => 'green',
|
|
self::Rejected => 'red',
|
|
self::Sent => 'indigo',
|
|
self::PartiallyPaid => 'amber',
|
|
self::Paid => 'emerald',
|
|
self::Overdue => 'red',
|
|
};
|
|
}
|
|
}
|