W skrócie
W opisywanym wdrożeniu dokument magazynowy trafia do Subiekta GT przez procedurę eksportu dobraną do jego typu. Formularz wywołuje ją po zapisie dokumentu, a procedura w jednej transakcji pomija dokumenty niezatwierdzone i już wysłane. Dokument zatwierdzony drogą, która jej nie woła, do Subiekta nie trafia.
Opisujemy, jak w jednym wdrożeniu Studio WMS.net dokumenty magazynowe trafiają do Subiekta GT, programu księgowo-magazynowego. Tekst jest napisany dla działu IT i kierownika projektu. Dotyczy projektu klienta, a nie standardowego ustawienia produktu.
Wysyłka dokumentów to jeden z torów integracji, który opisuje artykuł o trzech niezależnych torach integracji. Tutaj zajmujemy się tylko drogą dokumentu od zatwierdzenia do kolejki. Ogólny przegląd metod wymiany danych z systemem ERP daje artykuł o integracji ERP z WMS.
Które dokumenty trafiają do Subiekta
Dokument wysyła do Subiekta procedura dobrana do jego typu. Zestawienie pokazuje cztery grupy dokumentów. Ponowienia obsługuje osobna procedura, a jej mechanizm opisuje artykuł o ponowieniach wysyłki dokumentów w T-SQL.
| Dokument | Procedura eksportu | Uwagi |
|---|---|---|
| PZ i PZB | Procedura eksportu przyjęć | Eksport PZ wyrównano do eksportu PZB. |
| WZ i WZB | Procedura eksportu wydań | WZ trafia do Subiekta tylko wtedy, gdy zatwierdza go formularz wydania klienta albo kolektor. |
| MM | Procedura eksportu przesunięć | Dokument ma własną procedurę eksportu. |
| Korekty przyjęć i wydań | Procedura eksportu korekt | Korekty mają własną procedurę eksportu. |
PZ i PZB to przyjęcia zewnętrzne i bezpośrednie. WZ i WZB to analogiczne wydania. Typy dokumentów omawia strona o dokumentach magazynowych. Eksport PZ wyrównano do eksportu PZB. Różnice dotyczyły czyszczenia nazwy towaru i formatu daty ostatniej modyfikacji.
Zlecenia wydania ZWZ do Subiekta nie trafiają. Wysyłany jest dopiero dokument WZ wykonany ze zlecenia, a samo zlecenie opisuje artykuł o zapotrzebowaniu towarowym jako zleceniu wydania.
Co zawiera nagłówek i pozycja w kolejce
Procedura nie wysyła dokumentu bezpośrednio do Subiekta. Zapisuje go do kolejki jako nagłówek i pozycje, a dalej kolejkę obsługuje integracja uruchamiana przez usługę harmonogramu, którą opisuje artykuł o usłudze harmonogramu zadań. Nagłówek ma dziewięć pól.
| Pole nagłówka | Skąd pochodzi wartość |
|---|---|
| Typ dokumentu | Dokument w WMS |
| Data | Dokument w WMS |
| Numer | Dokument w WMS |
| Tytuł | Dokument w WMS |
| Uwagi | Dokument w WMS |
| Kontrahent | Pole z numerem kontrahenta w kartotece WMS |
| Płatnik | To samo pole kartoteki WMS |
| Magazyn Subiekta | Konfiguracja magazynów w słowniku WMS |
| Identyfikator zewnętrzny | Numer referencyjny dokumentu w WMS |
Pozycja w kolejce ma cztery pola. Zestawienie pokazuje, co niesie każde z nich.
| Pole pozycji | Zawartość |
|---|---|
| Symbol towaru | Symbol towaru z pozycji dokumentu |
| Ilość | Wartość bezwzględna |
| Nazwa towaru | Nazwa po wyczyszczeniu z trzech znaków |
| Identyfikator pozycji | Identyfikator pozycji dokumentu |
Kontrahent i płatnik wynikają z jednego pola w kartotece WMS, a magazyn Subiekta z konfiguracji magazynów w słowniku WMS. Gdy dokument trafia do niewłaściwego magazynu Subiekta, sprawdzamy więc najpierw tę konfigurację, a dopiero potem sam dokument.
Identyfikator zewnętrzny jest równy numerowi referencyjnemu dokumentu w WMS. To pole wiąże wpis w kolejce z dokumentem, z którego powstał.
Jedna transakcja i ochrona przed duplikatem
Procedura eksportu przyjmuje dwa parametry: numer referencyjny dokumentu i login użytkownika. Wszystkie jej wywołania w aplikacji mają tę samą sygnaturę. Formularz wywołuje ją po zapisie dokumentu, a w niektórych formularzach wywołanie następuje przy każdym zapisie, także do bufora. Dlatego procedura sama pomija dokumenty niezatwierdzone i już wysłane.
Cała praca odbywa się w jednej transakcji. Przy błędzie procedura wycofuje zmiany i zapisuje komunikat do rejestru błędów, a następnie zgłasza błąd dalej.
Procedura pracuje tylko na dokumentach zatwierdzonych i jeszcze niewysłanych. Po dopisaniu dokumentu do kolejki oznacza go jako wysłany, więc ponowne wywołanie nie tworzy duplikatu. W historii zostaje wtedy wpis z numerem referencyjnym dokumentu. Gdy dokument nie spełnia warunków, procedura zapisuje w historii wpis o braku danych do przetworzenia dla podanego numeru referencyjnego. Następnie kończy pracę bez błędu.
Z tego wynika prosta zasada diagnostyczna: brak błędu nie dowodzi wysyłki. Wpis o braku danych oznacza, że dokument nie był zatwierdzony albo że został już oznaczony jako wysłany. Wpis z numerem referencyjnym oznacza zakolejkowanie, a nie potwierdzenie przez Subiekta. Dalsze losy wpisu w kolejce pokazuje artykuł o diagnostyce kolejki integracji w T-SQL.
Numeracja w Subiekcie jest per magazyn
Trzy typy wydań dzielą w Subiekcie jedną serię numerów w danym magazynie: WZ, WZB i WZBRZ, czyli dokument wydania dwuetapowego. Subiekt numeruje bowiem dokumenty per magazyn, a nie per typ dokumentu WMS. Numeracja w WMS jest osobna i miesięczna, a numer zawiera człon typu dokumentu.
Przykład z fikcyjnymi danymi: w jednym magazynie Subiekta powstają po kolei WZ i WZB. W WMS dokumenty mają numery ze swoich serii, na przykład WZ-26-0001 i WZB-26-0001, a w Subiekcie oba dostają kolejne numery jednej serii tego magazynu.
Przy uzgadnianiu dokumentów między systemami sam numer nie wystarcza do wskazania dokumentu po drugiej stronie. Łączy je identyfikator zewnętrzny, czyli numer referencyjny dokumentu w WMS. Pytanie o numerację zadajemy już w analizie, której zakres opisuje artykuł o analizie przedwdrożeniowej WMS.
Nazwa towaru w formacie JSON
Przed zapisem do kolejki nazwa towaru w pozycji jest czyszczona z trzech znaków: cudzysłowu, apostrofu i odwrotnego apostrofu. Przed wprowadzeniem tego czyszczenia kilkanaście tysięcy prób wysyłki przyjęć kończyło się błędem „Bad JSON escape sequence”, a po zmianie liczba takich błędów wynosiła zero.
Komunikat mówi, że parser formatu JSON trafił na sekwencję specjalną, której nie rozpoznaje. Nazwa towaru trafia do wiadomości w tym formacie, więc pojedynczy znak z nazwy mógł zepsuć całą wiadomość.
Skutek widać w danych. Nazwa zawierająca znak cudzysłowu, na przykład opis rozmiaru w calach, traci ten znak przed zapisem do kolejki. Nazwa w pozycji kolejki może więc różnić się od nazwy w kartotece WMS, o czym pamiętamy przy porównywaniu dokumentów po obu stronach.
Każda ścieżka zatwierdzenia musi wołać eksport
WZ trafia do Subiekta tylko wtedy, gdy zatwierdza go formularz wydania klienta albo kolektor. Oba wywołują procedurę eksportu, a ta wysyła dokument, gdy jest zatwierdzony. Standardowy formularz zatwierdzał dokument bez wysyłki.
W opisywanym wdrożeniu przycisk Edycja w rejestrze WZ w buforze otwierał standardowy formularz bez wysyłki do Subiekta. Kilkadziesiąt dokumentów zatwierdzonych tą drogą nie trafiło do Subiekta. Po zmianie przycisk otwiera formularz klienta, który wysyła dokument.
Dokument zatwierdzony drogą, która nie woła procedury eksportu, nie trafia do Subiekta. Dlatego każda ścieżka zatwierdzenia musi wywoływać ten sam krok.
W projekcie z kilkoma drogami zatwierdzania oznacza to jedną czynność kontrolną: każdą drogę, także przycisk w rejestrze, sprawdzamy pod kątem wywołania eksportu. Test jednej ścieżki nie dowodzi, że druga też wysyła dokument. Błąd innego rodzaju, który ujawnił się dopiero przy zatwierdzeniu dokumentu, opisuje artykuł o procedurze zapisanej z QUOTED_IDENTIFIER OFF.
Pytania do zadania na etapie analizy
Przed wdrożeniem eksportu do Subiekta zadajemy cztery pytania. To pytania, a nie fakty o opisywanym wdrożeniu.
- Którędy zatwierdza się dokumenty - jakie formularze i kolektory zatwierdzają WZ i czy każdy woła eksport.
- Który magazyn Subiekta odpowiada magazynowi WMS - gdzie zapisano to przypisanie i kto je zmienia.
- Jak mają działać numery - czy numeracja WMS i numeracja Subiekta pozostają osobne i jak je zestawiamy.
- Co z dokumentami zatwierdzonymi bez wysyłki - kto decyduje, czy taki dokument trafia do Subiekta.
Czego ta strona nie opisuje
Strona opisuje drogę dokumentu do kolejki, a nie pracę procesu po stronie Subiekta ani wynik wysyłki. Błędy i ponowienia omawiają artykuły wskazane wyżej.
Nie podajemy treści procedur ani nazw obiektów bazy. Rzędy wielkości, czyli kilkanaście tysięcy prób i kilkadziesiąt dokumentów, pochodzą z zapisów wdrożenia i nie opisują skuteczności eksportu. Opis dotyczy jednego magazynu klienta, a inny projekt może wysyłać dokumenty inaczej, na przykład plikiem.
Pytania i odpowiedzi o eksporcie dokumentów do Subiekta GT
Które dokumenty magazynowe WMS wysyła do Subiekta GT?
W opisywanym wdrożeniu procedury eksportu obsługują pięć typów dokumentów: PZ, PZB, WZ, WZB i MM. Własne procedury eksportu mają też korekty przyjęć i wydań. Zlecenia wydania ZWZ do Subiekta nie trafiają, bo wysyłany jest dopiero dokument WZ wykonany ze zlecenia.
Co trafia do Subiekta w nagłówku i w pozycji dokumentu?
Nagłówek ma dziewięć pól, a identyfikator zewnętrzny jest równy numerowi referencyjnemu dokumentu w WMS. Pozycja ma cztery pola: symbol towaru, ilość jako wartość bezwzględną, nazwę towaru i identyfikator pozycji dokumentu.
Jak procedura eksportu chroni przed duplikatami?
Procedura pracuje tylko na dokumentach zatwierdzonych i jeszcze niewysłanych. Po dopisaniu dokumentu do kolejki oznacza go jako wysłany, więc ponowne wywołanie nie tworzy duplikatu. Formularz może ją wywołać przy każdym zapisie, także do bufora. Przy braku danych do przetworzenia procedura zapisuje wpis w historii i nie zgłasza błędu.
Dlaczego trzy typy wydań mają w Subiekcie jedną serię numerów?
Subiekt numeruje dokumenty per magazyn, a nie per typ dokumentu WMS. Dlatego trzy typy wydań (WZ, WZB i WZBRZ) dzielą w Subiekcie jedną serię numerów w danym magazynie. Numeracja w WMS jest osobna i miesięczna, a numer zawiera człon typu dokumentu.
Co się dzieje, gdy dokument zatwierdzono formularzem bez wysyłki?
Dokument jest zatwierdzony, ale niewysłany, więc do Subiekta nie trafia. W opisywanym wdrożeniu tak działał standardowy formularz oraz przycisk Edycja w rejestrze WZ w buforze. Po zmianie przycisk otwiera formularz klienta, który wysyła dokument.
Słownik pojęć o eksporcie dokumentów do Subiekta GT
Terminy używane przez dział IT i kierownika projektu, gdy WMS wysyła dokumenty magazynowe do Subiekta GT.
- Eksport dokumentu do Subiekta
- Zapis dokumentu WMS do kolejki jako nagłówka i pozycji. W opisywanym wdrożeniu robi to procedura dobrana do typu dokumentu, w jednej transakcji. Dokumenty niezatwierdzone i już wysłane pomija.
- Identyfikator zewnętrzny
- Pole nagłówka w kolejce, równe numerowi referencyjnemu dokumentu w WMS. Wiąże wpis w kolejce z dokumentem źródłowym.
- Dokument PZ
- Dokument przyjęcia zewnętrznego. W opisywanym wdrożeniu eksport PZ wyrównano do eksportu przyjęcia bezpośredniego PZB.
- Dokument WZ
- Dokument wydania zewnętrznego. W Subiekcie dzieli jedną serię numerów z WZB i WZBRZ w danym magazynie.
- Numeracja per magazyn
- Sposób numerowania dokumentów w Subiekcie: seria numerów należy do magazynu, a nie do typu dokumentu WMS. Numeracja w WMS jest osobna.
- Kolejka dokumentów
- Tabela w bazie, do której procedura eksportu zapisuje nagłówki i pozycje. Dalej odczytuje ją integracja z Subiektem.
- Numer referencyjny dokumentu
- Numer, który procedura eksportu dostaje jako parametr razem z loginem użytkownika. Staje się identyfikatorem zewnętrznym w kolejce.
Opisz nam integrację, której potrzebuje Twoja firma
Podaj, z jakim programem księgowo-magazynowym ma wymieniać dokumenty WMS Twojej firmy, a przygotujemy propozycję zakresu.
