Home Page - Skrip Khusus (Custom Script)
Di BizOps CRM, Anda dapat mengotomatiskan pembuatan prospek menggunakan fitur Skrip Server . Server Script
DocType 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 POST
permintaan 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=True
dengan hati-hati. - Digunakan
bizops.throw()
untuk validasi input dalam skrip API.