Magazyn rzadko działa na jednym programie. Wokół niego pracuje ERP z dokumentami handlowymi, system transportowy z trasami, a w zakładach produkcyjnych także system nadzorujący linie. Każdy z nich zapisuje część danych o tym samym towarze, więc pytanie o granice jest w praktyce pytaniem o to, który system ma ostatnie słowo w danym rekordzie.

Artykuł patrzy na to z perspektywy magazynu, czyli miejsca, w którym towar fizycznie się znajduje. Nie opisuje branży przewozowej, którą omawia osobny tekst o systemach IT dla branży TSL.

Systemy informatyczne w magazynie - mapa i właściciele rekordów

Podział zaczyna się od pytania, co system traktuje jako podstawowy obiekt. W ERP jest nim dokument handlowy, w WMS lokalizacja ze stanem, w TMS zlecenie przewozu, a w MES zlecenie produkcyjne z operacjami. Ten obiekt jest rekordem podstawowym i to jego system utrzymuje w wersji obowiązującej. Pozostałe systemy mogą go czytać albo otrzymywać jego zmiany.

SystemRekord podstawowyCo magazyn od niego bierzeCo magazyn mu oddaje
ERPdokument handlowy i kartotekazamówienia i dane towarówpotwierdzenia przyjęć i wydań
WMSstan w lokalizacjizadania przyjęcia i wydaniaruchy i stany fizyczne
TMSzlecenie przewozuplan odbiorów i awizacjepotwierdzenie wydania przewoźnikowi
MESzlecenie produkcyjnezapotrzebowanie na materiałypobrania i przyjęcia wyrobów

Do tej listy bywa dołączana automatyka, sterowana przez WCS, oraz wymiana danych elektronicznych EDI z kontrahentami. Klasę WCS i jej relację do WMS omawia artykuł o magazynowych systemach informatycznych, a ogólny przegląd rodzin systemów logistycznych zawiera tekst o oprogramowaniu logistycznym.

Reguła: każdy rekord ma jednego właściciela. Pozostałe systemy przechowują jego kopię z numerem wersji i nie zmieniają jej bez komunikatu zwrotnego do właściciela.

ERP i magazyn - stan księgowy a fizyczny

ERP prowadzi stany ilościowe i wartościowe, na podstawie których powstają dokumenty sprzedaży i księgowania. Nie zna jednak miejsca, w którym towar leży. Stan księgowy mówi, ile jednostek firma posiada, a stan fizyczny w WMS, gdzie każda z nich się znajduje. Przy poprawnej pracy obu systemów sumy zgadzają się co do sztuki.

Rozbieżność jest pierwszym sygnałem, że granica została naruszona. Typowe przyczyny to dokument, który ERP zaksięgował, a magazyn jeszcze nie wykonał, albo ruch, który magazyn wykonał, a ERP nie otrzymał komunikatu. Zestawienie obu stanów robi się zapytaniem, które łączy je pełnym złączeniem i wybiera pozycje o różnych ilościach. Nazwy tabel są przykładowe i nie odpowiadają schematowi konkretnego produktu.

-- przykładowe zestawienie stanu z ERP i sumy ruchów z WMS
SELECT COALESCE(e.TowarId, w.TowarId) AS TowarId,
       e.IloscErp,
       w.IloscWms,
       ISNULL(e.IloscErp, 0) - ISNULL(w.IloscWms, 0) AS Roznica
FROM dbo.StanErp AS e
FULL OUTER JOIN (
    SELECT TowarId, SUM(Ilosc) AS IloscWms
    FROM dbo.RuchMagazynowy
    GROUP BY TowarId
) AS w ON w.TowarId = e.TowarId
WHERE ISNULL(e.IloscErp, 0) <> ISNULL(w.IloscWms, 0);

