From 6ffdf940032743bcafa9b78900377c4a1a69e09f Mon Sep 17 00:00:00 2001 From: Zarrar Date: Thu, 14 Jun 2018 12:24:16 +0530 Subject: [PATCH] [Fixes] Defaults and User-Permission based fixes in treeview (#14501) * utility function added for treeview function to distinguish defaults from user permission and return appropriate data * make use of utility function for treeview --- .../accounts/doctype/account/account_tree.js | 8 +++++--- .../doctype/cost_center/cost_center_tree.js | 4 ++-- erpnext/hr/doctype/employee/employee_tree.js | 4 ++-- erpnext/public/js/utils.js | 19 +++++++++++++++++++ .../stock/doctype/warehouse/warehouse_tree.js | 4 ++-- 5 files changed, 30 insertions(+), 9 deletions(-) diff --git a/erpnext/accounts/doctype/account/account_tree.js b/erpnext/accounts/doctype/account/account_tree.js index a71c4f24dc..a9cbdd5dee 100644 --- a/erpnext/accounts/doctype/account/account_tree.js +++ b/erpnext/accounts/doctype/account/account_tree.js @@ -7,9 +7,9 @@ frappe.treeview_settings["Account"] = { filters: [{ fieldname: "company", fieldtype:"Select", - options: $.map(locals[':Company'], function(c) { return c.name; }).sort(), + options: erpnext.utils.get_tree_options("company"), label: __("Company"), - default: frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): "" + default: erpnext.utils.get_tree_default("company") }], root_label: "Accounts", get_tree_nodes: 'erpnext.accounts.utils.get_children', @@ -42,6 +42,8 @@ frappe.treeview_settings["Account"] = { ], ignore_fields:["parent_account"], onload: function(treeview) { + frappe.treeview_settings['Account'].page = {}; + $.extend(frappe.treeview_settings['Account'].page, treeview.page); function get_company() { return treeview.page.fields_dict.company.get_value(); } @@ -101,7 +103,7 @@ frappe.treeview_settings["Account"] = { "account": node.label, "from_date": frappe.sys_defaults.year_start_date, "to_date": frappe.sys_defaults.year_end_date, - "company": frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): "" + "company": frappe.treeview_settings['Account'].page.fields_dict.company.get_value() }; frappe.set_route("query-report", "General Ledger"); }, diff --git a/erpnext/accounts/doctype/cost_center/cost_center_tree.js b/erpnext/accounts/doctype/cost_center/cost_center_tree.js index 2d989f79e7..be48d7020d 100644 --- a/erpnext/accounts/doctype/cost_center/cost_center_tree.js +++ b/erpnext/accounts/doctype/cost_center/cost_center_tree.js @@ -4,9 +4,9 @@ frappe.treeview_settings["Cost Center"] = { filters: [{ fieldname: "company", fieldtype:"Select", - options: $.map(locals[':Company'], function(c) { return c.name; }).sort(), + options: erpnext.utils.get_tree_options("company"), label: __("Company"), - default: frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): "" + default: erpnext.utils.get_tree_default("company") }], root_label: "Cost Centers", get_tree_nodes: 'erpnext.accounts.utils.get_children', diff --git a/erpnext/hr/doctype/employee/employee_tree.js b/erpnext/hr/doctype/employee/employee_tree.js index 5d3ec42fb1..0a2da63058 100644 --- a/erpnext/hr/doctype/employee/employee_tree.js +++ b/erpnext/hr/doctype/employee/employee_tree.js @@ -4,9 +4,9 @@ frappe.treeview_settings['Employee'] = { { fieldname: "company", fieldtype:"Select", - options: $.map(locals[':Company'], function(c) { return c.name; }).sort(), + options: erpnext.utils.get_tree_options("company"), label: __("Company"), - default: frappe.defaults.get_default('company') ? frappe.defaults.get_default('company') : "" + default: erpnext.utils.get_tree_default("company") } ], breadcrumb: "Hr", diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js index ed4b4d266d..01c4943b3a 100644 --- a/erpnext/public/js/utils.js +++ b/erpnext/public/js/utils.js @@ -182,6 +182,25 @@ $.extend(erpnext.utils, { } return rows; }, + get_tree_options: function(option) { + // get valid options for tree based on user permission & locals dict + let unscrub_option = frappe.model.unscrub(option); + let user_permission = frappe.defaults.get_user_permissions(); + if(user_permission && user_permission[unscrub_option]) { + return user_permission[unscrub_option]["docs"]; + } else { + return $.map(locals[`:${unscrub_option}`], function(c) { return c.name; }).sort(); + } + }, + get_tree_default: function(option) { + // set default for a field based on user permission + let options = this.get_tree_options(option); + if(options.includes(frappe.defaults.get_default(option))) { + return frappe.defaults.get_default(option); + } else { + return options[0]; + } + } }); erpnext.utils.select_alternate_items = function(opts) { diff --git a/erpnext/stock/doctype/warehouse/warehouse_tree.js b/erpnext/stock/doctype/warehouse/warehouse_tree.js index b0c0cbd6bd..918d2f1559 100644 --- a/erpnext/stock/doctype/warehouse/warehouse_tree.js +++ b/erpnext/stock/doctype/warehouse/warehouse_tree.js @@ -6,9 +6,9 @@ frappe.treeview_settings['Warehouse'] = { filters: [{ fieldname: "company", fieldtype:"Select", - options: $.map(locals[':Company'], function(c) { return c.name; }).sort(), + options: erpnext.utils.get_tree_options("company"), label: __("Company"), - default: frappe.defaults.get_default('company') ? frappe.defaults.get_default('company'): "" + default: erpnext.utils.get_tree_default("company") }], fields:[ {fieldtype:'Data', fieldname: 'warehouse_name',