Invoice-Filament: Solusi Digital Otomatisasi Invoice, Pembayaran, dan Notifikasi Berbasis Laravel & Filament

Ringkasan Project

Invoice-Filament adalah aplikasi berbasis Laravel yang didesain khusus untuk memudahkan pengelolaan invoice (faktur) bisnis secara digital dan otomatis. Project ini memanfaatkan ekosistem Laravel serta Filament untuk menyediakan admin panel yang modern, responsif, dan mudah digunakan. Dengan dukungan berbagai fitur unggulan—mulai dari manajemen invoice, pembayaran online, hingga integrasi notifikasi WhatsApp—aplikasi ini cocok untuk bisnis UMKM hingga perusahaan yang membutuhkan otomasi proses penagihan dan pembayaran.

Fitur Utama & Penjelasan

1. Manajemen Invoice

Fitur ini memungkinkan pengguna:

  • Membuat, mengedit, dan menghapus invoice.
  • Menambahkan beberapa item ke dalam satu invoice, lengkap dengan jumlah (qty), harga, diskon, dan catatan.
  • Mengatur tanggal jatuh tempo untuk monitoring status tagihan.
  • Mendukung invoice berulang (recurring invoice) untuk kebutuhan tagihan berkala (misal: bulanan/tahunan).
  • Perhitungan otomatis total harga, diskon, dan outstanding.

2. Manajemen Item

Setiap invoice terdiri dari satu atau lebih item yang dapat dikelola:

  • CRUD (Create, Read, Update, Delete) item, lengkap dengan nama, satuan, harga, dan deskripsi.
  • Mendukung alias atau nama alternatif untuk item yang sama sehingga pencarian lebih fleksibel.

3. Manajemen Pembayaran

Pengguna dapat mencatat pembayaran pelanggan terhadap invoice:

  • Mendukung pembayaran penuh maupun cicilan (parsial).
  • Perhitungan otomatis sisa tagihan (outstanding).
  • Pilihan metode pembayaran: transfer bank, payment gateway (Midtrans), dan lainnya.
  • Integrasi Midtrans via Snap.js untuk pembayaran online, lengkap dengan notifikasi status sukses, pending, gagal, atau dibatalkan.
  • Pilihan rekening bank aktif untuk transfer, yang dapat dikelola sendiri oleh pengguna.

4. Dashboard & Statistik

Tersedia dashboard interaktif yang menampilkan:

  • Grafik pembayaran bulanan (line chart).
  • Pie chart metode pembayaran terpopuler.
  • Statistik dapat disesuaikan dengan role user/admin.

5. Konfigurasi & Template Pesan

Pengguna dapat mengelola template pesan untuk notifikasi otomatis:

  • Template dapat digunakan untuk notifikasi WhatsApp/email dengan placeholder dinamis ([Nama], [Email], dst).
  • Mendukung pengaturan provider WhatsApp (Wablas, Wanesia, Fontee).

6. Bank & Rekening

  • CRUD data rekening bank yang bisa dipilih saat pembayaran.
  • Hanya rekening aktif yang akan muncul pada pilihan pembayaran invoice.

7. Fitur Diskon

  • Setiap invoice atau recurring invoice dapat diberikan diskon dalam bentuk persen.
  • Sistem otomatis menghitung total harga setelah diskon.

8. Manajemen User & Tim (Team)

  • Mendukung multi-user dan multi-tenant (team), sehingga tiap user/tim bisa mengelola data invoice dan pembayaran secara terpisah.
  • Mendukung pengelolaan API token bila fitur API diaktifkan.

9. Validasi & Helper

  • Validasi dan helper tersedia dalam Bahasa Indonesia, memudahkan user memahami error dan petunjuk pengisian data.
  • Form dilengkapi placeholder, label, dan hint yang informatif.

Fitur Invoice Berulang (Recurring Invoice) dengan Job Scheduler

Penjelasan Singkat:
Fitur invoice berulang memungkinkan sistem secara otomatis membuat dan mengirim invoice sesuai jadwal (mingguan/bulanan/tahunan) menggunakan Laravel Scheduler. Proses ini dijalankan melalui job (task) yang akan mengecek data recurring invoice dan membuat invoice baru secara otomatis.

