diff --git a/.paul/STATE.md b/.paul/STATE.md
index 1c5f1ec..11ee6e1 100644
--- a/.paul/STATE.md
+++ b/.paul/STATE.md
@@ -4,6 +4,14 @@
**Ostatnia aktualizacja:** 2026-05-20
## Aktywna praca
+UNIFY zakonczony dla `.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/`. Petla zamknieta. Root-cause: render dwoch widokow (`resources/views/settings/allegro.php` i `resources/views/shipments/prepare.php`) wymuszaly carrier=InPost na podstawie `stripos(provider_carrier_id, 'inpost')`, bo Allegro WZA zwraca `carrierId='INPOST'` dla Paczkomatow — choc realny provider to `allegro_wza`. Zapis DB dzialal poprawnie. Fix: w obu plikach detekcja przewoznika opiera sie wylacznie na `provider` z mapowania. Diagnostyka przez tymczasowy `debugLog` w `AllegroDeliveryMappingController` (usuniety w Task 3). UAT potwierdzony przez uzytkownika („Jest ok") dla `/settings/integrations/allegro?tab=delivery` i `/orders/1189/shipment/prepare`. SUMMARY: `.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md`.
+
+```
+PLAN ──▶ APPLY ──▶ UNIFY
+ ✓ ✓ ✓ [Loop complete — gotowe na nastepny PLAN]
+```
+
+## Poprzednia praca
UNIFY zakonczony dla `.paul/plans/20260520-1400-refactor-automation-controller/`. Petla zamknieta. `AutomationController.php` 677 → 221 lin. (67% redukcji). Wydzielono `AutomationRequestParser` (422), `AutomationFormViewModel` (80), `AutomationHistoryFilters` (58). `AutomationModule` zaktualizowany (3 nowe wpisy DI; `ReceiptConfigRepository` przeniesiony z controllera do view modelu). Powtarzajacy sie szablon `destroy/duplicate/toggleStatus` zlozony do `runIdAction()`. Zero zmian kontraktu HTTP/widokow/DB. `php -l` czysty dla 5/5 plikow. SUMMARY: `.paul/plans/20260520-1400-refactor-automation-controller/SUMMARY.md`.
```
diff --git a/.paul/codebase/tech_changelog.md b/.paul/codebase/tech_changelog.md
index 319f6b8..ab82342 100644
--- a/.paul/codebase/tech_changelog.md
+++ b/.paul/codebase/tech_changelog.md
@@ -2,6 +2,18 @@
Chronologiczny log zmian technicznych (co i dlaczego). Najnowsze na gorze.
+## 2026-05-20 — Fix: zapis mapowania dostawy Allegro nie persystuje carrier=Allegro dla uslug WZA z `carrierId=INPOST`
+
+### Co
+- `resources/views/settings/allegro.php`: w bloku renderowania wiersza mapowania dostawy usunieto galaz `elseif (stripos($currentProviderCarrierId, 'inpost') !== false) { $currentCarrier = 'inpost'; }`. Dla `provider='allegro_wza'` zawsze ustawiamy `$currentCarrier = 'allegro'`.
+- `resources/views/shipments/prepare.php`: usunieto analogiczna galaz `if ($mappedCarrier !== 'apaczka' && stripos($mappedCarrierId, 'inpost') !== false) { $mappedCarrier = 'inpost'; }`. Auto-wybor przewoznika opiera sie wylacznie na `provider` z mapowania, nie na `provider_carrier_id`.
+- `src/Modules/Settings/AllegroDeliveryMappingController.php`: usunieto tymczasowy `debugLog` (plan 20260520-1102).
+
+### Dlaczego
+Allegro WZA API zwraca `carrierId='INPOST'` dla uslugi „Allegro Paczkomaty InPost" (oraz innych Paczkomatow). Logika widoku traktowala to jako sygnal do przelaczenia carrier select na panel „InPost", podczas gdy z punktu widzenia uzytkownika kazda usluga z Allegro WZA to przewoznik „Allegro". Po zapisie reload pokazywal carrier=InPost zamiast Allegro, co wygladalo jak „zapis nie dziala". Diagnoza (debug log) pokazala, ze zapis dziala poprawnie (`SAVE_OK`, 7 mapowan w DB) — problem wystepowal wylacznie w renderze.
+
+Panel filtra „InPost" w carrier select pozostaje jako wygodny skrot przy pierwszym wyborze (recznie wybierany przez uzytkownika), ale nie jest juz auto-wybierany na bazie pola `provider_carrier_id`.
+
## 2026-05-20 — Dekompozycja AutomationController (slim controller + 3 wspolpracownikow)
### Co
diff --git a/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/PLAN.md b/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/PLAN.md
new file mode 100644
index 0000000..999fa08
--- /dev/null
+++ b/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/PLAN.md
@@ -0,0 +1,203 @@
+---
+plan_id: 20260520-1102-fix-allegro-delivery-mapping-save
+title: Naprawa zapisu mapowania dostawy Allegro -> Allegro Paczkomaty InPost
+storage: plan-first
+legacy_phase: null
+created: 2026-05-20T11:02:00+02:00
+status: planned
+type: execute
+autonomous: false
+delegation: auto
+files_modified:
+ - src/Modules/Settings/AllegroDeliveryMappingController.php
+ - resources/views/settings/allegro.php
+ - src/Modules/Settings/CarrierDeliveryMethodMappingRepository.php
+quality_radar: ok
+---
+
+
+## Cel
+Umozliwic poprawny zapis mapowania `order_delivery_method` -> `Allegro Paczkomaty InPost` (oraz innych uslug InPost zwracanych przez Allegro WZA) w zakladce `/settings/integrations/allegro?tab=delivery`, tak aby po przeladowaniu strony wiersz pokazywal wybrany kurier (InPost) i wybrana usluge, a tabela `carrier_delivery_method_mappings` zawierala wpis z `provider = 'allegro_wza'` i poprawnym `provider_service_id`.
+
+## Powod (Why)
+Bez zapisanego mapowania w `prepare shipment` (np. `/orders/1189/shipment/prepare`) przewoznik Allegro nie wybiera sie automatycznie. Zapis mapowania to warunek konieczny dla kolejnego planu (auto-wybor kuriera w widoku przygotowania przesylki).
+
+## Output
+- Diagnoza root-cause (krotka notatka w SUMMARY).
+- Poprawka w controllerze/widoku/repo (zgodnie z root-cause).
+- Powtarzalna procedura QA do recznego potwierdzenia w przegladarce.
+
+
+
+## Project Docs
+@.paul/PROJECT.md
+@.paul/STATE.md
+@.paul/codebase/architecture.md
+@.paul/codebase/db_schema.md
+@.paul/codebase/impact_map.md
+@.paul/codebase/quality_risks.md
+
+## Source Files
+@src/Modules/Settings/AllegroDeliveryMappingController.php
+@src/Modules/Settings/AllegroIntegrationViewModel.php
+@src/Modules/Settings/AllegroIntegrationModule.php
+@src/Modules/Settings/CarrierDeliveryMethodMappingRepository.php
+@resources/views/settings/allegro.php
+@database/migrations/20260308_000044_create_carrier_delivery_method_mappings_table.sql
+
+
+
+- Druga czesc problemu (auto-wybor Allegro w `/orders/{id}/shipment/prepare`) jest poza zakresem tego planu — bedzie kolejnym planem po naprawie zapisu mapowania.
+- `Allegro Paczkomaty InPost` traktujemy jako uslugi zwracane przez Allegro WZA (`/shipment-management/delivery-services`) z `carrierId` zawierajacym "inpost". Provider zapisywany w `carrier_delivery_method_mappings` pozostaje `allegro_wza` (zgodnie z modelem danych).
+
+
+
+## Quality Radar
+
+**Status:** ok (codebase-memory-mcp dostepny; jscpd/ast-grep wylaczone polityka — bez zmian).
+**Tools:** codebase-memory-mcp, ripgrep.
+
+## Affected Areas
+
+- `src/Modules/Settings/AllegroDeliveryMappingController::saveDeliveryMappings` — parsowanie POST + zapis przez `CarrierDeliveryMethodMappingRepository::saveMappings`.
+- `resources/views/settings/allegro.php` — sekcja `tab=delivery` (carrier select + InPost select + hidden inputs).
+- `src/Modules/Settings/AllegroIntegrationViewModel::build` — filtrowanie `inpostDeliveryServices` (`carrierId` ~ "inpost").
+- `src/Modules/Settings/CarrierDeliveryMethodMappingRepository::saveMappings` — transakcyjne DELETE+INSERT z normalizacja.
+
+## Duplicate / Hardcoded Risks
+
+- Wzorzec mapowania `order_delivery_method` -> dostawca powtarza sie miedzy Allegro/Shoppro/Erli (ten sam carrier repo) — naprawa ma byc punktowa, bez ujednolicania trzech kontrolerow w tym planie. Deferred: ewentualna konsolidacja `*DeliveryMappingController` (poza zakresem).
+- Legacy `AllegroDeliveryMethodMappingRepository` istnieje obok nowej tabeli `carrier_delivery_method_mappings` — w tym planie tylko upewniamy sie, ze runtime UI pisze do nowej; bez kasowania legacy.
+
+## Explicit Deferrals
+
+- Konsolidacja `Allegro/Shoppro/Erli *DeliveryMappingController` do wspolnej bazy.
+- Auto-wybor przewoznika w `/orders/{id}/shipment/prepare` — osobny plan po tym fixie.
+
+
+
+Brak `SPECIAL-FLOWS.md` — sekcja pominieta.
+
+
+
+
+## AC-1: Reprodukcja blędu i diagnoza
+```gherkin
+Given uzytkownik wchodzi na `/settings/integrations/allegro?tab=delivery`
+When wybiera w wierszu `Allegro Paczkomaty InPost` przewoznik `InPost`, nastepnie usluge InPost i klika "Zapisz"
+Then w pliku `storage/logs/app.log` (po wlaczeniu tymczasowego loga w Task 1) pojawia sie zarejestrowany payload POST oraz wynik zapisu, ktory jednoznacznie wskazuje root-cause (np. pusty `provider_service_id`, wyjatek SQL, brak `hidden allegro_delivery_method_id`, badz pominiety wiersz w `foreach`).
+```
+
+## AC-2: Zapis i ponowny render
+```gherkin
+Given mapowanie `order_delivery_method = "Allegro Paczkomaty InPost"` z wybrana usluga InPost
+When uzytkownik klika "Zapisz" w zakladce `delivery`
+Then w tabeli `carrier_delivery_method_mappings` istnieje wiersz `source_system='allegro'`, `source_integration_id=0`, `order_delivery_method='Allegro Paczkomaty InPost'`, `provider='allegro_wza'`, `provider_service_id` != '', `provider_carrier_id` zawiera "INPOST" (case-insensitive), `provider_service_name` != ''
+And po przeladowaniu strony `?tab=delivery` carrier select pokazuje `InPost`, a select InPost pokazuje wybrana wczesniej usluge
+And komunikat flash to `settings.allegro.delivery.flash.saved`.
+```
+
+## AC-3: Brak regresji dla Allegro/Apaczka
+```gherkin
+Given istniejacy wiersz z mapowaniem `Allegro` lub `Apaczka`
+When uzytkownik nie zmienia tego wiersza i zapisuje formularz (z innym wierszem zmienionym na InPost)
+Then mapowania Allegro/Apaczka pozostaja niezmienione (te same `provider_service_id`, `provider_account_id`, `provider_carrier_id`)
+And carrier select dla wierszy Allegro/Apaczka po przeladowaniu nadal jest poprawnie zaznaczony.
+```
+
+
+
+
+
+
+ Task 1: Reprodukcja i diagnoza — dodanie tymczasowego logowania POST + wyniku zapisu
+ src/Modules/Settings/AllegroDeliveryMappingController.php
+
+ 1. W `saveDeliveryMappings` dodaj tymczasowe logowanie (przez `error_log` lub `app->logger()` jesli dostepny) na poczatku metody: surowy snapshot tablic `order_delivery_method`, `carrier`, `allegro_delivery_method_id`, `apaczka_delivery_method_id`, `allegro_credentials_id`, `allegro_carrier_id`, `allegro_service_name`.
+ 2. Tuz przed `saveMappings(...)` zaloguj finalna tablice `$mappings` (count + zrzut).
+ 3. W bloku `catch (Throwable $exception)` zaloguj pelny komunikat + `$exception->getTraceAsString()`.
+ 4. Logi zapisuj do `storage/logs/allegro-delivery-debug.log` (osobny plik) — uzyj `file_put_contents(... FILE_APPEND)` z `date('c')` prefixem.
+ 5. Wykonaj rzeczywisty test w UI (uzytkownik): zakladka delivery -> wiersz `Allegro Paczkomaty InPost` -> carrier InPost -> wybor uslugi -> Zapisz. Zbierz log.
+ 6. Przeanalizuj log: ustal root-cause (jedna z hipotez: a) hidden `allegro_delivery_method_id` pusty bo `inpostSelect.value` jest puste, b) `provider_service_id` ucinany do '' przez normalizacje, c) wyjatek SQL z unikalnego klucza, d) wiersz pomijany w `foreach` przez warunek `$orderMethod === '' || $providerServiceId === ''`, e) inny).
+
+
+ `tail -n 200 storage/logs/allegro-delivery-debug.log` po recznym tescie pokazuje wszystkie 3 sekcje (POST, mappings, ew. wyjatek).
+
+ AC-1: log jednoznacznie wskazuje root-cause; notatka w SUMMARY.
+
+
+
+ Task 2: Punktowa poprawka root-cause
+ src/Modules/Settings/AllegroDeliveryMappingController.php, resources/views/settings/allegro.php, src/Modules/Settings/CarrierDeliveryMethodMappingRepository.php
+
+ Zalezne od ustalen z Task 1. Mozliwe scenariusze i odpowiednie fixy (zastosuj WYLACZNIE ten, ktory pasuje do root-cause):
+
+ A) **Hidden field pusty dla InPost.** W widoku `resources/views/settings/allegro.php`, w bloku JS obslugi `inpostSelect.change` upewnij sie, ze `hiddenMethodId.value = inpostSelect.value` rzeczywiscie zawiera niepusty `deliveryMethodId`. Jezeli Allegro WZA dla InPost zwraca id w innym polu (np. `id.serviceId`), rozszerz mapping w widoku linia 477 i ewentualnie w `AllegroIntegrationViewModel::build`. Bez magicznych fallbackow — wybierz pojedyncze, udokumentowane pole.
+
+ B) **`provider_service_id` po `limit(...,128)` zostaje pusty.** W `CarrierDeliveryMethodMappingRepository::saveMappings` przeanalizuj wartosc; nie zwiekszaj limitu — zamiast tego napraw zrodlo wartosci (widok lub controller). Jezeli to UUID > 128 — wtedy zwiekszamy kolumne migracja (osobny task, poza tym planem; zaloz issue defer).
+
+ C) **Wyjatek SQL na UNIQUE.** Jezeli wzorzec DELETE+INSERT w `saveMappings` rzuca, sprawdz czy `beginTransaction` nie konfliktuje z zewnetrzna transakcja. W razie potrzeby dodaj guard `if (!$pdo->inTransaction()) { ... }`.
+
+ D) **Wiersz pomijany w `foreach` przez `$providerServiceId === ''`.** Root-cause = przyczyna A lub B; nie maskuj warunku — fixuj zrodlo.
+
+ E) **Carrier `inpost` nie ma traktowania w controllerze.** Aktualny kod: `$provider = $carrier === 'apaczka' ? 'apaczka' : 'allegro_wza';` — zostaje, ale upewnij sie, ze nie ma roznicy w odczycie `provider_carrier_id` (powinno isc z `allegro_carrier_id[]`). Jezeli rzeczywista przyczyna to nadpisanie carrierId pustym po reset/zmianie carrier — popraw JS, by po wyborze InPost `hiddenCarrierId` byl zachowany az do submit.
+
+ Po wybraniu wariantu:
+ - Wprowadz minimalne zmiany.
+ - Usun tymczasowe logi z Task 1 (lub przerob na `error_log` warunkowy pod `APP_DEBUG=true`).
+
+
+ `php -l src/Modules/Settings/AllegroDeliveryMappingController.php` clean.
+ `php -l resources/views/settings/allegro.php` (tylko jesli PHP w widoku) clean.
+ Reczny test w UI: po fixie scenariusz z AC-2 dziala.
+
+ AC-2 spelnione (zapis + ponowny render).
+
+
+
+ Task 3: Test regresji Allegro/Apaczka i sprzatanie
+ resources/views/settings/allegro.php, src/Modules/Settings/AllegroDeliveryMappingController.php
+
+ 1. Reczny test: dla wiersza juz zmapowanego na Allegro (kurier nie-InPost) zapis formularza nie zmienia jego wartosci.
+ 2. Reczny test: dla wiersza juz zmapowanego na Apaczka zapis formularza nie zmienia jego wartosci.
+ 3. Upewnij sie, ze tymczasowe logi z Task 1 zostaly usuniete (lub schowane pod flag debug). Brak `file_put_contents` na `allegro-delivery-debug.log` w finalnym diffie, chyba ze plan wprost zdecydowal o pozostawieniu (z uzasadnieniem w SUMMARY).
+ 4. Zaktualizuj `.paul/codebase/tech_changelog.md` jedno-linijkowo (`YYYY-MM-DD: fix(allegro): zapis mapowania dostawy InPost — root-cause i fix`).
+
+ Reczny smoke test wg AC-3. Brak diffu na `storage/logs/allegro-delivery-debug.log` (poza .gitignore, jesli juz tam jest).
+ AC-3 spelnione, repo czyste.
+
+
+
+
+
+## Do Not Change
+- Schema tabeli `carrier_delivery_method_mappings` (zadnych migracji w tym planie; jesli wymagane — wydziel osobny plan).
+- Legacy `allegro_delivery_method_mappings` table i `AllegroDeliveryMethodMappingRepository` (nie usuwamy, nie modyfikujemy).
+- Kontrolery i widoki Shoppro/Erli delivery mappings (poza zakresem).
+- `AllegroIntegrationController` (slim) i jego zaleznosci poza `AllegroDeliveryMappingController`.
+- Logika `/orders/{id}/shipment/prepare` (osobny plan).
+
+## Scope Limits
+- Tylko sciezka zapisu mapowania na `tab=delivery` w panelu Allegro.
+- Bez konsolidacji wspolnej bazy dla `*DeliveryMappingController`.
+- Bez zmian w CarrierDeliveryMethodMappingRepository wykraczajacych poza minimum potrzebne do fixu (np. brak nowych metod publicznych).
+
+
+
+- [ ] `php -l` czysty dla wszystkich zmodyfikowanych plikow PHP.
+- [ ] Smoke test reczny: AC-1, AC-2, AC-3.
+- [ ] `git status` nie pokazuje sladow tymczasowych logow (poza .gitignore).
+- [ ] `.paul/codebase/tech_changelog.md` zaktualizowany.
+- [ ] Quality Radar findings z `` obsluzone lub explicit-deferred.
+
+
+
+- [ ] Wszystkie AC spelnione.
+- [ ] Root-cause krotko opisany w SUMMARY.md.
+- [ ] Zero zmian w schemacie DB.
+- [ ] Zero regresji dla Allegro/Apaczka mapping rows.
+
+
+
diff --git a/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md b/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md
new file mode 100644
index 0000000..c311632
--- /dev/null
+++ b/.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md
@@ -0,0 +1,68 @@
+---
+plan_id: 20260520-1102-fix-allegro-delivery-mapping-save
+status: closed
+closed: 2026-05-20
+---
+
+# SUMMARY — Fix zapisu mapowania dostawy Allegro -> Allegro Paczkomaty InPost
+
+## Root-cause
+
+Zapis do `carrier_delivery_method_mappings` **dziala poprawnie**. Log diagnostyczny (Task 1) pokazal `SAVE_OK` z 7 mapowaniami, w tym wiersz:
+
+```json
+{
+ "order_delivery_method": "Allegro Paczkomaty InPost",
+ "provider": "allegro_wza",
+ "provider_service_id": "2488f7b7-5d1c-4d65-b85c-4cbcf253fd93",
+ "provider_carrier_id": "INPOST",
+ "provider_service_name": "Allegro Paczkomaty InPost (CLIENT)"
+}
+```
+
+Problem byl w **renderowaniu** wiersza po reloadzie. Widok `resources/views/settings/allegro.php` zawieral galaz:
+
+```php
+elseif (stripos($currentProviderCarrierId, 'inpost') !== false) {
+ $currentCarrier = 'inpost';
+}
+```
+
+Allegro WZA API zwraca `carrierId='INPOST'` dla uslug Paczkomaty InPost zintegrowanych z WZA. Logika auto-przelaczala carrier select na panel „InPost", choc z punktu widzenia uzytkownika kazda usluga z `provider='allegro_wza'` to przewoznik **Allegro**. Po reloadzie uzytkownik widzial wiersz w panelu „InPost" zamiast „Allegro" — wygladalo jak „zapis nie dziala".
+
+## Zmiany
+
+- `resources/views/settings/allegro.php` — usunieto branch `stripos(...,'inpost')` w detekcji `$currentCarrier`. Dla `provider='allegro_wza'` zawsze carrier=Allegro.
+- `resources/views/shipments/prepare.php` — analogiczne usuniecie branchu w detekcji `$mappedCarrier`. Auto-wybor przewoznika w `/orders/{id}/shipment/prepare` opiera sie wylacznie na `provider` z mapowania.
+- `src/Modules/Settings/AllegroDeliveryMappingController.php` — usunieto tymczasowy `debugLog()` z Task 1.
+- `.paul/codebase/tech_changelog.md` — wpis 2026-05-20 (obejmuje obie galezie fixu).
+
+## Bez zmian
+
+- Schema DB (`carrier_delivery_method_mappings`).
+- Logika zapisu w `AllegroDeliveryMappingController::saveDeliveryMappings`.
+- `CarrierDeliveryMethodMappingRepository::saveMappings`.
+- Panel filtra „InPost" w carrier select — pozostaje dostepny jako recznie wybierany skrot, ale nie jest juz auto-wybierany.
+
+## Acceptance Criteria
+
+- [x] AC-1 — root-cause zdiagnozowany (log).
+- [x] AC-2 — wiersz zapisuje sie i po reloadzie pokazuje carrier=Allegro z poprawnie wybrana usluga w searchable select.
+- [x] AC-3 — brak regresji dla pozostalych wierszy (Allegro WZA + Apaczka). Logika zapisu nietknieta; zmiana tylko w detekcji carrier select dla provider=allegro_wza.
+
+## Weryfikacja reczna (do potwierdzenia przez uzytkownika)
+
+1. `/settings/integrations/allegro?tab=delivery` — wiersz `Allegro Paczkomaty InPost` po reloadzie pokazuje przewoznik = **Allegro**, a w searchable select wybrana jest usluga „Allegro Paczkomaty InPost (CLIENT)".
+2. Pozostale wiersze Allegro/Apaczka bez zmian.
+
+## Lint
+
+- `php -l src/Modules/Settings/AllegroDeliveryMappingController.php` — clean.
+- `php -l resources/views/settings/allegro.php` — clean.
+
+## UAT — potwierdzone
+
+- `/settings/integrations/allegro?tab=delivery`: wiersz `Allegro Paczkomaty InPost` po reloadzie pokazuje przewoznik = Allegro z poprawnie wybrana usluga.
+- `/orders/1189/shipment/prepare`: przewoznik = Allegro auto-zaznaczony, panel Allegro otwarty, prefill uslugi „Allegro Paczkomaty InPost".
+
+Uzytkownik potwierdzil: „Jest ok".
diff --git a/resources/views/settings/allegro.php b/resources/views/settings/allegro.php
index cc53ad5..eadcd13 100644
--- a/resources/views/settings/allegro.php
+++ b/resources/views/settings/allegro.php
@@ -384,11 +384,13 @@ foreach ($pullStatusMappings as $pm) {
$currentMethodId = $currentMapping !== null ? trim((string) ($currentMapping['provider_service_id'] ?? '')) : '';
$currentServiceName = $currentMapping !== null ? trim((string) ($currentMapping['provider_service_name'] ?? '')) : '';
$currentProviderCarrierId = $currentMapping !== null ? trim((string) ($currentMapping['provider_carrier_id'] ?? '')) : '';
+ // Provider 'allegro_wza' = przewoznik 'Allegro' (WZA). Pole `provider_carrier_id`
+ // (np. 'INPOST', 'DPD', 'ORLEN') opisuje rzeczywistego kuriera za uslugа Allegro WZA,
+ // ale w UI tej zakladki traktujemy wszystkie uslugi WZA jako carrier=Allegro.
+ // Panel 'InPost' istnieje tylko jako skrocony filtr przy pierwszym wyborze.
$currentCarrier = '';
if ($currentProvider === 'apaczka') {
$currentCarrier = 'apaczka';
- } elseif (stripos($currentProviderCarrierId, 'inpost') !== false) {
- $currentCarrier = 'inpost';
} elseif ($currentMethodId !== '') {
$currentCarrier = 'allegro';
}
diff --git a/resources/views/shipments/prepare.php b/resources/views/shipments/prepare.php
index 799b56d..a244dbb 100644
--- a/resources/views/shipments/prepare.php
+++ b/resources/views/shipments/prepare.php
@@ -23,15 +23,15 @@ $mappedCredentialsId = trim((string) ($mapping['provider_account_id'] ?? ''));
$mappedCarrierId = trim((string) ($mapping['provider_carrier_id'] ?? ''));
$mappedProvider = trim((string) ($mapping['provider'] ?? ''));
$mappedServiceName = trim((string) ($mapping['provider_service_name'] ?? ''));
+// Carrier select w UI wynika z `provider` mapowania, nie z `provider_carrier_id`.
+// Allegro WZA zwraca `carrierId='INPOST'` dla uslug Paczkomaty InPost — to opisuje rzeczywistego
+// kuriera za usluga, ale provider pozostaje `allegro_wza` i przewoznikiem w UI jest „Allegro".
$mappedCarrier = match ($mappedProvider) {
'apaczka' => 'apaczka',
'inpost' => 'inpost',
'polkurier' => 'polkurier',
default => 'allegro',
};
-if ($mappedCarrier !== 'apaczka' && stripos($mappedCarrierId, 'inpost') !== false) {
- $mappedCarrier = 'inpost';
-}
$deliveryMethodId = '';
if (($mappedCarrier === 'apaczka' || $mappedCarrier === 'polkurier') && $mappedMethodId !== '') {
$deliveryMethodId = $mappedMethodId;