// admin-finance.jsx — real financial system driven by the API (no mock data) const fmtAED = (n) => (n < 0 ? '−' : '') + 'AED ' + Math.abs(Math.round(n)).toLocaleString(); const EXP_LABELS = { inventory: ['مخزون وعطور خام', 'Inventory & raw materials'], shipping: ['شحن وتوصيل', 'Shipping & logistics'], salaries: ['رواتب', 'Salaries'], rent: ['إيجار وفواتير', 'Rent & utilities'], marketing: ['تسويق', 'Marketing'], misc: ['متفرقات', 'Other'], }; const PAY_LABELS = { card: ['بطاقة ائتمان', 'Credit card'], apple: ['Apple Pay', 'Apple Pay'], mada: ['مدى', 'Mada'], bank: ['حوالة بنكية', 'Bank transfer'], cod: ['عند الاستلام', 'Cash on delivery'], cash: ['نقداً', 'Cash'], }; function FinLoading() { return
| {t('المعرّف', 'ID')} | {t('التاريخ', 'Date')} | {t('النوع', 'Type')} | {t('الوصف', 'Description')} | {t('طريقة الدفع', 'Method')} | {t('المرجع', 'Ref')} | {t('المبلغ', 'Amount')} | {t('الحالة', 'Status')} |
|---|---|---|---|---|---|---|---|
| {tx.id} | {tx.date} | {typeLabel(tx.type)} | {lang === 'ar' ? tx.desc_ar : tx.desc_en} | {methodLabel(tx.method)} | {tx.ref} | 0 ? 'tx-amount pos' : 'tx-amount neg'}>{fmtAED(tx.amount)} | {tx.status === 'completed' ? t('مكتمل', 'Completed') : t('معلّق', 'Pending')} |
| {t('التاريخ', 'Date')} | {t('الوصف', 'Description')} | {t('الفئة', 'Category')} | {t('طريقة الدفع', 'Method')} | {t('المرجع', 'Ref')} | {t('المبلغ', 'Amount')} | {t('الحالة', 'Status')} |
|---|---|---|---|---|---|---|
| {e.date} | {lang === 'ar' ? e.desc_ar : e.desc_en} | {e.cat && EXP_LABELS[e.cat] ? (lang === 'ar' ? EXP_LABELS[e.cat][0] : EXP_LABELS[e.cat][1]) : '—'} | {(e.method || '').toUpperCase()} | {e.ref} | {fmtAED(e.amount)} | {e.status === 'completed' ? t('مدفوع', 'Paid') : t('معلّق', 'Pending')} |
| {t('الفاتورة', 'Invoice')} | {t('العميل', 'Client')} | {t('الإصدار', 'Issued')} | {t('الاستحقاق', 'Due')} | {t('العناصر', 'Items')} | {t('الإجمالي', 'Total')} | {t('الحالة', 'Status')} | |
|---|---|---|---|---|---|---|---|
| {inv.id} | {lang === 'ar' ? inv.client : inv.client_en} |
{inv.date} | {inv.due} | {inv.items} | AED {inv.total.toLocaleString()} | {statusLabel(inv.status)} |
| {t('الإيرادات', 'Revenue')} | |
| {t('إجمالي المبيعات', 'Total sales')} | AED {Math.round(totRev).toLocaleString()} |
| {t('المصاريف', 'Expenses')} | |
| {lang === 'ar' ? EXP_LABELS[c.id][0] : EXP_LABELS[c.id][1]} | −AED {Math.round(c.amount).toLocaleString()} |
| {t('إجمالي المصاريف', 'Total expenses')} | −AED {Math.round(totExp).toLocaleString()} |
| {t('صافي الدخل', 'Net income')} | AED {Math.round(totNet).toLocaleString()} {totRev > 0 && ({(totNet / totRev * 100).toFixed(1)}%)} |