1
📥
Ambil data stok sistemAPI gudang — kuantiti sistem setiap SKU
2
🔢
Bandingkan dengan kiraan fizikalKira variance: fizikal − sistem
3
⚠️
Flag variance ketaraTanda item dengan variance > 5% untuk semakan
4
📊
Laporan & pelarasanJana adjustment report + notifikasi
import requests, json, pandas as pd
API_INVENTORY = "https://api.warehouse/v2/inventory"
def fetch_system_stock():
resp = requests.get(API_INVENTORY, params={"status": "active"})
return resp.json().get("items", [])
def compare_counts(system, physical):
df = pd.DataFrame(system)
df["physical"] = physical
df["variance"] = df["physical"] - df["qty"]
df["variance_pct"] = abs(df["variance"]) / df["qty"] * 100
flagged = df[df["variance_pct"] > 5]
return {
"total_items": len(df),
"matched": int((df["variance"] == 0).sum()),
"variance_items": len(flagged),
"total_variance": int(df["variance"].sum()),
"flagged_skus": flagged["sku"].tolist(),
"adjustment": flagged[["sku", "variance"]].to_dict("records")
}
report = compare_counts(fetch_system_stock(), [118, 45, 432, 33])
print(json.dumps(report, indent=2))