From 12b58ec5cc23d5d056e2382bb9ecaf7f02a51b1d Mon Sep 17 00:00:00 2001 From: Nabin Hait Date: Sun, 10 Jul 2011 12:48:13 +0530 Subject: [PATCH] make sensitive fields read only in item master if sle exists --- stock/doctype/item/item.js | 16 ++++++++++++++-- stock/doctype/item/item.py | 8 ++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/stock/doctype/item/item.js b/stock/doctype/item/item.js index 115ced545a..3c0262979e 100644 --- a/stock/doctype/item/item.js +++ b/stock/doctype/item/item.js @@ -1,6 +1,18 @@ cur_frm.cscript.refresh = function(doc) { - if(cint(doc.is_local) && doc.has_serial_no) set_field_permlevel('has_serial_no', 1); - if(cint(doc.is_local) && doc.is_stock_item) set_field_permlevel('is_stock_item', 1); + // make sensitive fields(has_serial_no, is_stock_item, valuation_method) + // read only if any stock ledger entry exists + + if ((!doc.__islocal) && (doc.is_stock_item == 'Yes')) { + var callback = function(r, rt) { + if (r.message == 'exists') permlevel = 1; + else permlevel = 0; + + set_field_permlevel('has_serial_no', permlevel); + set_field_permlevel('is_stock_item', permlevel); + set_field_permlevel('valuation_method', permlevel); + } + $c_obj(make_doclist(doc.doctype, doc.name),'check_if_sle_exists','',callback); + } } diff --git a/stock/doctype/item/item.py b/stock/doctype/item/item.py index a2fbf0123c..ae677493b5 100644 --- a/stock/doctype/item/item.py +++ b/stock/doctype/item/item.py @@ -170,3 +170,11 @@ Total Available Qty: %s } return str(ret) + + def check_if_sle_exists(self): + """ + checks if any stock ledger entry exists for this item + """ + + sle = sql("select name from `tabStock Ledger Entry` where item_code = %s and ifnull(is_cancelled, 'No') = 'No'", self.doc.name) + return sle and 'exists' or 'not exists'