Lewati ke konten utama

Bagan Akun (COA), Rekening Kas/Bank & Pemetaan Akun

Bagan Akun (Chart of Accounts / COA) dan Rekening Pembayaran (Payment Account) adalah pondasi arsitektur keuangan Git Demo ERP. Modul ini memastikan seluruh transaksi operasional—penjualan kasir, pesanan grosir, penerimaan logistik barang, pengeluaran beban kantor, hingga penyesuaian stok—dapat dikonversikan secara otomatis dan akurat ke dalam pembukuan berpasangan (double-entry bookkeeping).


1. Bagan Akun Standar (Chart of Accounts / Account)

Bagan Akun mengklasifikasikan seluruh pos keuangan perusahaan ke dalam 5 kelompok akun universal standar akuntansi:

Kelompok AkunKepala AkunSifat Saldo NormalKlasifikasi Sistem (type)Contoh Akun Default
Aset (Asset)1xxxDebetASSET1000 Kas, 1101 Bank BCA, 1200 Piutang Usaha, 1300 Persediaan Barang
Kewajiban (Liability)2xxxKreditLIABILITY2000 Hutang Usaha / PPN Keluaran
Ekuitas / Modal (Equity)3xxx / 8xxxKreditEQUITY8000 Modal Disetor
Pendapatan (Revenue)4xxxKreditREVENUE4000 Pendapatan Penjualan
Beban / Biaya (Expense)5xxx / 6xxxDebetEXPENSE5000 HPP, 6000 Beban Fee Gateway

A. Isolasi Tenant Mandiri (D61 / Migrasi V67)

Sejak keputusan arsitektur D61, entitas akun bersifat per-tenant (STRICT) dengan ketentuan:

  1. Unik per Tenant: Validasi keunikan kode akun berlaku kombinasi UNIQUE (tenant_id, code) dengan kondisi deleted_at IS NULL. Dua tenant berbeda dapat memiliki kode akun yang sama tanpa saling mengganggu.
  2. Template Global & Salinan Otomatis: Sistem menyediakan template akun global (tenant_id IS NULL) berkode 1000 s/d 8000. Saat sebuah tenant baru diprovisi (ensureAccounts(Tenant)), sistem menyalin seluruh template tersebut ke ruang kerja tenant bersangkutan.
  3. Kustomisasi Fleksibel: Setiap tenant bebas menambah sub-akun baru, mengubah nama akun, atau menonaktifkan akun yang tidak digunakan (isActive = false) tanpa mempengaruhi tenant lain.

B. Relasi Hierarki Akun Induk & Anak (parentId)

Entitas Account mendukung relasi hierarki bertingkat (self-referencing via parent_id):

  • Akun Induk (Header Account): Akun tingkat atas yang berfungsi sebagai pengelompokan ringkasan (misal: 1100 Kas & Bank).
  • Akun Detail / Transaksional (Detail Account): Akun tingkat bawah yang menampung posting jurnal transaksi langsung (misal: 1101 Bank BCA, 1102 Bank Mandiri).

Struktur hierarki ini memungkinkan penyusunan Laporan Neraca (Balance Sheet) dan Laporan Laba Rugi (Profit & Loss) yang dapat diringkas (collapsed) atau diperluas (expanded) sesuai kebutuhan audit manajemen.


2. Pengelolaan Rekening Kas & Bank (PaymentAccount)

Rekening Pembayaran (PaymentAccount) merepresentasikan media penyimpanan fisik atau rekening keuangan tempat dana tunai dan saldo bank perusahaan disimpan secara aktual.

Karakteristik Tipe Rekening:

Tipe AkunRuang Lingkup PenggunaanField Khusus TerkaitPemetaan Buku Besar Default
CASHKas fisik di laci mesin kasir POS toko (Cash Drawer) atau brankas kas operasional cabang (Petty Cash).Nama Akun, Kode (CASH, KAS-TOKO).1000 (Kas)
BANKRekening bank komersial perusahaan untuk transaksi transfer keluar/masuk, kliring, dan mutasi giro.bankName, accountNo, accountName.1101 (Bank BCA / akun bank spesifik)

Setiap pergerakan saldo pada PaymentAccount (penerimaan penjualan kasir, pelunasan tagihan pelanggan, pembayaran biaya operasional, atau transfer ke supplier) selalu diimbangi dengan entri jurnal otomatis ke akun COA aset likuiditas yang bersesuaian.


3. Metode Pembayaran Pelanggan (PaymentMethod)

Metode Pembayaran mengatur bagaimana pelanggan melunasi tagihan saat berbelanja di kasir POS maupun pesanan Sales Order.

