diff --git a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py index 41a60d7159..b12809411d 100644 --- a/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py +++ b/erpnext/stock/doctype/stock_uom_replace_utility/stock_uom_replace_utility.py @@ -8,11 +8,11 @@ # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program. If not, see . +# along with this program. If not, see . # Please edit this list and import only required elements from __future__ import unicode_literals @@ -35,86 +35,86 @@ convert_to_lists = webnotes.conn.convert_to_lists class DocType: - def __init__(self, d, dl=[]): - self.doc, self.doclist = d,dl + def __init__(self, d, dl=[]): + self.doc, self.doclist = d,dl - def get_stock_uom(self, item_code): - return {'current_stock_uom': cstr(get_value('Item', item_code, 'stock_uom'))} - - def validate_mandatory(self): - if not cstr(self.doc.item_code): - msgprint("Please Enter an Item.") - raise Exception - - if not cstr(self.doc.new_stock_uom): - msgprint("Please Enter New Stock UOM.") - raise Exception + def get_stock_uom(self, item_code): + return {'current_stock_uom': cstr(get_value('Item', item_code, 'stock_uom'))} + + def validate_mandatory(self): + if not cstr(self.doc.item_code): + msgprint("Please Enter an Item.") + raise Exception + + if not cstr(self.doc.new_stock_uom): + msgprint("Please Enter New Stock UOM.") + raise Exception - if cstr(self.doc.current_stock_uom) == cstr(self.doc.new_stock_uom): - msgprint("Current Stock UOM and Stock UOM are same.") - raise Exception - - # check conversion factor - if not flt(self.doc.conversion_factor): - msgprint("Please Enter Conversion Factor.") - raise Exception - - stock_uom = sql("select stock_uom from `tabItem` where name = '%s'" % self.doc.item_code) - stock_uom = stock_uom and stock_uom[0][0] - if cstr(self.doc.new_stock_uom) == cstr(stock_uom): - msgprint("Item Master is already updated with New Stock UOM " + cstr(self.doc.new_stock_uom)) - raise Exception - - def update_item_master(self): - # update stock uom in item master - sql("update `tabItem` set stock_uom = '%s' where name = '%s' " % (self.doc.new_stock_uom, self.doc.item_code)) - - # acknowledge user - msgprint("New Stock UOM : " + cstr(self.doc.new_stock_uom) + " updated in Item : " + cstr(self.doc.item_code)) - - def update_bin(self): - # update bin - if flt(self.doc.conversion_factor) != flt(1): - sql("update `tabBin` set stock_uom = '%s' , indented_qty = ifnull(indented_qty,0) * %s, ordered_qty = ifnull(ordered_qty,0) * %s, reserved_qty = ifnull(reserved_qty,0) * %s, planned_qty = ifnull(planned_qty,0) * %s, projected_qty = actual_qty + ordered_qty + indented_qty + planned_qty - reserved_qty where item_code = '%s'" % (self.doc.new_stock_uom, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.item_code) ) - else: - sql("update `tabBin` set stock_uom = '%s' where item_code = '%s'" % (self.doc.new_stock_uom, self.doc.item_code) ) + if cstr(self.doc.current_stock_uom) == cstr(self.doc.new_stock_uom): + msgprint("Current Stock UOM and Stock UOM are same.") + raise Exception + + # check conversion factor + if not flt(self.doc.conversion_factor): + msgprint("Please Enter Conversion Factor.") + raise Exception + + stock_uom = sql("select stock_uom from `tabItem` where name = '%s'" % self.doc.item_code) + stock_uom = stock_uom and stock_uom[0][0] + if cstr(self.doc.new_stock_uom) == cstr(stock_uom): + msgprint("Item Master is already updated with New Stock UOM " + cstr(self.doc.new_stock_uom)) + raise Exception + + def update_item_master(self): + # update stock uom in item master + sql("update `tabItem` set stock_uom = '%s' where name = '%s' " % (self.doc.new_stock_uom, self.doc.item_code)) + + # acknowledge user + msgprint("New Stock UOM : " + cstr(self.doc.new_stock_uom) + " updated in Item : " + cstr(self.doc.item_code)) + + def update_bin(self): + # update bin + if flt(self.doc.conversion_factor) != flt(1): + sql("update `tabBin` set stock_uom = '%s' , indented_qty = ifnull(indented_qty,0) * %s, ordered_qty = ifnull(ordered_qty,0) * %s, reserved_qty = ifnull(reserved_qty,0) * %s, planned_qty = ifnull(planned_qty,0) * %s, projected_qty = actual_qty + ordered_qty + indented_qty + planned_qty - reserved_qty where item_code = '%s'" % (self.doc.new_stock_uom, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.conversion_factor, self.doc.item_code) ) + else: + sql("update `tabBin` set stock_uom = '%s' where item_code = '%s'" % (self.doc.new_stock_uom, self.doc.item_code) ) - # acknowledge user - msgprint(" All Bin's Updated Successfully.") - - def update_stock_ledger_entry(self): - # update stock ledger entry - if flt(self.doc.conversion_factor) != flt(1): - sql("update `tabStock Ledger Entry` set stock_uom = '%s', actual_qty = ifnull(actual_qty,0) * '%s' where item_code = '%s' " % (self.doc.new_stock_uom, self.doc.conversion_factor, self.doc.item_code)) - else: - sql("update `tabStock Ledger Entry` set stock_uom = '%s' where item_code = '%s' " % (self.doc.new_stock_uom, self.doc.item_code)) - - # acknowledge user - msgprint("Stock Ledger Entries Updated Successfully.") - - # update item valuation - if flt(self.doc.conversion_factor) != flt(1): - wh = sql("select name from `tabWarehouse`") - for w in wh: - bin = sql("select name from `tabBin` where item_code = '%s' and warehouse = '%s'" % (self.doc.item_code, w[0])) - if bin and bin[0][0]: - get_obj("Bin", bin[0][0]).update_entries_after(posting_date = '', posting_time = '') + # acknowledge user + msgprint(" All Bin's Updated Successfully.") + + def update_stock_ledger_entry(self): + # update stock ledger entry + if flt(self.doc.conversion_factor) != flt(1): + sql("update `tabStock Ledger Entry` set stock_uom = '%s', actual_qty = ifnull(actual_qty,0) * '%s' where item_code = '%s' " % (self.doc.new_stock_uom, self.doc.conversion_factor, self.doc.item_code)) + else: + sql("update `tabStock Ledger Entry` set stock_uom = '%s' where item_code = '%s' " % (self.doc.new_stock_uom, self.doc.item_code)) + + # acknowledge user + msgprint("Stock Ledger Entries Updated Successfully.") + + # update item valuation + if flt(self.doc.conversion_factor) != flt(1): + wh = sql("select name from `tabWarehouse`") + for w in wh: + bin = sql("select name from `tabBin` where item_code = '%s' and warehouse = '%s'" % (self.doc.item_code, w[0])) + if bin and bin[0][0]: + get_obj("Bin", bin[0][0]).update_entries_after(posting_date = '', posting_time = '') - # acknowledge user - msgprint("Item Valuation Updated Successfully.") + # acknowledge user + msgprint("Item Valuation Updated Successfully.") - # Update Stock UOM - def update_stock_uom(self): - # validate mandatory - self.validate_mandatory() - - # update item master - self.update_item_master() - - # update stock ledger entry - self.update_stock_ledger_entry() - - # update bin - self.update_bin() + # Update Stock UOM + def update_stock_uom(self): + # validate mandatory + self.validate_mandatory() + + # update item master + self.update_item_master() + + # update stock ledger entry + self.update_stock_ledger_entry() + + # update bin + self.update_bin() - get_obj("Item", self.doc.item_code).on_update() + get_obj("Item", self.doc.item_code).on_update()