[fix] [minor] material request sales order wise through production planning tool
diff --git a/buying/doctype/purchase_common/purchase_common.py b/buying/doctype/purchase_common/purchase_common.py
index 6d8be0e..b480caf 100644
--- a/buying/doctype/purchase_common/purchase_common.py
+++ b/buying/doctype/purchase_common/purchase_common.py
@@ -36,13 +36,13 @@
if flt(d.conversion_factor):
last_purchase_rate = flt(d.purchase_rate) / flt(d.conversion_factor)
else:
- msgprint(_("Row ") + cstr(d.idx) + ": " +
- _("UOM Conversion Factor is mandatory"), raise_exception=1)
+ webnotes.throw(_("Row ") + cstr(d.idx) + ": " +
+ _("UOM Conversion Factor is mandatory"))
# update last purchsae rate
if last_purchase_rate:
- webnotes.conn.sql("update `tabItem` set last_purchase_rate = %s where name = %s",
- (flt(last_purchase_rate),d.item_code))
+ webnotes.conn.sql("""update `tabItem` set last_purchase_rate = %s where name = %s""",
+ (flt(last_purchase_rate), d.item_code))
def get_last_purchase_rate(self, obj):
"""get last purchase rates for all items"""
@@ -74,11 +74,11 @@
for d in getlist( obj.doclist, obj.fname):
# validation for valid qty
if flt(d.qty) < 0 or (d.parenttype != 'Purchase Receipt' and not flt(d.qty)):
- msgprint("Please enter valid qty for item %s" % cstr(d.item_code))
- raise Exception
+ webnotes.throw("Please enter valid qty for item %s" % cstr(d.item_code))
# udpate with latest quantities
- bin = webnotes.conn.sql("select projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1)
+ bin = webnotes.conn.sql("""select projected_qty from `tabBin` where
+ item_code = %s and warehouse = %s""", (d.item_code, d.warehouse), as_dict=1)
f_lst ={'projected_qty': bin and flt(bin[0]['projected_qty']) or 0, 'ordered_qty': 0, 'received_qty' : 0}
if d.doctype == 'Purchase Receipt Item':
@@ -87,22 +87,21 @@
if d.fields.has_key(x):
d.fields[x] = f_lst[x]
- item = webnotes.conn.sql("select is_stock_item, is_purchase_item, is_sub_contracted_item, end_of_life from tabItem where name=%s",
- d.item_code)
+ item = webnotes.conn.sql("""select is_stock_item, is_purchase_item,
+ is_sub_contracted_item, end_of_life from `tabItem` where name=%s""", d.item_code)
if not item:
- msgprint("Item %s does not exist in Item Master." % cstr(d.item_code), raise_exception=True)
+ webnotes.throw("Item %s does not exist in Item Master." % cstr(d.item_code))
from stock.utils import validate_end_of_life
validate_end_of_life(d.item_code, item[0][3])
# validate stock item
if item[0][0]=='Yes' and d.qty and not d.warehouse:
- msgprint("Warehouse is mandatory for %s, since it is a stock item" %
- d.item_code, raise_exception=1)
+ webnotes.throw("Warehouse is mandatory for %s, since it is a stock item" % d.item_code)
# validate purchase item
if item[0][1] != 'Yes' and item[0][2] != 'Yes':
- msgprint("Item %s is not a purchase item or sub-contracted item. Please check" % (d.item_code), raise_exception=True)
+ webnotes.throw("Item %s is not a purchase item or sub-contracted item. Please check" % (d.item_code))
# list criteria that should not repeat if item is stock item
e = [d.schedule_date, d.item_code, d.description, d.warehouse, d.uom,
@@ -113,25 +112,25 @@
# if is not stock item
f = [d.schedule_date, d.item_code, d.description]
- ch = webnotes.conn.sql("select is_stock_item from `tabItem` where name = '%s'"%d.item_code)
+ ch = webnotes.conn.sql("""select is_stock_item from `tabItem` where name = %s""", d.item_code)
if ch and ch[0][0] == 'Yes':
# check for same items
if e in check_list:
- msgprint("""Item %s has been entered more than once with same description, schedule date, warehouse and uom.\n
- Please change any of the field value to enter the item twice""" % d.item_code, raise_exception = 1)
+ webnotes.throw("""Item %s has been entered more than once with same description, schedule date, warehouse and uom.\n
+ Please change any of the field value to enter the item twice""" % d.item_code)
else:
check_list.append(e)
elif ch and ch[0][0] == 'No':
# check for same items
if f in chk_dupl_itm:
- msgprint("""Item %s has been entered more than once with same description, schedule date.\n
- Please change any of the field value to enter the item twice.""" % d.item_code, raise_exception = 1)
+ webnotes.throw("""Item %s has been entered more than once with same description, schedule date.\n
+ Please change any of the field value to enter the item twice.""" % d.item_code)
else:
chk_dupl_itm.append(f)
- def get_qty(self,curr_doctype,ref_tab_fname,ref_tab_dn,ref_doc_tname, transaction, curr_parent_name):
+ def get_qty(self, curr_doctype, ref_tab_fname, ref_tab_dn, ref_doc_tname, transaction, curr_parent_name):
# Get total Quantities of current doctype (eg. PR) except for qty of this transaction
#------------------------------
# please check as UOM changes from Material Request - Purchase Order ,so doing following else uom should be same .
@@ -139,35 +138,36 @@
# but if in Material Request uom KG it can change in PO
get_qty = (transaction == 'Material Request - Purchase Order') and 'qty * conversion_factor' or 'qty'
- qty = webnotes.conn.sql("select sum(%s) from `tab%s` where %s = '%s' and docstatus = 1 and parent != '%s'"% ( get_qty, curr_doctype, ref_tab_fname, ref_tab_dn, curr_parent_name))
+ qty = webnotes.conn.sql("""select sum(%s) from `tab%s` where %s = %s and
+ docstatus = 1 and parent != %s""", (get_qty, curr_doctype, ref_tab_fname, ref_tab_dn, curr_parent_name))
qty = qty and flt(qty[0][0]) or 0
# get total qty of ref doctype
#--------------------
- max_qty = webnotes.conn.sql("select qty from `tab%s` where name = '%s' and docstatus = 1"% (ref_doc_tname, ref_tab_dn))
+ max_qty = webnotes.conn.sql("""select qty from `tab%s` where name = %s
+ and docstatus = 1""", (ref_doc_tname, ref_tab_dn))
max_qty = max_qty and flt(max_qty[0][0]) or 0
return cstr(qty)+'~~~'+cstr(max_qty)
def check_for_stopped_status(self, doctype, docname):
- stopped = webnotes.conn.sql("select name from `tab%s` where name = '%s' and status = 'Stopped'" %
- ( doctype, docname))
+ stopped = webnotes.conn.sql("""select name from `tab%s` where name = '%s' and
+ status = 'Stopped'""", (doctype, docname))
if stopped:
- msgprint("One cannot do any transaction against %s : %s, it's status is 'Stopped'" %
- ( doctype, docname), raise_exception=1)
+ webnotes.throw("One cannot do any transaction against %s : %s, it's status is 'Stopped'" %
+ (doctype, docname))
- def check_docstatus(self, check, doctype, docname , detail_doctype = ''):
+ def check_docstatus(self, check, doctype, docname, detail_doctype = ''):
if check == 'Next':
submitted = webnotes.conn.sql("""select t1.name from `tab%s` t1,`tab%s` t2
where t1.name = t2.parent and t2.prevdoc_docname = %s and t1.docstatus = 1"""
% (doctype, detail_doctype, '%s'), docname)
if submitted:
- msgprint(cstr(doctype) + ": " + cstr(submitted[0][0])
- + _(" has already been submitted."), raise_exception=1)
+ webnotes.throw(cstr(doctype) + ": " + cstr(submitted[0][0])
+ + _("has already been submitted."))
if check == 'Previous':
submitted = webnotes.conn.sql("""select name from `tab%s`
- where docstatus = 1 and name = %s"""% (doctype, '%s'), docname)
+ where docstatus = 1 and name = %s""" % (doctype, '%s'), docname)
if not submitted:
- msgprint(cstr(doctype) + ": " + cstr(submitted[0][0])
- + _(" not submitted"), raise_exception=1)
+ webnotes.throw(cstr(doctype) + ": " + cstr(submitted[0][0]) + _("not submitted"))
diff --git a/manufacturing/doctype/production_planning_tool/production_planning_tool.py b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
index 17db5f4..c1185a1 100644
--- a/manufacturing/doctype/production_planning_tool/production_planning_tool.py
+++ b/manufacturing/doctype/production_planning_tool/production_planning_tool.py
@@ -154,20 +154,20 @@
for d in getlist(self.doclist, 'pp_details'):
self.validate_bom_no(d)
if not flt(d.planned_qty):
- webnotes.throw(_("Please Enter Planned Qty for item: %s at row no: %s") %
+ webnotes.throw("Please Enter Planned Qty for item: %s at row no: %s" %
(d.item_code, d.idx))
def validate_bom_no(self, d):
if not d.bom_no:
- webnotes.throw(_("Please enter bom no for item: %s at row no: %s") %
+ webnotes.throw("Please enter bom no for item: %s at row no: %s" %
(d.item_code, d.idx))
else:
bom = webnotes.conn.sql("""select name from `tabBOM` where name = %s and item = %s
and docstatus = 1 and is_active = 1""",
(d.bom_no, d.item_code), as_dict = 1)
if not bom:
- webnotes.throw(_("""Incorrect BOM No: %s entered for item: %s at row no: %s
- May be BOM is inactive or for other item or does not exists in the system""") %
+ webnotes.throw("""Incorrect BOM No: %s entered for item: %s at row no: %s
+ May be BOM is inactive or for other item or does not exists in the system""" %
(d.bom_no, d.item_doce, d.idx))
def raise_production_order(self):
@@ -290,11 +290,12 @@
for item_details in self.item_dict[item]:
item_list.append([item, item_details[1], item_details[2], item_details[0]])
item_qty = webnotes.conn.sql("""select warehouse, indented_qty, ordered_qty, actual_qty
- from `tabBin` where item_code = %s""", item)
+ from `tabBin` where item_code = %s""", item, as_dict=1)
i_qty, o_qty, a_qty = 0, 0, 0
for w in item_qty:
- i_qty, o_qty, a_qty = i_qty + flt(w[1]), o_qty + flt(w[2]), a_qty + flt(w[3])
- item_list.append(['', '', '', '', w[0], flt(w[1]), flt(w[2]), flt(w[3])])
+ i_qty, o_qty, a_qty = i_qty + flt(w.indented_qty), o_qty + flt(w.ordered_qty), a_qty + flt(w.actual_qty)
+ item_list.append(['', '', '', '', w.warehouse, flt(w.indented_qty),
+ flt(w.ordered_qty), flt(w.actual_qty)])
if item_qty:
item_list.append(['', '', '', '', 'Total', i_qty, o_qty, a_qty])
@@ -405,7 +406,7 @@
if purchase_request_list:
pur_req = ["""<a href="#Form/Material Request/%s" target="_blank">%s</a>""" % \
(p, p) for p in purchase_request_list]
- msgprint(_("Material Request(s) created: \n%s") %
+ msgprint("Material Request(s) created: \n%s" %
"\n".join(pur_req))
else:
msgprint(_("Nothing to request"))
\ No newline at end of file
diff --git a/stock/doctype/material_request/material_request.py b/stock/doctype/material_request/material_request.py
index 67d36ef..50661a3 100644
--- a/stock/doctype/material_request/material_request.py
+++ b/stock/doctype/material_request/material_request.py
@@ -38,18 +38,18 @@
for so_no in so_items.keys():
for item in so_items[so_no].keys():
already_indented = webnotes.conn.sql("""select sum(qty) from `tabMaterial Request Item`
- where item_code = '%s' and sales_order_no = '%s' and
- docstatus = 1 and parent != '%s'""" % (item, so_no, self.doc.name))
+ where item_code = %s and sales_order_no = %s and
+ docstatus = 1 and parent != %s""", (item, so_no, self.doc.name))
already_indented = already_indented and flt(already_indented[0][0]) or 0
actual_so_qty = webnotes.conn.sql("""select sum(qty) from `tabSales Order Item`
- where parent = '%s' and item_code = '%s' and docstatus = 1
- group by parent""" % (so_no, item))
+ where parent = %s and item_code = %s and docstatus = 1
+ group by parent""", (so_no, item))
actual_so_qty = actual_so_qty and flt(actual_so_qty[0][0]) or 0
if actual_so_qty and (flt(so_items[so_no][item]) + already_indented > actual_so_qty):
- webnotes.throw(_("You can raise indent of maximum qty: %s for item: %s against sales order: %s\
- \n Anyway, you can add more qty in new row for the same item.")
+ webnotes.throw("You can raise indent of maximum qty: %s for item: %s against sales order: %s\
+ \n Anyway, you can add more qty in new row for the same item."
% (actual_so_qty - already_indented, item, so_no))
def validate_schedule_date(self):
@@ -105,8 +105,10 @@
self.update_bin(is_submit = 1, is_stopped = 0)
def check_modified_date(self):
- mod_db = webnotes.conn.sql("select modified from `tabMaterial Request` where name = '%s'" % self.doc.name)
- date_diff = webnotes.conn.sql("select TIMEDIFF('%s', '%s')" % (mod_db[0][0], cstr(self.doc.modified)))
+ mod_db = webnotes.conn.sql("""select modified from `tabMaterial Request` where name = %s""",
+ self.doc.name)
+ date_diff = webnotes.conn.sql("""select TIMEDIFF('%s', '%s')"""
+ % (mod_db[0][0], cstr(self.doc.modified)))
if date_diff and date_diff[0][0]:
webnotes.throw(cstr(self.doc.doctype) + " => " + cstr(self.doc.name) + " has been modified. Please Refresh.")
@@ -120,7 +122,7 @@
webnotes.conn.set(self.doc, 'status', cstr(status))
# Step 3:=> Acknowledge User
- msgprint(self.doc.doctype + ": " + self.doc.name + _(" has been %s.") % ((status == 'Submitted') and 'Unstopped' or cstr(status)) )
+ msgprint(self.doc.doctype + ": " + self.doc.name + " has been %s." % ((status == 'Submitted') and 'Unstopped' or cstr(status)))
def on_cancel(self):