2.7 KiB
2.7 KiB
DPD Pickup - zmiany lokalne (do odtworzenia po aktualizacji)
Data: 2026-03-31
Cel zmiany
Zablokowanie możliwości złożenia zamówienia bez wyboru punktu dla metod:
- DPD Pickup
- DPD Pickup COD
- DPD SwipBox
Zmienione pliki
modules/dpdpoland/js/pudo-opc-prestateam-1.7.jsmodules/dpdpoland/js/pudo-opc-prestateam-8.jsmodules/onepagecheckoutps/views/js/front/onepagecheckoutps.jsmodules/onepagecheckoutps/onepagecheckoutps.php
Dokładnie co zmieniono
1) modules/dpdpoland/js/pudo-opc-prestateam-1.7.js
- Naprawiono błędne wywołanie:
- było:
handleDpdShippingPudo() - jest:
handleDpdPudo()(przez wrapperrefreshDpdPudoState)
- było:
- Dodano ponowną inicjalizację stanu po dynamicznym przeładowaniu carrierów OPC:
- nasłuch:
opc-load-carrier:completed - nasłuch:
opc-update-carrier:completed
- nasłuch:
2) modules/dpdpoland/js/pudo-opc-prestateam-8.js
- Te same zmiany jak wyżej (identyczna logika naprawy i re-init).
3) modules/onepagecheckoutps/views/js/front/onepagecheckoutps.js
- W
Review.placeOrderdodano walidację dla aktywnej opcji dostawy:- jeżeli zaznaczony carrier zawiera kontenery DPD (
.dpdpoland-pudo-container,.dpdpoland-pudo-cod-container,.dpdpoland-swipbox-container) - i nie ma widocznego wybranego punktu (
*.selected-point:visible), - proces jest przerywany (
return false), - pokazywany jest komunikat
need_select_pickup_point, - wykonywany jest click na przycisku wyboru/zmiany punktu (otwarcie mapy).
- jeżeli zaznaczony carrier zawiera kontenery DPD (
4) modules/onepagecheckoutps/onepagecheckoutps.php
- Dodano metodę:
validateDpdPickupPointSelection(). - Metoda:
- sprawdza czy aktualny carrier koszyka to DPD Pickup / Pickup COD / SwipBox (po
id_reference), - pobiera
pudo_codez tabelips_dpdpoland_pudo_cartdla bieżącegoid_cart, - gdy brak kodu, dodaje błąd:
Wybierz punkt DPD Pickup przed złożeniem zamówienia.
- sprawdza czy aktualny carrier koszyka to DPD Pickup / Pickup COD / SwipBox (po
- Wywołania metody dodano w dwóch miejscach w
placeOrder():- przed zwrotem odpowiedzi
isSaved => true(ścieżka dla nowego klienta), - przed końcowym
return array(...)(ścieżka wspólna).
- przed zwrotem odpowiedzi
Dlaczego to jest potrzebne
- Walidacja wyłącznie po stronie JS mogła być ominięta.
hookActionValidateOrderw DPD działa zbyt późno (po utworzeniu zamówienia) do blokowania checkoutu.- Obecnie blokada działa zarówno na froncie (UX), jak i na backendzie (hard stop).
Po aktualizacji modułów sprawdź
- Czy powyższe 4 pliki nie zostały nadpisane.
- Czy w plikach DPD nadal nie ma wywołania
handleDpdShippingPudo(). - Czy metoda
validateDpdPickupPointSelection()nadal istnieje i jest wywoływana wplaceOrder(). - Test manualny:
- DPD Pickup bez punktu -> zamówienie zablokowane.
- DPD Pickup z punktem -> zamówienie przechodzi.