Dyspozytor magazynowy w procesie zleceń

Dyspozytor magazynowy przyjmuje zadania spływające z ERP, ustala ich kolejność, przydziela je ludziom i rampom, a potem pilnuje terminów. Decyzje podejmuje w krótkim czasie i często na niepełnych danych, bo zlecenia wpadają w ciągu całej zmiany. Jakość jego pracy mierzy się terminowością wysyłek, a nie liczbą wykonanych telefonów.

W magazynie bez jednego systemu zadania pojawiają się w kilku kanałach naraz, a rzeczywisty stan realizacji zna tylko ten, kto ostatnio rozmawiał z magazynierem. Poniżej cztery sytuacje, które najczęściej rozbijają pracę dyspozytora:

  • Rozproszone źródła - zlecenia przychodzą telefonem albo mailem, więc nie ma jednej aktualnej listy priorytetów.
  • Brak podglądu obciążenia - trudno ocenić, który magazynier ma wolne moce, a który jest przeciążony.
  • Ręczne statusy - raportowanie postępu głosem lub na papierze wydłuża czas reakcji na opóźnienia.
  • Pilne wysyłki w tłumie zadań - bez automatycznej klasyfikacji zlecenie z krótkim terminem ginie wśród zwykłych.

Każda z tych sytuacji osobno wydaje się drobna, ale przy kilkuset dokumentach dziennie ich suma prowadzi do spóźnionych wysyłek i większej liczby reklamacji. Moduł dyspozytorski w systemie klasy WMS scentralizuje dane i zautomatyzuje powtarzalne czynności, a dyspozytor zajmuje się wyjątkami.

Źródłem zadań są dokumenty. Zewnętrzne przyjęcie PZ tworzy zadania rozładunku i odłożenia, wydanie WZ generuje kompletację i załadunek, a dokument przesunięcia MM prowadzi do zadania transportu wewnętrznego. Każde zadanie dziedziczy termin i klienta z dokumentu, więc dyspozytor nie musi ich przepisywać.

Kolejka zadań i priorytety

Kolejkę zadań tworzy lista zleceń magazynowych z jednym statusem i jednym priorytetem dla każdej pozycji. System kategoryzuje zadania według statusu oraz priorytetu, dzięki czemu dyspozytor od razu widzi, które wymagają natychmiastowej reakcji. Zasada przypomina klasyfikację ABC magazynu, tylko zastosowaną do zleceń zamiast do lokalizacji towaru. Podział asortymentu opisuje też serwis o klasyfikacji ABC i XYZ.

Status zadaniaKto go zmieniaNastępny krok
NoweSystem, po odebraniu dokumentu z ERPPrzydział do pracownika lub strefy
PrzydzieloneDyspozytor lub reguła automatycznaPotwierdzenie startu na terminalu
W realizacjiMagazynier po zeskanowaniu lokalizacji i towaruZakończenie albo wstrzymanie
WstrzymaneMagazynier lub dyspozytorDecyzja o wznowieniu albo przekazaniu
ZakończoneSystem, po ostatnim potwierdzeniuDokument magazynowy i aktualizacja stanu

Priorytet wynika z godziny granicznej wysyłki i z umowy z klientem, a typ zadania koryguje wynik. Prosty model liczy klasę pilności na podstawie czasu do terminu, a sortowanie w obrębie klasy rozstrzyga starszy termin. Poniższe zapytanie jest przykładem takiej klasyfikacji, a nie schematem konkretnego produktu.

SELECT TaskId, TaskType, DueAt,
       CASE WHEN DueAt < DATEADD(MINUTE, 30, SYSDATETIME()) THEN 3
            WHEN DueAt < DATEADD(HOUR, 2, SYSDATETIME())    THEN 2
            ELSE 1 END AS UrgencyClass
FROM dbo.WarehouseTasks
WHERE Status IN ('NEW', 'ASSIGNED')
ORDER BY UrgencyClass DESC, DueAt, TaskId;
Mężczyzna w okularach z terminalem ręcznym stoi przy dużym monitorze z mapą magazynu złożoną z kolorowych bloków
Kolejka zleceń do realizacji na wspólnym ekranie - dyspozytor widzi status i priorytet każdej pozycji przed przydziałem

Zadania wstrzymane i wyjątki