Złączenie pełne pokazuje także towary, które istnieją tylko po jednej stronie, na przykład nową pozycję dodaną w WMS bez kartoteki w ERP. Opis składni złączeń zawiera dokumentacja złączeń w SQL Server w Microsoft Learn. Zestawienie warto uruchamiać cyklicznie, a wynik przekazywać osobie odpowiedzialnej za dane, nie dopiero podczas inwentaryzacji.

Rezerwacje i alokacja

Podobny podział dotyczy rezerwacji. ERP rezerwuje towar ilościowo pod zamówienie klienta, co gwarantuje, że sprzedaż nie przekroczy stanu. WMS przekłada rezerwację na alokację, czyli wskazuje konkretne palety i lokalizacje, z których zostanie skompletowane zamówienie. Ilość rezerwacji jest więc w ERP, a fizyczne miejsce w WMS, i żaden z nich nie powinien przejmować roli drugiego. Gdy alokacja się nie powiedzie, bo paleta okazała się uszkodzona albo brakuje jej w lokalizacji, WMS zgłasza do ERP brak i zamówienie wraca do planowania. Sprzedawca widzi wtedy realną dostępność, a nie tę, która wynikała z opóźnionego stanu.

WMS - lokalizacje i ruchy

System magazynowy odpowiada za to, czego ERP nie widzi: adresy lokalizacji oraz zadania wykonywane przez operatorów. Zapisuje przyjęcie palety w konkretnej lokalizacji, przesunięcie między strefami i kompletację z miejsca składowania. Każdy ruch ma autora i czas, więc historia lokalizacji da się odtworzyć bez wykorzystywania dokumentów handlowych.

Granica z ERP przebiega przez dokumenty. Przyjęcie zewnętrzne (PZ) i wydanie zewnętrzne (WZ) mogą powstawać w ERP, a w WMS jedynie zlecenia ich wykonania, albo odwrotnie, zależnie od wdrożenia. Ważne, aby dokument miał jednego wystawcę, a drugi system otrzymywał potwierdzenie. Typy dokumentów opisuje artykuł o dokumentach magazynowych w WMS.

Wózek widłowy z paletą kartonów w hali oraz dłoń trzymająca smartfon z aplikacją magazynową
Praca z aplikacją mobilną przy palecie - moment, w którym stan fizyczny trafia do bazy WMS.

Studio WMS.net jest przykładem systemu tej klasy, który działa w przeglądarce i na terminalach z Androidem. Zakres funkcji opisuje strona Studio WMS.net, a budowę modułów - tekst o systemie zarządzania magazynem WMS. Zapasy w ujęciu procesowym, w tym model zaopatrzenia zarządzanego przez dostawcę, przedstawia artykuł o gospodarce magazynowej.

TMS i plac - przekazanie towaru przewoźnikowi

System transportowy styka się z magazynem w jednym miejscu: przy wydaniu towaru przewoźnikowi. Do tego momentu jednostki logistyczne należą do magazynu, a po podpisaniu dokumentu przewozowego do zlecenia przewozu. Granica jest więc zdarzeniem: potwierdzeniem załadunku z podpisem kierowcy i czasem.

Dane, które przechodzą przez tę granicę, są niewielkie, lecz ważne. TMS przekazuje magazynowi plan odbiorów z numerem zlecenia i numerem rejestracyjnym pojazdu, a magazyn zwraca liczbę i identyfikatory załadowanych jednostek. Jeżeli teren obiektu obsługuje osobny system placu, rezerwuje on okna na rampach i przekazuje bramie awizację. Zakres takiego systemu opisuje artykuł o systemie YMS.

Zdarzenie na granicyKto zapisujeKto otrzymuje
Zatwierdzenie okna czasowegosystem placumagazyn oraz TMS
Wjazd pojazdu na terenbrama lub system placuWMS jako zapowiedź pracy przy rampie
Potwierdzenie załadunkuWMSTMS oraz ERP
Wyjazd pojazdubrama lub system placuTMS

