diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 619c0ed..d3728e4 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -762,7 +762,13 @@
 		var child = locals[cdt][cdn];
 
 		if(child.service_start_date) {
-			frappe.model.set_value(cdt, cdn, "service_end_date", "");
+			frappe.call({
+				"method": "erpnext.stock.get_item_details.calculate_service_end_date",
+				args: {"args": child},
+				callback: function(r) {
+					frappe.model.set_value(cdt, cdn, "service_end_date", r.message.service_end_date);
+				}
+			})
 		}
 	}
 })
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 5ab9de3..664231a 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -547,7 +547,7 @@
 				if date_diff(item.service_stop_date, item.service_end_date) > 0:
 					frappe.throw(_("Service Stop Date cannot be after Service End Date"))
 
-				if old_stop_dates[item.name] and item.service_stop_date!=old_stop_dates[item.name]:
+				if old_stop_dates and old_stop_dates[item.name] and item.service_stop_date!=old_stop_dates[item.name]:
 					frappe.throw(_("Cannot change Service Stop Date for item in row {0}".format(item.idx)))
 
 	def update_current_stock(self):
@@ -1090,7 +1090,7 @@
 		for item in self.get('items'):
 			last_gl_entry = False
 
-			booking_start_date = getdate(add_months(today(), -1))
+			booking_start_date = getdate(add_months(today(), -1)) if not start_date else start_date
 			booking_start_date = booking_start_date if booking_start_date>item.service_start_date else item.service_start_date
 
 			if item.service_start_date < booking_start_date:
@@ -1105,21 +1105,16 @@
 				else:
 					booking_start_date = getdate(add_days(prev_gl_entry.posting_date, 1))
 
-			booking_end_date = getdate(add_days(today(), -1))
-			if booking_end_date.month > item.service_stop_date.month:
+			booking_end_date = getdate(add_days(today(), -1)) if not end_date else end_date
+			if item.service_stop_date and booking_end_date.month > item.service_stop_date.month:
 				continue
 			elif booking_end_date>=item.service_end_date:
 				last_gl_entry = True
 				booking_end_date = item.service_end_date
-			elif item.service_stop_date<=booking_end_date:
+			elif item.service_stop_date and item.service_stop_date<=booking_end_date:
 				last_gl_entry = True
 				booking_end_date = item.service_stop_date
 
-			if start_date and end_date:
-				# if start and end date are already provided
-				booking_start_date = start_date
-				booking_end_date = end_date
-
 			total_days = date_diff(item.service_end_date, item.service_start_date)
 			total_booking_days = date_diff(booking_end_date, booking_start_date) + 1
 
@@ -1176,7 +1171,7 @@
 	invoices = frappe.db.sql_list('''
 		select parent from `tabSales Invoice Item` where service_start_date<=%s and service_end_date>=%s
 		and enable_deferred_revenue = 1 and docstatus = 1
-	''', (start_date or today(), end_date or add_months(today(), -1)))
+	''', (end_date or today(), start_date or add_months(today(), -1)))
 
 	# ToDo also find the list on the basic of the GL entry, and make another list
 	for invoice in invoices:
diff --git a/erpnext/stock/get_item_details.py b/erpnext/stock/get_item_details.py
index caafcdc..b6a08af 100644
--- a/erpnext/stock/get_item_details.py
+++ b/erpnext/stock/get_item_details.py
@@ -274,14 +274,7 @@
 	})
 
 	if item.enable_deferred_revenue:
-		service_start_date = args.service_start_date if args.service_start_date else args.transaction_date
-		service_end_date = add_months(service_start_date, item.no_of_months)
-		out.update({
-			"enable_deferred_revenue": item.enable_deferred_revenue,
-			"deferred_revenue_account": get_default_deferred_revenue_account(args, item),
-			"service_start_date": service_start_date,
-			"service_end_date": service_end_date
-		})
+		out.update(calculate_service_end_date(args, item))
 
 	# calculate conversion factor
 	if item.stock_uom == args.uom:
@@ -311,6 +304,22 @@
 
 	return out
 
+@frappe.whitelist()
+def calculate_service_end_date(args, item=None):
+	args = process_args(args)
+	if not item:
+		item = frappe.get_cached_doc("Item", args.item_code)
+
+	service_start_date = args.service_start_date if args.service_start_date else args.transaction_date
+	service_end_date = add_months(service_start_date, item.no_of_months)
+	deferred_detail = {
+		"enable_deferred_revenue": item.enable_deferred_revenue,
+		"deferred_revenue_account": get_default_deferred_revenue_account(args, item),
+		"service_start_date": service_start_date,
+		"service_end_date": service_end_date
+	}
+
+	return deferred_detail
 
 def get_default_income_account(args, item, item_group):
 	return (item.get("income_account")
