Pelanggan & Billing
Customer Lifecycle

Tambah pelanggan, aktifkan layanan, buat invoice, dan catat pembayaran.

Panduan ini dipakai admin, billing, dan CS untuk menjaga data pelanggan, paket, status layanan, dan tagihan tetap akurat.

Screenshot mockup pelanggan dan billing

Fungsi Modul

Semua data pelanggan dan tagihan harus tercatat dari sini.

Data Pelanggan

Menyimpan nama, kontak, alamat, paket, status layanan, lokasi pemasangan, dan identitas teknis.

Paket & Layanan

Menghubungkan pelanggan dengan paket internet, harga, periode billing, dan tanggal jatuh tempo.

Invoice

Membuat tagihan bulanan, menandai overdue, dan mengirim reminder pembayaran.

Pembayaran

Mencatat metode bayar, tanggal bayar, nominal, bukti, operator, dan status lunas.

Tambah Pelanggan Baru

Ikuti langkah ini untuk PSB atau input pelanggan existing.

Buka menu `Pelanggan`, klik `Tambah Pelanggan`.
Isi nama lengkap sesuai identitas pelanggan atau nama perusahaan.
Isi nomor WhatsApp aktif untuk notifikasi tiket, invoice, dan reminder.
Isi alamat pemasangan sedetail mungkin: jalan, blok, patokan, koordinat bila ada.
Pilih paket internet, harga, tanggal mulai layanan, dan tanggal jatuh tempo.
Isi data teknis jika sudah tersedia: OLT, port, ONU SN, ODP, VLAN, IP, atau PPPoE.
Set status awal: `Prospek`, `Menunggu Instalasi`, `Aktif`, `Suspend`, atau `Nonaktif`.
Klik `Simpan`, lalu cek detail pelanggan untuk memastikan paket dan kontak benar.
Pada detail pelanggan, bagian `Identitas` bisa mengedit latitude/longitude atau paste link Google Maps. Tab `Portal` menyediakan tombol `Generate Email` untuk membuat mailbox Virtualmin dan menyimpan email ke pelanggan existing. Untuk migrasi massal dari Sisbro, buka tab `Import`, pilih `Sumber CSV: Sisbro`, upload CSV delimiter `;`, lalu jalankan `Preview / Test`. Error merah harus diperbaiki sebelum import; warning kuning memberi solusi seperti alamat fallback atau username PPPoE kosong. Untuk pelanggan baru yang butuh instalasi, lanjutkan ke proses PSB: buat jadwal teknisi, siapkan material gudang, mapping ONU, lalu aktifkan billing. Jika daftar belum menampilkan perubahan terbaru, klik tombol `Refresh` di toolbar Pelanggan. Jika gagal, sistem menampilkan pesan apakah masalahnya sesi login, permission, endpoint, atau server.

Koreksi Paket Salah Registrasi

Dipakai hanya ketika operator salah memilih paket saat input awal pelanggan.

Buka detail pelanggan, bagian `Paket Langganan`, lalu klik `Koreksi`.
Fitur hanya tampil dan dapat diproses oleh Super Admin.
Pilih paket baru yang aktif dan sesuai tipe layanan pelanggan.
Isi alasan koreksi yang jelas, misalnya: operator salah memilih paket saat registrasi.
Biarkan opsi `Update invoice belum lunas` aktif jika tagihan awal belum dibayar perlu dihitung ulang.
Biarkan opsi `Catat ke tiket terbuka` aktif agar tiket PSB/trouble pelanggan mendapat catatan paket baru.
Koreksi akan ditolak jika ada invoice yang sudah lunas, memiliki tanggal bayar, atau sudah punya payment record. Untuk kasus itu gunakan proses upgrade/downgrade atau adjustment agar histori billing tetap aman. Pesan error akan menjelaskan apakah masalahnya permission Super Admin, paket tidak aktif, tipe layanan tidak cocok, alasan kurang jelas, atau invoice sudah punya pembayaran.

Invoice & Pembayaran

Buka `Billing` atau detail pelanggan.
Pilih periode tagihan, misalnya Juni 2026.
Pastikan harga paket, diskon, PPN, biaya tambahan, dan saldo deposit benar.
Klik `Generate Invoice`.
Cek nomor invoice, nominal, jatuh tempo, dan status `Belum Dibayar`.
Saat klik print/export PDF, invoice memakai template Klinik Tech/ION.NET: header logo, status bayar, dua kolom penagihan, ringkasan layanan, transaksi atau opsi pembayaran, dan footer note otomatis.
Untuk QA visual, admin dapat membuka `/invoice-template-preview` untuk melihat contoh invoice `Sudah Bayar` dan `Belum Bayar` sebelum dikirim ke pelanggan.
Untuk tagihan otomatis, buka `Pengaturan > Billing > Siklus & Tagihan`, aktifkan `Generate Tagihan Otomatis` dan `Notifikasi WA Saat Invoice Otomatis Dibuat` agar invoice recurring langsung masuk jalur Outbox WhatsApp.
Buka invoice pelanggan.
Klik `Catat Pembayaran`.
Isi nominal, metode bayar, tanggal bayar, referensi transfer, dan upload bukti bila ada.
Simpan. Status invoice berubah menjadi `Lunas` jika nominal sudah mencukupi.
Kirim notifikasi pembayaran sukses ke pelanggan jika channel aktif.
Filter invoice `Belum Dibayar` atau `Overdue`.
Pilih pelanggan yang akan diingatkan.
Klik kirim reminder via WhatsApp/Email sesuai pengaturan.
Pantau status kirim agar nomor atau email bermasalah bisa diperbaiki.
Untuk invoice otomatis yang sudah terlanjur dibuat, admin server dapat menjalankan `php artisan billing:notify-invoices --tenant=ID --since="YYYY-MM-DD" --dry-run`, lalu ulangi tanpa `--dry-run --limit=50 --delay=5` agar WA dikirim satu per satu. Command ini tidak mengubah toggle/config notifikasi global.
Pastikan kebijakan suspend tenant sudah benar.
Filter invoice overdue melewati batas toleransi.
Cek pengecualian pelanggan VIP, komplain aktif, atau janji bayar.
Ubah status layanan menjadi `Suspend` atau jalankan otomasi bila tersedia.

Contoh Kasus

PSB

Pelanggan baru Home 20M

Admin tambah pelanggan, pilih paket, jadwalkan teknisi, gudang keluarkan ONT, NOC mapping ONU, billing generate invoice pertama.

Overdue

Invoice telat bayar

Billing filter overdue, kirim reminder, catat janji bayar. Jika lewat toleransi, status layanan bisa disuspend sesuai kebijakan tenant.

Checklist Data Pelanggan

Data dianggap siap operasional jika kontak, alamat, paket, harga, tanggal jatuh tempo, status layanan, dan data teknis utama sudah lengkap.