| Kejadian | Catat sebagai | Catatan |
|---|---|---|
| Pelanggan bayar invoice | Invoice → + Bayar | JANGAN lewat Deposit Masuk |
| Pelanggan/agen titip dana di luar invoice | Deposit Masuk | status Aktif selama belum dipakai |
| Bayar/top-up saldo supplier (NSK, trip.com, maskapai, muasasah) | Deposit Keluar | bukan Pengeluaran! |
| Gaji, listrik, air, internet, ATK, PBB, marketing | Pengeluaran | inilah yang memotong laba |
| Komisi ke agen | Komisi Agen → tombol Bayar | saldo terpotong saat Sudah Dibayar |
| Uang kembali ke pelanggan | Refund → Ke Pelanggan | |
| Uang kembali dari supplier | Refund → Dari Supplier | |
| Staf/pimpinan menalangi pakai uang pribadi | Pengajuan Dana → tipe Reimbursement | JANGAN "Permintaan Dana + Cairkan" — lihat bagian 6 |
| Cabang terima uang tunai dari pelanggan | Invoice → + Bayar, rekening Kas <Cabang> | lihat bagian 12 |
| Pindah uang antar rekening milik sendiri (termasuk setoran kas cabang) | Deposit → tombol ⇄ Setoran Kas | lihat bagian 10 & 12 |
Sistem hanya menandai invoice Batal — pembayarannya TIDAK ikut batal otomatis. Setiap membatalkan invoice berbayar, wajib jawab:
| Situasi | Langkah |
|---|---|
| Pembayaran memang salah input (uangnya tak pernah ada) | Buka detail invoice → Batalkan pembayarannya juga (void) |
| Uang dikembalikan ke pelanggan | Catat Refund → Ke Pelanggan (pilih rekening yang keluar uang) |
| Uang dipindah jadi titipan untuk order berikutnya | Refund → Ke Pelanggan LALU Deposit Masuk pihak & nominal sama |
Contoh: 1 pax batal dari rombongan 47 pax, sisanya berangkat. Refund di sistem = pergerakan kas saja — tidak mengoreksi laba invoice. Wajib DUA langkah:
Tujuan: saldo sistem = saldo rekening koran. Dikerjakan admin, hasil dilaporkan singkat ke Fajar.
Kas <Cabang> (uang tunai yang dipegang cabang) tidak punya rekening koran — cocokkan saldonya dengan kas fisik / laporan cabang. Saldo yang menggantung lama = ada setoran yang belum jalan (lihat bagian 12).Sejak 15 Agustus 2026 setiap jalur kas punya tempat menyimpan bukti: pembayaran invoice, deposit, setoran kas, komisi, pengeluaran, dan refund (dua yang terakhir baru — sebelumnya tidak ada tempatnya sama sekali).
+ Bukti untuk baris yang belum berbukti dan Ganti untuk yang sudah. Boleh dilakukan walau periodenya sudah tutup buku — melengkapi berkas tidak mengubah angka./bukti/...), bukan tautan Google Drive/WhatsApp yang bisa mati. Sistem menolak alamat dari luar.Titipan pelanggan (Deposit Masuk) tampil di Laporan → Kewajiban Titipan Pelanggan selama statusnya Aktif. Supaya laporan benar:
Digunakan.Dikembalikan.Kadang staf atau pimpinan menalangi dulu dengan uang sendiri — tagihan mendesak, booking fee, bonus. Pegang satu aturan:
Sebabnya: tombol Cairkan Dana berarti "kas perusahaan keluar hari ini". Kalau dipakai padahal uangnya dari kantong pribadi, dua hal rusak sekaligus — saldo sistem jadi lebih kecil daripada saldo bank sungguhan, dan biayanya tercatat dua kali begitu penggantiannya dibayar.
Selesai, biaya tercatat sekali di tanggal pembayaran.Satu pengeluaran = satu jalur pendanaan.
Permintaan Dana dan Reimbursement bukan dua pengeluaran berbeda — keduanya dua cara mendanai satu pengeluaran yang sama:
| Dipakai saat | Urutan uang | |
|---|---|---|
| Permintaan Dana | belum dibayar, minta dana dulu | perusahaan bayar → belanja |
| Reimbursement | sudah dibayar pakai uang pribadi | orang bayar → perusahaan ganti |
Jadi untuk satu tagihan listrik, satu gaji, satu booking fee — hanya boleh ada satu yang aktif. Kalau keduanya ada dan sama-sama cair, uang keluar dua kali untuk barang yang sama.
Jangan ditunda. Begitu dana turun, tidak ada lagi yang ingat baris mana pasangan baris mana — dan pengajuan lama yang masih Disetujui ikut tercetak di Surat Permintaan Dana, sehingga dana bisa cair untuk kebutuhan yang sebenarnya sudah dibayar.
Cara membatalkannya: buka Detail pengajuan lama → tombol Batalkan → isi alasan yang menyebut tanggal talangan dan ID pengajuan penggantinya, contoh:
Sudah ditalangi uang pribadi Fajar 26/07/2026; penggantian via reimbursement PGJ-20260726xxxxxx
Status berubah jadi Dibatalkan (bukan Ditolak — bukan penolakan, tapi koreksi), jejaknya tetap terlihat di daftar, dan barisnya otomatis keluar dari Surat Permintaan Dana. Menyebut ID pengganti itu penting: itulah yang membuat baris batal bisa ditelusuri ke penggantinya tanpa bertanya siapa pun.
Berlaku sebaliknya juga: kalau Permintaan Dana sudah cair lalu belanjanya ternyata dibayar pribadi, jangan buat reimbursement — dananya sudah di tangan perusahaan, tinggal diserahkan ke yang menalangi lalu dipertanggungjawabkan lewat LPJ.
Cara cepat memeriksanya: di halaman Pengajuan, lihat baris berstatus Disetujui, cari nominal kembar, lalu buka Detail-nya dan baca Uraian — jangan menilai dari angka saja.
Yang benar-benar kembar punya ciri: uraian menyebut kebutuhan yang sama, dan salah satunya bertipe Reimbursement sementara pasangannya Permintaan Dana.
Tidak semua talangan itu biaya operasional:
| Yang ditalangi | Catat sebagai |
|---|---|
| Tagihan, ATK, bensin, jamuan, bonus | Reimbursement → jadi biaya operasional |
| Biaya tambahan tiket untuk invoice tertentu | Edit invoice → tambahkan ke Modal; penggantian uangnya lewat Deposit Keluar |
| Deposit/jaminan ke supplier | Deposit Keluar ke supplier, saat uang diganti |
Kalau terlanjur salah catat (sudah "Cairkan" padahal uangnya pribadi):
Dibatalkan, bukan Ditolak: keduanya sama-sama tidak dihitung, tapi Ditolak berarti penyetuju menolak, sedangkan ini koreksi pencatatan atas pengeluaran yang sah.Dibatalkan otomatis mengeluarkannya dari saldo maupun dari biaya, dan barisnya tampil dicoret di daftar. Pengajuan lama yang sudah Selesai dibiarkan apa adanya sebagai riwayat — memang tidak bisa dibatalkan, dan tidak memengaruhi angka mana pun.Cabang under-control (Makassar, Balikpapan, Yogyakarta, Cibubur, Pekalongan, Samarinda, Wonosobo) tidak punya pembukuan terpisah — semua transaksinya dicatat langsung di sistem ini:
Kas <Cabang> (bagian 12); setorannya ke rekening pusat lewat tombol ⇄ Setoran Kas (bagian 10).Disetujui, cari nominal kembar. Kalau sebuah kebutuhan sudah ditalangi dan diajukan sebagai Reimbursement, pengajuan lamanya harus sudah Dibatalkan (bagian 6). Kalau tidak, dana dicairkan untuk sesuatu yang sudah dibayar.Menunggu Review / Menunggu Approval — setujui, tolak, atau batalkan. Jangan biarkan menyeberang bulan.Data pusat hidup di Cloudflare D1 (database) dan R2 (berkas bukti) — tidak ada Spreadsheet. Pengaman utamanya D1 Time Travel: Cloudflare menyimpan riwayat perubahan database dan bisa memulihkannya ke titik waktu mana pun dalam 30 hari terakhir, otomatis, tanpa perlu dicek harian.
| Lapisan | Kapan | Isi |
|---|---|---|
| D1 Time Travel | otomatis, terus-menerus | seluruh database, bisa dipulihkan ke titik waktu mana pun ≤ 30 hari |
Ekspor .xlsx manual | Laporan → Backup, minimal tiap tutup bulan (bagian 8 no. 8) | seluruh data, bentuk Excel — simpan di tempat aman di luar Cloudflare |
| Audit Log | otomatis, di dalam database | setiap penulisan berikut isinya — bahan rekonstruksi manual |
Ekspor XLSX rutin itu penting: dialah satu-satunya cadangan untuk kerusakan yang baru ketahuan lebih dari 30 hari kemudian.
/bukti/<folder>/<berkas>; berkasnya sendiri hidup di bucket mmb-pusat-berkas. R2 tidak punya time travel — jangan pernah menghapus isinya.mmb-pusat-app), bukan di cadangan ini.penghitung di dalam database, ikut tercadangkan, dan pulih sendiri dari data kalau hilang.Jangan buru-buru memulihkan database. Sistem append-only: koreksi resmi = void + input ulang / edit (bagian 2, bagian 6). Audit Log merekam setiap penulisan berikut isinya, jadi baris yang dirusak bisa direkonstruksi tangan tanpa menyentuh database.
Dikerjakan pemegang akses teknis (owner), dari komputer yang sudah terpasang wrangler:
wrangler d1 time-travel info mmb-pusat-keuanganwrangler d1 time-travel restore mmb-pusat-keuangan --timestamp=<waktu sebelum kerusakan>Kerusakan baru ketahuan setelah lebih dari 30 hari? Time Travel tidak menjangkaunya — andalkan ekspor XLSX terakhir + Audit Log, dan rekonstruksi lewat mekanisme input resmi.
uji pemulihan.Memindahkan uang antar rekening milik sendiri — termasuk setoran tunai cabang ke rekening pusat (bagian 12) — dicatat lewat halaman Deposit → tombol ⇄ Setoran Kas: satu form, sistem menulis sepasang deposit berstatus Digunakan otomatis (keluar dari rekening asal, masuk ke rekening tujuan), tanpa membakar nomor kwitansi.
Aktif. Saldonya memang benar, tapi dua laporan langsung berbohong:| Laporan | Yang muncul | Kenyataannya |
|---|---|---|
| Deposit Tersimpan di Supplier | uang parkir di supplier | tidak ada supplier mana pun |
| Kewajiban Titipan Pelanggan | titipan pelanggan | tidak ada pelanggan mana pun |
Keduanya masuk mini-neraca Posisi Keuangan, jadi aset dan kewajiban sama-sama menggelembung. Tombol Setoran Kas memakai status Digunakan justru untuk menghindari itu: dari empat label status deposit, hanya Dibatalkan yang dikeluarkan dari saldo (bagian 5), sementara kedua laporan di atas hanya menyaring yang Aktif — jadi saldonya tetap bergerak tanpa mengotori laporan mana pun.
Salah pencet / salah nominal? Batalkan (void) kedua baris pasangannya — jangan salah satu saja — lalu ulangi dari form.
Paket umroh punya banyak komponen biaya yang angka pastinya baru ketahuan belakangan. Jangan merinci modal per komponen — pakainya begini:
Paket Umroh, deskripsi bebas ("Paket Umroh 12 Hari — hotel + tiket + visa + transport"), pax × harga jual per pax.Cabang under-control (Makassar, Balikpapan, dst. — bukan Medan, Medan partner mandiri) kadang menerima tunai lalu menyetorkannya ke rekening pusat:
Cash, rekening tujuan Kas <Cabang> (buat sekali di Master Rekening). Kwitansi bisa langsung dicetak; saldo "Kas <Cabang>" = uang yang masih dipegang cabang.Kas <Cabang> ke rekening pusat.