Firmy szukające oprogramowania do magazynu wpisują w wyszukiwarkę różne nazwy, na przykład „system WMS” albo „system magazynowy WMS”. Za każdą z nich stoi ta sama klasa oprogramowania, nazywana też programem WMS. Ta strona opisuje jej zakres i budowę techniczną, a wybrane obszary rozwijają osobne artykuły serwisu.

Skrót WMS pochodzi od angielskiego Warehouse Management System, czyli systemu zarządzania magazynem. Program tej klasy nie kończy się na ewidencji ilości. Prowadzi magazyniera po adresach lokacji, sprawdza zgodność skanu z dokumentem i zapisuje każdy ruch w bazie w chwili jego wykonania.

Co obejmuje system WMS w magazynie

Zakres systemu wyznacza droga towaru przez magazyn. Każdy etap ma w programie własny dokument i własną kontrolę zgodności. Poniżej cztery obszary, które odróżniają WMS od prostej ewidencji stanów.

  • Przyjęcie - porównanie skanu etykiety z dokumentem dostawy i wskazanie lokacji odkładczej.
  • Adresacja lokacji - stan liczony na adresie regału, a nie na magazynie jako całości.
  • Kompletacja - zamówienia zamieniane na zadania zbiórki ułożone według trasy po regałach.
  • Wydanie - zamknięcie pozycji dokumentu dopiero po zgodnych odczytach skanera.

Przyjęcie towaru i rozmieszczenie na lokacjach

Przyjęcie zaczyna się od dokumentu dostawy albo awizacji. Magazynier skanuje etykietę palety, a system porównuje z pozycją dokumentu kod towaru oraz ilość, a przy towarach z partiami także numer partii. Rozbieżność kończy się komunikatem na terminalu, a nie poprawką w biurze po zakończeniu zmiany.

Po potwierdzeniu program proponuje lokację zgodną z regułami składowania, na przykład strefę chłodni dla towaru z krótką datą ważności. Ten etap opisuje osobno artykuł przyjęcie towaru do magazynu.

Adresacja lokacji i stan na regale

Adres lokacji składa się z numeru strefy i regału oraz z kolumny i poziomu, na przykład A-03-02-1. Kod kreskowy przy regale pozwala potwierdzić miejsce skanem. Stan liczy się na poziomie lokacji oraz partii, a dla palet także jednostki logistycznej, a nie jako jedna suma dla całego magazynu.

Dzięki temu system wie, że dwadzieścia sztuk leży w strefie kompletacji, a reszta na wysokim regale. Wydanie zaczyna się od strefy zbiórki, a gdy jej stan spada poniżej progu, program zleca uzupełnienie z rezerwy. Uzupełnienie strefy zbiórki z rezerwy staje się zadaniem w systemie, a nie decyzją zapamiętaną przez jednego magazyniera. Zasady adresowania omawia tekst miejsca składowania w magazynie.

Ilustracja przepływu towaru przez magazyn obsługiwany przez system WMS
Droga towaru od rampy przyjęć do wydania, czyli obszary objęte ewidencją i sterowaniem w systemie WMS

Kompletacja i wydanie

System zamienia zamówienia na zadania zbiórki i układa je w kolejność zgodną z trasą po regałach. Operator dostaje na ekranie lokację i kod towaru wraz z ilością do pobrania. Pozycja dokumentu zamyka się dopiero po skanie lokacji i skanie towaru, więc pomyłka regału nie przechodzi do bazy.

Przy pakowaniu odczyt powtarza się jeszcze raz. Dopiero komplet zgodnych odczytów zamyka dokument wydania i uruchamia wysyłkę danych do ERP. Zasady zbiórki opisuje tekst kompletacja zamówień, a dokument wychodzący strona wydanie z magazynu.

Zlecenie zbiórki przechodzi w systemie przez kilka statusów, a każda zmiana statusu wymaga potwierdzenia skanem albo decyzji uprawnionej osoby. Poniższe zestawienie pokazuje typowy przebieg, w którym o kolejnym stanie decyduje zdarzenie na hali, a nie wpis w biurze.

