30 lines
787 B
PHP
30 lines
787 B
PHP
<?php
|
|
|
|
namespace Modules\Core\Shipping\Enums;
|
|
|
|
/**
|
|
* Normalized shipment status, mapped from each carrier's own status codes
|
|
* (e.g. ACS's shipment_status/non_delivery_reason_code, Box Now's parcel
|
|
* state) so the rest of the system never needs to know carrier-specific
|
|
* vocabulary.
|
|
*/
|
|
enum TrackingStatus: string
|
|
{
|
|
case Pending = 'pending';
|
|
case InTransit = 'in_transit';
|
|
case OutForDelivery = 'out_for_delivery';
|
|
case Delivered = 'delivered';
|
|
case Failed = 'failed';
|
|
case Returned = 'returned';
|
|
case Cancelled = 'cancelled';
|
|
case Unknown = 'unknown';
|
|
|
|
public function isTerminal(): bool
|
|
{
|
|
return match ($this) {
|
|
self::Delivered, self::Returned, self::Cancelled => true,
|
|
default => false,
|
|
};
|
|
}
|
|
}
|