form cleanup: fixed callback issues
diff --git a/css/all-app.css b/css/all-app.css
index b49caed..b2fd2e5 100644
--- a/css/all-app.css
+++ b/css/all-app.css
@@ -1043,7 +1043,7 @@
}
div.dialog_body {
- padding: 8px 8px 16px;
+ padding: 8px 4px 16px 4px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
diff --git a/css/all-web.css b/css/all-web.css
index bebfe9a..9359de8 100644
--- a/css/all-web.css
+++ b/css/all-web.css
@@ -362,7 +362,7 @@
}
div.dialog_body {
- padding: 8px 8px 16px;
+ padding: 8px 4px 16px 4px;
border-radius: 5px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
diff --git a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
index bc0a145..391bbcd 100644
--- a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
+++ b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.js
@@ -42,27 +42,31 @@
}
cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
- var callback2 = null;
- if(doc.customer && doc.__islocal) {
+ var callback = function(doc, dt, dn) {
// called from mapper, update the account names for items and customer
- callback2 = function(doc, dt, dn) {
- $c_obj(make_doclist(doc.doctype,doc.name),
- 'load_default_accounts','',
- function(r,rt) {
- refresh_field('entries');
- cur_frm.cscript.customer(doc,dt,dn,onload=true);
- }
- );
+ var callback2 = function(doc, dt, dn) {
+ if(doc.customer && doc.__islocal) {
+ $c_obj(make_doclist(doc.doctype,doc.name),
+ 'load_default_accounts','',
+ function(r,rt) {
+ refresh_field('entries');
+ cur_frm.cscript.customer(doc,dt,dn,onload=true);
+ }
+ );
+ }
}
- }
- // defined in sales_common.js
- var callback1 = function(doc, dt, dn) {
- //for previously created sales invoice, set required field related to pos
- cur_frm.cscript.update_item_details(doc, dt, dn, callback2);
- }
+ // defined in sales_common.js
+ var callback1 = function(doc, dt, dn) {
+ //for previously created sales invoice, set required field related to pos
+ cur_frm.cscript.update_item_details(doc, dt, dn, callback2);
+ }
- if(doc.is_pos ==1) cur_frm.cscript.is_pos(doc, dt, dn,callback1);
- else cur_frm.cscript.update_item_details(doc, dt, dn, callback2);
+ if(doc.is_pos ==1) cur_frm.cscript.is_pos(doc, dt, dn,callback1);
+ else cur_frm.cscript.update_item_details(doc, dt, dn, callback2);
+ }
+
+ cur_frm.cscript.hide_price_list_currency(doc, dt, dn, callback);
+
}
@@ -97,16 +101,11 @@
cur_frm.cscript.refresh = function(doc, dt, dn) {
cur_frm.cscript.is_opening(doc, dt, dn);
cur_frm.cscript.hide_fields(doc, dt, dn);
-
- var callback = function() {
- cur_frm.cscript.dynamic_label(doc, dt, dn);
- }
- cur_frm.cscript.hide_price_list_currency(doc, dt, dn, callback);
-
-
// Show / Hide button
cur_frm.clear_custom_buttons();
+ if (!cur_frm.cscript.is_onload) cur_frm.cscript.hide_price_list_currency(doc, dt, dn);
+
if(doc.docstatus==1) {
cur_frm.add_custom_button('View Ledger', cur_frm.cscript['View Ledger Entry']);
cur_frm.add_custom_button('Send SMS', cur_frm.cscript['Send SMS']);
diff --git a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
index 03fd762..d09adc2 100644
--- a/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
+++ b/erpnext/accounts/doctype/receivable_voucher/receivable_voucher.py
@@ -167,16 +167,19 @@
# Item Details
# -------------
def get_item_details(self, args=None):
- args = eval(args)
- if args['item_code']:
+ args = args and eval(args) or {}
+ if args.get('item_code'):
ret = get_obj('Sales Common').get_item_details(args, self)
return self.get_pos_details(args, ret)
else:
obj = get_obj('Sales Common')
for doc in self.doclist:
if doc.fields.get('item_code'):
- ret = obj.get_item_details(doc.item_code, self)
- ret = self.get_pos_details(doc.item_code, ret)
+ arg = {'item_code':doc.fields.get('item_code'), 'income_account':doc.fields.get('income_account'),
+ 'cost_center': doc.fields.get('cost_center'), 'warehouse': doc.fields.get('warehouse')};
+
+ ret = obj.get_item_details(arg, self)
+ ret = self.get_pos_details(arg, ret)
for r in ret:
if not doc.fields.get(r):
doc.fields[r] = ret[r]
@@ -205,14 +208,6 @@
get_obj('Sales Common').get_adj_percent(self)
- def get_comp_base_currency(self):
- return get_obj('Sales Common').get_comp_base_currency(self.doc.company)
-
- def get_price_list_currency(self):
- return get_obj('Sales Common').get_price_list_currency(self.doc.price_list_name, self.doc.company)
-
-
-
# Get tax rate if account type is tax
# ------------------------------------
def get_rate(self,arg):
diff --git a/erpnext/selling/doctype/quotation/quotation.js b/erpnext/selling/doctype/quotation/quotation.js
index 2a130a5..7f40782 100644
--- a/erpnext/selling/doctype/quotation/quotation.js
+++ b/erpnext/selling/doctype/quotation/quotation.js
@@ -50,8 +50,11 @@
}
cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
- // defined in sales_common.js
- cur_frm.cscript.update_item_details(doc, cdt, cdn);
+ var callback = function(doc, dt, dn) {
+ // defined in sales_common.js
+ cur_frm.cscript.update_item_details(doc, dt, dn);
+ }
+ cur_frm.cscript.hide_price_list_currency(doc, dt, dn, callback);
}
// hide - unhide fields based on lead or customer..
@@ -83,10 +86,7 @@
cur_frm.clear_custom_buttons();
- var callback = function() {
- cur_frm.cscript.dynamic_label(doc, cdt, cdn);
- }
- cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn, callback);
+ if (!cur_frm.cscript.is_onload) cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn);
if(doc.docstatus == 1 && doc.status!='Order Lost') {
diff --git a/erpnext/selling/doctype/quotation/quotation.py b/erpnext/selling/doctype/quotation/quotation.py
index 531de21..de4056d 100644
--- a/erpnext/selling/doctype/quotation/quotation.py
+++ b/erpnext/selling/doctype/quotation/quotation.py
@@ -77,14 +77,16 @@
# Get Item Details
# -----------------
def get_item_details(self, args=None):
- args = eval(args)
- if args['item_code']:
+ args = args and eval(args) or {}
+ if args.get('item_code'):
return get_obj('Sales Common').get_item_details(args, self)
else:
obj = get_obj('Sales Common')
for doc in self.doclist:
if doc.fields.get('item_code'):
- ret = obj.get_item_details(doc.item_code, self)
+ arg = {'item_code':doc.fields.get('item_code'), 'income_account':doc.fields.get('income_account'),
+ 'cost_center': doc.fields.get('cost_center'), 'warehouse': doc.fields.get('warehouse')};
+ ret = obj.get_item_details(arg, self)
for r in ret:
if not doc.fields.get(r):
doc.fields[r] = ret[r]
@@ -96,11 +98,6 @@
get_obj('Sales Common').get_adj_percent(self)
- def get_comp_base_currency(self):
- return get_obj('Sales Common').get_comp_base_currency(self.doc.company)
-
- def get_price_list_currency(self):
- return get_obj('Sales Common').get_price_list_currency(self.doc.price_list_name, self.doc.company)
# OTHER CHARGES TRIGGER FUNCTIONS
diff --git a/erpnext/selling/doctype/sales_common/sales_common.js b/erpnext/selling/doctype/sales_common/sales_common.js
index 5d88c30..b9bff5c 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.js
+++ b/erpnext/selling/doctype/sales_common/sales_common.js
@@ -75,7 +75,6 @@
-
// ============== Customer and its primary contact Details ============================
cur_frm.cscript.customer = function(doc, cdt, cdn) {
if(doc.customer){
@@ -136,17 +135,11 @@
// Change label dynamically based on currency
//------------------------------------------------------------------
-cur_frm.cscript.dynamic_label = function(doc, cdt, cdn) {
- var callback = function(r, rt) {
- if (r.message) base_curr = r.message;
- else base_curr = sys_defaults['currency'];
+cur_frm.cscript.dynamic_label = function(doc, cdt, cdn, base_curr, callback) {
+ set_dynamic_label_par(doc, cdt, cdn, base_curr);
+ set_dynamic_label_child(doc, cdt, cdn, base_curr);
- set_dynamic_label_par(doc, cdt, cdn, base_curr);
- set_dynamic_label_child(doc, cdt, cdn, base_curr);
- }
-
- if (doc.company == sys_defaults['company']) callback('', '');
- else $c_obj(make_doclist(doc.doctype, doc.name), 'get_comp_base_currency', '', callback);
+ if (callback) callback(doc, cdt, cdn);
}
@@ -155,27 +148,30 @@
cur_frm.cscript.hide_price_list_currency = function(doc, cdt, cdn, callback1) {
if (doc.price_list_name && doc.currency) {
- var callback = function(r, rt) {
- pl_currency = r.message[0]?r.message[0]:[];
- if (pl_currency.length==1) {
- if (pl_currency[0] == doc.currency) set_multiple(cdt, cdn, {price_list_currency:doc.currency, plc_conversion_rate:doc.conversion_rate});
- else if (pl_currency[0] = r.message[1]) set_multiple(cdt, cdn, {price_list_currency:pl_currency[0], plc_conversion_rate:1})
- hide_field(['price_list_currency', 'plc_conversion_rate']);
- } else unhide_field(['price_list_currency', 'plc_conversion_rate']);
+ wn.call({
+ method: 'selling.doctype.sales_common.sales_common.get_price_list_currency',
+ args: {'price_list':doc.price_list_name, 'company': doc.company},
+ callback: function(r, rt) {
+ pl_currency = r.message[0]?r.message[0]:[];
+ if (pl_currency.length==1) {
+ if (pl_currency[0] == doc.currency) set_multiple(cdt, cdn, {price_list_currency:doc.currency, plc_conversion_rate:doc.conversion_rate});
+ else if (pl_currency[0] = r.message[1]) set_multiple(cdt, cdn, {price_list_currency:pl_currency[0], plc_conversion_rate:1})
+ hide_field(['price_list_currency', 'plc_conversion_rate']);
+ } else unhide_field(['price_list_currency', 'plc_conversion_rate']);
- if (r.message[1] == doc.currency) {
- set_multiple(cdt, cdn, {conversion_rate:1});
- hide_field(['conversion_rate', 'grand_total_export', 'in_words_export', 'rounded_total_export']);
- } else unhide_field(['conversion_rate', 'grand_total_export', 'in_words_export', 'rounded_total_export']);
+ if (r.message[1] == doc.currency) {
+ set_multiple(cdt, cdn, {conversion_rate:1});
+ hide_field(['conversion_rate', 'grand_total_export', 'in_words_export', 'rounded_total_export']);
+ } else unhide_field(['conversion_rate', 'grand_total_export', 'in_words_export', 'rounded_total_export']);
- if (r.message[1] == doc.price_list_currency) {
- set_multiple(cdt, cdn, {plc_conversion_rate:1});
- hide_field('plc_conversion_rate');
- } else unhide_field('plc_conversion_rate');
-
- callback1()
- }
- $c_obj(make_doclist(doc.doctype, doc.name), 'get_price_list_currency', '', callback);
+ if (r.message[1] == doc.price_list_currency) {
+ set_multiple(cdt, cdn, {plc_conversion_rate:1});
+ hide_field('plc_conversion_rate');
+ } else unhide_field('plc_conversion_rate');
+
+ cur_frm.cscript.dynamic_label(doc, cdt, cdn, r.message[1], callback1);
+ }
+ })
}
}
@@ -213,12 +209,15 @@
cur_frm.cscript.plc_conversion_rate = cur_frm.cscript.currency;
cur_frm.cscript.company = function(doc, dt, dn) {
- var callback = function(r, rt) {
- var doc = locals[dt][dn];
- set_multiple(doc.doctype, doc.name, {currency:r.message,price_list_currency:r.message});
- cur_frm.cscript.currency(doc, cdt, cdn);
- }
- $c_obj(make_doclist(doc.doctype, doc.name), 'get_comp_base_currency', '', callback);
+ wn.call({
+ method: 'selling.doctype.sales_common.sales_common.get_comp_base_currency',
+ args: {company:doc.company},
+ callback: function(r, rt) {
+ var doc = locals[dt][dn];
+ set_multiple(doc.doctype, doc.name, {currency:r.message, price_list_currency:r.message});
+ cur_frm.cscript.currency(doc, cdt, cdn);
+ }
+ });
}
@@ -234,7 +233,6 @@
refresh_field(fname);
var doc = locals[cdt][cdn];
cur_frm.cscript.recalc(doc,3); //this is to re-calculate BASIC RATE and AMOUNT on basis of changed REF RATE
- cur_frm.cscript.dynamic_label(doc, cdt, cdn);
}
);
}
diff --git a/erpnext/selling/doctype/sales_common/sales_common.py b/erpnext/selling/doctype/sales_common/sales_common.py
index 003c3bd..a5017c2 100644
--- a/erpnext/selling/doctype/sales_common/sales_common.py
+++ b/erpnext/selling/doctype/sales_common/sales_common.py
@@ -178,18 +178,6 @@
d.export_amount = flt(d.qty)*flt(base_ref_rate)/flt(obj.doc.conversion_rate)
- def get_comp_base_currency(self, comp):
- """ get default currency of company"""
- return webnotes.conn.sql("select default_currency from `tabCompany` where name = %s", comp)[0][0]
-
- def get_price_list_currency(self, price_list, comp):
- """ Get all currency in which price list is maintained"""
- plc = webnotes.conn.sql("select distinct ref_currency from `tabRef Rate Detail` where price_list_name = %s", price_list)
- plc = [d[0] for d in plc]
- base_currency = self.get_comp_base_currency(comp)
- return plc, base_currency
-
-
# Load Default Taxes
# ====================
def load_default_taxes(self, obj):
@@ -781,3 +769,17 @@
where
name="%(name)s"
""" % args)
+
+
+@webnotes.whitelist()
+def get_comp_base_currency(arg=None):
+ """ get default currency of company"""
+ return webnotes.conn.sql("select default_currency from `tabCompany` where name = %s", webnotes.form_dict['company'])[0][0]
+
+@webnotes.whitelist()
+def get_price_list_currency(arg=None):
+ """ Get all currency in which price list is maintained"""
+ plc = webnotes.conn.sql("select distinct ref_currency from `tabRef Rate Detail` where price_list_name = %s", webnotes.form_dict['price_list'])
+ plc = [d[0] for d in plc]
+ base_currency = get_comp_base_currency(webnotes.form_dict['company'])
+ return plc, base_currency
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 4a724d2..a04423d 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -41,10 +41,15 @@
}
cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
- if(doc.__islocal) {
- // defined in sales_common.js
- cur_frm.cscript.update_item_details(doc, cdt, cdn);
+ var callback = function(doc, cdt, cdn) {
+ if(doc.__islocal) {
+ // defined in sales_common.js
+ cur_frm.cscript.update_item_details(doc, cdt, cdn);
+ }
}
+
+ cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn, callback);
+
}
@@ -52,10 +57,8 @@
//==================
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.clear_custom_buttons();
- var callback = function() {
- cur_frm.cscript.dynamic_label(doc, cdt, cdn);
- }
- cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn, callback);
+
+ if (!cur_frm.cscript.is_onload) cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn);
if(doc.docstatus==1) {
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 943a1fd..c886ec3 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -102,14 +102,16 @@
# Get Item Details
# ----------------
def get_item_details(self, args=None):
- args = eval(args)
- if args['item_code']:
+ args = args and eval(args) or {}
+ if args.get('item_code'):
return get_obj('Sales Common').get_item_details(args, self)
else:
obj = get_obj('Sales Common')
for doc in self.doclist:
if doc.fields.get('item_code'):
- ret = obj.get_item_details(doc.item_code, self)
+ arg = {'item_code':doc.fields.get('item_code'), 'income_account':doc.fields.get('income_account'),
+ 'cost_center': doc.fields.get('cost_center'), 'warehouse': doc.fields.get('warehouse')};
+ ret = obj.get_item_details(arg, self)
for r in ret:
if not doc.fields.get(r):
doc.fields[r] = ret[r]
@@ -120,13 +122,6 @@
def get_adj_percent(self, arg=''):
get_obj('Sales Common').get_adj_percent(self)
- def get_comp_base_currency(self):
- return get_obj('Sales Common').get_comp_base_currency(self.doc.company)
-
- def get_price_list_currency(self):
- return get_obj('Sales Common').get_price_list_currency(self.doc.price_list_name, self.doc.company)
-
-
# Get projected qty of item based on warehouse selected
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.js b/erpnext/stock/doctype/delivery_note/delivery_note.js
index 3a8931e..b0569fc 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.js
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.js
@@ -43,17 +43,19 @@
cur_frm.cscript.onload_post_render = function(doc, dt, dn) {
// defined in sales_common.js
- if(doc.__islocal) cur_frm.cscript.update_item_details(doc, dt, dn);
+ var callback = function(doc, dt, dn) {
+ if(doc.__islocal) cur_frm.cscript.update_item_details(doc, dt, dn);
+ }
+
+ cur_frm.cscript.hide_price_list_currency(doc, dt, dn, callback);
}
// REFRESH
// ================================================================================================
cur_frm.cscript.refresh = function(doc, cdt, cdn) {
cur_frm.clear_custom_buttons();
- var callback = function() {
- cur_frm.cscript.dynamic_label(doc, cdt, cdn);
- }
- cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn, callback);
+
+ if (!cur_frm.cscript.is_onload) cur_frm.cscript.hide_price_list_currency(doc, cdt, cdn);
if(doc.per_billed < 100 && doc.docstatus==1) cur_frm.add_custom_button('Make Invoice', cur_frm.cscript['Make Sales Invoice']);
diff --git a/erpnext/stock/doctype/delivery_note/delivery_note.py b/erpnext/stock/doctype/delivery_note/delivery_note.py
index a94531b..0bca9d0 100644
--- a/erpnext/stock/doctype/delivery_note/delivery_note.py
+++ b/erpnext/stock/doctype/delivery_note/delivery_note.py
@@ -117,14 +117,16 @@
# ***************** Get Item Details ******************************
def get_item_details(self, args=None):
- args = eval(args)
- if args['item_code']:
+ args = args and eval(args) or {}
+ if args.get('item_code'):
return get_obj('Sales Common').get_item_details(args, self)
else:
obj = get_obj('Sales Common')
for doc in self.doclist:
if doc.fields.get('item_code'):
- ret = obj.get_item_details(doc.item_code, self)
+ arg = {'item_code':doc.fields.get('item_code'), 'income_account':doc.fields.get('income_account'),
+ 'cost_center': doc.fields.get('cost_center'), 'warehouse': doc.fields.get('warehouse')};
+ ret = obj.get_item_details(arg, self)
for r in ret:
if not doc.fields.get(r):
doc.fields[r] = ret[r]
@@ -135,13 +137,6 @@
get_obj('Sales Common').get_adj_percent(self)
- def get_comp_base_currency(self):
- return get_obj('Sales Common').get_comp_base_currency(self.doc.company)
-
- def get_price_list_currency(self):
- return get_obj('Sales Common').get_price_list_currency(self.doc.price_list_name, self.doc.company)
-
-
# ********** Get Actual Qty of item in warehouse selected *************
def get_actual_qty(self,args):
args = eval(args)
diff --git a/version.num b/version.num
index 3879e48..5d1d1b1 100644
--- a/version.num
+++ b/version.num
@@ -1 +1 @@
-753
\ No newline at end of file
+755
\ No newline at end of file