Konfigurasi Biaya Transaksi (Fee Gateway / MDR):

Saat pelanggan membayar menggunakan kanal non-tunai (misal QRIS atau Kartu Kredit EDC), penyedia jasa pembayaran sering kali memotong biaya layanan:

  • Biaya Tetap (feeFixed): Potongan nominal tetap per transaksi (misal: Rp 2.000 per transaksi transfer virtual account).
  • Biaya Persentase (feePercent): Potongan persentase dari total nilai belanja (misal: MDR QRIS 0,7% atau MDR Kartu Kredit 1,8%).

Asosiasi ke Rekening & Akun Beban Fee:

  1. Rekening Penampung: Nilai bersih transaksi dialokasikan ke PaymentAccount yang menjadi penampung dana (misal rekening bank penampung QRIS).
  2. Akun Beban MDR: Biaya transaksi secara otomatis didebet ke akun beban operasional pembayaran (default 6000 Beban Fee Gateway), sehingga nilai kas/bank yang tercatat bersih mencerminkan mutasi rekening koran bank riil.

4. Pemetaan Akun Dinamis via GlobalParameter (accounting.mapping.*)

Untuk menghindari penulisan kode akun secara baku di level aplikasi (hardcoded code), sistem menggunakan mekanisme konfigurasi dinamis berbasis GlobalParameter.

Service akuntansi (JournalService, ExpenseService, StockPicking) membaca kunci pemetaan akun secara otomatis dengan prioritas:

  1. Parameter pada level tenant aktif (paramKey + tenantId).
  2. Fallback parameter tingkat global (paramKey dengan tenantId IS NULL).
  3. Fallback kode standar bawaan sistem.

Tabel Master Kunci Pemetaan Akun:

Parameter KeyKode Akun DefaultNama Akun COADigunakan Pada Modul / Transaksi
accounting.mapping.PA.CASH1000KasRekening kas penerimaan POS tunai dan pengeluaran kas operasional.
accounting.mapping.PA.<CODE>1101 (misal PA.BCA_VA)Bank BCA / Rekening KhususRekening bank spesifik sesuai kode akun rekening pembayaran.
accounting.mapping.AR1200Piutang UsahaPengakuan piutang atas faktur penjualan Sales Order dan POS.
accounting.mapping.REVENUE4000Pendapatan PenjualanPengakuan omzet penjualan barang dagangan (sebelum pajak).
accounting.mapping.TAX.OUTPUT2000PPN KeluaranPenampung kewajiban pajak pertambahan nilai dari faktur penjualan.
accounting.mapping.COGS.DEBIT5000HPP (Beban Pokok Penjualan)Debet beban pokok saat pengiriman barang pesanan keluar gudang.
accounting.mapping.COGS.CREDIT1300Persediaan BarangKredit persediaan barang saat barang keluar gudang menuju pelanggan.
accounting.mapping.GR.DEBIT1300Persediaan BarangDebet persediaan barang saat penerimaan fisik barang dari supplier (Goods Receipt).
accounting.mapping.GR.CREDIT2000Hutang UsahaKredit pengakuan kewajiban hutang kepada supplier atas barang yang diterima.
accounting.mapping.AP.DEBIT2000Hutang UsahaDebet pelunasan hutang kepada supplier saat uang ditransfer keluar (Payment OUT).
accounting.mapping.fee6000Beban Fee GatewayPengakuan biaya administrasi/MDR transaksi non-tunai.
accounting.mapping.ADJ.LOSS.DEBIT5000HPP / Beban Selisih StokDebet beban kerugian atas selisih opname stok fisik yang hilang/rusak.
accounting.mapping.ADJ.LOSS.CREDIT1300Persediaan BarangKredit pengurangan nilai persediaan barang akibat opname defisit.
accounting.mapping.ADJ.GAIN.DEBIT1300Persediaan BarangDebet penambahan aset persediaan barang akibat opname surplus barang.
accounting.mapping.ADJ.GAIN.CREDIT5000HPP / Pendapatan Selisih StokKredit pengurang beban pokok atas temuan surplus barang opname.
Fleksibilitas Penyesuaian Akun

Tenant yang menerapkan struktur penomoran akun khusus (misal akun Piutang Usaha menggunakan kode 1130 bukan 1200) cukup memperbarui nilai parameter pada menu Konfigurasi > Parameter Global. Sistem secara otomatis menerapkan kode akun baru pada seluruh transaksi posting berikutnya tanpa perlu mengubah kode sumber backend.