Home Page - Skrip Khusus (Custom Script)
Di BizOps CRM, Anda dapat mengotomatiskan pembuatan prospek menggunakan fitur Skrip Server . Server ScriptDocType memungkinkan Anda menulis kode Python sisi server tanpa membuat aplikasi khusus atau menerapkan apa pun.
Ada empat jenis Skrip Server, tetapi untuk panduan ini kami akan fokus pada:
- Peristiwa DocType
- API
- Penjadwal Acara
✉️ 1. Buat Prospek Saat Email Diterima (Acara DocType)
Katakanlah Anda ingin membuat Prospek setiap kali ada email masuk yang diterima.
Langkah 1: Buka Skrip Server
Navigasi ke: Meja → Cari Skrip Server → Tambahkan Skrip Server


Langkah 2: Isi berikut ini:
| Bidang | Nilai |
|---|---|
| Jenis Skrip | Peristiwa DocType |
| Tipe dokumen | Komunikasi |
| Peristiwa | Setelah Memasukkan |
| Naskah | (lihat di bawah) |
Contoh Skrip:
if doc.communication_type == 'Communication' and doc.sent_or_received == 'Received':
existing_lead = frappe.db.exists("CRM Lead", {"email": doc.sender})
if not existing_lead:
frappe.get_doc({
"doctype": "CRM Lead",
"first_name": doc.sender_full_name,
"email": doc.sender,
"source": "Email",
"status": "New",
}).insert(ignore_permissions=True)
Ini akan secara otomatis membuat Prospek baru untuk setiap email masuk baru, menghindari duplikat.
🌐 2. Buat Prospek melalui API Kustom (Skrip API)
Terkadang Anda ingin mengizinkan sistem eksternal untuk membuat prospek dengan memanggil titik akhir API.
Langkah 1: Buka Skrip Server
Navigasi ke: Meja → Cari Skrip Server → Tambahkan Skrip Server


Langkah 2: Isi berikut ini:
| Bidang | Nilai |
|---|---|
| Jenis Skrip | API |
| Metode API | create_lead_api |
| Naskah | (lihat di bawah) |
Contoh Skrip:
data = frappe.local.form_dict
if not data.get("email") or not data.get("name"):
frappe.throw("Missing required fields: 'email' and 'name'")
existing_lead = frappe.db.exists("CRM Lead", {"email": data["email"]})
if existing_lead:
frappe.response["message"] = f"Lead already exists: {existing_lead}"
else:
lead = frappe.get_doc({
"doctype": "CRM Lead",
"first_name": data["name"],
"email": data["email"],
"status": "New",
"source": "API"
})
lead.insert(ignore_permissions=True)
frappe.response["message"] = f"Lead created: {lead.name}"
Cara Penggunaan:
Kirim POSTpermintaan ke:
https://<your-site>/api/method/create_lead_api
Dengan tubuh:
{
"email": "someone@example.com",
"name": "Someone"
}
⏰ 3. Buat Prospek melalui Pekerjaan Terjadwal (Acara Penjadwal)
Anda mungkin ingin membuat prospek secara berkala berdasarkan beberapa logika — misalnya, prospek dari tabel lain, atau pengguna yang tidak aktif.
Langkah 1: Buka Skrip Server
Navigasi ke: Meja → Cari Skrip Server → Tambahkan Skrip Server


Langkah 2: Isi berikut ini:
| Bidang | Nilai |
|---|---|
| Jenis Skrip | Penjadwal Acara |
| Ekspresi Cron | 0 * * * * (Setiap jam) |
| Naskah | (lihat di bawah) |
Contoh Skrip:
# Example: Create a test lead every hour for demo
frappe.get_doc({
"doctype": "CRM Lead",
"first_name": "Auto Generated Lead",
"email": f"demo_{frappe.utils.now_datetime().strftime('%H%M%S')}@example.com",
"source": "Scheduled Script",
"status": "New"
}).insert(ignore_permissions=True)
Anda dapat mengganti logika ini dengan kueri, filter, atau aturan khusus apa pun untuk menghasilkan prospek.
🔒 Permintaan Izin (Dilewati)
Tipe Kueri Izin digunakan untuk mengontrol visibilitas rekaman secara dinamis. Tipe ini tidak digunakan untuk pembuatan prospek, jadi kami akan melewatkannya dalam panduan ini.
📌 Tips
- Selalu uji skrip Anda di Situs Uji sebelum menggunakannya dalam produksi.
- Gunakan
ignore_permissions=Truedengan hati-hati. - Digunakan
bizops.throw()untuk validasi input dalam skrip API.