Moduł Omnibus dla Prestashop
2023-01-14Niedawno weszła w życie ustawa Omnibus. Zapewne zastanawiacie się, który moduł jest najlepszy.
Ponieważ jest to pierwszy mój wpis, dlatego od razu wyjaśnię zasady. Chcę zachować neutralność i nie chcę nikogo faworyzować. Dlatego też, będę się starał wszystko umieszczać alfabetycznie, albo zgodnie z oceną (w przypadku podobnych ocen, alfabetycznie)
Czym jest w ogóle Omnibus. Jest to ustawa unijna, która ma na celu uporządkowanie kwestii cen. A raczej przeciwdziałanie tzw. sztucznym promocjom. Gdzie właściciel sklepu przed zrobieniem promocji, sztucznie zawyża cenę, aby obniżka wydawała się bardziej atrakcyjna.
Założenia dyrektywy Omnibus
- W Polsce, Dyrektywa obowiązuje od 1 stycznia 2023
- Dyrektywa omnibus ma na celu ukrócenie procederu zawyżania cen i wprowadzania sztucznych promocji.
- Dyrektywa wymaga pokazania najniższej ceny produktu z ostatnich 30 dni przed wprowadzeniem promocji.
- tzn. Jeśli dziś mamy 14 lutego, a promocja została wprowadzona 1 lutego, to sklep musi wyświetlać najniższą cenę z okresu od 1 stycznia do 31 stycznia.
- Wymóg wyświetlania najniższej ceny dotyczy tylko produktów objętych promocją.
tzn. Produkty nie objęte promocją mogą, ale nie muszą wyświetlać informacji o najniższej cenie. - Nie ma wymogu pokazywania historii ceny jako wykres, choć jest to funkcja niektórych modułów
Po przemyśleniu całej sprawy, nie będę tutaj rozważał kwestii tego jaka cena powinna być wyświetlona, a jaka nie. To zostawię prawnikom, bo to oni są za to odpowiedzialni. Ewentualnie pokażę tylko, jakie mają funkcje. I jak wygląda najniższa cena przy każdej funkcji.
Jaki jest najlepszy moduł Historii ceny dla Prestashop?
Nie odpowiem Wam, który jest najlepszy. W tym teście sprawdzamy tylko technologie użyte do stworzenia takiego modułu. Jego wydajność i kwestie technicznej.
Każdy z Was ma inne wymagania co do modułu, jego funkcji i estetyki etc. etc. Dlatego cały ten artykuł nie ma na celu pokazania, który jest najlepszy. Przybliżam w nim jedynie kwestie technicznej modułów, ponieważ większość właścicieli sklepów nie będzie w stanie przetestować tego samemu z 2 możliwych powodów: Brak wiedzy technicznej i/lub brak dostępu do modułów.
Nasi zawodnicy
Do tej pory miałem do czynienia jedynie (lub aż) z trzema modułami i ten wpis będzie o nich.
- GreenMouse – Omniprice
- SEIGI – Omnibus: Historia ceny na karcie produktu
- X13 – Historia ceny na karcie produktu – dyrektywa Omnibus
Moduły których nie testowaliśmy, a które są
- PrestaShow – sprawdzałem moduł na ich sklepie demo. Ale na żadne wdrożenie się nie zdecydowałem, bo nie potrafiłem wyświetlić na nim konkretnej informacji o cenie, a to jest wymagane przez ustawę.
- Prestahelp.com – wiem, że jest, ale nie testowałem. Jak przetestujemy go w przyszłości, to postaram się dodać go do porównania.
- Sporo innych firm oferuje, ale w dużej mierze są to oferty odsprzedaży lub instalacji na moduły GreenMouse/SEIGI/X13/Prestahelp
Najważniejsze funkcje modułów dyrektywy Omnibus
Zróbmy checklist’ę kryteriów oceny
- Możliwość schowania informacji o cenie, jeśli nie ma promocji
- Czyli, czy moduł ma opcję wyłączenia wyświetlania najniższej ceny w przypadku produktów nie objętych promocją.
- Wyświetlanie najniższej ceny z 30 dni przed promocją
- Jeśli produkt nie jest na promocji, to nie ma potrzeby wyświetlania jego najniższej ceny. Taki wymóg jest stawiany jedynie w momencie, w którym obowiązuje obniżka („cena przekreślona”)
- Wykres historii ceny
- Niektóre moduły oferują również wyświetlanie historii ceny w postaci grafu. Nie jest to wymagane przez ustawę.
- Może być to tratowane jako dodatkowy atut przez klienta, zwiększający zaufanie do marki
- Może to też umożliwić konkurencji lepsze śledzenie cen
- Wielkość bazy danych
Platforma testowa i Metodologia
Prestashop 1.7.7.8. W sklepie jest 1000 produktów, a każdy produkt zawiera 42 kombinacje atrybutów (6 kolorów i 7 rozmiarów).
- Test #1 – Cena w żadnym produkcie nie ulega zmianie przez cały miesiąc.
Zestaw 113 produktów, każdy z kombinacjami. Ilość kombinacji: 1458.- Zestaw A – Cena produktu bazowego jest zawsze stała
- Zestaw B – Cena produktu ulega zmianie codziennie, wpływ na każdą kombinację to 0zł
- Zestaw C – Cena produktu ulega zmianie codziennie, wpływ na cenę dla każdego produktu to 1zł.
- Zestaw D – Cena produktu ulega zmianie codziennie, wpływ na cenę kombinacji jest losowy.
- Test #2 – Ile zajmuje indeksacja zadania CRON i jakie generuje obciążenie.
- Test #3 – Poprawność wyświetlania danych
- Test A – Wyświetlanie zaraz po dodaniu promocji
- Test B – Sprawdzanie wyświetlania po kilku dniach promocji
- Test #4 – Wpływ na spowolnienie strony .
1000 produktów, każdy po 15 kombinacji, razem 15 000 kombinacji.- Zestaw A – Na podstawie testowego zestawu A
- Zestaw D – Na podstawie testowego zestawu D
Wszystkie moduły działają dokładnie na tym samym zestawie danych. Na jednym sklepie zainstalowane są 3 moduły jednocześnie.
Wszystkie moduły są ustawione tak, aby zbierały jak największą ilość danych. Aby porównanie było jak najbardziej rzetelne.
Testy modułów historii ceny dla Prestashop
Test #1 – Waga bazy i ilość wpisów
Najpierw sprawdźmy, jak to wygląda na wykresach.
Waga bazy danych w KB – Im mniej, tym lepiej
Ilość wpisów w bazie danych – Im mniej, tym lepiej
W tym teście najlepiej wypada moduł od SEIGI. Najbardziej bazę danych obciąża moduł X13. Z tego co widziałem po wpisach, moduł od SEIGI nie zapisuje wszystkich danych.
Test #2 – Szybkość indeksacji CRON
Czas jaki działa zadanie CRON bardzo dobrze pokazuje ile operacji musi wykonać dany moduł, aby zindeksować wszystkie ceny.
OmniPrice i X13 mają identyczne wyniki (zapewne używają podobnej metody).
Moduł od SEIGI jest znacznie szybszy.
Zapewne jest to powiązane z tym, że moduł SEIGI zapisuje mniej do bazy danych.
Czas podany w sekundach
Test #3 – Poprawność wyświetlania historii cen
Chyba jeden z najważniejszych aspektów. Tzn poprawność działania modułu. Sprawdzimy tutaj, które moduły poprawnie wyświetlają cenę. tj. najniższą cenę na 30 dni przed wprowadzeniem promocji, zgodnie z deklaracjami producentów.
Tutaj wykonywałem zwiększanie cen tym samym sposobem co Test #1C i #1D. Symulując 50 dni używania modułu. Promocja jest zaplanowana na 40 dzień.

