Nieopłacone zamówienia z przelewem
Wbudowane w WooCommerce ustawienie Wstrzymaj zapasy (minuty) anuluje tylko zamówienia pozostawione w statusie Oczekujące na płatność. Przelew tradycyjny (BACS) ustawia zamówienie na Wstrzymane, więc ten licznik go nie obejmuje, a nieopłacony przelew potrafi bezterminowo blokować ostatnią sztukę towaru. Ten moduł zamyka tę lukę.
Zgłoszone przez 5trid3rr w wppoland/polski#74.
Konfiguracja
Dział zatytułowany „Konfiguracja”Przejdź do Polski > Moduły i włącz Nieopłacone zamówienia z przelewem
(klucz modułu unpaid_orders), w grupie „Checkout and Orders”.
| Ustawienie | Opis | Domyślnie |
|---|---|---|
| Metody płatności, których to dotyczy | Identyfikatory bramek po przecinku | bacs |
| Wyślij przypomnienie o płatności | Czy etap przypomnienia w ogóle działa | Tak |
| Przypomnij po, godzin od daty zamówienia | Pierwszy licznik | 24 |
| Anuluj zamówienie, jeśli pozostaje nieopłacone | Czy etap anulowania w ogóle działa | Tak |
| Anuluj po, godzin od daty zamówienia | Drugi licznik | 48 |
Oba liczniki liczą się od daty zamówienia, a nie od chwili wejścia w status Wstrzymane. Zamówienie może wejść w ten status więcej niż raz, a termin dla klienta nie powinien się wtedy zaczynać od nowa.
Co się dzieje
Dział zatytułowany „Co się dzieje”- Klient składa zamówienie i wybiera przelew. WooCommerce ustawia je na Wstrzymane i zdejmuje towar ze stanu.
- Po upływie okna przypomnienia, jeśli zamówienie nadal jest nieopłacone, klient dostaje przypomnienie o płatności, a notatka do zamówienia to odnotowuje. Wysyłane jednorazowo.
- Po upływie okna anulowania, jeśli zamówienie nadal jest nieopłacone, klient dostaje informację o anulowaniu, a status zmienia się na Anulowane, co zwalnia stan magazynowy.
- Jeśli płatność wpłynie wcześniej, żaden z tych kroków się nie wykona.
Zamówienie, które w chwili pierwszego włączenia modułu jest już po oknie anulowania, zostaje anulowane od razu. Nie dostaje wezwania do zapłaty, po którym w tym samym przebiegu przychodzi informacja o anulowaniu.
Czego moduł nie ruszy
Dział zatytułowany „Czego moduł nie ruszy”Każde zamówienie jest wczytywane ponownie i sprawdzane tuż przed akcją, bo między zapytaniem a działaniem sklep mógł przyjąć płatność. Moduł zostawia zamówienie w spokoju, gdy zachodzi którykolwiek z warunków:
- status nie jest już Wstrzymane
- metoda płatności nie jest już jedną ze skonfigurowanych
- WooCommerce uznaje je za opłacone albo ma ono datę płatności
- wystawiono do niego fakturę
- złożono do niego oświadczenie o odstąpieniu
- istnieje do niego zgłoszenie zwrotu
Trzy ostatnie istnieją dlatego, że anulowanie zamówienia pod dokumentem albo pod roszczeniem konsumenta zostawia papiery wskazujące na zamówienie, którego już nie ma.
E-maile
Dział zatytułowany „E-maile”Oba e-maile to standardowe wiadomości WooCommerce. Temat, nagłówek, treść dodatkową i przełącznik edytujesz w WooCommerce > Ustawienia > E-maile:
- Unpaid order reminder (przypomnienie o płatności)
- Unpaid order cancelled (anulowanie zamówienia)
Szablony można nadpisać w motywie jak każdy e-mail WooCommerce, z katalogu
polski-pro/templates/emails/.
Harmonogram
Dział zatytułowany „Harmonogram”Moduł działa co godzinę na WP-Cron (polski_unpaid_orders_cron) i przetwarza do
50 zamówień na przebieg, więc duże zaległości są nadrabiane w kilku przebiegach,
zamiast kończyć się timeoutem. Wyłączenie modułu usuwa zaplanowane zdarzenie.
| Hook | Typ | Opis |
|---|---|---|
polski/unpaid_order/reminder |
akcja | Uruchamiana z id zamówienia przy wysyłce przypomnienia |
polski/unpaid_order/cancelled |
akcja | Uruchamiana z id zamówienia tuż przed zmianą statusu |
polski/unpaid_order/actionable |
filtr | Zwróć false, aby ochronić pojedyncze zamówienie |
// Nigdy nie anuluj automatycznie zamówień powyżej 1000 zł, te pilnuj ręcznie.add_filter('polski/unpaid_order/actionable', function (bool $ok, WC_Order $order): bool { return $order->get_total() > 1000 ? false : $ok;}, 10, 2);