Pobranie produktów
Pobranie dostępnych ilości produktu w danym magazynie
Załóżmy ze nasz sklep internetowy/dział handlowy potzrebuje DOSTĘPNYCH ilości produktów. W WMS EasyStorage mamy następująca logike:
Magazyn (identyfikowamy po warehouseid) oraz zamówienia, które są realzowane z danego magazynu.
Aby zrealizować dane zamówienie WMS generuje zadania operatorów ("Zbierz" i "uzupełnij"), oraz raportuje braki produktów. Przez API możemy pobrać dwie dane:
Stan produktów w danym magazynie
Liczbę produktów niezbędnych do zrezliowania zamówień z magazynu
Rożnica pomiedzy tymi dwoma wartościami jest to liczba dostępnych/wolnych produktów
Przykład: W magazynie mamy 3 sztuki towaru (na półkach). Jedno zamówienie (Z1) z 1 szt jest już skompleowane (produkt jest w koszyku), a drugie (Z2) na 2szt jest w statusie zaalkowane (czeka na zebranie). Zamówienie Z1 ponieważ zostało już zebrane, WMS to zamówienie ignoruje i końcowy stan produktów w magazynie jest 3. Liczba produktów niezbędnych do realizacji to 2 szt (zam Z2). Liczba dostępnych produktów po obliczeniu różnicy: (3 -2)=1. Gdy Z2 będzie na 6szt. to liczba dostępnych produktów wyniesie (3-6)=-3 (czyli brakuje 3 sztuk w magazynie do realizacji zamówień)
Poniżej przykład skryptu (Python3) pobierający produkty oraz ich stany, używający 3 endpointów:
Kluczowe Funkcje
get_token(): Uzyskanie tokena autoryzacyjnego, endpoint (/api/external/v2/account/gettoken)fetch_inventory_data(): Pobieranie stanu magazynowego (system zwraca nam ID produktu oraz stan), uzywany endpoint: /api/external/v2/inventory/getinventorysummaryperwarehouse z filtrem na ID magazynufetch_product_data(): Pobieranie i uzupełnianie brakujących danych o produktach - majac ID produktu, "dociągamy" dane o produktach takie jak SKU, Nazwa, EAN (uzywany enpoint: /api/external/v2/stock/product/getproducts)
load_local_product_data()isave_local_product_data(): Zarządzanie lokalnym przechowywaniem danych o produktach - pamietajać ze API ma limit (100 zapytań na minutę, zachowujemy dane o produktach w pliku)save_to_csv()isave_to_xlsx(): Zapisywanie pobranych danych do plików w formatach CSV i XLSX. W tych funkcjach obliczamy dostępne ilości danych produktów.
Skrypt obsługuje paging (API zwraca maksymlanie 1000 pozycji na stronie dla stanu magazynu, czyli endpoint /api/external/v2/inventory/getinventorysummaryperwarehouse oraz 100 pozycji przy pobieraniu danych o produktach, endpoint: /api/external/v2/stock/product/getproducts
Uruchamianie
Aby uruchomić skrypt, upewnij się, że wszystkie wymagane biblioteki są zainstalowane, a następnie wykonaj następującą komendę:
Upewnij się również, że zmienne konfiguracyjne, takie jak BASE_URL, LOGIN, PASSWORD, i WAREHOUSE_ID, są poprawnie ustawione.
Nazwy Magazynów w ERP i WMS mogą się różnić, aby pobrać ID magazynów dostępne w WMS należy użyć endpointa: /api/external/v2/warehouse/getwarehouses (nie używany w poniższym skrypcie, ID zostało wpisane do zmiennych na początku skryptu)
Last updated