Zarządzanie Terminami Przydatności i Datą Minimalnej Trwałości: dokumentacja
Instalacja i obsługa zarządzania partiami z terminem przydatności i datą minimalnej trwałości: FEFO, automatyczne promocje, partie przeterminowane, cron i alerty.
Instalacja
Moduł instaluje się jak każdy inny moduł PrestaShop, bez zależności i bez Composera.
- W panelu administracyjnym otwórz Moduły → Menedżer modułów.
- Kliknij Zainstaluj moduł i wskaż plik
dfdlc-1.0.0.zip. - Po zakończeniu instalacji kliknij Konfiguruj.
Podczas instalacji moduł tworzy dwie tabele (partie i ruchy magazynowe), dodaje zakładkę Katalog → Partie i terminy oraz rejestruje cztery hooki: displayHeader, displayProductAdditionalInfo, actionValidateOrder i actionProductDelete.
Jeśli zakładka Partie i terminy nie pojawi się od razu w menu Katalog, wyczyść pamięć podręczną PrestaShop w Zaawansowane → Wydajność, po czym zaloguj się ponownie do panelu.
Termin przydatności a data minimalnej trwałości
Moduł rozróżnia dwa typy dat i nie jest to różnica kosmetyczna: to ona decyduje, na jakie automatyczne działania moduł sobie pozwala.
Termin przydatności do spożycia
Oznaczenie „należy spożyć do”. Dotyczy produktów łatwo psujących się mikrobiologicznie. Po tej dacie produkt uznaje się za niebezpieczny, a jego sprzedaż jest zabroniona. Do partii z terminem przydatności moduł stosuje więc automatyczne działania na stanie magazynowym oraz, jeśli chcesz, dezaktywację produktu.
Data minimalnej trwałości
Oznaczenie „najlepiej spożyć przed”. Sygnalizuje utratę jakości, a nie ryzyko zdrowotne. Produkt pozostaje legalnie sprzedawalny po tej dacie, pod warunkiem czytelnej informacji dla klienta. Moduł ogranicza się więc do dezaktywacji przeterminowanej partii: przy dacie minimalnej trwałości nigdy nie zdejmuje stanu i nigdy nie dezaktywuje produktu.
Wybieraj typ daty uważnie przy tworzeniu każdej partii. To właśnie to pole, i tylko ono, uruchamia lub nie automatyczne działania na stanie po upływie terminu.
Konfiguracja modułu
Strona konfiguracji zbiera wszystkie ustawienia, adres zadania cron oraz szybki przegląd stanu partii.
Wyświetlanie w sklepie
- Pokaż datę na karcie produktu: wyświetla datę najbliższej dostępnej partii, z oznaczeniem dopasowanym do typu daty.
- Próg odznaki krótkiej daty (dni): poniżej tej liczby pozostałych dni obok daty pojawia się odznaka „Krótka data”. Wartość domyślna: 10 dni.
Automatyczne promocje
- Włącz automatyczne promocje: uruchamia lub całkowicie wyłącza mechanizm.
- Stosuj rabat od (dni): okno przed datą graniczną, w którym partia staje się kwalifikowalna. Wartość domyślna: 15 dni.
- Procent rabatu: stosowana stawka, od 1 do 90%. Wartość domyślna: 30%.
Obsługa partii przeterminowanych
Dostępne są trzy tryby, od najostrożniejszego po najbardziej automatyczny:
- Tylko dezaktywuj partię, bez żadnej akcji na stanie. Wybierz ten tryb, jeśli wolisz rozstrzygać każdy przypadek ręcznie.
- Dezaktywuj partię i zdejmij jej pozostałą ilość ze stanu, co natychmiast wyrównuje stan PrestaShop z rzeczywistością magazynu. To tryb zalecany.
- Zdejmij stan i dezaktywuj produkt, jeśli nie pozostała żadna ważna partia, co zapobiega sprzedaży artykułu, którego cały stan jest przeterminowany.
Alerty
- Próg alertu (dni przed upływem terminu): okno nadzoru dla e-maila podsumowującego. Wartość domyślna: 30 dni.
- E-mail odbiorcy: pozostaw puste, aby użyć adresu sklepu.
Tworzenie i zarządzanie partiami
Przejdź do Katalog → Partie i terminy. Lista pokazuje partie posortowane rosnąco według daty upływu terminu, z kolorowym oznaczeniem i liczbą pozostałych dni. Dwa wskaźniki na górze strony przypominają liczbę wciąż aktywnych partii przeterminowanych oraz liczbę partii bliskich terminu.
Dodawanie partii
- Kliknij Dodaj partię.
- Wpisz co najmniej dwa znaki w polu Produkt: wyszukiwarka zaproponuje pasujące produkty. Wybierz jeden.
- Jeśli produkt ma warianty, pojawi się drugie pole. Pozostaw „Wszystkie warianty”, aby przypiąć partię do całego produktu, albo wybierz konkretny wariant.
- Uzupełnij numer partii, typ daty, datę graniczną i przyjętą ilość.
- Referencja dostawcy i notatka są opcjonalne, ale przydatne w razie wycofania partii z obrotu.
Na jednym produkcie możesz mieszać oba poziomy: kilka partii przypiętych do konkretnego wariantu i jedną partię ogólną na poziomie produktu. Zdejmowanie stanów najpierw konsumuje partie zamówionego wariantu, a potem partie produktu.
Edycja lub usuwanie partii
Edycja pozwala skorygować ilość (na przykład po inwentaryzacji) albo poprawić datę. Usunięcie partii kasuje również powiązaną regułę cenową, jeśli trwała automatyczna promocja, a także jej historię ruchów.
Eksport
Przycisk eksportu listy generuje CSV z partiami, z uwzględnieniem zastosowanych filtrów i sortowania. Przydatne przy kontroli jakości lub inwentaryzacji.
Zdejmowanie stanów FEFO
FEFO oznacza First Expired, First Out: partia z najbliższą datą schodzi pierwsza. Nie wymaga to żadnych ustawień, mechanizm działa automatycznie.
Przy walidacji zamówienia, dla każdej pozycji produktu, moduł:
- zbiera aktywne partie produktu, które mają jeszcze dostępną ilość;
- ustawia na początku te przypięte do dokładnie zamówionego wariantu, a potem te przypięte do produktu;
- sortuje ten podzbiór rosnąco według daty upływu terminu;
- odejmuje zamówioną ilość, przechodząc tę listę partia po partii.
Przykład: zamówienie 10 sztuk wobec partii 4 sztuk (upływającej 12 sierpnia) i partii 8 sztuk (upływającej 3 października) skonsumuje 4 sztuki z pierwszej partii, a następnie 6 sztuk z drugiej. Oba ruchy są rejestrowane osobno, z tym samym zamówieniem źródłowym.
Zdejmowanie FEFO jest niezależne od stanu PrestaShop, który dalej działa normalnie. Moduł prowadzi podział tego stanu na datowane partie; stan PrestaShop pozostaje punktem odniesienia dla dostępności w sprzedaży.
Automatyczne promocje na krótkie daty
Gdy partia wchodzi w skonfigurowane okno, cron tworzy na produkcie katalogową regułę cenową (standardową specific price PrestaShop):
- rabat procentowy według zdefiniowanej stawki;
- data początkowa: dzień utworzenia;
- data końcowa: data przeterminowania partii, o 23:59.
Promocja wygasa więc sama w terminie, nie zostawiając osieroconej reguły w katalogu. Moduł tworzy tylko jedną promocję naraz na produkt, nawet jeśli kilka partii wejdzie w okno jednocześnie.
Po stronie klienta rabat wyświetla się normalnie na karcie produktu, a odznaka „Krótka data” pokazuje bieżący procent.
Utworzona reguła to standardowa katalogowa reguła cenowa, podlegająca tym samym mechanizmom priorytetów co pozostałe reguły. Jeśli stosujesz już szerokie rabaty katalogowe, zweryfikuj spójność priorytetów przed włączeniem automatycznych promocji.
Konfiguracja zadania cron
Zdejmowanie FEFO działa bez crona, bo uruchamiają je zamówienia. Natomiast trzy procesy wymagają codziennego wywołania: automatyczne promocje, obsługa partii przeterminowanych i alert e-mail.
Adres zabezpieczony tokenem jest widoczny na stronie konfiguracji modułu. Ma następującą postać:
https://twoj-sklep.com/index.php?fc=module&module=dfdlc&controller=cron&token=TWOJ_TOKEN
Zaplanuj jedno wywołanie dziennie, najlepiej wcześnie rano. Dwie popularne metody:
- Cron u Twojego hostingodawcy: dodaj codzienne zadanie wywołujące adres przez
wgetlubcurl. - Usługa zewnętrzna: dowolny internetowy serwis cron przyjmie ten adres.
Odpowiedź to JSON opisujący wykonanie:
{
"success": true,
"promos_applied": 3,
"expired": {
"lots_deactivated": 2,
"stock_deducted": 7,
"products_disabled": 0
},
"alerts_sent": 5
}
Ten format można bezpośrednio wykorzystać w narzędziu monitorującym, dzięki czemu automatyzacja nie działa w ciemno.
Token jest generowany losowo przy instalacji. Jeśli podejrzewasz, że wyciekł, przeinstaluj moduł, aby wygenerować nowy, i pamiętaj o aktualizacji zaplanowanego zadania.
Alerty e-mail
Przy każdym uruchomieniu crona moduł wyszukuje partie, których data wchodzi w okno alertu i które nie zostały jeszcze zgłoszone. Jeśli takie znajdzie, wysyła jeden zbiorczy e-mail wymieniający dla każdej partii: numer, produkt, typ daty, termin i pozostałą ilość.
Każda partia jest zgłaszana tylko raz, dzięki znacznikowi w bazie. Nie otrzymujesz więc tego samego przypomnienia codziennie.
Szablony e-maili są dostarczane po francusku i angielsku w katalogu mails/ modułu. Możesz je dowolnie dostosować albo dodać kolejne języki, duplikując istniejący katalog.
Wyświetlanie na karcie produktu
Moduł używa hooka displayProductAdditionalInfo, obecnego w motywach Classic, Hummingbird i zdecydowanej większości motywów zewnętrznych. Blok wyświetla:
- oznaczenie dopasowane do typu daty: „Należy spożyć do” dla terminu przydatności, „Najlepiej spożyć przed” dla daty minimalnej trwałości;
- datę najbliższej dostępnej partii;
- odznakę „Krótka data” po przekroczeniu progu, z procentem rabatu, jeśli trwa promocja.
Jeśli produkt nie ma żadnej aktywnej partii ze stanem i ważną datą, nic się nie wyświetla: na karcie nie pojawia się pusta ramka.
Dostosowanie wyglądu
Render jest wydzielony w szablonie views/templates/hook/product-expiry.tpl, a style w views/css/front.css. Możesz nadpisać szablon z poziomu motywu, aby zmienić położenie lub formatowanie, bez modyfikowania modułu.
Identyfikowalność i wycofanie partii
Każde zejście ze stanu jest rejestrowane w tabeli ruchów z daną partią, ilością i zamówieniem źródłowym. Na podstawie numeru partii możesz więc odtworzyć listę zamówień, które ją skonsumowały.
To podstawa procedury wycofania z obrotu. Moduł dostarcza surowe dane; sama procedura wycofania (poinformowanie klientów, obsługa zwrotów, ewentualne zgłoszenie do organów) należy do Twojej organizacji jakości.
Najczęstsze pytania
Czy moduł zastępuje stany PrestaShop?
Nie, uzupełnia je. Ilości PrestaShop pozostają punktem odniesienia dla sprzedaży. Moduł równolegle prowadzi podział tego stanu na datowane partie. W trybie zdejmowania stanu koryguje ilość PrestaShop, gdy przeterminowana partia z terminem przydatności zostaje wycofana, aby oba widoki pozostały spójne.
Co się dzieje, jeśli moje partie nie pokrywają całego stanu?
Nic blokującego. Zdejmowanie FEFO konsumuje tylko to, co jest dostępne w partiach; gdy partie się wyczerpią, zamówienie przebiega normalnie i odejmowana jest tylko ilość PrestaShop. Uzupełniaj wpisy partii na bieżąco przy przyjęciach dostaw.
Czy mogę wpisać partię z datą już przeszłą?
Tak, ale przy najbliższym uruchomieniu crona zostanie potraktowana jako przeterminowana. Dla historii lepiej wpisać ją z prawdziwą datą i pozwolić modułowi działać.
Czy moduł jest zgodny z multisklepem?
Tak. Każda partia jest przypięta do sklepu, w którym została utworzona, a zdjęcia stanów są stosowane w tym sklepie.
Co się dzieje przy odinstalowaniu?
Obie tabele są usuwane, zakładka administracyjna znika, a hooki są wyrejestrowywane. Partie i ich historia nie są zachowywane: zrób kopię bazy, jeśli planujesz ponowną instalację.