Custom Order Numbering — Dokumentacja
Zastąp losowe referencje zamówień PrestaShop, takie jak XKBHMQWNY, uporządkowanymi referencjami, które zespół odczyta od razu. Order Number pozwala budować referencje z tagów daty, tagów liczników, kontekstu sklepu/klienta, prefiksów i sufiksów, na przykład ORD-2026-000001.
Order Number
Natywne referencje zamówień PrestaShop są unikalne, ale nie są czytelne dla obsługi klienta, księgowości ani wewnętrznej obsługi zamówień. Order Number rozwiązuje ten problem, generując sformatowaną referencję podczas tworzenia nowego zamówienia.
Typowy format może pokazywać rok, miesiąc i pozycję zamówienia:
ORD-{YYYY}-{NNNNNN}
Przykład podglądu:
ORD-2026-000042
Moduł obsługuje PrestaShop 1.6 do 9.0 (latest), PHP 7.1+. Nadal wspieramy również nadchodzące wersje PrestaShop.
Jak to działa
Definiujesz wzorzec referencji w Format Builder modułu. Gdy klient składa zamówienie, moduł generuje następną referencję na podstawie tego wzorca i zapisuje dla niej wpis audytowy.
W wersjach PrestaShop z natywnym hookiem referencji dokumentu moduł używa:
actionGenerateDocumentReference
actionValidateOrder
W starszych wersjach, w których ten hook nie jest dostępny, moduł używa dołączonego override Order::generateReference(), dzięki czemu nowe zamówienia nadal mogą otrzymywać Twoją własną referencję.
Istniejące zamówienia zachowują swoje obecne referencje. Moduł wpływa tylko na nowe referencje generowane po jego instalacji i konfiguracji.
Moduł rozszerza także kolumny referencji zamówień, aby umożliwić dłuższe, uporządkowane referencje:
orders.reference VARCHAR(64)
order_payment.order_reference VARCHAR(64)
Instalacja
- W Back Office przejdź do Modules → Module Manager
- Kliknij Upload a module i wybierz plik ZIP
- Po instalacji kliknij Configure
- Otwórz Improve → Order Numbering
Moduł dodaje te strony Back Office:
Order Numbering
- Dashboard
- Format Builder
- Generated References
- Settings
Konfiguracja
Wzorzec formatu
Główne ustawienie to wzorzec używany do budowania każdej referencji zamówienia.
Domyślny wzorzec:
{YYYY}/{MM}/{NNNNNN}
Przykładowy wynik:
2026/06/000042
Popularne przykłady wzorców:
ORD-{YYYY}-{NNNNNN}
{YYYY}/{MM}/{NNNNNN}
SHOP-{SHOP_ID}-{YYYY}-{NNNNN}
{COUNTRY}-{YYYY}-{MM}-{NNNNNN}
W przypadku numeracji per klient dodaj specyficzny dla klienta lub losowy wyróżnik, aby referencje pozostały globalnie unikalne:
CUST-{CUSTOMER_ID}-{CUSTOMER_NNNN}
{CUSTOMER_REF}-{CUSTOMER_NNNN}
Prefiks i sufiks
Możesz także dodać statyczny prefiks i sufiks wokół wzorca.
Rzeczywiste klucze konfiguracji używane przez moduł:
order_prefix=ORD-
order_format={YYYY}-{NNNNNN}
order_suffix=
Daje to:
ORD-2026-000042
Reset licznika
Wybierz, kiedy licznik ma się resetować:
never
yearly
monthly
daily
Jeśli wybierzesz yearly, wzorzec musi zawierać {YYYY} lub {YY}.
ORD-{YYYY}-{NNNNNN}
Jeśli wybierzesz monthly, wzorzec musi zawierać tag roku i {MM}.
ORD-{YYYY}-{MM}-{NNNNNN}
Jeśli wybierzesz daily, wzorzec musi zawierać tag roku, {MM} i {DD}.
ORD-{YYYY}-{MM}-{DD}-{NNNN}
Zakres licznika
Wybierz sposób zliczania:
global
customer
global używa jednej sekwencji na sklep.
ORD-{YYYY}-{NNNNNN}
customer pozwala każdemu klientowi mieć własną sekwencję, ale format nadal musi zawierać unikalny tag klienta lub tag losowy.
C-{CUSTOMER_ID}-{CUSTOMER_NNNN}
Ustawienie następnego numeru
Użyj Set Next Number, gdy chcesz, aby następne zamówienie zaczęło się od określonego numeru, na przykład po migracji z innego systemu zamówień.
order_start_number=5000
Następna wygenerowana referencja użyje tej wartości jeden raz, a potem ustawienie zostanie automatycznie wyczyszczone.
Dostępne tagi
Format Builder pokazuje tagi dostępne dla referencji zamówień. Najbardziej przydatne to:
{YYYY} Full year, e.g. 2026
{YY} 2-digit year, e.g. 26
{MM} Month, e.g. 06
{DD} Day, e.g. 16
{QUARTER} Quarter, e.g. Q2
{WEEK} ISO week, e.g. 25
{N} Counter without padding
{NN} Counter padded to 2 digits
{NNN} Counter padded to 3 digits
{NNNN} Counter padded to 4 digits
{NNNNN} Counter padded to 5 digits
{NNNNNN} Counter padded to 6 digits
{NNNNNNN} Counter padded to 7 digits
{NNNNNNNN} Counter padded to 8 digits
{GLOBAL_NNNNNN} Global shop counter
{CUSTOMER_NNNN} Per-customer counter
{CUSTOMER_ID} Customer ID
{CUSTOMER_EMAIL} Customer email prefix
{CUSTOMER_REF} Stable secure customer reference
{COUNTRY} Delivery country ISO code
{SHOP_ID} Shop ID
{SHOP_NAME} Shop name
{CART_ID} Cart ID
{RAND6} Random 6-letter code
{RAND9} Random 9-letter code
Niektóre tagi dokumentu są celowo niedostępne w momencie, gdy PrestaShop tworzy referencję zamówienia, ponieważ zamówienie lub faktura jeszcze wtedy nie istnieje:
{ORDER_ID}
{INVOICE_ID}
{DOC_TYPE}
{PAYMENT}
Ustawienia domyślne
Po instalacji moduł startuje z tymi wartościami domyślnymi:
enabled=1
order_format={YYYY}/{MM}/{NNNNNN}
order_reset_mode=yearly
order_counter_scope=global
order_start_number=
order_prefix=
order_suffix=
Dziennik wygenerowanych referencji
Każda wygenerowana referencja jest zapisywana w dzienniku audytowym tylko do odczytu. Dziennik zapisuje:
id_order
id_cart
id_customer
id_shop
counter_value
format_pattern
formatted_reference
date_add
Pomaga to sprawdzić, jakiego wzorca użyto dla referencji, oraz powiązać wygenerowaną referencję z zamówieniem, gdy PrestaShop zakończy jego tworzenie.
Multi-Shop
Liczniki są przechowywane per sklep. W instalacji multi-shop każdy sklep ma własne id_shop w tabeli liczników, dzięki czemu każdy sklep może utrzymywać własną sekwencję numeracji.
Przydatny wzorzec multi-shop to:
{SHOP_ID}-{YYYY}-{NNNNNN}
Albo, jeśli każdy sklep reprezentuje kraj lub markę, użyj statycznego prefiksu per sklep:
DE-{YYYY}-{NNNNNN}
FR-{YYYY}-{NNNNNN}
Wskazówki
- Używaj
{YYYY}w większości formatów, aby rok był widoczny bez otwierania zamówienia. - Używaj
{MM}, jeśli resetujesz liczniki co miesiąc albo chcesz grupować referencje według miesiąca. - Użyj wystarczającej liczby cyfr dla swojego wolumenu zamówień.
{NNNNN}daje pięć cyfr;{NNNNNN}daje sześć. - Skonfiguruj wzorzec przed uruchomieniem produkcyjnym. Późniejsza zmiana formatu jest dozwolona, ale przyszłe zamówienia będą wyglądać inaczej niż starsze.
- Dla liczników per klient dodaj
{CUSTOMER_ID},{CUSTOMER_REF},{CART_ID},{RAND6},{RAND7},{RAND8}lub{RAND9}, aby referencje pozostały unikalne. - Utrzymuj referencje poniżej 64 znaków. Moduł sprawdza wygenerowany podgląd względem tego limitu.
Najczęściej zadawane pytania
Czy istniejące zamówienia otrzymają nowe referencje?
Nie. Istniejące zamówienia zachowują swoje oryginalne referencje PrestaShop. Tylko nowe zamówienia używają własnego formatu.
Czy klienci mogą zobaczyć nową referencję zamówienia?
Tak. To normalna referencja zamówienia PrestaShop, więc klienci widzą ją wszędzie tam, gdzie sklep wyświetla referencję zamówienia, na przykład na stronach konta klienta, w e-mailach zamówień i na fakturach.
Co się stanie, jeśli dwa zamówienia zostaną złożone w tym samym momencie?
Licznik jest zwiększany wewnątrz transakcji bazy danych z użyciem SELECT ... FOR UPDATE, więc każde zamówienie otrzymuje własną wartość licznika.
Czy mogę dodać miesiąc do referencji?
Tak. Użyj {MM}.
ORD-{YYYY}-{MM}-{NNNNNN}
Czy mogę resetować licznik co miesiąc?
Tak. Ustaw tryb resetowania na monthly i dodaj {YYYY} lub {YY} oraz {MM} do wzorca.
{YYYY}/{MM}/{NNNNNN}
Czy mogę resetować licznik codziennie?
Tak. Ustaw tryb resetowania na daily i dodaj {YYYY} lub {YY}, {MM} oraz {DD}.
{YYYY}/{MM}/{DD}/{NNNN}
Czy każdy klient może mieć własny licznik?
Tak. Ustaw zakres licznika na customer i dodaj do formatu unikalny tag klienta lub tag losowy.
C-{CUSTOMER_ID}-{CUSTOMER_NNNN}
Co się stanie, jeśli własna numeracja zostanie wyłączona?
PrestaShop wróci do standardowego generowania losowych referencji.
Co się stanie, jeśli format jest nieprawidłowy?
Moduł odmawia zapisania nieprawidłowych formatów w Format Builder. Jeśli podczas tworzenia zamówienia zostanie wykryta nieprawidłowa konfiguracja, moduł zapisze problem w logu i nie zwróci własnej referencji dla tego zamówienia.
Co się stanie, jeśli zamówienie zostanie anulowane?
Zamówienie zachowuje referencję, która została mu przypisana. Moduł nie używa ponownie numerów już wygenerowanych dla zamówień.