diff --git a/erpnext/stock/doctype/packing_slip/packing_slip.js b/erpnext/stock/doctype/packing_slip/packing_slip.js
index f9cd2bf..fb91930 100644
--- a/erpnext/stock/doctype/packing_slip/packing_slip.js
+++ b/erpnext/stock/doctype/packing_slip/packing_slip.js
@@ -70,51 +70,37 @@
 	},
 
 	validate_calculate_item_details: (frm) => {
-		doc = locals[frm.doc.doctype][frm.doc.name];
-		var ps_detail = doc.items || [];
-
-		frm.events.validate_duplicate_items(doc, ps_detail);
-		frm.events.calc_net_total_pkg(doc, ps_detail);
+		frm.trigger("validate_items_qty");
+		frm.trigger("calc_net_total_pkg");
 	},
 
-	// Do not allow duplicate items i.e. items with same item_code
-	// Also check for 0 qty
-	validate_duplicate_items: (doc, ps_detail) => {
-		for(var i=0; i<ps_detail.length; i++) {
-			for(var j=0; j<ps_detail.length; j++) {
-				if(i!=j && ps_detail[i].item_code && ps_detail[i].item_code == ps_detail[j].item_code) {
-					frappe.msgprint(__("You have entered duplicate items. Please rectify and try again."));
-					frappe.validated = false;
-					return;
-				}
-			}
-
-			if(flt(ps_detail[i].qty) <= 0) {
-				frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [ps_detail[i].item_code]));
+	validate_items_qty: (frm) => {
+		frm.doc.items.forEach(item => {
+			if (item.qty <= 0) {
+				frappe.msgprint(__("Invalid quantity specified for item {0}. Quantity should be greater than 0.", [item.item_code]));
 				frappe.validated = false;
 			}
-		}
+		});
 	},
 
-	// Calculate Net Weight of Package
-	calc_net_total_pkg: (doc, ps_detail) => {
+	calc_net_total_pkg: (frm) => {
 		var net_weight_pkg = 0;
-		doc.net_weight_uom = (ps_detail && ps_detail.length) ? ps_detail[0].weight_uom : '';
-		doc.gross_weight_uom = doc.net_weight_uom;
+		var items = frm.doc.items || [];
+		frm.doc.net_weight_uom = (items && items.length) ? items[0].weight_uom : '';
+		frm.doc.gross_weight_uom = frm.doc.net_weight_uom;
 
-		for(var i=0; i<ps_detail.length; i++) {
-			var item = ps_detail[i];
-			if(item.weight_uom != doc.net_weight_uom) {
+		items.forEach(item => {
+			if(item.weight_uom != frm.doc.net_weight_uom) {
 				frappe.msgprint(__("Different UOM for items will lead to incorrect (Total) Net Weight value. Make sure that Net Weight of each item is in the same UOM."));
 				frappe.validated = false;
 			}
 			net_weight_pkg += flt(item.net_weight) * flt(item.qty);
-		}
+		});
 
-		doc.net_weight_pkg = roundNumber(net_weight_pkg, 2);
+		frm.doc.net_weight_pkg = roundNumber(net_weight_pkg, 2);
 
-		if(!flt(doc.gross_weight_pkg)) {
-			doc.gross_weight_pkg = doc.net_weight_pkg;
+		if(!flt(frm.doc.gross_weight_pkg)) {
+			frm.doc.gross_weight_pkg = frm.doc.net_weight_pkg;
 		}
 
 		refresh_many(['net_weight_pkg', 'net_weight_uom', 'gross_weight_uom', 'gross_weight_pkg']);
