Skip to main content

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

General Ledger General Ledger adalah pusat akuntansi SNISHOP ERP. Setiap transaksi keuangan — baik dari input manual maupun otomatis dari modul POS, Manufacturing, Expense, Invoice, atau Payroll — tercatat di jurnal umum menggunakan prinsip double-entry bookkeeping. Sistem ini mengelola Chart of Accounts (COA) hierarkis 3 level dengan 5 tipe akun, memvalidasi keseimbangan debit-kredit hingga toleransi Rp 0.01, dan mendukung lifecycle jurnal dari draft hingga reversal.

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 GLAccount melalui account_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_id memungkinkan 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, FinancialRecord dapat dipetakan ke akun COA tertentu untuk keperluan konsolidasi laporan keuangan.
  • GLJournalEntry ↔ FinancialRecord: Keduanya terhubung melalui reference_id dan reference_type. POS transaction misalnya, membuat FinancialRecord dengan source='pos' dan secara paralel dapat menghasilkan GLJournalEntry dengan reference_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 entitas GLAccount 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 entitas GLJournalEntry 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 array line_items memiliki struktur sebagai berikut: Contoh line items untuk transaksi pembayaran invoice:
Validasi: 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

  1. Validasi: total debit = total kredit (toleransi Rp 0.01)
  2. Set posted_at = now, posted_by = current user
  3. Update status: draft → posted
  4. Update saldo akun di buku besar

Reverse Jurnal

  1. Buat jurnal baru dengan debits/credits yang dibalik
  2. Reference ke jurnal original
  3. Mark jurnal original sebagai reversed
  4. 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):
Salah (tidak 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

Untuk akun dengan saldo normal debit (Asset, Expense):
  • Debit menambah saldo
  • Kredit mengurangi saldo
Untuk akun dengan saldo normal kredit (Liability, Equity, Revenue):
  • 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

Jika tidak seimbang, berarti ada kesalahan pencatatan yang perlu diperbaiki sebelum membuat laporan keuangan.

Color Coding

Entity Schema — Account (Rekening/Kantong)

Entitas Account 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

Entitas FinancialRecord 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

Hanya pembayaran dengan verification_status = 'verified' yang membuat jurnal.

POS Transaction → FinancialRecord

POS transaction tidak langsung membuat GLJournalEntry, tapi membuat FinancialRecord dengan source='pos'. Laporan P&L menggabungkan keduanya.

Reference Types

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