Skip to main content

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

Expenses

Expenses Halaman Expenses menampilkan seluruh pengeluaran perusahaan dari berbagai sumber: input manual, POS, manufacturing, inventory, dan AI extraction. Setiap expense tercatat sebagai 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 Options

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_balance saat 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_material untuk 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_limits di ApprovalWorkflow.
  • Draft protection: Hanya pemilik expense atau admin yang bisa mengedit/menghapus expense berstatus draft.
  • Immutable setelah paid: Expense berstatus paid tidak bisa diubah — koreksi dilakukan via journal reversal.
  • Idempotency: Setiap transaksi keuangan menggunakan idempotency_key untuk mencegah duplikasi.