Gdzie przechowywać partie i daty ważności - ERP, WMS czy sklep
Pierwsza decyzja w projekcie to wybór systemu, który jest właścicielem partii. Zasada jest ta sama co przy zwykłych stanach: jeden system jest źródłem prawdy, a reszta dostaje wynik. Przy integracji z magazynem zewnętrznym lub własnym WMS warto przeczytać nasz tekst o tym, jak działa integracja WMS ze sklepem i marketplace, bo to WMS najczęściej przejmuje partie, gdy magazyn ma lokalizacje i skanery.
| Dane | Gdzie przechowywać | Do czego służą |
|---|
| Numer partii i data ważności | ERP lub WMS | Stan per partia, wydania FEFO, wycofania |
| Próg minimalnej pozostałej trwałości | Integracja lub ERP | Wyliczanie stanu dostępnego do sprzedaży |
| Stan dostępny do sprzedaży | Wysyłany do sklepu i marketplace | Oferta widoczna dla klienta |
| Partia wydana do zamówienia | WMS, ERP i kopia przy zamówieniu | Identyfikowalność i reklamacje |
| Informacja o krótkiej dacie | Sklep (atrybut lub osobny produkt) | Wyprzedaż produktów z krótkim terminem |
Jeśli w firmie nie ma WMS, a ERP prowadzi dostawy jako partie, logika stanu dostępnego może działać w ERP albo w middleware między ERP a kanałami. Jeśli ERP nie zna partii, nie próbuj przenosić ich do sklepu. Wtedy lepiej wdrożyć prosty moduł magazynowy z partiami albo integrator obsługujący magazyn, a ERP zostawić do dokumentów i księgowości.
Zanim zdecydujesz, sprawdź u dostawcy ERP lub WMS kilka rzeczy, bo od nich zależy zakres prac programistycznych. Czy system zapisuje partię i datę przy przyjęciu, czy tylko przy wydaniu? Czy API zwraca stan w podziale na partie, czy wyłącznie sumę? Czy da się zablokować partię tak, żeby nie była wydawana? Czy dokument wydania zawiera numer partii, który można przekazać do zamówienia? Jeśli odpowiedź na pytanie o API brzmi nie, integracja będzie musiała odtwarzać partie z dokumentów, a to zwykle oznacza więcej pracy i więcej miejsc na błędy.
[#chart:wpr59b]
Kody GS1 z partią i datą ważności w integracjach
Przy przyjęciu dostawy najwięcej błędów powstaje przy ręcznym przepisywaniu dat i numerów partii z etykiet. Dlatego warto skanować kody, które niosą te dane. Standard GS1 przewiduje identyfikatory zastosowania (AI), które dopisują do kodu GTIN dodatkowe informacje. Najważniejsze dla żywności to AI (10) - numer partii, AI (15) - data minimalnej trwałości oraz AI (17) - data ważności lub termin przydatności. Daty zapisuje się sześcioma cyframi w układzie RRMMDD, a numer partii ma zmienną długość. Przykład zapisu z materiałów GS1 Polska: (01)09521207311511 (17)301231 (10)PX8L, czyli GTIN, data 31.12.2030 i partia PX8L.
Takie kody występują na etykietach logistycznych GS1-128 i w kodach 2D. Integracja przyjęcia dostawy powinna je parsować, zapisywać partię i datę w ERP lub WMS i od razu tworzyć rekord partii ze stanem. Jeśli dostawca nie oznacza dostaw kodami z partią i datą, warto o to zapytać, zanim zaczniesz budować ręczne formularze przyjęcia.
Parsuj kod według identyfikatorów AI, a nie według pozycji znaków - pola zmiennej długości kończą się separatorem.
Zapisuj datę jako datę, a nie tekst - tylko wtedy da się sortować partie według FEFO.
Rozróżniaj w danych typ daty (AI 15 lub AI 17), bo próg sprzedaży może być inny dla żywności z terminem przydatności.
Przechowuj surowy odczyt kodu obok sparsowanych pól, żeby łatwo wyjaśniać rozbieżności.
Stany w ERP a stany w sklepie - jak je przeliczać przy datach ważności
Stan wysyłany do sklepu w branży spożywczej to nie suma wszystkich partii. Wzór, który sprawdza się w praktyce, wygląda tak: suma sztuk z partii, których data ważności jest dalej niż próg minimalnej trwałości, minus sztuki zarezerwowane w niewysłanych zamówieniach. Próg liczy się od dnia przewidywanej dostawy, a nie od dziś, bo produkt musi mieć ważność także w dniu, w którym klient go odbierze.
Takie przeliczenie powinno działać nie tylko po sprzedaży i przyjęciu dostawy, ale też raz na dobę, bo każdego dnia część partii przekracza próg i bez żadnej transakcji wypada ze stanu. To częsty błąd w integracjach przeniesionych z branż, w których stan zmienia się tylko przy ruchach magazynowych. Podobny problem znają sklepy z kosmetykami, o czym piszemy we wpisie sklep z kosmetykami na WooCommerce - skład INCI, terminy ważności i zwroty.
Produkty z krótką datą - osobny SKU czy atrybut
Partie poniżej progu można sprzedać taniej, ale klient musi wiedzieć, co kupuje. Najprostsze technicznie rozwiązanie to osobny produkt w sklepie, np. z dopiskiem o krótkim terminie i własnym SKU, do którego integracja kieruje stany z partii poniżej progu. Dzięki temu oferta podstawowa nigdy nie sprzeda sztuki z krótką datą, a wyprzedaż ma własną cenę i opis z datą ważności.
Daty ważności a sprzedaż na marketplace
Na marketplace obowiązuje ta sama logika, ale próg bywa wyższy. Zamówienie z marketplace często jedzie dłużej, bo klient wybiera punkt odbioru, a reklamacja z powodu krótkiej daty uderza w oceny konta. Dlatego integracja powinna pozwalać ustawić próg osobno dla każdego kanału. Wtedy sklep własny może sprzedawać partię z krótszym terminem, a oferty na marketplace dostają tylko partie z większym zapasem dni. Zasady dotyczące terminów i opisów produktów spożywczych sprawdź w regulaminie każdego marketplace, na którym sprzedajesz.
Wycofanie produktu i zwroty - jak integracja korzysta z partii
Prawdziwy test integracji z partiami przychodzi wtedy, gdy dostawca albo inspekcja informuje o wycofaniu konkretnej partii. Jeśli przy zamówieniach nie zapisano numerów partii, sklep musi kontaktować się ze wszystkimi klientami, którzy kupili produkt w danym okresie, a często i tak nie ma pewności, kto dostał wadliwy towar. Jeśli partia jest zapisana przy każdej wysyłce, wystarczy jedno zapytanie do bazy: lista zamówień, klientów i kanałów sprzedaży dla danego numeru partii.
Równolegle integracja powinna umieć zablokować partię jednym ruchem. Zablokowana partia znika ze stanu dostępnego we wszystkich kanałach, a niewysłane zamówienia, które miały ją przypisaną, wracają do ponownej kompletacji z innej partii albo do kontaktu z klientem. Takie działanie trzeba zaprojektować z góry, bo w chwili wycofania nie ma czasu na ręczne poprawki w trzech systemach.
Podobnie wygląda obsługa zwrotów i reklamacji. Produkt spożywczy, który wrócił od klienta, zwykle nie wraca do sprzedaży, ale jego partia powinna zostać odnotowana, bo kilka reklamacji z tej samej partii to sygnał problemu u dostawcy. Integracja zwrotów powinna więc przyjmować zwrot na osobny stan, np. do utylizacji lub zwrotu do dostawcy, a nie z powrotem na stan dostępny. Czy dany produkt można w ogóle zwrócić, zależy od przepisów i rodzaju żywności - to kwestia do ustalenia z prawnikiem.
[#przyklad] Dostawca informuje o wycofaniu partii jogurtu z datą 14.07. Sklep blokuje partię w WMS. Integracja zdejmuje te sztuki ze stanu w sklepie i na marketplace, wstrzymuje trzy niewysłane zamówienia z tą partią i generuje listę dwunastu wysłanych zamówień z danymi kontaktowymi klientów do powiadomienia. Całość zajmuje kilka minut zamiast przeglądania faktur i list przewozowych.
Najczęstsze błędy integracji w sklepie spożywczym
Przy wdrożeniach dla sklepów z żywnością powtarzają się te same problemy. Większość wynika z tego, że integracja traktuje produkt spożywczy jak każdy inny towar:
[#chart:wpr59c]
Jak wdrożyć integracje dla sklepu spożywczego krok po kroku
Wybierz system, który przechowuje partie i daty - ERP albo WMS.
Ustal progi minimalnej pozostałej trwałości dla grup produktów.
Zaprojektuj przyjęcie dostawy ze skanowaniem kodów z partią i datą.
Zbuduj przeliczenie stanu dostępnego z progiem i rezerwacjami, także codzienne.
Dodaj zapis partii przy zamówieniu po kompletacji.
Przygotuj raport partii do wycofania: lista zamówień i klientów dla numeru partii.
Przetestuj scenariusze: dwie partie z różnymi datami, partia na granicy progu, zwrot.
[#checklista] Przed startem sprawdź: każda dostawa ma numer partii i datę; magazyn wydaje według FEFO; stan sklepu nie obejmuje partii poniżej progu; przeliczenie działa codziennie; zamówienie ma zapisaną partię; raport wycofania działa w kilka minut.
Jak Vinson pomaga sklepom spożywczym w integracjach
Zapewniamy wsparcie programistyczne dla sklepów i sprzedawców: integracje, automatyzacje, poprawki i rozwój sklepów oraz narzędzi. Dla sklepów spożywczych projektujemy przepływ partii i dat między ERP, WMS, sklepem i marketplace, piszemy przeliczenia stanów z progami trwałości i raporty partii. Jako certyfikowany partner Base i autoryzowany partner Shoper łączymy też te dane z popularnymi integratorami i platformami. Szczegóły znajdziesz na stronie Wsparcie programistyczne dla e-commerce.
Najczęściej zadawane pytania
Czy sklep internetowy musi znać numery partii produktów?
Zwykle nie. Partie i daty ważności przechowuje ERP lub WMS, a sklep dostaje tylko stan dostępny do sprzedaży. Numer partii warto jednak zapisać przy zamówieniu, w systemie magazynowym lub jako notatkę, żeby móc ustalić odbiorców przy wycofaniu produktu.
Co to jest FEFO w magazynie sklepu?
FEFO to zasada, według której magazyn najpierw wydaje towar z najbliższą datą ważności. W sklepie spożywczym chroni przed przeterminowaniem towaru, który przyszedł wcześniej, ale ma dłuższy termin niż późniejsza dostawa.
Jak ustawić stan w sklepie, gdy część towaru ma krótką datę?
Ustal minimalny pozostały termin ważności dla grupy produktów i licz stan tylko z partii, które go spełniają w dniu przewidywanej dostawy. Partie poniżej progu możesz sprzedawać jako osobny produkt z informacją o krótkim terminie.
Jakie kody GS1 zawierają datę ważności i partię?
Identyfikatory zastosowania GS1: AI (10) oznacza numer partii, AI (15) datę minimalnej trwałości, a AI (17) datę ważności. Występują na etykietach GS1-128 i w kodach 2D, a daty zapisuje się w formacie RRMMDD.
Czy trzeba pokazywać datę ważności na karcie produktu w sklepie?
Rozporządzenie 1169/2011 zwalnia datę minimalnej trwałości i termin przydatności z obowiązku podania przed zakupem przy sprzedaży na odległość, ale klient musi ją znać w chwili dostawy. Zakres obowiązków dla Twojego asortymentu potwierdź z prawnikiem lub doradcą ds. żywności.
Sklep spożywczy potrzebuje integracji, które rozumieją partie, daty i progi trwałości, a nie tylko liczbę sztuk. Jeśli chcesz uporządkować dane o partiach między ERP, magazynem i kanałami sprzedaży, sprawdź wsparcie programistyczne Vinson.