Jak moduł decyduje, czy pokazać Pay by Invoice?

Pytanie opublikowane 205 wyświetleń

hookPaymentOptions() pokazuje Pay by Invoice tylko wtedy, gdy wszystkie kontrole kwalifikacji przejdą pomyślnie. Moduł musi być aktywny, ustawienie modułu musi być włączone, koszyk musi należeć do zalogowanego klienta, a obiekt klienta musi załadować się poprawnie.

  • Kontrola klienta: koszyki gości i nieprawidłowe rekordy klienta nie zwracają opcji płatności.
  • Kontrola grupy: klient musi należeć do co najmniej jednej grupy przypisanej do aktywnego terminu płatności.
  • Kontrola terminu: zwracane są tylko aktywne terminy powiązane przez mpr_payment_term_group, posortowane według position i days.
  • Kontrola limitu kredytowego: moduł bierze najwyższy limit kredytowy z grup klienta; 0 oznacza bez limitu. W przeciwnym razie niezapłacone zamówienia odroczone plus bieżąca suma koszyka muszą mieścić się w limicie.
  • Kontrola walidacji: frontowy controller walidacji powtarza kontrolę terminu i limitu kredytowego przed utworzeniem zamówienia, więc nieaktualna opcja checkout nie może ominąć reguł.

Jeśli jakakolwiek kontrola się nie powiedzie, moduł zwraca pustą listę opcji płatności, a PrestaShop po prostu nie oferuje Pay by Invoice dla tego koszyka.

Dostępne terminy są obliczane z grup klienta w bieżącym koszyku. Usługa odpytuje aktywne terminy połączone przez mpr_payment_term_group, używa bieżącego języka dla nazwy i opisu terminu oraz sortuje wynik według position, a następnie days. Domyślne terminy tworzone przy instalacji obejmują Due on Receipt oraz Net 15, Net 30, Net 60 i Net 90.

Szablon checkout renderuje następnie każdy dostępny termin jako opcję radio, z pierwszym terminem zaznaczonym, jego kolorową plakietką, tekstem liczby dni do terminu oraz opcjonalnym opisem. Jeśli limit kredytowy nie jest nieograniczony, przed listą terminów pokazuje też dostępny kredyt i zaległą kwotę odroczoną.

Gdy klient wysyła opcję płatności, controller walidacji odczytuje wybrany mpr_pt_term_id, przelicza sumę koszyka, ponownie wywołuje canPlaceDeferredOrder(), tworzy zamówienie PrestaShop w skonfigurowanym statusie OS_AWAITING, wracając do bankwire, jeśli go brakuje, a następnie tworzy rekord mpr_deferred_order z kwotą, klientem, sklepem i datą płatności opartą na liczbie dni wybranego terminu.

Czy ta odpowiedź była pomocna?

Powiązane produkty

B2B Deferred Payment Terms
129,00 €

Masz jeszcze pytania?

Nie możesz znaleźć tego, czego szukasz? Wyślij nam pytanie, a odpowiemy.

Ładowanie...
Do góry