From 82ee5fdba6b8f33b159c198f18ba6825a6aee94a Mon Sep 17 00:00:00 2001 From: Rushabh Mehta Date: Mon, 4 May 2015 18:17:22 +0530 Subject: [PATCH] [email] changes in email_account api --- erpnext/crm/doctype/lead/lead.py | 6 +-- .../crm/doctype/opportunity/opportunity.py | 39 ++++++++++--------- .../hr/doctype/job_applicant/job_applicant.py | 7 ++-- erpnext/support/doctype/issue/issue.py | 6 +-- 4 files changed, 28 insertions(+), 30 deletions(-) diff --git a/erpnext/crm/doctype/lead/lead.py b/erpnext/crm/doctype/lead/lead.py index 0fb8d48ebb..b523416484 100644 --- a/erpnext/crm/doctype/lead/lead.py +++ b/erpnext/crm/doctype/lead/lead.py @@ -11,14 +11,12 @@ from frappe.model.mapper import get_mapped_doc from erpnext.controllers.selling_controller import SellingController from erpnext.utilities.address_and_contact import load_address_and_contact +sender_field = "email_id" + class Lead(SellingController): def get_feed(self): return '{0}: {1}'.format(_(self.status), self.lead_name) - def set_sender(self, sender): - """Will be called by **Communication** when a Lead is created from an incoming email.""" - self.email_id = sender - def onload(self): customer = frappe.db.get_value("Customer", {"lead_name": self.name}) self.get("__onload").is_customer = customer diff --git a/erpnext/crm/doctype/opportunity/opportunity.py b/erpnext/crm/doctype/opportunity/opportunity.py index e185254d9e..08d413f6f6 100644 --- a/erpnext/crm/doctype/opportunity/opportunity.py +++ b/erpnext/crm/doctype/opportunity/opportunity.py @@ -9,25 +9,10 @@ from frappe.model.mapper import get_mapped_doc from erpnext.utilities.transaction_base import TransactionBase +subject_field = "title" +sender_field = "contact_email" + class Opportunity(TransactionBase): - def set_sender(self, email_id): - """Set lead against new opportunity""" - lead_name = frappe.db.get_value("Lead", {"email_id": email_id}) - if not lead_name: - lead = frappe.get_doc({ - "doctype": "Lead", - "email_id": email_id, - "lead_name": email_id - }) - lead.insert(ignore_permissions=True) - lead_name = lead.name - - self.enquiry_from = "Lead" - self.lead = lead_name - - def set_subject(self, subject): - self.title = subject - def after_insert(self): if self.lead: frappe.get_doc("Lead", self.lead).set_status(update=True) @@ -40,6 +25,8 @@ class Opportunity(TransactionBase): (not cint(self.get("__islocal"))) else None, }) + self.make_new_lead_if_required() + if not self.enquiry_from: frappe.throw(_("Opportunity From field is mandatory")) @@ -55,6 +42,22 @@ class Opportunity(TransactionBase): from erpnext.accounts.utils import validate_fiscal_year validate_fiscal_year(self.transaction_date, self.fiscal_year, _("Opportunity Date"), self) + def make_new_lead_if_required(self): + """Set lead against new opportunity""" + if not self.lead or self.customer: + lead_name = frappe.db.get_value("Lead", {"email_id": self.contact_email}) + if not lead_name: + lead = frappe.get_doc({ + "doctype": "Lead", + "email_id": self.contact_email, + "lead_name": self.contact_email + }) + lead.insert(ignore_permissions=True) + lead_name = lead.name + + self.enquiry_from = "Lead" + self.lead = lead_name + def declare_enquiry_lost(self,arg): if not self.has_quotation(): frappe.db.set(self, 'status', 'Lost') diff --git a/erpnext/hr/doctype/job_applicant/job_applicant.py b/erpnext/hr/doctype/job_applicant/job_applicant.py index 5fb11604ca..b0482cd6cc 100644 --- a/erpnext/hr/doctype/job_applicant/job_applicant.py +++ b/erpnext/hr/doctype/job_applicant/job_applicant.py @@ -9,12 +9,14 @@ import frappe from frappe import _ from frappe.utils import comma_and +sender_field = "email_id" + class JobApplicant(Document): def onload(self): offer_letter = frappe.get_all("Offer Letter", filters={"job_applicant": self.name}) if offer_letter: self.get("__onload").offer_letter = offer_letter[0].name - + def autoname(self): keys = filter(None, (self.applicant_name, self.email_id)) if not keys: @@ -31,6 +33,3 @@ class JobApplicant(Document): if names: frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(names)), frappe.DuplicateEntryError) - - def set_sender(self, sender): - self.email_id = sender diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index be23ff7bfe..0ab03cb788 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -10,14 +10,12 @@ from frappe.model.document import Document from frappe.utils import now from frappe.utils.user import is_website_user +sender_field = "raised_by" + class Issue(Document): def get_feed(self): return "{0}: {1}".format(_(self.status), self.subject) - def set_sender(self, sender): - """Will be called by **Communication** when the Issue is created from an incoming email.""" - self.raised_by = sender - def validate(self): self.update_status() self.set_lead_contact(self.raised_by)