#!/usr/bin/env python3
"""Seed Egyptian Chart of Accounts - Assets section"""
import requests, json, sys

API = "https://moon-erp.elbaset.com/api"

# Login
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"}
print(f"Token: {token[:20]}...")

ids = {}  # code -> id mapping

def create(code, name_en, name_ar, classification, nature, account_type, parent_code=None):
    data = {
        "code": code,
        "name": name_en,
        "name_ar": name_ar,
        "classification": classification,
        "nature": nature,
        "account_type": account_type,
    }
    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} (ID:{aid}) - {name_ar}")
    else:
        print(f"  FAIL: {code} - {name_ar} => {json.dumps(resp, ensure_ascii=False)[:120]}")

# ====== 1. ASSETS ======
print("\n=== 1. الأصول (Assets) ===")
create("1", "Assets", "الأصول", "assets", "debit", "header")
create("11", "Current Assets", "الأصول المتداولة", "assets", "debit", "header", "1")

# 111 - Cash
create("111", "Cash on Hand", "النقدية بالصندوق", "assets", "debit", "header", "11")
create("1111", "Main Cash", "الصندوق الرئيسي", "assets", "debit", "detail", "111")
create("1112", "Petty Cash", "صندوق المصروفات النثرية", "assets", "debit", "detail", "111")

# 112 - Banks
create("112", "Cash at Banks", "النقدية بالبنوك", "assets", "debit", "header", "11")
create("1121", "Bank Current Accounts", "حسابات جارية بالبنوك", "assets", "debit", "detail", "112")
create("1122", "Bank Deposit Accounts", "حسابات ودائع بالبنوك", "assets", "debit", "detail", "112")

# 113 - Receivables
create("113", "Accounts Receivable", "العملاء - ذمم مدينة", "assets", "debit", "header", "11")
create("1131", "Trade Receivables", "ذمم تجارية مدينة", "assets", "debit", "detail", "113")
create("1132", "Notes Receivable", "أوراق قبض", "assets", "debit", "detail", "113")
create("1133", "Employee Receivables", "سلف وعهد الموظفين", "assets", "debit", "detail", "113")
create("1134", "Other Receivables", "مدينون متنوعون", "assets", "debit", "detail", "113")

# 114 - Inventory
create("114", "Inventory", "المخزون", "assets", "debit", "header", "11")
create("1141", "Raw Materials", "مواد خام", "assets", "debit", "detail", "114")
create("1142", "Finished Goods", "بضاعة تامة الصنع", "assets", "debit", "detail", "114")
create("1143", "Work in Progress", "إنتاج تحت التشغيل", "assets", "debit", "detail", "114")
create("1144", "Spare Parts", "قطع غيار", "assets", "debit", "detail", "114")
create("1145", "Goods in Transit", "بضاعة بالطريق", "assets", "debit", "detail", "114")

# 115-118 direct children
create("115", "Prepaid Expenses", "مصروفات مدفوعة مقدماً", "assets", "debit", "detail", "11")
create("116", "Accrued Revenue", "إيرادات مستحقة", "assets", "debit", "detail", "11")
create("117", "Other Current Assets", "أصول متداولة أخرى", "assets", "debit", "detail", "11")
create("118", "Allowance for Doubtful Debts", "مخصص الديون المشكوك فيها", "assets", "credit", "detail", "11")

# 12 - Non-Current Assets
create("12", "Non-Current Assets", "الأصول غير المتداولة", "assets", "debit", "header", "1")

# 121 - Fixed Assets
create("121", "Fixed Assets", "الأصول الثابتة", "assets", "debit", "header", "12")
create("1211", "Land", "أراضي", "assets", "debit", "detail", "121")
create("1212", "Buildings", "مباني", "assets", "debit", "detail", "121")
create("1213", "Vehicles", "سيارات ووسائل نقل", "assets", "debit", "detail", "121")
create("1214", "Machinery & Equipment", "آلات ومعدات", "assets", "debit", "detail", "121")
create("1215", "Furniture & Fixtures", "أثاث وتجهيزات", "assets", "debit", "detail", "121")
create("1216", "Computers & IT Equipment", "أجهزة كمبيوتر ومعدات تقنية", "assets", "debit", "detail", "121")
create("1217", "Tools & Instruments", "عدد وأدوات", "assets", "debit", "detail", "121")
create("1218", "Leasehold Improvements", "تحسينات المباني المستأجرة", "assets", "debit", "detail", "121")

# 122 - Accumulated Depreciation
create("122", "Accumulated Depreciation", "مجمع الإهلاك", "assets", "credit", "header", "12")
create("1221", "Accum. Depr. - Buildings", "مجمع إهلاك المباني", "assets", "credit", "detail", "122")
create("1222", "Accum. Depr. - Vehicles", "مجمع إهلاك السيارات", "assets", "credit", "detail", "122")
create("1223", "Accum. Depr. - Machinery", "مجمع إهلاك الآلات والمعدات", "assets", "credit", "detail", "122")
create("1224", "Accum. Depr. - Furniture", "مجمع إهلاك الأثاث", "assets", "credit", "detail", "122")
create("1225", "Accum. Depr. - Computers", "مجمع إهلاك أجهزة الكمبيوتر", "assets", "credit", "detail", "122")
create("1226", "Accum. Depr. - Tools", "مجمع إهلاك العدد والأدوات", "assets", "credit", "detail", "122")
create("1227", "Accum. Depr. - Leasehold", "مجمع إهلاك تحسينات المباني", "assets", "credit", "detail", "122")

# 123 - Intangible Assets
create("123", "Intangible Assets", "أصول غير ملموسة", "assets", "debit", "header", "12")
create("1231", "Goodwill", "شهرة المحل", "assets", "debit", "detail", "123")
create("1232", "Software & Licenses", "برامج وتراخيص", "assets", "debit", "detail", "123")
create("1233", "Patents & Trademarks", "براءات اختراع وعلامات تجارية", "assets", "debit", "detail", "123")

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

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

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