Największą część czasu dyspozytora zajmują zadania, które nie da się wykonać zgodnie z planem. Magazynier wstrzymuje zadanie, gdy w lokalizacji brakuje towaru, paleta jest uszkodzona albo partia ma blokadę jakościową. System zapisuje przyczynę wstrzymania, a dyspozytor wybiera reakcję: uzupełnienie z innej lokalizacji, zamianę partii lub anulowanie pozycji z korektą dokumentu. Zapis przyczyn pozwala potem zobaczyć, które lokalizacje powtarzają się w brakach.

Pobieranie zadania bez podwójnego przydziału

Gdy kilku magazynierów jednocześnie prosi terminal o kolejne zadanie, dwa zapytania mogą trafić w ten sam wiersz. Podpowiedź READPAST omija wiersze zablokowane przez inną transakcję, a UPDLOCK zakłada blokadę na wybranym wierszu do końca operacji. Wspólnie pozwalają traktować tabelę zadań jak kolejkę, w której każdy dostaje inny rekord. Składnię opisuje dokumentacja podpowiedzi tabel w T-SQL.

;WITH nxt AS (
    SELECT TOP (1) *
    FROM dbo.WarehouseTasks WITH (ROWLOCK, UPDLOCK, READPAST)
    WHERE Status = 'NEW' AND ZoneId = @ZoneId
    ORDER BY Priority DESC, DueAt, TaskId
)
UPDATE nxt
SET Status = 'ASSIGNED', AssignedTo = @UserId, AssignedAt = SYSDATETIME()
OUTPUT inserted.TaskId, inserted.TaskType, inserted.FromLocation, inserted.ToLocation;

Reguła: przydział ręczny dyspozytora zawsze wygrywa z automatycznym i zostaje zapisany razem z osobą, która go wykonała.

Obciążenie pracowników i przydział zadań

Przydział zadań odbywa się ręcznie albo automatycznie, zależnie od bieżącego obciążenia zespołu. Obciążenie to suma planowanych minut otwartych zadań przypisanych do pracownika. Norma czasowa pochodzi z typu zadania i liczby jednostek, więc system porównuje ludzi na tej samej skali. Dyspozytor widzi wtedy nie tylko, kto jest wolny, lecz także kto wkrótce przekroczy dostępny czas zmiany.

Kryterium przydziałuJak jest liczoneWpływ na decyzję
ObciążenieSuma planowanych minut otwartych zadańZadanie trafia do pracownika z najmniejszą sumą
UprawnieniaStrefa i typ urządzenia przypisane do kontaWózek wysokiego składowania tylko dla uprawnionych
BliskośćOdległość ostatniej lokalizacji od miejsca zadaniaSkraca dojście lub dojazd między zadaniami
CiągłośćZadania z tego samego zlecenia lub paletyOgranicza przekazywanie towaru między osobami
SELECT AssignedTo,
       COUNT(*)                AS OpenTasks,
       SUM(PlannedMinutes)     AS LoadMinutes
FROM dbo.WarehouseTasks
WHERE Status IN ('ASSIGNED', 'IN_PROGRESS')
GROUP BY AssignedTo
ORDER BY LoadMinutes DESC;

Normy czasowe są hipotezą, którą trzeba weryfikować na historii wykonania. Mediana czasu zadania z ostatnich tygodni pokazuje, gdzie norma odbiega od praktyki, a zawyżona norma ukrywa przeciążenie zespołu. Wskaźniki obciążenia mają sens dopiero po takiej kalibracji.

Wynik tego zapytania zasila widok zespołu na ekranie dyspozytora. Kierownik magazynu ma stały wgląd w obciążenie poszczególnych osób i postęp każdej dyspozycji. Korzyści dla samych magazynierów opisuje artykuł o systemie Comarch WMS Magazynier.

Pracownica w kasku i kamizelce odblaskowej przegląda listę zadań na tablecie obok regału
Lista zadań na tablecie przypisanego pracownika - kompletacja zaczyna się dopiero po przydziale przez system lub dyspozytora

Rampy i okna czasowe w decyzjach dyspozytora

Rampa jest zasobem o ograniczonej przepustowości. Dyspozytor decyduje, który pojazd obsłużyć teraz i którą ekipę do niego skierować, a jego wybór zależy od liczby zaplanowanych slotów w godzinie oraz od rzeczywistych opóźnień. Zajęcie rampy ponad plan blokuje następne pojazdy, więc opóźnienie jednego zlecenia przenosi się na kolejne.

