Kolejka importu od agencji - komunikaty o zgłoszeniu i zwolnieniu towaru
Kolejka importu od agencji zbiera komunikaty o zgłoszeniu i zwolnieniu towaru, które zmieniają statusy celne partii. Na ekranie widać, co przyszło, w jakim kanale i z jakim wynikiem, a komunikat z błędem można ponowić po poprawieniu danych. Poprzedni ekran to zwolnienia i blokady, następny - terminy dozoru.
Nad listą są trzy filtry: Status przetwarzania, Kanał i Agencja celna, oraz przyciski Odśwież, Ponów wybrany komunikat, Symuluj komunikat agencji i Wczytaj komunikat z pliku (JSON). Kolumny listy to Odebrano, Kanał, Agencja celna, Komunikat, MRN lub numer, Przetworzono i Status. W ostatniej kolumnie ikona oka otwiera szczegóły komunikatu. Lista zawiera do 300 wierszy.
Na tej stronie
- Do czego służy kolejka
- Filtry i przyciski
- Lista komunikatów
- Szczegóły komunikatu
- Statusy komunikatów
- Przetwarzanie w jednej transakcji
- Duplikaty i hash treści
- Pola komunikatu JSON
- Typowe błędy i ich naprawa
- Praca z kolejką na co dzień
- Symulacja komunikatu agencji
- Ćwiczenie: przeczytaj kolejkę, znajdź błąd i sprawdź jego przyczynę
- Najczęstsze pytania
- Słownik pojęć
Do czego służy kolejka
Agencja celna prowadzi zgłoszenia celne, a program tylko odbiera ich wynik. Dwa rodzaje komunikatów zmieniają ewidencję: Zgłoszenie (przeniesienie partii ze statusu Pod dozorem na Zgłoszony) i Zwolnienie towaru (przeniesienie na Zwolniony). Każdy komunikat najpierw trafia do kolejki, a dopiero potem jest przetwarzany. Dzięki temu widać, co przyszło i z jakim skutkiem, także gdy przetwarzanie się nie udało.
Filtr Kanał rozróżnia komunikaty wysłane przez API, przez FTPS i wczytane jako plik. W bazie demonstracyjnej punkt przyjmujący komunikaty od agencji nie jest wdrożony, więc komunikaty powstają przez symulację i przez wczytanie pliku JSON w takim samym formacie, jakiego użyłaby agencja. Strona nie obiecuje więc automatycznego odbioru komunikatów u klientów. Szczegóły techniczne opisują strony dla wdrożeniowców, w tym komunikaty agencji.
Program prowadzi ewidencję magazynową i nie jest certyfikowanym modułem celnym. Zmiana statusu partii po przetworzeniu komunikatu oznacza, że ewidencja zapisała to, co przysłała agencja. Nie jest to zgłoszenie do urzędu.
Filtry i przyciski
| Element | Wartości albo działanie |
|---|---|
| Status przetwarzania | Wszystkie, Oczekuje, Przetworzony, Częściowy, Błąd. |
| Kanał | Wszystkie, API, FTPS, Plik. |
| Agencja celna | Wybór agencji celnej. |
| Odśwież | Wczytuje listę ponownie. |
| Ponów wybrany komunikat | Przetwarza zapisaną treść jeszcze raz; nie działa dla komunikatu Przetworzony. |
| Symuluj komunikat agencji | Otwiera okno symulacji (S11). |
| Wczytaj komunikat z pliku (JSON) | Otwiera wybór pliku .json albo .txt, do 200 kB, w kodowaniu UTF-8. |
Z kokpitu prowadzą na ten ekran dwa kafelki: Komunikaty z błędem importu otwierają go z filtrem Błąd, a Komunikaty oczekujące - z filtrem Oczekuje. Kafelki opisuje strona Kokpit dozoru celnego.
Lista komunikatów
| Kolumna | Zawartość |
|---|---|
| Odebrano | Data i godzina przyjęcia komunikatu do kolejki. |
| Kanał | API, FTPS albo Plik. |
| Agencja celna | Agencja, od której pochodzi komunikat. |
| Komunikat | Rodzaj: Zgłoszenie albo Zwolnienie towaru. |
| MRN lub numer | Numer dokumentu celnego z treści komunikatu. |
| Przetworzono | Data i godzina przetworzenia. |
| Status | Oczekuje, Przetworzony, Częściowy albo Błąd. |
Lista pokazuje do 300 wierszy. Do konkretnego komunikatu dojdziesz szybciej filtrem statusu niż przewijaniem całej kolejki.
Szczegóły komunikatu
Ikona oka otwiera kartę "Komunikat" z numerem dokumentu. Na karcie są agencja, kanał, rodzaj komunikatu, czas odebrania i status. Gdy komunikat zakończył się błędem, pojawia się pole "Błąd przetwarzania" z treścią błędu. Gdy status to Częściowy, to samo miejsce zajmuje pole "Uwagi przetwarzania", które wskazuje pominięte pozycje. Pod nim stoi podpowiedź, że po poprawieniu danych komunikat można ponowić.
Karta pokazuje dane nagłówkowe komunikatu, pole Błąd przetwarzania i podpowiedź o ponowieniu. Niżej widać treść komunikatu jako sformatowany JSON, którego nie można edytować. Na dole stoi hash treści SHA-256 w formie skrótu. Hash służy do rozpoznawania duplikatów i pozwala porównać dwa pliki, które wyglądają tak samo.
Treść komunikatu jest zapisana w kolejce dokładnie w takiej postaci, w jakiej przyszła. Nie edytujesz jej na karcie, a przycisk Ponów przetwarza ją jeszcze raz bez zmian. Poprawić można więc dane w programie, od których zależał błąd, np. kartotekę klienta, ale nie sam komunikat. Jeżeli błąd leży w treści, agencja musi przysłać poprawiony komunikat, a w demo wczytuje się poprawiony plik.
Statusy komunikatów
| Status | Znaczenie | Co robić |
|---|---|---|
| Oczekuje | Komunikat jest w kolejce i nie został jeszcze przetworzony. | Otwórz szczegóły; komunikat można przetworzyć przyciskiem Ponów wybrany komunikat. |
| Przetworzony | Komunikat zmienił statusy partii i zapisał wpis w historii ze źródłem IMPORT. | Nic; przycisk Ponów nie działa dla tego statusu. |
| Częściowy | Przetwarzanie zakończyło się, ale część pozycji nie zmieniła statusu. | Przeczytaj pole Uwagi przetwarzania i zdecyduj, czy brakujące pozycje trzeba poprawić. |
| Błąd | Przetwarzanie się nie udało i wszystkie zmiany zostały cofnięte. | Przeczytaj pole Błąd przetwarzania, popraw dane i użyj Ponów wybrany komunikat. |
Status Częściowy powstaje w dwóch sytuacjach. Pierwsza: pozycja z komunikatu nie ma partii do dopasowania na dokumencie. Druga: partia, której pozycja dotyczy, jest zablokowana i zostaje bez zmian, bo komunikat agencji nie zdejmuje blokady. Pozostałe pozycje komunikatu zostają przetworzone.
Przetwarzanie w jednej transakcji
Błąd cofa całość. Komunikat jest przetwarzany w jednej transakcji. Jeśli którakolwiek pozycja albo kontrola zakończy się błędem, statusy partii nie zmieniają się w ogóle, a komunikat dostaje status Błąd.
Dzięki temu komunikat nie zostawia ewidencji w połowie zmienionej. Po naprawie przyczyny wystarczy go ponowić, a nie ma potrzeby cofać pojedynczych partii. Wyjątkiem od reguły jest status Częściowy, który nie jest błędem: pozycje, dla których partie się znalazły, zmieniają status, a pozostałe są wymienione w uwagach.
Komunikat Zgłoszenie dla dokumentu, którego rejestr nie zna, tworzy ten dokument ze statusem Zgłoszony i uwagą "Utworzony z importu komunikatu agencji.". Komunikat Zwolnienie towaru dla nieznanego dokumentu kończy się błędem, bo zwolnienia nie ma do czego przypisać.
Przy dopasowaniu pozycji program szuka klienta po NIP albo po identyfikatorze, indeksu w kartotece tego klienta i, jeśli komunikat go podaje, numeru kontenera. Zwolnienie towaru przenosi partie dokumentu ze statusu Pod dozorem albo Zgłoszony na Zwolniony.
Jeśli partie są w tym samym czasie zatwierdzane w dokumencie wydania, import czeka na zakończenie tej operacji. Po upływie czasu oczekiwania ekran zgłasza komunikat "Partie są właśnie zatwierdzane w wydaniu (blokada wiersza) - ponów komunikat za chwilę.". Wystarczy poczekać chwilę i użyć Ponów.
Duplikaty i hash treści
Przy odbiorze program liczy skrót SHA-256 z treści komunikatu. Gdy kolejka ma już komunikat o takim samym haszu, nowy jest duplikatem i nie zmienia stanu. Dotyczy to także pliku wczytanego drugi raz. Dwa komunikaty różniące się choćby jednym znakiem mają różne hashe, więc poprawiony plik nie zostanie potraktowany jak duplikat.
Plik do wczytania musi mieć rozszerzenie .json albo .txt, nie może przekraczać 200 kB i powinien być zapisany w kodowaniu UTF-8.
Pola komunikatu JSON
Komunikat jest obiektem JSON. Poniższa tabela opisuje pola; ten sam format przyjmują symulacja i wczytanie pliku.
| Pole | Wartości i znaczenie |
|---|---|
| typKomunikatu | ZGLOSZENIE albo ZWOLNIENIE. Inna wartość kończy się błędem. |
| typDokumentu | T1, DSK albo MRN. |
| mrn | Numer dokumentu celnego. Brak numeru kończy się błędem. |
| klientNip | NIP klienta, do którego należy towar. W bazie demonstracyjnej wolno użyć identyfikatora klienta zamiast NIP. |
| agencjaNip | Opcjonalny NIP agencji, do wskazania agencji. |
| kodProcedury | Kod procedury celnej, np. 71. |
| dataZwolnienia | Data w formacie ISO 8601. Wymagana dla komunikatu ZWOLNIENIE. |
| pozycje | Lista pozycji; każda ma pola opisane niżej. |
| pozycje: lp | Numer pozycji w zgłoszeniu. |
| pozycje: indeks | Indeks z kartoteki klienta. |
| pozycje: ilosc, jm | Ilość i jednostka miary. |
| pozycje: masaBruttoKg | Masa brutto w kilogramach. |
| pozycje: nrKontenera | Opcjonalny numer kontenera; pomaga dopasować partię. |
Typowe błędy i ich naprawa
| Błąd przetwarzania | Przyczyna | Naprawa |
|---|---|---|
| Zła struktura JSON | Treść nie jest poprawnym obiektem JSON. | Agencja przysyła poprawny komunikat; w demo wczytaj poprawiony plik. |
| Nieprawidłowy typKomunikatu albo typDokumentu | Wartość spoza ZGLOSZENIE, ZWOLNIENIE albo T1, DSK, MRN. | Poprawiony komunikat; Ponów nie pomoże, bo treść jest ta sama. |
| Brak mrn | Komunikat nie ma numeru dokumentu. | Poprawiony komunikat. |
| Zwolnienie bez dataZwolnienia | Komunikat ZWOLNIENIE nie ma daty zwolnienia. | Poprawiony komunikat. |
| Nieznany klient | Żaden klient nie ma podanego NIP albo identyfikatora. | Sprawdź NIP klienta w kartotece, uzupełnij go i użyj Ponów. |
| "Pozycja N: indeks X nie istnieje w kartotece klienta ... Transakcja została cofnięta" | Indeks z komunikatu nie należy do kartoteki tego klienta. | Dodaj indeks do kartoteki klienta albo popraw komunikat; po dodaniu użyj Ponów. |
| Nieznany dokument przy zwolnieniu | Rejestr nie zawiera dokumentu, a ZWOLNIENIE go nie tworzy. | Dodaj dokument w rejestrze albo przetwórz najpierw komunikat Zgłoszenie, potem ponów zwolnienie. |
| "Partie są właśnie zatwierdzane w wydaniu (blokada wiersza) - ponów komunikat za chwilę." | Te same partie są w tej chwili zatwierdzane w WZC. | Poczekaj chwilę i użyj Ponów. |
Praca z kolejką na co dzień
Rano zacznij od kokpitu. Kafelek Komunikaty z błędem importu mówi, czy któryś komunikat wymaga reakcji, a kafelek Komunikaty oczekujące - czy coś czeka na przetworzenie. Kliknięcie kafelka otwiera kolejkę z gotowym filtrem, więc nie trzeba go ustawiać ręcznie.
Komunikat z błędem czytaj w kolejności: pole Błąd przetwarzania, potem dane, od których błąd zależy. Błąd o indeksie albo kliencie naprawia się w kartotekach programu, a błąd o strukturze komunikatu wymaga nowego komunikatu od agencji. Dopiero po naprawie ma sens przycisk Ponów wybrany komunikat. Ponowienie bez zmiany danych da ten sam błąd i nic w ewidencji nie zepsuje, ponieważ nieudane przetwarzanie nie zmienia statusów partii.
Po komunikacie ze statusem Przetworzony sprawdź skutek na właściwym ekranie. Partie dokumentu mają nowy status w zwolnieniach i blokadach, a status dokumentu w rejestrze wynika ze statusów jego partii. Partie ze statusem Zwolniony pozwalają zatwierdzić WZC, o ile termin dozoru nie minął. Komunikat Częściowy zawsze przeczytaj do końca, bo mogą w nim stać partie zablokowane, które zwolnienie od agencji pominęło.
Symulacja komunikatu agencji
Przycisk Symuluj komunikat agencji otwiera okno z dwoma polami: Dokument celny i Rodzaj komunikatu. Rodzaj Zgłoszenie (MRN) przenosi partie dokumentu ze statusu Pod dozorem na Zgłoszony, a rodzaj Zwolnienie towaru - na Zwolniony. System buduje komunikat JSON z danych dokumentu i przetwarza go tak, jak komunikat odebrany od agencji, więc wynik jest widoczny w kolejce razem z hashem i statusem.
Okno ma dwa pola obowiązkowe: Dokument celny i Rodzaj komunikatu. Po zatwierdzeniu system buduje komunikat JSON z danych dokumentu i przetwarza go w kolejce. Symulacja zmienia statusy partii dokumentu, więc w ćwiczeniu okno tylko otwieramy i zamykamy bez zatwierdzania.
Symulacja zmienia dane demonstracyjne: partie dokumentu naprawdę zmienią status, a wpis w historii zostanie zapisany. Statusu nie da się cofnąć przyciskiem, a status Zwolniony i Unijny nie mają zmian wstecz, dlatego na zajęciach używaj symulacji tylko na dokumencie przewidzianym do pokazu i tylko wtedy, gdy prowadzący tak zdecyduje. Przyciski Symuluj zgłoszenie agencji i Symuluj zwolnienie towaru ma też rejestr dokumentów celnych przy dokumencie.
Ćwiczenie w demo - lekcja lub zajęcia
Ćwiczenie: przeczytaj kolejkę, znajdź błąd i sprawdź jego przyczynę
Ćwiczenie trwa ok. 15 minut. Zaloguj się w demo jako Magazyn w przeglądarce. Kroki to odczyt. Okno symulacji otwierasz i zamykasz bez zatwierdzania, bo symulacja zmieniłaby statusy partii.
- Wybierz w menu DOZÓR CELNY pozycję Kolejka importu od agencji. Odczytaj, ile komunikatów jest na liście i w jakich kanałach.
- Ustaw filtr Status przetwarzania na Błąd i kliknij Odśwież. Otwórz ikoną oka szczegóły komunikatu i zapisz treść pola Błąd przetwarzania.
- Na tej samej karcie odczytaj hash treści i sprawdź, że pole z JSON jest tylko do odczytu. Spróbuj kliknąć w nie i wpisać znak: tekst się nie zmieni.
- Zmień filtr na Częściowy, otwórz szczegóły i przeczytaj pole Uwagi przetwarzania. Wskaż, której pozycji dotyczy uwaga.
- Zmień filtr na Przetworzony, otwórz szczegóły dowolnego komunikatu i odczytaj MRN lub numer oraz czas przetworzenia. Nie klikaj Ponów wybrany komunikat: przycisk nie działa dla komunikatu Przetworzony.
- Kliknij Symuluj komunikat agencji, odczytaj nazwy pól i listę rodzajów komunikatu, a następnie zamknij okno bez zatwierdzania.
Pytanie kontrolne. Komunikat ma status Błąd z uwagą o indeksie spoza kartoteki klienta. Co sprawdzisz i poprawisz w programie, czym zakończysz naprawę i dlaczego statusy partii nie zmieniły się w trakcie nieudanego przetwarzania?
Podstawa programowa. Ćwiczenie realizuje efekt "stosuje systemy informatyczne w procesie magazynowania" z kwalifikacji SPL.01 Obsługa magazynów (jednostka SPL.01.5). Pozostałe ćwiczenia zebraliśmy na stronie demo WMS na zajęciach z gospodarki magazynowej.
Najczęstsze pytania
Jaki plik można wczytać do kolejki?
Plik .json albo .txt do 200 kB w kodowaniu UTF-8. Treść musi mieć format komunikatu opisany w tabeli pól JSON.
Co się stanie, gdy wczytam ten sam plik drugi raz?
Program rozpozna duplikat po haszu treści SHA-256, a stan partii i dokumentów pozostanie bez zmian.
Czy błąd w komunikacie zostawia część partii ze zmienionym statusem?
Nie. Komunikat jest przetwarzany w jednej transakcji, a błąd cofa całość. Zmieniają się tylko partie przy statusie Przetworzony albo Częściowy.
Dlaczego komunikat ze zwolnieniem ma status Częściowy?
Pozycja nie miała partii do dopasowania na dokumencie albo partia jest zablokowana i zostaje bez zmian. Szczegóły są w polu Uwagi przetwarzania.
Czy przycisk Ponów działa dla komunikatu Przetworzony?
Nie. Przycisk Ponów wybrany komunikat przetwarza zapisaną treść jeszcze raz i nie działa tylko dla statusu Przetworzony. Przy statusie Błąd użyj go po poprawieniu danych w programie.
Ile komunikatów pokazuje lista?
Do 300 wierszy. Ogranicz ją filtrem statusu, kanału albo agencji, jeśli szukasz konkretnego komunikatu.
Słownik pojęć
- Komunikat agencji
- Wiadomość JSON od agencji celnej o zgłoszeniu albo zwolnieniu towaru. Po przetworzeniu zmienia statusy partii dokumentu.
- Hash treści
- Skrót SHA-256 liczony z treści komunikatu. Dwa komunikaty o tym samym haszu to duplikat.
- Duplikat
- Komunikat o takim samym haszu jak jeden z wcześniejszych. Nie zmienia stanu partii.
- Kanał
- Sposób dostarczenia komunikatu do kolejki: API, FTPS albo Plik.
- Status Częściowy
- Wynik, w którym część pozycji zmieniła status, a część została pominięta, np. z powodu blokady partii.
- MRN
- Numer zgłoszenia celnego, 18 znaków, cyfry i wielkie litery. W kolejce widnieje w kolumnie MRN lub numer.
- Zwolnienie towaru
- Rodzaj komunikatu, który przenosi partie dokumentu na status Zwolniony i dopuszcza WZC.