title: “General Ledger” description: “Chart of Accounts hierarkis, jurnal double-entry, posting lifecycle, buku besar per akun, trial balance, dan auto-journaling dari lintas modul di SNISHOP ERP.”
General Ledger

Arsitektur General Ledger
Entity Relationship Diagram (ERD)
Diagram berikut menunjukkan relasi antar entitas inti dalam modul General Ledger beserta entitas pendukung dari modul keuangan lainnya. Relasi ini menggambarkan bagaimana data mengalir dari rekening kas (Account), pencatatan transaksi (FinancialRecord), chart of accounts (GLAccount), hingga ke jurnal umum (GLJournalEntry).
Penjelasan Relasi
- GLJournalEntry → GLAccount: Satu jurnal memiliki banyak line items, masing-masing line item mereferensikan satu
GLAccountmelaluiaccount_id. Ini adalah inti dari double-entry bookkeeping — setiap jurnal minimal memiliki 2 line items (satu debit, satu kredit). - GLAccount → GLAccount (self-referential): COA bersifat hierarkis. Field
parent_account_idmemungkinkan akun anak merujuk ke akun parent-nya. Contoh: “BCA Rupiah” (level 2) → parent → “Kas & Bank” (level 1) → parent → “Aset Lancar” (level 0). - FinancialRecord → Account: Setiap pencatatan transaksi keuangan berasal dari suatu rekening/kantong (
Account). Untuk transfer, ada rekening tujuan (transfer_to_account_id). - FinancialRecord → GLAccount: Pada konteks bisnis,
FinancialRecorddapat dipetakan ke akun COA tertentu untuk keperluan konsolidasi laporan keuangan. - GLJournalEntry ↔ FinancialRecord: Keduanya terhubung melalui
reference_iddanreference_type. POS transaction misalnya, membuatFinancialRecorddengansource='pos'dan secara paralel dapat menghasilkanGLJournalEntrydenganreference_type='manual'atau melalui proses rekonsiliasi.
Chart of Accounts (COA)
5 Tipe Akun
3 Level Hierarki
Diagram Hierarki COA Lengkap
Berikut adalah visualisasi pohon COA yang menunjukkan 5 tipe akun beserta contoh 3 level hierarki untuk masing-masing tipe. Struktur ini digunakan SNISHOP ERP untuk mengklasifikasikan seluruh transaksi keuangan PT Selera Pedas Nusantara.Field GLAccount — Schema Lengkap
Schema berikut diambil langsung dari definisi entitasGLAccount di sistem SNISHOP ERP.
RLS (Row-Level Security): Create, Read, Update, Delete — semua terbatas pada pengguna yang terautentikasi dengan akses ke
company_id yang sesuai.
Jurnal Umum (GLJournalEntry)
Field Jurnal — Schema Lengkap
Schema berikut diambil langsung dari definisi entitasGLJournalEntry di sistem SNISHOP ERP.
RLS (Row-Level Security): Create, Read, Update, Delete — semua terbatas pada pengguna yang terautentikasi dengan akses ke
company_id yang sesuai.
Line Item Structure (Sub-Schema)
Setiap elemen dalam arrayline_items memiliki struktur sebagai berikut:
Contoh line items untuk transaksi pembayaran invoice:
Math.abs(totalDebit - totalCredit) < 0.01
Journal Entry Lifecycle
State Machine Detail — Aturan Transisi
Berikut adalah aturan lengkap untuk setiap transisi state pada jurnal. Setiap transisi memiliki pre-condition yang harus dipenuhi sebelum sistem mengizinkan perubahan status.Diagram Transisi State Lengkap
Posting Jurnal
- Validasi: total debit = total kredit (toleransi Rp 0.01)
- Set
posted_at= now,posted_by= current user - Update status: draft → posted
- Update saldo akun di buku besar
Reverse Jurnal
- Buat jurnal baru dengan debits/credits yang dibalik
- Reference ke jurnal original
- Mark jurnal original sebagai
reversed - Post jurnal reversal
Validasi Double-Entry
Setiap jurnal yang masuk ke sistem SNISHOP ERP harus memenuhi aturan validasi double-entry bookkeeping berikut. Validasi dilakukan secara otomatis oleh sistem pada saat create dan sebelum posting.Aturan Validasi
Contoh Validasi Double-Entry
Benar (balanced):Penanganan Selisih Pembulatan (Rounding)
Dalam praktik, selisih hingga Rp 0.01 (satu sen) ditoleransi karena pembulatan desimal pada perhitungan pajak atau kurs. Jika selisih lebih dari Rp 0.01, sistem akan menolak posting dan menampilkan pesan error beserta detail selisihnya.Sequence Diagram — Alur Jurnal Manual
Berikut adalah sequence diagram lengkap untuk proses input jurnal manual oleh akuntan melalui UI SNISHOP ERP.Sequence Diagram — Auto-Journaling dari Modul
Berikut adalah sequence diagram yang menunjukkan bagaimana berbagai modul di SNISHOP ERP secara otomatis menghasilkan jurnal ke General Ledger tanpa input manual dari akuntan.Buku Besar Per Akun
Buku besar menampilkan seluruh transaksi yang mempengaruhi satu akun tertentu beserta saldo berjalan.Field Buku Besar
Saldo Berjalan
- Debit menambah saldo
- Kredit mengurangi saldo
- Kredit menambah saldo
- Debit mengurangi saldo
Trial Balance
Trial balance menampilkan ringkasan saldo dari seluruh akun pada periode tertentu. Total debit dan kredit harus seimbang.Field Trial Balance
Validasi
Color Coding
Entity Schema — Account (Rekening/Kantong)
EntitasAccount merepresentasikan rekening kas, bank, e-wallet, atau kantong dana yang digunakan dalam transaksi keuangan. Berbeda dengan GLAccount (Chart of Accounts) yang merupakan akun pembukuan, Account adalah rekening fisik/digital tempat uang benar-benar berada.
Entity Schema — FinancialRecord
EntitasFinancialRecord adalah pencatatan transaksi keuangan yang berasal dari berbagai sumber (manual, AI, POS, Manufacturing, Distribution, dll). Entitas ini melengkapi GLJournalEntry — sementara GLJournalEntry menggunakan prinsip double-entry ke COA, FinancialRecord lebih fokus pada pencatatan arus kas riil dari/to rekening (Account).
Auto-Journaling dari Modul Lain
SNISHOP ERP otomatis membuat jurnal dari transaksi di modul lain:Expense → GL
11 Expense Categories:- salary, raw_material, operational, production_cost
- travel, meals, accommodation, equipment
- office_supplies, training, other
Manufacturing → GL (Two-Phase)
Best-effort posting: GL failure tidak membatalkan production. Jika gagal, ditandai
RECONCILIATION_REQUIRED.
Invoice Payment → GL
verification_status = 'verified' yang membuat jurnal.
POS Transaction → FinancialRecord
POS transaction tidak langsung membuat GLJournalEntry, tapi membuatFinancialRecord dengan source='pos'. Laporan P&L menggabungkan keduanya.
Reference Types
Filter & Search
Export
Tips Penggunaan
- Review trial balance secara berkala untuk memastikan pencatatan sudah seimbang
- Jangan menunda posting jurnal terlalu lama agar saldo di buku besar selalu update
- Gunakan deskripsi jurnal yang jelas supaya mudah ditelusuri saat audit
- Manfaatkan filter untuk melihat transaksi pada periode atau akun tertentu
- Untuk koreksi, gunakan reverse (jangan edit jurnal yang sudah posted)
- Export trial balance bulanan untuk arsip dan audit
