allow changing the uom conversion factor in purchase cycle
This commit is contained in:
parent
69e9620609
commit
0a32ed3219
@ -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 ======================================================================
|
||||
|
@ -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,
|
||||
}
|
@ -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)
|
||||
|
@ -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')
|
@ -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):
|
||||
|
Loading…
x
Reference in New Issue
Block a user