diff --git a/selling/doctype/sales_order/sales_order.py b/selling/doctype/sales_order/sales_order.py index 771aafa6c3..a66c4460a0 100644 --- a/selling/doctype/sales_order/sales_order.py +++ b/selling/doctype/sales_order/sales_order.py @@ -110,12 +110,12 @@ class DocType(SellingController): self.validate_uom_is_integer("stock_uom", "qty") self.validate_for_items() self.validate_warehouse() - + from stock.doctype.packed_item.packed_item import make_packing_list self.doclist = make_packing_list(self,'sales_order_details') - + self.validate_with_previous_doc() - + if not self.doc.status: self.doc.status = "Draft" @@ -124,8 +124,7 @@ class DocType(SellingController): "Cancelled"]) if not self.doc.billing_status: self.doc.billing_status = 'Not Billed' - if not self.doc.delivery_status: self.doc.delivery_status = 'Not Delivered' - + if not self.doc.delivery_status: self.doc.delivery_status = 'Not Delivered' def validate_warehouse(self): from stock.utils import validate_warehouse_user, validate_warehouse_company diff --git a/stock/doctype/delivery_note/delivery_note.py b/stock/doctype/delivery_note/delivery_note.py index 1089a5697c..b2149b1be8 100644 --- a/stock/doctype/delivery_note/delivery_note.py +++ b/stock/doctype/delivery_note/delivery_note.py @@ -73,6 +73,9 @@ class DocType(SellingController): self.update_current_stock() self.validate_with_previous_doc() + from stock.doctype.packed_item.packed_item import make_packing_list + self.doclist = make_packing_list(self, 'delivery_note_details') + self.doc.status = 'Draft' if not self.doc.installation_status: self.doc.installation_status = 'Not Installed' @@ -142,10 +145,6 @@ class DocType(SellingController): bin = webnotes.conn.sql("select actual_qty, projected_qty from `tabBin` where item_code = %s and warehouse = %s", (d.item_code, d.warehouse), as_dict = 1) d.actual_qty = bin and flt(bin[0]['actual_qty']) or 0 d.projected_qty = bin and flt(bin[0]['projected_qty']) or 0 - - def on_update(self): - from stock.doctype.packed_item.packed_item import make_packing_list - self.doclist = make_packing_list(self, 'delivery_note_details') def on_submit(self): self.validate_packed_qty() diff --git a/stock/doctype/packed_item/packed_item.py b/stock/doctype/packed_item/packed_item.py index a58444d554..ba3cb30ff3 100644 --- a/stock/doctype/packed_item/packed_item.py +++ b/stock/doctype/packed_item/packed_item.py @@ -56,9 +56,6 @@ def update_packing_list_item(obj, packing_item_code, qty, warehouse, line, packi pi.batch_no = cstr(line.batch_no) pi.idx = packing_list_idx - # saved, since this function is called on_update of delivery note - pi.save() - packing_list_idx += 1 @@ -87,19 +84,13 @@ def cleanup_packing_list(obj, parent_items): for d in obj.doclist.get({"parentfield": "packing_details"}): if [d.parent_item, d.parent_detail_docname] not in parent_items: # mark for deletion from doclist - delete_list.append(d.name) + delete_list.append([d.parent_item, d.parent_detail_docname]) if not delete_list: return obj.doclist # delete from doclist - obj.doclist = webnotes.doclist(filter(lambda d: d.name not in delete_list, obj.doclist)) - - # delete from db - webnotes.conn.sql("""\ - delete from `tabPacked Item` - where name in (%s)""" - % (", ".join(["%s"] * len(delete_list))), - tuple(delete_list)) + obj.doclist = webnotes.doclist(filter(lambda d: [d.parent_item, d.parent_detail_docname] + not in delete_list, obj.doclist)) return obj.doclist \ No newline at end of file