Status zleceniaZdarzenie zmieniające statusSkutek dla stanu
NowePrzyjęcie zamówienia z ERPRezerwacja towaru na lokacjach
W realizacjiPierwszy skan lokacji przez operatoraZlecenie zablokowane dla innych operatorów
CzęścioweSkan mniejszej ilości niż w zleceniuReszta wraca do puli albo czeka na uzupełnienie
ZamknięteSkan przy pakowaniuZdjęcie stanu i dokument wydania do ERP

Status „Częściowe” chroni przed jednym z częstszych błędów, czyli wydaniem pełnej ilości z dokumentu, gdy na regale leżała mniejsza. System nie pozwala zamknąć pozycji bez potwierdzenia, więc różnica trafia od razu do korekty stanu.

System WMS a moduł magazynowy w systemie ERP

Moduł magazynowy ERP i system WMS rozwiązują dwa różne problemy. ERP odpowiada na pytanie, ile towaru firma ma i ile jest on wart. WMS odpowiada na pytanie, gdzie towar leży, kto po niego idzie i w jakiej kolejności.

Moduł ERP dzieli bazę i model danych z modułami finansów i sprzedaży, więc jego kartoteka towarowa jest zaprojektowana pod księgowość. Stan bywa prowadzony na poziomie magazynu albo najwyżej strefy. Numeracja dokumentów i wycena wykonują się w jednej transakcji z resztą systemu.

ObszarModuł magazynowy ERPSystem WMS
Poziom stanuMagazyn lub strefaLokacja oraz partia
Praca magazynieraWydruk dokumentu, brak zadańZadania na terminalu z kontrolą skanem
Główne dokumentyHandlowe i księgoweZlecenia zbiórki i przesunięcia
Wycena i rozliczenieW tym samym systemiePrzekazane do ERP przez integrację
Wykrycie błęduPo fakcie, przy inwentaryzacjiW chwili skanu

Reguła: ERP jest właścicielem dokumentów handlowych i wyceny, a WMS właścicielem lokacji i ruchu fizycznego towaru. Żaden z systemów nie zmienia danych drugiego bez dokumentu.

Granica odpowiedzialności i wymiana dokumentów

Z ERP do WMS płyną zamówienia sprzedaży i zamówienia zakupu, z WMS do ERP wracają potwierdzenia przyjęć i wydań z ilościami faktycznie zeskanowanymi. Wymiana odbywa się przez tabele pośrednie w bazie, usługę webową albo pliki. Każda z tych dróg ma osobne konsekwencje dla opóźnień i obsługi błędów, opisane w artykule o integracji systemów magazynowych.

Najczęstszy błąd projektowy to dwa systemy zmieniające ten sam stan. Jeżeli ERP rezerwuje towar na poziomie magazynu, a WMS rozkłada go na lokacje, oba poziomy muszą się zgadzać po każdej transakcji. Przyjmuje się zwykle, że ERP widzi sumę, a WMS szczegół, i tylko WMS wolno zmieniać rozkład na lokacjach.

Architektura logiczna systemu magazynowego WMS

System magazynowy WMS dzieli się na bazę danych i serwer aplikacji, a nad nimi pracują klienci różnych typów. Taki podział daje jedno źródło stanów, do którego trafiają operacje z biura oraz z terminala na hali. Zmiana reguły w jednym miejscu obowiązuje wszystkich użytkowników od razu.

Baza SQL Server i procedury składowane

Stany i dokumenty leżą w tabelach relacyjnych połączonych kluczami obcymi, a historia ruchów w osobnej tabeli dziennika. Reguły kontroli, takie jak sprawdzenie ilości przed wydaniem, wygodnie trzymać w procedurach składowanych. Każdy klient wywołuje wtedy ten sam kod, a poprawka reguły nie wymaga wydania nowej wersji programu na wszystkich stanowiskach. Zaplecze bazodanowe opisuje tekst system magazynowy na SQL Server.

Przykładowa procedura zdejmuje towar z lokacji i zapisuje ruch w jednej transakcji (nazwy tabel i kolumn są poglądowe, to nie schemat konkretnego produktu):

CREATE PROCEDURE dbo.WydajZLokacji
    @LokacjaId int,
    @TowarId   int,
    @Ilosc     decimal(18,3)
