Pobranie zamówień
Przykład pobrania zamówień i wyliczania ich liczby per status zamówienia:
W poniższym skrypcie użyjemy głownie metody getsale z filtrem na statusy, w skrócie 1. Autoryzujemy się tokenem 2. Pobieramy zamówienia w interesujących nas statusach (obsługujemy paginację) 3. Zliczamy zamówienia i wyświetlamy wynik
Element
Dlaczego jest ważny?
get_token()
Uzyskanie dostępu do API z tokenem JWT
filter.saleStates
Pobieramy tylko interesujące nas statusy
Stronicowanie (page_number
)
Obsługa dużej liczby zamówień (np. 10 000+)
Counter()
Szybkie i czytelne zliczenie statusów
W przypadku wątpliwości można użyć ChatGTP lub Copilot do pomocy
import requests
from collections import Counter
# Dane logowania
BASE_URL = "https://tenant.easystorage.io"
USERNAME = "userAPI"
PASSWORD = "PASSWORDuseraAPI"
# Lista statusów do pobrania
FILTERED_STATUSES = ["New",
"IncompleteAllocation",
"Allocated",
"PartiallyPicked",
"Picked",
"Verified",
"VerifiedDifferentQuantity"]
# 1. Uwierzytelnienie
def get_token():
url = f"{BASE_URL}/api/external/v2/account/gettoken"
payload = {"username": USERNAME, "password": PASSWORD}
response = requests.post(url, json=payload)
response.raise_for_status()
return response.json()['data']['user']['accessToken']
# 2. Pobranie zamówień ze stronicowaniem i filtrem statusów
def get_filtered_sales(token):
url = f"{BASE_URL}/api/external/v2/sale/getsales"
headers = {
"Authorization": f"Bearer {token}"
}
all_sales = []
page_number = 1
page_size = 1000
while True:
payload = {
"paging": {
"page": page_number,
"rowsPerPage": page_size
},
"filter": {
"saleStates": FILTERED_STATUSES
}
}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
data = response.json()['data']
items = data['sales']
all_sales.extend(items)
if len(items) < page_size:
break
page_number += 1
return all_sales
# 3. Zliczenie statusów
def count_statuses(sales):
statuses = [sale['saleStateId'] for sale in sales]
return Counter(statuses)
# 4. Główna funkcja
def main():
token = get_token()
sales = get_filtered_sales(token)
#print(sales)
status_counts = count_statuses(sales)
print("Liczba zamówień wg statusu (tylko wybrane):")
for status, count in status_counts.items():
print(f"{status}: {count}")
if __name__ == "__main__":
main()
Last updated