Mode Gelap
Budget vs Actual Report
Perbandingan budget plan vs realisasi aktual dari jurnal Accounting. Penting untuk financial control — identify variance, over-budget items, dan track budget compliance per period.
Path menu: Laporan → Pendapatan & Keuangan → Budget vs Actual (/reports/budget-vs-actual)
Prasyarat
Modul Budget harus sudah ter-setup di Accounting:
- Cost Centers di-define (mis. HOTEL, F&B, ADMIN)
- Budget di-create per Cost Center per Fiscal Year
- Budget Lines (akun + period + planned amount) di-input
- Budget di-approve (status
APPROVED) supaya bisa di-track - Jurnal aktual ter-post dengan
cost_center_idmatching budget cost center
Catatan: Hotel-side report ini adalah wrapper proxy — data sumber ada di Accounting module. Setup awal (Cost Center, Budget) dilakukan di Accounting, hotel admin cukup view di sini.
Filter
| Field | Keterangan |
|---|---|
| Tahun Fiskal | Fiscal year (default tahun berjalan) |
| Status | APPROVED (default) / SUBMITTED / CLOSED / DRAFT / Semua |
| Cost Center | Filter spesifik (mis. HOTEL only). Kosongkan untuk semua |
Klik Terapkan Filter untuk reload list budget.
Workflow
1. Pilih Budget
Daftar budget yang match filter ditampilkan sebagai card grid:
- Nama budget
- Fiscal Year + Cost Center
- Status badge
Klik card → load detail vs-actual.
2. Lihat Summary (5 Kartu KPI)
| Kartu | Keterangan |
|---|---|
| Budget | Nama + FY + Cost Center |
| Total Planned | Sum planned (atau revised kalau ada) semua budget lines |
| Total Actual | Sum realisasi dari journal entries posted |
| Variance | Total Planned − Total Actual (positif = under budget = baik, negatif = over budget = warning) |
| Over Budget Lines | Count line yg actual > planned |
3. Detail per Periode × Akun
Tabel per row = 1 budget line:
- Period — format
YYYY-MM(mis. 2026-01) - Account — code + name dari Chart of Account
- Planned — original budget
- Revised — kalau ada budget revision
- Actual — realisasi dari journal entries
- Variance —
effective_planned − actual(effective = revised kalau ada, else planned) - Variance % —
variance / planned × 100
Color coding:
- 🟢 Green badge — variance positif (under budget)
- ⚪ Gray badge — variance kecil (<5%, dalam expected range)
- 🔴 Red badge + row highlighted — over budget
Footer row — total kolom untuk overview cepat.
4. Export CSV
Tombol Export CSV — download data lengkap untuk archive atau analysis di Excel/Sheets.
Perhitungan Variance
effective_planned = revised_amount jika ada, else planned_amount
variance = effective_planned - actual_amount
variance_pct = (variance / effective_planned) × 100
variance > 0 → Under budget (BAIK)
variance < 0 → Over budget (WARNING)
variance ≈ 0 → On targetUse Case
Financial Control Bulanan
Manager keuangan review akhir bulan:
- Identify lines yang over budget signifikan
- Investigate root cause (mis. utility cost naik karena AC sering rusak — link ke Maintenance Report)
- Adjust budget revision atau action operational
Year-end Variance Analysis
Owner/CFO review tahunan:
- Total budget achievement
- Cost center yang konsisten over budget → re-baseline FY berikutnya
- Identify accounts yang under-utilized → re-allocate
Budget Revision Trigger
Kalau variance >20% di mid-year → trigger budget revision di Accounting:
- Submit revision dengan justification
- Setelah approved,
revised_amountter-populate - Report ini akan pakai
revised_amountuntuk variance calculation
Tips
- Bandingkan dengan period sebelumnya — kalau available, untuk lihat trend variance
- Drill ke jurnal — buka modul Accounting → Journal Entries dengan filter cost_center + period untuk lihat detail transaksi yang berkontribusi ke actual
- Cost Center "HOTEL" — best practice setup di Accounting awal supaya budget hotel kelihatan terisolasi dari F&B/Admin
- Posting timing — actual hanya count journal entries yang status
POSTED(bukan draft) — pastikan accounting team rajin posting jurnal
Troubleshooting
| Masalah | Penyebab | Solusi |
|---|---|---|
| Budget tidak muncul di list | Status DRAFT di Accounting | Submit & approve dulu di Accounting |
| Total Actual = 0 | Jurnal belum posted, atau cost_center mismatch | Verify journal status POSTED + cost_center_id sesuai |
| "Failed to reach accounting service" | Backend Accounting down atau config base_url salah | Hubungi support team |
| Budget revision tidak masuk Variance | revised_amount belum di-set di budget line | Edit budget line di Accounting, submit revision |
| Authorization error | JWT user expired | Logout & login ulang |
Path Implementasi (Internal)
- Backend: hotel-side proxy
BudgetReportCtrldilbr-hotel-api/app/http/controllers/BudgetReportCtrl.go— forward JWT user kelbr-accounting-api - Endpoint:
GET /api/hotel/reports/budget-vs-actual?fiscal_year=&status=&cost_center_id=&limit=GET /api/hotel/reports/budget-vs-actual/:id(vs-actual detail)GET /api/hotel/reports/budget-vs-actual/cost-centers(helper untuk filter dropdown)
- Sumber data:
lbr-accounting-api— modul Budget (V11+ migration di Accounting schema) - SSO menu: id 481, parent 467 (Pendapatan & Keuangan)