Rezerwacje slotów wyznaczają granice pracy ramp, a ich zasady opisuje artykuł o rezerwowaniu doków magazynowych. Obraz placu i miejsc postojowych pokazuje strona o wizualizacji zajętości miejsc parkingowych. Dyspozytor łączy te dane z kolejką zadań: zlecenie wydania nie ma sensu, gdy pojazd jeszcze nie stoi przy rampie.

Reguła: zadanie załadunku startuje po potwierdzeniu obecności pojazdu przy rampie, a nie w chwili wygenerowania zlecenia.

Dane o wysyłkach dyspozytor koryguje bez kontaktu z innym działem, na przykład zmienia sposób dostawy lub kuriera, gdy pojazd nie dojechał. Pełna historia zmian w dokumentach magazynowych ułatwia potem rozliczenie z przewoźnikiem. Planowanie samych wysyłek omawia strona o planowaniu wysyłek z magazynu.

Kolejność obsługi pojazdów przy zatorze

Gdy pod bramami stoi więcej pojazdów, niż mieści się w slotach, dyspozytor stosuje stałe reguły zamiast improwizacji. Pierwszeństwo dostaje pojazd z najkrótszym terminem odbioru u klienta, a w drugiej kolejności ten, którego rozładunek odblokowuje linię produkcyjną lub zamówienie oczekujące na towar. Pojazdy bez awizacji czekają na wolny slot, chyba że umowa przewiduje inaczej.

Zapisanie tych reguł w systemie skraca dyskusje przy bramie, bo kierowca dostaje przewidywalny czas oczekiwania. Ten sam zapis pozwala później sprawdzić, czy wyjątki od reguł nie stały się normą.

Alerty i wskaźniki opóźnień

Alert ma sens, gdy wskazuje działanie, a nie tylko fakt. Dyspozytor obserwujący pięćdziesiąt zadań nie zauważy jednego zagrożonego, dopóki system go nie wyróżni. Zadanie SQL Agent uruchamiane co minutę sprawdza reguły i zapisuje wyniki do tabeli alertów, którą czyta ekran dyspozytora.

AlertWarunekAdresatOczekiwana reakcja
Zadanie bez przydziałuStatus Nowe dłużej niż ustalony czasDyspozytorRęczny przydział lub zmiana priorytetu
Zagrożona godzina granicznaPozostały czas krótszy niż suma normatywnych minut zadań zleceniaDyspozytor i kierownik zmianyDodanie ludzi lub przeniesienie zadań
Rampa ponad slotPojazd zajmuje rampę dłużej niż zarezerwowanoDyspozytorPrzeplanowanie kolejnych pojazdów
Pracownik bez zadaniaBrak zadań otwartych przez zadany okresDyspozytorPrzydział zadania z kolejki
SELECT o.OrderId, o.CutOffAt,
       SUM(t.PlannedMinutes) AS RemainingMinutes
FROM dbo.Orders AS o
JOIN dbo.WarehouseTasks AS t ON t.OrderId = o.OrderId
WHERE t.Status <> 'DONE'
GROUP BY o.OrderId, o.CutOffAt
HAVING DATEDIFF(MINUTE, SYSDATETIME(), o.CutOffAt) < SUM(t.PlannedMinutes) / @ActiveWorkers;

Zapytanie porównuje czas do godziny granicznej z pracą, którą zespół musi jeszcze wykonać. Jest uproszczone, bo zakłada równomierny podział pracy, ale wychwytuje zlecenia, które nie zdążą, zanim staną się problemem. Zbyt czułe progi zasypują ekran ostrzeżeniami, więc alerty deduplikuje się i eskaluje: pierwsze ostrzeżenie trafia do dyspozytora, a niezałatwione po zadanym czasie do kierownika.

Kierownik magazynu potrzebuje z tych samych danych kilku wskaźników tygodniowych. Średni czas od przydziału do startu zadania pokazuje, ile czasu tracą ludzie na oczekiwanie. Odsetek zadań wstrzymanych wskazuje problemy z zapasem lub lokalizacjami, a udział wysyłek zrealizowanych przed godziną graniczną jest miarą końcową pracy całej zmiany. Tabela alertów i historia zadań wystarczają do wyliczenia wszystkich trzech bez dodatkowej ewidencji.

Arkusz kalkulacyjny czy system WMS dla dyspozytora

Mniejsze magazyny rozdzielają zadania w arkuszu albo na tablicy przy wejściu na halę. Rozwiązanie działa przy niewielkiej liczbie dokumentów, ale wraz ze wzrostem wolumenu zaczyna generować więcej problemów niż korzyści.

