"""The quickstart as one script: check the token, pull orders to the end, ack one, push a customer.

  SLFLO_TOKEN=sfi_live_... python3 quickstart.py
"""
import sys
import uuid

from slflo import ApiError, Slflo, report

api = Slflo()
summary = {}

# region me
me = api.get("/me")["data"]
print(me["client"]["name"], "·", me["company"]["name"], "·", ", ".join(me["scopes"]), file=sys.stderr)
summary["client"] = me["client"]["name"]
# endregion

# region pull
orders, after = [], 0
while True:
    page = api.get("/orders", {"filter[version_after]": after, "per_page": 100})
    orders += page["data"]
    if not page["meta"]["has_more"]:
        break
    after = page["meta"]["next_version_after"]
print(len(orders), "orders; watermark", orders[-1]["version"] if orders else after, file=sys.stderr)
summary["orders"] = len(orders)
# endregion

# region ack
waiting = [o for o in orders if o["status"] == "ERP_PENDING"]
if waiting:
    order = waiting[0]
    your_number = "SO-" + order["number"].split("-")[-1]  # your ERP's sales order number
    answer = api.post(f"/orders/{order['id']}/ack",
                      {"outcome": "ACCEPTED", "external_ref": your_number, "external_number": your_number},
                      key=your_number)["data"]
    print(order["number"], "→", answer["status"], answer["result"], file=sys.stderr)
    summary["acked"] = {"id": order["id"], "status": answer["status"], "result": answer["result"]}
# endregion

# region push
customer = {"name": {"en": "Al Amal Market", "ar": "سوق الأمل"}, "address": "12 Tahrir St, Giza",
            "credit_limit": 50000, "blocked": False, "source_version": "2026-10-05T10:40:00Z"}
results = []
for attempt in range(2):
    pushed = api.put("/customers/CUST-0042", customer, key=f"CUST-0042:{uuid.uuid4().hex}")["data"]
    results.append(pushed["result"])  # created, then unchanged
print("CUST-0042:", " then ".join(results), file=sys.stderr)
summary["customer"] = results
# endregion

report(summary)