Po potwierdzeniu załadunku odpowiedzialność za transport przejmuje przewoźnik. Magazyn nadal odpowiada za to, co zostało załadowane: lista jednostek z numerami SSCC trafia do TMS, a stamtąd do dokumentu przewozowego. Jeżeli kierowca zgłasza brak palety przy rozładunku u odbiorcy, sprawdza się tę listę, a nie pamięć operatora. Potwierdzenie z podpisem i czasem stanowi dowód, że w chwili wydania jednostki były kompletne.

MES i produkcja - dostawy do linii

W zakładach produkcyjnych magazyn pracuje dla linii. System MES zna zlecenia produkcyjne i ich operacje, ale nie wie, na której półce leży dany materiał. WMS zna lokalizacje, lecz nie zna operacji. Granica wyznacza dwa strumienie: pobranie materiału z magazynu na zlecenie oraz przyjęcie wyrobu gotowego z produkcji na stan.

Pobranie na zlecenie jest zadaniem WMS wywołanym komunikatem z MES lub ERP. Zadanie mówi, jaki materiał i w jakiej ilości ma trafić na linię. Przyjęcie wyrobu odbywa się odwrotnie: linia zgłasza ukończoną partię, a magazyn przypisuje jej lokalizację i numer jednostki logistycznej. Produkcyjne strony procesu, w tym planowanie materiałowe, omawia artykuł o tym, jak oprogramowanie ERP wspiera produkcję.

Reguła: numer partii nadaje ten system, który tworzy wyrób. Magazyn kopiuje go bez zmian na etykietę, bo tylko wtedy da się odtworzyć historię partii od surowca do wysyłki.

Wymiana danych między systemami

Mapę systemów zamyka wymiana danych. Komunikat przechodzący przez granicę musi zawierać identyfikator zdarzenia z wersją oraz dane biznesowe. Identyfikator pozwala odrzucić powtórzony komunikat, a wersja uniemożliwia nadpisanie nowszych danych starszymi, jeśli komunikaty dotrą w innej kolejności niż zostały wysłane.

{
  "idZdarzenia": "d0b7e4b2-3c1a-4a55-9d5c-0a8f6f1f7a10",
  "typ": "PrzyjecieZakonczone",
  "wersja": 3,
  "zlecenie": "PZ/2026/000123",
  "pozycje": [
    { "towar": "ABC-100", "ilosc": 24, "lokalizacja": "A-02-05-3" }
  ]
}

Przykładowy komunikat opisuje zakończone przyjęcie i mógłby być wysłany z WMS do ERP. Wszystkie wartości są przykładowe. Odbiorca zapisuje identyfikator zdarzenia w tabeli z ograniczeniem unikalności, co zabezpiecza go przed dublem, a wersję porównuje z zapisaną. Więcej o przesyłaniu takich komunikatów przez REST i kolejki znajduje się w artykule o integracji WMS z ERP.

MechanizmZaletaOgraniczenie
Interfejs RESTnatychmiastowa odpowiedź o powodzeniuodbiorca musi być dostępny w chwili wywołania
Kolejka komunikatówodbiorca może być chwilowo niedostępnyopóźnienie i konieczność pilnowania kolejności
Plik EDIstandard wymiany z kontrahentami zewnętrznymiprzetwarzanie wsadowe, rzadziej w czasie rzeczywistym

Każdy z tych mechanizmów wymaga obsługi błędów. Komunikat, którego odbiorca nie potrafi przetworzyć, na przykład z powodu brakującej kartoteki, nie może zniknąć ani blokować kolejki. Trafia do osobnej kolejki błędów z opisem przyczyny, a odpowiedzialny za dane pracownik poprawia kartotekę i ponawia wysyłkę. Bez takiej ścieżki rozbieżności między systemami narastają po cichu.

Inwentaryzacja i korekty - kto zmienia stan

