@extends('layouts.app') @section('content')

⚙️ Auto Billing Settings

@php $nextGeneration = $settings->getNextGenerationDate(); $totalPelangganAktif = \App\Models\Pelanggan::where('status', 'aktif')->count(); @endphp
🤖 AUTO BILLING SYSTEM - ADVANCED
Generate Day: @if($settings->advance_generate) {{ $settings->advance_days }} hari sebelum bulan baru @else Tanggal {{ $settings->generate_day }} setiap bulan @endif
Due Date Mode: {{ ucfirst($settings->due_date_mode) }}
Default Due Days: {{ $settings->default_due_days }} hari
Target Pelanggan: {{ number_format($totalPelangganAktif) }}

Jadwal Berikutnya: {{ $nextGeneration->format('d/m/Y') }}
Execution Mode: @if($settings->execution_mode === 'cronjob') ⏰ Cronjob Mode @else 📱 Page Trigger @endif
Cara Kerja: @switch($settings->due_date_mode) @case('fixed_days') Semua pelanggan menggunakan {{ $settings->default_due_days }} hari setelah generate @break @case('custom_date') Menggunakan tanggal custom per pelanggan, fallback ke {{ $settings->default_due_days }} hari @break @case('mixed') @default Custom jika ada setting, default {{ $settings->default_due_days }} hari jika tidak @break @endswitch @if($settings->execution_mode === 'cronjob')
Cronjob: Berjalan otomatis setiap hari jam {{ $settings->formatted_cron_time ?? '02:00' }} @if($settings->last_cron_run) (Terakhir: {{ $settings->last_cron_run->format('d/m/Y H:i') }}) @endif @else
Page Trigger: Otomatis berjalan saat halaman invoice diakses @endif
@if(session('success'))
{{ session('success') }}
@endif @if($errors->any())
    @foreach($errors->all() as $error)
  • {{ $error }}
  • @endforeach
@endif
@csrf
📊 Current Settings
Generate Day: {{ $settings->generate_day }}
Due Date Mode: {{ ucfirst($settings->due_date_mode) }}
Default Due Days: {{ $settings->default_due_days }} hari
Advance Generate: {{ $settings->advance_generate ? 'Yes' : 'No' }}
Advance Days: {{ $settings->advance_days }} hari
@php $nextGeneration = $settings->getNextGenerationDate(); @endphp
🕒 Next Generation:
{{ $nextGeneration->format('d/m/Y') }}
📅 Generation Settings
Tanggal berapa invoice digenerate setiap bulan @error('generate_day')
{{ $message }}
@enderror
advance_generate) ? 'checked' : '' }}> Generate di akhir bulan sebelumnya
Berapa hari sebelum bulan baru @error('advance_days')
{{ $message }}
@enderror
📅 Due Date Settings
@error('due_date_mode')
{{ $message }}
@enderror
Hari jatuh tempo default dari tanggal generate @error('default_due_days')
{{ $message }}
@enderror
🚀 EXECUTION MODE

Pilih cara sistem menjalankan auto billing:

execution_mode ?? 'page_trigger') == 'page_trigger' ? 'checked' : '' }}>
execution_mode ?? 'page_trigger') == 'cronjob' ? 'checked' : '' }}>
🚀 CRONJOB SCRIPT SIAP PAKAI COPY & PASTE KE CPANEL
Script Cronjob Lengkap:
📋 Paste script ini langsung ke cPanel > Cron Jobs > Command
Cronjob URL:
{{ $settings->cron_token ? 'URL siap digunakan' : 'Token akan dibuat setelah save settings' }}
Konfigurasi Manual:
Minute:0
Hour:{{ $settings->formatted_cron_time ? explode(':', $settings->formatted_cron_time)[0] : '2' }}
Day:{{ $settings->generate_day ?? '1' }}
Month:*
Weekday:*
Status: {{ $settings->cron_token ? '✅ Token sudah dibuat' : '⏳ Token akan dibuat setelah save' }}
⚙️ Cronjob Configuration
Jam berapa cronjob dijalankan setiap hari @error('cron_time')
{{ $message }}
@enderror
@if($settings->cron_token) @else @endif
Token keamanan untuk endpoint cronjob
🎯 Quick Presets
Cancel
💡 Help & Examples
🎯 Use Cases:
  • ISP Kecil: Page Trigger mode
  • ISP Menengah: Cronjob mode
  • ISP Besar: Cronjob + Advance generation
⚠️ Important Notes:
  • Settings langsung aktif setelah save
  • Cache auto billing akan di-reset
  • Backup database sebelum mengubah
  • Test cronjob sebelum production
🔄 Mode Comparison:
  • Page Trigger: Mudah, tidak perlu setup
  • Cronjob: Presisi waktu, otomatis penuh
📚 Tutorial Setup Cronjob di cPanel
@if($settings->cron_token)
🚀 Script Cronjob Siap Pakai:
Paste script ini langsung ke cPanel > Cron Jobs > Command
@endif
🔧 Langkah Setup:
  1. Login ke cPanel hosting Anda
  2. Cari menu "Cron Jobs"
  3. Klik "Create New Cron Job"
  4. Copy script di atas ke field Command
  5. Atau isi manual sesuai tabel di bawah:
⚙️ Konfigurasi Cronjob:
Minute:0
Hour:{{ $settings->formatted_cron_time ? explode(':', $settings->formatted_cron_time)[0] : '2' }}
Day:{{ $settings->generate_day ?? '1' }}
Month:*
Weekday:*
Command:wget -O - "{{ $settings->getCronUrl() ?? 'URL_AKAN_MUNCUL_SETELAH_SAVE' }}"
📋 Script Cronjob Lengkap:
Copy script lengkap ini ke cPanel Cron Jobs
✅ Verifikasi Setup:
  • Pastikan URL cronjob sudah benar
  • Test dengan mengakses URL manual
  • Cek log eksekusi di cPanel
  • Monitor log Laravel untuk error
🚨 Troubleshooting:
  • 404 Error: Cek URL dan token
  • 500 Error: Cek log Laravel
  • Tidak jalan: Cek waktu dan tanggal
  • Duplikasi: Pastikan hanya 1 cronjob aktif
Pro Tips:
  • Gunakan waktu sepi server (dini hari)
  • Monitor performa saat generate
  • Backup database sebelum go-live
  • Setup notifikasi email untuk error
Contoh Script Cronjob Lainnya:
Generate tanggal 25 setiap bulan jam 01:00:
0 1 25 * * wget -O - "{{ $settings->getCronUrl() ?? 'YOUR_URL_HERE' }}"
Generate tanggal 1 setiap bulan jam 03:30:
30 3 1 * * wget -O - "{{ $settings->getCronUrl() ?? 'YOUR_URL_HERE' }}"
Generate setiap hari jam 02:00 (untuk testing):
0 2 * * * wget -O - "{{ $settings->getCronUrl() ?? 'YOUR_URL_HERE' }}"
Format: Menit Jam Tanggal Bulan HariMinggu Command
@endsection