Obowiązek wynika z ustawy o informowaniu o cenach towarów i usług, która wdraża unijną dyrektywę o wskazywaniu cen. Treść jest prosta: przy każdym ogłoszeniu obniżki ceny trzeba podać najniższą cenę tego towaru z trzydziestu dni poprzedzających obniżkę. Jeżeli towar jest w sprzedaży krócej niż trzydzieści dni — najniższą cenę od początku oferowania.
Wyliczenie takiej kwoty to kilka linii kodu. Problem leży gdzie indziej.
Rejestr, nie pole w produkcie
Najprostsze wdrożenie zapisuje wyliczoną kwotę w metadanych produktu i pokazuje ją na karcie. Działa do pierwszej kontroli — bo pytanie brzmi wtedy nie „co pokazujecie”, tylko „na jakiej podstawie”.
Kwota bez historii, z której powstała, jest deklaracją. Dopiero historia jest dowodem.
Dlatego historię cen prowadzimy jako ciąg wyłącznie dopisywany, w osobnej tabeli, a nie w metadanych produktu. Trzy skutki tej decyzji:
- Nic z rejestru nie znika przy zapisie produktu — a produkty bywają zapisywane masowo, importem albo integracją z magazynem.
- Rejestr da się wyeksportować w całości i przekazać jako załącznik.
- Dla każdej pokazanej kwoty da się wskazać wpisy, z których została policzona, razem z datami.
Czego rejestr świadomie nie robi
Zakres obowiązku jest węższy, niż podpowiada intuicja, a nadgorliwość w tym miejscu kosztuje wiarygodność komunikatu przy każdym produkcie.
Cena wprowadzająca nie jest obniżką. Kiedy nowy produkt startuje z niższą ceną, która po czasie ma wzrosnąć, komunikat brzmi „teraz taniej, potem drożej”, a nie „było drożej, jest taniej”. Linia o najniższej cenie z trzydziestu dni nie ma tu czego opisywać, więc się nie pokazuje.
Rabaty koszykowe i kody rabatowe nie zmieniają ceny towaru, więc nie trafiają do rejestru. Zastrzeżenie jest jednak istotne: jeżeli kod jest ogłaszany jako obniżka ceny konkretnego towaru, obowiązek dotyczy tego ogłoszenia — i trzeba go obsłużyć tam, gdzie ono stoi, a nie udawać, że problem nie istnieje, bo mechanizm rabatu leży gdzie indziej.
Warianty produktów są zapisywane, ale nie wyświetlane w sklepie, który wariantów nie sprzedaje. Dane do audytu są kompletne, bo kompletne muszą być zawsze — ale kod rysujący linię na karcie produktu wariantowego byłby kodem nigdy nieuruchomionym. Taki kod nie jest gotowością na przyszłość, tylko nieprzetestowaną powierzchnią, która zepsuje się dokładnie w dniu, w którym pierwszy raz się wykona.
Wniosek szerszy niż jeden przepis
Wymagania prawne w sklepie mają wspólną cechę: rzadko chodzi w nich o to, co widzi klient, a prawie zawsze o to, co da się odtworzyć po fakcie. Warto to rozstrzygnąć na początku, bo różnica między „pokazujemy właściwą kwotę” a „potrafimy uzasadnić każdą pokazaną kwotę” to różnica w projekcie bazy danych, a nie w szablonie.
Wszystkie wpisy