<%- include('partials/sidebar', { activePage: (typeof activePage !== 'undefined' && activePage ? activePage : 'settings'), company }) %>
<%= t('admin.settings.system_title', 'Pengaturan Sistem') %>
<%= (typeof session !== 'undefined' && session && session.isCashier) ? t('admin.role.cashier', 'Kasir') : t('admin.role.admin', 'Admin') %> <%= t('common.logout', 'Logout') %>
<% if (msg) { %>
<%= msg.text %>
<% } %> <% const logsOnly = (typeof viewMode !== 'undefined' && viewMode === 'ewallet_logs'); %> <% if (logsOnly) { %>
Log Notifikasi E-Wallet (Realtime)
<%= t('common.back', 'Kembali') %>
<%= t('admin.set.ew_endpoint','Endpoint MacroDroid:') %> POST /api/webhook/v1/payment-notif
<%= t('common.time', 'Waktu') %> Sumber <%= t('admin.settings.ewallet_logs.amount', 'Nominal') %> <%= t('common.status','Status') %> Cocok ke <%= t('admin.settings.ewallet_logs.content', 'Isi Notifikasi') %>
<%= t('common.loading', 'Memuat data...') %>
<% } else { %>
<%= t('admin.settings.ewallet_logs.title', 'Log Notifikasi E-Wallet (Webhook)') %>
<%= t('common.open', 'Buka') %>
<%= t('admin.set.ew_log_hint','Log notifikasi e-wallet dipindah ke halaman khusus agar pengaturan tidak terdorong ke bawah.') %>
<% } %> <% if (!logsOnly) { %>
<%= t('admin.settings.telegram.title', 'Pengaturan Telegram Bot (Backup Admin)') %>
<%= t('admin.settings.system_title', 'Pengaturan Sistem') %>
<%= t('admin.settings.app_info', 'Info Aplikasi') %>
<%= t('admin.set.link_hint','Digunakan untuk menyusun tautan login pelanggan yang dikirim via WhatsApp. Contoh: ') %>https://portal.domain-anda.com
Format ID Pelanggan: PREFIX-angka (contoh: <%= (settings.customer_id_prefix || 'SKY') %>-48213). Hanya angka setelah tanda hubung. ID permanen & otomatis untuk pelanggan baru.
Default 5 → contoh SKY-48213.
<%= t('admin.set.office_coord_hint','Koordinat kantor digunakan untuk validasi lokasi absensi karyawan (geofencing)') %>
<%= t('admin.set.geo_label','Geofencing:') %> <%= t('admin.set.geo_desc','Karyawan hanya bisa absen jika berada dalam radius yang ditentukan dari koordinat kantor. Nonaktifkan jika karyawan bekerja remote/lapangan.') %>
<%= t('admin.set.set_auto_moved','Otomatisasi dipindah:') %> <%- t('admin.set.set_auto_list','Auto-Nonaktif, Auto-Hapus, Auto-Peringatan & Auto-') %><%= t('admin.set.ew_paid','Lunas') %> <%- t('admin.set.set_auto_now','kini tertata di menu') %> Automation →
<%= t('admin.set.colpay_label','Pembayaran Kolektor:') %> <%= t('admin.set.colpay_desc','Pengaturan approval pembayaran kolektor sekarang diatur per akun kolektor pada menu Manajemen Kolektor, bukan dari pengaturan global.') %>
<%= t('admin.settings.external_api', 'API Eksternal') %>
Jika diaktifkan, aplikasi akan bertindak sebagai server ACS TR-069 sendiri (endpoint: /acs) tanpa perlu server GenieACS terpisah.
style="display:none;"<% } %>>
<%= t('admin.set.mr_hint','Pilih mode operasional MikroTik: Aktif untuk multi-router, Nonaktif untuk single router dengan fallback otomatis') %>
<%= t('admin.set.mr_default_hint','Opsional. Jika kosong, sistem auto-detect router pertama (ID terkecil). Jika diisi, gunakan nilai ini.') %>
Kredensial Admin
Fitur Opsional
Nonaktifkan untuk menyembunyikan halaman Beli Voucher publik (mis. saat deploy).
Integrasi WhatsApp
<%= t('admin.set.wa_numbers_hint','Nomor admin akan menerima notifikasi monitoring sistem. Nomor teknisi diambil otomatis dari ') %>Data Teknisi.
Rekomendasi: Minimal 2 detik agar tidak terdeteksi spam oleh WhatsApp.
<%= t('admin.set.logo_title','Logo Aplikasi') %>
<%- t('admin.set.logo_hint','PNG/JPG/WebP, maks 2MB. PNG/JPEG otomatis dioptimalkan. Dipakai di halaman login & portal pelanggan.') %>
Saat ini:
Logo Portal
Dipakai pada semua cetakan PDF (invoice, faktur, struk, laporan).
Saat ini:
Logo Invoice
<%- t('admin.set.pwa_icon_hint','Setelah upload, ikon PWA (192/512/maskable/apple-touch) & favicon otomatis dibuat ulang dari gambar ini. Sebaiknya gambar persegi (1:1).') %>
Preview:
Ikon PWA
Landing Page
<%= t('admin.set.hero_hint','PNG/JPEG otomatis dikonversi ke ') %>WebP (+ fallback JPEG) agar lebih ringan. Rasio disarankan 16:10 (mis. 1600×1000).
Preview:
Hero Landing
<%- t('admin.set.speed_title','Speed Test & Uptime') %>
<%= t('admin.set.speedtest_hint','Preset hanya mengisi otomatis — sesuaikan URL bila perlu.') %>
Bisa internal<%= t('admin.set.speedtest_hint2',' (LibreSpeed / OpenSpeedTest self-hosted) atau ') %>eksternal (Ookla Custom, Cloudflare, Google Fiber, dll). Harus bisa diakses public<%= t('admin.set.speedtest_hint3','. Jika dikosongkan, dashboard pelanggan menampilkan ') %><%= t('admin.set.speedtest_notset','"Speedtest belum di setup"') %>.
<%= t('admin.set.speedtest_btn_hint','Di halaman pelanggan tersedia tombol ') %>Muat Ulang (reload speed test) & Bersihkan Cache.
<%= t('admin.set.repo_hint','Dipakai untuk tautan ') %>Repo, Form/Issue (/issues/new/choose), Wiki, dan Lisensi di landing page.
<%= t('admin.set.uptime_hint','Dipakai untuk tombol/redirect ') %><%= t('common.status','Status') %> di landing page. Jika dikosongkan, landing page tidak menampilkan tab Status.
Pengaturan Payment Gateway
QRIS Statis (Semi-Otomatis)
<%= t('admin.set.qris_dyn_hint','Jika diisi, sistem akan membuat QRIS dinamis per transaksi (nominal langsung terisi saat scan). Jika kosong, sistem pakai URL gambar seperti biasa.') %>
<%= t('admin.set.qris_upload_hint','Jika di-upload, sistem akan menyimpan file dan otomatis mengisi URL QRIS.') %>
<% if (settings.qris_static_qr_url) { %>
Preview:
QRIS
Gunakan tombol QR<%= t('admin.set.qris_unique_hint',' di menu Billing untuk membuat nominal unik per invoice.') %>
<% } %>
Transfer Bank & E-Wallet (Manual, Mode 2)
<%- t('admin.set.bank_hint','Nominal & kode unik sama seperti QRIS; verifikasi otomatis (webhook forwarder) + manual (upload bukti).') %>
Hubungkan Webhook Notifikasi E-Wallet (Mode 2)
<% const _base = (settings.public_base_url || '').replace(/\/+$/, ''); const _secret = String(settings.webhook_secret || ''); const macroWebhookUrlFull = _base + '/api/webhook/v1/payment-notif?secret_key=' + encodeURIComponent(_secret); %>
<%= t('admin.set.wh_wa_hint','Kirim WA ke admin tiap ada pembayaran terdeteksi tapi belum cocok (untuk dicocokkan manual via jam notif vs bukti transfer).') %>
<%= t('admin.set.wh_retention_hint','Notif webhook yang lebih tua dari jumlah hari ini dihapus otomatis tiap hari (04:45). Default 30 hari.') %>
<%= t('admin.set.wh_howto','Cara memasang di app (mis. android-notification-forwarder / MacroDroid):') %>
  1. <%- t('admin.set.wh_li1','Method POST, Content-Type application/json.') %>
  2. <%- t('admin.set.wh_li2','API URL = URL di atas (secret sudah termasuk), atau URL dasar + header X-Webhook-Token: <token>.') %>
  3. <%- t('admin.set.wh_li3','Target Apps = package aplikasi bank/e-wallet (mis. com.gojek.gopay, OVO, DANA, Jenius).') %>
  4. <%= t('admin.set.wh_li4','Notifikasi WhatsApp/Telegram otomatis ditolak agar chat tak dianggap pembayaran.') %>
  5. <%- t('admin.set.wh_li5','Nominal di notifikasi harus sama dengan nominal unik tagihan (jumlah + kode unik QRIS).') %>
Mode Pembayaran
<%= t('admin.set.pay_mode_hint','Mode 1 = Gateway (hanya Mayar). Mode 2 = QRIS statis + verifikasi manual.') %>
Webhook Mayar: https://<domain-anda>/api/webhook/mayar
Tempel di dashboard Mayar sebagai URL webhook (event payment.received).
<% } %>