feat: add picked_up normalized delivery status (odebrana przez kuriera)

This commit is contained in:
2026-04-26 21:52:58 +02:00
parent ca7540d374
commit 69f180a185
5 changed files with 27 additions and 15 deletions

File diff suppressed because one or more lines are too long

View File

@@ -9,6 +9,7 @@
&--unknown { background: #f5f5f5; color: #999; } &--unknown { background: #f5f5f5; color: #999; }
&--created { background: #e3f2fd; color: #1565c0; } &--created { background: #e3f2fd; color: #1565c0; }
&--confirmed { background: #bbdefb; color: #0d47a1; } &--confirmed { background: #bbdefb; color: #0d47a1; }
&--picked_up { background: #e1f5fe; color: #01579b; }
&--in_transit { background: #fff3e0; color: #e65100; } &--in_transit { background: #fff3e0; color: #e65100; }
&--out_for_delivery { background: #ffe0b2; color: #bf360c; } &--out_for_delivery { background: #ffe0b2; color: #bf360c; }
&--ready_for_pickup { background: #f3e5f5; color: #6a1b9a; } &--ready_for_pickup { background: #f3e5f5; color: #6a1b9a; }

View File

@@ -35,6 +35,7 @@ final class AutomationController
]; ];
private const SHIPMENT_STATUS_OPTIONS = [ private const SHIPMENT_STATUS_OPTIONS = [
'registered' => ['label' => 'Przesylka zarejestrowana', 'statuses' => ['created', 'confirmed']], 'registered' => ['label' => 'Przesylka zarejestrowana', 'statuses' => ['created', 'confirmed']],
'courier_pickup' => ['label' => 'Odebrana przez kuriera / nadana w paczkomacie', 'statuses' => ['picked_up']],
'ready_for_pickup' => ['label' => 'Przesylka do odbioru', 'statuses' => ['ready_for_pickup']], 'ready_for_pickup' => ['label' => 'Przesylka do odbioru', 'statuses' => ['ready_for_pickup']],
'dropped_at_point' => ['label' => 'Przesylka nadana w punkcie', 'statuses' => ['confirmed', 'in_transit']], 'dropped_at_point' => ['label' => 'Przesylka nadana w punkcie', 'statuses' => ['confirmed', 'in_transit']],
'picked_up' => ['label' => 'Przesylka odebrana', 'statuses' => ['delivered']], 'picked_up' => ['label' => 'Przesylka odebrana', 'statuses' => ['delivered']],

View File

@@ -23,6 +23,7 @@ final class AutomationService
private const SHIPMENT_STATUS_OPTION_MAP = [ private const SHIPMENT_STATUS_OPTION_MAP = [
'registered' => ['created', 'confirmed'], 'registered' => ['created', 'confirmed'],
'courier_pickup' => ['picked_up'],
'ready_for_pickup' => ['ready_for_pickup'], 'ready_for_pickup' => ['ready_for_pickup'],
'dropped_at_point' => ['confirmed', 'in_transit'], 'dropped_at_point' => ['confirmed', 'in_transit'],
'picked_up' => ['delivered'], 'picked_up' => ['delivered'],

View File

@@ -8,6 +8,7 @@ final class DeliveryStatus
public const UNKNOWN = 'unknown'; public const UNKNOWN = 'unknown';
public const CREATED = 'created'; public const CREATED = 'created';
public const CONFIRMED = 'confirmed'; public const CONFIRMED = 'confirmed';
public const PICKED_UP = 'picked_up';
public const IN_TRANSIT = 'in_transit'; public const IN_TRANSIT = 'in_transit';
public const OUT_FOR_DELIVERY = 'out_for_delivery'; public const OUT_FOR_DELIVERY = 'out_for_delivery';
public const READY_FOR_PICKUP = 'ready_for_pickup'; public const READY_FOR_PICKUP = 'ready_for_pickup';
@@ -26,6 +27,7 @@ final class DeliveryStatus
self::UNKNOWN => 'Nieznany', self::UNKNOWN => 'Nieznany',
self::CREATED => 'Utworzona', self::CREATED => 'Utworzona',
self::CONFIRMED => 'Potwierdzona', self::CONFIRMED => 'Potwierdzona',
self::PICKED_UP => 'Odebrana przez kuriera',
self::IN_TRANSIT => 'W tranzycie', self::IN_TRANSIT => 'W tranzycie',
self::OUT_FOR_DELIVERY => 'W doręczeniu', self::OUT_FOR_DELIVERY => 'W doręczeniu',
self::READY_FOR_PICKUP => 'Gotowa do odbioru', self::READY_FOR_PICKUP => 'Gotowa do odbioru',
@@ -41,8 +43,8 @@ final class DeliveryStatus
'offer_selected' => self::CREATED, 'offer_selected' => self::CREATED,
'confirmed' => self::CONFIRMED, 'confirmed' => self::CONFIRMED,
'dispatched' => self::CONFIRMED, 'dispatched' => self::CONFIRMED,
'collected' => self::IN_TRANSIT, 'collected' => self::PICKED_UP,
'taken_by_courier' => self::IN_TRANSIT, 'taken_by_courier' => self::PICKED_UP,
'adopted_at_source_branch' => self::IN_TRANSIT, 'adopted_at_source_branch' => self::IN_TRANSIT,
'adopted_at_sorting_center' => self::IN_TRANSIT, 'adopted_at_sorting_center' => self::IN_TRANSIT,
'sent_from_sorting_center' => self::IN_TRANSIT, 'sent_from_sorting_center' => self::IN_TRANSIT,
@@ -122,7 +124,7 @@ final class DeliveryStatus
private const APACZKA_MAP = [ private const APACZKA_MAP = [
'0' => self::CREATED, '0' => self::CREATED,
'1' => self::CONFIRMED, '1' => self::CONFIRMED,
'2' => self::IN_TRANSIT, '2' => self::PICKED_UP,
'3' => self::IN_TRANSIT, '3' => self::IN_TRANSIT,
'4' => self::OUT_FOR_DELIVERY, '4' => self::OUT_FOR_DELIVERY,
'5' => self::DELIVERED, '5' => self::DELIVERED,
@@ -134,8 +136,8 @@ final class DeliveryStatus
'NEW' => self::CREATED, 'NEW' => self::CREATED,
'PENDING' => self::CREATED, 'PENDING' => self::CREATED,
'CONFIRMED' => self::CONFIRMED, 'CONFIRMED' => self::CONFIRMED,
'PICKED_UP' => self::IN_TRANSIT, 'PICKED_UP' => self::PICKED_UP,
'PICKUP' => self::IN_TRANSIT, 'PICKUP' => self::PICKED_UP,
'IN_TRANSIT' => self::IN_TRANSIT, 'IN_TRANSIT' => self::IN_TRANSIT,
'OUT_FOR_DELIVERY' => self::OUT_FOR_DELIVERY, 'OUT_FOR_DELIVERY' => self::OUT_FOR_DELIVERY,
'DELIVERED' => self::DELIVERED, 'DELIVERED' => self::DELIVERED,
@@ -178,7 +180,7 @@ final class DeliveryStatus
private const ALLEGRO_MAP = [ private const ALLEGRO_MAP = [
'NEW' => self::CREATED, 'NEW' => self::CREATED,
'READY_TO_SHIP' => self::CONFIRMED, 'READY_TO_SHIP' => self::CONFIRMED,
'collected_from_sender' => self::IN_TRANSIT, 'collected_from_sender' => self::PICKED_UP,
'IN_TRANSIT' => self::IN_TRANSIT, 'IN_TRANSIT' => self::IN_TRANSIT,
'DELIVERED' => self::DELIVERED, 'DELIVERED' => self::DELIVERED,
'CANCELLED' => self::CANCELLED, 'CANCELLED' => self::CANCELLED,
@@ -203,12 +205,12 @@ final class DeliveryStatus
'prepared_by_the_sender' => self::CREATED, 'prepared_by_the_sender' => self::CREATED,
'nadana' => self::CONFIRMED, 'nadana' => self::CONFIRMED,
'dispatched' => self::CONFIRMED, 'dispatched' => self::CONFIRMED,
'podjeta_z_maszyny_przez_kuriera' => self::IN_TRANSIT, 'podjeta_z_maszyny_przez_kuriera' => self::PICKED_UP,
'podjeta_z_punktu_przez_kuriera' => self::IN_TRANSIT, 'podjeta_z_punktu_przez_kuriera' => self::PICKED_UP,
'podjeta_z_punktu' => self::IN_TRANSIT, 'podjeta_z_punktu' => self::PICKED_UP,
'odebrana_przez_kuriera' => self::IN_TRANSIT, 'odebrana_przez_kuriera' => self::PICKED_UP,
'picked_up_from_point_by_courier' => self::IN_TRANSIT, 'picked_up_from_point_by_courier' => self::PICKED_UP,
'picked_up_by_the_courier' => self::IN_TRANSIT, 'picked_up_by_the_courier' => self::PICKED_UP,
'przekazal_przesylke_do_magazynu' => self::IN_TRANSIT, 'przekazal_przesylke_do_magazynu' => self::IN_TRANSIT,
'przekazana_do_magazynu' => self::IN_TRANSIT, 'przekazana_do_magazynu' => self::IN_TRANSIT,
'transferred_the_parcel_to_the_warehouse' => self::IN_TRANSIT, 'transferred_the_parcel_to_the_warehouse' => self::IN_TRANSIT,
@@ -282,6 +284,7 @@ final class DeliveryStatus
self::UNKNOWN, self::UNKNOWN,
self::CREATED, self::CREATED,
self::CONFIRMED, self::CONFIRMED,
self::PICKED_UP,
self::IN_TRANSIT, self::IN_TRANSIT,
self::OUT_FOR_DELIVERY, self::OUT_FOR_DELIVERY,
self::READY_FOR_PICKUP, self::READY_FOR_PICKUP,
@@ -425,6 +428,9 @@ final class DeliveryStatus
if (str_contains($lower, 'delivered') || str_contains($lower, 'picked up by recipient')) { if (str_contains($lower, 'delivered') || str_contains($lower, 'picked up by recipient')) {
return self::DELIVERED; return self::DELIVERED;
} }
if (str_contains($lower, 'picked up by courier') || str_contains($lower, 'picked up from point')) {
return self::PICKED_UP;
}
if (str_contains($lower, 'returned')) { if (str_contains($lower, 'returned')) {
return self::RETURNED; return self::RETURNED;
} }
@@ -437,7 +443,7 @@ final class DeliveryStatus
if (str_contains($lower, 'awaiting pick-up') || str_contains($lower, 'awaiting pickup') || str_contains($lower, 'ready for pickup') || str_contains($lower, 'ready for pick-up')) { if (str_contains($lower, 'awaiting pick-up') || str_contains($lower, 'awaiting pickup') || str_contains($lower, 'ready for pickup') || str_contains($lower, 'ready for pick-up')) {
return self::READY_FOR_PICKUP; return self::READY_FOR_PICKUP;
} }
if (str_contains($lower, 'courier') || str_contains($lower, 'warehouse') || str_contains($lower, 'branch') || str_contains($lower, 'in transit') || str_contains($lower, 'picked up')) { if (str_contains($lower, 'courier') || str_contains($lower, 'warehouse') || str_contains($lower, 'branch') || str_contains($lower, 'in transit')) {
return self::IN_TRANSIT; return self::IN_TRANSIT;
} }
if (str_contains($lower, 'dispatched')) { if (str_contains($lower, 'dispatched')) {
@@ -462,7 +468,10 @@ final class DeliveryStatus
if (str_contains($lower, 'doręczeni') || str_contains($lower, 'doreczenia') || str_contains($lower, 'wydana do')) { if (str_contains($lower, 'doręczeni') || str_contains($lower, 'doreczenia') || str_contains($lower, 'wydana do')) {
return self::OUT_FOR_DELIVERY; return self::OUT_FOR_DELIVERY;
} }
if (str_contains($lower, 'sortowni') || str_contains($lower, 'magazyn') || str_contains($lower, 'w drodze') || str_contains($lower, 'tranzyt') || str_contains($lower, 'kurier') || str_contains($lower, 'podjęta') || str_contains($lower, 'podjeta') || str_contains($lower, 'wyjechał') || str_contains($lower, 'wyjechala')) { if (str_contains($lower, 'podjęta') || str_contains($lower, 'podjeta') || str_contains($lower, 'odebrana przez kuriera')) {
return self::PICKED_UP;
}
if (str_contains($lower, 'sortowni') || str_contains($lower, 'magazyn') || str_contains($lower, 'w drodze') || str_contains($lower, 'tranzyt') || str_contains($lower, 'kurier') || str_contains($lower, 'wyjechał') || str_contains($lower, 'wyjechala')) {
return self::IN_TRANSIT; return self::IN_TRANSIT;
} }
if (str_contains($lower, 'oczekuje na odb') || str_contains($lower, 'gotowa do odb') || (str_contains($lower, 'odbiór') && !str_contains($lower, 'w drodze'))) { if (str_contains($lower, 'oczekuje na odb') || str_contains($lower, 'gotowa do odb') || (str_contains($lower, 'odbiór') && !str_contains($lower, 'w drodze'))) {