<%- include('partials/sidebar', { activePage: 'billing', company }) %>
<%= t('admin.billing.manage_title', 'Manajemen Tagihan') %>
<%= (typeof session !== 'undefined' && session.isCashier) ? t('admin.role.cashier', 'Kasir') : t('admin.role.admin', 'Admin') %>
<% if (msg) { %>
<%= msg.text %>
<% } %>
<%= t('admin.billing.summary.total', 'Total Tagihan') %>
<%= summary.total.count||0 %>
Rp <%= (summary.total.total||0).toLocaleString('id-ID') %>
<%= t('admin.billing.summary.paid', 'Sudah Bayar') %>
<%= summary.paid.count||0 %>
Rp <%= (summary.paid.total||0).toLocaleString('id-ID') %>
<%= t('admin.billing.summary.unpaid', 'Belum Bayar') %>
<%= summary.unpaid.count||0 %>
Rp <%= (summary.unpaid.total||0).toLocaleString('id-ID') %>
<%= t('admin.billing.summary.collected_pct', '% Terkumpul') %>
<%= summary.total.count>0 ? Math.round((summary.paid.count/summary.total.count)*100) : 0 %>%
<%= t('common.reset', 'Reset') %>
<%= t('admin.billing.list', 'Daftar Tagihan') %> (<%= invoices.length %>)
0 dipilih
<% if (invoices.length===0) { %> <% } %> <% invoices.forEach((inv,i)=>{ %> <% }) %>
# <%= t('admin.billing.table.customer', 'Pelanggan') %> <%= t('admin.billing.table.period', 'Periode') %> <%= t('admin.billing.table.package', 'Paket') %> <%= t('admin.billing.table.amount', 'Jumlah') %> <%= t('admin.billing.table.status', 'Status') %> <%= t('admin.billing.table.paid_by', 'Dibayar Oleh') %> <%= t('admin.billing.table.paid_time', 'Waktu Bayar') %> <%= t('admin.billing.table.actions', 'Aksi') %>
<%= t('admin.billing.empty', 'Tidak ada tagihan. Generate tagihan bulanan terlebih dahulu.') %>
" data-period-month="<%= inv.period_month %>" data-period-year="<%= inv.period_year %>" data-amount="<%= Number(inv.amount || 0) %>" data-package="<%= String(inv.package_name || '-').replace(/\"/g, '"') %>" > <%= i+1 %>
<%= inv.customer_name %>
<%= inv.customer_phone||inv.genieacs_tag||'' %>
<% const mns = (lang === 'en') ? ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'] : ['Jan','Feb','Mar','Apr','Mei','Jun','Jul','Agt','Sep','Okt','Nov','Des']; %> <%= mns[inv.period_month-1] %> <%= inv.period_year %> <% if (inv.status === 'unpaid' && inv.isolate_day) { %>
Jatuh tempo tgl <%= inv.isolate_day %>
<% } %>
<%= inv.package_name||'-' %> <% if (Number(inv.discount_amount||0) > 0) { %>
Rp <%= Number(inv.amount_before_discount||0).toLocaleString('id-ID') %>
<% } %>
Rp <%= inv.amount.toLocaleString('id-ID') %>
<% if (Number(inv.discount_amount||0) > 0) { %>
Diskon <%= inv.discount_type==='percent' ? (inv.discount_value+'%') : '' %> -Rp <%= Number(inv.discount_amount).toLocaleString('id-ID') %>
<% } %> <% if (inv.status === 'unpaid' && inv.qris_amount_unique) { %>
Nominal unik: Rp <%= Number(inv.qris_amount_unique || inv.amount || 0).toLocaleString('id-ID') %> <% if (inv.qris_unique_code) { %> Kode <%= String(inv.qris_unique_code).padStart(3, "0") %> <% } %>
<% } %>
<% if(inv.status==='paid'){%> <%= t('admin.billing.status.paid', 'Lunas') %> <%}else if(inv.status==='void'){%> <%= t('admin.bill.st_void','Hangus') %> <%}else{%> <%= t('admin.billing.status.unpaid', 'Belum Bayar') %><%}%>
<%= inv.paid_by_name||'-' %>
<% if (inv.notes) { %> <% const _pf = (String(inv.notes).match(/\/(?:admin\/media\/payment-proof|uploads\/payment_proofs)\/([A-Za-z0-9._-]+)/) || [])[1]; %> <% const _nc = String(inv.notes).replace(/Bukti bayar:\s*\S+/gi, '').replace(/AUTO-QRIS:\s*cocok nominal unik Rp\s*([0-9.]+)[^\n]*/gi, 'QRIS otomatis tercocokkan Rp $1').replace(/https?:\/\/\S*\/uploads\/payment_proofs\/\S+/gi, '').replace(/[ \t]{2,}/g, ' ').replace(/\n{2,}/g, '\n').trim(); %> <% if (_nc) { %>
<%= _nc %>
<% } %> <% if (_pf) { %> Lihat Bukti<% } %> <% } %>
<%= inv.paid_at ? new Date(inv.paid_at).toLocaleString('id-ID',{day:'2-digit',month:'short',year:'numeric',hour:'2-digit',minute:'2-digit'}) : '-' %> <% if(inv.status==='unpaid'){%> <% if (inv.qris_amount_unique) { %> <% } %> <%}else{%> <%}%>
<% if(inv.status==='unpaid'){%> <% if (inv.qris_amount_unique) { %> <% } %> <%}else{%> <%= t('admin.bill.btn_print_a4','Cetak Faktur (A4)') %> <%= t('admin.bill.btn_print_thermal','Cetak Struk Thermal') %> <%= t('admin.bill.btn_invoice_pdf','Invoice PDF') %> <% if (inv.customer_phone) { %> <% } %> <%}%>
<%= t('admin.billing.generate_monthly', 'Generate Tagihan Bulanan') %>
<%= t('admin.billing.generate_hint', 'Tagihan akan dibuat untuk semua pelanggan aktif yang belum memiliki tagihan di periode yang dipilih.') %>
<%= t('admin.bill.btn_discount','Beri Diskon') %>

<%= t('admin.bill.pct_hint',' Persen dihitung dari harga dasar (sebelum PPN/USO). Kode unik QRIS akan digenerate ulang.') %>
<%= t('admin.billing.actions.mark_paid', 'Tandai Lunas') %>

<% const payByDefault = (typeof session !== 'undefined' && session.isCashier) ? (`Kasir ${(session.cashierName || '').trim()}` + ((session.cashierUsername || '').trim() ? ` (@${String(session.cashierUsername).trim()})` : '')).trim() : 'Admin'; %>