From dd5c4d1708576ca352f82d60f3ab043f1d9ef948 Mon Sep 17 00:00:00 2001 From: Jacek Pyziak Date: Wed, 20 May 2026 11:19:43 +0200 Subject: [PATCH] fix(shipments): wybor przewoznika Allegro dla uslug WZA z carrierId=INPOST MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Widoki settings/allegro i shipments/prepare wymuszaly carrier=InPost na podstawie stripos(provider_carrier_id, 'inpost'), choc realny provider to allegro_wza. Allegro WZA zwraca carrierId='INPOST' dla Paczkomatow InPost — to opis kuriera za usluga, a nie wybor providera w UI. Po fixie auto-wybor i render mapowania opieraja sie wylacznie na polu provider z carrier_delivery_method_mappings. Zapis DB byl od poczatku poprawny. Co-Authored-By: Claude Opus 4.7 (1M context) --- .paul/STATE.md | 8 + .paul/codebase/tech_changelog.md | 12 ++ .../PLAN.md | 203 ++++++++++++++++++ .../SUMMARY.md | 68 ++++++ resources/views/settings/allegro.php | 6 +- resources/views/shipments/prepare.php | 6 +- 6 files changed, 298 insertions(+), 5 deletions(-) create mode 100644 .paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/PLAN.md create mode 100644 .paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md 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. + + + +SUMMARY.md path: `.paul/plans/20260520-1102-fix-allegro-delivery-mapping-save/SUMMARY.md` + 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;