| No | Nama | PIC | Channel | Value | Prob | Stage | Owner | Next Follow Up | Status | |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | adigarst | adigarst |
Import dari wp_users
Website
|
Rp0 | 0% | Contact | adigarst | Belum dijadwalkan | Needs Plan | |
| 2 | Nidia Ayu | Nidia Ayu |
Download, Konten Youtube
whatsapp
|
Rp300.000 | 50% | Qualification | adigarst |
11 Februari 2026 - 4:00 PM
Tangkap kebutuhannya apa
|
Overdue | |
| 3 | Bayu Kencana | Bayu Kencana |
Download, Template Brief Website
Website
|
Rp0 | 0% | Contact | adigarst | Belum dijadwalkan | Needs Plan | |
| 4 | Nadia Putri | Nadia |
WhatsApp
WhatsApp
|
Rp9.000.000 | 85% | Close | CS 1 |
8 Februari 2026 - 12:00 PM
Kirim invoice DP 50%, minta data onboarding
|
Overdue | |
| 5 | CV Maju Jaya | Admin |
Chat
Website Chat
|
Rp24.000.000 | 70% | Proposal | Putu |
11 Februari 2026 - 10:00 AM
Follow up approval proposal, siap revisi jika perlu
|
Overdue | |
| 6 | Komang Putra | Komang |
Form
Website Form
|
Rp18.000.000 | 55% | Meeting | Putu |
10 Februari 2026 - 4:00 PM
Meeting 30 menit, lock fitur, timeline, revisi
|
Overdue | |
| 7 | Toko Rasa Nusantara | Owner |
Repeat order
Email
|
Rp4.500.000 | 100% | Follow-Up | Putu | Belum dijadwalkan | Won | |
| 8 | Dewi Lestari | Dewi |
DM IG
Instagram
|
Rp6.500.000 | 45% | Qualification | CS 2 |
8 Februari 2026 - 9:00 AM
Kualifikasi budget dan timeline, tentukan scope final
|
Overdue | |
| 9 | PT Bali Kreatif | Wayan |
Referral
WhatsApp
|
Rp12.500.000 | 35% | Contact | CS 1 |
9 Februari 2026 - 10:00 AM
Follow up WA, tanya deadline dan contoh referensi
|
Overdue |
| No | Nama | Channel | Minat | Owner | Next Follow Up | Status | |
|---|---|---|---|---|---|---|---|
| 1 |
adigarst
adigarst
|
Import dari wp_users
Website
|
Import dari wp_users | adigarst |
-
Kirim welcome dan edukasi pertama
|
Needs Plan | |
| 2 |
Bayu Kencana
Bayu Kencana
|
Download, Template Brief Website
Website
|
Template Brief Website | adigarst |
-
Kirim email edukasi #2
|
Needs Plan | |
| 3 |
PT Bali Kreatif
Wayan
|
Referral
WhatsApp
|
Website company profile + SEO basic | CS 1 |
9 Februari 2026 - 10:00 AM
Follow up WA, tanya deadline dan contoh referensi
|
Overdue |
| No | Nama | Kebutuhan | Budget | Timeline | Score | Owner | Next Step | Status | |
|---|---|---|---|---|---|---|---|---|---|
| 1 |
Nidia Ayu
Nidia Ayu
|
adigarst |
11 Februari 2026 - 4:00 PM
Tangkap kebutuhannya apa
|
Overdue | |||||
| 2 |
Dewi Lestari
Dewi
|
Landing, copy, form, tracking | 5-8 juta | 2 minggu | 7/10 | CS 2 |
8 Februari 2026 - 9:00 AM
Kualifikasi budget dan timeline, tentukan scope final
|
Overdue |
| No | Nama | Meeting | Ringkasan | Owner | Next Step | Status | |
|---|---|---|---|---|---|---|---|
| 1 |
Komang Putra
Komang
|
10 Februari 2026 - 4:00 PM
Zoom
|
Bahas scope, akses admin, portal revisi, konten | Putu |
10 Februari 2026 - 4:00 PM
Meeting 30 menit, lock fitur, timeline, revisi
|
Overdue |
| No | Nama | Value | Proposal | Status Proposal | Owner | Next Step | Status | |
|---|---|---|---|---|---|---|---|---|
| 1 |
CV Maju Jaya
Admin
|
Rp24.000.000 |
Kirim: 7 Februari 2026 - 4:30 PM
Expire: 14 Februari 2026
Proposal, link dummy
|
Menunggu approval | Putu |
11 Februari 2026 - 10:00 AM
Follow up approval proposal, siap revisi jika perlu
|
Overdue |
| No | Nama | Value | Pembayaran | Invoice | Agreement | Owner | Next Step | Status | |
|---|---|---|---|---|---|---|---|---|---|
| 1 |
Nadia Putri
Nadia
|
Rp9.000.000 | DP 50% | Dikirim | Pending tanda tangan | CS 1 |
8 Februari 2026 - 12:00 PM
Kirim invoice DP 50%, minta data onboarding
|
Overdue |
| No | Nama | Payment | Handover | Project ID | Onboarding | Next Check-in | Status | |
|---|---|---|---|---|---|---|---|---|
| 1 |
Toko Rasa Nusantara
Owner
|
Full, Paid | 7 Februari 2026 - 5:10 PM | PJ-9001 | Onboarding selesai | 14 Februari 2026 | Won |

