<%= brandName %> <%= t('customer.dashboard.portal', 'Portal Pelanggan') %>
<% if (pppoeOnline === true) { %> PPPoE Online <% } else if (pppoeOnline === false) { %> PPPoE Offline <% } else { %> PPPoE — <% } %>
<% if (typeof notif !== 'undefined' && notif && notif.text) { %>
<%= notif.text %>
<% } %>
Selamat Datang di Portal Pelanggan
<%- include('partials/service-notice') %>
ID: <%= profile ? (profile.customer_code || profile.genieacs_tag || profile.pppoe_username || profile.phone) : customer.phone %> <% if (onuMissing) { %> <% } %> <% if (profile) { %> Layanan: <%= profile.status === 'active' ? 'AKTIF' : 'ISOLIR' %> <% } %>

<%= t('customer.dashboard.hello', 'Halo') %>, <%= profile ? profile.name : customer.phone %>

Sinyal Optik: <%= customer.rxPower || '-20 dBm' %> <%= (profile && profile.pppoe_username) || customer.pppoeUsername || 'Belum ada akun PPPoE' %>

<% if (!((profile && profile.pppoe_username) || customer.pppoeUsername)) { %>
Akun PPPoE Anda belum dibuat — menunggu pemasangan/aktivasi oleh teknisi.
<% } %>
<% const paidInvoices = (invoices || []).filter(function(i){return i.status === 'paid';}); const unpaidInvoices = (invoices || []).filter(function(i){return i.status !== 'paid';}); const hasUnpaid = unpaidInvoices.length > 0; const latestUnpaid = hasUnpaid ? unpaidInvoices[0] : null; const totalUnpaidAmount = latestUnpaid ? Number(latestUnpaid.amount != null ? latestUnpaid.amount : (latestUnpaid.package_price != null ? latestUnpaid.package_price : 0)) : 0; const unpaidPeriods = latestUnpaid ? (latestUnpaid.period_month + '/' + latestUnpaid.period_year) : ''; const unpaidCount = unpaidInvoices.length; const isolateDay = (typeof profile !== 'undefined' && profile && profile.isolate_day) ? Number(profile.isolate_day) : ((typeof settings !== 'undefined' && settings && settings.isolir_day) ? Number(settings.isolir_day) : 10); const bulanNames = ['Januari','Februari','Maret','April','Mei','Juni','Juli','Agustus','September','Oktober','November','Desember']; const fmtDue = function(m, y){ return isolateDay + ' ' + (bulanNames[Number(m) - 1] || '') + ' ' + y; }; let dueText = ''; let dueDiffDays = null; if (latestUnpaid) { dueText = fmtDue(latestUnpaid.period_month, latestUnpaid.period_year); const d0 = new Date(Number(latestUnpaid.period_year), Number(latestUnpaid.period_month) - 1, isolateDay); d0.setHours(0, 0, 0, 0); const t0 = new Date(); t0.setHours(0, 0, 0, 0); dueDiffDays = Math.round((d0.getTime() - t0.getTime()) / 86400000); } const nowD = new Date(); const nextD = new Date(nowD.getFullYear(), nowD.getMonth() + 1, 1); const nextDueText = fmtDue(nextD.getMonth() + 1, nextD.getFullYear()); %>
<% if (hasUnpaid) { %> TAGIHAN BELUM DIBAYAR <%= unpaidCount > 1 ? '('+unpaidCount+' BULAN)' : '' %>
Rp <%= parseInt(totalUnpaidAmount || 0).toLocaleString('id-ID') %>
Periode <%= unpaidPeriods %>
Jatuh tempo: <%= dueText %> <% if (dueDiffDays !== null) { %> <%= dueDiffDays > 0 ? ('Sisa ' + dueDiffDays + ' hari') : (dueDiffDays === 0 ? 'Hari ini!' : ('Lewat ' + Math.abs(dueDiffDays) + ' hari')) %> <% } %>
<% } else { %> SEMUA TAGIHAN LUNAS
Layanan Internet Aktif
Terima kasih telah membayar tepat waktu!
Jatuh tempo berikutnya: <%= nextDueText %>
<% } %>
<% if (hasUnpaid) { %> <% } %>
Paket Berjalan <%= profile && profile.package_name ? profile.package_name : 'Belum ada paket' %> <% if (profile && Number(profile.speed_down) > 0) { %><%= Math.round(Number(profile.speed_down)/1000) %> Mbps<%= profile.speed_up ? ' / ' + Math.round(Number(profile.speed_up)/1000) + ' Mbps' : '' %><% } else { %>—<% } %>
Status Akun <% if (profile && profile.status === 'active') { %>Aktif<% } else { %>Isolir<% } %> <%= profile ? profile.name : '—' %>
Internet (PPPoE) <% if (pppoeOnline === true) { %>Online<% } else if (pppoeOnline === false) { %>Offline<% } else { %>Tidak diketahui<% } %> <%= (profile ? profile.pppoe_username : '') || customer.pppoeUsername || 'Belum dibuat' %>
Perangkat (ONU) <% if (onuMissing) { %>Tidak ditemukan<% } else { %>Terhubung<% } %> <%= customer.rxPower || '-' %> • <%= customer.model || 'ONU' %>
<% const navPayAmt = hasUnpaid ? totalUnpaidAmount : 0; %>
">
Bayar Tagihan
Nama WiFi
Sandi WiFi
Restart Modem
Notifikasi
Bantuan / Tiket
Kontrol Perangkat Router
<%= customer.model !== '-' ? customer.model : 'ONT / ONU' %>
Status Router
<%= customer.status %>
Rx Optical
<%= customer.rxPower %>
User Terhubung
<%= customer.totalAssociations || 0 %> User
Nama SSID WiFi
<%= customer.ssid || '-' %>
Password WiFi
Perangkat Terhubung saat ini:
<% if (connectedUsers && connectedUsers.length > 0) { %>
<% connectedUsers.forEach(function(u){ %>
<%= u.hostname || 'Device' %>
<%= u.ip || '-' %> | <%= u.mac || '-' %>
Active
<% }); %>
<% } else { %>
Tidak ada perangkat aktif terdeteksi
<% } %>
Pemantauan Trafik Real-Time
Live Mbps
Trafik Download
-
 