Najlepiej, zobaczcie sami. Promocje zaczynają się od 2 minuty filmu, więc można przewinąć.
Użyłem CSS do ostylowania która cena należy do którego modułu, dla lepszej czytelności.
Skrypty testujące
Metoda testowania polegała na przesuwaniu daty na serwerze i zmiany ceny każdego dnia, następnie na indeksacji ceny każdego dnia. Poniżej załączam skrypty, które mi w tym zadaniu pomagały.
date --set="2023-01-01 10:00:00"
php omnibus_price_increase.php
php modules/gm_omniprice/cron.php
php modules/seigipricehistory/cron.php action=saveAll
wget -O- "http://example.com/index.php?token=twojtokenbezpieczenstwa&action=index&fc=module&module=x13pricehistory&controller=cron&id_lang=1"
Powyższy skrypt należy uruchomić 50 razy, zmieniając za każdym razem datę o 1 dzień.
Promocję w sklepie, proszę ustawić tak, aby rozpoczęła się 40 dnia.
Skrypt do testów B
require_once __DIR__ .'/config/config.inc.php';
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_shop SET `price` = `price` + 1');
Skrypt do testów C
require_once __DIR__ .'/config/config.inc.php';
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_shop SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_attribute SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_attribute_shop SET `price` = `price` + 1');
Skrypt do testów D
require_once __DIR__ .'/config/config.inc.php';
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_shop SET `price` = `price` + 1');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_attribute SET `price` = FLOOR( 1 + RAND( ) *3 )');
Db::getInstance()->query('UPDATE '._DB_PREFIX_.'product_attribute_shop SET `price` = FLOOR( 1 + RAND( ) *3 )');
Testy wykonywalem kilkukrotnie. Wersje na których były przeprowadzane testy:
X13 to 1.3.0 , SEIGI to 1.4.1 i OmniPrice 1.0.5
Jeśli masz dostęp do któregoś z modułów i masz ochotę również przetestować, to zachęcam do podzielenia się swoimi wynikami w komentarzu.


Seigi to zawsze była klasa. Przemyślane rozwiązania i do tego szybki support.
Ja używam modułu od seigi. w 100% spełnia swoje zadanie.
Używaliśmy tego od X13, ale spowalniał sklep. Na tym od seigi jest o wiele lepiej.
Pouczająca lektura! Doceniam szczegółowość i dokładność. Szkoda tylko, że niektóre fragmenty są zbyt techniczne dla laików. Mimo to, świetne źródło wiedzy!
seigi zdecydowanie najlepszy. Działa idealnie z ich integracją do GA4. Zmieniliśmy na 3 sklepach moduły na te od seigi i wszystko działa super.