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.

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ść klientaDokumentCo robi magazynCo widzi klient
Zapowiedź dostawyZPZ, zlecenie przyjęciaplanuje rampę i miejsce składowaniazlecenie czekające na realizację
Odbiór towaruPZ, przyjęcie zewnętrzneprzyjmuje paletę skanem na lokalizacjęprzyrost stanu i dokument przyjęcia
Polecenie wydaniaZWZ, zlecenie wydaniakompletuje towar do terminu realizacjizlecenie w kolejce operatora
Wydanie towaruWZ, wydanie zewnętrznewydaje towar po kompletacjiubytek 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ść.

Studio WMS.net - wypełniony formularz ZWZ zlecenie wydania z magazynu, kontrahent ABT Kraków, termin 2026-05-29
Formularz ZWZ z nagłówkiem dla ABT Kraków, terminem realizacji i sekcją pozycji ze wyszukiwarką asortymentu

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.

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.

Studio WMS.net - formularz ZPZ z pozycją zlecenia przyjęcia: asortyment spodnie dżinsowe, kontrahent ABT Kraków, ilość 11
Formularz zlecenia przyjęcia ZPZ z wypełnioną pozycją asortymentową - indeks towaru, nazwa i ilość do przyjęcia

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.

Warto przeczytać