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.
| System | Rekord podstawowy | Co magazyn od niego bierze | Co magazyn mu oddaje |
|---|---|---|---|
| ERP | dokument handlowy i kartoteka | zamówienia i dane towarów | potwierdzenia przyjęć i wydań |
| WMS | stan w lokalizacji | zadania przyjęcia i wydania | ruchy i stany fizyczne |
| TMS | zlecenie przewozu | plan odbiorów i awizacje | potwierdzenie wydania przewoźnikowi |
| MES | zlecenie produkcyjne | zapotrzebowanie na materiały | pobrania 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.

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 granicy | Kto zapisuje | Kto otrzymuje |
|---|---|---|
| Zatwierdzenie okna czasowego | system placu | magazyn oraz TMS |
| Wjazd pojazdu na teren | brama lub system placu | WMS jako zapowiedź pracy przy rampie |
| Potwierdzenie załadunku | WMS | TMS oraz ERP |
| Wyjazd pojazdu | brama lub system placu | TMS |
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.
| Mechanizm | Zaleta | Ograniczenie |
|---|---|---|
| Interfejs REST | natychmiastowa odpowiedź o powodzeniu | odbiorca musi być dostępny w chwili wywołania |
| Kolejka komunikatów | odbiorca może być chwilowo niedostępny | opóźnienie i konieczność pilnowania kolejności |
| Plik EDI | standard wymiany z kontrahentami zewnętrznymi | przetwarzanie 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 korekty | Zapisuje | Zatwierdza |
|---|---|---|
| Nadwyżka lub niedobór z inwentaryzacji | WMS jako ruch korygujący | kierownik magazynu, powyżej progu także księgowość |
| Uszkodzenie towaru | WMS ze zmianą statusu partii | kierownik magazynu |
| Zmiana kartoteki towaru | ERP jako właściciel kartoteki | osoba 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.

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.




