mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-03 05:28:27 +00:00
[lead] [address] store lead address in Address doctype, with link field=lead
This commit is contained in:
@@ -27,7 +27,7 @@ class DocType:
|
||||
|
||||
def autoname(self):
|
||||
if not self.doc.address_title:
|
||||
self.doc.address_title = self.doc.customer or self.doc.supplier or self.doc.sales_partner
|
||||
self.doc.address_title = self.doc.customer or self.doc.supplier or self.doc.sales_partner or self.doc.lead
|
||||
|
||||
if self.doc.address_title:
|
||||
self.doc.name = cstr(self.doc.address_title).strip() + "-" + cstr(self.doc.address_type).strip()
|
||||
@@ -35,40 +35,32 @@ class DocType:
|
||||
else:
|
||||
webnotes.msgprint("""Address Title is mandatory.""", raise_exception=True)
|
||||
|
||||
|
||||
def validate(self):
|
||||
self.validate_primary_address()
|
||||
self.validate_shipping_address()
|
||||
|
||||
def validate_primary_address(self):
|
||||
"""Validate that there can only be one primary address for particular customer, supplier"""
|
||||
sql = webnotes.conn.sql
|
||||
if self.doc.is_primary_address == 1:
|
||||
if self.doc.customer:
|
||||
sql("update tabAddress set is_primary_address=0 where customer = '%s'" % (self.doc.customer))
|
||||
elif self.doc.supplier:
|
||||
sql("update tabAddress set is_primary_address=0 where supplier = '%s'" % (self.doc.supplier))
|
||||
elif self.doc.sales_partner:
|
||||
sql("update tabAddress set is_primary_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
|
||||
elif not self.doc.is_shipping_address:
|
||||
if self.doc.customer:
|
||||
if not sql("select name from tabAddress where is_primary_address=1 and customer = '%s'" % (self.doc.customer)):
|
||||
self.doc.is_primary_address = 1
|
||||
elif self.doc.supplier:
|
||||
if not sql("select name from tabAddress where is_primary_address=1 and supplier = '%s'" % (self.doc.supplier)):
|
||||
self.doc.is_primary_address = 1
|
||||
elif self.doc.sales_partner:
|
||||
if not sql("select name from tabAddress where is_primary_address=1 and sales_partner = '%s'" % (self.doc.sales_partner)):
|
||||
self.doc.is_primary_address = 1
|
||||
|
||||
self._unset_other("is_primary_address")
|
||||
|
||||
elif self.doc.is_shipping_address != 1:
|
||||
for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
|
||||
if self.doc.fields.get(fieldname):
|
||||
if not webnotes.conn.sql("""select name from `tabAddress` where is_primary_address=1
|
||||
and `%s`=%s and name!=%s""" % (fieldname, "%s", "%s"),
|
||||
(self.doc.fields[fieldname], self.doc.name)):
|
||||
self.doc.is_primary_address = 1
|
||||
break
|
||||
|
||||
def validate_shipping_address(self):
|
||||
"""Validate that there can only be one shipping address for particular customer, supplier"""
|
||||
sql = webnotes.conn.sql
|
||||
if self.doc.is_shipping_address == 1:
|
||||
if self.doc.customer:
|
||||
sql("update tabAddress set is_shipping_address=0 where customer = '%s'" % (self.doc.customer))
|
||||
elif self.doc.supplier:
|
||||
sql("update tabAddress set is_shipping_address=0 where supplier = '%s'" % (self.doc.supplier))
|
||||
elif self.doc.sales_partner:
|
||||
sql("update tabAddress set is_shipping_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
|
||||
self._unset_other("is_shipping_address")
|
||||
|
||||
def _unset_other(self, is_address_type):
|
||||
for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
|
||||
if self.doc.fields.get(fieldname):
|
||||
webnotes.conn.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
|
||||
(is_address_type, fieldname, "%s", "%s"), (self.doc.fields[fieldname], self.doc.name))
|
||||
break
|
||||
@@ -2,7 +2,7 @@
|
||||
{
|
||||
"creation": "2013-01-10 16:34:32",
|
||||
"docstatus": 0,
|
||||
"modified": "2013-01-29 13:24:45",
|
||||
"modified": "2013-06-28 17:06:32",
|
||||
"modified_by": "Administrator",
|
||||
"owner": "Administrator"
|
||||
},
|
||||
@@ -46,11 +46,11 @@
|
||||
"label": "Address Details"
|
||||
},
|
||||
{
|
||||
"description": "e.g. Office, Billing, Shipping",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "address_type",
|
||||
"fieldtype": "Data",
|
||||
"fieldtype": "Select",
|
||||
"label": "Address Type",
|
||||
"options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
@@ -145,7 +145,7 @@
|
||||
"doctype": "DocField",
|
||||
"fieldname": "is_primary_address",
|
||||
"fieldtype": "Check",
|
||||
"label": "Is Primary Address"
|
||||
"label": "Preferred Billing Address"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
@@ -154,7 +154,7 @@
|
||||
"fieldname": "is_shipping_address",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 1,
|
||||
"label": "Is Shipping Address"
|
||||
"label": "Preferred Shipping Address"
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
@@ -207,6 +207,27 @@
|
||||
"label": "Sales Partner",
|
||||
"options": "Sales Partner"
|
||||
},
|
||||
{
|
||||
"doctype": "DocField",
|
||||
"fieldname": "column_break_22",
|
||||
"fieldtype": "Column Break"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:!doc.supplier && !doc.sales_partner",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "lead",
|
||||
"fieldtype": "Link",
|
||||
"label": "Lead",
|
||||
"options": "Lead"
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:!doc.supplier && !doc.sales_partner",
|
||||
"doctype": "DocField",
|
||||
"fieldname": "lead_name",
|
||||
"fieldtype": "Data",
|
||||
"label": "Lead Name",
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"doctype": "DocPerm",
|
||||
"role": "Sales User"
|
||||
|
||||
@@ -170,21 +170,30 @@ class TransactionBase(StatusUpdater):
|
||||
|
||||
# Get Lead Details
|
||||
# -----------------------
|
||||
def get_lead_details(self, name):
|
||||
details = webnotes.conn.sql("select name, lead_name, address_line1, address_line2, city, country, state, pincode, territory, phone, mobile_no, email_id, company_name from `tabLead` where name = '%s'" %(name), as_dict = 1)
|
||||
|
||||
extract = lambda x: details and details[0] and details[0].get(x,'') or ''
|
||||
address_fields = [('','address_line1'),('\n','address_line2'),('\n','city'),(' ','pincode'),('\n','state'),('\n','country'),('\nPhone: ','contact_no')]
|
||||
address_display = ''.join([a[0]+extract(a[1]) for a in address_fields if extract(a[1])])
|
||||
if address_display.startswith('\n'): address_display = address_display[1:]
|
||||
def get_lead_details(self, name):
|
||||
details = webnotes.conn.sql("""select name, lead_name, address_line1, address_line2, city, country, state, pincode
|
||||
from `tabAddress` where lead=%s""", name, as_dict=True)
|
||||
lead = webnotes.conn.get_value("Lead", name,
|
||||
["territory", "phone", "mobile_no", "email_id", "company_name", "lead_name"], as_dict=True) or {}
|
||||
|
||||
address_display = ""
|
||||
if details:
|
||||
details = details[0]
|
||||
for separator, fieldname in (('','address_line1'), ('\n','address_line2'), ('\n','city'),
|
||||
(' ','pincode'), ('\n','state'), ('\n','country'), ('\nPhone: ', 'phone')):
|
||||
if details.get(fieldname):
|
||||
address_display += separator + details.get(fieldname)
|
||||
|
||||
if address_display.startswith('\n'):
|
||||
address_display = address_display[1:]
|
||||
|
||||
ret = {
|
||||
'contact_display' : extract('lead_name'),
|
||||
'contact_display' : lead.get('lead_name'),
|
||||
'address_display' : address_display,
|
||||
'territory' : extract('territory'),
|
||||
'contact_mobile' : extract('mobile_no'),
|
||||
'contact_email' : extract('email_id'),
|
||||
'customer_name' : extract('company_name') or extract('lead_name')
|
||||
'territory' : lead.get('territory'),
|
||||
'contact_mobile' : lead.get('mobile_no'),
|
||||
'contact_email' : lead.get('email_id'),
|
||||
'customer_name' : lead.get('company_name') or lead.get('lead_name')
|
||||
}
|
||||
return ret
|
||||
|
||||
|
||||
Reference in New Issue
Block a user