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:

  1. Stan produktów w danym magazynie

  2. Liczbę produktów niezbędnych do zrezliowania zamówień z magazynu

  3. 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 magazynu

  • fetch_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() i save_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() i save_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