# Dwie etykiety i jeden werdykt, czyli kontrola skanów na kolektorze

> Kolektor porównuje dwa skany etykiet, a przy sortowaniu sprawdza kod dostawcy w słowniku klienta. Każda sprawdzona para trafia do dziennika. Opis wdrożenia.

Adres strony: https://magazyn.softwarestudio.com.pl/kontrola-etykiet-na-kolektorze-dwa-skany-i-slownik-kodow/

---

W opisywanym wdrożeniu kolektor ma trzy osobne transakcje poświęcone kontroli etykiet, a każda porównuje skan z innym źródłem prawdy. Najprostsza zestawia dwa skany ze sobą i zapisuje w dzienniku każdą sprawdzoną parę, także niezgodną. Dwie pozostałe korzystają ze słownika kodów oraz z kartoteki etykiet.
W opisywanym wdrożeniu kontrola etykiet na kolektorze nie jest jedną funkcją. Wybór wzorca zależy od procesu, a każda z kontroli kończy się werdyktem zgodnym albo niezgodnym.

Adresujemy ten opis do działu IT i kierownika projektu. Opisujemy w nim ekrany i reguły opisywanej wersji, a przykłady są wymyślone. Budowę etykiety logistycznej opisuje artykuł o [trzech kodach etykiety GS1-128](https://system.wms.net.pl/trzy-kody-etykiety-gs1-128/), a analizę błędów odczytu kodów strona o [błędach parsowania kodów kreskowych](/bledy-parsowania-kodow/). Wymagania wobec etykiety transportowo-logistycznej zebrała organizacja GS1 Polska w [specyfikacji etykiety transportowo-logistycznej GS1](https://gs1pl.org/etykieta-transportowo-logistyczna-gs1/).

## Każda kontrola etykiet opiera się na innym źródle prawdy

Kolektor ma trzy osobne transakcje poświęcone kontroli etykiet, o różnych źródłach prawdy. Pierwsza to drugi skan, czyli porównywarka etykiet. Druga to słownik zgodności kodu klienta z kodami dostawcy, używany przy sortowaniu towaru. Trzecia to kartoteka etykiet z EAN kartonu i partią, używana przy przepakowaniu z kontrolą.

W menu są też transakcje kompletacji z kontrolą skanów względem zlecenia. Opisują je artykuły o [kontroli kompletacji i pakowaniu przed wysyłką](https://system.wms.net.pl/status-skompletowane-i-spakowane-kontrola-przed-wysylka/) oraz o [kompletacji po numerze awizo](https://system.wms.net.pl/kompletacja-po-numerze-awizo-na-kolektorze/), więc tutaj ich nie powtarzamy.

Kolumna ze źródłem prawdy odpowiada na pytanie, z czym operator porównuje to, co zeskanował. W porównywarce odpowiedzią jest drugi skan, a pozostałe dwie kontrole sięgają do danych zapisanych w bazie.

| Kontrola | Źródło prawdy | Komunikat przy niezgodności |
| --- | --- | --- |
| Porównanie dwóch skanów | drugi skan | Sygnał dźwiękowy i okno „WERYFIKUJ” |
| Sortowanie towaru | słownik zgodności: kod klienta z jednym lub dwoma kodami dostawcy | Duże okno „Niepoprawny kod”; przy braku kodu klienta „Brak kodu Klienta w bazie, uzupełnij i sprawdź ponownie” |
| Przepakowanie z kontrolą | kartoteka etykiet: EAN kartonu i, gdy wpis tego wymaga, partia | „Indeks jest niezgodny!” albo „Nr partii jest niezgodny!” |

## Porównanie dwóch skanów liczy pary w dokumencie

Porównywarka zaczyna od numeru dokumentu i licznika. Numer ma mieć więcej niż 4 i mniej niż 49 znaków, a przy błędzie ekran odpowiada „Podaj numer dokumentu!” albo „Numer dokumentu jest zbyt długi!”. Licznik ma domyślnie wartość 1 i zakres od 0 do 99999. Wskazuje liczbę par etykiet do sprawdzenia w tym dokumencie, a po zatwierdzeniu pole jest zablokowane.

Przy zgodnych etykietach pojawia się okno „OK”, kursor wraca do pierwszej etykiety, licznik maleje o 1, a przy zerze ekran się zamyka. Przy niezgodnych rozlega się sygnał dźwiękowy, pojawia się okno „WERYFIKUJ”, obie etykiety trzeba zeskanować ponownie, a licznik się nie zmienia.

Przykład (wymyślony): dokument DOK-26-0457 ma licznik 12, a magazynier skanuje dwie etykiety, których wartości do porównania się różnią, na przykład CP-48210-A i CP-48210-B. Ekran pokazuje „WERYFIKUJ”, licznik zostaje na 12, a obie etykiety trzeba zeskanować jeszcze raz. Przy zgodnej parze licznik spadłby do 11.

Sposób, w jaki formularze WMS zgłaszają błąd komunikatem przy polu i dźwiękiem, opisuje strona o [komunikatach błędów w WMS](/komunikaty-bledow-w-wms-tekst-dzwiek-i-slownik/).

## Kod 2D i kod liniowy mogą się porównywać ze sobą

Terminal nie zna wzorca: porównuje dwa dowolne skany. Każdy z nich może być kodem liniowym albo kodem 2D z polami rozdzielonymi znakiem rozdzielającym. Z kodu 2D terminal wybiera jedno ustalone pole i do porównania bierze jego treść bez znaku identyfikatora, a przy kodzie liniowym cały skan.

Gdy kod 2D nie ma oczekiwanej struktury, zwykle pojawia się „Nie znaleziono szukanej wartości!”. Taki skan odpada przed porównaniem, więc nie trafia do dziennika. Wartość do porównania musi mieć co najmniej 4 znaki: krótsza daje „Błąd skanowania danych!”, a pusty skan „Zeskanuj etykietę!”.

Etykieta liniowa i etykieta 2D mogą więc stanąć obok siebie w jednej parze, o ile wybrane pole kodu 2D zawiera tę samą wartość co kod liniowy. Wzorca nie trzeba zakładać w bazie, bo wystarczy, że oba skany niosą wartość do porównania.

## Każda sprawdzona para trafia do dziennika, także niezgodna

Porównanie wykonuje baza. Do dziennika trafiają numer dokumentu i obie porównane wartości oraz znacznik zgodności. Wpis ma też cztery dane o miejscu i autorze: login, czas, magazyn i oddział. Zapisuje się każda para skanów, która przeszła wstępną kontrolę długości i struktury, także niezgodna. Skany odrzucone na tym etapie nie zostawiają wpisu.

> Porównywarka nie potrzebuje wzorca w bazie, bo wystarczy drugi skan, a każda sprawdzona para, także niezgodna, zostaje w dzienniku.

Zestawienie „Porównanie etykiet” liczy zgodne pary dla każdej sesji skanowania, z trzema danymi: numerem dokumentu, operatorem i dniem (kolumna Ilość palet). Lista pozycji pokazuje tylko pary zgodne. Próby niezgodne zostają w dzienniku i nie ma ich w tych zestawieniach.

W dzienniku widać więc także pomyłki, a zestawienie pokazuje tylko to, co się zgodziło. Zestawienie liczy każdą sesję osobno, więc dokument sprawdzany w kilku uruchomieniach ekranu daje kilka wierszy, a nie jedną sumę.

## Słownik kodów chroni przed pomyłką kodu dostawcy

Sortowanie zaczyna od kodu klienta. System szuka go w słowniku zgodności i bierze aktywny wpis dla oddziału albo magazynu użytkownika. Gdy wpisu nie ma, pokazuje „Brak kodu Klienta w bazie, uzupełnij i sprawdź ponownie” z sygnałem dźwiękowym. Słownik uzupełnia się ręcznie przyciskami Dopisz i Edycja albo importem z arkusza z pozycji „Import kodów klienta”.

Wpis słownika wiąże kod klienta z jednym lub dwoma dopuszczalnymi kodami dostawcy. Kod klienta jest unikalny w obrębie magazynu i oddziału, a każdy z dwóch kodów dostawcy jest unikalny w swojej kolumnie w obrębie magazynu i oddziału.

Po znalezieniu kodu klienta pojawia się pole kodu dostawcy i przycisk „Nowy kod Dostawcy”, który zaczyna od nowego kodu klienta. Kod dostawcy zgodny z którymkolwiek z dwóch kodów daje zapis w dzienniku z sześcioma danymi: kodem klienta, kodem dostawcy, loginem, magazynem, oddziałem i czasem. Ekran pokazuje wtedy zielone obramowanie z napisem „Kod dostawcy poprawny” i czyści pole na kolejną sztukę. Napis informuje o wyniku porównania.

Kod niezgodny wywołuje sygnał dźwiękowy i duże okno „Niepoprawny kod”, a pole zostaje wyczyszczone. Sesja jednego kodu klienta ma wspólny numer, a zestawienie dokumentów sortowania ma pięć kolumn: kod klienta, kod dostawcy, login, czas i licznik pozycji.

## Przepakowanie sprawdza EAN kartonu i partię

Przepakowanie z kontrolą etykiet zaczyna od numeru zlecenia. Etykietę producenta, wpisaną w polu „Indeks / nr referencyjny”, ekran szuka w kartotece etykiet wśród aktywnych wpisów. Stąd system bierze EAN kartonu, a gdy wpisu brak, pokazuje „Nie znaleziono indeksu w bazie!”.

Dla artykułów, których wpis w kartotece etykiet wymaga numeru partii, operator podaje partię z etykiety producenta („Nie podano nr partii, który jest wymagany!”). Potem skanuje etykietę dostawcy: jej kod musi równać się EAN kartonu („Indeks jest niezgodny!”), a partia z drugiej etykiety musi równać się partii z pierwszej („Nr partii jest niezgodny!”). Wymóg partii zależy od wpisu w kartotece etykiet, więc nie dotyczy każdego artykułu.

Zgodny komplet zapisuje jedną pozycję o ilości 1 w dokumencie przepakowania, w buforze, z numerem zlecenia i z partią, gdy kontrola partii była wymagana. Do historii trafia wpis z numerem zlecenia, a ekran pokazuje „Pozycja została dodana”. Gdy w sesji dodano choć jedną pozycję, przycisk „Zakończ” pyta, czy realizować kolejny dokument.

Etykieta dostawcy pracuje także przy przyjęciu: generowanie PZ z jej danych opisuje artykuł o [PZ z danych etykiet dostawcy](https://system.wms.net.pl/pz-z-danych-etykiet-dostawcy-cztery-kontrole/), a przyjęcie na kolektorze w dwóch ruchach artykuł o [przyjęciu na kolektorze](https://magazyn.wysokiego.skladowania.pl/przyjecie-na-kolektorze-w-dwoch-ruchach-towar-potem-miejsce/). Zlecenia przepakowania zestawów, zakładane generatorem, opisuje artykuł o [przepakowaniu zestawów](https://magazyn.softwarestudio.com.pl/przepakowanie-zestawow-generator-zlecen-zbieranie-skladanie-rozpakowanie/).

Przed wyborem wzorca kontroli zadajemy cztery pytania.

- Wzorzec: który z trzech wzorców pasuje do procesu, czyli drugi skan, słownik kodów albo kartoteka etykiet.
- Dziennik: kto ma korzystać z dziennika sprawdzonych par i w jakich zestawieniach.
- Słownik: kto uzupełnia słownik kodów klienta i czy wystarczy import z arkusza.
- Kody dostawców: ilu dopuszczalnych kodów dostawcy potrzebuje jeden kod klienta, bo wpis przewiduje najwyżej dwa.

## Pytania i odpowiedzi o kontroli etykiet na kolektorze

## Słownik pojęć o kontroli etykiet

Terminy używane przez dział IT i kierownika projektu, gdy kolektor porównuje skany etykiet.
