#!/usr/bin/env python3
"""Seed Assets with fresh codes (10-based) since 1-based are soft-deleted"""
import requests, json

API = "https://moon-erp.elbaset.com/api"
r = requests.post(f"{API}/auth/login", json={"email": "admin@moonerp.com", "password": "password"})
token = r.json()["token"]
headers = {"X-Authorization": f"Bearer {token}", "Content-Type": "application/json"}

# "10" already exists as ID 162. Build from there.
ids = {"10": 162}

def create(code, name_en, name_ar, cls, nature, atype, parent_code=None):
    data = {"code": code, "name": name_en, "name_ar": name_ar,
            "classification": cls, "nature": nature, "account_type": atype}
    if parent_code and parent_code in ids:
        data["parent_id"] = ids[parent_code]
    r = requests.post(f"{API}/accounting/accounts", headers=headers, json=data)
    resp = r.json()
    aid = resp.get("data", resp).get("id")
    if aid:
        ids[code] = aid
        print(f"  OK: {code} ({aid}) {name_ar}")
    else:
        print(f"  FAIL: {code} {name_ar} => {json.dumps(resp, ensure_ascii=False)[:100]}")

print("=== Assets (شجرة الأصول) ===\n")

# Level 2: 101=Current, 102=Non-Current
create("101", "Current Assets", "الأصول المتداولة", "assets", "debit", "header", "10")
create("102", "Non-Current Assets", "الأصول غير المتداولة", "assets", "debit", "header", "10")

# -- Current Assets children --
# Cash
create("1011", "Cash on Hand", "النقدية بالصندوق", "assets", "debit", "header", "101")
create("10111", "Main Cash", "الصندوق الرئيسي", "assets", "debit", "detail", "1011")
create("10112", "Petty Cash", "صندوق المصروفات النثرية", "assets", "debit", "detail", "1011")

# Banks
create("1012", "Cash at Banks", "النقدية بالبنوك", "assets", "debit", "header", "101")
create("10121", "Bank Current Accounts", "حسابات جارية بالبنوك", "assets", "debit", "detail", "1012")
create("10122", "Bank Deposit Accounts", "حسابات ودائع بالبنوك", "assets", "debit", "detail", "1012")

# Receivables
create("1013", "Accounts Receivable", "العملاء - ذمم مدينة", "assets", "debit", "header", "101")
create("10131", "Trade Receivables", "ذمم تجارية مدينة", "assets", "debit", "detail", "1013")
create("10132", "Notes Receivable", "أوراق قبض", "assets", "debit", "detail", "1013")
create("10133", "Employee Receivables", "سلف وعهد الموظفين", "assets", "debit", "detail", "1013")
create("10134", "Other Receivables", "مدينون متنوعون", "assets", "debit", "detail", "1013")

# Inventory
create("1014", "Inventory", "المخزون", "assets", "debit", "header", "101")
create("10141", "Raw Materials", "مواد خام", "assets", "debit", "detail", "1014")
create("10142", "Finished Goods", "بضاعة تامة الصنع", "assets", "debit", "detail", "1014")
create("10143", "Work in Progress", "إنتاج تحت التشغيل", "assets", "debit", "detail", "1014")
create("10144", "Spare Parts", "قطع غيار", "assets", "debit", "detail", "1014")
create("10145", "Goods in Transit", "بضاعة بالطريق", "assets", "debit", "detail", "1014")

# Other current
create("1015", "Prepaid Expenses", "مصروفات مدفوعة مقدماً", "assets", "debit", "detail", "101")
create("1016", "Accrued Revenue", "إيرادات مستحقة", "assets", "debit", "detail", "101")
create("1017", "Other Current Assets", "أصول متداولة أخرى", "assets", "debit", "detail", "101")
create("1018", "Allowance for Doubtful Debts", "مخصص الديون المشكوك فيها", "assets", "credit", "detail", "101")

# -- Non-Current Assets children --
# Fixed Assets
create("1021", "Fixed Assets", "الأصول الثابتة", "assets", "debit", "header", "102")
create("10211", "Land", "أراضي", "assets", "debit", "detail", "1021")
create("10212", "Buildings", "مباني", "assets", "debit", "detail", "1021")
create("10213", "Vehicles", "سيارات ووسائل نقل", "assets", "debit", "detail", "1021")
create("10214", "Machinery & Equipment", "آلات ومعدات", "assets", "debit", "detail", "1021")
create("10215", "Furniture & Fixtures", "أثاث وتجهيزات", "assets", "debit", "detail", "1021")
create("10216", "Computers & IT", "أجهزة كمبيوتر ومعدات تقنية", "assets", "debit", "detail", "1021")
create("10217", "Tools & Instruments", "عدد وأدوات", "assets", "debit", "detail", "1021")
create("10218", "Leasehold Improvements", "تحسينات المباني المستأجرة", "assets", "debit", "detail", "1021")

# Accumulated Depreciation
create("1022", "Accumulated Depreciation", "مجمع الإهلاك", "assets", "credit", "header", "102")
create("10221", "Accum. Depr. - Buildings", "مجمع إهلاك المباني", "assets", "credit", "detail", "1022")
create("10222", "Accum. Depr. - Vehicles", "مجمع إهلاك السيارات", "assets", "credit", "detail", "1022")
create("10223", "Accum. Depr. - Machinery", "مجمع إهلاك الآلات والمعدات", "assets", "credit", "detail", "1022")
create("10224", "Accum. Depr. - Furniture", "مجمع إهلاك الأثاث", "assets", "credit", "detail", "1022")
create("10225", "Accum. Depr. - Computers", "مجمع إهلاك أجهزة الكمبيوتر", "assets", "credit", "detail", "1022")
create("10226", "Accum. Depr. - Tools", "مجمع إهلاك العدد والأدوات", "assets", "credit", "detail", "1022")
create("10227", "Accum. Depr. - Leasehold", "مجمع إهلاك تحسينات المباني", "assets", "credit", "detail", "1022")

# Intangible Assets
create("1023", "Intangible Assets", "أصول غير ملموسة", "assets", "debit", "header", "102")
create("10231", "Goodwill", "شهرة المحل", "assets", "debit", "detail", "1023")
create("10232", "Software & Licenses", "برامج وتراخيص", "assets", "debit", "detail", "1023")
create("10233", "Patents & Trademarks", "براءات اختراع وعلامات تجارية", "assets", "debit", "detail", "1023")

# Long-term Investments
create("1024", "Long-term Investments", "استثمارات طويلة الأجل", "assets", "debit", "header", "102")
create("10241", "Investment in Subsidiaries", "استثمارات في شركات تابعة", "assets", "debit", "detail", "1024")
create("10242", "Investment in Securities", "استثمارات في أوراق مالية", "assets", "debit", "detail", "1024")

# Projects Under Construction
create("1025", "Projects Under Construction", "مشروعات تحت التنفيذ", "assets", "debit", "detail", "102")

# Total
r = requests.get(f"{API}/accounting/accounts?per_page=1", headers=headers)
total = r.json()["meta"]["total"]
print(f"\n=== Total accounts: {total} ===")
