Merge branch 'develop' of https://github.com/frappe/erpnext into show_address_in_online_pos
diff --git a/erpnext/selling/doctype/customer/customer.js b/erpnext/selling/doctype/customer/customer.js
index 92734cc..55aaa02 100644
--- a/erpnext/selling/doctype/customer/customer.js
+++ b/erpnext/selling/doctype/customer/customer.js
@@ -33,7 +33,27 @@
}
}
})
+ frm.set_query('customer_primary_address', function(doc) {
+ return {
+ query: "erpnext.selling.doctype.customer.customer.get_customer_primary_address",
+ filters: {
+ 'customer': doc.name
+ }
+ }
+ })
},
+ customer_primary_address: function(frm){
+ if(!frm.doc.customer_primary_address){
+ frm.set_value("primary_address", "");
+ }
+ },
+ customer_primary_contact: function(frm){
+ if(!frm.doc.customer_primary_contact){
+ frm.set_value("mobile_no", "");
+ frm.set_value("email_id", "");
+ }
+ },
+
refresh: function(frm) {
if(frappe.defaults.get_default("cust_master_name")!="Naming Series") {
frm.toggle_display("naming_series", false);
@@ -43,7 +63,7 @@
frappe.dynamic_link = {doc: frm.doc, fieldname: 'name', doctype: 'Customer'}
- frm.toggle_display(['address_html','contact_html','primary_contact_detail'], !frm.doc.__islocal);
+ frm.toggle_display(['address_html','contact_html','primary_address_and_contact_detail'], !frm.doc.__islocal);
if(!frm.doc.__islocal) {
frappe.contacts.render_address_and_contact(frm);
diff --git a/erpnext/selling/doctype/customer/customer.json b/erpnext/selling/doctype/customer/customer.json
index b2577d5..8a57f6d 100644
--- a/erpnext/selling/doctype/customer/customer.json
+++ b/erpnext/selling/doctype/customer/customer.json
@@ -725,7 +725,8 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "fieldname": "primary_contact_detail",
+ "description": "Select, to make the customer searchable with these fields",
+ "fieldname": "primary_address_and_contact_detail",
"fieldtype": "Section Break",
"hidden": 0,
"ignore_user_permissions": 0,
@@ -734,7 +735,7 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
- "label": "Primary Contact Detail",
+ "label": "Primary Address and Contact Detail",
"length": 0,
"no_copy": 0,
"permlevel": 0,
@@ -786,35 +787,6 @@
"bold": 0,
"collapsible": 0,
"columns": 0,
- "fieldname": "column_break_26",
- "fieldtype": "Column Break",
- "hidden": 0,
- "ignore_user_permissions": 0,
- "ignore_xss_filter": 0,
- "in_filter": 0,
- "in_global_search": 0,
- "in_list_view": 0,
- "in_standard_filter": 0,
- "length": 0,
- "no_copy": 0,
- "permlevel": 0,
- "precision": "",
- "print_hide": 0,
- "print_hide_if_no_value": 0,
- "read_only": 0,
- "remember_last_selected_value": 0,
- "report_hide": 0,
- "reqd": 0,
- "search_index": 0,
- "set_only_once": 0,
- "unique": 0
- },
- {
- "allow_bulk_edit": 0,
- "allow_on_submit": 0,
- "bold": 0,
- "collapsible": 0,
- "columns": 0,
"fieldname": "mobile_no",
"fieldtype": "Read Only",
"hidden": 0,
@@ -824,7 +796,7 @@
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 0,
- "label": "Mobile Number",
+ "label": "Mobile No",
"length": 0,
"no_copy": 0,
"options": "customer_primary_contact.mobile_no",
@@ -875,6 +847,98 @@
"allow_bulk_edit": 0,
"allow_on_submit": 0,
"bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "column_break_26",
+ "fieldtype": "Column Break",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "length": 0,
+ "no_copy": 0,
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "fieldname": "customer_primary_address",
+ "fieldtype": "Link",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Customer Primary Address",
+ "length": 0,
+ "no_copy": 0,
+ "options": "Address",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
+ "collapsible": 0,
+ "columns": 0,
+ "default": "",
+ "fieldname": "primary_address",
+ "fieldtype": "Read Only",
+ "hidden": 0,
+ "ignore_user_permissions": 0,
+ "ignore_xss_filter": 0,
+ "in_filter": 0,
+ "in_global_search": 0,
+ "in_list_view": 0,
+ "in_standard_filter": 0,
+ "label": "Primary Address",
+ "length": 0,
+ "no_copy": 0,
+ "options": "",
+ "permlevel": 0,
+ "precision": "",
+ "print_hide": 0,
+ "print_hide_if_no_value": 0,
+ "read_only": 0,
+ "remember_last_selected_value": 0,
+ "report_hide": 0,
+ "reqd": 0,
+ "search_index": 0,
+ "set_only_once": 0,
+ "unique": 0
+ },
+ {
+ "allow_bulk_edit": 0,
+ "allow_on_submit": 0,
+ "bold": 0,
"collapsible": 1,
"collapsible_depends_on": "",
"columns": 0,
@@ -1383,7 +1447,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
- "modified": "2018-01-30 11:52:05.497363",
+ "modified": "2018-01-31 16:44:52.191083",
"modified_by": "Administrator",
"module": "Selling",
"name": "Customer",
@@ -1574,7 +1638,7 @@
"quick_entry": 1,
"read_only": 0,
"read_only_onload": 0,
- "search_fields": "customer_name,customer_group,territory, mobile_no",
+ "search_fields": "customer_name,customer_group,territory, mobile_no,primary_address",
"show_name_in_global_search": 1,
"sort_order": "ASC",
"title_field": "customer_name",
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 2284f85..d0db648 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -20,6 +20,7 @@
"""Load address and contacts in `__onload`"""
load_address_and_contact(self)
self.load_dashboard_info()
+ self.fetch_primary_address_and_contact_detail()
def load_dashboard_info(self):
info = get_dashboard_info(self.doctype, self.name)
@@ -53,6 +54,7 @@
self.flags.old_lead = self.lead_name
validate_party_accounts(self)
self.validate_credit_limit_on_change()
+ self.fetch_primary_address_and_contact_detail()
def on_update(self):
self.validate_name_with_customer_group()
@@ -65,6 +67,16 @@
if self.flags.is_new_doc:
self.create_lead_address_contact()
+ def fetch_primary_address_and_contact_detail(self):
+ if(self.customer_primary_contact):
+ primary_contact_doc = frappe.get_doc("Contact",self.customer_primary_contact)
+ self.mobile_no = primary_contact_doc.mobile_no
+ self.email_id = primary_contact_doc.email_id
+
+ if(self.customer_primary_address):
+ primary_address_doc = frappe.get_doc("Address",self.customer_primary_address)
+ self.primary_address = "<br>" + primary_address_doc.get_display()
+
def create_primary_contact(self):
if not self.customer_primary_contact and not self.lead_name:
if self.mobile_no or self.email_id:
@@ -309,3 +321,15 @@
'customer': customer,
'txt': '%%%s%%' % txt
})
+
+def get_customer_primary_address(doctype, txt, searchfield, start, page_len, filters):
+ customer = frappe.db.escape(filters.get('customer'))
+ return frappe.db.sql("""
+ select `tabAddress`.name from `tabAddress`, `tabDynamic Link`
+ where `tabAddress`.name = `tabDynamic Link`.parent and `tabDynamic Link`.link_name = %(customer)s
+ and `tabDynamic Link`.link_doctype = 'Customer' and `tabAddress`.is_primary_address = 1
+ and `tabAddress`.name like %(txt)s
+ """, {
+ 'customer': customer,
+ 'txt': '%%%s%%' % txt
+ })
\ No newline at end of file