fix: use new Contact schema
diff --git a/erpnext/crm/doctype/lead/lead.json b/erpnext/crm/doctype/lead/lead.json
index c8e9fbc..2219307 100644
--- a/erpnext/crm/doctype/lead/lead.json
+++ b/erpnext/crm/doctype/lead/lead.json
@@ -486,6 +486,15 @@
"read": 1,
"report": 1,
"role": "Sales User"
+ },
+ {
+ "email": 1,
+ "export": 1,
+ "print": 1,
+ "read": 1,
+ "report": 1,
+ "role": "Guest",
+ "share": 1
}
],
"search_fields": "lead_name,lead_owner,status",
diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py
index c041609..6645c4d 100644
--- a/erpnext/crm/doctype/lead/lead.py
+++ b/erpnext/crm/doctype/lead/lead.py
@@ -80,8 +80,8 @@
def check_email_id_is_unique(self):
if self.email_id:
# validate email is unique
- duplicate_leads = frappe.db.sql_list("""select name from tabLead
- where email_id=%s and name!=%s""", (self.email_id, self.name))
+ duplicate_leads = frappe.get_all("Lead", filters={"email_id": self.email_id, "name": ["!=", self.name]})
+ duplicate_leads = [lead.name for lead in duplicate_leads]
if duplicate_leads:
frappe.throw(_("Email Address must be unique, already exists for {0}")
@@ -154,13 +154,28 @@
else:
first_name, last_name = self.lead_name, None
- contact_fields = ["email_id", "salutation", "gender", "designation", "phone", "mobile_no"]
-
contact = frappe.new_doc("Contact")
- contact.update({contact_field: self.get(contact_field) for contact_field in contact_fields})
contact.update({
"first_name": first_name,
- "last_name": last_name
+ "last_name": last_name,
+ "salutation": self.salutation,
+ "gender": self.gender,
+ "designation": self.designation,
+ "email_ids": [
+ {
+ "email_id": self.email_id,
+ "is_primary": 1
+ }
+ ],
+ "phone_nos": [
+ {
+ "phone": self.phone,
+ "is_primary": 1
+ },
+ {
+ "phone": self.mobile_no,
+ }
+ ]
})
contact.insert()
@@ -186,8 +201,8 @@
self.contact_doc.save()
def flush_address_and_contact_fields(self):
- fields = ['address_line1', 'address_line2', 'address_title', 'city', 'country',
- 'county', 'fax', 'mobile_no', 'phone', 'pincode', 'state']
+ fields = ['address_line1', 'address_line2', 'address_title',
+ 'city', 'county', 'country', 'fax', 'pincode', 'state']
for field in fields:
self.set(field, None)