Rejestr awiz w Studio WMS.net

W Studio WMS.net awizacja dostaw jest osobną sekcją programu z własnym rejestrem. Rejestr dzieli się na dwie części: awiza w buforze oraz awiza zatwierdzone. Bufor przechowuje zgłoszenia, które ktoś wpisał, ale magazyn jeszcze ich nie potwierdził. Po zatwierdzeniu awizo przechodzi do drugiej części i staje się terminem, na który rampa jest zarezerwowana.

Ten sam mechanizm obsługuje dostawy i wysyłki. O kierunku decyduje numer dokumentu: zlecenie przyjęcia ZPZ oznacza dostawę do magazynu, a zlecenie wydania ZWZ wysyłkę do odbiorcy. Dzięki temu dyspozytor widzi na jednej liście wszystko, co w danym dniu dotknie ramp, i nie musi przełączać się między osobnymi rejestrami przyjęć i wydań.

Etap awizacjiKto go wykonujeCo dzieje się w systemie
Dopisanie awizadostawca lub dyspozytorrezerwacja rampy z godziną i zapis pojazdu w buforze
Zatwierdzenie awizadyspozytor magazynuzmiana statusu z bufora na awizo zatwierdzone
Wjazd pojazduochrona lub kiosk samoobsługowyporównanie numeru rejestracyjnego z rezerwacją
Rozładunek lub załadunekzespół rampywpis liczby palet potwierdzonych

Rozdzielenie bufora od awiz zatwierdzonych ma praktyczny sens przy zgłoszeniach od zewnętrznych dostawców. Zgłoszenie z błędną godziną albo nieistniejącą rampą zatrzymuje się w buforze i nie blokuje terminu, dopóki dyspozytor go nie poprawi. Szczegółowy opis samego dokumentu wraz z polami i statusami znajduje się w artykule o polach i statusach awizo dostawy, a tutaj skupiamy się na pracy z rejestrem i siatką ramp.

Formularz dopisania awiza

Nowe awizo dopisuje się z menu opcją „Dopisz nowe awizo”. Program otwiera wtedy okno dopisania, w którym trzeba uzupełnić komplet danych o dostawie lub wysyłce. Formularz jest krótki, bo każde pole ma konkretne zadanie w dalszej obsłudze: jedne wybierają zasób, inne opisują pojazd, jeszcze inne przygotowują późniejsze rozliczenie.

Pole formularzaWartośćDo czego służy później
Magazynwybór ze skorowidzaogranicza listę ramp do obiektu, w którym jest dostawa
Kontrahentnazwa z listy rozwijanejgrupuje awiza w widoku według kontrahentów
Awizonumer ZPZ dla dostawy albo ZWZ dla wysyłkiłączy termin z dokumentem przyjęcia lub wydania
Rampa i godzinarampa oraz godzina dostawy lub wysyłkizajmuje pole w siatce godzin i ramp
Rodzaj operacjidostawa albo wysyłkarozdziela ruch przychodzący od wychodzącego
Numer rejestracyjny i kierowcadane pojazdu oraz osobyweryfikacja na bramie wjazdowej
Uwagidowolny tekstinformacje dla zespołu rampy

Pola, które wybiera się ze słowników

Magazyn i kontrahent pochodzą ze słowników, podobnie jak rodzaj operacji, więc operator nie wpisuje ich ręcznie. Ma to znaczenie dla jakości danych: literówka w nazwie dostawcy tworzy w rejestrze drugiego kontrahenta i rozbija historię jego dostaw na dwie części. Wybór z listy eliminuje ten problem u źródła.

Pola opisujące pojazd

Numer rejestracyjny i dane kierowcy są potrzebne dopiero na bramie, ale dobrze podać je od razu przy awizowaniu. Ochrona porównuje wtedy tablicę pojazdu z rezerwacją bez dzwonienia do dyspozytora. Jeśli przewoźnik nie zna jeszcze kierowcy, pole można uzupełnić później; awizo zajmuje swoją rampę od razu.

Reguła: awizo bez rampy i godziny nie rezerwuje niczego. Termin istnieje w siatce dopiero wtedy, gdy oba pola są wypełnione.

Palety deklarowane i potwierdzone

