diff --git a/erpnext/hooks.py b/erpnext/hooks.py index f4b87d2689..5b4e687b3b 100644 --- a/erpnext/hooks.py +++ b/erpnext/hooks.py @@ -148,8 +148,8 @@ doc_events = { "User": { "after_insert": "frappe.email.doctype.contact.contact.update_contact", "validate": "erpnext.hr.doctype.employee.employee.validate_employee_role", - "on_update": "erpnext.hr.doctype.employee.employee.update_user_permissions", - "on_update": "frappe.geo.address_and_contact.set_default_role" + "on_update": ["erpnext.hr.doctype.employee.employee.update_user_permissions", + "erpnext.portal.utils.set_default_role"] }, ("Sales Taxes and Charges Template", 'Price List'): { "on_update": "erpnext.shopping_cart.doctype.shopping_cart_settings.shopping_cart_settings.validate_cart_settings" diff --git a/erpnext/portal/utils.py b/erpnext/portal/utils.py new file mode 100644 index 0000000000..7dffd03341 --- /dev/null +++ b/erpnext/portal/utils.py @@ -0,0 +1,17 @@ +import frappe + +def set_default_role(doc, method): + '''Set customer, supplier, student based on email''' + if frappe.flags.setting_role or frappe.flags.in_migrate: + return + contact_name = frappe.get_value('Contact', dict(email_id=doc.email)) + if contact_name: + contact = frappe.get_doc('Contact', contact_name) + for link in contact.links: + frappe.flags.setting_role = True + if link.link_doctype=='Customer': + doc.add_roles('Customer') + elif link.link_doctype=='Supplier': + doc.add_roles('Supplier') + elif frappe.get_value('Student', dict(student_email_id=doc.email)): + doc.add_roles('Student')