diff --git a/stock/doctype/packing_slip/packing_slip.js b/stock/doctype/packing_slip/packing_slip.js
index d3cf9be..7e26a09 100644
--- a/stock/doctype/packing_slip/packing_slip.js
+++ b/stock/doctype/packing_slip/packing_slip.js
@@ -43,8 +43,8 @@
 }
 
 
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if(doc.delivery_note) {
+cur_frm.cscript.onload_post_render = function(doc, cdt, cdn) {
+	if(doc.delivery_note && doc.__islocal) {
 		var ps_detail = getchildren('Packing Slip Item', doc.name, 'item_details');
 		if(!(flt(ps_detail[0].net_weight) && cstr(ps_detail[0].weight_uom))) {
 			cur_frm.cscript.update_item_details(doc);
diff --git a/stock/doctype/packing_slip/packing_slip.py b/stock/doctype/packing_slip/packing_slip.py
index 9e544b6..7ef7d36 100644
--- a/stock/doctype/packing_slip/packing_slip.py
+++ b/stock/doctype/packing_slip/packing_slip.py
@@ -16,7 +16,7 @@
 
 from __future__ import unicode_literals
 import webnotes
-from webnotes.utils import flt, cint
+from webnotes.utils import flt, cint, now
 
 class DocType:
 	def __init__(self, d, dl):
@@ -56,6 +56,15 @@
 			Validate if case nos overlap
 			If they do, recommend next case no.
 		"""
+		if not cint(self.doc.from_case_no):
+			webnotes.msgprint("Please specify a valid 'From Case No.'", raise_exception=1)
+		elif not self.doc.to_case_no:
+			self.doc.to_case_no = self.doc.from_case_no
+		elif self.doc.from_case_no > self.doc.to_case_no:
+			webnotes.msgprint("'To Case No.' cannot be less than 'From Case No.'",
+				raise_exception=1)
+		
+		
 		res = webnotes.conn.sql("""\
 			SELECT name FROM `tabPacking Slip`
 			WHERE delivery_note = %(delivery_note)s AND docstatus = 1 AND
@@ -92,16 +101,24 @@
 		item_codes = ", ".join([('"' + d.item_code + '"') for d in
 			self.doclist])
 		
+		items = [d.item_code for d in self.doclist.get({"parentfield": "item_details"})]
+		
 		if not item_codes: webnotes.msgprint("No Items to Pack",
 				raise_exception=1)
-
-		res = webnotes.conn.sql("""\
-			SELECT item_code, IFNULL(SUM(qty), 0) as qty, IFNULL(packed_qty, 0) as packed_qty, stock_uom
-			FROM `tabDelivery Note Item`
-			WHERE parent = "%s" AND item_code IN (%s)
-			GROUP BY item_code""" % (self.doc.delivery_note, item_codes),
-			as_dict=1)
-
+		
+		# gets item code, qty per item code, latest packed qty per item code and stock uom
+		res = webnotes.conn.sql("""select item_code, ifnull(sum(qty), 0) as qty,
+			(select sum(ifnull(psi.qty, 0) * (abs(ps.to_case_no - ps.from_case_no) + 1))
+				from `tabPacking Slip` ps, `tabPacking Slip Item` psi
+				where ps.name = psi.parent and ps.docstatus = 1
+				and ps.delivery_note = dni.parent and psi.item_code=dni.item_code)
+					as packed_qty,
+			stock_uom
+			from `tabDelivery Note Item` dni
+			where parent=%s and item_code in (%s)
+			group by item_code""" % ("%s", ", ".join(["%s"]*len(items))),
+			tuple([self.doc.delivery_note] + items), as_dict=1, debug=1)
+			
 		ps_item_qty = dict([[d.item_code, d.qty] for d in self.doclist])
 
 		no_of_cases = cint(self.doc.to_case_no) - cint(self.doc.from_case_no) + 1
@@ -148,28 +165,29 @@
 		dn_details, ps_item_qty, no_of_cases = self.get_details_for_packing()
 
 		for item in dn_details:
-			if event=='submit':
-				new_packed_qty = flt(item['packed_qty']) + (flt(ps_item_qty[item['item_code']]) * no_of_cases)
-
-			elif event=='cancel':
-				new_packed_qty = flt(item['packed_qty']) - (flt(ps_item_qty[item['item_code']]) * no_of_cases)
-
+			new_packed_qty = flt(item['packed_qty'])
 			if (new_packed_qty < 0) or (new_packed_qty > flt(item['qty'])):
 				webnotes.msgprint("Invalid new packed quantity for item %s. \
 					Please try again or contact support@erpnext.com" % item['item_code'], raise_exception=1)
-
+			
+			delivery_note_item = webnotes.conn.get_value("Delivery Note Item", {
+				"parent": self.doc.delivery_note, "item_code": item["item_code"]})
+			
 			webnotes.conn.sql("""\
 				UPDATE `tabDelivery Note Item`
 				SET packed_qty = %s
 				WHERE parent = %s AND item_code = %s""",
-				(new_packed_qty, self.doc.delivery_note, item['item_code']))			
+				(new_packed_qty, self.doc.delivery_note, item['item_code']))
+			webnotes.conn.set_value("Delivery Note", self.doc.delivery_note,
+				"modified", now())
 
 
 	def update_item_details(self):
 		"""
 			Fill empty columns in Packing Slip Item
 		"""
-		self.doc.from_case_no = self.get_recommended_case_no()
+		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:
