Dokument magazynowy jest jedyną dopuszczalną drogą zmiany stanu w systemie WMS. Ilość towaru nie zmienia się przez edycję liczby w kartotece, tylko przez zatwierdzenie dokumentu, który ma numer i typ, a jego zatwierdzenie zapisuje autora oraz czas. Dzięki temu każda sztuka ma udokumentowaną drogę od przyjęcia do wydania.

Artykuł opisuje sześć typów dokumentów od strony mechanizmu: jak dokument zmienia stan, jakie przechodzi statusy, jak się go koryguje i jak trafia do ERP. Podstawowe definicje pojęć zebrano również w opracowaniu o dokumentach magazynowych na stronie SoftwareStudio.

Dokument jako jedyna droga zmiany stanu

Każdy dokument składa się z nagłówka i pozycji. Nagłówek niesie typ i numer oraz status, a w dokumentach zewnętrznych także kontrahenta. Zapisuje też datę i magazyn. Pozycje wskazują towar i lokalizację, a także partię oraz ilość. Stan magazynowy jest sumą pozycji zatwierdzonych dokumentów, liczoną z właściwym znakiem dla każdego typu.

Ta zasada pozwala prześledzić każdą liczbę w kartotece magazynowej do operacji, która ją zmieniła. Pozwala też odtworzyć zapas na dowolny dzień z przeszłości, co opisuje strona o stanach magazynowych. Poniższy szkic ma charakter przykładowy i upraszcza rzeczywistą strukturę bazy.

-- przykładowy schemat, nie struktura produktu
CREATE TABLE dbo.DokumentNaglowek (
    DokumentId      INT IDENTITY PRIMARY KEY,
    Typ             CHAR(2)      NOT NULL,   -- PZ, WZ, PW, RW, MM, ZM
    Numer           NVARCHAR(30) NULL,       -- nadawany przy zatwierdzeniu
    KontrahentId    INT          NULL,
    Status          TINYINT      NOT NULL,   -- 0 bufor, 1 zatwierdzony, 2 anulowany
    DataWystawienia DATETIME2(0) NOT NULL
);

CREATE TABLE dbo.DokumentPozycja (
    PozycjaId     INT IDENTITY PRIMARY KEY,
    DokumentId    INT NOT NULL REFERENCES dbo.DokumentNaglowek (DokumentId),
    TowarId       INT NOT NULL,
    LokalizacjaId INT NOT NULL,
    Ilosc         DECIMAL(18,3) NOT NULL
);

Widać w nim dwie decyzje projektowe powtarzające się w większości wdrożeń. Status leży w nagłówku, więc bufor da się odróżnić od dokumentu zatwierdzonego bez analizy pozycji. Natomiast liczba „aktualny stan” nie jest źródłem prawdy, tylko wynikiem, który można przeliczyć z pozycji.

Dokumenty zewnętrzne PZ i WZ

Dokumenty zewnętrzne opisują wymianę towaru z podmiotem spoza firmy. Zawsze wskazują kontrahenta, a ich zatwierdzenie jest zdarzeniem widocznym również w rozliczeniach handlowych.

PZ - przyjęcie zewnętrzne

Dokument PZ potwierdza przyjęcie towaru od dostawcy. Nagłówek wskazuje dostawcę, a pozycje niosą ilość oraz numer partii, a przy towarach z terminem także datę ważności. W systemie WMS dokument powstaje po zeskanowaniu etykiet dostawcy i porównaniu ilości z zamówieniem zakupu, a operator potwierdza zgodność. Zasady tej weryfikacji opisuje strona o przyjęciu towaru do magazynu.

WZ - wydanie zewnętrzne

Dokument WZ rejestruje wydanie towaru odbiorcy zewnętrznemu i powstaje po zakończeniu procesu wydania z magazynu. Zgodność WZ z zamówieniem klienta należy do podstawowych mierników jakości pracy magazynu, dlatego wiele wdrożeń wymaga dodatkowego potwierdzenia skanem przed zatwierdzeniem. Sposób zapisu takich wydań w rejestrze omawia strona o ewidencji wydań z magazynu.

