title: “Expenses” description: “Pencatatan dan pelaporan pengeluaran perusahaan — 8 sumber transaksi, kategori expense, integrasi GL, dan filtering di SNISHOP ERP.”
Expenses

FinancialRecord dengan source yang menunjukkan asal transaksi, memungkinkan tracking dan filtering berdasarkan modul penghasil. Halaman ini terintegrasi langsung dengan General Ledger melalui auto-journaling dan dengan Budget Planner untuk variance analysis.
Arsitektur Expense Tracking
FinancialRecord untuk Expense
Field FinancialRecord
8 Sumber Expense
Filter & Search
Filter Options
Search
AI Expense Extraction
Extract from Text
Extract from Image
Extracted Fields
Expense Categories
11 Kategori
Reporting
Expense by Category
Expense by Source
Expense by Period
Integration
General Ledger
- Auto-journaling saat expense approved
- COA mapping via
resolveExpenseGLMapping() - Reconciliation marker jika gagal
Budget Planner
- Track actual vs planned per kategori
- Alert saat threshold tercapai
- Variance analysis
Account
- Update
current_balancesaat expense posted - Multi-account support
AI Engine
- Gemini 1.5 Flash (primary)
- OpenAI GPT-4o-mini (fallback)
- Vision extraction dari gambar/PDF
Best Practices
Categorization
- Pilih kategori yang tepat untuk laporan akurat
- Gunakan
is_inventory_materialuntuk bahan baku inventori - Separate personal vs business expense
Documentation
- Upload receipt untuk setiap expense
- Clear description
- Timely recording
Review
- Review expense mingguan
- Check budget variance bulanan
- Investigasi unusual expenses
Entity Schema & Relasi
Entity Relationship Diagram
Tabel Schema
Expense — 22 Field
FinancialRecord — 22 Field
GLJournalEntry — 14 Field
State Machine — Expense Lifecycle
Transisi Status
Sequence Diagrams
1. Expense Submission
2. Approval Flow (Multi-Level)
3. GL Posting Setelah Expense Approved
Enum Tables
expense_status
expense_category
is_inventory_material
expense_payment_method
approval_status
gl_journal_status
RBAC — Hak Akses Expense
Catatan RBAC
- Multi-tenant isolation: Setiap expense terikat pada
company_id, data antar perusahaan terisolasi sepenuhnya. - Approval delegation: Manager hanya bisa approve expense dari divisinya sendiri, sesuai
amount_limitsdi ApprovalWorkflow. - Draft protection: Hanya pemilik expense atau admin yang bisa mengedit/menghapus expense berstatus
draft. - Immutable setelah paid: Expense berstatus
paidtidak bisa diubah — koreksi dilakukan via journal reversal. - Idempotency: Setiap transaksi keuangan menggunakan
idempotency_keyuntuk mencegah duplikasi.
