fix: Add and rename some fields

- Add ability to create delivery note from pick ticket
- Minor fix related to create button
diff --git a/erpnext/selling/doctype/sales_order/sales_order.js b/erpnext/selling/doctype/sales_order/sales_order.js
index 89739cc..6e6b730 100644
--- a/erpnext/selling/doctype/sales_order/sales_order.js
+++ b/erpnext/selling/doctype/sales_order/sales_order.js
@@ -102,7 +102,6 @@
 erpnext.selling.SalesOrderController = erpnext.selling.SellingController.extend({
 	onload: function(doc, dt, dn) {
 		this._super();
-		this.frm.add_custom_button(__('Pick Ticket'), () => this.make_pick_ticket(), __('Create'));
 	},
 
 	refresh: function(doc, dt, dn) {
@@ -110,7 +109,9 @@
 		this._super();
 		let allow_delivery = false;
 
-		if(doc.docstatus==1) {
+		if (doc.docstatus==1) {
+			this.frm.add_custom_button(__('Pick Ticket'), () => this.make_pick_ticket(), __('Create'));
+
 			if(this.frm.has_perm("submit")) {
 				if(doc.status === 'On Hold') {
 				   // un-hold
diff --git a/erpnext/selling/doctype/sales_order/sales_order.py b/erpnext/selling/doctype/sales_order/sales_order.py
index 97a9739..5e9a358 100755
--- a/erpnext/selling/doctype/sales_order/sales_order.py
+++ b/erpnext/selling/doctype/sales_order/sales_order.py
@@ -1011,7 +1011,8 @@
 			"field_map": {
 				"item_code": "item",
 				"parenttype": "reference_doctype",
-				"parent": "reference_name"
+				"parent": "reference_name",
+				"name": "reference_document_item"
 			},
 		},
 	}, target_doc)
diff --git a/erpnext/stock/doctype/pick_ticket/pick_ticket.js b/erpnext/stock/doctype/pick_ticket/pick_ticket.js
index 5903e6f..5e5881e 100644
--- a/erpnext/stock/doctype/pick_ticket/pick_ticket.js
+++ b/erpnext/stock/doctype/pick_ticket/pick_ticket.js
@@ -3,7 +3,7 @@
 
 frappe.ui.form.on('Pick Ticket', {
 	setup: (frm) => {
-		frm.set_query('group_warehouse', () => {
+		frm.set_query('parent_warehouse', () => {
 			return {
 				filters: {
 					'is_group': 1,
@@ -13,7 +13,8 @@
 		});
 	},
 	refresh: (frm) => {
-		this.frm.add_custom_button(__('Sales Order'), function() {
+		frm.add_custom_button(__('Delivery Note'), () => frm.trigger('make_delivery_note'), __('Create'));
+		frm.add_custom_button(__('Sales Order'), function() {
 			erpnext.utils.map_current_doc({
 				method: "erpnext.selling.doctype.sales_order.sales_order.make_pick_ticket",
 				source_doctype: "Sales Order",
@@ -27,11 +28,16 @@
 			});
 		}, __("Get items from"));
 
-		if (frm.doc.reference_document_items.length) {
+		if (frm.doc.reference_items && frm.doc.reference_items.length) {
 			frm.add_custom_button(__('Get Item Locations'), () => {
 				frm.call('set_item_locations');
 			});
 		}
 	},
-
+	make_delivery_note(frm) {
+		frappe.model.open_mapped_doc({
+			method: "erpnext.stock.doctype.pick_ticket.pick_ticket.make_delivery_note",
+			frm: frm
+		});
+	},
 });
diff --git a/erpnext/stock/doctype/pick_ticket/pick_ticket.json b/erpnext/stock/doctype/pick_ticket/pick_ticket.json
index 9351925..d8a8e01 100644
--- a/erpnext/stock/doctype/pick_ticket/pick_ticket.json
+++ b/erpnext/stock/doctype/pick_ticket/pick_ticket.json
@@ -7,28 +7,14 @@
  "field_order": [
   "company",
   "column_break_4",
-  "group_warehouse",
+  "parent_warehouse",
   "section_break_4",
-  "reference_document_items",
+  "reference_items",
   "section_break_6",
-  "items"
+  "item_locations"
  ],
  "fields": [
   {
-   "fieldname": "items",
-   "fieldtype": "Table",
-   "label": "Items Locations",
-   "options": "Pick Ticket Item",
-   "read_only": 1
-  },
-  {
-   "description": "Items under this warehouse will be suggested",
-   "fieldname": "group_warehouse",
-   "fieldtype": "Link",
-   "label": "Group Warehouse",
-   "options": "Warehouse"
-  },
-  {
    "fieldname": "company",
    "fieldtype": "Link",
    "label": "Company",
@@ -44,17 +30,29 @@
   },
   {
    "fieldname": "section_break_4",
-   "fieldtype": "Section Break",
-   "label": "Reference Items"
+   "fieldtype": "Section Break"
   },
   {
-   "fieldname": "reference_document_items",
+   "description": "Items under this warehouse will be suggested",
+   "fieldname": "parent_warehouse",
+   "fieldtype": "Link",
+   "label": "Parent Warehouse",
+   "options": "Warehouse"
+  },
+  {
+   "fieldname": "item_locations",
    "fieldtype": "Table",
-   "label": "Reference Document Items",
+   "label": "Item Locations",
+   "options": "Pick Ticket Item"
+  },
+  {
+   "fieldname": "reference_items",
+   "fieldtype": "Table",
+   "label": "Items To Be Picked",
    "options": "Pick Ticket Reference Item"
   }
  ],
- "modified": "2019-07-26 12:06:08.941760",
+ "modified": "2019-08-01 10:50:17.055509",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Pick Ticket",
diff --git a/erpnext/stock/doctype/pick_ticket/pick_ticket.py b/erpnext/stock/doctype/pick_ticket/pick_ticket.py
index a1adf9f..16f6d7a 100644
--- a/erpnext/stock/doctype/pick_ticket/pick_ticket.py
+++ b/erpnext/stock/doctype/pick_ticket/pick_ticket.py
@@ -5,23 +5,24 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
+from frappe.model.mapper import get_mapped_doc
 
 class PickTicket(Document):
 	def set_item_locations(self):
-		reference_items = self.reference_document_items
+		reference_items = self.reference_items
 
 		from_warehouses = None
-		if self.group_warehouse:
-			from_warehouses = frappe.db.get_descendants('Warehouse', self.group_warehouse)
+		if self.parent_warehouse:
+			from_warehouses = frappe.db.get_descendants('Warehouse', self.parent_warehouse)
 
 		# Reset
-		self.delete_key('items')
+		self.delete_key('item_locations')
 		for item in reference_items:
 			data = get_items_with_warehouse_and_quantity(item, from_warehouses)
 			for item_info in data:
-				print(self.append('items', item_info))
+				print(self.append('item_locations', item_info))
 
-		for item_doc in self.get('items'):
+		for item_doc in self.get('item_locations'):
 			if frappe.get_cached_value('Item', item_doc.item, 'has_serial_no'):
 				set_serial_nos(item_doc)
 			elif frappe.get_cached_value('Item', item_doc.item, 'has_batch_no'):
@@ -40,7 +41,8 @@
 			'qty': qty,
 			'warehouse': item_location.warehouse,
 			'reference_doctype': item_doc.reference_doctype,
-			'reference_name': item_doc.reference_name
+			'reference_name': item_doc.reference_name,
+			'reference_document_item': item_doc.reference_document_item,
 		})
 		remaining_qty -= qty
 
@@ -120,8 +122,29 @@
 				'qty': required_qty,
 				'warehouse': item_doc.warehouse,
 				'reference_doctype': item_doc.reference_doctype,
-				'reference_name': item_doc.reference_name
+				'reference_name': item_doc.reference_name,
+				'reference_document_item': item_doc.reference_document_item,
 			})
 	if required_qty:
 		frappe.msgprint('No batches found for {} qty of {}. Skipping...'.format(required_qty, item_doc.item))
 		parent_doc.remove(item_doc)
+
+@frappe.whitelist()
+def make_delivery_note(source_name, target_doc=None):
+	target_doc = get_mapped_doc("Pick Ticket", source_name, {
+		"Pick Ticket": {
+			"doctype": "Delivery Note",
+			# "validation": {
+			# 	"docstatus": ["=", 1]
+			# }
+		},
+		"Pick Ticket Item": {
+			"doctype": "Delivery Note Item",
+			"field_map": {
+				"item": "item_code",
+				"reference_docname": "against_sales_order",
+			},
+		},
+	}, target_doc)
+
+	return target_doc
\ No newline at end of file
diff --git a/erpnext/stock/doctype/pick_ticket/test_pick_ticket.py b/erpnext/stock/doctype/pick_ticket/test_pick_ticket.py
index 3a0492a..5a41bc9 100644
--- a/erpnext/stock/doctype/pick_ticket/test_pick_ticket.py
+++ b/erpnext/stock/doctype/pick_ticket/test_pick_ticket.py
@@ -14,7 +14,7 @@
 		pick_ticket = frappe.get_doc({
 			'doctype': 'Pick Ticket',
 			'company': '_Test Company',
-			'reference_document_items': [{
+			'reference_items': [{
 				'item': '_Test Item Home Desktop 100',
 				'reference_doctype': 'Sales Order',
 				'qty': 5,
@@ -24,15 +24,15 @@
 
 		pick_ticket.set_item_locations()
 
-		self.assertEqual(pick_ticket.items[0].item, '_Test Item Home Desktop 100')
-		self.assertEqual(pick_ticket.items[0].warehouse, '_Test Warehouse - _TC')
-		self.assertEqual(pick_ticket.items[0].qty, 5)
+		self.assertEqual(pick_ticket.items_locations[0].item, '_Test Item Home Desktop 100')
+		self.assertEqual(pick_ticket.items_locations[0].warehouse, '_Test Warehouse - _TC')
+		self.assertEqual(pick_ticket.items_locations[0].qty, 5)
 
 	def test_pick_ticket_skips_out_of_stock_item(self):
 		pick_ticket = frappe.get_doc({
 			'doctype': 'Pick Ticket',
 			'company': '_Test Company',
-			'reference_document_items': [{
+			'reference_items': [{
 				'item': '_Test Item Warehouse Group Wise Reorder',
 				'reference_doctype': 'Sales Order',
 				'qty': 1000,
@@ -42,9 +42,9 @@
 
 		pick_ticket.set_item_locations()
 
-		self.assertEqual(pick_ticket.items[0].item, '_Test Item Warehouse Group Wise Reorder')
-		self.assertEqual(pick_ticket.items[0].warehouse, '_Test Warehouse Group-C1 - _TC')
-		self.assertEqual(pick_ticket.items[0].qty, 30)
+		self.assertEqual(pick_ticket.items_locations[0].item, '_Test Item Warehouse Group Wise Reorder')
+		self.assertEqual(pick_ticket.items_locations[0].warehouse, '_Test Warehouse Group-C1 - _TC')
+		self.assertEqual(pick_ticket.items_locations[0].qty, 30)
 
 
 	def test_pick_ticket_skips_items_in_expired_batch(self):
@@ -68,7 +68,7 @@
 		pick_ticket = frappe.get_doc({
 			'doctype': 'Pick Ticket',
 			'company': '_Test Company',
-			'reference_document_items': [{
+			'reference_items': [{
 				'item': '_Test Serialized Item',
 				'reference_doctype': 'Sales Order',
 				'qty': 1000,
@@ -77,26 +77,16 @@
 		})
 
 		pick_ticket.set_item_locations()
-		self.assertEqual(pick_ticket.items[0].item, '_Test Serialized Item')
-		self.assertEqual(pick_ticket.items[0].warehouse, '_Test Warehouse Group-C1 - _TC')
-		self.assertEqual(pick_ticket.items[0].qty, 30)
-		self.assertEqual(pick_ticket.items[0].serial_no, 30)
+		self.assertEqual(pick_ticket.items_locations[0].item, '_Test Serialized Item')
+		self.assertEqual(pick_ticket.items_locations[0].warehouse, '_Test Warehouse Group-C1 - _TC')
+		self.assertEqual(pick_ticket.items_locations[0].qty, 30)
+		self.assertEqual(pick_ticket.items_locations[0].serial_no, 30)
 
 
 	def test_pick_ticket_for_multiple_reference_doctypes(self):
 		pass
 
 
-# def create_new_pick_ticket():
-# 	pass
-# 	doc = frappe.new_doc('Pick Ticket')
-# 	doc.items.append({
-# 		'item': '_Test Warehouse - _TC',
-# 		''
-# 	})
-
-
-
 ## records required
 
 '''
diff --git a/erpnext/stock/doctype/pick_ticket_item/pick_ticket_item.json b/erpnext/stock/doctype/pick_ticket_item/pick_ticket_item.json
index 0a65eed..67a7e9c 100644
--- a/erpnext/stock/doctype/pick_ticket_item/pick_ticket_item.json
+++ b/erpnext/stock/doctype/pick_ticket_item/pick_ticket_item.json
@@ -68,7 +68,6 @@
   {
    "fieldname": "reference_document_item",
    "fieldtype": "Data",
-   "hidden": 1,
    "label": "Reference Document Item",
    "read_only": 1
   },
@@ -130,7 +129,7 @@
   }
  ],
  "istable": 1,
- "modified": "2019-07-30 09:28:44.969479",
+ "modified": "2019-07-30 23:47:53.566473",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Pick Ticket Item",
diff --git a/erpnext/stock/doctype/pick_ticket_reference_item/pick_ticket_reference_item.json b/erpnext/stock/doctype/pick_ticket_reference_item/pick_ticket_reference_item.json
index ae7ea35..c31e2bc 100644
--- a/erpnext/stock/doctype/pick_ticket_reference_item/pick_ticket_reference_item.json
+++ b/erpnext/stock/doctype/pick_ticket_reference_item/pick_ticket_reference_item.json
@@ -7,7 +7,8 @@
   "item",
   "qty",
   "reference_doctype",
-  "reference_name"
+  "reference_name",
+  "reference_document_item"
  ],
  "fields": [
   {
@@ -34,10 +35,15 @@
    "fieldtype": "Float",
    "in_list_view": 1,
    "label": "Qty"
+  },
+  {
+   "fieldname": "reference_document_item",
+   "fieldtype": "Data",
+   "label": "Reference Document Item"
   }
  ],
  "istable": 1,
- "modified": "2019-07-26 12:17:52.142186",
+ "modified": "2019-07-30 23:43:30.901151",
  "modified_by": "Administrator",
  "module": "Stock",
  "name": "Pick Ticket Reference Item",