KryteriumArkusz lub tablicaSystem WMS z modułem dyspozytorskim
Aktualność obciążeniaRęczna aktualizacja, często spóźnionaWidoczna na bieżąco dla całego zespołu
PriorytetyZależne od pamięci dyspozytoraAutomatyczna kategoryzacja według statusu
Zmiana danych wysyłkiKontakt z innym działem lub systememEdycja w widoku dyspozycji
Praca poza stanowiskiemPraktycznie niemożliwaDostęp z tabletu lub smartfona
Analiza opóźnieńRęczne zestawianie danych z kilku źródełHistoria realizacji i gotowe raporty

Dla magazynu obsługującego kilkanaście zleceń dziennie arkusz bywa wystarczający. Gdy dyspozycji przybywa, a zespół liczy kilkanaście osób, koszt utrzymania porządku w arkuszu przewyższa koszt modułu zintegrowanego z resztą systemu. Rola dyspozytora zależy przy tym od branży, w której działa magazyn:

  • E-commerce - dominują drobne wysyłki, a dyspozytor reaguje w ciągu dnia na zmiany w odbiorach kurierskich.
  • Produkcja - zadania dotyczą zaopatrzenia linii w komponenty i liczy się terminowość dowozu, a nie liczba paczek.
  • Logistyka kontraktowa 3PL - jeden zespół obsługuje zlecenia wielu klientów, każdy z odrębnymi zasadami priorytetów, co opisuje artykuł o WMS dla operatora 3PL.
  • Handel hurtowy - przeważają duże wysyłki paletowe, a dyspozytor koordynuje pracę z transportem i oknami rozładunku.

Widok dyspozytora różni się od widoku magazyniera. Magazynier widzi na terminalu jedno następne zadanie z lokalizacją i ilością, a dyspozytor cały zbiór z podziałem na strefy i rampy. Rozdzielenie tych widoków ogranicza liczbę błędnych decyzji, bo pracownik nie wybiera sam zadań z kolejki, a dyspozytor nie ingeruje w pojedyncze skany.

Comarch WMS w pracy dyspozytora

System Comarch WMS Zarządzanie obsługuje zadania spływające z ERP do magazynu, a jego interfejs przypomina aplikacje do zarządzania projektami, a nie klasyczne programy magazynowe. Zadania są kategoryzowane według statusu i priorytetu. Pracowników przydziela się ręcznie lub automatycznie, z uwzględnieniem obciążenia. Ogólny opis rozwiązania zawiera artykuł o Comarch WMS jako inteligentnym centrum magazynowym.

Dyspozytor może w tym systemie zmieniać szczegóły wysyłek, takie jak sposób dostawy czy dane kuriera, i przeglądać historię zmian dokumentów. Elastyczne filtrowanie przyspiesza pracę przy dużej liczbie dyspozycji, a tworzenie zleceń i zarządzanie jednostkami logistycznymi odbywa się z przeglądarki, bez instalowania dodatkowego oprogramowania. Technologia Responsive Web Design sprawia, że widok działa na urządzeniach mobilnych oraz na komputerze, co pomaga przy pracy na kilka zmian, gdy dyspozytor rzadko zostaje przy jednym stanowisku.

Analiza danych o realizacji zadań pozwala wskazać wąskie gardła, zanim zaczną wpływać na terminowość wysyłek. Wymiana dokumentów z ERP wymaga integracji, którą opisuje artykuł o integracji Comarch WMS z systemami ERP.

Wdrożenie i szkolenie zespołu dyspozytorskiego

Wdrożenie modułu dyspozytorskiego poprzedza analiza obecnego przepływu zleceń oraz integracja z ERP odpowiedzialnym za dokumenty wysyłkowe, opisana w artykule o integracji WMS z ERP. Na tym etapie ustala się reguły kategoryzacji zadań, dopasowane do magazynu, oraz progi alertów.

Szkolenie dyspozytorów trwa zwykle kilka dni i obejmuje pracę na rzeczywistych dokumentach w środowisku testowym. Dobrą praktyką jest równoległa praca starego i nowego sposobu przez pierwszy tydzień, co pozwala wychwycić rozbieżności, zanim gospodarka magazynowa zacznie opierać się wyłącznie na systemie. Po okresie przejściowym dział pracuje już w nowym środowisku z pełną historią zgromadzoną w trakcie wdrożenia, która ułatwia też rozliczenie kosztów magazynowych.