diff --git a/stock/doctype/packing_slip/packing_slip.py b/stock/doctype/packing_slip/packing_slip.py index b90b0e6c76..5f4fda05a1 100644 --- a/stock/doctype/packing_slip/packing_slip.py +++ b/stock/doctype/packing_slip/packing_slip.py @@ -186,10 +186,30 @@ class DocType: if not self.doc.from_case_no: self.doc.from_case_no = self.get_recommended_case_no() - from webnotes.model.code import get_obj - for d in self.doclist: - psd_obj = get_obj(doc=d) - psd_obj.get_item_details(self.doc.delivery_note) + for d in self.doclist.get({"parentfield": "item_details"}): + self.set_item_details(d) + + + def set_item_details(self, row): + res = webnotes.conn.sql("""\ + SELECT item_name, SUM(IFNULL(qty, 0)) as total_qty, + IFNULL(packed_qty, 0) as packed_qty, stock_uom + FROM `tabDelivery Note Item` + WHERE parent=%s AND item_code=%s GROUP BY item_code""", + (self.doc.delivery_note, row.item_code), as_dict=1) + + if res and len(res)>0: + qty = res[0]['total_qty'] - res[0]['packed_qty'] + if not row.qty: + row.qty = qty >= 0 and qty or 0 + + res = webnotes.conn.sql("""\ + SELECT net_weight, weight_uom FROM `tabItem` + WHERE name=%s""", self.doc.item_code, as_dict=1) + + if res and len(res)>0: + row.net_weight = res[0]["net_weight"] + row.weight_uom = res[0]["weight_uom"] def get_recommended_case_no(self): @@ -201,6 +221,4 @@ class DocType: SELECT MAX(to_case_no) FROM `tabPacking Slip` WHERE delivery_note = %(delivery_note)s AND docstatus=1""", self.doc.fields) - return cint(recommended_case_no[0][0]) + 1 - - + return cint(recommended_case_no[0][0]) + 1 \ No newline at end of file diff --git a/stock/doctype/packing_slip_item/packing_slip_item.py b/stock/doctype/packing_slip_item/packing_slip_item.py deleted file mode 100644 index cfd57e79b5..0000000000 --- a/stock/doctype/packing_slip_item/packing_slip_item.py +++ /dev/null @@ -1,46 +0,0 @@ -# ERPNext - web based ERP (http://erpnext.com) -# Copyright (C) 2012 Web Notes Technologies Pvt Ltd -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# 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 -# 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 . - -from __future__ import unicode_literals -import webnotes - -class DocType: - def __init__(self, d, dl): - self.doc, self.doclist = d, dl - - def get_item_details(self, delivery_note): - res = webnotes.conn.sql("""\ - SELECT item_name, SUM(IFNULL(qty, 0)) as total_qty, - IFNULL(packed_qty, 0) as packed_qty, stock_uom - FROM `tabDelivery Note Item` - WHERE parent=%s AND item_code=%s GROUP BY item_code""", - (delivery_note, self.doc.item_code), as_dict=1) - - if res and len(res)>0: - res = res[0] - res['qty'] = res['total_qty'] - res['packed_qty'] - res['qty'] = self.doc.qty or (res['qty']>=0 and res['qty'] or 0) - del res['total_qty'] - del res['packed_qty'] - self.doc.fields.update(res) - - res = webnotes.conn.sql("""\ - SELECT net_weight, weight_uom FROM `tabItem` - WHERE name=%s""", self.doc.item_code, as_dict=1) - - if res and len(res)>0: - res = res[0] - self.doc.fields.update(res)