W magazynie klienta towar należy do zleceniodawcy, a operator logistyczny składuje go i wysyła po kompletacji. Właściciel nie stoi na hali, więc wszystko, co wie o swoich zapasach, pochodzi z systemu. Strona opisuje ten magazyn z perspektywy właściciela.
Spis treści
- Co widzi i co robi właściciel towaru
- Historia operacji widoczna dla klienta
- Awizacja dostawy przez klienta
- Partie, terminy ważności i identyfikowalność
- Stan magazynu na wybrany dzień
- Odczyt dla klienta bez blokowania magazynu
- Rozliczenia z operatorem
- Rozdział danych klientów i powiadomienia
- Pytania i odpowiedzi o magazyn klienta
- Glosariusz pojęć związanych z magazynem klienta
Co widzi i co robi właściciel towaru
Kontrahent loguje się do portalu przez przeglądarkę, bez instalacji. Widzi wyłącznie własne towary, a dane innych klientów magazynu pozostają poza jego zasięgiem. Transmisję zabezpiecza szyfrowanie SSL, a zakres kont ustawia administrator operatora.
W portalu kontrahent sprawdza stany i przegląda dokumenty przychodu oraz rozchodu. Rejestruje też polecenia wydania i awizuje planowane dostawy. Czynności klienta odpowiadają dokumentom, które istnieją w obiegu magazynowym.
| Czynność klienta | Dokument | Co robi magazyn | Co widzi klient |
|---|---|---|---|
| Zapowiedź dostawy | ZPZ, zlecenie przyjęcia | planuje rampę i miejsce składowania | zlecenie czekające na realizację |
| Odbiór towaru | PZ, przyjęcie zewnętrzne | przyjmuje paletę skanem na lokalizację | przyrost stanu i dokument przyjęcia |
| Polecenie wydania | ZWZ, zlecenie wydania | kompletuje towar do terminu realizacji | zlecenie w kolejce operatora |
| Wydanie towaru | WZ, wydanie zewnętrzne | wydaje towar po kompletacji | ubytek stanu i dokument wydania |
Polecenie wydania ma nagłówek z kontrahentem i terminem realizacji oraz z odbiorcą. Dalej występuje przewoźnik z numerem awizacji, a pole Wysoki priorytet oznacza zlecenie jako pilne. Sekcja pozycji zawiera wyszukiwarkę asortymentu i ilość.
ZWZ jest dokumentem planistycznym. Stan zmienia dopiero dokument WZ, który powstaje przy fizycznej kompletacji. Dlatego klient widzi osobno zlecenie i jego wykonanie, a różnica między nimi pokazuje, ile pracy czeka jeszcze w magazynie. Zakres portalu opisuje strona o module internetowym dla kontrahentów.
Historia operacji widoczna dla klienta
Każda operacja na towarze klienta zostawia ślad w bazie. System rejestruje ją z dokładnym znacznikiem czasu i identyfikatorem operatora. Na pytanie, kto i kiedy przyjął paletę, odpowiada więc zapis, a nie pamięć zmiany. Klient przegląda tę historię w portalu dla własnych dokumentów.
- Czas. Data i godzina potwierdzenia operacji skanem albo zatwierdzenia dokumentu.
- Operator. Identyfikator konta pracownika, który wykonał czynność w magazynie.
- Lokalizacja. Adres gniazda, z którego towar pobrano albo na które go odłożono.
- Dokument. Numer przyjęcia lub wydania, do którego przypisano ruch.
Taki zapis zamyka większość sporów o rozbieżność. Gdy klient twierdzi, że wysłał do magazynu dwie palety, a w stanie jest jedna, porównuje się dokument zapowiedzi z dokumentem przyjęcia i skanem. Różnica wskazuje etap, na którym paleta wypadła z obiegu.
Awizacja dostawy przez klienta
Dostawa zaczyna się od zapowiedzi, która daje magazynowi czas na przygotowanie rampy i miejsca. Zlecenie przyjęcia ZPZ wskazuje kontrahenta oraz indeks towaru z nazwą i ilością do przyjęcia. Po zatwierdzeniu magazynier realizuje przyjęcie dokumentem PZ powiązanym ze zleceniem.
Magazyn zestawia zapowiedzi z planem placu, więc kierowca nie czeka na rampie bez przydziału. Rezerwację okna czasowego opisuje strona o awizacji dostaw, a samo przyjęcie strona o przyjęciu do magazynu.
Przygotowanie zapowiedzi po stronie klienta jest krótkie. Klient podaje indeksy z ilościami i planowany termin dostawy, a w razie potrzeby numer awizacji przewoźnika. Magazyn łączy te dane z terminem i odbiorem towaru, więc każdy dokument odnosi się do tej samej zapowiedzi.
Reguła: pozycje zlecenia wybiera się z kartoteki asortymentu, więc nowy towar musi najpierw otrzymać indeks. Klient, który zapowiada dostawę nieznanego indeksu, wstrzymuje przyjęcie do czasu uzupełnienia kartoteki.
Partie, terminy ważności i identyfikowalność
Dla towaru z terminem przydatności klient chce wiedzieć nie tylko ile sztuk leży w magazynie, ale z której partii. Kartoteka asortymentu zawiera pola Wymagana seria i Wymagana data ważności, które włączają obowiązkową kontrolę przy operacjach magazynowych. Przyjęcie bez numeru partii albo terminu nie przechodzi wtedy weryfikacji.
Ewidencja partii pozwala wskazać, od kogo przyjęto towar i do kogo go wydano. Przy wycofaniu partii klient dostaje listę odbiorców z numerami dokumentów, a magazyn nie przeszukuje papierowych kopii. Zasady ewidencji i reguły rotacji opisuje strona o partiach produkcyjnych i datach ważności.
Stan magazynu na wybrany dzień
Stan z konkretnego dnia potrzebny jest przy rozliczeniu składowania, przy sporze o ubytek i przy inwentaryzacji po stronie klienta. Klient często pyta nie o stan bieżący, tylko o stan na koniec miesiąca albo na dzień sporu z dostawcą. Program odtwarza go z historii obrotów, a nie z bieżącego zapisu. Poniższe zapytanie jest ilustracyjne i nie pokazuje struktury produktu. Sumuje przyjęcia i wydania jednego kontrahenta do końca wskazanego dnia.
SELECT r.AsortymentId,
SUM(CASE r.Typ WHEN 'PZ' THEN r.Ilosc
WHEN 'WZ' THEN -r.Ilosc
ELSE 0 END) AS StanNaDzien
FROM dbo.RuchyMagazynowe AS r
WHERE r.KontrahentId = @KontrahentId
AND r.DataOperacji < DATEADD(DAY, 1, @Dzien)
GROUP BY r.AsortymentId
HAVING SUM(CASE r.Typ WHEN 'PZ' THEN r.Ilosc
WHEN 'WZ' THEN -r.Ilosc
ELSE 0 END) <> 0;
CREATE INDEX IX_Ruchy_Kontrahent_Data
ON dbo.RuchyMagazynowe (KontrahentId, DataOperacji)
INCLUDE (AsortymentId, Typ, Ilosc);
Granica przedziału jest otwarta, czyli data operacji ma być mniejsza od początku następnego dnia. Dzięki niej zapytanie obejmuje operacje z całej doby, także z ostatniej sekundy. Zapis z warunkiem mniejszym lub równym północy pominąłby ruchy zapisane później w ciągu dnia.
Indeks na parze kolumn pozwala silnikowi przejść do wierszy jednego kontrahenta operacją Index Seek. Klauzula INCLUDE dokłada kolumny potrzebne zapytaniu, więc baza nie sięga do tabeli po każdy wiersz. Składnię opisuje dokumentacja CREATE INDEX w SQL Server. Szersze omówienie stanów zawiera strona o stanach magazynowych.
Odczyt dla klienta bez blokowania magazynu
Raport klienta nie może zatrzymywać przyjęć. Przy domyślnym poziomie izolacji READ COMMITTED odczyt czeka na zatwierdzenie zmian, które blokują wiersze. Przy poziomie SNAPSHOT odczyt korzysta z wersji wierszy i widzi ostatni zatwierdzony stan bez czekania. Poziomy izolacji opisuje dokumentacja SET TRANSACTION ISOLATION LEVEL.
Raport w poziomie SNAPSHOT widzi stan z chwili rozpoczęcia transakcji. Przyjęcie zatwierdzone w trakcie raportu pojawi się dopiero w następnym odczycie. Dla dnia historycznego to bez znaczenia, bo dzień jest zamknięty, ale liczba bieżąca powinna mieć znacznik czasu.
ALTER DATABASE WmsDemo SET ALLOW_SNAPSHOT_ISOLATION ON;
SET TRANSACTION ISOLATION LEVEL SNAPSHOT;
BEGIN TRAN;
-- zapytanie o stan na dzień
COMMIT;
Ostrzeżenie techniczne: wersje wierszy zajmują miejsce w bazie tempdb. Przy wielu długich raportach klientów pamięć na wersje rośnie, więc raporty o dużym zakresie trzeba ograniczać do wskazanego okresu i jednego kontrahenta.
Przykład jest ilustracyjny, a nazwa bazy jest umowna. Włączenie wersjonowania wymaga uzgodnienia z administratorem, ponieważ zmienia sposób przechowywania wersji w całej bazie.
Rozliczenia z operatorem
Klient 3PL płaci za składowanie i za operacje, więc interesuje go, skąd wzięła się kwota na fakturze. Moduł rozliczania kosztów zestawia usługi magazynowe z należnościami kontrahenta za wskazany okres. Raport można wyeksportować do arkusza kalkulacyjnego albo przekazać do ERP, gdzie powstaje faktura.
Wiersze zestawienia odpowiadają zdarzeniom z historii operacji, więc klient sprawdza pozycje faktury tak samo jak dokumenty. Sposób naliczania opłat z cenników opisuje strona o oprogramowaniu WMS dla 3PL.
Spory dotyczą zwykle opłat za usługi dodatkowe, takie jak etykietowanie czy przepakowanie. Gdy operator rejestruje taką czynność na terminalu, system przypisuje ją do kontrahenta, a klient widzi ją w zestawieniu z datą i nazwiskiem pracownika. Pozycja, której nie ma w historii, nie trafia na fakturę.
Rozdział danych klientów i powiadomienia
Operator pracuje na danych wielu właścicieli towaru, a kontrahent na własnych. Różnicę tworzą role i przypisanie właściciela do każdej operacji, co opisują strony o logowaniu i autoryzacji oraz o rolach użytkowników. Konto klienta nie dostaje więc uprawnień do edycji kartotek ani do zatwierdzania dokumentów.
Karta kontrahenta zawiera adres e-mail do powiadomień automatycznych, na który system wysyła raporty dla klienta. Klient dostaje je bez logowania, więc o przyjęciu albo wydaniu dowiaduje się od razu. Karta zawiera też godziny pracy klienta, które pomagają planować dostawy i wydania w jego oknach odbioru. Model rozliczeń i zakres usług 3PL opisuje strona 3PL - co to jest, a konfigurację po stronie operatora strona o magazynie klienta w systemie WMS.
Pytania i odpowiedzi o magazyn klienta
Kontrahent otrzymuje indywidualny login i hasło do portalu otwieranego w przeglądarce. Po uwierzytelnieniu system sprawdza uprawnienia konta i pokazuje wyłącznie jego towary. Komunikacja jest szyfrowana protokołem SSL, a instalacja oprogramowania po stronie klienta nie jest potrzebna.
Tak. Klient rejestruje w portalu polecenie wydania z terminem realizacji oraz listę pozycji do pobrania. Zlecenie trafia do kolejki operatora, a po kompletacji powstaje dokument WZ, który zmniejsza stan klienta.
Nie. Konto kontrahenta jest powiązane z jego własnymi towarami, dokumentami i zleceniami. Operator widzi dane wielu właścicieli, ale wynika to z jego roli, a nie z przypisania do klienta.
Stan na wskazany dzień odtwarza się z historii obrotów, czyli z sumy przyjęć i wydań do końca tego dnia. Wynik zależy od poprawności dat dokumentów, więc operacje wprowadzone z opóźnieniem zmieniają stan historyczny dopiero po ich zaksięgowaniu.
Przy domyślnym poziomie izolacji odczyt może czekać na blokady zapisów, a zapisy na zakończenie długiego odczytu. Poziom SNAPSHOT ogranicza to czekanie, bo odczyt korzysta z wersji wierszy. Wymaga on jednak zasobów w bazie tempdb.
Glosariusz pojęć związanych z magazynem klienta
- Magazyn klienta
- Usługa 3PL, w której operator logistyczny przechowuje i wydaje towar należący do zleceniodawcy.
- Kontrahent
- Podmiot powiązany z operacjami magazynowymi, w tym właściciel towaru, któremu operator świadczy usługę.
- ZPZ
- Zlecenie przyjęcia do magazynu, dokument planistyczny poprzedzający dokument PZ.
- ZWZ
- Zlecenie wydania z magazynu, dokument planistyczny, na podstawie którego powstaje dokument WZ.
- Stan na dzień
- Ilość towaru na koniec wskazanego dnia, odtworzona z historii przyjęć i wydań.
- Poziom izolacji
- Ustawienie transakcji w SQL Server, które określa, czy odczyt czeka na blokady i jakie zmiany widzi.
- SNAPSHOT
- Poziom izolacji, w którym odczyt korzysta z wersji wierszy i nie czeka na blokady zapisów.
- Awizacja
- Wcześniejsze powiadomienie magazynu o planowanej dostawie, które pozwala przygotować rampę i miejsce.