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.

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 zlecenia | Zdarzenie zmieniające status | Skutek dla stanu |
|---|---|---|
| Nowe | Przyjęcie zamówienia z ERP | Rezerwacja towaru na lokacjach |
| W realizacji | Pierwszy skan lokacji przez operatora | Zlecenie zablokowane dla innych operatorów |
| Częściowe | Skan mniejszej ilości niż w zleceniu | Reszta wraca do puli albo czeka na uzupełnienie |
| Zamknięte | Skan przy pakowaniu | Zdję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.
| Obszar | Moduł magazynowy ERP | System WMS |
|---|---|---|
| Poziom stanu | Magazyn lub strefa | Lokacja oraz partia |
| Praca magazyniera | Wydruk dokumentu, brak zadań | Zadania na terminalu z kontrolą skanem |
| Główne dokumenty | Handlowe i księgowe | Zlecenia zbiórki i przesunięcia |
| Wycena i rozliczenie | W tym samym systemie | Przekazane do ERP przez integrację |
| Wykrycie błędu | Po fakcie, przy inwentaryzacji | W 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.
| Warstwa | Technologia w typowym wdrożeniu | Odpowiedzialność |
|---|---|---|
| Dane | Microsoft SQL Server | Stany i dokumenty oraz procedury |
| Aplikacja | ASP.NET, C#, serwer IIS | Reguły biznesowe, uprawnienia, integracje |
| Klient biurowy | Program Windows albo przeglądarka | Dokumenty, konfiguracja, podgląd |
| Terminal | Android, czytnik 1D i 2D, Wi-Fi | Skanowanie, zadania, potwierdzenia |

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.