Formularz zawiera dwie liczby palet i to one czynią z awiza narzędzie kontrolne. Ilość palet deklarowanych podaje dostawca lub odbiorca w chwili awizowania. Ilość palet potwierdzonych wpisuje zespół rampy po rozładunku albo załadunku, kiedy wiadomo, ile jednostek faktycznie przeszło przez bramę.

Różnica między tymi dwiema liczbami jest pierwszym sygnałem, że coś poszło inaczej niż w planie. Brakująca paleta w dostawie oznacza reklamację u dostawcy. Nadwyżka oznacza zwykle pomyłkę w dokumencie przewozowym albo dołożony towar, którego nikt nie zgłosił. W obu przypadkach magazyn ma na czym oprzeć rozmowę, bo obie liczby są zapisane przy tym samym awizie.

Ilustracja: kilka ciężarówek stojących przed halą magazynową w oczekiwaniu na rozładunek
Pojazdy przed halą magazynową: liczba palet deklarowanych trafia do awiza przed przyjazdem, a potwierdzonych dopiero po rozładunku

Poniższy fragment pokazuje, jak taką różnicę wyciąga się z bazy SQL Server. Nazwy tabeli i kolumn są przykładowe i nie odpowiadają schematowi produktu.

-- przykład: awiza zamknięte, w których rozładowano inną liczbę palet niż zgłoszono
SELECT AwizoId,
       PaletyDekl,
       PaletyPotw,
       PaletyPotw - PaletyDekl AS Roznica
FROM   dbo.AwizoPrzyklad
WHERE  Status = 2            -- 2 = rozładunek zakończony
  AND  PaletyPotw <> PaletyDekl
ORDER BY ABS(PaletyPotw - PaletyDekl) DESC;

Zestawienie tego typu warto uruchamiać raz dziennie i traktować jak listę zadań do wyjaśnienia. Jeśli rozbieżności powtarzają się u jednego dostawcy, problemem jest zwykle sposób liczenia palet po jego stronie, a nie pojedyncza pomyłka na rampie.

Awiza według kontrahentów

Drugi widok rejestru grupuje awiza według klientów. Lista kontrahentów nie jest stała, tylko buduje się dynamicznie. Zależy od liczby aktywnych dostawców oraz od tego, czy mają dopisane awizo transportu w systemie. Kontrahent bez żadnego dokumentu awizacji na liście się nie pojawia.

Kliknięcie nazwy kontrahenta pokazuje na pulpicie zestawienie jego awiz. Z tego poziomu można dopisać nowy dokument albo przejrzeć dane już wprowadzone. Widok sprawdza się przy rozmowie z dostawcą: dyspozytor ma przed sobą historię zgłoszeń i może wskazać konkretne awizo, które przyjechało po terminie. Podobny układ opisujemy szerzej na stronie o awizach według klientów.

Dynamiczna lista kontrahentów

Dynamiczna lista oznacza, że nikt jej nie utrzymuje ręcznie. Zapytanie do bazy zwraca kontrahentów, którzy mają choć jedno awizo, więc lista rośnie razem z liczbą dostawców korzystających z awizacji. Uproszczony odpowiednik takiego zapytania wygląda następująco.

-- przykład: kontrahenci z co najmniej jednym awizem oraz liczba ich awiz
SELECT k.KontrahentId, k.Nazwa, COUNT(*) AS LiczbaAwiz
FROM   dbo.KontrahentPrzyklad AS k
JOIN   dbo.AwizoPrzyklad      AS a ON a.KontrahentId = k.KontrahentId
GROUP BY k.KontrahentId, k.Nazwa
ORDER BY k.Nazwa;

Ten sam wzorzec działa przy raportach punktualności. Wystarczy dołożyć do zapytania różnicę między godziną awizowaną a godziną wjazdu, a zestawienie według kontrahentów zamienia się w ranking terminowości dostawców.

Siatka godzin i ramp

Sekcja „Transport do magazynu” pozwala dopisać transport bezpośrednio do wybranego magazynu, a w nim do konkretnej rampy i godziny. Operator zaczyna od wyboru magazynu. Po tym wyborze na pulpicie pojawia się tabela czasu pracy: wiersze odpowiadają godzinom, a kolumny rampom dostępnym w tym magazynie. W komórkach widać awiza dostaw i wysyłek, które już zajęły swoje pola.

