Skip to content

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:

  1. Cost Centers di-define (mis. HOTEL, F&B, ADMIN)
  2. Budget di-create per Cost Center per Fiscal Year
  3. Budget Lines (akun + period + planned amount) di-input
  4. Budget di-approve (status APPROVED) supaya bisa di-track
  5. Jurnal aktual ter-post dengan cost_center_id matching 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

FieldKeterangan
Tahun FiskalFiscal year (default tahun berjalan)
StatusAPPROVED (default) / SUBMITTED / CLOSED / DRAFT / Semua
Cost CenterFilter 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)

KartuKeterangan
BudgetNama + FY + Cost Center
Total PlannedSum planned (atau revised kalau ada) semua budget lines
Total ActualSum realisasi dari journal entries posted
VarianceTotal Planned − Total Actual (positif = under budget = baik, negatif = over budget = warning)
Over Budget LinesCount 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
  • Varianceeffective_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 target

Use 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_amount ter-populate
  • Report ini akan pakai revised_amount untuk 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

MasalahPenyebabSolusi
Budget tidak muncul di listStatus DRAFT di AccountingSubmit & approve dulu di Accounting
Total Actual = 0Jurnal belum posted, atau cost_center mismatchVerify journal status POSTED + cost_center_id sesuai
"Failed to reach accounting service"Backend Accounting down atau config base_url salahHubungi support team
Budget revision tidak masuk Variancerevised_amount belum di-set di budget lineEdit budget line di Accounting, submit revision
Authorization errorJWT user expiredLogout & login ulang

Path Implementasi (Internal)

  • Backend: hotel-side proxy BudgetReportCtrl di lbr-hotel-api/app/http/controllers/BudgetReportCtrl.go — forward JWT user ke lbr-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)

Butuh bantuan lebih lanjut? Hubungi tim support kami.