Skip to main content

title: “Expense Management” description: “Pencatatan pengeluaran dengan 11 kategori, approval workflow berbasis role, auto-journaling ke GL, anti-double-counting untuk bahan baku inventori, dan budget tracking di SNISHOP ERP.”

Expense Management

Expense Management Expense Management menangani seluruh pencatatan pengeluaran perusahaan dengan 11 kategori expense, approval workflow berbasis role, dan auto-journaling ke General Ledger. Sistem ini menerapkan mekanisme anti-double-counting melalui flag is_inventory_material untuk mencegah bahan baku inventori dihitung sebagai expense sekaligus HPP. Setiap expense yang disetujui otomatis membuat GLJournalEntry dan mengurangi current_balance di rekening terkait.

Arsitektur Expense Management

11 Kategori Expense

*Kredit selalu ke akun kas/bank yang dipilih.

Anti-Double-Counting: is_inventory_material

Flag is_inventory_material mencegah bahan baku yang sudah tercatat di inventori dihitung ulang sebagai expense.

Kapan Gunakan is_inventory_material = true?

Approval Workflow

Role-Based Auto-Approval

Approval States

Auto-Journaling ke GL

Setiap expense yang disetujui otomatis membuat GLJournalEntry melalui fungsi resolveExpenseGLMapping().

GL Mapping Logic

Account Resolution

Sistem menggunakan Indonesian name hints untuk mencari akun COA yang sesuai:

Reconciliation Marker

Jika auto-journaling gagal (misalnya akun COA tidak ditemukan), sistem tidak diam-diam gagal. Sebaliknya:
  • Expense tetap di-approve
  • Catatan expense ditandai: RECONCILIATION_REQUIRED
  • Admin harus membuat jurnal manual nanti

Record Expense

Step-by-Step

  1. Klik “Record Expense”
  2. Isi form:
  1. Submit expense
  2. Sistem validasi dan proses approval

Idempotency

Setiap expense memiliki idempotency_key (max 128 chars) untuk mencegah double-posting. Jika submit dengan key yang sama, sistem akan return hasil yang sama tanpa membuat expense baru.

Budget Tracking

Budget per Kategori

Setiap kategori expense bisa dipasang budget:

Alert Levels

Variance Analysis

Recurring Expense

Untuk pengeluaran rutin (sewa bulanan, gaji, asuransi tahunan):

Contoh Recurring

Expense Reports

By Category

By Period

By Payment Method

Export & Import

Integration

Bank Integration

  • Auto-import bank transactions (jika tersedia)
  • Match dengan expense
  • Rekonsiliasi

Accounting Integration

  • Sync ke general ledger (otomatis)
  • COA mapping
  • Journal entries
  • Financial reports

Best Practices

Documentation

  • Always upload receipt untuk audit trail
  • Clear description untuk setiap expense
  • Proper categorization untuk laporan akurat
  • Timely recording (sedekat mungkin dengan tanggal transaksi)

Approval

  • Follow approval workflow
  • Document justification untuk expense besar
  • Keep approval records
  • Regular review oleh manager

Budget Management

  • Set realistic budgets berdasarkan historical data
  • Monitor regularly (mingguan/bulanan)
  • Adjust as needed (kuartalan)
  • Review variances dan investigasi penyebab

Entity Relationship Diagram

Berikut adalah diagram relasi antar-entitas yang terlibat dalam modul Expense Management. Diagram ini menunjukkan bagaimana data mengalir dari pengajuan expense hingga menjadi jurnal akuntansi di General Ledger.

Penjelasan Relasi


Complete Entity Schema Tables

Expense Entity (22 Fields)

Entitas Expense adalah inti dari modul Expense Management. Setiap baris mewakili satu pengajuan pengeluaran.

ApprovalWorkflow Entity (7 Fields + Nested Array)

Entitas ApprovalWorkflow mendefinisikan aturan dan alur approval untuk berbagai jenis dokumen (expense, leave, purchase order, dll).

Struktur approval_levels[] (Nested Array)

Field approval_levels adalah array of objects yang mendefinisikan setiap tingkat approval: Contoh konfigurasi approval_levels untuk expense:

ApprovalRequest Entity (12 Fields + Nested Array)

Entitas ApprovalRequest melacak progres approval untuk satu dokumen spesifik (expense, leave request, dll).

Struktur approval_history[] (Nested Array)

FinancialRecord Entity (20 Fields)

Entitas FinancialRecord adalah ledger universal yang mencatat semua arus kas (income, expense, transfer). Expense yang disetujui otomatis membuat FinancialRecord baru.

GLJournalEntry Entity (14 Fields + Nested Array)

Entitas GLJournalEntry mencatat entri jurnal akuntansi ke General Ledger. Setiap expense yang disetujui menghasilkan satu GLJournalEntry melalui resolveExpenseGLMapping().

Struktur line_items[] (Nested Array)


Expense Lifecycle State Machine

Berikut adalah diagram state machine yang menggambarkan seluruh lifecycle expense dari pembuatan hingga pembayaran. State machine ini mengontrol transisi yang valid dan mencegah transisi ilegal.

Tabel Transisi State


Approval Workflow — Detailed Sequence Diagram

Diagram berikut menggambarkan alur approval secara detail, termasuk interaksi antara user, server, approval workflow engine, dan GL posting.

Detail Mekanisme Auto-Approval

Auto-approval terjadi tanpa membuat ApprovalRequest jika requester memiliki role tertentu. Ini menghemat satu round-trip ke database dan mempercepat proses untuk user yang memang memiliki otoritas penuh.

Expense Category — Detail Lengkap

Berikut adalah penjelasan detail untuk ke-11 kategori expense beserta GL mapping, contoh transaksi, dan perlakuan khusus untuk is_inventory_material.

Aturan GL Mapping untuk raw_material

Kategori raw_material adalah satu-satunya kategori yang GL mapping-nya berubah tergantung flag is_inventory_material:

Deep Dive: is_inventory_material Anti-Double-Counting

Masalah yang Dipecahkan

Tanpa flag is_inventory_material, sistem akan mengalami double-counting pada bahan baku inventori:
  1. Saat beli bahan baku: Expense tercatat → masuk P&L sebagai beban → mengurangi laba
  2. Saat bahan dipakai produksi: HPP (Harga Pokok Produksi) tercatat → masuk P&L sebagai beban lagi
Akibatnya, beban tercatat dua kali untuk bahan yang sama: sekali sebagai expense, sekali sebagai HPP. Ini membuat laba kotor terlihat lebih kecil dari kenyataan dan laporan keuangan tidak akurat.

Solusi: Flag is_inventory_material

Panduan Penggunaan Flag

Dampak ke Laporan Keuangan


Referensi Silang Modul