API integracyjne Studio WMS.net - jak system ERP przekazuje zlecenia i odczytuje stany magazynu
API integracyjne Studio WMS.net pozwala systemowi handlowemu przekazywać do magazynu zlecenia przyjęcia i wydania, a w drugą stronę odczytywać stany magazynowe i realizację zleceń. Z interfejsu korzysta program, nie człowiek - najczęściej system ERP albo platforma e-commerce. Strona opisuje zakres operacji, reguły walidacji zlecenia, kody błędów i pozostałe kanały wymiany danych. Adresy metod i nazwy pól zawiera dokumentacja techniczna przekazywana przy wdrożeniu.
Kolumny tabeli podają numer ZWZ i datę zlecenia, symbol magazynu, osobę odpowiedzialną oraz kontrahenta z odbiorcą; w bazie demonstracyjnej kolejka liczy 41 zleceń. Zlecenie przekazane przez API jest zwykłym zleceniem wydania ZWZ albo przyjęcia ZPZ. Kierownik obsługuje je w tych samych rejestrach modułów Wydania i Przyjęcia co zlecenia wpisane w formularzu, złożone w koszyku panelu klienta albo wczytane z pliku.
Na tej stronie
- Jak działa wymiana danych przez API
- Operacje dostępne w API
- Reguły walidacji zlecenia
- Przykład przepływu - zamówienie z systemu handlowego do wydania
- Kody odpowiedzi i obsługa błędów
- Dokumentacja OpenAPI dla zespołu integracji
- Inne kanały wymiany danych
- Integracje realizowane we wdrożeniu
- Ćwiczenie: zaplanuj zlecenie wydania, które system handlowy wyśle do magazynu
- Najczęstsze pytania
- Słownik pojęć
Jak działa wymiana danych przez API
Komunikacja odbywa się po protokole HTTP. System zewnętrzny wysyła żądanie POST, którego treścią jest dokument JSON, i dostaje odpowiedź w formacie JSON. Ten sam schemat dotyczy zapisów, np. utworzenia zlecenia, i odczytów, np. pobrania stanów. Gdy żądania nie da się wykonać, odpowiedź ma kod błędu HTTP i komunikat, więc program po drugiej stronie może zareagować bez udziału człowieka.
Z API korzysta osobne konto techniczne integracji, a nie konto pracownika magazynu. Konto jest przypisane do jednego klienta magazynu, czyli deponenta - firmy, której towar magazyn przechowuje. Operator logistyczny, który łączy z magazynem systemy kilku klientów, konfiguruje osobne konto dla każdego z nich.
Reguła inicjatywy. Operacje API uruchamia system zewnętrzny, wysyłając żądanie. O tym, że magazyn wydał towar, system handlowy dowiaduje się, odczytując zlecenie z realizacją pozycji albo dokumenty magazynowe. Częstotliwość takich odczytów trzeba więc zaplanować w projekcie integracji.
Operacje dostępne w API
Operacje dotyczą zleceń, kartotek, stanów magazynowych i dokumentów. Każda ma w programie ekran, na którym kierownik widzi te same dane.
| Operacja | Kierunek | Co zawiera | Te same dane w programie |
|---|---|---|---|
| Utworzenie zlecenia wydania albo przyjęcia | do magazynu | Nagłówek zlecenia z pozycjami, od 1 do 999 linii towarowych. | formularz zlecenia wydania ZWZ |
| Odczyt zlecenia | z magazynu | Zlecenie z pozycjami i realizacją każdej pozycji. | lista Moje zlecenia w koszyku zamówień panelu klienta |
| Założenie kartoteki asortymentu | do magazynu | Nowy towar klienta, do którego można potem wysyłać zlecenia. | kartoteki towarowe z bieżącym stanem |
| Odczyt asortymentu ze stanem | z magazynu | Dane towaru razem ze stanem magazynowym. | kartoteki towarowe |
| Założenie kontrahenta - odbiorcy | do magazynu | Nowy odbiorca, do którego magazyn wydaje towar klienta. | rejestr kontrahentów i ich odbiorców |
| Odczyt stanów | z magazynu | Stan ogólny albo szczegółowy - SKU, partia, paleta, terminy; także stan na wskazaną datę; wynik dzielony na strony. | zestawienia stanów magazynowych |
| Odczyt dokumentów po numerze awizo | z magazynu | Dokumenty magazynowe powiązane z jedną awizacją. | rejestry przyjęć i wydań |
| Odczyt dokumentów po kliencie i okresie | z magazynu | Dokumenty magazynowe jednego klienta z zakresu dat. | rejestry przyjęć i wydań |
Stan na wskazaną datę pozwala uzgodnić ewidencję magazynu z systemem księgowym na koniec miesiąca bez ręcznego eksportu. Duże zbiory, np. stan szczegółowy magazynu, API zwraca stronami. Numer awizo zapisany w zleceniu i w dokumencie wskazuje z kolei wszystko, co magazyn przyjął albo wydał w ramach jednej awizacji.
Reguły walidacji zlecenia
Zanim zlecenie trafi do magazynu, Studio WMS.net sprawdza je według czterech reguł. Zlecenie, które nie spełnia którejkolwiek z nich, nie zostaje zapisane, a odpowiedź zawiera kod błędu i komunikat.
- Liczba pozycji - od 1 do 999 w jednym zleceniu. Zamówienie bez pozycji nie przejdzie kontroli, a większe trzeba podzielić na kilka zleceń.
- Termin realizacji - nie wcześniejszy niż chwila wysłania żądania. Formularz ZWZ w przeglądarce przyjmuje datę od wczoraj, API - nie, dlatego zlecenie wysyłane ponownie po awarii połączenia potrzebuje aktualnego terminu.
- Klient - kontrahent, którego towar ma zostać przyjęty albo wydany, musi istnieć w kartotece kontrahentów magazynu przed pierwszym zleceniem.
- SKU - każda pozycja musi wskazywać towar z kartoteką asortymentu. Nowy towar system handlowy zakłada najpierw operacją założenia kartoteki, a dopiero potem wysyła zlecenie.
Kolejność synchronizacji. Zlecenie z towarem, którego magazyn jeszcze nie zna, zostanie odrzucone. Integracja wysyła więc najpierw kartoteki - asortyment i odbiorców - a dopiero potem zlecenia. Kartoteka asortymentu jest zakładana dla magazynu i oddziału, dlatego towar obsługiwany w dwóch magazynach potrzebuje kartoteki w każdym z nich.
Przykład przepływu - zamówienie z systemu handlowego do wydania
Tabela pokazuje drogę zamówienia od systemu handlowego do potwierdzenia wydania. Kroki systemu handlowego wykonuje program przez API, kroki magazynu - kierownik i magazynier.
| Krok | Kto działa | Co się dzieje | Gdzie to widać |
|---|---|---|---|
| 1 | System handlowy | Wysyła zlecenie wydania: klienta, termin realizacji i pozycje z SKU oraz ilością. | - |
| 2 | Studio WMS.net | Sprawdza reguły walidacji; poprawne zlecenie zapisuje jako ZWZ, błędne odrzuca z komunikatem. | rejestry zleceń w module Wydania |
| 3 | Magazyn | Realizuje zlecenie dokumentem WZ: w przeglądarce przycisk Generuj dobiera stany według reguły pobrania kontrahenta, na kolektorze magazynier skanuje miejsce i towar. | wydanie WZ na podstawie zlecenia; wydanie WZ na kolektorze |
| 4 | Magazyn | Zatwierdza WZ: dokument dostaje numer RRRR-MM-NNNNN-WZ, stan zatwierdzony spada, realizacja zlecenia rośnie. | rejestr wydań WZ |
| 5 | System handlowy | Odczytuje zlecenie z realizacją pozycji i wystawia fakturę albo informuje klienta o wysyłce. | - |
| 6 | System handlowy | Na koniec okresu odczytuje dokumenty klienta i stan na ostatni dzień, żeby uzgodnić ewidencję. | - |
Zlecenie ZWZ, także przekazane przez API, nie rezerwuje towaru. Stan dostępny zmniejszają dopiero pozycje WZ zapisane w buforze, co opisuje strona wydania WZ w buforze.
Wiersz zamówienia podaje liczbę pozycji i termin, a pasek realizacji porównuje ilość zrealizowaną z zamówioną. W bazie demonstracyjnej zlecenie zatwierdzone ma 1056 sztuk z realizacją równą zeru. Realizacja rośnie dopiero wtedy, gdy magazyn zatwierdza wydania WZ do zlecenia.
Kody odpowiedzi i obsługa błędów
Każda odpowiedź API ma kod HTTP. Kod mówi programowi po stronie systemu handlowego, czy żądanie wykonano, a komunikat w JSON - dlaczego nie.
| Kod HTTP | Znaczenie | Działanie po stronie systemu zewnętrznego |
|---|---|---|
| 200 | Żądanie wykonane, wynik w treści odpowiedzi. | Przetworzyć odpowiedź JSON. |
| 400 | Nieprawidłowe dane żądania. | Poprawić dane według komunikatu; wysłanie tego samego żądania da ten sam wynik. |
| 401 | Brak poprawnego uwierzytelnienia konta integracji. | Sprawdzić konfigurację konta technicznego; nie ponawiać żądań w pętli. |
| 500 | Błąd po stronie serwera. | Ponowić po pewnym czasie, a przed ponownym wysłaniem zlecenia sprawdzić odczytem, czy nie zostało zapisane. Treść komunikatu przekazać pomocy technicznej. |
Jedna baza dla wszystkich kanałów. Zlecenie zapisane przez API trafia do tej samej bazy SQL Server, z której korzystają interfejs przeglądarkowy i urządzenia mobilne. Tabela rejestru w przeglądarce nie odświeża się sama: nowe zlecenie kierownik zobaczy po poleceniu Odśwież albo po zmianie filtra. Aplikacja wymaga bazy SQL Server 2016 SP1 lub nowszej z poziomem zgodności co najmniej 130, bo korzysta z funkcji OPENJSON i STRING_SPLIT.
Dokumentacja OpenAPI dla zespołu integracji
Opis API w formacie Swagger/OpenAPI jest częścią dokumentacji technicznej wdrożenia. Zawiera to, czego publiczna instrukcja celowo nie podaje: adresy operacji, strukturę żądań i odpowiedzi, nazwy pól oraz sposób uwierzytelnienia konta integracji. Dokumentację dostaje zespół, który buduje połączenie po stronie systemu handlowego - programiści Twojej firmy albo dostawca systemu ERP.
Format pliku opisuje specyfikacja OpenAPI. Narzędzia programistyczne generują z takiego opisu kod klienta i pozwalają wysłać próbne żądanie, więc reguły walidacji sprawdza się na danych testowych, a nie na pierwszym prawdziwym zamówieniu.
Inne kanały wymiany danych
API nie jest jedyną drogą. Część systemów handlowych nie ma modułu, który wyśle żądanie HTTP, a część wymienia dane wsadowo, kilka razy na dobę. Studio WMS.net obsługuje wtedy wymianę przez bazę danych albo przez pliki.
| Kanał | Jak działa | Kiedy się sprawdza |
|---|---|---|
| API integracyjne | Żądania HTTP POST z treścią JSON, na bieżąco. | Zlecenia przekazywane pojedynczo w ciągu dnia. |
| Tabele pośrednie i procedury składowane | System handlowy zapisuje zlecenie w tabeli wymiany, magazyn odbiera je w swoim cyklu i odsyła potwierdzenie. | System, który zapisuje dane w bazie SQL Server. |
| Import plików XLSX, CSV, TXT i DAT | Schemat importu mapuje kolumny pliku na pola; tryb kontroli sprawdza plik bez zapisu. | Start magazynu, zlecenia klienta przysłane w arkuszu. |
| Import XML z serwera FTP | Program wczytuje pliki XML według konfiguracji. | Wymiana wsadowa bez interfejsu programistycznego. |
| Eksport CSV i XLSX | Zestawienia zdefiniowane w programie zapisywane do plików. | System, który czyta stany z plików. |
Tabele pośrednie oddzielają system handlowy od tabel operacyjnych magazynu. Zapis zlecenia nie konkuruje wtedy o blokady z transakcjami magazynierów, a procedury składowane przenoszą zlecenia do magazynu w jego własnym cyklu. Mechanizm opisuje dokumentacja procedur składowanych SQL Server w Microsoft Learn.
Import z FTP i eksporty o stałej porze uruchamia zewnętrzna usługa harmonogramu, działająca poza aplikacją WWW. Eksport CSV z tabel programu używa średnika i kodowania UTF-8 ze znacznikiem BOM - inaczej niż przecinek z opisu formatu w RFC 4180, co musi uwzględnić program czytający plik.
Menu dzieli import na dokumenty otwarcia, czyli stany początkowe magazynu, oraz kartoteki dostawców, odbiorców, towarów i lokalizacji. Schemat importu mapuje kolumny pliku na pola i może dopisać wartości stałe albo wyliczane. Tryb kontroli sprawdza plik bez zapisu do bazy, a pusty wzorzec do pobrania ma arkusz Instrukcja. Zlecenia z pliku wczytuje osobna pozycja w bloku Inne działania modułów Przyjęcia i Wydania. Szczegóły zawiera strona import danych kartotek, a przygotowanie arkusza opisuje artykuł import Excel do systemu WMS.
Integracje realizowane we wdrożeniu
Kod Studio WMS.net zawiera połączenia z kilkoma zewnętrznymi systemami i usługami. Nie są to przyciski gotowe do użycia zaraz po instalacji: każde połączenie wymaga konfiguracji i danych dostępowych po stronie dostawcy usługi, dlatego jego zakres ustala się we wdrożeniu.
| System lub usługa | Zakres po stronie Studio WMS.net |
|---|---|
| SAP | Wywołania RFC albo REST. |
| Asseco WAPRO WF-MAG | Odczyt zleceń z bazy WF-MAG. |
| Usługi kurierskie | Zamawianie i anulowanie kuriera. |
| Bramka SMS | Wysyłka wiadomości SMS. |
| E-faktury | E-faktury przez platformę Tradeshift. |
| Rejestry firm | Dane firmy pobierane po numerze NIP z VIES, GUS i CEIDG. |
| Wagi elektroniczne | Połączenie z wagą przez TCP. |
Połączenie z innym systemem ERP buduje się we wdrożeniu z elementów opisanych wyżej: API, tabel pośrednich albo plików. Zakres prac ustala analiza przed uruchomieniem systemu; przebieg projektu opisuje strona wdrożenie systemu WMS w SoftwareStudio, a zapytanie o integrację z konkretnym systemem przyjmuje formularz wyceny Studio WMS.net.
Ćwiczenie w demo - lekcja lub zajęcia
Ćwiczenie: zaplanuj zlecenie wydania, które system handlowy wyśle do magazynu
Uczeń projektuje na papierze dane, które sklep albo system ERP przekazałby do WMS, i porównuje je ze zleceniem widocznym po stronie magazynu. Role w demo: panel klienta magazynu i kierownik magazynu. Czas: około 20 minut.
- Na kartce zaplanuj zlecenie wydania dla przykładowego klienta magazynu: klienta, termin realizacji oraz dwie pozycje z indeksem towaru i ilością.
- Sprawdź plan z czterema regułami walidacji z tej strony i zaznacz dane, bez których system odrzuciłby zlecenie.
- Otwórz demo Studio WMS.net w roli panelu klienta i w zakładce Asortyment odszukaj towary do swojego planu - zapisz ich indeksy i stan.
- W drugiej karcie przeglądarki otwórz rolę kierownika, przejdź do MAGAZYN, Wydania, Zlecenia wydań ZWZ oczekujące i otwórz dowolne zlecenie przyciskiem Podgląd.
- Porównaj pola zlecenia z planem z kartki i wypisz dane, które magazyn dopisuje dopiero przy wydaniu WZ, np. lokalizację pobrania i numer palety.
Pytanie kontrolne. Dlaczego zlecenie z towarem, dla którego magazyn nie ma kartoteki asortymentu, zostanie odrzucone i co system handlowy musi zrobić wcześniej?
Podstawa programowa. Ćwiczenie realizuje efekt "stosuje systemy informatyczne w procesie magazynowania" z kwalifikacji SPL.01 Obsługa magazynów (jednostka SPL.01.5), w tym kryterium "opisuje systemy dokumentowania przepływów magazynowych i międzymagazynowych". Pozostałe ćwiczenia zebraliśmy na stronie demo WMS na zajęciach z gospodarki magazynowej.
Najczęstsze pytania
Jakim protokołem komunikuje się API Studio WMS.net?
Protokołem HTTP: system zewnętrzny wysyła żądanie POST z treścią JSON i dostaje odpowiedź w JSON, także przy odczytach danych. Błędy mają kod HTTP 400, 401 albo 500 i komunikat w treści odpowiedzi.
Czy przez API można utworzyć dokument WZ albo PZ?
Operacje API opisane w dokumentacji tworzą zlecenia wydania i przyjęcia, a nie dokumenty magazynowe. Dokument WZ albo PZ powstaje w magazynie przy realizacji zlecenia, a system handlowy odczytuje go po numerze awizo albo po kliencie i okresie.
Jak system handlowy sprawdza, czy magazyn wydał towar?
Odczytuje zlecenie wraz z realizacją pozycji albo pobiera dokumenty magazynowe klienta z wybranego okresu. W programie realizacja zlecenia rośnie po zatwierdzeniu dokumentu wydania.
Czy jedno konto integracji obsłuży kilku klientów magazynu?
Nie. Konto techniczne integracji jest przypisane do jednego klienta magazynu, dlatego operator logistyczny konfiguruje osobne konto dla każdego klienta, którego system łączy z magazynem.
Dlaczego API odrzuciło zlecenie?
Zlecenie nie spełniło którejś z reguł: nie ma żadnej pozycji albo ma ich więcej niż 999, termin realizacji jest wcześniejszy niż chwila wysłania albo klienta lub SKU nie ma w kartotekach. Przyczynę podaje komunikat w odpowiedzi JSON.
Słownik pojęć
- API integracyjne
- Interfejs, przez który inny program zapisuje i odczytuje dane Studio WMS.net bez udziału użytkownika.
- JSON
- Tekstowy format danych z par nazwa-wartość i list; w API niesie treść żądania i odpowiedzi.
- OpenAPI
- Standard opisu interfejsów HTTP w pliku YAML albo JSON, wcześniej znany jako Swagger.
- Konto techniczne integracji
- Osobne konto programu zewnętrznego do wywołań API, przypisane do jednego klienta magazynu.
- Deponent
- Klient magazynu, którego towar przechowuje operator logistyczny; w programie właściciel zapasu z kartoteki kontrahentów.
- Tabela pośrednia
- Tabela wymiany, do której system handlowy zapisuje dane, a magazyn odbiera je procedurą składowaną w swoim cyklu.
- Schemat importu
- Definicja przypisująca kolumny pliku do pól kartoteki albo zlecenia, także z wartościami stałymi i wyliczanymi.
- Stronicowanie
- Dzielenie dużego wyniku odczytu na strony pobierane kolejno przez system zewnętrzny.