Część wdrożeń stosuje wariant buforowy przyjęcia. Dokument PZ w buforze (PZB) rejestruje towar, który fizycznie stoi już w magazynie, ale nie przeszedł jeszcze kontroli. Dopiero pozytywny wynik weryfikacji zamienia go w PZ właściwy i zwiększa stan dostępny. W rejestrze taki dokument można znaleźć po statusie przyjęcia, a towar do czasu decyzji nie trafia do kompletacji.

TypZdarzenieKontrahentWpływ na stan firmy
PZPrzyjęcie od dostawcyTakZwiększa
WZWydanie odbiorcy zewnętrznemuTakZmniejsza
PWPrzyjęcie z procesu wewnętrznegoNieZwiększa
RWRozchód do procesu wewnętrznegoNieZmniejsza
MMPrzesunięcie między magazynamiNieBez zmiany (zmienia się rozkład)
ZMZmiana lokalizacji w magazynieNieBez zmiany
Sześć typów dokumentów i ich skutek dla stanu całej firmy.

Dokumenty wewnętrzne PW i RW

Dokument PW rejestruje przyjęcie towaru pochodzącego z procesu wewnętrznego lub z innego magazynu tej samej firmy, na przykład po przepakowaniu. Dokument RW opisuje ruch odwrotny: wydanie towaru do procesu wewnętrznego, choćby do produkcji. Żaden z nich nie wskazuje kontrahenta zewnętrznego, bo cała operacja odbywa się w jednej organizacji.

Dokument RW wymaga wskazania powodu rozchodu, na przykład zużycia na produkcję lub przekazania do przepakowania. Powód ma znaczenie dla rozliczeń, ponieważ koszt zużycia może trafiać w księgowości na inne konto niż koszt uszkodzenia. Podobnie PW po produkcji ma inne skutki niż PW po przepakowaniu, dlatego pole przyczyny warto oprzeć na słowniku, a nie na dowolnym tekście.

Pracownica magazynu w odblaskowej kamizelce trzyma karton przy ekranie z widokiem systemu magazynowego
Przyjęcie wewnętrzne PW dotyczy towaru, który nie pochodzi od dostawcy zewnętrznego.

Przepakowanie jako para RW i PW

Przepakowanie rejestruje się parą dokumentów: RW ze statusem wydania do przepakowania oraz PW ze statusem przyjęcia po przepakowaniu. Wydanie odbywa się podobnie jak przy WZ. W nagłówku wskazuje się kontrahenta, a w pozycjach system pokazuje listę towarów należących do niego. Operacja nie trafia do zestawień kosztów magazynowania, ponieważ towar faktycznie nie opuszcza firmy.

Przy przepakowaniu na mniejsze palety bywa potrzebny współczynnik kosztów magazynowania, zapisany w kartotece cenowej kontrahenta. Gdy nowa paleta nie powinna być obciążana pełną stawką, wartość współczynnika wpisuje się w ewidencji palet dla wybranej pozycji.

Reguła: stawka za paletę po przepakowaniu jest iloczynem stawki podstawowej i współczynnika przypisanego pozycji, a nie nową stawką wpisaną ręcznie.

Podobne zasady dotyczą obrotu nośnikami. Palety mieszane (MIX) i rozliczenia z kontrahentami opisuje strona o rozliczaniu palet, a pokrewny zapis po stronie nośników omawia artykuł o ewidencji palet w dokumentach magazynowych.

Przesunięcia MM i zmiana lokalizacji ZM

Dokument MM przenosi towar między dwoma magazynami tej samej firmy. Działa jak para zapisów: rozchód w magazynie źródłowym i przychód w docelowym. Łączny stan firmy pozostaje taki sam, zmienia się wyłącznie jego rozkład. Bezpieczny wariant to dwie fazy: wysyłka i potwierdzenie przyjęcia, a w międzyczasie towar figuruje jako będący w drodze.

Dokument ZM dotyczy przeniesienia towaru między miejscami adresowymi w obrębie tego samego magazynu. Nie zmienia właściciela ani ilości. Historia takich przemieszczeń pozwala odtworzyć drogę palety, co bywa istotne przy reklamacji uszkodzenia powstałego w trakcie składowania. Szersze tło opisuje strona o operacjach magazynowych.

Magazynier w kurtce z odblaskami trzyma smartfon podczas obsługi przesunięcia towaru na regałach
Zmiana lokalizacji ZM rejestruje przeniesienie palety bez zmiany jej właściciela.

