@extends('layouts.app') @section('title', 'Konfigurasi Invoice Reminder') @section('content')

Invoice Reminder WhatsApp

@php $targetDate = now()->addDays($setting->days_before_due)->toDateString(); $reminderInvoices = \App\Models\Invoice::whereIn('status', ['draft', 'sent', 'overdue']) ->where('tanggal_jatuh_tempo', $targetDate) ->whereHas('pelanggan', function($query) { $query->whereNotNull('no_hp_whatsapp'); })->count(); @endphp
Status Sistem

@if($setting->is_enabled) Aktif @else Non-aktif @endif

Total Terkirim

{{ $setting->total_reminders_sent }}

Total Gagal

{{ $setting->total_failed_sends }}

Success Rate

{{ $setting->success_rate }}%

Konfigurasi Sistem

Atur jadwal dan parameter pengiriman reminder WhatsApp

@csrf @method('PUT')
πŸš€ EXECUTION MODE

Pilih cara sistem menjalankan invoice reminder:

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:
{{ $setting->cron_token ? 'URL siap digunakan' : 'Token akan dibuat setelah save settings' }}
Konfigurasi Manual:
Minute:0
Hour:{{ $setting->formatted_send_time ? explode(':', $setting->formatted_send_time)[0] : '9' }}
Day:*
Month:*
Weekday:*
Status: {{ $setting->cron_token ? 'βœ… Token sudah dibuat' : '⏳ Token akan dibuat setelah save' }}
Tutorial Setup Cronjob:
πŸ“‹ Langkah-langkah:
  1. Login ke cPanel hosting Anda
  2. Cari menu "Cron Jobs"
  3. Klik "Create New Cron Job"
  4. Pilih "Common Settings: Once Per Day"
  5. Set jam sesuai waktu pengiriman ({{ $setting->formatted_send_time }})
  6. Copy paste script di atas ke field "Command"
  7. Klik "Add New Cron Job"
βœ… Contoh Setting cPanel:
Minute: 0
Hour: {{ $setting->formatted_send_time ? explode(':', $setting->formatted_send_time)[0] : '9' }}
Day: *
Month: *
Weekday: *
Command: wget -O - "URL_CRONJOB"
Script Alternatif (jika wget tidak tersedia):
Testing & Verifikasi:
  • Test Manual: Klik URL cronjob di browser untuk test
  • Check Log: Lihat log cPanel untuk memastikan cronjob berjalan
  • Monitor Sistem: Cek halaman ini untuk melihat "Last Executed"
  • Backup Plan: Tetap aktifkan mode Page Trigger sebagai backup
TROUBLESHOOTING & FAQ
❌ Masalah Umum:

  • Pastikan script sudah benar di cPanel
  • Check log cPanel untuk error message
  • Pastikan URL dapat diakses dari browser
  • Coba ganti wget dengan curl

  • Save settings untuk generate token baru
  • Copy ulang script yang terbaru
  • Pastikan tidak ada spasi di URL
  • Check mode execution sudah cronjob

  • Check WhatsApp gateway masih aktif
  • Pastikan ada invoice yang jatuh tempo
  • Check template pesan masih aktif
  • Lihat log untuk detail error
βœ… Tips & Best Practice:
  • Backup Plan: Tetap aktifkan Page Trigger sebagai backup
  • Monitoring: Check halaman ini setiap hari untuk memastikan sistem berjalan
  • Testing: Test cronjob URL secara berkala
  • Log Monitoring: Pantau log cPanel untuk error
  • Waktu Optimal: Set cronjob di jam yang tidak sibuk (pagi hari)
  • Token Security: Jangan share token cronjob ke orang lain
Informasi Penting:
  • Cronjob berjalan sesuai timezone server
  • Sistem akan skip weekend jika diatur
  • Token cronjob berbeda dengan webhook token
  • Mode Page Trigger tetap bisa digunakan bersamaan
Pengaturan Dasar
is_enabled ? 'checked' : '' }}>
Reminder akan dikirim {{ $setting->days_before_due }} hari sebelum tanggal jatuh tempo
Waktu eksekusi otomatis setiap hari
Jeda waktu antar pengiriman untuk menghindari spam
Template & Pesan
Pesan ini akan ditambahkan di akhir template
send_on_weekends ? 'checked' : '' }}>
Pengaturan Lanjutan
enable_retry ? 'checked' : '' }}>
notify_admin_on_failure ? 'checked' : '' }}>
detailed_logging ? 'checked' : '' }}>
track_delivery_status ? 'checked' : '' }}>

CRONJOB MONITORING
Status Cronjob
@if($setting->execution_mode === 'cronjob' && $setting->cron_token) βœ… AKTIF @else ⏸️ NON-AKTIF @endif
Eksekusi Terakhir
@if($setting->last_executed_at) {{ $setting->last_executed_at->diffForHumans() }} @else Belum pernah @endif
Eksekusi Berikutnya
@if($setting->execution_mode === 'cronjob' && $setting->next_execution) {{ $setting->next_execution->format('d/m H:i') }} @else - @endif
Success Rate
{{ $setting->success_rate }}%
Jadwal Cronjob:
Setiap hari jam {{ $setting->formatted_send_time }}
Kirim reminder {{ $setting->days_before_due }} hari sebelum jatuh tempo
Weekend: {{ $setting->send_on_weekends ? 'Aktif' : 'Skip' }}
Quick Actions:

Informasi Eksekusi

Eksekusi Terakhir: @if($setting->last_executed_at) {{ $setting->last_executed_at->format('d/m/Y H:i:s') }} @else Belum pernah @endif
Eksekusi Berikutnya: @if($setting->next_execution) {{ $setting->next_execution->format('d/m/Y H:i:s') }} @else Sistem non-aktif @endif
Status Hari Ini: @if($setting->hasExecutedToday()) Sudah dijalankan @else Belum dijalankan @endif
Webhook URL: {{ $setting->webhook_url }}

Log Terbaru

@if($recentLogs['exists'])
Ukuran: {{ number_format($recentLogs['size']/1024, 2) }} KB | Terakhir diupdate: {{ $recentLogs['last_modified'] }}
@if(count($recentLogs['recent_lines']) > 0)
@foreach($recentLogs['recent_lines'] as $line)
{{ $line }}
@endforeach
@else

Log kosong

@endif @else

File log belum dibuat

@endif
@endsection @section('scripts') @endsection