AS
BEGIN
    SET NOCOUNT ON;
    SET XACT_ABORT ON;

    BEGIN TRANSACTION;

    UPDATE dbo.StanLokacji WITH (UPDLOCK, ROWLOCK)
    SET Ilosc = Ilosc - @Ilosc
    WHERE LokacjaId = @LokacjaId
      AND TowarId   = @TowarId
      AND Ilosc >= @Ilosc;

    IF @@ROWCOUNT = 0
    BEGIN
        ROLLBACK TRANSACTION;
        THROW 50001, N'Na lokacji jest za mało towaru.', 1;
    END;

    INSERT INTO dbo.RuchMagazynowy (LokacjaId, TowarId, Ilosc, DataRuchu)
    VALUES (@LokacjaId, @TowarId, -@Ilosc, SYSDATETIME());

    COMMIT TRANSACTION;
END;

Warunek Ilosc >= @Ilosc w klauzuli WHERE sprawia, że dwa terminale nie zdejmą tej samej sztuki. Drugie wywołanie nie znajdzie wiersza spełniającego warunek i dostanie błąd zamiast ujemnego stanu. Mechanizm blokad i wersjonowania wierszy opisuje przewodnik Microsoft o blokowaniu transakcji, a same procedury dokumentacja procedur składowanych.

Serwer aplikacji

Serwer aplikacji przyjmuje żądania od klientów i wykonuje logikę biznesową, taką jak rezerwacje i kolejność zbiórki. Sprawdza też zgodność dokumentów oraz uprawnienia użytkownika. W Studio WMS.net ta warstwa działa na ASP.NET pod kontrolą serwera IIS. Klient nie łączy się wtedy z bazą wprost, tylko z serwerem aplikacji, który pilnuje uprawnień i ogranicza liczbę połączeń do bazy.

Serwer aplikacji jest też miejscem integracji, bo tylko on ma dostęp do bazy i do sieci firmowej jednocześnie. Tu działają usługi wymieniające dokumenty z ERP i sterowniki drukarek etykiet. Wydzielenie tej warstwy pozwala aktualizować program raz na serwerze, a nie na każdym komputerze.

Terminale i stanowiska biurowe

Klientami systemu są program na stacji Windows oraz przeglądarka, a na hali kolektory z Androidem. Każdy z nich pracuje na tych samych kartotekach i dokumentach. Biuro zestawia awizo z faktycznym przyjęciem, kierownik zmiany sprawdza postęp zbiórki w przeglądarce, a magazynier skanuje na hali. Podział aplikacji i ich zadań omawia artykuł aplikacje WMS.

WarstwaTechnologia w typowym wdrożeniuOdpowiedzialność
DaneMicrosoft SQL ServerStany i dokumenty oraz procedury
AplikacjaASP.NET, C#, serwer IISReguły biznesowe, uprawnienia, integracje
Klient biurowyProgram Windows albo przeglądarkaDokumenty, konfiguracja, podgląd
TerminalAndroid, czytnik 1D i 2D, Wi-FiSkanowanie, zadania, potwierdzenia
Ilustracja terminali radiowych używanych w magazynie do skanowania lokacji i towaru
Terminal mobilny jest klientem systemu na hali, a stan operacji zapisuje serwer w bazie

Model danych i indeksy w systemie WMS

Trzy tabele niosą większość ruchu: kartoteka towarowa, stan na lokacji i dziennik ruchów. Stan na lokacji jest wierszem identyfikowanym przez lokację i towar, a przy partiach także przez numer partii. Dziennik ruchów to tabela, do której się tylko dopisuje, więc pełna historia pozostaje dostępna do reklamacji i inwentaryzacji.

Zapytanie o dostępność towaru pada z terminali wielokrotnie w ciągu godziny, więc opłaca się indeks pokrywający. Indeks filtrowany dodatkowo pomija puste lokacje, przez co jest mniejszy i tańszy w utrzymaniu:

CREATE NONCLUSTERED INDEX IX_StanLokacji_Towar
ON dbo.StanLokacji (TowarId, PartiaId)
INCLUDE (LokacjaId, Ilosc)
WHERE Ilosc > 0;

