Merge branch 'master' of github.com:webnotes/erpnext

This commit is contained in:
Rushabh Mehta 2012-12-12 16:30:40 +05:30
commit 1b8a4cab26
11 changed files with 59 additions and 33 deletions

View File

@ -39,8 +39,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
'is_pl_account', 'company'], false); 'is_pl_account', 'company'], false);
// read-only for root accounts // read-only for root accounts
root_acc = doc.parent ? false : true; if(!doc.parent_account) {
if(in_list(root_acc, doc.account_name)) {
cur_frm.perm = [[1,0,0], [1,0,0]]; cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro("This is a root account and cannot be edited."); cur_frm.set_intro("This is a root account and cannot be edited.");
} else { } else {

View File

@ -20,7 +20,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.toggle_enable(['group_or_ledger', 'company_name'], doc.__islocal); cur_frm.toggle_enable(['group_or_ledger', 'company_name'], doc.__islocal);
if(!doc.__islocal && doc.group_or_ledger=='Group') { if(!doc.__islocal && doc.group_or_ledger=='Group') {
intro_txt += '<p><b>Note:</b> This is Cost Center is a <i>Group</i>, \ intro_txt += '<p><b>Note:</b> This Cost Center is a <i>Group</i>, \
Accounting Entries are not allowed against groups.</p>'; Accounting Entries are not allowed against groups.</p>';
} }

View File

@ -24,7 +24,14 @@ pscript['onload_Sales Browser'] = function(wrapper){
wrapper.make_tree = function() { wrapper.make_tree = function() {
var ctype = wn.get_route()[1] || 'Territory'; var ctype = wn.get_route()[1] || 'Territory';
erpnext.sales_chart = new erpnext.SalesChart(ctype, wrapper); wn.call({
method: 'selling.page.sales_browser.sales_browser.get_children',
args: {ctype: ctype},
callback: function(r) {
var root = r.message[0]["value"];
erpnext.sales_chart = new erpnext.SalesChart(ctype, root, wrapper);
}
});
} }
wrapper.make_tree(); wrapper.make_tree();
@ -42,20 +49,13 @@ pscript['onshow_Sales Browser'] = function(wrapper){
}; };
erpnext.SalesChart = Class.extend({ erpnext.SalesChart = Class.extend({
init: function(ctype, wrapper) { init: function(ctype, root, wrapper) {
var root_nodes = {
'Territory': 'All Territories',
'Item Group': 'All Item Groups',
'Customer Group': 'All Customer Groups',
'Sales Person': 'All Sales Persons'
}
$(wrapper).find('.tree-area').empty(); $(wrapper).find('.tree-area').empty();
var me = this; var me = this;
me.ctype = ctype; me.ctype = ctype;
this.tree = new wn.ui.Tree({ this.tree = new wn.ui.Tree({
parent: $(wrapper).find('.tree-area'), parent: $(wrapper).find('.tree-area'),
label: root_nodes[ctype], label: root,
args: {ctype: ctype}, args: {ctype: ctype},
method: 'selling.page.sales_browser.sales_browser.get_children', method: 'selling.page.sales_browser.sales_browser.get_children',
click: function(link) { click: function(link) {
@ -72,7 +72,7 @@ erpnext.SalesChart = Class.extend({
} }
}); });
this.tree.rootnode.$a this.tree.rootnode.$a
.data('node-data', {value: root_nodes[ctype], expandable:1}) .data('node-data', {value: root, expandable:1})
.click(); .click();
}, },
make_link_toolbar: function(link) { make_link_toolbar: function(link) {

View File

@ -1,10 +1,13 @@
from __future__ import unicode_literals from __future__ import unicode_literals
import webnotes import webnotes
@webnotes.whitelist() @webnotes.whitelist()
def get_children(): def get_children():
ctype = webnotes.form_dict.get('ctype') ctype = webnotes.form_dict.get('ctype')
webnotes.form_dict['parent_field'] = 'parent_' + ctype.lower().replace(' ', '_') webnotes.form_dict['parent_field'] = 'parent_' + ctype.lower().replace(' ', '_')
if not webnotes.form_dict.get('parent'):
webnotes.form_dict['parent'] = ''
return webnotes.conn.sql("""select name as value, return webnotes.conn.sql("""select name as value,
if(is_group='Yes', 1, 0) as expandable if(is_group='Yes', 1, 0) as expandable

View File

@ -20,7 +20,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.set_root_readonly = function(doc) { cur_frm.cscript.set_root_readonly = function(doc) {
// read-only for root customer group // read-only for root customer group
if(doc.name==='All Customer Groups') { if(!doc.parent_customer_group) {
cur_frm.perm = [[1,0,0], [1,0,0]]; cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro("This is a root customer group and cannot be edited."); cur_frm.set_intro("This is a root customer group and cannot be edited.");
} else { } else {

View File

@ -31,20 +31,29 @@ class DocType(DocTypeNestedSet):
self.nsm_parent_field = 'parent_customer_group'; self.nsm_parent_field = 'parent_customer_group';
def validate(self): def validate(self):
if sql("select name from `tabCustomer Group` where name = %s and docstatus = 2", (self.doc.customer_group_name)): if sql("select name from `tabCustomer Group` where name = %s and docstatus = 2",
(self.doc.customer_group_name)):
msgprint("""Another %s record is trashed. msgprint("""Another %s record is trashed.
To untrash please go to Setup & click on Trash."""%(self.doc.customer_group_name), raise_exception = 1) To untrash please go to Setup -> Recycle Bin.""" %
self.validate_root_details("All Customer Groups", "parent_customer_group") (self.doc.customer_group_name), raise_exception = 1)
super(DocType, self).validate()
def on_trash(self): def on_trash(self):
cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s", self.doc.name) cust = sql("select name from `tabCustomer` where ifnull(customer_group, '') = %s",
self.doc.name)
cust = [d[0] for d in cust] cust = [d[0] for d in cust]
if cust: if cust:
msgprint("""Customer Group: %s can not be trashed/deleted because it is used in customer: %s. msgprint("""Customer Group: %s can not be trashed/deleted \
To trash/delete this, remove/change customer group in customer master""" % (self.doc.name, cust or ''), raise_exception=1) because it is used in customer: %s.
To trash/delete this, remove/change customer group in customer master""" %
(self.doc.name, cust or ''), raise_exception=1)
if sql("select name from `tabCustomer Group` where parent_customer_group = %s and docstatus != 2", self.doc.name): if sql("select name from `tabCustomer Group` where parent_customer_group = %s \
msgprint("Child customer group exists for this customer group. You can not trash/cancel/delete this customer group.", raise_exception=1) and docstatus != 2", self.doc.name):
msgprint("Child customer group exists for this customer group. \
You can not trash/cancel/delete this customer group.", raise_exception=1)
# rebuild tree # rebuild tree
super(DocType, self).on_trash() super(DocType, self).on_trash()

View File

@ -14,6 +14,21 @@
// You should have received a copy of the GNU General Public License // You should have received a copy of the GNU General Public License
// along with this program. If not, see <http://www.gnu.org/licenses/>. // along with this program. If not, see <http://www.gnu.org/licenses/>.
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 item group
if(!doc.parent_item_group) {
cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro("This is a root item group and cannot be edited.");
} else {
cur_frm.set_intro(null);
}
}
//get query select item group //get query select item group
cur_frm.fields_dict['parent_item_group'].get_query = function(doc,cdt,cdn) { cur_frm.fields_dict['parent_item_group'].get_query = function(doc,cdt,cdn) {
return 'SELECT `tabItem Group`.`name`,`tabItem Group`.`parent_item_group` FROM `tabItem Group` WHERE `tabItem Group`.`is_group` = "Yes" AND `tabItem Group`.`docstatus`!= 2 AND `tabItem Group`.`name` !="'+doc.item_group_name+'" AND `tabItem Group`.%(key)s LIKE "%s" ORDER BY `tabItem Group`.`name` ASC LIMIT 50'; return 'SELECT `tabItem Group`.`name`,`tabItem Group`.`parent_item_group` FROM `tabItem Group` WHERE `tabItem Group`.`is_group` = "Yes" AND `tabItem Group`.`docstatus`!= 2 AND `tabItem Group`.`name` !="'+doc.item_group_name+'" AND `tabItem Group`.%(key)s LIKE "%s" ORDER BY `tabItem Group`.`name` ASC LIMIT 50';

View File

@ -20,7 +20,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.set_root_readonly = function(doc) { cur_frm.cscript.set_root_readonly = function(doc) {
// read-only for root // read-only for root
if(doc.name==='All Sales Persons') { if(!doc.parent_sales_person) {
cur_frm.perm = [[1,0,0], [1,0,0]]; cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro("This is a root sales person and cannot be edited."); cur_frm.set_intro("This is a root sales person and cannot be edited.");
} else { } else {

View File

@ -33,3 +33,6 @@ class DocType(DocTypeNestedSet):
if not flt(d.target_qty) and not flt(d.target_amount): if not flt(d.target_qty) and not flt(d.target_amount):
webnotes.msgprint("Either target qty or target amount is mandatory.") webnotes.msgprint("Either target qty or target amount is mandatory.")
raise Exception raise Exception
super(DocType, self).validate()

View File

@ -20,7 +20,7 @@ cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.cscript.set_root_readonly = function(doc) { cur_frm.cscript.set_root_readonly = function(doc) {
// read-only for root territory // read-only for root territory
if(doc.name==='All Territories') { if(!doc.parent_territory) {
cur_frm.perm = [[1,0,0], [1,0,0]]; cur_frm.perm = [[1,0,0], [1,0,0]];
cur_frm.set_intro("This is a root territory and cannot be edited."); cur_frm.set_intro("This is a root territory and cannot be edited.");
} else { } else {
@ -28,12 +28,6 @@ cur_frm.cscript.set_root_readonly = function(doc) {
} }
} }
cur_frm.cscript.onload = function(){
}
//get query select territory //get query select territory
cur_frm.fields_dict['parent_territory'].get_query = function(doc,cdt,cdn) { cur_frm.fields_dict['parent_territory'].get_query = function(doc,cdt,cdn) {
return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "Yes" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.`name` !="'+doc.territory_name+'" AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY `tabTerritory`.`name` ASC LIMIT 50'; return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "Yes" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.`name` !="'+doc.territory_name+'" AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY `tabTerritory`.`name` ASC LIMIT 50';

View File

@ -33,3 +33,6 @@ class DocType(DocTypeNestedSet):
if not flt(d.target_qty) and not flt(d.target_amount): if not flt(d.target_qty) and not flt(d.target_amount):
msgprint("Either target qty or target amount is mandatory.") msgprint("Either target qty or target amount is mandatory.")
raise Exception raise Exception
super(DocType, self).validate()