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:

  1. Peristiwa DocType
  2. API
  3. 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.

📚 Pelajari Lebih Lanjut

Discard
Save

On this page

Review Changes ← Back to Content
Message Status Space Raised By Last update on