feat(128): polkurier shipment service + tracking + UI prepare
PolkurierApiClient rozszerzony do pelnego kontraktu (7 metod):
createShipment/getLabel/getStatus/cancelOrder/getAvailableCarriers/
getInpostParcelMachines/getCourierPoints. Wspolny call() parsuje
envelope {status, response}. Kontrakt zweryfikowany na oficjalnej
dokumentacji PDF v1.11.
PolkurierShipmentService (implements ShipmentProviderInterface)
orchestruje pelen flow: normalizeShipmentType (lowercase), split
ulicy, build recipient/sender/pickup, COD z bank account z
company_settings, extractOrderNumber/extractTrackingNumber
priorytetujace SDK Order entity (number, waybills[0].number).
PolkurierTrackingService (implements ShipmentTrackingInterface)
mapuje statusy O/P/A/WP/D/Z/W przez delivery_status_mappings.
UI panel polkurier w prepare.php z dynamiczna lista uslug z
available_carriers. Bez dedykowanego selektora punktu — operator
wpisuje receiver_point_id w istniejace pole w sekcji Adres odbiorcy.
Migracja 20260514_000115 seedujaca 7 wpisow delivery_status_mappings
z oficjalnej tabeli ORDER_STATUS (O/P/A/WP/D/Z/W).
Live test #114/#115 zakonczony sukcesem po 4 iteracjach
(ReferenceError -> uppercase shipmenttype -> orderno parsing ->
A4/A6 etykieta). Rozmiar etykiety A4/A6 sterowany w panelu klienta
polkurier.pl, NIE przez API.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,27 @@
|
||||
-- Phase 128-01: seed delivery_status_mappings dla provider='polkurier'.
|
||||
-- Kody zaczerpniete z oficjalnej dokumentacji API polkurier v1.11 (marzec 2026),
|
||||
-- tabela "Status zlecenia ORDER_STATUS":
|
||||
-- O = Oczekuje (zlecenie zapisane, oczekuje na platnosc)
|
||||
-- P = Potwierdzone (zlecenie zapisane, list przewozowy wygenerowany, oczekuje odbioru)
|
||||
-- A = Anulowane (przesylka anulowana)
|
||||
-- WP = W przewozie (odebrana od nadawcy, w drodze do adresata)
|
||||
-- D = Dostarczona (dotarla do adresata)
|
||||
-- Z = Zwrot do nadawcy (odmowa odbioru przez odbiorce)
|
||||
-- W = Wyjatek (problem z doreczeniem)
|
||||
-- Status PZ (Podjazd zbiorczy) jest filtrem wyszukiwania get_orders, nie wystepuje jako
|
||||
-- samodzielny status zlecenia -- pomijamy w seedzie.
|
||||
--
|
||||
-- Migracja idempotentna: ON DUPLICATE KEY UPDATE nadpisuje normalized_status i description.
|
||||
|
||||
INSERT INTO delivery_status_mappings (provider, raw_status, normalized_status, description, created_at, updated_at) VALUES
|
||||
('polkurier', 'O', 'created', 'Oczekuje (oczekuje na platnosc)', NOW(), NOW()),
|
||||
('polkurier', 'P', 'confirmed', 'Potwierdzone (list przewozowy wygenerowany)', NOW(), NOW()),
|
||||
('polkurier', 'A', 'cancelled', 'Anulowane', NOW(), NOW()),
|
||||
('polkurier', 'WP', 'in_transit','W przewozie', NOW(), NOW()),
|
||||
('polkurier', 'D', 'delivered', 'Dostarczona', NOW(), NOW()),
|
||||
('polkurier', 'Z', 'returned', 'Zwrot do nadawcy', NOW(), NOW()),
|
||||
('polkurier', 'W', 'problem', 'Wyjatek (problem z doreczeniem)', NOW(), NOW())
|
||||
ON DUPLICATE KEY UPDATE
|
||||
normalized_status = VALUES(normalized_status),
|
||||
description = VALUES(description),
|
||||
updated_at = NOW();
|
||||
Reference in New Issue
Block a user