Ilustracja: pracownica biura przy monitorze z siatką planowania transportów do magazynu
Planowanie transportów w siatce godzin i ramp: wolne pole oznacza wolny termin na wybranej rampie

Nowe awizo dopisuje się przez kliknięcie pola, które wyznacza godzinę i rampę, a następnie przycisk DOPISZ albo podwójne kliknięcie tego samego pola. Otwiera się formularz z częściowo wypełnionymi danymi. Dzień i magazyn są już ustawione, podobnie jak rampa z godziną. Operator uzupełnia dane kontrahenta i numer awiza, potem wpisuje liczby palet, a na końcu podaje pojazd z kierowcą i ewentualne uwagi.

Godzina w siatce jest jednostką rezerwacji. Awizo zajmuje jedno pole, więc dłuższa obsługa, na przykład rozładunek kilkudziesięciu palet luzem, wymaga świadomej decyzji: dyspozytor rezerwuje kolejne pole na tej samej rampie albo umawia pojazd na godzinę o mniejszym ruchu. Program nie zgaduje czasu obsługi, tylko pokazuje, które pola są wolne.

Zaletą takiego układu jest to, że konflikt widać, zanim powstanie. Zajęte pole jest oznaczone w siatce, więc dyspozytor nie musi sprawdzać w rejestrze, czy ktoś inny nie zarezerwował tej samej rampy na tę samą godzinę. Ta kontrola powinna mieć jednak swoje odbicie w bazie, bo dwóch operatorów może kliknąć to samo wolne pole w tej samej sekundzie.

Ochrona przed podwójną rezerwacją

Najprostszym zabezpieczeniem jest unikalny indeks obejmujący rampę w danym magazynie oraz termin, czyli dzień z godziną. Baza odrzuci drugi zapis, niezależnie od tego, co pokazywał ekran w chwili kliknięcia. Indeks filtrowany pozwala pominąć awiza anulowane, żeby anulowany termin można było zająć ponownie. Składnię opisuje dokumentacja Microsoft o tworzeniu indeksów unikalnych.

-- przykładowy schemat, nie schemat produktu
CREATE TABLE dbo.AwizoPrzyklad (
    AwizoId        int IDENTITY(1,1) PRIMARY KEY,
    MagazynId      int     NOT NULL,
    RampaId        int     NOT NULL,
    Dzien          date    NOT NULL,
    Godzina        time(0) NOT NULL,
    KontrahentId   int     NOT NULL,
    RodzajOperacji char(1) NOT NULL CHECK (RodzajOperacji IN ('D', 'W')),
    Status         tinyint NOT NULL DEFAULT 0,   -- 9 = anulowane
    PaletyDekl     int     NOT NULL,
    PaletyPotw     int     NULL
);

CREATE UNIQUE INDEX UX_AwizoPrzyklad_Slot
    ON dbo.AwizoPrzyklad (MagazynId, RampaId, Dzien, Godzina)
    WHERE Status < 9;

Aplikacja powinna łapać błąd naruszenia indeksu (w SQL Server numery 2601 i 2627) i pokazać operatorowi komunikat o zajętym terminie. Wtedy drugi użytkownik widzi jasną informację zamiast cichej podwójnej rezerwacji.

Od awiza do bramy i rozładunku

Dane wpisane w formularzu nie są jednorazowe. Numer rejestracyjny pojazdu i deklarowana liczba palet trafiają do rejestru transportów i pracują dalej: przy odprawie na bramie wjazdowej oraz przy rozliczeniu rozładunku. Ochrona i obsługa rampy widzą te same dane, więc nikt nie pyta kierowcy drugi raz o szczegóły dostawy.

Weryfikacja na bramie jest prosta, bo sprowadza się do porównania dwóch rzeczy: tablicy pojazdu i awiza zatwierdzonego na dany dzień. Pojazd bez awiza nie ma rezerwacji, więc ochrona kieruje go do dyspozytora, który decyduje, czy dopisać awizo od ręki, czy odesłać kierowcę na późniejszy termin. Taki transport traktuje się osobno, bo zaburza plan pozostałych rezerwacji, a artykuł o transporcie nieawizowanym opisuje tę sytuację szerzej.

