Merge pull request #14099 from rohitwaghchaure/fixed_asset_date

Multiple fixes in asset
diff --git a/erpnext/assets/doctype/asset/asset.js b/erpnext/assets/doctype/asset/asset.js
index c05667a..88e7f78 100644
--- a/erpnext/assets/doctype/asset/asset.js
+++ b/erpnext/assets/doctype/asset/asset.js
@@ -157,6 +157,13 @@
 		}
 	},
 
+	available_for_use_date: function(frm) {
+		$.each(frm.doc.finance_books || [], function(i, d) {
+			if(!d.depreciation_start_date) d.depreciation_start_date = frm.doc.available_for_use_date;
+		});
+		refresh_field("finance_books");
+	},
+
 	is_existing_asset: function(frm) {
 		// frm.toggle_reqd("next_depreciation_date", (!frm.doc.is_existing_asset && frm.doc.calculate_depreciation));
 	},
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index e37038a..75e8088 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -51,7 +51,7 @@
 
 	def validate_in_use_date(self):
 		if not self.available_for_use_date:
-			frappe.throw(_("Available for use data is required"))
+			frappe.throw(_("Available for use date is required"))
 
 	def set_missing_values(self):
 		if not self.asset_category:
@@ -162,6 +162,9 @@
 			frappe.throw(_("Row {0}: Expected Value After Useful Life must be less than Gross Purchase Amount")
 				.format(row.idx))
 
+		if not row.depreciation_start_date:
+			frappe.throw(_("Row {0}: Depreciation Start Date is required").format(row.idx))
+
 		if not self.is_existing_asset:
 			self.opening_accumulated_depreciation = 0
 			self.number_of_depreciations_booked = 0
diff --git a/erpnext/assets/doctype/asset_movement/asset_movement.py b/erpnext/assets/doctype/asset_movement/asset_movement.py
index e34d2a3..638987e 100644
--- a/erpnext/assets/doctype/asset_movement/asset_movement.py
+++ b/erpnext/assets/doctype/asset_movement/asset_movement.py
@@ -55,7 +55,5 @@
 		frappe.db.set_value("Asset", self.asset, "location", location)
 
 		if self.serial_no:
-			serial_nos = get_serial_nos(self.serial_no)
-
-			frappe.db.sql(""" update `tabSerial No` set location = %s where name in (%s)"""
-				%('%s', ','.join(['%s'] * len(serial_nos))), (location, tuple(serial_nos)))
+			for d in get_serial_nos(self.serial_no):
+				frappe.db.set_value('Serial No', d, 'location', location)