Zapytanie „gdzie leży towar X” korzysta wtedy wyłącznie z tego indeksu i nie sięga do tabeli bazowej. Terminal dostaje odpowiedź w ułamku sekundy, a dziennik ruchów nie jest przy tym blokowany dla zapisów z innych stanowisk. Składnię i ograniczenia opisuje dokumentacja indeksów w SQL Server. Dziennik ruchów rośnie liniowo z liczbą operacji, dlatego raporty historyczne czyta się przez widoki, o czym mówi tekst o raportach w systemie WMS.

Uprawnienia i kopie zapasowe bazy WMS

Architektura logiczna obejmuje też zasady dostępu. Magazynier na terminalu widzi zadania i lokacje, ale nie cennik ani zestawienia wartościowe. Księgowa przegląda dokumenty, lecz nie zatwierdza przesunięć między lokacjami. Takie rozdzielenie robi się na poziomie ról w aplikacji, a nie przez osobne bazy danych. Szczegóły opisuje artykuł role i użytkownicy w systemie WMS.

Dziennik ruchów zapisuje identyfikator operatora i czas. Dzięki temu każdą rozbieżność da się odtworzyć: kto zeskanował towar, na jakim urządzeniu i w której transakcji. Znacznik czasu nadaje serwer bazy danych, a nie terminal, ponieważ zegary kolektorów potrafią się rozjeżdżać względem siebie.

Reguła: czas operacji ustala serwer bazy danych, nigdy zegar terminala.

Baza zawiera cały stan magazynu, więc kopia zapasowa jest częścią architektury, a nie dodatkiem. Harmonogram łączy kopię pełną z różnicową, a dziennik transakcji pozwala odtworzyć stan z dokładnością do minut. Edycja Express nie zawiera SQL Server Agent, więc zadania kopii uruchamia się w niej z Harmonogramu zadań Windows. Przy edycji Standard te same zadania konfiguruje się w Agencie i dodaje do nich powiadomienie o błędzie.

Kopia, której nikt nie odtworzył na próbę, nie jest jeszcze kopią. Przed startem produkcyjnym warto zrobić odtworzenie na osobnej instancji i sprawdzić, czy dokumenty z ostatniego dnia zgadzają się ze stanami lokacji. Ten test zajmuje kilka godzin, a odsłania błędy uprawnień i brakujące pliki, zanim staną się awarią.

Kiedy moduł ERP wystarcza, a kiedy potrzebny jest program WMS

Mały magazyn z ograniczonym asortymentem i jedną osobą przy regałach często obsłuży się modułem ERP. Granica zaczyna się tam, gdzie towar trzeba znaleźć, a nie tylko policzyć. Cztery objawy wskazują, że ewidencja stanów przestała wystarczać.

  • Adresowanie lokacji - towar leży w setkach adresów, a magazynier szuka go z pamięci.
  • Partie i daty ważności - wydanie musi zachować kolejność FEFO albo FIFO, której dokument handlowy nie wymusza.
  • Praca zmianowa - kilku operatorów pobiera z tych samych regałów w tym samym czasie.
  • Kontrola skanem - pomyłkę wykrytą dopiero przy inwentaryzacji trudno odtworzyć, a koszt korekty rośnie z czasem.

Wdrożenie programu WMS obok działającego ERP zaczyna się zwykle od jednej strefy albo jednego asortymentu. Pilotaż pokazuje, czy adresacja odpowiada układowi regałów, zanim system obejmie cały magazyn. Dokumenty z ERP płyną w tym czasie tylko dla wybranej strefy, a reszta magazynu pracuje po staremu.

Ostatni z czterech objawów ma wymierny mechanizm. Gdy skan nie jest wymagany przy wydaniu, błąd ilościowy trafia do bazy i wychodzi na jaw przy inwentaryzacji w magazynie, często po tygodniach. Przy kontroli skanem ten sam błąd zatrzymuje operację w sekundzie jej wykonania.

Ogólny przegląd rodzajów i klas systemów, w tym licencjonowanie i wybór między chmurą a serwerem w firmie, zawiera strona systemy WMS. Konkretny produkt opisuje artykuł system magazynowy WMS.net. Funkcje modułów można obejrzeć na stronie Studio WMS.net albo w demo magazynu online.