Od awizacji do zlecenia przyjęcia w WMS
Awizacje dostaw do magazynu zwykle omawia się od strony bramy i kalendarza ramp. Dla magazyniera ważniejsze jest to, co dzieje się z danymi awizacji po zatwierdzeniu. W zintegrowanym środowisku awizacja zapisana w module Awizacje VSS.net tworzy w WMS zlecenie przyjęcia z listą pozycji. Magazynier nie czeka więc na papierowy dokument od kierowcy, bo zna zawartość dostawy przed otwarciem naczepy.
W Studio WMS.net przyjęcia zewnętrzne powstają na trzy sposoby opisane w tabeli. Pośrednia ścieżka przez zlecenie ZPZ albo awizo dostawy jest tą, w której awizacja ma realny wpływ na pracę rampy. Zasady wystawiania dokumentów magazynowych omawia artykuł o dokumentach magazynowych.
| Dokument | Źródło pozycji | Rola awizacji |
|---|---|---|
| ZPZ - zlecenie przyjęcia | zamówienie zakupu albo awizo dostawy | awizacja dostarcza nagłówek i pozycje oczekiwane |
| PZ - przyjęcie zewnętrzne | realizacja zlecenia ZPZ po rozładunku | awizacja służy do porównania ilości |
| PZB - przyjęcie bezpośrednie | pozycje wprowadzane na rampie bez zlecenia | brak, numer awizo można wpisać ręcznie |
Nagłówek przyjęcia i numer awizo
Formularz przyjęcia w WMS ma w nagłówku pola Kontrahent, Numer awizo, Numer dostawy oraz Z dnia. Przy integracji wypełnia je awizacja, a przy przyjęciu bezpośrednim magazynier. Numer awizo wiąże dokument magazynowy z wizytą pojazdu, dlatego raport czasu obsługi może później połączyć czas na bramie z czasem na rampie.