Statusy i numeracja dokumentów

Dokument przechodzi kilka stanów, a dopiero zatwierdzenie zmienia zapas. Poniższy model statusów jest przykładowy i pokazuje typowy podział odpowiedzialności.

StatusWpływ na stanEdycja pozycjiTypowy następny krok
BuforBrakDozwolonaZatwierdzenie lub usunięcie
ZatwierdzonyZmienia stanZablokowanaEksport do ERP
WyeksportowanyZmienia stanZablokowanaKorekta tylko dokumentem korygującym
AnulowanyBrakZablokowanaBez dalszych kroków
Przykładowy cykl życia dokumentu magazynowego.

Numer warto nadawać przy zatwierdzeniu, a nie przy tworzeniu bufora. Wtedy porzucone szkice nie zostawiają dziur w serii. Obiekt SEQUENCE w SQL Server nie cofa wartości po wycofaniu transakcji, więc numeracja bez luk wymaga osobnej tabeli liczników, aktualizowanej w tej samej transakcji co zatwierdzenie. Składnię transakcji opisuje dokumentacja Microsoft Learn dla BEGIN TRANSACTION.

-- szkic procedury zatwierdzającej (przykład)
CREATE PROCEDURE dbo.ZatwierdzDokument @DokumentId INT
AS
BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;

    BEGIN TRANSACTION;
        UPDATE dbo.DokumentNaglowek
           SET Status = 1
         WHERE DokumentId = @DokumentId AND Status = 0;

        IF @@ROWCOUNT = 0
            THROW 50001, N'Dokument nie jest w buforze.', 1;

        -- w tej samej transakcji: nadanie numeru i zapis ruchu na stan
    COMMIT TRANSACTION;
END;

Warunek Status = 0 w klauzuli WHERE pełni rolę blokady logicznej. Dwa równoległe zatwierdzenia tego samego dokumentu nie zmienią stanu dwa razy, bo drugie wywołanie nie znajdzie wiersza w buforze i zakończy się błędem.

Korekty dokumentów i ślad audytowy

Reguła: zatwierdzonego dokumentu się nie edytuje, a pomyłkę naprawia dokument korygujący powiązany z oryginałem.

Korekta zachowuje historię zmian, bo oba dokumenty pozostają w systemie i wiadomo, kto zmienił ilość, a także kiedy i dlaczego to zrobił. Anulowanie jest zwykle możliwe tylko do chwili zaksięgowania dokumentu w module finansowo-księgowym. Zmiana ilości bezpośrednio w bazie, z pominięciem dokumentu, niszczy ślad audytowy, więc nie należy do dopuszczalnych procedur nawet w sytuacji awaryjnej.

Ślad audytowy dokumentu obejmuje zwykle identyfikator użytkownika i czas zatwierdzenia, a przy pracy na terminalu także urządzenie, z którego wysłano operację. Takie dane pozwalają odpowiedzieć na pytanie kontrolera bez przeszukiwania papierowych archiwów. Zapisuje się je w samym dokumencie, a nie w oddzielnym dzienniku, bo wtedy nie rozjadą się z pozycjami.

Forma elektroniczna i przechowywanie

Dokumentację można prowadzić w formie elektronicznej, o ile zapewniona jest jej integralność i możliwość odtworzenia w każdej chwili. Wydruk pozostaje opcją pomocniczą, na przykład dla kierowcy odbierającego towar. Okres przechowywania wynika z przepisów o rachunkowości i przepisów podatkowych, a jego długość dla danej firmy potwierdza dział księgowości.

Obieg dokumentów i wymiana z ERP

Typowy obieg obejmuje cztery etapy, w których dokumenty powstają jeden po drugim.

  1. Zamówienie zakupu w ERP - dział zakupów tworzy zamówienie, które trafia do WMS jako awizo dostawy z oczekiwaną ilością i terminem.
  2. Przyjęcie i dokument PZ - po zeskanowaniu towaru system porównuje ilość z awizem, rejestruje numer partii i generuje PZ.
  3. Składowanie i ruchy wewnętrzne - zmiana miejsca albo magazynu jest rejestrowana odpowiednim dokumentem wewnętrznym.
  4. Kompletacja i dokument WZ - po zamówieniu sprzedaży system tworzy listę kompletacyjną, a po jej zrealizowaniu wystawia WZ i eksportuje go do ERP.

