import frappe from frappe.utils import today @frappe.whitelist() def add_lead_to_campaign(lead_name, campaign_name, start_date=None): if not frappe.db.exists("Lead", lead_name): frappe.throw("Lead does not exist") # Check if there's already a scheduled/in-progress campaign for this Lead with same name existing = frappe.db.exists("Email Campaign", { "recipient": lead_name, "campaign_name": campaign_name, "email_campaign_for": "Lead", "status": ["in", ["Scheduled", "In Progress"]] }) if existing: frappe.throw("This Lead is already in this Email Campaign") doc = frappe.new_doc("Email Campaign") doc.update({ "campaign_name": campaign_name, "email_campaign_for": "Lead", "recipient": lead_name, "start_date": start_date or today(), "sender": frappe.session.user # or replace with a specific default sender }) doc.insert(ignore_permissions=True) frappe.db.commit() return {"status": "success", "message": "Email Campaign created"}