# Plan naprawy DPD Pickup (checkout) ## Cel Zablokować możliwość złożenia zamówienia bez wybranego punktu dla metody **DPD Pickup – automaty paczkowe** na checkout `https://www.interblue.pl/zam%C3%B3wienie`. ## 1. Potwierdzenie scenariusza i trybu checkout - Sprawdzić aktywny tryb `CUSTOM_CART` w module `dpdpoland` (najpewniej `opc_prestateam_1_7` z `onepagecheckoutps`). - Odtworzyć błąd: wybór DPD Pickup bez wyboru punktu i próba kliknięcia `#btn_place_order`. ## 2. Naprawa walidacji JS po stronie DPD Pliki: - `modules/dpdpoland/js/pudo-opc-prestateam-1.7.js` - `modules/dpdpoland/js/pudo-opc-prestateam-8.js` Zakres: - Zamienić wywołanie nieistniejącej funkcji `handleDpdShippingPudo()` na istniejącą `handleDpdPudo()`. - Dodać ponowną inicjalizację po przeładowaniu sekcji przewoźników (`opc-load-carrier:completed`, `opc-update-carrier:completed`). ## 3. Dodatkowa walidacja przy kliknięciu "Złóż zamówienie" (OPC) Plik: - `modules/onepagecheckoutps/views/js/front/onepagecheckoutps.js` Zakres: - W `Review.placeOrder` dodać warunek: jeśli wybrany carrier to DPD Pickup/SwipBox i punkt nie jest ustawiony, przerwać submit i pokazać komunikat. - Zabezpieczyć przypadki, gdzie sama blokada przycisku mogłaby zostać ominięta. ## 4. Walidacja backendowa (twarda blokada) Plik: - `modules/onepagecheckoutps/onepagecheckoutps.php` Zakres: - Przed finalnym utworzeniem zamówienia sprawdzić: - czy wybrany przewoźnik to DPD Pickup/SwipBox, - czy istnieje wpis `pudo_code` dla bieżącego koszyka w `ps_dpdpoland_pudo_cart`. - Przy braku punktu: zwrócić błąd i zatrzymać proces zamówienia. ## 5. Testy regresji - DPD Pickup bez punktu -> zamówienie zablokowane. - DPD Pickup z punktem -> zamówienie przechodzi. - Inni przewoźnicy -> bez regresji. - Zmiana przewoźnika (tam/powrót) -> poprawny stan walidacji i przycisku.