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.

DokumentProcedura eksportuUwagi
PZ i PZBProcedura eksportu przyjęćEksport PZ wyrównano do eksportu PZB.
WZ i WZBProcedura eksportu wydańWZ trafia do Subiekta tylko wtedy, gdy zatwierdza go formularz wydania klienta albo kolektor.
MMProcedura eksportu przesunięćDokument ma własną procedurę eksportu.
Korekty przyjęć i wydańProcedura eksportu korektKorekty 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łówkaSkąd pochodzi wartość
Typ dokumentuDokument w WMS
DataDokument w WMS
NumerDokument w WMS
TytułDokument w WMS
UwagiDokument w WMS
KontrahentPole z numerem kontrahenta w kartotece WMS
PłatnikTo samo pole kartoteki WMS
Magazyn SubiektaKonfiguracja magazynów w słowniku WMS
Identyfikator zewnętrznyNumer referencyjny dokumentu w WMS

Pozycja w kolejce ma cztery pola. Zestawienie pokazuje, co niesie każde z nich.

Pole pozycjiZawartość
Symbol towaruSymbol towaru z pozycji dokumentu
IlośćWartość bezwzględna
Nazwa towaruNazwa po wyczyszczeniu z trzech znaków
Identyfikator pozycjiIdentyfikator 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.

Schemat: zatwierdzenie dokumentu, wywołanie procedury eksportu, kolejka nagłówków i pozycji oraz wpis w historii
Schemat prowadzi dokument od zatwierdzenia do wpisu w historii. Tabela u dołu pokazuje, które ścieżki zatwierdzenia wysyłają dokument do Subiekta, a które nie.

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.