<%- include('partials/sidebar', { activePage: 'reports', company }) %>
<%= t('admin.nav.finance_report', 'Laporan Keuangan') %>
Excel PDF (Sblm Pajak) PDF (Sstlh Pajak)
<%= t('admin.fin.gross','Pemasukan (Bruto)') %> <%= filterYear %>
Rp <%= (cashInYear||0).toLocaleString('id-ID') %>
Bulan ini: Rp <%= (cashInThisMonth||0).toLocaleString('id-ID') %>
Pengeluaran <%= filterYear %>
- Rp <%= (expensesYear||0).toLocaleString('id-ID') %>
Bulan ini: Rp <%= (expensesMonth||0).toLocaleString('id-ID') %>
PPh Badan (<%= finance.pph %>%)
- Rp <%= Math.round(ply.pph).toLocaleString('id-ID') %>
Laba sblm pajak: Rp <%= Math.round(ply.sebelumPph).toLocaleString('id-ID') %>
<%= t('admin.fin.net','Laba Bersih') %> <%= filterYear %>
Sebelum Pajak: Rp <%= Math.round(ply.sebelumPph).toLocaleString('id-ID') %>
Sesudah Pajak: Rp <%= Math.round(ply.bersih).toLocaleString('id-ID') %>
Bulan ini (sstlh): Rp <%= Math.round(pm.bersih).toLocaleString('id-ID') %>
Piutang Belum Bayar
Rp <%= (pendingAmount||0).toLocaleString('id-ID') %>
Pelanggan aktif: <%= activeCustomers %>
Laporan Laba / Rugi — Pajak & Retribusi <%= filterYear %>
<%= t('admin.fin.gross','Pemasukan (Bruto)') %>Rp <%= Math.round(ply.bruto).toLocaleString('id-ID') %>
DPP — Dasar Pengenaan PajakRp <%= Math.round(ply.dpp).toLocaleString('id-ID') %>
PPN Keluaran (<%= finance.ppn %>%) disetor, bukan pendapatanRp <%= Math.round(ply.ppn).toLocaleString('id-ID') %>
Pengeluaran- Rp <%= Math.round(ply.keluar).toLocaleString('id-ID') %>
USO (<%= finance.uso %>%)- Rp <%= Math.round(ply.uso).toLocaleString('id-ID') %>
BHP (<%= finance.bhp %>%)- Rp <%= Math.round(ply.bhp).toLocaleString('id-ID') %>
Laba Bersih Sebelum PajakRp <%= Math.round(ply.sebelumPph).toLocaleString('id-ID') %>
PPh Badan (<%= finance.pph %>%)- Rp <%= Math.round(ply.pph).toLocaleString('id-ID') %>
Laba Bersih Sesudah PajakRp <%= Math.round(ply.bersih).toLocaleString('id-ID') %>
Tagihan hangus (void) tahun ini: <%= voidedYearCount||0 %> tagihan · Rp <%= (voidedYearAmount||0).toLocaleString('id-ID') %> — dikecualikan dari pendapatan (audit).
Rekap Laba / Rugi per Bulan <%= filterYear %> — export & cetak tiap bulan
<% const _mn = (lang === 'en') ? ['January','February','March','April','May','June','July','August','September','October','November','December'] : ['Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember']; let _tBruto=0,_tKeluar=0,_tPpn=0,_tUso=0,_tBhp=0,_tSebelum=0,_tPph=0,_tBersih=0; %> <% monthlyFinance.forEach(r => { _tBruto+=r.bruto; _tKeluar+=r.keluar; _tPpn+=r.ppn; _tUso+=r.uso; _tBhp+=r.bhp; _tSebelum+=r.sebelumPph; _tPph+=r.pph; _tBersih+=r.bersih; %> <% }) %>
Bulan Pemasukan Pengeluaran PPN USO BHP Laba Sblm Pajak PPh Badan Laba Sstlh Pajak <%= t('common.actions','Aksi') %>
<%= _mn[r.month-1] %> Rp <%= Math.round(r.bruto).toLocaleString('id-ID') %> Rp <%= Math.round(r.keluar).toLocaleString('id-ID') %> Rp <%= Math.round(r.ppn).toLocaleString('id-ID') %> Rp <%= Math.round(r.uso).toLocaleString('id-ID') %> Rp <%= Math.round(r.bhp).toLocaleString('id-ID') %> Rp <%= Math.round(r.sebelumPph).toLocaleString('id-ID') %> Rp <%= Math.round(r.pph).toLocaleString('id-ID') %> Rp <%= Math.round(r.bersih).toLocaleString('id-ID') %>
TOTAL <%= filterYear %> Rp <%= Math.round(_tBruto).toLocaleString('id-ID') %> Rp <%= Math.round(_tKeluar).toLocaleString('id-ID') %> Rp <%= Math.round(_tPpn).toLocaleString('id-ID') %> Rp <%= Math.round(_tUso).toLocaleString('id-ID') %> Rp <%= Math.round(_tBhp).toLocaleString('id-ID') %> Rp <%= Math.round(_tSebelum).toLocaleString('id-ID') %> Rp <%= Math.round(_tPph).toLocaleString('id-ID') %> Rp <%= Math.round(_tBersih).toLocaleString('id-ID') %>
Baris TOTAL = penjumlahan tiap bulan; cocokkan dengan Laporan Laba / Rugi (tahun) di atas untuk audit.
<%= t('admin.reports.monthly_revenue', 'Pendapatan Bulanan') %> <%= filterYear %>
Rincian Pengeluaran (<%= filterYear %>)
<% if (typeof expensesByCategory === 'undefined' || expensesByCategory.length===0) { %>
Belum ada pengeluaran dicatat
<% } %> <% if(typeof expensesByCategory !== 'undefined') expensesByCategory.forEach(c=>{ %>
<%= c.category %>
Rp <%= Number(c.total).toLocaleString('id-ID') %>
<% }) %>
<%= t('admin.reports.top_unpaid', 'Piutang Tertinggi') %>
<% if (topUnpaid.length===0) { %>
<%= t('admin.reports.all_paid', 'Semua pelanggan sudah lunas') %>
<% } %> <% topUnpaid.slice(0,5).forEach(u=>{ %>
<%= u.name %>
<%= u.phone %>
Rp <%= Number(u.total_unpaid).toLocaleString('id-ID') %>
<% }) %>
<%= t('admin.reports.recent_payments', 'Pembayaran Terakhir') %>
<% const mn2 = (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']; %> <% if(recentPayments.length===0){%><%}%> <% recentPayments.forEach(p=>{ %> <% }) %>
<%= t('admin.reports.table.customer','Pelanggan') %><%= t('admin.reports.table.period','Periode') %><%= t('admin.reports.table.amount','Jumlah') %><%= t('admin.reports.table.recorded_by','Dicatat Oleh') %><%= t('admin.reports.table.time','Waktu') %>
<%= t('admin.reports.no_payments','Belum ada pembayaran') %>
<%= p.customer_name %> <%= mn2[p.period_month-1] %> <%= p.period_year %> Rp <%= Number(p.amount).toLocaleString('id-ID') %> <%= p.paid_by_name||'-' %> <%= p.paid_at ? new Date(p.paid_at).toLocaleString('id-ID',{day:'2-digit',month:'short',hour:'2-digit',minute:'2-digit'}) : '-' %>
Pengaturan Pajak & Retribusi — dihitung otomatis
PPh Badan, PPN, USO & BHP dihitung otomatis dari nilai ini.