Siap, aku sudah baca page-sales.php, ini pemahaman menyeluruh tentang kondisi halaman Sales sekarang, apa yang sudah jalan, apa yang masih placeholder, dan tabel/field apa saja yang terlibat.
Halaman /sales adalah pipeline untuk “deal”, yaitu lead yang sudah dianggap punya potensi beli, lalu diproses tim sales sampai handover ke Project Management.
Framework yang dipakai: 6 Stage Sales Pipeline
Secara konsep, deal ini idealnya berasal dari modul Marketing (lead dipromosikan ke Sales), dan di Sales fokusnya bukan “traffic temperature”, tapi progres menuju transaksi dan handover.
tb_sales_dealsHalaman ini sudah pakai database, bukan dummy.
Query mengambil data dari tb_sales_deals dengan filter:
created_at BETWEEN start 00:00:00 AND end 23:59:59q (LIKE) ke 10 kolomORDER BY created_at DESCLIMIT 500Kolom yang di SELECT dan dipakai (dikelompokkan sesuai kebutuhan pipeline):
A. Identitas, status umum
id_sales_dealid_lead (link balik ke lead asal dari Marketing)created_atstage (contact, qualification, meeting, proposal, close, followup)deal_status (sudah ada di DB, belum dipakai di UI)is_won (dipakai untuk badge status)B. Info deal dan kontak
deal_namepic_nameemailphonesourcechannelinterestownerC. Nilai dan aktivitas follow up
deal_valueproblast_touch_at (sudah ada, belum ditampilkan)next_followup_at (dipakai untuk overdue dan tampilan next follow up)next_action (ditampilkan sebagai catatan kecil di bawah next follow up)D. Qualification fields
qual_budget_rangequal_timelinequal_decision_makerqual_scorequal_needE. Meeting fields
meeting_atmeeting_typemeeting_summaryF. Proposal fields
proposal_sent_atproposal_expiryproposal_linkproposal_statusG. Close fields
payment_typeinvoice_statusagreement_statusH. Follow-Up, handover ke PM
handover_athandover_project_idonboarding_statusnext_checkinCatatan penting: saat ini halaman menyimpan “data per stage” sebagai kolom-kolom di satu tabel yang sama, jadi sifatnya snapshot, bukan histori berlapis.
Dihitung dari hasil query yang sudah terfilter tanggal dan search:
deal_valueround(deal_value * prob / 100)stage != followupis_won kosongnext_followup_at < waktu sekarangInput GET:
tab (default all)q (search)start dan end (format Y-m-d, default 3 bulan terakhir sampai hari ini)Validasi format tanggal sudah ada, kalau invalid balik ke default.
Catatan: filter tanggal berbasis created_at, artinya deal lama yang masih aktif bisa “hilang” dari tampilan kalau range default 3 bulan tidak mencakup created_at nya.
Tabs menggunakan Bootstrap Tabs (client side), tetapi halaman juga punya parameter tab untuk menentukan tab aktif saat load pertama.
Yang ditampilkan:
Counting badge tiap tab dihitung dari hasil data yang sudah ke-load, memakai stage.
Fungsi wb_status_badge(stageKey, next_followup, isWon):
is_won true, badge Wonfollowup, badge Handover8 Februari 20268 Februari 2026 - 4:00 PMIni sudah sesuai pola yang kamu minta.
Toast muncul berdasarkan query param:
?ok=1 atau ?updated=1 = sukses?err=1&msg=... = gagalSetelah toast muncul, script menghapus parameter tersebut dari URL (clean URL).
Di beberapa tempat ada tombol dan dropdown action, tapi link-nya masih href="#", jadi belum ada endpoint maupun handler:
Artinya, sekarang halaman Sales baru berfungsi sebagai:
Dari implementasi sekarang, “catatan tiap stage” bukan disimpan sebagai list histori, tapi sebagai field snapshot di tb_sales_deals, contohnya:
Kalau tujuanmu adalah “mencatat history yang terjadi di masing masing tahap” sebagai timeline log yang bisa banyak entri, itu belum terlihat di code ini, karena belum ada tabel log seperti tb_sales_deal_logs atau tb_sales_stage_histories. Saat ini baru siap untuk 1 data terakhir per jenis stage.
Di tabel ada id_lead, jadi desainnya jelas mengarah ke:
tb_sales_deals yang menyimpan id_lead sebagai referensi.Namun di page-sales.php ini belum ada mekanisme create dari Marketing, dan belum ada “detail view” yang membuka data lead asal.
Sudah ada
tb_sales_dealsBelum ada (masih placeholder)
Kalau instruksi berikutnya nanti adalah “mulai bikin operasionalnya jalan”, berarti step paling dekat biasanya: buat halaman Detail Deal, lalu dari detail itu ada form update per stage + tombol pindah stage, baru setelah itu integrasi create dari Marketing dan handover ke PM.