diff --git a/locales/en.json b/locales/en.json
index fff9db2..c7a733a 100644
--- a/locales/en.json
+++ b/locales/en.json
@@ -1463,7 +1463,9 @@
"last_tr069": "Last TR-069:",
"test_conn": "Test Connection",
"threshold_hint": "Warning threshold for RX Power (-40 to -15 dBm)",
- "timeout_hint": "Timeout for requests to GenieACS (5000-120000 ms)"
+ "timeout_hint": "Timeout for requests to GenieACS (5000-120000 ms)",
+ "genieacs_title": "GenieACS Settings",
+ "conn_live": "Connected Clients (Live)"
},
"cust": {
"ph_note": "Optional internal note...",
@@ -1986,6 +1988,70 @@
"night_profile": "Night Profile Name (MikroTik)",
"ph_night_profile": "-- Select Profile --",
"night_down": "Night Download (Mbps)"
+ },
+ "col": {
+ "title": "Collector Management",
+ "add_new": "Add New Collector",
+ "add": "Add Collector",
+ "list": "Collector List",
+ "all_paymode": "All Payment Modes",
+ "direct": "Direct Paid",
+ "approval": "Needs Approval",
+ "all_status": "All Account Statuses",
+ "phone": "Phone No.",
+ "area": "Assignment Area",
+ "paymode": "Payment Mode",
+ "del": "Delete Collector",
+ "full_name": "Full Name",
+ "area_region": "Area / Assignment Region",
+ "opt_all_area": "-- All Areas / Unrestricted --"
+ },
+ "mon": {
+ "title": "System Monitoring",
+ "updated": "Last update:",
+ "issues": "Issues",
+ "warnings": "Warnings",
+ "metrics": "System Metrics",
+ "perf": "Performance Summary (Last 10 Samples)",
+ "avg": "Average"
+ },
+ "vou": {
+ "no_profile": "No profile with price/duration (Mikhmon)",
+ "pick_profile": "-- Select Profile --"
+ },
+ "cr": {
+ "title": "Cashier Report",
+ "all_cashier": "All Cashiers",
+ "tx": "transactions",
+ "invoice": "Invoices:",
+ "topup": "Agent Deposit:",
+ "history": "Transaction History",
+ "th_type": "Type",
+ "th_detail": "Detail",
+ "th_note": "Note",
+ "badge_invoice": "INVOICE"
+ },
+ "ca": {
+ "today_status": "Today Status",
+ "checked_in": "Checked In",
+ "checked_out": "Checked Out",
+ "work_duration": "Work Duration",
+ "note_in": "Check-in Note",
+ "note_out": "Check-out Note",
+ "photo": "Attendance Photo",
+ "ph_note_out": "Check-out note (optional)",
+ "no_photo_out": "No photo taken yet. A photo is required for check-out.",
+ "not_checked_in": "Not Checked In",
+ "ph_note_in": "Check-in note (optional)",
+ "no_photo_in": "No photo taken yet. A photo is required for check-in.",
+ "total_days": "Total Days",
+ "this_month": "This Month",
+ "full_days": "Full Days",
+ "in_out": "Check-in & out",
+ "total_hours": "Total Hours",
+ "work_hours": "Work hours",
+ "avg": "Average",
+ "hours_per_day": "Hours/day"
}
},
"tech": {
diff --git a/locales/id.json b/locales/id.json
index 372d231..57cdc47 100644
--- a/locales/id.json
+++ b/locales/id.json
@@ -1464,7 +1464,9 @@
"last_tr069": "TR-069 terakhir:",
"test_conn": "Test Koneksi",
"threshold_hint": "Threshold untuk warning RX Power (-40 sampai -15 dBm)",
- "timeout_hint": "Timeout untuk request ke GenieACS (5000-120000 ms)"
+ "timeout_hint": "Timeout untuk request ke GenieACS (5000-120000 ms)",
+ "genieacs_title": "Pengaturan GenieACS",
+ "conn_live": "Klien Terhubung (Live)"
},
"cust": {
"ph_note": "Catatan internal opsional...",
@@ -1987,6 +1989,70 @@
"night_profile": "Nama Profile Malam (MikroTik)",
"ph_night_profile": "-- Pilih Profile --",
"night_down": "Download Malam (Mbps)"
+ },
+ "col": {
+ "title": "Manajemen Kolektor",
+ "add_new": "Tambah Kolektor Baru",
+ "add": "Tambah Kolektor",
+ "list": "Daftar Kolektor",
+ "all_paymode": "Semua Mode Pembayaran",
+ "direct": "Langsung Lunas",
+ "approval": "Perlu Approval",
+ "all_status": "Semua Status Akun",
+ "phone": "No. HP",
+ "area": "Area Tugas",
+ "paymode": "Mode Pembayaran",
+ "del": "Hapus Kolektor",
+ "full_name": "Nama Lengkap",
+ "area_region": "Area / Wilayah Tugas",
+ "opt_all_area": "-- Semua Area / Bebas --"
+ },
+ "mon": {
+ "title": "Monitoring Sistem",
+ "updated": "Update terakhir:",
+ "issues": "Masalah",
+ "warnings": "Peringatan",
+ "metrics": "Metrik Sistem",
+ "perf": "Ringkasan Performa (10 Sample Terakhir)",
+ "avg": "Rata-rata"
+ },
+ "vou": {
+ "no_profile": "Tidak ada profile dengan harga/durasi (Mikhmon)",
+ "pick_profile": "-- Pilih Profile --"
+ },
+ "cr": {
+ "title": "Laporan Kasir",
+ "all_cashier": "Semua Kasir",
+ "tx": "transaksi",
+ "invoice": "Tagihan:",
+ "topup": "Deposit Agent:",
+ "history": "Riwayat Transaksi",
+ "th_type": "Jenis",
+ "th_detail": "Detail",
+ "th_note": "Catatan",
+ "badge_invoice": "TAGIHAN"
+ },
+ "ca": {
+ "today_status": "Status Hari Ini",
+ "checked_in": "Sudah Check-in",
+ "checked_out": "Sudah Check-out",
+ "work_duration": "Durasi Kerja",
+ "note_in": "Catatan Check-in",
+ "note_out": "Catatan Check-out",
+ "photo": "Foto Absensi",
+ "ph_note_out": "Catatan check-out (opsional)",
+ "no_photo_out": "Belum ada foto diambil. Foto wajib untuk check-out.",
+ "not_checked_in": "Belum Check-in",
+ "ph_note_in": "Catatan check-in (opsional)",
+ "no_photo_in": "Belum ada foto diambil. Foto wajib untuk check-in.",
+ "total_days": "Total Hari",
+ "this_month": "Bulan ini",
+ "full_days": "Hari Lengkap",
+ "in_out": "Check-in & out",
+ "total_hours": "Total Jam",
+ "work_hours": "Jam kerja",
+ "avg": "Rata-rata",
+ "hours_per_day": "Jam/hari"
}
},
"tech": {
diff --git a/views/admin/cashier_attendance.ejs b/views/admin/cashier_attendance.ejs
index 805894d..9d144ae 100644
--- a/views/admin/cashier_attendance.ejs
+++ b/views/admin/cashier_attendance.ejs
@@ -103,14 +103,14 @@
-
Status Hari Ini
+ <%= t('admin.ca.today_status','Status Hari Ini') %>
<% if (todayAttendance) { %>
<% if (todayAttendance.status === 'checked_in') { %>
-
Sudah Check-in
+
<%= t('admin.ca.checked_in','Sudah Check-in') %>
<% } else { %>
-
Sudah Check-out
+
<%= t('admin.ca.checked_out','Sudah Check-out') %>
<% } %>
@@ -124,7 +124,7 @@
<%= formatDateLocal(todayAttendance.check_out_time) %>
-
Durasi Kerja
+
<%= t('admin.ca.work_duration','Durasi Kerja') %>
<%= Math.floor(todayAttendance.work_duration_minutes / 60) %> jam
<%= todayAttendance.work_duration_minutes % 60 %> menit
@@ -134,21 +134,21 @@
<% if (todayAttendance.check_in_note) { %>
- Catatan Check-in
+ <%= t('admin.ca.note_in','Catatan Check-in') %>
<%= todayAttendance.check_in_note %>
<% } %>
<% if (todayAttendance.check_out_note) { %>
- Catatan Check-out
+ <%= t('admin.ca.note_out','Catatan Check-out') %>
<%= todayAttendance.check_out_note %>
<% } %>
<% if (todayAttendance.check_in_photo || todayAttendance.check_out_photo) { %>
-
Foto Absensi
+
<%= t('admin.ca.photo','Foto Absensi') %>
<% if (todayAttendance.check_in_photo) { %>
@@ -167,7 +167,7 @@
<% } %>
<% if (todayAttendance.status === 'checked_in') { %>
-
+
@@ -177,7 +177,7 @@
<%= t('collector.tap_camera','Ketuk tombol kamera untuk mengambil foto selfie') %>
- Belum ada foto diambil. Foto wajib untuk check-out.
+ <%= t('admin.ca.no_photo_out','Belum ada foto diambil. Foto wajib untuk check-out.') %>
<%= t('collector.selfie_required','Foto wajib') %>
@@ -195,10 +195,10 @@
<% } %>
<% } else { %>
- Belum Check-in
+ <%= t('admin.ca.not_checked_in','Belum Check-in') %>
Silakan lakukan check-in untuk memulai hari kerja Anda.
-
+
@@ -208,7 +208,7 @@
<%= t('collector.tap_camera','Ketuk tombol kamera untuk mengambil foto selfie') %>
- Belum ada foto diambil. Foto wajib untuk check-in.
+ <%= t('admin.ca.no_photo_in','Belum ada foto diambil. Foto wajib untuk check-in.') %>
<%= t('collector.selfie_required','Foto wajib') %>
@@ -235,31 +235,31 @@
-
Total Hari
+
<%= t('admin.ca.total_days','Total Hari') %>
<%= summary.total_days || 0 %>
-
Bulan ini
+
<%= t('admin.ca.this_month','Bulan ini') %>
-
Hari Lengkap
+
<%= t('admin.ca.full_days','Hari Lengkap') %>
<%= summary.completed_days || 0 %>
-
Check-in & out
+
<%= t('admin.ca.in_out','Check-in & out') %>
-
Total Jam
+
<%= t('admin.ca.total_hours','Total Jam') %>
<%= summary.total_minutes ? Math.floor(summary.total_minutes / 60) : 0 %>
-
Jam kerja
+
<%= t('admin.ca.work_hours','Jam kerja') %>
-
Rata-rata
+
<%= t('admin.ca.avg','Rata-rata') %>
<%= summary.avg_minutes ? Math.floor(summary.avg_minutes / 60) : 0 %>
-
Jam/hari
+
<%= t('admin.ca.hours_per_day','Jam/hari') %>
diff --git a/views/admin/cashier_reports.ejs b/views/admin/cashier_reports.ejs
index 521adf6..ba284be 100644
--- a/views/admin/cashier_reports.ejs
+++ b/views/admin/cashier_reports.ejs
@@ -2,7 +2,7 @@
- Laporan Kasir | <%= company %>
+ <%= t('admin.cr.title','Laporan Kasir') %> | <%= company %>
@@ -14,7 +14,7 @@
- Laporan Kasir
+ <%= t('admin.cr.title','Laporan Kasir') %>
<%= company %>
@@ -35,7 +35,7 @@
<% if (cashiers && cashiers.length > 1) { %>
-
Riwayat Transaksi
+ <%= t('admin.cr.history','Riwayat Transaksi') %>
@@ -60,16 +60,16 @@
| <%= t('collector.col_time','Waktu') %> |
Kasir |
- Jenis |
- Detail |
+ <%= t('admin.cr.th_type','Jenis') %> |
+ <%= t('admin.cr.th_detail','Detail') %> |
<%= t('collector.col_amount','Nominal') %> |
- Catatan |
+ <%= t('admin.cr.th_note','Catatan') %> |
Ref |
<% if (!rows || rows.length === 0) { %>
- | Belum ada transaksi kasir. |
+ | Belum ada <%= t('admin.cr.tx','transaksi') %> kasir. |
<% } else { %>
<% rows.forEach(r => { %>
@@ -79,7 +79,7 @@
<% if (r.kind === 'agent_topup') { %>
DEPOSIT
<% } else { %>
- TAGIHAN
+ <%= t('admin.cr.badge_invoice','TAGIHAN') %>
<% } %>
|
diff --git a/views/admin/collectors.ejs b/views/admin/collectors.ejs
index 6d73feb..e8642e4 100644
--- a/views/admin/collectors.ejs
+++ b/views/admin/collectors.ejs
@@ -14,11 +14,11 @@
- Manajemen Kolektor
+ <%= t('admin.col.title','Manajemen Kolektor') %>
<%= (typeof session !== 'undefined' && session.isCashier) ? t('admin.role.cashier', 'Kasir') : t('admin.role.admin', 'Admin') %>
-
+
@@ -29,19 +29,19 @@
- Daftar Kolektor
+ <%= t('admin.col.list','Daftar Kolektor') %>
- Pengaturan approval pembayaran berlaku per akun kolektor. `Langsung Lunas` berarti pembayaran dari kolektor langsung melunasi invoice, sedangkan `Perlu Approval` berarti harus disetujui admin atau kasir terlebih dahulu.
+ Pengaturan approval pembayaran berlaku per akun kolektor. `<%= t('admin.col.direct','Langsung Lunas') %>` berarti pembayaran dari kolektor langsung melunasi invoice, sedangkan `<%= t('admin.col.approval','Perlu Approval') %>` berarti harus disetujui admin atau kasir terlebih dahulu.
@@ -53,10 +53,10 @@
<%= t('pwa.field.name','Nama') %> |
Username |
Password |
- No. HP |
- Area Tugas |
+ <%= t('admin.col.phone','No. HP') %> |
+ <%= t('admin.col.area','Area Tugas') %> |
<%= t('common.status','Status') %> |
- Mode Pembayaran |
+ <%= t('admin.col.paymode','Mode Pembayaran') %> |
<%= t('common.actions','Aksi') %> |
|
@@ -86,7 +86,7 @@
@@ -103,16 +103,16 @@