Wymiana z ERP opiera się zwykle na wywołaniach REST albo kolejce komunikatów. Ważny jest klucz zewnętrzny dokumentu: przy powtórzeniu wywołania po awarii sieci ten sam dokument nie może zostać zapisany drugi raz. Więcej o modelach wymiany danych znajduje się w artykule o integracji systemów magazynowych.

Eksport do ERP powinien wracać z potwierdzeniem odbioru, zapisanym w statusie dokumentu. Bez niego nie wiadomo, czy dokument, który wyszedł z WMS, faktycznie dotarł do księgowości, a każda niezgodność wychodzi dopiero przy zamknięciu okresu. Potwierdzenie ma też znaczenie dla reguły anulowania: dokument wyeksportowany nie jest już zmieniany w magazynie.

Powiązanie ruchu fizycznego z dokumentem ułatwia identyfikacja jednostek logistycznych. Numer SSCC jest 18-cyfrowym identyfikatorem palety, a skanowanie etykiety GS1 pozwala systemowi przypisać zdarzenie do właściwej pozycji dokumentu bez ręcznego wyszukiwania partii.

Wyszukiwanie i zestawienia dokumentów

Rejestr dokumentów jest jednym z najczęściej otwieranych widoków w module magazynowym. Użytkownik filtruje go po dacie i kontrahencie, a często także po statusie. Lista musi otwierać się szybko również po kilku latach pracy, kiedy tabela nagłówków liczy setki tysięcy wierszy. Taki wzorzec zapytań, czyli filtr po typie i przedziale dat oraz kilka kolumn w wyniku, dobrze obsługuje indeks pokrywający.

CREATE NONCLUSTERED INDEX IX_DokumentNaglowek_Typ_Data
    ON dbo.DokumentNaglowek (Typ, DataWystawienia)
    INCLUDE (Numer, KontrahentId, Status);

Kolumny z klauzuli INCLUDE nie wchodzą do klucza, więc indeks pozostaje wąski, a zapytanie nie sięga do tabeli bazowej. Osobny przypadek stanowią bufory. Jest ich niewiele w porównaniu z dokumentami zatwierdzonymi, a widok dokumentów do zatwierdzenia jest otwierany bardzo często, więc opłaca się indeks filtrowany z warunkiem Status = 0.

Różnice względem dokumentacji papierowej dotyczą przede wszystkim czasu wystawienia i wyszukiwania historii.

KryteriumDokumentacja papierowaSystem WMS
Wystawienie dokumentuRęczne wypełnianie formularzaGenerowanie po skanie
Ryzyko błędu w danychWysokie, zależne od czytelności wpisuNiskie, dane z kodu kreskowego
Wyszukiwanie historiiPrzegląd segregatorówFiltr po dacie i numerze
ArchiwizacjaFizyczne archiwum, ryzyko zniszczeniaArchiwum elektroniczne z kopią zapasową
Przekazanie do księgowościRęczne przepisywanieEksport dokumentów
Dokumentacja papierowa i elektroniczna w kilku codziennych zadaniach.

Błędy w dokumentacji magazynowej

Nawet dobrze zaprojektowany system nie usunie błędów wynikających z niewłaściwych nawyków. W praktyce powtarzają się cztery problemy.

  • Mieszanie typów - przypisanie operacji wewnętrznej do dokumentu obrotu zewnętrznego zniekształca rozliczenia z kontrahentami.
  • Opóźniona rejestracja - odkładanie dokumentu na koniec zmiany tworzy rozbieżność między stanem fizycznym a systemowym.
  • Korekta poza dokumentem - zmiana ilości w bazie bez dokumentu korygującego usuwa ślad audytowy.
  • Niespójny MM - brak zgodności zapisów rozchodu i przychodu przy przesunięciu prowadzi do podwójnego albo zerowego naliczenia stanu.

Drobne błędy kumulują się, dlatego przydaje się cykliczna inwentaryzacja wybranych lokalizacji. Pozwala ona wychwycić rozbieżność, zanim jej źródło zginie w historii setek dokumentów, i skorygować ją właściwym dokumentem.