Przekazanie danych w drugą stronę jest równie istotne. Zakończenie rozładunku w WMS aktualizuje status wizyty w systemie awizacji, a potwierdzenie trafia do ERP. Pełną pętlę wymiany opisuje artykuł o tym, jak VSS łączy się z WMS i ERP przy przyjęciach. Na stronie producenta ten sam przepływ przedstawia opis awizowania dostaw w WMS.
Kody dostawcy a indeksy magazynowe
Dostawca opisuje towar własnymi kodami albo numerem GTIN, a WMS prowadzi stany po indeksie wewnętrznym. Zlecenie przyjęcia można utworzyć tylko wtedy, gdy każda pozycja awizacji znajdzie odpowiednik w kartotece asortymentu. Tabela powiązań kodu dostawcy z indeksem jest więc warunkiem automatycznego przepływu, a nie dodatkiem.
-- Pozycje awizacji bez odpowiednika w kartotece (nazwy poglądowe)
SELECT al.AdviceId, al.SupplierCode, al.Gtin
FROM dbo.AdviceLine AS al
LEFT JOIN dbo.ItemSupplierCode AS isc
ON isc.SupplierId = al.SupplierId
AND isc.SupplierCode = al.SupplierCode
LEFT JOIN dbo.Item AS i
ON i.Gtin = al.Gtin
WHERE isc.ItemId IS NULL
AND i.ItemId IS NULL;
Zapytanie szuka dopasowania po dwóch drogach: po kodzie dostawcy i po GTIN. Pozycja bez żadnego dopasowania zatrzymuje utworzenie zlecenia i wraca do działu zakupów z prośbą o uzupełnienie kartoteki. Lepiej wykryć brak w dniu zgłoszenia awizacji niż na rampie, gdy naczepa jest już otwarta.
Przydział rampy przyjęciowej
Rampa dla dostawy wynika z dwóch decyzji. Okno czasowe wybiera dostawca przy zakładaniu awizacji, a konkretną rampę wskazuje pracownik bramy w dyspozycji, w polu planowanej rampy magazynowej. Rozdzielenie tych decyzji pozwala zmienić rampę w dniu dostawy bez przesuwania okna, na przykład gdy poprzedni rozładunek się przedłuża.
Nie każda rampa nadaje się do każdej dostawy. Różnice dotyczą wyposażenia w mostek przeładunkowy o odpowiednim zakresie oraz dostępu do strefy chłodniczej. Dobór rampy powinien uwzględniać te ograniczenia jeszcze przed przyjazdem pojazdu, zamiast zostawiać decyzję magazynierowi, który zobaczy naczepę dopiero przy bramie.
| Rodzaj dostawy | Wymaganie wobec rampy | Skutek złego przydziału |
|---|---|---|
| Naczepa chłodnicza | rampa z uszczelnieniem przy strefie chłodniczej | przerwanie łańcucha chłodniczego podczas rozładunku |
| Pojazd o niskiej podłodze | rampa z mostkiem o odpowiednim zakresie | rozładunek wózkiem niemożliwy, przestawienie pojazdu |
| Rozładunek boczny | plac obok rampy albo stanowisko bez doku | blokada sąsiedniej rampy |
| Dostawa jednorodna do strefy wysokiego składowania | rampa najbliżej docelowej strefy | dłuższa droga wózków przy każdej palecie |
Obciążenie ramp w ciągu dnia pokazuje kalendarz, a reguły rezerwacji z pojemnością doków omawia artykuł o rezerwowaniu doków magazynowych. Pojazd, który przyjechał przed zwolnieniem rampy, czeka na stanowisku postojowym widocznym na mapie zajętości miejsc parkingowych. Organizację samych ramp opisuje tekst o zarządzaniu dokami w magazynie.
Zmiana rampy w dniu dostawy
Plan ramp rzadko przetrwa cały dzień bez zmian. Przedłużony rozładunek albo awaria mostka zmuszają do przesunięcia dostawy na inną rampę. Zmiana w dyspozycji powinna od razu trafić do zlecenia przyjęcia w WMS, bo magazynier szuka pracy na liście zleceń swojej rampy. Zlecenie przypisane do starej rampy zostaje wtedy niezauważone, a pojazd czeka przy nowej.
Weryfikacja ilości przy rozładunku
Awizacja podaje ilość oczekiwaną. Ilość przyjęta pochodzi z rozładunku: ze skanowania etykiet palet terminalem i z liczenia opakowań tam, gdzie paleta jest mieszana. Oba źródła trzeba trzymać osobno, bo tylko wtedy da się wykazać różnicę. Pracę ze skanerem przy przyjęciu opisuje artykuł o programie magazynowym ze skanerem.
Reguła: ilość przyjętą zapisuje się ze skanu i liczenia, nigdy przez skopiowanie ilości z awizacji.
Porównanie awizacji z przyjęciem wymaga w bazie zestawienia dwóch zbiorów pozycji. Pozycja może wystąpić tylko po jednej stronie, co oznacza niedobór całej linii albo towar spoza awizacji. Może też wystąpić po obu stronach z różną ilością. Złączenie FULL OUTER JOIN obsługuje każdy z tych przypadków w jednym zapytaniu. Nazwy tabel w przykładzie są poglądowe.
DECLARE @AdviceId int = 1042;
SELECT COALESCE(a.Sku, r.Sku) AS Sku,
ISNULL(a.Qty, 0) AS QtyAdvised,
ISNULL(r.Qty, 0) AS QtyReceived,
ISNULL(r.Qty, 0) - ISNULL(a.Qty, 0) AS QtyDiff
FROM (SELECT Sku, SUM(Qty) AS Qty
FROM dbo.AdviceLine
WHERE AdviceId = @AdviceId
GROUP BY Sku) AS a
FULL OUTER JOIN
(SELECT Sku, SUM(Qty) AS Qty
FROM dbo.ReceiptLine
WHERE AdviceId = @AdviceId
GROUP BY Sku) AS r
ON r.Sku = a.Sku
WHERE ISNULL(r.Qty, 0) <> ISNULL(a.Qty, 0);
Agregacja w podzapytaniach jest konieczna, bo jedna pozycja awizacji może zostać przyjęta na kilku paletach. Bez sumowania złączenie pomnożyłoby wiersze i zawyżyło obie ilości. Składnię złączeń opisuje dokumentacja klauzuli FROM w Transact-SQL.
Tolerancja ilościowa i zamknięcie przyjęcia
Nie każda różnica wymaga zatrzymania przyjęcia. Przy towarze sprzedawanym na wagę albo w metrach umowa z dostawcą często dopuszcza odchylenie. Próg tolerancji warto zapisać przy kartotece dostawcy albo asortymentu, a zapytanie porównujące filtrować po wartości bezwzględnej różnicy przekraczającej ten próg.
Zamknięcie przyjęcia zmienia naraz stan magazynu i status dokumentu. Równolegle zamyka wizytę w systemie awizacji. Wszystkie te zapisy muszą przebiec w jednej transakcji. Przerwanie w połowie zostawiłoby dokument zatwierdzony bez zwiększonego stanu albo wizytę zamkniętą bez przyjętego towaru.
Etykiety SSCC i identyfikatory GS1
Paleta z etykietą logistyczną GS1 niesie w kodzie GS1-128 dane, które odpowiadają polom pozycji przyjęcia w WMS. Skan jednej etykiety wypełnia kilka pól naraz, a numer SSCC staje się numerem palety w magazynie. Budowę etykiety omawia artykuł o etykiecie GS1 w programie magazynowym.
| Identyfikator zastosowania | Zawartość | Pole pozycji przyjęcia |
|---|---|---|
| (00) | SSCC, 18 cyfr | Nr palety |
| (02) z (37) | GTIN towaru na palecie i liczba jednostek | Asortyment, Ilość |
| (10) | numer partii | Nr partii |
| (17) | data ważności w formacie RRMMDD | Termin ważności |
| (11) | data produkcji w formacie RRMMDD | Data produkcji |
Numer SSCC zaczyna się od cyfry rozszerzenia, po której następuje prefiks firmy GS1 z numerem seryjnym jednostki. Osiemnasta cyfra jest cyfrą kontrolną. Cyfrę kontrolną liczy się modulo 10: pierwsze 17 cyfr mnoży się naprzemiennie przez 3 i 1, zaczynając od wagi 3 na pierwszej pozycji. Opis struktury podaje GS1 Polska w opisie numeru SSCC.
// Weryfikacja cyfry kontrolnej SSCC (wymaga using System.Linq)
static bool IsValidSscc(string sscc)
{
if (sscc == null || sscc.Length != 18 || !sscc.All(char.IsDigit))
return false;
int sum = 0;
for (int i = 0; i < 17; i++)
{
int digit = sscc[i] - '0';
sum += (i % 2 == 0) ? digit * 3 : digit;
}
int check = (10 - sum % 10) % 10;
return check == sscc[17] - '0';
}
Walidacja na terminalu odrzuca błędny odczyt, zanim trafi do bazy. Drugą barierą jest unikalny indeks na kolumnie numeru palety w tabeli stanów. Ta sama paleta zeskanowana dwa razy, na przykład przez dwóch magazynierów na sąsiednich rampach, nie zostanie przyjęta podwójnie.
CREATE UNIQUE NONCLUSTERED INDEX UX_Pallet_Sscc
ON dbo.Pallet (Sscc)
WHERE Sscc IS NOT NULL;
Filtr WHERE Sscc IS NOT NULL pozwala trzymać w tej samej tabeli palety z numerem wewnętrznym, które SSCC nie mają. Drugi zapis tego samego numeru kończy się błędem 2601, a aplikacja na terminalu pokazuje komunikat o palecie już przyjętej, zamiast cicho dublować stan.

