@@ -0,0 +1,97 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_import": 0, | |||||
"allow_rename": 0, | |||||
"beta": 0, | |||||
"creation": "2017-01-13 04:55:18.835023", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "", | |||||
"editable_grid": 1, | |||||
"engine": "InnoDB", | |||||
"fields": [ | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "link_doctype", | |||||
"fieldtype": "Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 0, | |||||
"label": "Link DocType", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "DocType", | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "link_name", | |||||
"fieldtype": "Dynamic Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 0, | |||||
"label": "Link Name", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "link_doctype", | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
} | |||||
], | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"idx": 0, | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"in_dialog": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 1, | |||||
"max_attachments": 0, | |||||
"modified": "2017-01-13 04:55:18.835023", | |||||
"modified_by": "Administrator", | |||||
"module": "Core", | |||||
"name": "Dynamic Link", | |||||
"name_case": "", | |||||
"owner": "Administrator", | |||||
"permissions": [], | |||||
"quick_entry": 1, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"sort_field": "modified", | |||||
"sort_order": "DESC", | |||||
"track_changes": 1, | |||||
"track_seen": 0 | |||||
} |
@@ -0,0 +1,13 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and contributors | |||||
# For license information, please see license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
from frappe.model.document import Document | |||||
class DynamicLink(Document): | |||||
pass | |||||
def on_doctype_update(): | |||||
frappe.db.add_index("Dynamic Link", ["link_doctype", "link_name"]) |
@@ -837,20 +837,19 @@ | |||||
"bold": 0, | "bold": 0, | ||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 0, | "columns": 0, | ||||
"description": "users will have user permissions created for each account assigned", | |||||
"fieldname": "user_emails", | |||||
"fieldtype": "Table", | |||||
"default": "1", | |||||
"fieldname": "thread_notify", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
"ignore_xss_filter": 0, | "ignore_xss_filter": 0, | ||||
"in_filter": 0, | "in_filter": 0, | ||||
"in_list_view": 0, | "in_list_view": 0, | ||||
"in_standard_filter": 0, | "in_standard_filter": 0, | ||||
"label": "User Emails", | |||||
"label": "Send Notifications for Transactions I Follow", | |||||
"length": 0, | "length": 0, | ||||
"no_copy": 0, | "no_copy": 0, | ||||
"options": "User Email", | |||||
"permlevel": 1, | |||||
"permlevel": 0, | |||||
"precision": "", | "precision": "", | ||||
"print_hide": 0, | "print_hide": 0, | ||||
"print_hide_if_no_value": 0, | "print_hide_if_no_value": 0, | ||||
@@ -867,16 +866,42 @@ | |||||
"bold": 0, | "bold": 0, | ||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 0, | "columns": 0, | ||||
"default": "1", | |||||
"fieldname": "thread_notify", | |||||
"fieldtype": "Check", | |||||
"fieldname": "email_signature", | |||||
"fieldtype": "Small Text", | |||||
"hidden": 0, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
"ignore_xss_filter": 0, | "ignore_xss_filter": 0, | ||||
"in_filter": 0, | "in_filter": 0, | ||||
"in_list_view": 0, | "in_list_view": 0, | ||||
"in_standard_filter": 0, | "in_standard_filter": 0, | ||||
"label": "Send Notifications for Transactions I Follow", | |||||
"label": "Email Signature", | |||||
"length": 0, | |||||
"no_copy": 1, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 1, | |||||
"columns": 0, | |||||
"fieldname": "email_inbox", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Email Inbox", | |||||
"length": 0, | "length": 0, | ||||
"no_copy": 0, | "no_copy": 0, | ||||
"permlevel": 0, | "permlevel": 0, | ||||
@@ -896,18 +921,21 @@ | |||||
"bold": 0, | "bold": 0, | ||||
"collapsible": 0, | "collapsible": 0, | ||||
"columns": 0, | "columns": 0, | ||||
"fieldname": "email_signature", | |||||
"fieldtype": "Small Text", | |||||
"description": "", | |||||
"fieldname": "user_emails", | |||||
"fieldtype": "Table", | |||||
"hidden": 0, | "hidden": 0, | ||||
"ignore_user_permissions": 0, | "ignore_user_permissions": 0, | ||||
"ignore_xss_filter": 0, | "ignore_xss_filter": 0, | ||||
"in_filter": 0, | "in_filter": 0, | ||||
"in_list_view": 0, | "in_list_view": 0, | ||||
"in_standard_filter": 0, | "in_standard_filter": 0, | ||||
"label": "Email Signature", | |||||
"label": "User Emails", | |||||
"length": 0, | "length": 0, | ||||
"no_copy": 1, | |||||
"permlevel": 0, | |||||
"no_copy": 0, | |||||
"options": "User Email", | |||||
"permlevel": 1, | |||||
"precision": "", | |||||
"print_hide": 0, | "print_hide": 0, | ||||
"print_hide_if_no_value": 0, | "print_hide_if_no_value": 0, | ||||
"read_only": 0, | "read_only": 0, | ||||
@@ -1094,7 +1122,7 @@ | |||||
"collapsible": 1, | "collapsible": 1, | ||||
"columns": 0, | "columns": 0, | ||||
"default": "", | "default": "", | ||||
"description": "Uncheck modules to hide from user's desktop", | |||||
"description": "", | |||||
"fieldname": "modules_access", | "fieldname": "modules_access", | ||||
"fieldtype": "Section Break", | "fieldtype": "Section Break", | ||||
"hidden": 0, | "hidden": 0, | ||||
@@ -1785,7 +1813,7 @@ | |||||
"istable": 0, | "istable": 0, | ||||
"max_attachments": 5, | "max_attachments": 5, | ||||
"menu_index": 0, | "menu_index": 0, | ||||
"modified": "2017-01-10 08:47:42.781330", | |||||
"modified": "2017-01-13 07:10:40.266109", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Core", | "module": "Core", | ||||
"name": "User", | "name": "User", | ||||
@@ -8,7 +8,7 @@ | |||||
"docstatus": 0, | "docstatus": 0, | ||||
"doctype": "DocType", | "doctype": "DocType", | ||||
"document_type": "", | "document_type": "", | ||||
"editable_grid": 0, | |||||
"editable_grid": 1, | |||||
"fields": [ | "fields": [ | ||||
{ | { | ||||
"allow_on_submit": 0, | "allow_on_submit": 0, | ||||
@@ -23,7 +23,7 @@ | |||||
"in_filter": 0, | "in_filter": 0, | ||||
"in_list_view": 1, | "in_list_view": 1, | ||||
"in_standard_filter": 0, | "in_standard_filter": 0, | ||||
"label": "email account", | |||||
"label": "Email Account", | |||||
"length": 0, | "length": 0, | ||||
"no_copy": 0, | "no_copy": 0, | ||||
"options": "Email Account", | "options": "Email Account", | ||||
@@ -108,7 +108,7 @@ | |||||
"issingle": 0, | "issingle": 0, | ||||
"istable": 1, | "istable": 1, | ||||
"max_attachments": 0, | "max_attachments": 0, | ||||
"modified": "2017-01-05 14:52:38.744801", | |||||
"modified": "2017-01-13 07:07:40.049130", | |||||
"modified_by": "Administrator", | "modified_by": "Administrator", | ||||
"module": "Core", | "module": "Core", | ||||
"name": "User Email", | "name": "User Email", | ||||
@@ -120,5 +120,6 @@ | |||||
"read_only_onload": 0, | "read_only_onload": 0, | ||||
"sort_field": "modified", | "sort_field": "modified", | ||||
"sort_order": "DESC", | "sort_order": "DESC", | ||||
"track_changes": 0, | |||||
"track_seen": 0 | "track_seen": 0 | ||||
} | } |
@@ -282,3 +282,27 @@ def build_match_conditions(doctype, as_condition=True): | |||||
return match_conditions.replace("%", "%%") | return match_conditions.replace("%", "%%") | ||||
else: | else: | ||||
return match_conditions | return match_conditions | ||||
def get_filters_cond(doctype, filters, conditions): | |||||
if filters: | |||||
flt = filters | |||||
if isinstance(filters, dict): | |||||
filters = filters.items() | |||||
flt = [] | |||||
for f in filters: | |||||
if isinstance(f[1], basestring) and f[1][0] == '!': | |||||
flt.append([doctype, f[0], '!=', f[1][1:]]) | |||||
else: | |||||
value = frappe.db.escape(f[1]) if isinstance(f[1], basestring) else f[1] | |||||
flt.append([doctype, f[0], '=', value]) | |||||
query = DatabaseQuery(doctype) | |||||
query.filters = flt | |||||
query.conditions = conditions | |||||
query.build_filter_conditions(flt, conditions) | |||||
cond = ' and ' + ' and '.join(query.conditions) | |||||
else: | |||||
cond = '' | |||||
return cond | |||||
@@ -0,0 +1,41 @@ | |||||
// Copyright (c) 2016, Frappe Technologies and contributors | |||||
// For license information, please see license.txt | |||||
cur_frm.email_field = "email_id"; | |||||
frappe.ui.form.on("Contact", { | |||||
refresh: function(frm) { | |||||
if(frm.doc.__islocal) { | |||||
var last_route = frappe.route_history.slice(-2, -1)[0]; | |||||
if(frappe.contact_link && frappe.contact_link.doc | |||||
&& frappe.contact_link.doc.name==last_route[2]) { | |||||
frm.add_child('links', { | |||||
link_doctype: frappe.contact_link.doctype, | |||||
link_name: frappe.contact_link.doc[frappe.contact_link.fieldname] | |||||
}); | |||||
} | |||||
} | |||||
if(!frm.doc.user && !frm.is_new() && frm.perm[0].write) { | |||||
frm.add_custom_button(__("Invite as User"), function() { | |||||
frappe.call({ | |||||
method: "erpnext.utilities.doctype.contact.contact.invite_user", | |||||
args: { | |||||
contact: frm.doc.name | |||||
}, | |||||
callback: function(r) { | |||||
frm.set_value("user", r.message); | |||||
} | |||||
}); | |||||
}); | |||||
} | |||||
}, | |||||
validate: function(frm) { | |||||
// clear linked customer / supplier / sales partner on saving... | |||||
if(frm.doc.links) { | |||||
frm.doc.links.forEach(function(d) { | |||||
frappe.model.remove_from_locals(d.link_doctype, d.link_name); | |||||
}); | |||||
} | |||||
} | |||||
}); |
@@ -0,0 +1,805 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_import": 1, | |||||
"allow_rename": 1, | |||||
"beta": 0, | |||||
"creation": "2013-01-10 16:34:32", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "Setup", | |||||
"editable_grid": 0, | |||||
"engine": "InnoDB", | |||||
"fields": [ | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "contact_section", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "fa fa-user", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "first_name", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "First Name", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "first_name", | |||||
"oldfieldtype": "Data", | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 1, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "last_name", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Last Name", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "last_name", | |||||
"oldfieldtype": "Data", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 1, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "email_id", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Email Address", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "email_id", | |||||
"oldfieldtype": "Data", | |||||
"options": "Email", | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 1, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "user", | |||||
"fieldtype": "Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "User Id", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "User", | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "cb00", | |||||
"fieldtype": "Column Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "Passive", | |||||
"fieldname": "status", | |||||
"fieldtype": "Select", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "Status", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Passive\nOpen\nReplied", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 1, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "phone", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Phone", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "contact_no", | |||||
"oldfieldtype": "Data", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 1, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "mobile_no", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Mobile No", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "mobile_no", | |||||
"oldfieldtype": "Data", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "image", | |||||
"fieldtype": "Attach Image", | |||||
"hidden": 1, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Image", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"precision": "", | |||||
"print_hide": 1, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "contact_details", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Reference", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "fa fa-pushpin", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "0", | |||||
"depends_on": "", | |||||
"fieldname": "is_primary_contact", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Is Primary Contact", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"oldfieldname": "is_primary_contact", | |||||
"oldfieldtype": "Select", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "links", | |||||
"fieldtype": "Table", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Links", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Dynamic Link", | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "more_info", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "More Information", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "fa fa-file-text", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"description": "", | |||||
"fieldname": "department", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Department", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"description": "", | |||||
"fieldname": "designation", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Designation", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "column_break_17", | |||||
"fieldtype": "Column Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "unsubscribed", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Unsubscribed", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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 | |||||
} | |||||
], | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"icon": "fa fa-user", | |||||
"idx": 1, | |||||
"image_field": "image", | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"in_dialog": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 0, | |||||
"max_attachments": 0, | |||||
"modified": "2017-01-13 06:59:06.417300", | |||||
"modified_by": "Administrator", | |||||
"module": "Email", | |||||
"name": "Contact", | |||||
"owner": "Administrator", | |||||
"permissions": [ | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Sales Master Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Purchase Master Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Sales Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Purchase Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Maintenance Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Accounts Manager", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Sales User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Purchase User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Maintenance User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Accounts User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 0, | |||||
"delete": 0, | |||||
"email": 0, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"match": "", | |||||
"permlevel": 1, | |||||
"print": 0, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "All", | |||||
"set_user_permissions": 0, | |||||
"share": 0, | |||||
"submit": 0, | |||||
"write": 0 | |||||
} | |||||
], | |||||
"quick_entry": 0, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"sort_order": "ASC", | |||||
"track_changes": 0, | |||||
"track_seen": 0 | |||||
} |
@@ -0,0 +1,130 @@ | |||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors | |||||
# License: GNU General Public License v3. See license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
from frappe.utils import cstr, has_gravatar | |||||
from frappe import _ | |||||
from frappe.model.document import Document | |||||
class Contact(Document): | |||||
def autoname(self): | |||||
# concat first and last name | |||||
self.name = " ".join(filter(None, | |||||
[cstr(self.get(f)).strip() for f in ["first_name", "last_name"]])) | |||||
# concat party name if reqd | |||||
for link in self.links: | |||||
self.name = self.name + '-' + link.link_name.strip() | |||||
break | |||||
def validate(self): | |||||
self.set_user() | |||||
if self.email_id: | |||||
self.image = has_gravatar(self.email_id) | |||||
def set_user(self): | |||||
if not self.user and self.email_id: | |||||
self.user = frappe.db.get_value("User", {"email": self.email_id}) | |||||
def on_trash(self): | |||||
frappe.db.sql("""update `tabIssue` set contact='' where contact=%s""", | |||||
self.name) | |||||
def has_common_link(self, doc): | |||||
reference_links = [(link.link_doctype, link.link_name) for link in doc.links] | |||||
for link in self.links: | |||||
if (link.link_doctype, link.link_name) in reference_links: | |||||
return True | |||||
def get_default_contact(doctype, name): | |||||
'''Returns default contact for the given doctype, name''' | |||||
out = frappe.db.sql('''select contact.name | |||||
from | |||||
tabContact contact, `tabDynamic Link` dl | |||||
where | |||||
dl.parent = contact.name and | |||||
dl.link_doctype=%s and | |||||
dl.link_name=%s and | |||||
dl.parenttype = "Contact" | |||||
order by | |||||
contact.is_primary_contact desc, name | |||||
limit 1''', (doctype, name), debug=1) | |||||
print out | |||||
return out and out[0][0] or None | |||||
@frappe.whitelist() | |||||
def invite_user(contact): | |||||
contact = frappe.get_doc("Contact", contact) | |||||
if not contact.email_id: | |||||
frappe.throw(_("Please set Email Address")) | |||||
if contact.has_permission("write"): | |||||
user = frappe.get_doc({ | |||||
"doctype": "User", | |||||
"first_name": contact.first_name, | |||||
"last_name": contact.last_name, | |||||
"email": contact.email_id, | |||||
"user_type": "Website User", | |||||
"send_welcome_email": 1 | |||||
}).insert(ignore_permissions = True) | |||||
return user.name | |||||
@frappe.whitelist() | |||||
def get_contact_details(contact): | |||||
contact = frappe.get_doc("Contact", contact) | |||||
out = { | |||||
"contact_person": contact.get("name"), | |||||
"contact_display": " ".join(filter(None, | |||||
[contact.get("first_name"), contact.get("last_name")])), | |||||
"contact_email": contact.get("email_id"), | |||||
"contact_mobile": contact.get("mobile_no"), | |||||
"contact_phone": contact.get("phone"), | |||||
"contact_designation": contact.get("designation"), | |||||
"contact_department": contact.get("department") | |||||
} | |||||
return out | |||||
def update_contact(doc, method): | |||||
'''Update contact when user is updated, if contact is found. Called via hooks''' | |||||
contact_name = frappe.db.get_value("Contact", {"email_id": doc.name}) | |||||
if contact_name: | |||||
contact = frappe.get_doc("Contact", contact_name) | |||||
for key in ("first_name", "last_name", "phone"): | |||||
if doc.get(key): | |||||
contact.set(key, doc.get(key)) | |||||
contact.flags.ignore_mandatory = True | |||||
contact.save(ignore_permissions=True) | |||||
def contact_query(doctype, txt, searchfield, start, page_len, filters): | |||||
from frappe.desk.reportview import get_match_cond | |||||
return frappe.db.sql("""select | |||||
contact.name, contact.first_name, contact.last_name | |||||
from | |||||
tabContact as contact, `tabDynamic Link` as dl | |||||
where | |||||
dl.parent = contact.name and | |||||
dl.parenttype = 'Contact' and | |||||
dl.link_doctype = %(link_doctype)s and | |||||
dl.link_name = %(link_name)s and | |||||
contact.`{key}` like %(txt)s | |||||
{mcond} | |||||
order by | |||||
if(locate(%(_txt)s, contact.name), locate(%(_txt)s, contact.name), 99999), | |||||
contact.idx desc, contact.name | |||||
limit %(start)s, %(page_len)s """.format( | |||||
mcond=get_match_cond(doctype), | |||||
key=frappe.db.escape(searchfield)), | |||||
{ | |||||
'txt': "%%%s%%" % frappe.db.escape(txt), | |||||
'_txt': txt.replace("%", ""), | |||||
'start': start, | |||||
'page_len': page_len, | |||||
'link_doctype': filters.get('link_doctype'), | |||||
'link_name': filters.get('link_name') | |||||
}) |
@@ -0,0 +1,12 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and Contributors | |||||
# See license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
import unittest | |||||
test_records = frappe.get_test_records('Contact') | |||||
class TestContact(unittest.TestCase): | |||||
pass |
@@ -0,0 +1,22 @@ | |||||
[ | |||||
{ | |||||
"customer": "_Test Customer", | |||||
"customer_name": "_Test Customer", | |||||
"doctype": "Contact", | |||||
"email_id": "test_contact_customer@example.com", | |||||
"first_name": "_Test Contact For _Test Customer", | |||||
"is_primary_contact": 1, | |||||
"phone": "+91 0000000000", | |||||
"status": "Open" | |||||
}, | |||||
{ | |||||
"doctype": "Contact", | |||||
"email_id": "test_contact_supplier@example.com", | |||||
"first_name": "_Test Contact For _Test Supplier", | |||||
"is_primary_contact": 1, | |||||
"phone": "+91 0000000000", | |||||
"status": "Open", | |||||
"supplier": "_Test Supplier", | |||||
"supplier_name": "_Test Supplier" | |||||
} | |||||
] |
@@ -71,16 +71,16 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
} | } | ||||
me.fresh = false | me.fresh = false | ||||
}); | }); | ||||
}else{ | |||||
alert("No Email Account assigned to you contact your System administrator"); | |||||
if (frappe.session.user==="Administrator") | |||||
{ | |||||
frappe.set_route("List", "User"); | |||||
} | |||||
else | |||||
{ | |||||
window.history.back(); | |||||
} | |||||
} else { | |||||
frappe.msgprint(__("No Email Account assigned to you. Please contact your System Administrator")); | |||||
setTimeout(function() { | |||||
if (frappe.session.user==="Administrator") { | |||||
frappe.set_route("List", "User"); | |||||
} else { | |||||
frappe.set_route(''); | |||||
} | |||||
}, 3000); | |||||
} | } | ||||
}, | }, | ||||
refresh:function(){ | refresh:function(){ | ||||
@@ -259,7 +259,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
"fieldname":"newcontact", | "fieldname":"newcontact", | ||||
"description": __('Create new Contact for a Customer, Supplier, User or Organisation to Match "') + row.sender + __('" Against') | "description": __('Create new Contact for a Customer, Supplier, User or Organisation to Match "') + row.sender + __('" Against') | ||||
} | } | ||||
]; | ]; | ||||
if (!nomatch) { | if (!nomatch) { | ||||
fields.push({ | fields.push({ | ||||
@@ -283,7 +283,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
frappe.route_titles["create_contact"] = 1; | frappe.route_titles["create_contact"] = 1; | ||||
var name_split = row.sender_full_name?row.sender_full_name.split(' '):["",""]; | var name_split = row.sender_full_name?row.sender_full_name.split(' '):["",""]; | ||||
row.nomatch = 1; | row.nomatch = 1; | ||||
frappe.route_options = { | frappe.route_options = { | ||||
"email_id": row.sender, | "email_id": row.sender, | ||||
"first_name": name_split[0], | "first_name": name_split[0], | ||||
@@ -320,7 +320,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
return | return | ||||
} | } | ||||
me.open_email = row.name | me.open_email = row.name | ||||
//mark email as read | //mark email as read | ||||
if(me.account!="Sent") { | if(me.account!="Sent") { | ||||
this.mark_read(row); | this.mark_read(row); | ||||
@@ -341,7 +341,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
me.company_select(row) | me.company_select(row) | ||||
}}, 4000); | }}, 4000); | ||||
} | } | ||||
var c = me.prepare_email(row); | var c = me.prepare_email(row); | ||||
emailitem.fields_dict.email.$wrapper.html(frappe.render_template("inbox_email", {data:c})); | emailitem.fields_dict.email.$wrapper.html(frappe.render_template("inbox_email", {data:c})); | ||||
$(emailitem.$wrapper).find(".reply").find("a").attr("target", "_blank"); | $(emailitem.$wrapper).find(".reply").find("a").attr("target", "_blank"); | ||||
@@ -356,7 +356,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
me.delete_email({n:row.name, u:row.uid}); | me.delete_email({n:row.name, u:row.uid}); | ||||
emailitem.hide() | emailitem.hide() | ||||
}); | }); | ||||
$(emailitem.$wrapper).find(".company-link").on("click", function () { | $(emailitem.$wrapper).find(".company-link").on("click", function () { | ||||
me.company_select(row, true)}); | me.company_select(row, true)}); | ||||
me.add_reply_btn_event(emailitem, c); | me.add_reply_btn_event(emailitem, c); | ||||
@@ -365,12 +365,12 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
$(".modal-dialog").addClass("modal-lg"); | $(".modal-dialog").addClass("modal-lg"); | ||||
$(emailitem.$wrapper).find(".modal-title").parent().removeClass("col-xs-7").addClass("col-xs-7 col-sm-8 col-md-9"); | $(emailitem.$wrapper).find(".modal-title").parent().removeClass("col-xs-7").addClass("col-xs-7 col-sm-8 col-md-9"); | ||||
$(emailitem.$wrapper).find(".text-right").parent().removeClass("col-xs-5").addClass("col-xs-5 col-sm-4 col-md-3"); | $(emailitem.$wrapper).find(".text-right").parent().removeClass("col-xs-5").addClass("col-xs-5 col-sm-4 col-md-3"); | ||||
//setup close | //setup close | ||||
emailitem.onhide = function() { | emailitem.onhide = function() { | ||||
me.open_email = null | me.open_email = null | ||||
} | } | ||||
emailitem.show(); | emailitem.show(); | ||||
}, | }, | ||||
add_reply_btn_event: function (emailitem, c) { | add_reply_btn_event: function (emailitem, c) { | ||||
@@ -437,7 +437,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
forward:true, | forward:true, | ||||
attachments:c.attachments | attachments:c.attachments | ||||
}); | }); | ||||
$(communication.dialog.fields_dict.select_attachments.wrapper).find("input[type=checkbox]").prop("checked",true) | $(communication.dialog.fields_dict.select_attachments.wrapper).find("input[type=checkbox]").prop("checked",true) | ||||
}); | }); | ||||
}, | }, | ||||
@@ -582,7 +582,7 @@ frappe.Inbox = frappe.ui.Listing.extend({ | |||||
var names = [{name:data.name, uid:data.uid}] | var names = [{name:data.name, uid:data.uid}] | ||||
} | } | ||||
//could add flag to sync deletes but not going to as keeps history | //could add flag to sync deletes but not going to as keeps history | ||||
me.update_local_flags(names, "deleted", "1") | me.update_local_flags(names, "deleted", "1") | ||||
}, | }, | ||||
mark_unread:function(){ | mark_unread:function(){ | ||||
@@ -0,0 +1,25 @@ | |||||
// Copyright (c) 2016, Frappe Technologies and contributors | |||||
// For license information, please see license.txt | |||||
frappe.ui.form.on("Address", { | |||||
refresh: function(frm) { | |||||
if(frm.doc.__islocal) { | |||||
var last_route = frappe.route_history.slice(-2, -1)[0]; | |||||
if(frappe.contact_link && frappe.contact_link.doc | |||||
&& frappe.contact_link.doc.name==last_route[2]) { | |||||
frm.add_child('links', { | |||||
link_doctype: frappe.contact_link.doctype, | |||||
link_name: frappe.contact_link.doc[frappe.contact_link.fieldname] | |||||
}); | |||||
} | |||||
} | |||||
}, | |||||
validate: function(frm) { | |||||
// clear linked customer / supplier / sales partner on saving... | |||||
if(frm.doc.links) { | |||||
frm.doc.links.forEach(function(d) { | |||||
frappe.model.remove_from_locals(d.link_doctype, d.link_name); | |||||
}); | |||||
} | |||||
} | |||||
}); |
@@ -0,0 +1,651 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_import": 1, | |||||
"allow_rename": 1, | |||||
"beta": 0, | |||||
"creation": "2013-01-10 16:34:32", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "Setup", | |||||
"editable_grid": 0, | |||||
"fields": [ | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "address_details", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "fa fa-map-marker", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"description": "Name of person or organization that this address belongs to.", | |||||
"fieldname": "address_title", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Address Title", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "address_type", | |||||
"fieldtype": "Select", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "Address Type", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther", | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "address_line1", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Address Line 1", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 0, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "address_line2", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Address Line 2", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "city", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 1, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 0, | |||||
"label": "City/Town", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 1, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "county", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "County", | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "state", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 1, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "State", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "country", | |||||
"fieldtype": "Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 1, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 1, | |||||
"label": "Country", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Country", | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 1, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "pincode", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 1, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Postal Code", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 0, | |||||
"search_index": 1, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "column_break0", | |||||
"fieldtype": "Column Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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, | |||||
"width": "50%" | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "email_id", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Email Address", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "phone", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Phone", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "fax", | |||||
"fieldtype": "Data", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 1, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Fax", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "0", | |||||
"description": "", | |||||
"fieldname": "is_primary_address", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Preferred Billing Address", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "0", | |||||
"description": "", | |||||
"fieldname": "is_shipping_address", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Preferred Shipping Address", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "linked_with", | |||||
"fieldtype": "Section Break", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Reference", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "fa fa-pushpin", | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "0", | |||||
"fieldname": "is_your_company_address", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Is Your Company Address", | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "links", | |||||
"fieldtype": "Table", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Links", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Dynamic Link", | |||||
"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 | |||||
} | |||||
], | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"icon": "fa fa-map-marker", | |||||
"idx": 5, | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"in_dialog": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 0, | |||||
"max_attachments": 0, | |||||
"modified": "2017-01-13 05:01:15.084023", | |||||
"modified_by": "Administrator", | |||||
"module": "Geo", | |||||
"name": "Address", | |||||
"owner": "Administrator", | |||||
"permissions": [ | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Sales User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Purchase User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Maintenance User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
}, | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 0, | |||||
"email": 1, | |||||
"export": 0, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 1, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "Accounts User", | |||||
"set_user_permissions": 0, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
} | |||||
], | |||||
"quick_entry": 0, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"search_fields": "country, state", | |||||
"sort_field": "modified", | |||||
"sort_order": "DESC", | |||||
"track_changes": 0, | |||||
"track_seen": 0 | |||||
} |
@@ -0,0 +1,203 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and contributors | |||||
# For license information, please see license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
from frappe import throw, _ | |||||
from frappe.utils import cstr | |||||
from frappe.model.document import Document | |||||
from jinja2 import TemplateSyntaxError | |||||
from frappe.utils.user import is_website_user | |||||
from frappe.model.naming import make_autoname | |||||
class Address(Document): | |||||
def __setup__(self): | |||||
self.flags.linked = False | |||||
def autoname(self): | |||||
if not self.address_title: | |||||
if self.links: | |||||
self.address_title = self.links[0].link_name | |||||
if self.address_title: | |||||
self.name = (cstr(self.address_title).strip() + "-" + cstr(self.address_type).strip()) | |||||
if frappe.db.exists("Address", self.name): | |||||
self.name = make_autoname(cstr(self.address_title).strip() + "-" + | |||||
cstr(self.address_type).strip() + "-.#") | |||||
else: | |||||
throw(_("Address Title is mandatory.")) | |||||
def validate(self): | |||||
self.link_address() | |||||
self.validate_reference() | |||||
def link_address(self): | |||||
"""Link address based on owner""" | |||||
if not self.links and not self.is_your_company_address: | |||||
contact_name = frappe.db.get_value("Contact", {"email_id": self.owner}) | |||||
if contact_name: | |||||
contact = frappe.get_doc('Contact', contact_name) | |||||
for link in contact.links: | |||||
self.append('links', dict(link_doctype=link.link_doctype, link_name=link.link_name)) | |||||
return True | |||||
return False | |||||
def validate_reference(self): | |||||
if self.is_your_company_address: | |||||
if not self.company: | |||||
frappe.throw(_("Company is mandatory, as it is your company address")) | |||||
if self.links: | |||||
self.links = [] | |||||
def get_display(self): | |||||
return get_address_display(self.as_dict()) | |||||
def has_link(self, doctype, name): | |||||
for link in self.links: | |||||
if link.link_doctype==doctype and link.link_name== name: | |||||
return True | |||||
def has_common_link(self, doc): | |||||
reference_links = [(link.link_doctype, link.link_name) for link in doc.links] | |||||
for link in self.links: | |||||
if (link.link_doctype, link.link_name) in reference_links: | |||||
return True | |||||
return False | |||||
def get_default_address(doctype, name, sort_key='is_primary_address'): | |||||
'''Returns default Address name for the given doctype, name''' | |||||
out = frappe.db.sql('''select address.name | |||||
from | |||||
tabAddress address, `tabDynamic Link` dl | |||||
where | |||||
dl.link_doctype=%s and | |||||
dl.link_name=%s and | |||||
dl.parent = address.name and | |||||
dl.parenttype = "Address" | |||||
order by | |||||
address.`{0}` desc, name | |||||
limit 1'''.format(sort_key), (doctype, name)) | |||||
return out and out[0][0] or None | |||||
@frappe.whitelist() | |||||
def get_address_display(address_dict): | |||||
if not address_dict: | |||||
return | |||||
if not isinstance(address_dict, dict): | |||||
address_dict = frappe.db.get_value("Address", address_dict, "*", as_dict=True) or {} | |||||
name, template = get_address_templates(address_dict) | |||||
try: | |||||
return frappe.render_template(template, address_dict) | |||||
except TemplateSyntaxError: | |||||
frappe.throw(_("There is an error in your Address Template {0}").format(name)) | |||||
def get_territory_from_address(address): | |||||
"""Tries to match city, state and country of address to existing territory""" | |||||
if not address: | |||||
return | |||||
if isinstance(address, basestring): | |||||
address = frappe.get_doc("Address", address) | |||||
territory = None | |||||
for fieldname in ("city", "state", "country"): | |||||
territory = frappe.db.get_value("Territory", address.get(fieldname)) | |||||
if territory: | |||||
break | |||||
return territory | |||||
def get_list_context(context=None): | |||||
return { | |||||
"title": _("Addresses"), | |||||
"get_list": get_address_list, | |||||
"row_template": "templates/includes/address_row.html", | |||||
'no_breadcrumbs': True, | |||||
} | |||||
def get_address_list(doctype, txt, filters, limit_start, limit_page_length=20): | |||||
from frappe.www.list import get_list | |||||
user = frappe.session.user | |||||
ignore_permissions = False | |||||
if is_website_user(): | |||||
if not filters: filters = [] | |||||
filters.append(("Address", "owner", "=", user)) | |||||
ignore_permissions = True | |||||
return get_list(doctype, txt, filters, limit_start, limit_page_length, ignore_permissions=ignore_permissions) | |||||
def has_website_permission(doc, ptype, user, verbose=False): | |||||
"""Returns true if there is a related lead or contact related to this document""" | |||||
contact_name = frappe.db.get_value("Contact", {"email_id": frappe.session.user}) | |||||
if contact_name: | |||||
contact = frappe.get_doc('Contact', contact_name) | |||||
return contact.has_common_link(doc) | |||||
lead_name = frappe.db.get_value("Lead", {"email_id": frappe.session.user}) | |||||
if lead_name: | |||||
return doc.has_link('Lead', lead_name) | |||||
return False | |||||
def get_address_templates(address): | |||||
result = frappe.db.get_value("Address Template", \ | |||||
{"country": address.get("country")}, ["name", "template"]) | |||||
if not result: | |||||
result = frappe.db.get_value("Address Template", \ | |||||
{"is_default": 1}, ["name", "template"]) | |||||
if not result: | |||||
frappe.throw(_("No default Address Template found. Please create a new one from Setup > Printing and Branding > Address Template.")) | |||||
else: | |||||
return result | |||||
@frappe.whitelist() | |||||
def get_shipping_address(company): | |||||
filters = {"company": company, "is_your_company_address":1} | |||||
fieldname = ["name", "address_line1", "address_line2", "city", "state", "country"] | |||||
address_as_dict = frappe.db.get_value("Address", filters=filters, fieldname=fieldname, as_dict=True) | |||||
if address_as_dict: | |||||
name, address_template = get_address_templates(address_as_dict) | |||||
return address_as_dict.get("name"), frappe.render_template(address_template, address_as_dict) | |||||
def contact_query(doctype, txt, searchfield, start, page_len, filters): | |||||
from frappe.desk.reportview import get_match_cond | |||||
return frappe.db.sql("""select | |||||
address.name, address.city, address.country | |||||
from | |||||
tabAddress as address, `tabDynamic Link` as dl | |||||
where | |||||
dl.parent = address.name and | |||||
dl.parenttype = 'Address' and | |||||
dl.link_doctype = %(link_doctype)s and | |||||
dl.link_name = %(link_name)s and | |||||
address.`{key}` like %(txt)s | |||||
{mcond} | |||||
order by | |||||
if(locate(%(_txt)s, address.name), locate(%(_txt)s, address.name), 99999), | |||||
address.idx desc, address.name | |||||
limit %(start)s, %(page_len)s """.format( | |||||
mcond=get_match_cond(doctype), | |||||
key=frappe.db.escape(searchfield)), | |||||
{ | |||||
'txt': "%%%s%%" % frappe.db.escape(txt), | |||||
'_txt': txt.replace("%", ""), | |||||
'start': start, | |||||
'page_len': page_len, | |||||
'link_doctype': filters.get('link_doctype'), | |||||
'link_name': filters.get('link_name') | |||||
}) |
@@ -0,0 +1,18 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and Contributors | |||||
# See license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe, unittest | |||||
test_records = frappe.get_test_records('Address') | |||||
from frappe.geo.doctype.address.address import get_address_display | |||||
class TestAddress(unittest.TestCase): | |||||
def test_template_works(self): | |||||
address = frappe.get_list("Address")[0].name | |||||
display = get_address_display(frappe.get_doc("Address", address).as_dict()) | |||||
self.assertTrue(display) | |||||
test_dependencies = ["Address Template"] |
@@ -0,0 +1,15 @@ | |||||
[ | |||||
{ | |||||
"address_line1": "_Test Address Line 1", | |||||
"address_title": "_Test Address", | |||||
"address_type": "Office", | |||||
"city": "_Test City", | |||||
"state": "Test State", | |||||
"country": "India", | |||||
"customer": "_Test Customer", | |||||
"customer_name": "_Test Customer", | |||||
"doctype": "Address", | |||||
"is_primary_address": 1, | |||||
"phone": "+91 0000000000" | |||||
} | |||||
] |
@@ -0,0 +1,16 @@ | |||||
// Copyright (c) 2016, Frappe Technologies and contributors | |||||
// For license information, please see license.txt | |||||
frappe.ui.form.on('Address Template', { | |||||
refresh: function(frm) { | |||||
if(frm.is_new() && !frm.doc.template) { | |||||
// set default template via js so that it is translated | |||||
frappe.call({ | |||||
method: 'frappe.geo.doctype.address_template.address_template.get_default_address_template', | |||||
callback: function(r) { | |||||
frm.set_value('template', r.message); | |||||
} | |||||
}); | |||||
} | |||||
} | |||||
}); |
@@ -0,0 +1,148 @@ | |||||
{ | |||||
"allow_copy": 0, | |||||
"allow_import": 0, | |||||
"allow_rename": 1, | |||||
"autoname": "field:country", | |||||
"beta": 0, | |||||
"creation": "2014-06-05 02:22:36.029850", | |||||
"custom": 0, | |||||
"docstatus": 0, | |||||
"doctype": "DocType", | |||||
"document_type": "Setup", | |||||
"editable_grid": 0, | |||||
"engine": "InnoDB", | |||||
"fields": [ | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"fieldname": "country", | |||||
"fieldtype": "Link", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 1, | |||||
"label": "Country", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"options": "Country", | |||||
"permlevel": 0, | |||||
"print_hide": 0, | |||||
"print_hide_if_no_value": 0, | |||||
"read_only": 0, | |||||
"remember_last_selected_value": 0, | |||||
"report_hide": 0, | |||||
"reqd": 1, | |||||
"search_index": 1, | |||||
"set_only_once": 0, | |||||
"unique": 0 | |||||
}, | |||||
{ | |||||
"allow_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"description": "This format is used if country specific format is not found", | |||||
"fieldname": "is_default", | |||||
"fieldtype": "Check", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 1, | |||||
"in_standard_filter": 0, | |||||
"label": "Is Default", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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_on_submit": 0, | |||||
"bold": 0, | |||||
"collapsible": 0, | |||||
"columns": 0, | |||||
"default": "", | |||||
"description": "<h4>Default Template</h4>\n<p>Uses <a href=\"http://jinja.pocoo.org/docs/templates/\">Jinja Templating</a> and all the fields of Address (including Custom Fields if any) will be available</p>\n<pre><code>{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif -%}\n{% if pincode %} PIN: {{ pincode }}<br>{% endif -%}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif -%}\n{% if fax %}Fax: {{ fax }}<br>{% endif -%}\n{% if email_id %}Email: {{ email_id }}<br>{% endif -%}\n</code></pre>", | |||||
"fieldname": "template", | |||||
"fieldtype": "Code", | |||||
"hidden": 0, | |||||
"ignore_user_permissions": 0, | |||||
"ignore_xss_filter": 0, | |||||
"in_filter": 0, | |||||
"in_list_view": 0, | |||||
"in_standard_filter": 0, | |||||
"label": "Template", | |||||
"length": 0, | |||||
"no_copy": 0, | |||||
"permlevel": 0, | |||||
"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 | |||||
} | |||||
], | |||||
"hide_heading": 0, | |||||
"hide_toolbar": 0, | |||||
"icon": "fa fa-map-marker", | |||||
"idx": 0, | |||||
"image_view": 0, | |||||
"in_create": 0, | |||||
"in_dialog": 0, | |||||
"is_submittable": 0, | |||||
"issingle": 0, | |||||
"istable": 0, | |||||
"max_attachments": 0, | |||||
"modified": "2017-01-13 05:11:37.499528", | |||||
"modified_by": "Administrator", | |||||
"module": "Geo", | |||||
"name": "Address Template", | |||||
"name_case": "", | |||||
"owner": "Administrator", | |||||
"permissions": [ | |||||
{ | |||||
"amend": 0, | |||||
"apply_user_permissions": 0, | |||||
"cancel": 0, | |||||
"create": 1, | |||||
"delete": 1, | |||||
"email": 0, | |||||
"export": 1, | |||||
"if_owner": 0, | |||||
"import": 0, | |||||
"is_custom": 0, | |||||
"permlevel": 0, | |||||
"print": 0, | |||||
"read": 1, | |||||
"report": 1, | |||||
"role": "System Manager", | |||||
"set_user_permissions": 1, | |||||
"share": 1, | |||||
"submit": 0, | |||||
"write": 1 | |||||
} | |||||
], | |||||
"quick_entry": 1, | |||||
"read_only": 0, | |||||
"read_only_onload": 0, | |||||
"sort_field": "modified", | |||||
"sort_order": "DESC", | |||||
"track_changes": 0, | |||||
"track_seen": 0 | |||||
} |
@@ -0,0 +1,43 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and contributors | |||||
# For license information, please see license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
from frappe.model.document import Document | |||||
from frappe.utils.jinja import validate_template | |||||
from frappe import _ | |||||
class AddressTemplate(Document): | |||||
def validate(self): | |||||
if not self.template: | |||||
self.template = get_default_address_template() | |||||
self.defaults = frappe.db.get_values("Address Template", {"is_default":1, "name":("!=", self.name)}) | |||||
if not self.is_default: | |||||
if not self.defaults: | |||||
self.is_default = 1 | |||||
frappe.msgprint(_("Setting this Address Template as default as there is no other default")) | |||||
validate_template(self.template) | |||||
def on_update(self): | |||||
if self.is_default and self.defaults: | |||||
for d in self.defaults: | |||||
frappe.db.set_value("Address Template", d[0], "is_default", 0) | |||||
def on_trash(self): | |||||
if self.is_default: | |||||
frappe.throw(_("Default Address Template cannot be deleted")) | |||||
@frappe.whitelist() | |||||
def get_default_address_template(): | |||||
'''Get default address template (translated)''' | |||||
return '''{{ address_line1 }}<br>{% if address_line2 %}{{ address_line2 }}<br>{% endif -%}\ | |||||
{{ city }}<br> | |||||
{% if state %}{{ state }}<br>{% endif -%} | |||||
{% if pincode %}{{ pincode }}<br>{% endif -%} | |||||
{{ country }}<br> | |||||
{% if phone %}'''+_('Phone')+''': {{ phone }}<br>{% endif -%} | |||||
{% if fax %}'''+_('Fax')+''': {{ fax }}<br>{% endif -%} | |||||
{% if email_id %}'''+_('Email')+''': {{ email_id }}<br>{% endif -%}''' |
@@ -0,0 +1,24 @@ | |||||
# -*- coding: utf-8 -*- | |||||
# Copyright (c) 2015, Frappe Technologies and Contributors | |||||
# See license.txt | |||||
from __future__ import unicode_literals | |||||
import frappe, unittest | |||||
test_records = frappe.get_test_records('Address Template') | |||||
class TestAddressTemplate(unittest.TestCase): | |||||
def test_default_is_unset(self): | |||||
a = frappe.get_doc("Address Template", "India") | |||||
a.is_default = 1 | |||||
a.save() | |||||
b = frappe.get_doc("Address Template", "Brazil") | |||||
b.is_default = 1 | |||||
b.save() | |||||
self.assertEqual(frappe.db.get_value("Address Template", "India", "is_default"), 0) | |||||
def tearDown(self): | |||||
a = frappe.get_doc("Address Template", "India") | |||||
a.is_default = 1 | |||||
a.save() |
@@ -0,0 +1,13 @@ | |||||
[ | |||||
{ | |||||
"country": "India", | |||||
"is_default": 1, | |||||
"template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP: {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n" | |||||
}, | |||||
{ | |||||
"country": "Brazil", | |||||
"is_default": 0, | |||||
"template": "{{ address_title }}<br>\n{{ address_line1 }}<br>\n{% if address_line2 %}{{ address_line2 }}<br>{% endif %}\n{{ city }}<br>\n{% if state %}{{ state }}<br>{% endif %}\n{% if pincode %} PIN / ZIP: {{ pincode }}<br>{% endif %}\n{{ country }}<br>\n{% if phone %}Phone: {{ phone }}<br>{% endif %}\n{% if fax %}Fax: {{ fax }}<br>{% endif %}\n{% if email_id %}Email: {{ email_id }}<br>{% endif %}\n" | |||||
} | |||||
] | |||||
@@ -91,6 +91,10 @@ has_permission = { | |||||
"Communication": "frappe.core.doctype.communication.communication.has_permission" | "Communication": "frappe.core.doctype.communication.communication.has_permission" | ||||
} | } | ||||
has_website_permission = { | |||||
"Address": "erpnext.utilities.doctype.address.address.has_website_permission" | |||||
} | |||||
standard_queries = { | standard_queries = { | ||||
"User": "frappe.core.doctype.user.user.user_query" | "User": "frappe.core.doctype.user.user.user_query" | ||||
} | } | ||||
@@ -147,12 +147,8 @@ frappe.patches.v7_0.cleanup_list_settings | |||||
execute:frappe.db.set_default('language', '') | execute:frappe.db.set_default('language', '') | ||||
frappe.patches.v7_1.refactor_integration_broker | frappe.patches.v7_1.refactor_integration_broker | ||||
frappe.patches.v7_1.set_backup_limit | frappe.patches.v7_1.set_backup_limit | ||||
frappe.patches.v7_1.fix_email_sender | |||||
execute:frappe.db.sql("update tabCommunication SET docstatus = 0 where docstatus =2 or docstatus = 1") | |||||
execute:frappe.db.sql("update tabCommunication set communication_date = if(actualdate,actualdate,creation) where time(communication_date) = 0 or actualdate is not null") | |||||
frappe.patches.v7_1.disabled_print_settings_for_custom_print_format | frappe.patches.v7_1.disabled_print_settings_for_custom_print_format | ||||
frappe.patches.v7_2.set_doctype_engine | frappe.patches.v7_2.set_doctype_engine | ||||
frappe.patches.v7_2.merge_knowledge_base | frappe.patches.v7_2.merge_knowledge_base | ||||
frappe.patches.v7_0.update_report_builder_json | frappe.patches.v7_0.update_report_builder_json | ||||
frappe.patches.v7_2.match_emails_to_contacts | |||||
frappe.patches.v7_2.set_in_standard_filter_property #1 | frappe.patches.v7_2.set_in_standard_filter_property #1 |
@@ -1,12 +0,0 @@ | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
from frappe.utils import extract_email_id | |||||
from inbox.email_inbox.contact import match_email_to_contact | |||||
def execute(): | |||||
frappe.reload_doctype('Communication') | |||||
for c in frappe.db.sql("""select name,sender from tabCommunication where communication_type = 'Communication' and sender like '%<%>'""",as_dict=1): | |||||
frappe.db.set_value('Communication', c.name, 'sender',extract_email_id(c.sender) , update_modified=False) | |||||
communication = frappe.get_doc('Communication', c.name) | |||||
match_email_to_contact(communication) | |||||
@@ -1,72 +0,0 @@ | |||||
from __future__ import unicode_literals | |||||
import frappe | |||||
def execute(): | |||||
frappe.db.sql("update `tabContact` set email_id = lower(email_id)") | |||||
frappe.db.sql("update `tabCommunication` set sender = lower(sender),recipients = lower(recipients)") | |||||
origin_contact = frappe.db.sql("select name,email_id,supplier,supplier_name,customer,customer_name,user,organisation from `tabContact` where email_id <>''",as_dict=1) | |||||
origin_communication = frappe.db.sql("select name, sender,recipients,sent_or_received from `tabCommunication` where communication_type = 'Communication'",as_dict=1) | |||||
for communication in origin_communication: | |||||
# format contacts | |||||
for comm in origin_contact: | |||||
if (communication.sender and communication.sent_or_received == "Received" and communication.sender.find(comm.email_id) > -1) \ | |||||
or (communication.recipients !=None and communication.sent_or_received == "Sent" and communication.recipients.find(comm.email_id) > -1): | |||||
if sum(1 for x in [comm.supplier, comm.customer, comm.user,comm.organisation] if x) > 1: | |||||
frappe.db.sql("""update `tabCommunication` | |||||
set timeline_doctype = %(timeline_doctype)s, | |||||
timeline_name = %(timeline_name)s, | |||||
timeline_label = %(timeline_label)s | |||||
where name = %(name)s""", { | |||||
"timeline_doctype": "Contact", | |||||
"timeline_name": comm.name, | |||||
"timeline_label": comm.name, | |||||
"name": communication.name | |||||
}) | |||||
elif comm.supplier: | |||||
frappe.db.sql("""update `tabCommunication` | |||||
set timeline_doctype = %(timeline_doctype)s, | |||||
timeline_name = %(timeline_name)s, | |||||
timeline_label = %(timeline_label)s | |||||
where name = %(name)s""", { | |||||
"timeline_doctype": "Supplier", | |||||
"timeline_name": comm.supplier, | |||||
"timeline_label": comm.supplier_name, | |||||
"name": communication.name | |||||
}) | |||||
elif comm.customer: | |||||
frappe.db.sql("""update `tabCommunication` | |||||
set timeline_doctype = %(timeline_doctype)s, | |||||
timeline_name = %(timeline_name)s, | |||||
timeline_label = %(timeline_label)s | |||||
where name = %(name)s""", { | |||||
"timeline_doctype": "Customer", | |||||
"timeline_name": comm.customer, | |||||
"timeline_label": comm.customer_name, | |||||
"name": communication.name | |||||
}) | |||||
elif comm.user: | |||||
frappe.db.sql("""update `tabCommunication` | |||||
set timeline_doctype = %(timeline_doctype)s, | |||||
timeline_name = %(timeline_name)s, | |||||
timeline_label = %(timeline_label)s | |||||
where name = %(name)s""", { | |||||
"timeline_doctype": "User", | |||||
"timeline_name": comm.user, | |||||
"timeline_label": comm.user, | |||||
"name": communication.name | |||||
}) | |||||
elif comm.organisation: | |||||
frappe.db.sql("""update `tabCommunication` | |||||
set timeline_doctype = %(timeline_doctype)s, | |||||
timeline_name = %(timeline_name)s, | |||||
timeline_label = %(timeline_label)s | |||||
where name = %(name)s""", { | |||||
"timeline_doctype": "Organisation", | |||||
"timeline_name": comm.organisation, | |||||
"timeline_label": comm.organisation, | |||||
"name": communication.name | |||||
}) |
@@ -248,7 +248,9 @@ _f.Frm.prototype.set_query = function(fieldname, opt1, opt2) { | |||||
} else { | } else { | ||||
// on parent table | // on parent table | ||||
// set_query(fieldname, query) | // set_query(fieldname, query) | ||||
this.fields_dict[fieldname].get_query = opt1; | |||||
if(this.fields_dict[fieldname]) { | |||||
this.fields_dict[fieldname].get_query = opt1; | |||||
} | |||||
} | } | ||||
} | } | ||||