Kierowca, który zna przydzielone okno czasowe, nie stoi w kolejce przed bramą. Skraca to postój taboru i ogranicza zatory na placu manewrowym. Skutek widać najlepiej w godzinach szczytu, gdy do tej samej rampy zbliżają się dwa pojazdy: siatka pokazuje wcześniej, że drugi z nich powinien dostać inną bramę albo inną godzinę.

Powiązanie z dokumentami przyjęcia

Numer ZPZ zapisany w awizie wiąże termin z dokumentem, na którego podstawie magazyn przyjmie towar. Po rozładunku operator wpisuje palety potwierdzone i przechodzi do właściwego przyjęcia. Jak wygląda ta część procesu po stronie magazynu, opisuje artykuł o awizacjach dostaw do magazynu.

Wysyłki w tej samej siatce

Awizo wysyłki korzysta z identycznego formularza i z tej samej siatki. Różni się rodzajem operacji oraz numerem ZWZ, a znaczenie liczb palet się odwraca: deklarowaną podaje odbiorca albo przewoźnik, potwierdzoną wpisuje zespół, który faktycznie załadował pojazd. Dzięki wspólnej siatce magazyn nie planuje przyjęć i wydań osobno, tylko widzi, że dwa pojazdy o tej samej godzinie konkurują o jedną rampę, niezależnie od kierunku ruchu.

Rampa jako zasób magazynu

Rampa w siatce jest zasobem o ograniczonej przepustowości, więc awizacja pokazuje obciążenie placu na cały dzień z góry. Kiedy zaczyna brakować wolnych godzin, magazyn widzi to przy planowaniu, a nie o dziewiątej rano na bramie. Zasady rezerwowania doków i ich pojemności omawia tekst o rezerwowaniu doków magazynowych, a przydział bram do pojazdów - artykuł o zarządzaniu dokami w magazynie.

Kiedy wystarczy moduł w WMS, a kiedy VSS.net

Awizacja wbudowana w WMS obsługuje rejestr z formularzem oraz siatkę ramp. Pokrywa potrzeby magazynu, który sam wpisuje awiza albo przyjmuje je od niewielkiej liczby dostawców. Ograniczenia zaczynają się tam, gdzie dostawcy mają rezerwować terminy samodzielnie przez przeglądarkę, a magazyn potrzebuje powiadomień i kalendarza, a do tego kontroli pojemności bram.

Takie wymagania spełnia osobny moduł awizacji. W ofercie SoftwareStudio jest to Studio VSS.net, który współpracuje z Studio WMS.net na wspólnej bazie SQL. Jego działanie od strony produktu opisuje artykuł o module awizacji VSS.net, a mechanikę statusów i zbiorczych zmian - tekst o statusach awizacji dostaw.

PotrzebaAwizacja w Studio WMS.netOsobny moduł VSS.net
Wpisywanie awiz przez dyspozytoratak, przez formularz z siatką ramptak - z kalendarzem i widokami dla wielu magazynów
Rezerwacja terminu przez dostawcębrak w opisanym zakresietak, przez przeglądarkę
Przejście do przyjęcia towarubezpośrednie, na tej samej bazieprzez wymianę danych z WMS

Wybór zależy od liczby dostawców i od tego, kto ma wpisywać terminy. Przy małym i stałym gronie dostawców wystarcza moduł w WMS. Gdy terminy rezerwują dziesiątki zewnętrznych firm, lepiej przenieść ten ruch do portalu z kalendarzem. Platforma awizacyjna dla takiego scenariusza jest dostępna także jako awizowanie w powiązaniu z WMS. Kwestie okien czasowych, w które dostawcy się wpisują, opisuje strona o oknie czasowym, a dane ładunku dla samego awiza - artykuł o awizacji ładunków.

Jeśli dostawa obejmuje palety zwrotne, warto od razu powiązać awizo z ewidencją opakowań. Odpowiedni przebieg pokazuje strona o awizie dostawy palet, a dokumenty magazynowe, które powstają po rozładunku, zestawia artykuł o dokumentach magazynowych.