Skip to main content

title: “Financial Reports” description: “Empat laporan keuangan inti (Laba Rugi, Neraca, Neraca Saldo, Anggaran vs Aktual) dengan mesin dual-source, audit completeness, dan fitur cetak di SNISHOP ERP.”

Financial Reports

Financial Reports Halaman Financial Reports adalah pusat pelaporan keuangan SNISHOP ERP. Empat laporan inti dihasilkan secara otomatis dari data transaksi yang sudah tercatat, dengan mesin dual-source yang memprioritaskan Jurnal GL dan fallback ke Buku Kas jika data GL belum lengkap.

Arsitektur Pelaporan

Akses Halaman

URL: /finance → tab Laporan Empat tab laporan tersedia dalam grid layout (2 kolom di mobile, 4 kolom di desktop):

KPI Summary

Empat kartu ringkasan ditampilkan di bagian atas, dihitung secara real-time via useMemo:

Seleksi Periode

Lima preset periode plus opsi kustom: Mode custom menampilkan dua field <input type="date"> (start/end) dengan tombol “Apply” untuk menerapkan filter.

Data Loading

Empat entity di-fetch secara paralel via cachedRequest:
Cache layer (cachedRequest dari requestManager) memastikan data yang sama tidak di-fetch berulang dalam satu sesi. Tombol Refresh memanggil loadData() untuk memuat ulang seluruh data.

Laporan Laba Rugi (Profit & Loss)

Mesin Dual-Source

Laporan Laba Rugi menggunakan strategi dual-source untuk memastikan akurasi data: Prioritas sumber data:

Audit Completeness

Sistem menilai kualitas data menggunakan evaluateCompleteness() dari financeLogic: Banner status ditampilkan di bagian atas laporan untuk transparansi.

Struktur Laporan

Utilitas yang Digunakan

Metrik yang Dilacak


Laporan Neraca (Balance Sheet)

Persamaan Akuntansi

Neraca disusun berdasarkan persamaan akuntansi fundamental:
Sistem memvalidasi persamaan ini secara otomatis. Jika totalAssets !== totalLiabilities + totalEquity (toleransi < Rp 1), banner peringatan ditampilkan.

Struktur Neraca

Perhitungan dari GL

Neraca dihitung dari saldo GL Account dan journal entries yang sudah diposting:

Laporan Neraca Saldo (Trial Balance)

Fungsi

Neraca Saldo列出 seluruh akun GL dengan total debit dan kredit masing-masing. Laporan ini digunakan untuk memverifikasi bahwa pembukuan seimbang sebelum menghasilkan laporan keuangan lainnya.

Tampilan

Color Coding

Setiap tipe akun memiliki warna yang berbeda untuk memudahkan identifikasi:

Validasi

Di bagian bawah laporan, total debit dan kredit dijumlahkan dan dibandingkan. Jika selisih > Rp 1, status “Tidak Seimbang” ditampilkan sebagai peringatan bahwa ada ketidaksesuaian dalam pembukuan.

Laporan Anggaran vs Aktual

Arsitektur Pencocokan

Laporan ini membandingkan anggaran yang sudah dibuat dengan realisasi aktual. Sistem menggunakan CATEGORY_ALIASES untuk fuzzy matching antara kategori budget dan kategori expense aktual:

Contoh Alias

Metrik Per Item

Status Badge

Visualisasi Chart

Laporan ini menampilkan Recharts <BarChart> dengan grouped bars: Progress bar juga ditampilkan per item untuk visualisasi persentase pemakaian secara cepat.

Fitur Cetak & Export

Setiap laporan mendukung cetak langsung via window.print():
  • Tombol “Cetak” di toolbar laporan
  • Header print-only menampilkan nama perusahaan dan rentang periode
  • Elemen non-esensial disembunyikan via atribut data-print-hide
  • Wrapper print-report mengontrol layout saat print
  • CSS @media print memastikan hasil cetak rapi tanpa elemen UI

Format Export


Integrasi Cross-Module

Laporan keuangan mengonsumsi data dari seluruh modul keuangan. Jurnal GL dari manufacturing dan expense, Financial Record dari POS dan invoice, serta Budget dari Budget Planner — semuanya mengalir ke mesin pelaporan untuk dihasilkan sebagai laporan terpadu.

Best Practices

Tutup Buku Bulanan

  1. Pastikan seluruh transaksi sudah tercatat dan diposting
  2. Rekonsiliasi semua rekening bank
  3. Review Neraca Saldo — pastikan status “Seimbang”
  4. Generate Laporan Laba Rugi dan Neraca
  5. Analisis variansi dari Anggaran vs Aktual

Analisis Keuangan

  • Bandingkan laporan dengan anggaran untuk identifikasi penyimpangan
  • Bandingkan antar periode untuk melihat tren
  • Perhatikan status completeness (Audited vs Provisional)
  • Gunakan data Laba Rugi untuk evaluasi profitabilitas

Kepatuhan

  • Simpan laporan dalam arsip untuk audit
  • Pastikan persamaan akuntansi di Neraca selalu seimbang
  • Prepare laporan pajak dari data yang sudah diaudit
  • Review Trial Balance sebelum closing periode

Entity Relationship Diagram


Tabel Schema

FinancialReportSnapshot

Snapshot hasil generate laporan keuangan. Menyimpan data laporan dalam format JSON agar dapat di-replay tanpa menghitung ulang dari sumber data.

FinancialRecord

Buku kas utama yang mencatat semua transaksi keuangan dari 8 sumber berbeda. Merupakan fallback source untuk laporan Laba Rugi ketika jurnal GL belum lengkap.

GLJournalEntry

Jurnal umum General Ledger. Sumber utama (primary source) untuk laporan Laba Rugi. Hanya entry berstatus posted yang digunakan dalam perhitungan laporan.

GLAccount

Chart of Accounts (COA) dengan struktur hierarki 3 level. Digunakan untuk klasifikasi akun di Neraca, Neraca Saldo, dan mapping ke jurnal GL.

State Machine — Siklus Hidup Laporan

Status Completeness


Sequence Diagrams

1. Generate Laporan Keuangan

2. Export & Cetak Laporan

3. Laporan Anggaran vs Aktual (Budget Matching)


Enum Tables

report_type (FinancialReportSnapshot)

source (FinancialRecord)

reference_type (FinancialRecord)

reference_type (GLJournalEntry)

period (Budget)

account_type (GLAccount)

status (GLJournalEntry)

completeness (Laporan)

budget_status (Budget)

Format Export


RBAC — Hak Akses Laporan Keuangan

Catatan RBAC

  • Admin / Owner memiliki akses penuh ke seluruh entitas keuangan termasuk manipulasi COA dan jurnal
  • Finance Staff dapat melihat dan generate laporan serta export, namun tidak dapat menghapus snapshot atau mengubah COA
  • Accounting dapat memposting jurnal draft namun tidak dapat mengubah struktur COA
  • Viewer / Auditor hanya memiliki akses baca terhadap laporan yang sudah di-generate
  • RLS pada FinancialRecord memastikan user hanya melihat data sesuai company_id atau data miliknya sendiri
  • RLS pada FinancialReportSnapshot, GLJournalEntry, dan GLAccount menggunakan filter company_id untuk isolasi multi-tenant