fix: asset movement ux fixes (#19637)

diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index f0889bf..6b3f2c7 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -42,6 +42,24 @@
 	},
 
 	setup: function(frm) {
+		frm.make_methods = {
+			'Asset Movement': () => {
+				frappe.call({
+				method: "erpnext.assets.doctype.asset.asset.make_asset_movement",
+				freeze: true,
+				args:{
+					"assets": [{ name: cur_frm.doc.name }]
+				},
+				callback: function (r) {
+					if (r.message) {
+						var doc = frappe.model.sync(r.message)[0];
+						frappe.set_route("Form", doc.doctype, doc.name);
+					}
+				}
+			});
+			},
+		}
+
 		frm.set_query("purchase_receipt", (doc) => {
 			return {
 				query: "erpnext.controllers.queries.get_purchase_receipts",
@@ -487,92 +505,19 @@
 	})
 };
 
-erpnext.asset.transfer_asset = function(frm) {
-	var dialog = new frappe.ui.Dialog({
-		title: __("Transfer Asset"),
-		fields: [
-			{
-				"label": __("Target Location"),
-				"fieldname": "target_location",
-				"fieldtype": "Link",
-				"options": "Location",
-				"get_query": function () {
-					return {
-						filters: [
-							["Location", "is_group", "=", 0]
-						]
-					}
-				},
-				"reqd": 1
-			},
-			{
-				"label": __("Select Serial No"),
-				"fieldname": "serial_nos",
-				"fieldtype": "Link",
-				"options": "Serial No",
-				"get_query": function () {
-					return {
-						filters: {
-							'asset': frm.doc.name
-						}
-					}
-				},
-				"onchange": function() {
-					let val = this.get_value();
-					if (val) {
-						let serial_nos = dialog.get_value("serial_no") || val;
-						if (serial_nos) {
-							serial_nos = serial_nos.split('\n');
-							serial_nos.push(val);
-
-							const unique_sn = serial_nos.filter(function(elem, index, self) {
-							    return index === self.indexOf(elem);
-							});
-
-							dialog.set_value("serial_no", unique_sn.join('\n'));
-							dialog.set_value("serial_nos", "");
-						}
-					}
-				}
-			},
-			{
-				"label": __("Serial No"),
-				"fieldname": "serial_no",
-				"read_only": 1,
-				"fieldtype": "Small Text"
-			},
-			{
-				"label": __("Date"),
-				"fieldname": "transfer_date",
-				"fieldtype": "Datetime",
-				"reqd": 1,
-				"default": frappe.datetime.now_datetime()
+erpnext.asset.transfer_asset = function() {
+	frappe.call({
+		method: "erpnext.assets.doctype.asset.asset.make_asset_movement",
+		freeze: true,
+		args:{
+			"assets": [{ name: cur_frm.doc.name }],
+			"purpose": "Transfer"
+		},
+		callback: function (r) {
+			if (r.message) {
+				var doc = frappe.model.sync(r.message)[0];
+				frappe.set_route("Form", doc.doctype, doc.name);
 			}
-		]
+		}
 	});
-
-	dialog.set_primary_action(__("Transfer"), function() {
-		var args = dialog.get_values();
-		if(!args) return;
-		dialog.hide();
-		return frappe.call({
-			type: "GET",
-			method: "erpnext.assets.doctype.asset.asset.transfer_asset",
-			args: {
-				args: {
-					"asset": frm.doc.name,
-					"transaction_date": args.transfer_date,
-					"source_location": frm.doc.location,
-					"target_location": args.target_location,
-					"serial_no": args.serial_no,
-					"company": frm.doc.company
-				}
-			},
-			freeze: true,
-			callback: function(r) {
-				cur_frm.reload_doc();
-			}
-		})
-	});
-	dialog.show();
 };
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index d4185ea..546f374 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -647,7 +647,7 @@
 	return je
 
 @frappe.whitelist()
-def make_asset_movement(assets):
+def make_asset_movement(assets, purpose=None):
 	import json
 	from six import string_types
 	
@@ -658,7 +658,7 @@
 		frappe.throw(_('Atleast one asset has to be selected.'))
 
 	asset_movement = frappe.new_doc("Asset Movement")
-	asset_movement.quantity = len(assets)
+	asset_movement.purpose = purpose
 	prev_reference_docname = ''
 
 	for asset in assets:
diff --git a/erpnext/assets/doctype/asset/asset_list.js b/erpnext/assets/doctype/asset/asset_list.js
index 46cde6e..02f39e0 100644
--- a/erpnext/assets/doctype/asset/asset_list.js
+++ b/erpnext/assets/doctype/asset/asset_list.js
@@ -37,6 +37,7 @@
 			const assets = me.get_checked_items();
 			frappe.call({
 				method: "erpnext.assets.doctype.asset.asset.make_asset_movement",
+				freeze: true,
 				args:{
 					"assets": assets
 				},
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.js b/erpnext/assets/doctype/asset_movement/asset_movement.js
index a71212e..89977e2 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.js
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.js
@@ -132,7 +132,7 @@
 				if(asset_doc.location) frappe.model.set_value(cdt, cdn, 'source_location', asset_doc.location);
 				if(asset_doc.custodian) frappe.model.set_value(cdt, cdn, 'from_employee', asset_doc.custodian);
 			}).catch((err) => {
-				console.log(err);
+				console.log(err); // eslint-disable-line
 			});
 		}
 	}
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.json b/erpnext/assets/doctype/asset_movement/asset_movement.json
index 19af81d..e62d684 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.json
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.json
@@ -54,7 +54,7 @@
   {
    "fieldname": "reference_doctype",
    "fieldtype": "Link",
-   "label": "Reference DocType",
+   "label": "Reference Document",
    "no_copy": 1,
    "options": "DocType",
    "reqd": 1
@@ -62,7 +62,7 @@
   {
    "fieldname": "reference_name",
    "fieldtype": "Dynamic Link",
-   "label": "Reference Name",
+   "label": "Reference Document Name",
    "no_copy": 1,
    "options": "reference_doctype",
    "reqd": 1
@@ -93,7 +93,7 @@
   }
  ],
  "is_submittable": 1,
- "modified": "2019-11-13 15:37:48.870147",
+ "modified": "2019-11-21 14:35:51.880332",
  "modified_by": "Administrator",
  "module": "Assets",
  "name": "Asset Movement",