Cara Kerja:

  • Sistem menjalankan job (misal: GenerateRecurringInvoiceJob) yang dieksekusi otomatis oleh Laravel Scheduler.
  • Scheduler akan berjalan setiap menit, mengecek recurring invoice, dan menerbitkan invoice baru sesuai jadwal.

Cara Menjalankan Laravel Scheduler di Berbagai Control Panel Hosting

Agar fitur invoice berulang berjalan otomatis, Anda perlu mengaktifkan scheduler di server hosting dengan perintah berikut:

php artisan schedule:run

Jalankan perintah di atas setiap menit (* * * * * pada cron).

Cara Setup di Berbagai Hosting Panel:

1. CPanel

  • Masuk CPanel → Advanced → Cron Jobs
  • “Minute”: *
  • Command:
    cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1

2. Plesk

  • Tools & Settings → Scheduled Tasks
  • Add Task (Run a command)
  • Command:
    cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1
  • Set interval: “Every minute”

3. DirectAdmin

  • Advanced Features → Cronjobs
  • Waktu: * * * * *
  • Command:
    cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1

4. CyberPanel

  • Website → List Websites → Manage → Cron Jobs
  • Add New Cron Job:
    • Minute: *
    • Command:
      cd /home/USERNAME/public_html && php artisan schedule:run >> /dev/null 2>&1

5. VPS/Dedicated (Tanpa Panel)

  • SSH → crontab -e
  • Tambahkan:
    * * * * * cd /path/to/project && php artisan schedule:run >> /dev/null 2>&1

Menjalankan queue:work di cPanel (Shared Hosting)

A. Menggunakan Cron Job

  1. Login ke cPanel.
  2. Cari menu Cron Jobs.
  3. Buat Cron Job baru dengan interval time sesuai kebutuhan, misal setiap 1 menit:

    * * * * * cd /home/username/public_html && php artisan queue:work --stop-when-empty
    • Ganti /home/username/public_html dengan path aplikasi kamu.
    • --stop-when-empty agar proses selesai setelah queue kosong (karena di shared hosting tidak bisa menjalankan proses daemon selamanya).
  4. Simpan Cron Job.

Catatan:
Pada shared hosting, proses long-running seperti queue:work bisa dibunuh sewaktu-waktu oleh provider. Alternatifnya, gunakan queue:listen atau cron job yang menjalankan queue:work --stop-when-empty secara periodik.

B. Cek Log

  • Pastikan job berhasil dengan memeriksa log di storage/logs/laravel.log.

Menjalankan queue:work di VPS Tanpa Panel

A. Jalankan dengan Supervisor (Direkomendasikan)

  1. Install Supervisor
    sudo apt update sudo apt install supervisor
  2. Buat File Konfigurasi Supervisor Misal: /etc/supervisor/conf.d/laravel-worker.conf

    [program:laravel-worker] process_name=%(program_name)s_%(process_num)02d command=php /path/to/artisan queue:work --sleep=3 --tries=3 autostart=true autorestart=true user=www-data numprocs=1 redirect_stderr=true stdout_logfile=/path/to/laravel/storage/logs/worker.log
    • Ganti /path/to/artisan dan /path/to/laravel sesuai project kamu.
  3. Reload Supervisor dan Mulai Workersudo supervisorctl reread sudo supervisorctl update sudo supervisorctl start laravel-worker:*
  4. Cek Status
    sudo supervisorctl status

B. Jalankan Manual (Tidak direkomendasikan untuk produksi)

cd /path/to/laravel
php artisan queue:work
  • Proses akan berjalan selama terminal aktif. Gunakan screen atau tmux jika ingin tetap berjalan meski SSH terputus.

Catatan:

  • Pastikan path ke project dan perintah PHP sudah benar (bisa juga php8.1 sesuai versi server).
  • Pada shared hosting, gunakan path absolut sesuai direktori Laravel Anda.
  • Anda dapat mencoba aplikasi ini di:
  • Unduh source code gratis di link berikut

Penutup:
Invoice-Filament hadir sebagai solusi digital yang lengkap untuk otomasi proses penagihan, pencatatan pembayaran, dan notifikasi berbasis Laravel. Dengan berbagai fitur unggulan yang mudah diintegrasikan dan dikelola, project ini sangat cocok untuk bisnis yang ingin meningkatkan efisiensi pengelolaan keuangan dan pembayaran secara profesional.

Leave a Reply

Your email address will not be published. Required fields are marked *