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 Akun | Kepala Akun | Sifat Saldo Normal | Klasifikasi Sistem (type) | Contoh Akun Default |
|---|---|---|---|---|
| Aset (Asset) | 1xxx | Debet | ASSET | 1000 Kas, 1101 Bank BCA, 1200 Piutang Usaha, 1300 Persediaan Barang |
| Kewajiban (Liability) | 2xxx | Kredit | LIABILITY | 2000 Hutang Usaha / PPN Keluaran |
| Ekuitas / Modal (Equity) | 3xxx / 8xxx | Kredit | EQUITY | 8000 Modal Disetor |
| Pendapatan (Revenue) | 4xxx | Kredit | REVENUE | 4000 Pendapatan Penjualan |
| Beban / Biaya (Expense) | 5xxx / 6xxx | Debet | EXPENSE | 5000 HPP, 6000 Beban Fee Gateway |
A. Isolasi Tenant Mandiri (D61 / Migrasi V67)
Sejak keputusan arsitektur D61, entitas akun bersifat per-tenant (STRICT) dengan ketentuan:
- Unik per Tenant: Validasi keunikan kode akun berlaku kombinasi
UNIQUE (tenant_id, code)dengan kondisideleted_at IS NULL. Dua tenant berbeda dapat memiliki kode akun yang sama tanpa saling mengganggu. - Template Global & Salinan Otomatis: Sistem menyediakan template akun global (
tenant_id IS NULL) berkode1000s/d8000. Saat sebuah tenant baru diprovisi (ensureAccounts(Tenant)), sistem menyalin seluruh template tersebut ke ruang kerja tenant bersangkutan. - 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 Akun | Ruang Lingkup Penggunaan | Field Khusus Terkait | Pemetaan Buku Besar Default |
|---|---|---|---|
CASH | Kas fisik di laci mesin kasir POS toko (Cash Drawer) atau brankas kas operasional cabang (Petty Cash). | Nama Akun, Kode (CASH, KAS-TOKO). | 1000 (Kas) |
BANK | Rekening 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:
- Rekening Penampung: Nilai bersih transaksi dialokasikan ke
PaymentAccountyang menjadi penampung dana (misal rekening bank penampung QRIS). - 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:
- Parameter pada level tenant aktif (
paramKey + tenantId). - Fallback parameter tingkat global (
paramKeydengantenantId IS NULL). - Fallback kode standar bawaan sistem.
Tabel Master Kunci Pemetaan Akun:
| Parameter Key | Kode Akun Default | Nama Akun COA | Digunakan Pada Modul / Transaksi |
|---|---|---|---|
accounting.mapping.PA.CASH | 1000 | Kas | Rekening kas penerimaan POS tunai dan pengeluaran kas operasional. |
accounting.mapping.PA.<CODE> | 1101 (misal PA.BCA_VA) | Bank BCA / Rekening Khusus | Rekening bank spesifik sesuai kode akun rekening pembayaran. |
accounting.mapping.AR | 1200 | Piutang Usaha | Pengakuan piutang atas faktur penjualan Sales Order dan POS. |
accounting.mapping.REVENUE | 4000 | Pendapatan Penjualan | Pengakuan omzet penjualan barang dagangan (sebelum pajak). |
accounting.mapping.TAX.OUTPUT | 2000 | PPN Keluaran | Penampung kewajiban pajak pertambahan nilai dari faktur penjualan. |
accounting.mapping.COGS.DEBIT | 5000 | HPP (Beban Pokok Penjualan) | Debet beban pokok saat pengiriman barang pesanan keluar gudang. |
accounting.mapping.COGS.CREDIT | 1300 | Persediaan Barang | Kredit persediaan barang saat barang keluar gudang menuju pelanggan. |
accounting.mapping.GR.DEBIT | 1300 | Persediaan Barang | Debet persediaan barang saat penerimaan fisik barang dari supplier (Goods Receipt). |
accounting.mapping.GR.CREDIT | 2000 | Hutang Usaha | Kredit pengakuan kewajiban hutang kepada supplier atas barang yang diterima. |
accounting.mapping.AP.DEBIT | 2000 | Hutang Usaha | Debet pelunasan hutang kepada supplier saat uang ditransfer keluar (Payment OUT). |
accounting.mapping.fee | 6000 | Beban Fee Gateway | Pengakuan biaya administrasi/MDR transaksi non-tunai. |
accounting.mapping.ADJ.LOSS.DEBIT | 5000 | HPP / Beban Selisih Stok | Debet beban kerugian atas selisih opname stok fisik yang hilang/rusak. |
accounting.mapping.ADJ.LOSS.CREDIT | 1300 | Persediaan Barang | Kredit pengurangan nilai persediaan barang akibat opname defisit. |
accounting.mapping.ADJ.GAIN.DEBIT | 1300 | Persediaan Barang | Debet penambahan aset persediaan barang akibat opname surplus barang. |
accounting.mapping.ADJ.GAIN.CREDIT | 5000 | HPP / Pendapatan Selisih Stok | Kredit pengurang beban pokok atas temuan surplus barang opname. |
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.