0<%= typeof trafficMaxDownMbps !== 'undefined' ? trafficMaxDownMbps : 10 %> Mbps
Trafik Upload
-
 
0<%= typeof trafficMaxUpMbps !== 'undefined' ? trafficMaxUpMbps : 10 %> Mbps
Kecepatan disesuaikan dengan paket berlangganan Anda.
Status Tagihan & Riwayat Pembayaran
<% if (invoices && invoices.length > 0) { %> <% invoices.forEach(function(inv){ %> <% const itemAmt = inv.amount != null ? inv.amount : (inv.package_price != null ? inv.package_price : 0); %>
<% if (inv.status === 'paid') { %>LUNAS<% } else { %>BELUM BAYAR<% } %> Periode <%= inv.period_month %>/<%= inv.period_year %>
<%= inv.package_name || 'Paket Internet' %>
Rp <%= parseInt(itemAmt || 0).toLocaleString('id-ID') %>
<% if (inv.status !== 'paid') { %> Tagihan PDF <% } else { %> Struk Thermal Faktur A4 PDF <% } %>
<% }); %> <% } else { %>
Belum ada riwayat tagihan
<% } %>
Tiket Keluhan & Bantuan
Daftar Tiket Anda
<% if (tickets && tickets.length > 0) { %>
<% tickets.forEach(function(t){ %> <% }); %>
IDJenis KendalaTanggalStatus
#TK-<%= t.id %> <%= t.subject %> <%= t.created_at %> <%= t.status === 'open' ? 'TERKIRIM' : (t.status === 'in_progress' ? 'DIPROSES' : 'SELESAI') %>
<% } else { %>
Belum ada tiket keluhan yang dibuat.
<% } %>

Pembayaran

Total Tagihan

Rp 0

<% const _payMode = String(settings.payment_mode || 'selfservice').toLowerCase(); const _gwActive = (_payMode === 'gateway') && String(settings.mayar_api_key || '').trim(); const _channels = (typeof paymentChannels !== 'undefined' && paymentChannels) ? paymentChannels : []; %> <% if (_gwActive && _channels.length > 0) { %> <% _channels.forEach(function(ch){ %> <% }); %> <% } else { %> <% } %>

Pusat Notifikasi

Ubah Nama WiFi (SSID)

Perangkat akan terputus sesaat setelah nama WiFi diubah.

Ubah Password WiFi

Gunakan minimal 8 kombinasi huruf dan angka. Simpan password ini baik-baik.

Reboot Router / Modem

Yakin ingin menyalakan ulang modem?

Proses reboot ±1–2 menit. Koneksi internet akan terputus sementara.

Buat Tiket Keluhan Baru

ONU Belum Terdeteksi

Perangkat ONU/ONT Anda belum terbaca di sistem, sehingga data sinyal optik, WiFi, dan trafik mungkin belum akurat.

Coba tekan “Poll ONU” pada kartu Kontrol Perangkat, atau buat tiket bantuan bila koneksi bermasalah.

Memproses…

Mohon tunggu sebentar.

blackhole
<%- include('partials/customer_bottom_nav', { activeNav: 'home' }) %>