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; }
&--created { background: #e3f2fd; color: #1565c0; }
&--confirmed { background: #bbdefb; color: #0d47a1; }
&--picked_up { background: #e1f5fe; color: #01579b; }
&--in_transit { background: #fff3e0; color: #e65100; }
&--out_for_delivery { background: #ffe0b2; color: #bf360c; }
&--ready_for_pickup { background: #f3e5f5; color: #6a1b9a; }

View File

@@ -35,6 +35,7 @@ final class AutomationController
];
private const SHIPMENT_STATUS_OPTIONS = [
'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']],
'dropped_at_point' => ['label' => 'Przesylka nadana w punkcie', 'statuses' => ['confirmed', 'in_transit']],
'picked_up' => ['label' => 'Przesylka odebrana', 'statuses' => ['delivered']],

View File

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

View File

@@ -8,6 +8,7 @@ final class DeliveryStatus
public const UNKNOWN = 'unknown';
public const CREATED = 'created';
public const CONFIRMED = 'confirmed';
public const PICKED_UP = 'picked_up';
public const IN_TRANSIT = 'in_transit';
public const OUT_FOR_DELIVERY = 'out_for_delivery';
public const READY_FOR_PICKUP = 'ready_for_pickup';
@@ -26,6 +27,7 @@ final class DeliveryStatus
self::UNKNOWN => 'Nieznany',
self::CREATED => 'Utworzona',
self::CONFIRMED => 'Potwierdzona',
self::PICKED_UP => 'Odebrana przez kuriera',
self::IN_TRANSIT => 'W tranzycie',
self::OUT_FOR_DELIVERY => 'W doręczeniu',
self::READY_FOR_PICKUP => 'Gotowa do odbioru',
@@ -41,8 +43,8 @@ final class DeliveryStatus
'offer_selected' => self::CREATED,
'confirmed' => self::CONFIRMED,
'dispatched' => self::CONFIRMED,
'collected' => self::IN_TRANSIT,
'taken_by_courier' => self::IN_TRANSIT,
'collected' => self::PICKED_UP,
'taken_by_courier' => self::PICKED_UP,
'adopted_at_source_branch' => self::IN_TRANSIT,
'adopted_at_sorting_center' => self::IN_TRANSIT,
'sent_from_sorting_center' => self::IN_TRANSIT,
@@ -122,7 +124,7 @@ final class DeliveryStatus
private const APACZKA_MAP = [
'0' => self::CREATED,
'1' => self::CONFIRMED,
'2' => self::IN_TRANSIT,
'2' => self::PICKED_UP,
'3' => self::IN_TRANSIT,
'4' => self::OUT_FOR_DELIVERY,
'5' => self::DELIVERED,
@@ -134,8 +136,8 @@ final class DeliveryStatus
'NEW' => self::CREATED,
'PENDING' => self::CREATED,
'CONFIRMED' => self::CONFIRMED,
'PICKED_UP' => self::IN_TRANSIT,
'PICKUP' => self::IN_TRANSIT,
'PICKED_UP' => self::PICKED_UP,
'PICKUP' => self::PICKED_UP,
'IN_TRANSIT' => self::IN_TRANSIT,
'OUT_FOR_DELIVERY' => self::OUT_FOR_DELIVERY,
'DELIVERED' => self::DELIVERED,
@@ -178,7 +180,7 @@ final class DeliveryStatus
private const ALLEGRO_MAP = [
'NEW' => self::CREATED,
'READY_TO_SHIP' => self::CONFIRMED,
'collected_from_sender' => self::IN_TRANSIT,
'collected_from_sender' => self::PICKED_UP,
'IN_TRANSIT' => self::IN_TRANSIT,
'DELIVERED' => self::DELIVERED,
'CANCELLED' => self::CANCELLED,
@@ -203,12 +205,12 @@ final class DeliveryStatus
'prepared_by_the_sender' => self::CREATED,
'nadana' => self::CONFIRMED,
'dispatched' => self::CONFIRMED,
'podjeta_z_maszyny_przez_kuriera' => self::IN_TRANSIT,
'podjeta_z_punktu_przez_kuriera' => self::IN_TRANSIT,
'podjeta_z_punktu' => self::IN_TRANSIT,
'odebrana_przez_kuriera' => self::IN_TRANSIT,
'picked_up_from_point_by_courier' => self::IN_TRANSIT,
'picked_up_by_the_courier' => self::IN_TRANSIT,
'podjeta_z_maszyny_przez_kuriera' => self::PICKED_UP,
'podjeta_z_punktu_przez_kuriera' => self::PICKED_UP,
'podjeta_z_punktu' => self::PICKED_UP,
'odebrana_przez_kuriera' => self::PICKED_UP,
'picked_up_from_point_by_courier' => self::PICKED_UP,
'picked_up_by_the_courier' => self::PICKED_UP,
'przekazal_przesylke_do_magazynu' => self::IN_TRANSIT,
'przekazana_do_magazynu' => self::IN_TRANSIT,
'transferred_the_parcel_to_the_warehouse' => self::IN_TRANSIT,
@@ -282,6 +284,7 @@ final class DeliveryStatus
self::UNKNOWN,
self::CREATED,
self::CONFIRMED,
self::PICKED_UP,
self::IN_TRANSIT,
self::OUT_FOR_DELIVERY,
self::READY_FOR_PICKUP,
@@ -425,6 +428,9 @@ final class DeliveryStatus
if (str_contains($lower, 'delivered') || str_contains($lower, 'picked up by recipient')) {
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')) {
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')) {
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;
}
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')) {
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;
}
if (str_contains($lower, 'oczekuje na odb') || str_contains($lower, 'gotowa do odb') || (str_contains($lower, 'odbiór') && !str_contains($lower, 'w drodze'))) {