<%- 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') %>
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.
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.') %>
Otomatisasi dipindah: Auto-Nonaktif, Auto-Hapus, Auto-Peringatan & Auto-<%= t('admin.set.ew_paid','Lunas') %> 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
Integrasi WhatsApp
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') %>
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
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
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 (LibreSpeed / OpenSpeedTest self-hosted) atau eksternal (Ookla Custom, Cloudflare, Google Fiber, dll). Harus bisa diakses public. Jika dikosongkan, dashboard pelanggan menampilkan "Speedtest belum di setup".
Di halaman pelanggan tersedia tombol Muat Ulang (reload speed test) & Bersihkan Cache.
Dipakai untuk tautan Repo, Form/Issue (/issues/new/choose), Wiki, dan Lisensi di landing page.
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 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).
<% } %>