mirror of
https://github.com/frappe/erpnext.git
synced 2026-06-03 04:09:11 +00:00
[incoming sales email] to opportunity
This commit is contained in:
@@ -33,6 +33,7 @@ class Lead(SellingController):
|
||||
})
|
||||
|
||||
self.set_status()
|
||||
self.check_email_id_is_unique()
|
||||
|
||||
if self.source == 'Campaign' and not self.campaign_name and session['user'] != 'Guest':
|
||||
frappe.throw(_("Campaign Name is required"))
|
||||
@@ -45,7 +46,6 @@ class Lead(SellingController):
|
||||
self.lead_owner = None
|
||||
|
||||
def on_update(self):
|
||||
self.check_email_id_is_unique()
|
||||
self.add_calendar_event()
|
||||
|
||||
def add_calendar_event(self, opts=None, force=False):
|
||||
@@ -62,9 +62,10 @@ class Lead(SellingController):
|
||||
# validate email is unique
|
||||
email_list = frappe.db.sql("""select name from tabLead where email_id=%s""",
|
||||
self.email_id)
|
||||
email_list = [e[0] for e in email_list if e[0]!=self.name]
|
||||
if len(email_list) > 1:
|
||||
items = [e[0] for e in email_list if e[0]!=self.name]
|
||||
frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(items)), frappe.DuplicateEntryError)
|
||||
frappe.throw(_("Email id must be unique, already exists for {0}").format(comma_and(email_list)),
|
||||
frappe.DuplicateEntryError)
|
||||
|
||||
def on_trash(self):
|
||||
frappe.db.sql("""update `tabIssue` set lead='' where lead=%s""",
|
||||
|
||||
@@ -92,12 +92,20 @@
|
||||
"width": "50%"
|
||||
},
|
||||
{
|
||||
"fieldname": "title",
|
||||
"fieldtype": "Data",
|
||||
"label": "Title",
|
||||
"permlevel": 0,
|
||||
"precision": ""
|
||||
},
|
||||
{
|
||||
"default": "Sales",
|
||||
"fieldname": "enquiry_type",
|
||||
"fieldtype": "Select",
|
||||
"label": "Opportunity Type",
|
||||
"oldfieldname": "enquiry_type",
|
||||
"oldfieldtype": "Select",
|
||||
"options": "\nSales\nMaintenance",
|
||||
"options": "Sales\nMaintenance",
|
||||
"permlevel": 0,
|
||||
"read_only": 0,
|
||||
"reqd": 1
|
||||
@@ -118,6 +126,14 @@
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "with_items",
|
||||
"fieldtype": "Check",
|
||||
"label": "With Items",
|
||||
"permlevel": 0,
|
||||
"precision": ""
|
||||
},
|
||||
{
|
||||
"depends_on": "with_items",
|
||||
"fieldname": "items_section",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "",
|
||||
@@ -127,7 +143,7 @@
|
||||
"read_only": 0
|
||||
},
|
||||
{
|
||||
"description": "Items which do not exist in Item master can also be entered on customer's request",
|
||||
"description": "",
|
||||
"fieldname": "items",
|
||||
"fieldtype": "Table",
|
||||
"label": "Items",
|
||||
@@ -391,8 +407,8 @@
|
||||
"icon": "icon-info-sign",
|
||||
"idx": 1,
|
||||
"is_submittable": 1,
|
||||
"modified": "2015-02-23 02:19:39.853388",
|
||||
"modified_by": "Administrator",
|
||||
"modified": "2015-04-02 21:33:55.090127",
|
||||
"modified_by": "rmehta@gmail.com",
|
||||
"module": "CRM",
|
||||
"name": "Opportunity",
|
||||
"owner": "Administrator",
|
||||
@@ -432,5 +448,5 @@
|
||||
"search_fields": "status,transaction_date,customer,lead,enquiry_type,territory,company",
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC",
|
||||
"title_field": "customer_name"
|
||||
"title_field": "title"
|
||||
}
|
||||
@@ -10,6 +10,23 @@ from frappe.model.mapper import get_mapped_doc
|
||||
from erpnext.utilities.transaction_base import TransactionBase
|
||||
|
||||
class Opportunity(TransactionBase):
|
||||
def set_sender(self, email_id):
|
||||
"""Set lead against new opportunity"""
|
||||
lead_name = frappe.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()
|
||||
lead_name = lead.name
|
||||
|
||||
self.enquiry_from = "Lead"
|
||||
self.lead = lead_name
|
||||
|
||||
def set_subject(self, subject):
|
||||
self.title = subject
|
||||
|
||||
def validate(self):
|
||||
self._prev = frappe._dict({
|
||||
@@ -28,6 +45,9 @@ class Opportunity(TransactionBase):
|
||||
self.validate_lead_cust()
|
||||
self.validate_cust_name()
|
||||
|
||||
if not self.title:
|
||||
self.title = self.customer_name
|
||||
|
||||
from erpnext.accounts.utils import validate_fiscal_year
|
||||
validate_fiscal_year(self.transaction_date, self.fiscal_year, _("Opportunity Date"), self)
|
||||
|
||||
@@ -118,7 +138,7 @@ class Opportunity(TransactionBase):
|
||||
|
||||
def validate_item_details(self):
|
||||
if not self.get('items'):
|
||||
frappe.throw(_("Items required"))
|
||||
return
|
||||
|
||||
# set missing values
|
||||
item_fields = ("item_name", "description", "item_group", "brand")
|
||||
|
||||
Reference in New Issue
Block a user