بارگذاری…
const instPlans = instPack.plans || []; let instRows = instPlans.map(pl => { const paid = Number(pl.paid_count || 0); const cnt = Number(pl.inst_count || pl.installments_count || 0); const st = pl.status === 'completed' ? 'ok' : (pl.status === 'cancelled' ? 'danger' : 'warn'); return '' + '' + esc(pl.slug || '') + '' + '' + esc(pl.title) + '' + '' + esc(Number(pl.total_amount || 0).toLocaleString('fa-IR')) + '' + '' + paid + ' / ' + cnt + '' + '' + esc(Number(pl.total_paid || 0).toLocaleString('fa-IR')) + ' / ' + esc(Number(pl.total_due || pl.total_amount || 0).toLocaleString('fa-IR')) + '' + '' + esc(pl.status) + '' + '' + esc(fmtJ(pl.created_at)) + '' + ' ' + (pl.status === 'active' ? '' : '') + ''; }).join('');