diff --git a/erpnext/stock/doctype/pick_ticket/pick_ticket.js b/erpnext/stock/doctype/pick_ticket/pick_ticket.js
index a2d6cd7..87fad7f 100644
--- a/erpnext/stock/doctype/pick_ticket/pick_ticket.js
+++ b/erpnext/stock/doctype/pick_ticket/pick_ticket.js
@@ -2,6 +2,16 @@
 // For license information, please see license.txt
 
 frappe.ui.form.on('Pick Ticket', {
+	setup: (frm) => {
+		frm.set_query('group_warehouse', () => {
+			return {
+				filters: {
+					'is_group': 1,
+					'company': frm.doc.company
+				}
+			};
+		});
+	},
 	refresh: (frm) => {
 		this.frm.add_custom_button(__('Sales Order'), function() {
 			erpnext.utils.map_current_doc({
diff --git a/erpnext/stock/doctype/pick_ticket/pick_ticket.py b/erpnext/stock/doctype/pick_ticket/pick_ticket.py
index ce0e552..a1adf9f 100644
--- a/erpnext/stock/doctype/pick_ticket/pick_ticket.py
+++ b/erpnext/stock/doctype/pick_ticket/pick_ticket.py
@@ -9,10 +9,15 @@
 class PickTicket(Document):
 	def set_item_locations(self):
 		reference_items = self.reference_document_items
+
+		from_warehouses = None
+		if self.group_warehouse:
+			from_warehouses = frappe.db.get_descendants('Warehouse', self.group_warehouse)
+
+		# Reset
 		self.delete_key('items')
 		for item in reference_items:
-			data = get_items_with_warehouse_and_quantity(item)
-
+			data = get_items_with_warehouse_and_quantity(item, from_warehouses)
 			for item_info in data:
 				print(self.append('items', item_info))
 
@@ -22,22 +27,11 @@
 			elif frappe.get_cached_value('Item', item_doc.item, 'has_batch_no'):
 				set_batch_no(item_doc, self)
 
-def get_available_items(item):
-	# gets all items available in different warehouses
-	# FIFO
-	available_items = frappe.get_all('Bin', filters={
-		'item_code': item,
-		'actual_qty': ['>', 0]
-	}, fields=['warehouse', 'actual_qty as qty'], order_by='creation')
-
-	return available_items
-
-def get_items_with_warehouse_and_quantity(item_doc):
+def get_items_with_warehouse_and_quantity(item_doc, from_warehouses):
 	items = []
-	item_locations = get_available_items(item_doc.item)
+	item_locations = get_available_items(item_doc.item, from_warehouses)
 	remaining_qty = item_doc.qty
 
-
 	while remaining_qty > 0 and item_locations:
 		item_location = item_locations.pop(0)
 		qty = remaining_qty if item_location.qty >= remaining_qty else item_location.qty
@@ -51,11 +45,28 @@
 		remaining_qty -= qty
 
 	if remaining_qty:
-		print('---------- {} qty of {} is out of stock. Skipping... -------------'.format(remaining_qty, item_doc.item))
+		frappe.msgprint('{} qty of {} is out of stock. Skipping...'.format(remaining_qty, item_doc.item))
 		return items
 
 	return items
 
+def get_available_items(item, from_warehouses):
+	# gets all items available in different warehouses
+	# FIFO
+	filters = frappe._dict({
+		'item_code': item,
+		'actual_qty': ['>', 0]
+	})
+	if from_warehouses:
+		filters.warehouse = ['in', from_warehouses]
+
+	available_items = frappe.get_all('Bin',
+		fields=['warehouse', 'actual_qty as qty'],
+		filters=filters,
+		order_by='creation')
+
+	return available_items
+
 def set_serial_nos(item_doc):
 	serial_nos = frappe.get_all('Serial No', {
 		'item_code': item_doc.item,
@@ -91,7 +102,7 @@
 		batch = batches.pop()
 		batch_expiry = frappe.get_value('Batch', batch.batch_no, 'expiry_date')
 		if batch_expiry and batch_expiry <= frappe.utils.getdate():
-			print('---------- Batch {} is expired. Skipping... -------------'.format(batch.batch_no))
+			frappe.msgprint('Skipping expired Batch {}'.format(batch.batch_no))
 			continue
 		item_doc.batch_no = batch.batch_no
 		if batch.qty >= item_doc.qty:
@@ -112,5 +123,5 @@
 				'reference_name': item_doc.reference_name
 			})
 	if required_qty:
-		print('---------- No batches found for {} qty of {}. Skipping... -------------'.format(required_qty, item_doc.item))
+		frappe.msgprint('No batches found for {} qty of {}. Skipping...'.format(required_qty, item_doc.item))
 		parent_doc.remove(item_doc)
