From 1fc9ae2230c00fe06bc4f054ae23f51e5eaef074 Mon Sep 17 00:00:00 2001 From: Anand Doshi Date: Mon, 24 Sep 2012 14:00:59 +0530 Subject: [PATCH] Fixes and Validations for nested doctypes --- .../page/sales_analytics/sales_analytics.js | 2 +- .../doctype/customer_group/customer_group.js | 12 +++++++++- .../doctype/customer_group/customer_group.py | 22 ++++--------------- .../doctype/sales_person/sales_person.js | 12 ++++++++++ erpnext/setup/doctype/territory/territory.js | 13 ++++++++++- public/js/all-app.js | 2 +- 6 files changed, 41 insertions(+), 22 deletions(-) diff --git a/erpnext/selling/page/sales_analytics/sales_analytics.js b/erpnext/selling/page/sales_analytics/sales_analytics.js index 86ab0ebd098..b87ead51f03 100644 --- a/erpnext/selling/page/sales_analytics/sales_analytics.js +++ b/erpnext/selling/page/sales_analytics/sales_analytics.js @@ -174,7 +174,7 @@ erpnext.SalesAnalytics = wn.views.TreeGridReport.extend({ me.parent_map = {}; me.item_by_name = {}; me.data = []; - + $.each(items, function(i, v) { var d = copy_dict(v); diff --git a/erpnext/setup/doctype/customer_group/customer_group.js b/erpnext/setup/doctype/customer_group/customer_group.js index 67bc29368ea..531ff962f81 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.js +++ b/erpnext/setup/doctype/customer_group/customer_group.js @@ -23,7 +23,17 @@ cur_frm.cscript.set_breadcrumbs = function(barea) { cur_frm.cscript.refresh = function(doc, cdt, cdn) { - + cur_frm.cscript.set_root_readonly(doc); +} + +cur_frm.cscript.set_root_readonly = function(doc) { + // read-only for root customer group + if(doc.name==='All Customer Groups') { + cur_frm.perm = [[1,0,0], [1,0,0]]; + cur_frm.set_intro("This is a root customer group and cannot be edited."); + } else { + cur_frm.set_intro(null); + } } //get query select Customer Group diff --git a/erpnext/setup/doctype/customer_group/customer_group.py b/erpnext/setup/doctype/customer_group/customer_group.py index 9831024e069..6eb52b5fb26 100644 --- a/erpnext/setup/doctype/customer_group/customer_group.py +++ b/erpnext/setup/doctype/customer_group/customer_group.py @@ -32,32 +32,18 @@ in_transaction = webnotes.conn.in_transaction convert_to_lists = webnotes.conn.convert_to_lists # ----------------------------------------------------------------------------------------- - - -class DocType: +from webnotes.utils.nestedset import DocTypeNestedSet +class DocType(DocTypeNestedSet): def __init__(self, doc, doclist=[]): self.doc = doc self.doclist = doclist self.nsm_parent_field = 'parent_customer_group'; - - # update Node Set Model - def update_nsm_model(self): - import webnotes - import webnotes.utils.nestedset - webnotes.utils.nestedset.update_nsm(self) - - # ON UPDATE - #-------------------------------------- - def on_update(self): - # update nsm - self.update_nsm_model() - - def validate(self): if sql("select name from `tabCustomer Group` where name = %s and docstatus = 2", (self.doc.customer_group_name)): msgprint("""Another %s record is trashed. To untrash please go to Setup & click on Trash."""%(self.doc.customer_group_name), raise_exception = 1) + self.validate_root_details("All Customer Groups", "parent_customer_group") def on_trash(self): cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s", self.doc.name) @@ -72,4 +58,4 @@ class DocType: # rebuild tree webnotes.conn.set(self.doc,'old_parent', '') - self.update_nsm_model() + self.update_nsm() diff --git a/erpnext/setup/doctype/sales_person/sales_person.js b/erpnext/setup/doctype/sales_person/sales_person.js index a1cac8a8bed..1c7b13f500b 100644 --- a/erpnext/setup/doctype/sales_person/sales_person.js +++ b/erpnext/setup/doctype/sales_person/sales_person.js @@ -22,8 +22,20 @@ cur_frm.cscript.set_breadcrumbs = function(barea) { } cur_frm.cscript.refresh = function(doc, cdt, cdn) { + cur_frm.cscript.set_root_readonly(doc); } +cur_frm.cscript.set_root_readonly = function(doc) { + // read-only for root + if(doc.name==='All Sales Persons') { + cur_frm.perm = [[1,0,0], [1,0,0]]; + cur_frm.set_intro("This is a root sales person and cannot be edited."); + } else { + cur_frm.set_intro(null); + } +} + + cur_frm.cscript.onload = function(){ } diff --git a/erpnext/setup/doctype/territory/territory.js b/erpnext/setup/doctype/territory/territory.js index 9b36d0c6f05..a52bb67f0ea 100644 --- a/erpnext/setup/doctype/territory/territory.js +++ b/erpnext/setup/doctype/territory/territory.js @@ -23,9 +23,20 @@ cur_frm.cscript.set_breadcrumbs = function(barea) { } cur_frm.cscript.refresh = function(doc, cdt, cdn) { - + cur_frm.cscript.set_root_readonly(doc); } +cur_frm.cscript.set_root_readonly = function(doc) { + // read-only for root territory + if(doc.name==='All Territories') { + cur_frm.perm = [[1,0,0], [1,0,0]]; + cur_frm.set_intro("This is a root territory and cannot be edited."); + } else { + cur_frm.set_intro(null); + } +} + + cur_frm.cscript.onload = function(){ } diff --git a/public/js/all-app.js b/public/js/all-app.js index 342b51d2372..c43d8f2855f 100644 --- a/public/js/all-app.js +++ b/public/js/all-app.js @@ -1123,7 +1123,7 @@ this.previousPoint=null;this.wrapper.find('.plot').bind("plothover",function(eve else{$("#"+me.tooltip_id).remove();me.previousPoint=null;}});},get_tooltip_text:function(label,x,y){var date=dateutil.obj_to_user(new Date(x));var value=fmt_money(y);return value+" on "+date;},get_view_data:function(){var res=[];var col_map=$.map(this.columns,function(v){return v.field;});for(var i=0,len=this.dataView.getLength();i/g,">");var data=me.data;var spacer="";var idx=me.dataView.getIdxById(dataContext.id);var link=me.tree_grid.formatter(dataContext);if(dataContext.doctype){link+=me.get_link_open_icon(dataContext.doctype,value);}