Perlu Perhatian
Voucher
Stok Saya per Produk
Stok yang sudah dikasih Agent ke Anda, belum dialokasikan ke reseller manapun.
| Produk | Qty | Nilai | |
|---|---|---|---|
| {{ p.product_name }} | {{ p.qty }} | {{ rupiah(p.value) }} | ⚠ Hampir habis |
Stok per Produk
Proyeksi habis dihitung dari rata-rata penjualan historis (bukan prediksi AI) — butuh minimal 3 transaksi tercatat per produk.
| Produk | Qty | Nilai | Rata2 Jual/Hari | Proyeksi Habis | |
|---|---|---|---|---|---|
| {{ p.product_name }} | {{ p.qty }} | {{ rupiah(p.value) }} | {{ p.forecast_status === 'cukup_data' ? p.avg_daily_sales + '/hari' : '-' }} | ±{{ p.projected_days_remaining }} hari Data belum cukup | ⚠ Hampir habis |
Performa Reseller
Skor dari volume transaksi, konsistensi aktif jualan, dan tingkat klaim dalam 30 hari terakhir — bukan penilaian resmi, cuma bantu lihat siapa yang perlu didorong.
| Reseller | Transaksi | Omzet | Hari Aktif | Klaim | Skor | Tier |
|---|---|---|---|---|---|---|
| {{ r.name }} ({{ r.code }}) | {{ r.sales_count }} | {{ rupiah(r.revenue) }} | {{ r.active_days }}/30 | {{ r.claims_count }} ({{ r.claim_rate }}%) | {{ r.score }}/100 | {{ resellerTierLabel(r.tier) }} |
Reseller
Ringkasan
Margin
Daftar Cabang
| Logo | Kode | Nama | Kategori | Status | Jml Agent | Stok Cabang | Aksi |
|---|---|---|---|---|---|---|---|
| {{ b.code }} | {{ b.name }} | {{ b.type === 'mitra' ? 'Mitra' : 'Internal' }} | {{ b.status }} | {{ b.agent_count }} | {{ b.branch_stock }} |
Daftar Owner
| Nama | Sejak | Aksi | |
|---|---|---|---|
| {{ o.name }} | {{ o.email }} | {{ o.created_at }} | Terkunci |
{{ editingOwnerId ? 'Edit Owner' : 'Tambah Owner' }}
{{ editingBranchCode ? 'Edit Cabang ' + editingBranchCode : 'Tambah Cabang' }}
Logo Mitra
Logo ini tampil berdampingan dengan logo SIBERNET di topbar buat semua yang login di bawah Cabang ini.
Ringkasan
Margin
Daftar Agent
| Kode | Nama | Status | Jml Reseller | Stok Agent | Aksi |
|---|---|---|---|---|---|
| {{ a.code }} | {{ a.name }} | {{ a.status }} | {{ a.reseller_count }} | {{ a.agent_stock }} |
{{ editingAgentCode ? 'Edit Agent ' + editingAgentCode : 'Tambah Agent' }}
Finansial
Daftar Reseller
| Kode | Nama | Status | Approval | Nilai Stok | Stok | Aksi |
|---|---|---|---|---|---|---|
| {{ r.code }} | {{ r.name }} | {{ r.status }} |
{{ r.approval_status === 'approved' ? 'Approved' : (r.approval_status === 'pending' ? 'Pending' : 'Ditolak') }}
{{ r.rejection_reason }}
|
{{ rupiah(r.stock_value) }} | {{ r.stock }} |
{{ editingResellerCode ? 'Edit Reseller ' + editingResellerCode : 'Tambah Reseller' }}
Alokasi ke Reseller
Top Up Saldo Reseller
Cuma reseller mode Prepaid yang muncul di sini. Kalau reseller-nya belum prepaid, ubah dulu di menu Edit Reseller.
| Kode | Nama | Saldo Saat Ini |
|---|---|---|
| {{ r.code }} | {{ r.name }} | {{ rupiah(r.balance) }} |
Riwayat Top Up
Semua transaksi saldo (top up, potongan alokasi, retur). Retur top up cuma bisa dilakukan oleh Cabang ke atas.
| Reseller | Jenis | Jumlah | Catatan | Tanggal | Aksi |
|---|---|---|---|---|---|
| {{ t.reseller_name }} ({{ t.reseller_code }}) | {{ t.type }} | {{ t.amount > 0 ? '+' : '' }}{{ rupiah(t.amount) }} | {{ t.note || '-' }} | {{ t.created_at }} |
Klaim Voucher
Komplain voucher gagal dari reseller. Approve otomatis kasih voucher pengganti dari stok agent & refund biaya voucher yang gagal (nggak dobel tagih/potong saldo).
| Kode | Reseller | Voucher | Alasan | Status | Pengganti | Aksi |
|---|---|---|---|---|---|---|
| {{ c.code }} | {{ c.reseller_name }} ({{ c.reseller_code }}) | {{ c.voucher_code }} | {{ claimReasonLabel(c.reason_category) }} {{ c.reason }} |
{{ c.status === 'approved' ? 'Disetujui' : (c.status === 'rejected' ? 'Ditolak' : 'Menunggu') }} | {{ c.replacement_voucher_code || '-' }} |
Request Restock
Permintaan tambahan stok dari reseller. Approve langsung mengalokasikan voucher dari stok agent ke reseller (sama seperti Alokasi ke Reseller manual) — kalau stok agent kurang, permintaan tetap Menunggu dan bisa dicoba lagi setelah restock.
| Kode | Reseller | Produk | Jumlah | Catatan | Status | Aksi |
|---|---|---|---|---|---|---|
| {{ r.code }} | {{ r.reseller_name }} ({{ r.reseller_code }}) | {{ r.product_name }} | {{ r.qty_requested }} | {{ r.note || '-' }} |
{{ r.status === 'approved' ? 'Disetujui (' + r.qty_approved + ')' : (r.status === 'rejected' ? 'Ditolak' : 'Menunggu') }}
{{ r.rejection_note }}
|
Tolak Permintaan {{ rejectingRestockCode }}
Pembatalan Penjualan
Pengajuan pembatalan dari reseller (voucher salah jual/pembeli batal). Approve langsung mengembalikan voucher ke stok reseller, tidak dihitung lagi di tagihan.
| Kode | Reseller | Voucher | Alasan | Status | Tanggal | Aksi |
|---|---|---|---|---|---|---|
| {{ c.code }} | {{ c.reseller_name }} ({{ c.reseller_code }}) | {{ c.voucher_code }} | {{ c.reason }} |
{{ c.status === 'approved' ? 'Disetujui' : (c.status === 'rejected' ? 'Ditolak' : 'Menunggu') }}
{{ c.rejection_note }}
|
{{ c.created_at }} |
Tolak Pengajuan {{ rejectingSaleCancellationCode }}
Riwayat Alokasi
Kalau salah alokasi, klik Retur — voucher yang belum kejual otomatis balik ke stok agent dan saldo reseller dikembalikan sesuai porsi yang belum terjual.
| Kode Alokasi | Reseller | Produk | Jumlah | Total | Terjual | Bisa Diretur | Tanggal | Aksi |
|---|---|---|---|---|---|---|---|---|
| {{ d.code }} | {{ d.reseller_name }} ({{ d.reseller_code }}) | {{ d.product_name }} | {{ d.quantity }} | {{ rupiah(d.total_amount) }} | {{ d.sold_count }} | {{ d.available_count }} | {{ d.created_at }} | - |
Setting Markup Harga
Harga Reseller = modal reseller ke agen. Rentang Jual ke Pembeli = batas harga yang boleh dipakai reseller waktu jual ke customer (wajib diisi, selalu rentang fleksibel).
| Produk | Harga Dasar | Harga Reseller | Markup | Jual Min (Rp) | Jual Max (Rp) | |
|---|---|---|---|---|---|---|
| {{ p.product_name }} | {{ rupiah(p.base_price) }} | {{ p.editPrice != null ? rupiah(p.editPrice - p.base_price) : '-' }} |
Setting Markup Sub-Agent
Harga Sub-Agent = modal yang dibebankan ke Sub-Agent saat Anda alokasikan stok ke dia. Wajib diisi dulu sebelum bisa Alokasi ke Sub-Agent.
| Produk | Harga Dasar | Harga Sub-Agent | Markup | |
|---|---|---|---|---|
| {{ p.product_name }} | {{ rupiah(p.base_price) }} | {{ p.editPrice != null ? rupiah(p.editPrice - p.base_price) : '-' }} |
Buat Tagihan
| Produk | Qty Terjual | Subtotal |
|---|---|---|
| {{ item.product_name }} | {{ item.qty }} | {{ rupiah(item.subtotal) }} |
Riwayat Tagihan
| Kode | Ditagih Ke | Periode | Qty | Total | Sisa | Status | Aksi |
|---|---|---|---|---|---|---|---|
| {{ b.code }} | {{ b.billee_type === 'sub_agent' ? 'Sub-Agent ' + b.sub_agent_name + ' (' + b.sub_agent_code + ')' : b.reseller_name + ' (' + b.reseller_code + ')' }} | {{ b.period_start }} s/d {{ b.period_end }} | {{ b.total_qty }} | {{ rupiah(b.total_amount) }} | {{ rupiah(b.remaining_amount) }} | {{ b.status === 'paid' ? 'Lunas' : (b.status === 'partial' ? 'Sebagian' : 'Belum Lunas') }} |
Daftar Sub-Agent
| Kode | Nama | Status | Aksi |
|---|---|---|---|
| {{ s.code }} | {{ s.name }} | {{ s.status }} |
{{ editingSubAgentCode ? 'Edit Sub-Agent ' + editingSubAgentCode : 'Tambah Sub-Agent' }}
Alokasi ke Sub-Agent
Kasih sebagian stok Anda ke Sub-Agent, supaya dia bisa alokasi sendiri ke reseller-reseller yang dipegangnya. Kalau salah alokasi, klik Retur di tabel bawah.
{{ dashboard.type === 'agent' ? 'Riwayat Alokasi ke Sub-Agent' : 'Stok dari Agent' }}
Riwayat stok yang dikasih Agent ke Anda.
| Kode | Sub-Agent | Produk | Jumlah | Total | Sudah Disalurkan | Bisa Diretur | Tanggal | Aksi |
|---|---|---|---|---|---|---|---|---|
| {{ a.code }} | {{ a.sub_agent_name }} ({{ a.sub_agent_code }}) | {{ a.product_name }} | {{ a.quantity }} | {{ rupiah(a.total_amount) }} | {{ a.allocated_further_count }} | {{ a.available_count }} | {{ a.created_at }} | - |
Daftar Kode Voucher
| Kode{{ sortArrow('code') }} | Produk{{ sortArrow('product') }} | Status{{ sortArrow('status') }} | Pemilik{{ sortArrow('pemilik') }} |
|---|---|---|---|
| {{ v.code }} | {{ v.product }} | {{ v.status }} | {{ v.owner_name || '-' }} |
Menampilkan {{ voucherList.length }} dari {{ voucherListTotal }} voucher yang cocok filter ini. Persempit filter buat lihat sisanya.
Cari & Lacak Kode Voucher
| Batch Import | {{ voucherDetail.batch_code || '-' }} |
| Diimpor | {{ voucherDetail.imported_at || '-' }} |
| Dialokasikan ke | {{ voucherDetail.distribution.reseller_name }} ({{ voucherDetail.distribution.reseller_code }}) · {{ voucherDetail.distribution.code }} · {{ rupiah(voucherDetail.distribution.price_snapshot) }} · {{ voucherDetail.distribution.created_at }} |
| Terjual | {{ voucherDetail.sale.sale_code }} · {{ rupiah(voucherDetail.sale.customer_price) }} · profit {{ rupiah(voucherDetail.sale.profit) }} · {{ voucherDetail.sale.created_at }} |
Cari Pelanggan
Lacak riwayat pembelian berdasarkan nomor HP pembeli (bukan akun pelanggan — cuma nomor yang sempat dicatat reseller saat transaksi).
Pembelian pertama {{ customerHistorySummary.first_purchase_at }} · terakhir {{ customerHistorySummary.last_purchase_at }}
| Tanggal | Produk | Kode Voucher | Harga | Reseller | Status |
|---|---|---|---|---|---|
| {{ i.created_at }} | {{ i.product_name }} | {{ i.voucher_code }} | {{ rupiah(i.customer_price) }} | {{ i.reseller_name }} ({{ i.reseller_code }}) | Direfund Klaim Diproses Klaim Disetujui Normal |
Import Voucher dari MixRadius (CSV)
Zona Berbahaya
Menghapus SEMUA voucher, batch import, plan menunggu pemetaan, riwayat alokasi, dan riwayat penjualan — lalu mengembalikan saldo semua reseller ke Rp0. Produk, mapping Plan MixRadius, dan akun reseller TIDAK dihapus. Aksi ini tidak bisa dibatalkan.
Menunggu Pemetaan Produk
Kode voucher dengan Plan yang belum terdaftar otomatis masuk sini saat import, bukan bikin seluruh import gagal.
| Plan (dari MixRadius) | Cabang | Jumlah | Contoh Kode | Harga (CSV) | Sejak | Aksi |
|---|---|---|---|---|---|---|
| {{ p.raw_plan }} | {{ p.branch_name || p.branch_code }} | {{ p.total }} | {{ p.sample_code }} | {{ p.suggested_price != null ? rupiah(p.suggested_price) : '-' }} | {{ p.oldest }} |
{{ editingProductCode ? 'Edit Produk ' + editingProductCode : 'Tambah Produk Baru' }}
Produk Terdaftar
| Kode | Nama | Cabang | Harga Dasar | Plan MixRadius | Status | Aksi |
|---|---|---|---|---|---|---|
| {{ p.code }} | {{ p.name }} | {{ p.branch_name }} ({{ p.branch_code }}) | {{ rupiah(p.base_price) }} | {{ p.mixradius_plans.join(', ') }} | {{ p.is_active ? 'active' : 'nonaktif' }} |
Chat
Approval Reseller Baru
Reseller yang diajukan Agent/Sub-Agent belum bisa terima alokasi voucher sampai disetujui di sini. Cek alamat & lokasi biar nggak tumpang tindih sama reseller agent lain.
Ganti Password
Ubah password akun login Anda sendiri.
Lokasi Agent
Titik ini dipakai Cabang/Owner buat lihat sebaran agent di peta. Ambil GPS saat lagi di lokasi operasional Anda, boleh diubah kapan saja.
Logo Mitra
Logo ini tampil berdampingan dengan logo SIBERNET di topbar buat semua yang login di bawah Cabang Anda.
Lokasi Penjualan
Titik GPS diambil otomatis saat reseller melakukan penjualan. Data ini tidak bisa diubah atau dihapus.
| Kode Voucher | Reseller | Produk | Harga Jual | Waktu | Lokasi |
|---|---|---|---|---|---|
| {{ s.voucher_code }} | {{ s.reseller_name }} ({{ s.reseller_code }}) | {{ s.product_name }} | {{ rupiah(s.customer_price) }} | {{ s.created_at }} | Lihat di Peta - |
Peta Sebaran
Pilih lapisan yang mau dilihat: titik penjualan per periode, sebaran agent, atau sebaran reseller.
Memuat titik peta... {{ mapSalesList.length }} transaksi dengan titik lokasi pada periode ini. {{ mapAgentsList.length }} agent yang sudah punya titik lokasi. {{ mapResellersList.length }} reseller yang sudah punya titik lokasi.
Analitik
Perluasan laporan — tren penjualan, produk terlaris, dan ranking performa dari data transaksi historis.
Periode {{ analyticsData.from }} – {{ analyticsData.to }}
Tren Penjualan
Produk Terlaris
{{ analyticsData.top_performers_dimension === 'reseller' ? 'Top Reseller' : 'Top Agent' }}
| # | {{ analyticsData.top_performers_dimension === 'reseller' ? 'Reseller' : 'Agent' }} | Transaksi | Omzet |
|---|---|---|---|
| {{ i + 1 }} | {{ p.name }} ({{ p.code }}) | {{ p.transactions }} | {{ rupiah(p.revenue) }} |
SIBERNET · Digital Voucher