" zamiast fallbacku "Allegro".
+- Dodano test regresyjny renderowania formularza dla mapowania Polkuriera.
+
+**Dlaczego:**
+- Po Phase 140 mapowanie moglo byc zapisane poprawnie, ale formularz przygotowania przesylki nadal traktowal nieznanego providera jak Allegro, przez co operator musial recznie podstawiać dane.
+
+**BREAKING / migracja:**
+- Brak migracji DB i brak zmian breaking. Naprawa dotyczy tylko odczytu istniejacego mapowania w UI przygotowania przesylki.
+
## 2026-05-18 - Phase 141 Plan 01: Integrations Hub Grouped Sections
**Co zrobiono:**
diff --git a/resources/views/shipments/prepare.php b/resources/views/shipments/prepare.php
index c0160aa..1528e05 100644
--- a/resources/views/shipments/prepare.php
+++ b/resources/views/shipments/prepare.php
@@ -26,13 +26,14 @@ $mappedServiceName = trim((string) ($mapping['provider_service_name'] ?? ''));
$mappedCarrier = match ($mappedProvider) {
'apaczka' => 'apaczka',
'inpost' => 'inpost',
+ 'polkurier' => 'polkurier',
default => 'allegro',
};
if ($mappedCarrier !== 'apaczka' && stripos($mappedCarrierId, 'inpost') !== false) {
$mappedCarrier = 'inpost';
}
$deliveryMethodId = '';
-if ($mappedCarrier === 'apaczka' && $mappedMethodId !== '') {
+if (($mappedCarrier === 'apaczka' || $mappedCarrier === 'polkurier') && $mappedMethodId !== '') {
$deliveryMethodId = $mappedMethodId;
} elseif (($mappedCarrier === 'allegro' || $mappedCarrier === 'inpost') && $mappedMethodId !== '') {
$deliveryMethodId = $mappedMethodId;
@@ -42,6 +43,12 @@ if ($mappedCarrier === 'apaczka' && $mappedMethodId !== '') {
$deliveryMethodName = trim((string) ($orderRow['external_carrier_id'] ?? ''));
$inpostSvcList = is_array($inpostServices ?? null) ? $inpostServices : [];
$preselectedCarrier = $mappedCarrier !== '' ? $mappedCarrier : ($mappedMethodId !== '' ? 'allegro' : '');
+$mappedCarrierLabel = match ($mappedCarrier) {
+ 'inpost' => 'InPost',
+ 'apaczka' => 'Apaczka',
+ 'polkurier' => 'Polkurier',
+ default => 'Allegro',
+};
$pointId = trim((string) ($receiver['parcel_external_id'] ?? ''));
$pointName = trim((string) ($receiver['parcel_name'] ?? ''));
$totalWithTax = (float) ($orderRow['total_with_tax'] ?? 0);
@@ -112,7 +119,7 @@ $defaultCodAmount = $isCod ? number_format($totalWithTax, 2, '.', '') : '0';
- Metoda z zamowienia: = $e($deliveryMethodName) ?> → = $e($mappedCarrier === 'inpost' ? 'InPost' : ($mappedCarrier === 'apaczka' ? 'Apaczka' : 'Allegro')) ?>: = $e($mappedServiceName) ?>
+ Metoda z zamowienia: = $e($deliveryMethodName) ?> → = $e($mappedCarrierLabel) ?>: = $e($mappedServiceName) ?>
'danger', 'message' => (string) $deliveryMappingDiagnostic, 'dismissible' => true]); ?>
@@ -234,10 +241,12 @@ $defaultCodAmount = $isCod ? number_format($totalWithTax, 2, '.', '') : '0';
if ($pSvcId === '') {
continue;
}
+ $pSvcSelected = $mappedCarrier === 'polkurier' && $mappedMethodId === $pSvcId;
?>
diff --git a/tests/Unit/ShipmentPreparePolkurierMappingTest.php b/tests/Unit/ShipmentPreparePolkurierMappingTest.php
new file mode 100644
index 0000000..20e2992
--- /dev/null
+++ b/tests/Unit/ShipmentPreparePolkurierMappingTest.php
@@ -0,0 +1,102 @@
+renderPrepareView([
+ 'orderId' => 1164,
+ 'csrfToken' => 'csrf-token',
+ 'order' => [
+ 'source' => 'shoppro',
+ 'external_order_id' => 'SHOPPRO-1164',
+ 'external_carrier_id' => 'Kurier Polkurier',
+ 'total_with_tax' => '123.45',
+ 'currency' => 'PLN',
+ 'external_payment_type_id' => 'prepaid',
+ ],
+ 'receiverAddr' => [
+ 'name' => 'Jan Kowalski',
+ 'street_name' => 'Testowa 1',
+ 'zip_code' => '35-001',
+ 'city' => 'Rzeszow',
+ 'country' => 'PL',
+ 'phone' => '500600700',
+ 'email' => 'jan@example.test',
+ ],
+ 'company' => [
+ 'default_package_length_cm' => '25',
+ 'default_package_width_cm' => '20',
+ 'default_package_height_cm' => '8',
+ 'default_package_weight_kg' => '1',
+ 'default_label_format' => 'PDF',
+ ],
+ 'deliveryMapping' => [
+ 'provider' => 'polkurier',
+ 'provider_service_id' => 'DHL_TEST',
+ 'provider_service_name' => 'Polkurier DHL Test',
+ ],
+ 'polkurierServices' => [
+ ['id' => 'DHL_TEST', 'name' => 'Polkurier DHL Test'],
+ ['id' => 'DPD_TEST', 'name' => 'Polkurier DPD Test'],
+ ],
+ ]);
+
+ self::assertMatchesRegularExpression(
+ '/