Paleta mieszana i dostawca bez etykiet GS1
Etykieta z identyfikatorami (02) i (37) opisuje paletę jednorodną. Na palecie mieszanej takich danych nie ma, bo na jednym nośniku leży kilka towarów. Magazynier skanuje wtedy SSCC palety, a następnie kody kartonów, i dopiero te skany tworzą pozycje przyjęcia.
Dostawca, który w ogóle nie etykietuje palet, wymusza nadanie numeru na rampie. WMS generuje wtedy wewnętrzny numer palety, a drukarka etykiet, na przykład Zebra sterowana językiem ZPL, drukuje go przy rozładunku. Od tej chwili paleta jest śledzona tak samo jak paleta z SSCC dostawcy, choć jej numer nie pochodzi z puli GS1.
Obsługa rozbieżności między awizacją a dostawą
Rozbieżność zapisuje się przy pozycji dokumentu przyjęcia, a nie w osobnym zeszycie. Formularz przyjęcia ma pole uwag do pozycji oraz zakładki na zdjęcia i załączniki. Zdjęcie uszkodzonej palety wykonane na rampie trafia do tego samego dokumentu, który zobaczy dział zakupów.
| Rodzaj rozbieżności | Jak ją wykryć | Typowa decyzja |
|---|---|---|
| Niedobór | ilość przyjęta mniejsza od awizowanej | protokół niezgodności i korekta zamówienia |
| Nadwyżka | ilość przyjęta większa od awizowanej | przyjęcie zgodnie z umową albo zwrot przy kierowcy |
| Towar spoza awizacji | pozycja bez odpowiednika w awizacji | wstrzymanie pozycji do decyzji zakupów |
| Uszkodzenie | oględziny przy rozładunku, zdjęcie | przyjęcie warunkowe albo odmowa przyjęcia pozycji |
Dokument z rozbieżnościami pozostaje w buforze. W bazie oznacza to status 0 w kolumnie ACH, a zatwierdzenie zmienia go na 1 i dopiero wtedy zwiększa stan magazynu. Bufor chroni stany przed towarem, o którego przyjęciu nikt jeszcze nie zdecydował.
- Zapis przy rampie - magazynier dokumentuje różnicę w chwili wykrycia, ze zdjęciem i wskazaniem osoby stwierdzającej.
- Decyzja poza rampą - dział zakupów rozstrzyga rozbieżność na podstawie dokumentu, bez telefonów do magazynu.
Kontrolę rozładunku coraz częściej wspiera analiza obrazu z kamer nad rampą. Ocenę takich rozwiązań przedstawia artykuł o komputerowej wizji w kontroli rozładunku.
Przyjęcie bez awizacji
Część dostaw zawsze przyjeżdża bez zgłoszenia. Na bramie taki pojazd rejestruje się jako wjazd nieawizowany, a w WMS towar przyjmuje się dokumentem PZB, czyli przyjęciem bezpośrednim bez zlecenia. Magazynier wprowadza wtedy pozycje ręcznie albo skanerem, a numer awizo zostaje pusty.
Przyjęcie bezpośrednie działa, ale kosztuje więcej pracy na rampie i nie daje porównania z oczekiwaną ilością. Odsetek przyjęć PZB w stosunku do przyjęć ze zlecenia jest dobrą miarą dyscypliny dostawców. Gdy rośnie, magazyn wraca do rozmowy o obowiązku awizacji i o tym, jak dobrać okna czasowe do rytmu dostaw.
Ogólny opis procesu, od rozładunku po odłożenie towaru w lokalizacji, zawiera artykuł o przyjęciu towaru do magazynu. Rodzaje dokumentów magazynowych i ich zastosowanie omawia też poradnik producenta o dokumentach magazynowych PZ i WZ.
Pomiar czasu obsługi przyjęcia
Awizacja z numerem powiązanym z dokumentem przyjęcia pozwala mierzyć pracę rampy. Raport średniego czasu obsługi przyjęcia przez magazyniera zestawia dla każdej osoby i każdego magazynu liczbę awizacji i średnią liczbę palet. Obok podaje średni czas obsługi w minutach. Raport generuje się za wybrany przedział dat w sekcji Informacje.

Średni czas warto czytać razem ze średnią liczbą palet. Magazyn z krótszym czasem obsługi może po prostu przyjmować mniejsze dostawy. Porównywalną miarą jest czas na paletę, który da się wyliczyć z tych samych kolumn.
- Czas na paletę - średni czas obsługi podzielony przez średnią liczbę palet, porównywalny między magazynami.
- Czas od wjazdu do rozpoczęcia rozładunku - różnica między zapisem na bramie a startem obsługi na rampie, miara kolejki przed rampami.
Długi czas od wjazdu do rozpoczęcia rozładunku przy krótkim czasie samej obsługi oznacza, że wąskim gardłem jest liczba wolnych ramp, a nie tempo pracy magazynierów. Taki wynik jest podstawą do zmiany rozkładu okien w kalendarzu albo do przydziału dodatkowej rampy przyjęciowej w godzinach szczytu.