Inwentaryzacja jest sprawdzianem granic, bo wynik liczenia zmienia stan w obu systemach. Operator liczy palety w lokalizacjach i zapisuje wynik w WMS, który porównuje go ze stanem wynikającym z ruchów. Różnica powstaje jako ruch korygujący, a ERP otrzymuje na jej podstawie dokument korekty. Kolejność ma znaczenie: najpierw stan fizyczny, potem księgowy.

Rodzaj korektyZapisujeZatwierdza
Nadwyżka lub niedobór z inwentaryzacjiWMS jako ruch korygującykierownik magazynu, powyżej progu także księgowość
Uszkodzenie towaruWMS ze zmianą statusu partiikierownik magazynu
Zmiana kartoteki towaruERP jako właściciel kartotekiosoba odpowiedzialna za dane

Progi zatwierdzania ustala się według wartości pozycji, a nie liczby sztuk. Korekta drobnych elementów nie powinna wymagać podpisu księgowości, ale niedobór drogiego podzespołu tak. Zasady i przebieg spisu z natury opisuje artykuł o inwentaryzacji magazynowej. Po zamknięciu spisu oba systemy mają ten sam stan, a historia korekty pozostaje w każdym z nich.

Identyfikacja i standardy GS1

Systemy porozumiewają się identyfikatorami, więc ich forma ma znaczenie. Standardy GS1 opisują numery GTIN dla towarów oraz numer SSCC dla jednostek logistycznych, na przykład palet. Numer jednostki nadaje się raz przy jej utworzeniu, a każdy system, który się nią zajmuje, używa go bez zmian. Oficjalne informacje o standardach publikuje GS1 Polska.

SSCC składa się z 18 cyfr: cyfry rozszerzenia, prefiksu firmowego GS1, numeru seryjnego i cyfry kontrolnej. Cyfrę kontrolną liczy się modulo 10 z wagami 3 i 1 naprzemiennie, zaczynając od prawej. Poniższa funkcja w C# wylicza ją dla 17 cyfr, a także dla 12 cyfr numeru GTIN-13 bez cyfry kontrolnej.

static int CyfraKontrolna(string cyfry)
{
    int suma = 0;
    for (int i = 0; i < cyfry.Length; i++)
    {
        int cyfra = cyfry[cyfry.Length - 1 - i] - '0';
        suma += cyfra * (i % 2 == 0 ? 3 : 1);
    }
    return (10 - suma % 10) % 10;
}

// przykład: CyfraKontrolna("05901234000000001") zwraca 7,
// czyli pełny numer to 059012340000000017 (numer przykładowy)

Numer nadaje WMS przy tworzeniu palety, a potem trafia on w komunikatach do systemów transportowego i ERP. Etykieta logistyczna zawiera ten sam numer w kodzie kreskowym GS1-128. Format etykiety i pola, które zawiera, przedstawia artykuł o etykietach logistycznych GS1.

Stos kartonów na palecie z etykietami zawierającymi kody kreskowe i kody QR w hali magazynowej
Jednostki logistyczne z etykietami - wspólny identyfikator, który łączy dane w magazynie i w systemach zewnętrznych.

Jak sprawdzić granice we własnym magazynie

Granice sprawdza się na własnych danych. Dla każdej informacji o towarze warto zapisać, który system jest jej właścicielem, w jakiej postaci ją przekazuje i jak reaguje na błąd. Taka tabela zajmuje jedną stronę, a wyjaśnia większość późniejszych sporów o rozbieżności między raportami.

  • Właściciel - system, w którym dana informacja powstaje i w którym wolno ją zmieniać.
  • Odbiorcy - systemy, które otrzymują kopię, i sposób, w jaki sprawdzają jej aktualność.
  • Mechanizm - interfejs REST albo kolejka, wraz z częstotliwością wymiany.
  • Reakcja na błąd - kolejka błędów oraz osoba odpowiedzialna za poprawę.

Braki w takiej tabeli wskazują miejsca, w których dane występują w kilku systemach bez właściciela. Od nich zaczyna się porządkowanie, bo każdy dodatkowy moduł zwiększa liczbę takich miejsc.