diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js index 0851db74c9..77cfd1bb0d 100644 --- a/buying/doctype/purchase_common/purchase_common.js +++ b/buying/doctype/purchase_common/purchase_common.js @@ -202,23 +202,37 @@ cur_frm.cscript.update_stock_qty = function(doc,cdt,cdn){ } //==================== UOM ====================================================================== -cur_frm.cscript.uom = function(doc, cdt, cdn) { +cur_frm.cscript.uom = function(doc, cdt, cdn, args) { + if(!args) args = {}; + + // args passed can contain conversion_factor var d = locals[cdt][cdn]; - if (d.item_code && d.uom) { - call_back = function(doc, cdt, cdn){ - cur_frm.cscript.calc_amount(doc, 2); - } - str_arg = {'item_code':d.item_code, 'uom':d.uom, 'stock_qty':flt(d.stock_qty), 'qty': flt(d.qty), 'conversion_rate':doc.conversion_rate, 'doc_name': doc.name} - // Updates Conversion Factor, Qty and Purchase Rate - get_server_fields('get_uom_details',JSON.stringify(str_arg), fname, doc,cdt,cdn,1, call_back); - // don't make mistake of calling update_stock_qty() the get_uom_details returns stock_qty as per conversion factor properly + $.extend(args, { + item_code: d.item_code, + uom: d.uom, + stock_qty: flt(d.stock_qty), + }); + + if(d.item_code && d.uom) { + wn.call({ + method: "buying.doctype.purchase_common.purchase_common.get_uom_details", + args: { args: args }, + callback: function(r) { + d = locals[cdt][cdn]; + $.extend(d, r.message); + refresh_field(cur_frm.cscript.fname); + cur_frm.cscript.calc_amount(doc, 2); + } + }); } } //==================== Conversion factor ========================================================= cur_frm.cscript.conversion_factor = function(doc, cdt, cdn) { - cur_frm.cscript.uom(doc, cdt, cdn); + var item = locals[cdt][cdn]; + + cur_frm.cscript.uom(doc, cdt, cdn, { conversion_factor: item.conversion_factor }); } //==================== stock qty ====================================================================== diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py index eb8ebef874..9c1187dd01 100644 --- a/buying/doctype/purchase_common/purchase_common.py +++ b/buying/doctype/purchase_common/purchase_common.py @@ -182,39 +182,6 @@ class DocType(TransactionBase): ret = { 'projected_qty' : bin and flt(bin[0]['projected_qty']) or 0 } return ret - def get_uom_details(self, arg = ''): - """fetches details on change of UOM""" - import json - arg, ret = json.loads(arg), {} - - uom = webnotes.conn.sql("""\ - select conversion_factor - from `tabUOM Conversion Detail` - where parent = %s and uom = %s""", (arg['item_code'],arg['uom']), as_dict = 1) - - if not uom: return ret - - last_purchase_details, last_purchase_date = self.get_last_purchase_details(arg['item_code'], arg['doc_name']) - - conversion_factor = flt(uom[0]['conversion_factor']) - conversion_rate = flt(arg['conversion_rate']) - purchase_ref_rate = last_purchase_details and \ - (last_purchase_details['purchase_ref_rate'] * conversion_factor) or 0 - purchase_rate = last_purchase_details and \ - (last_purchase_details['purchase_rate'] * conversion_factor) or 0 - - ret = { - 'conversion_factor': conversion_factor, - 'qty': flt(arg['stock_qty']) / conversion_factor, - 'purchase_ref_rate': purchase_ref_rate, - 'purchase_rate': purchase_rate, - 'import_ref_rate': purchase_ref_rate / conversion_rate, - 'import_rate': purchase_rate / conversion_rate, - } - - return ret - - # --- Last Purchase Rate related methods --- def update_last_purchase_rate(self, obj, is_submit): @@ -683,3 +650,27 @@ class DocType(TransactionBase): if d.prevdoc_doctype and d.prevdoc_docname: dt = sql("select transaction_date from `tab%s` where name = '%s'" % (d.prevdoc_doctype, d.prevdoc_docname)) d.prevdoc_date = dt and dt[0][0].strftime('%Y-%m-%d') or '' + +@webnotes.whitelist() +def get_uom_details(args=None): + """fetches details on change of UOM""" + if not args: + return {} + + if isinstance(args, basestring): + import json + args = json.loads(args) + + uom = webnotes.conn.sql("""select conversion_factor + from `tabUOM Conversion Detail` where parent = %s and uom = %s""", + (args['item_code'], args['uom']), as_dict=1) + + if not uom: return {} + + conversion_factor = args.get("conversion_factor") or \ + flt(uom[0]["conversion_factor"]) + + return { + "conversion_factor": conversion_factor, + "qty": flt(args["stock_qty"]) / conversion_factor, + } \ No newline at end of file diff --git a/buying/doctype/purchase_order/purchase_order.py b/buying/doctype/purchase_order/purchase_order.py index 4497bcd524..e52499cfd0 100644 --- a/buying/doctype/purchase_order/purchase_order.py +++ b/buying/doctype/purchase_order/purchase_order.py @@ -69,10 +69,6 @@ class DocType(TransactionBase): - # Get UOM Details - def get_uom_details(self, arg = ''): - return get_obj('Purchase Common').get_uom_details(arg) - # get available qty at warehouse def get_bin_details(self, arg = ''): return get_obj(dt='Purchase Common').get_bin_details(arg) diff --git a/buying/doctype/purchase_request/purchase_request.py b/buying/doctype/purchase_request/purchase_request.py index 79c740000a..7d0e08e440 100644 --- a/buying/doctype/purchase_request/purchase_request.py +++ b/buying/doctype/purchase_request/purchase_request.py @@ -121,11 +121,6 @@ class DocType: doc.fields[r] = ret[r] - # Get UOM Details - # --------------------------------- - def get_uom_details(self, arg = ''): - return get_obj(dt='Purchase Common').get_uom_details(arg) - # GET TERMS & CONDITIONS #----------------------------- def get_tc_details(self): @@ -219,4 +214,4 @@ class DocType: self.update_bin(is_submit = 0, is_stopped = (cstr(self.doc.status) == 'Stopped') and 1 or 0) # Step 5:=> Set Status - webnotes.conn.set(self.doc,'status','Cancelled') + webnotes.conn.set(self.doc,'status','Cancelled') \ No newline at end of file diff --git a/stock/doctype/purchase_receipt/purchase_receipt.py b/stock/doctype/purchase_receipt/purchase_receipt.py index 04ad4dce07..9e23c271a0 100644 --- a/stock/doctype/purchase_receipt/purchase_receipt.py +++ b/stock/doctype/purchase_receipt/purchase_receipt.py @@ -64,10 +64,6 @@ class DocType(TransactionBase): doc.fields[r] = ret[r] - # Get UOM Details - def get_uom_details(self, arg = ''): - return get_obj(dt='Purchase Common').get_uom_details(arg) - # GET TERMS & CONDITIONS # ===================================================================================== def get_tc_details(self):