update
This commit is contained in:
60
docs/dpd.md
Normal file
60
docs/dpd.md
Normal file
@@ -0,0 +1,60 @@
|
||||
# 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
|
||||
1. `modules/dpdpoland/js/pudo-opc-prestateam-1.7.js`
|
||||
2. `modules/dpdpoland/js/pudo-opc-prestateam-8.js`
|
||||
3. `modules/onepagecheckoutps/views/js/front/onepagecheckoutps.js`
|
||||
4. `modules/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 wrapper `refreshDpdPudoState`)
|
||||
- Dodano ponowną inicjalizację stanu po dynamicznym przeładowaniu carrierów OPC:
|
||||
- nasłuch: `opc-load-carrier:completed`
|
||||
- nasłuch: `opc-update-carrier:completed`
|
||||
|
||||
### 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.placeOrder` dodano 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).
|
||||
|
||||
### 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_code` z tabeli `ps_dpdpoland_pudo_cart` dla bieżącego `id_cart`,
|
||||
- gdy brak kodu, dodaje błąd:
|
||||
- `Wybierz punkt DPD Pickup przed złożeniem zamówienia.`
|
||||
- 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).
|
||||
|
||||
## Dlaczego to jest potrzebne
|
||||
- Walidacja wyłącznie po stronie JS mogła być ominięta.
|
||||
- `hookActionValidateOrder` w 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ź
|
||||
1. Czy powyższe 4 pliki nie zostały nadpisane.
|
||||
2. Czy w plikach DPD nadal nie ma wywołania `handleDpdShippingPudo()`.
|
||||
3. Czy metoda `validateDpdPickupPointSelection()` nadal istnieje i jest wywoływana w `placeOrder()`.
|
||||
4. Test manualny:
|
||||
- DPD Pickup bez punktu -> zamówienie zablokowane.
|
||||
- DPD Pickup z punktem -> zamówienie przechodzi.
|
||||
Reference in New Issue
Block a user