Use range instead xrange (#13128)

* Use range instead of xrange

* convert float to int
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index b866794..3fa16f7 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -418,7 +418,7 @@
 
 		si.get("items")[0].price_list_rate = 62.5
 		si.get("items")[0].price_list_rate = 191
-		for i in xrange(6):
+		for i in range(6):
 			si.get("taxes")[i].included_in_print_rate = 1
 
 		# tax type "Actual" cannot be inclusive
diff --git a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
index 08e2018..a20f5c0 100644
--- a/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
+++ b/erpnext/accounts/doctype/shipping_rule/shipping_rule.py
@@ -133,8 +133,8 @@
 			return (not separate)
 
 		overlaps = []
-		for i in xrange(0, len(self.conditions)):
-			for j in xrange(i+1, len(self.conditions)):
+		for i in range(0, len(self.conditions)):
+			for j in range(i+1, len(self.conditions)):
 				d1, d2 = self.conditions[i], self.conditions[j]
 				if d1.as_dict() != d2.as_dict():
 					# in our case, to_value can be zero, hence pass the from_value if so
diff --git a/erpnext/accounts/report/financial_statements.py b/erpnext/accounts/report/financial_statements.py
index da8214a..f3e5203 100644
--- a/erpnext/accounts/report/financial_statements.py
+++ b/erpnext/accounts/report/financial_statements.py
@@ -38,7 +38,7 @@
 	start_date = year_start_date
 	months = get_months(year_start_date, year_end_date)
 
-	for i in xrange(months / months_to_add):
+	for i in range(months // months_to_add):
 		period = frappe._dict({
 			"from_date": start_date
 		})
diff --git a/erpnext/assets/doctype/asset/asset.py b/erpnext/assets/doctype/asset/asset.py
index bd33a1b..cb14484 100644
--- a/erpnext/assets/doctype/asset/asset.py
+++ b/erpnext/assets/doctype/asset/asset.py
@@ -114,15 +114,15 @@
 					and getdate(self.next_depreciation_date) < next_depr_date):
 
 					number_of_pending_depreciations += 1
-					for n in xrange(number_of_pending_depreciations):
-						if n == xrange(number_of_pending_depreciations)[-1]:
+					for n in range(number_of_pending_depreciations):
+						if n == range(number_of_pending_depreciations)[-1]:
 							schedule_date = add_months(self.available_for_use_date, n * 12)
 							previous_scheduled_date = add_months(self.next_depreciation_date, (n-1) * 12)
 							depreciation_amount = \
 								self.get_depreciation_amount_prorata_temporis(value_after_depreciation,
 									previous_scheduled_date, schedule_date)
 
-						elif n == xrange(number_of_pending_depreciations)[0]:
+						elif n == range(number_of_pending_depreciations)[0]:
 							schedule_date = self.next_depreciation_date
 							depreciation_amount = \
 								self.get_depreciation_amount_prorata_temporis(value_after_depreciation,
@@ -141,7 +141,7 @@
 								"depreciation_amount": depreciation_amount
 							})
 				else:
-					for n in xrange(number_of_pending_depreciations):
+					for n in range(number_of_pending_depreciations):
 						schedule_date = add_months(self.next_depreciation_date,
 							n * cint(self.frequency_of_depreciation))
 
diff --git a/erpnext/controllers/trends.py b/erpnext/controllers/trends.py
index c5db223..ef698c2 100644
--- a/erpnext/controllers/trends.py
+++ b/erpnext/controllers/trends.py
@@ -182,7 +182,7 @@
 	}.get(period)
 
 	period_date_ranges = []
-	for i in xrange(1, 13, increment):
+	for i in range(1, 13, increment):
 		period_end_date = getdate(year_start_date) + relativedelta(months=increment, days=-1)
 		if period_end_date > getdate(year_end_date):
 			period_end_date = year_end_date
diff --git a/erpnext/demo/demo.py b/erpnext/demo/demo.py
index 42ef896..f765469 100644
--- a/erpnext/demo/demo.py
+++ b/erpnext/demo/demo.py
@@ -63,7 +63,7 @@
 		# runs_for = 100
 
 	fixed_asset.work()
-	for i in xrange(runs_for):
+	for i in range(runs_for):
 		sys.stdout.write("\rSimulating {0}: Day {1}".format(
 			current_date.strftime("%Y-%m-%d"), i))
 		sys.stdout.flush()
diff --git a/erpnext/demo/setup/healthcare.py b/erpnext/demo/setup/healthcare.py
index d645e30..b48e0bc 100644
--- a/erpnext/demo/setup/healthcare.py
+++ b/erpnext/demo/setup/healthcare.py
@@ -65,7 +65,7 @@
 		i += 1
 
 def make_consulation():
-	for i in xrange(3):
+	for i in range(3):
 		physician = get_random("Physician")
 		department = frappe.get_value("Physician", physician, "department")
 		patient = get_random("Patient")
@@ -74,7 +74,7 @@
 		consultation.save(ignore_permissions=True)
 
 def consulation_on_appointment():
-	for i in xrange(3):
+	for i in range(3):
 		appointment = get_random("Patient Appointment")
 		appointment = frappe.get_doc("Patient Appointment",appointment)
 		consultation = set_consultation(appointment.patient, appointment.patient_sex, appointment.physician, appointment.department, appointment.appointment_date, i)
diff --git a/erpnext/demo/setup/setup_data.py b/erpnext/demo/setup/setup_data.py
index 64a04d5..4ed4df9 100644
--- a/erpnext/demo/setup/setup_data.py
+++ b/erpnext/demo/setup/setup_data.py
@@ -80,7 +80,7 @@
 
 def setup_fiscal_year():
 	fiscal_year = None
-	for year in xrange(2010, now_datetime().year + 1, 1):
+	for year in range(2010, now_datetime().year + 1, 1):
 		try:
 			fiscal_year = frappe.get_doc({
 				"doctype": "Fiscal Year",
diff --git a/erpnext/demo/user/education.py b/erpnext/demo/user/education.py
index 8c82f87..4fc9c6a 100644
--- a/erpnext/demo/user/education.py
+++ b/erpnext/demo/user/education.py
@@ -15,7 +15,7 @@
 
 def work():
 	frappe.set_user(frappe.db.get_global('demo_education_user'))
-	for d in xrange(20):
+	for d in range(20):
 		approve_random_student_applicant()
 		enroll_random_student(frappe.flags.current_date)
 	# if frappe.flags.current_date.weekday()== 0:
@@ -94,7 +94,7 @@
 		cs.course_start_date = cstr(start_date)
 		cs.course_end_date = cstr(end_date)
 		day = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
-		for x in xrange(3):
+		for x in range(3):
 			random_day = random.choice(day)
 			cs.day = random_day
 			cs.from_time = timedelta(hours=(random.randrange(7, 17,1)))
diff --git a/erpnext/demo/user/purchase.py b/erpnext/demo/user/purchase.py
index 8769b09..d9fc1f3 100644
--- a/erpnext/demo/user/purchase.py
+++ b/erpnext/demo/user/purchase.py
@@ -116,7 +116,7 @@
 	return mr
 
 def add_suppliers(rfq):
-	for i in xrange(2):
+	for i in range(2):
 		supplier = get_random("Supplier")
 		if supplier not in [d.supplier for d in rfq.get('suppliers')]:
 			rfq.append("suppliers", { "supplier": supplier })
diff --git a/erpnext/demo/user/sales.py b/erpnext/demo/user/sales.py
index 54ea173..2fd2565 100644
--- a/erpnext/demo/user/sales.py
+++ b/erpnext/demo/user/sales.py
@@ -13,27 +13,27 @@
 def work():
 	frappe.set_user(frappe.db.get_global('demo_sales_user_2'))
 	if random.random() < 0.5:
-		for i in xrange(random.randint(1,7)):
+		for i in range(random.randint(1,7)):
 			make_opportunity()
 
 	if random.random() < 0.5:
-		for i in xrange(random.randint(1,3)):
+		for i in range(random.randint(1,3)):
 			make_quotation()
 
 	# lost quotations / inquiries
 	if random.random() < 0.3:
-		for i in xrange(random.randint(1,3)):
+		for i in range(random.randint(1,3)):
 			quotation = get_random('Quotation', doc=True)
 			if quotation and quotation.status == 'Submitted':
 				quotation.declare_order_lost('Did not ask')
 
-		for i in xrange(random.randint(1,3)):
+		for i in range(random.randint(1,3)):
 			opportunity = get_random('Opportunity', doc=True)
 			if opportunity and opportunity.status in ('Open', 'Replied'):
 				opportunity.declare_enquiry_lost('Did not ask')
 
 	if random.random() < 0.3:
-		for i in xrange(random.randint(1,3)):
+		for i in range(random.randint(1,3)):
 			make_sales_order()
 
 	if random.random() < 0.1:
diff --git a/erpnext/education/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py b/erpnext/education/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py
index 641b783..19136ea 100644
--- a/erpnext/education/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py
+++ b/erpnext/education/report/student_and_guardian_contact_details/student_and_guardian_contact_details.py
@@ -34,7 +34,7 @@
 		student_guardians = guardian_map.get(d.student)
 
 		if student_guardians:
-			for i in xrange(2):
+			for i in range(2):
 				if i < len(student_guardians):
 					g = student_guardians[i]
 					row += [g.guardian_name, g.relation, g.mobile_number, g.email_address]
diff --git a/erpnext/hotels/doctype/hotel_room_reservation/hotel_room_reservation.py b/erpnext/hotels/doctype/hotel_room_reservation/hotel_room_reservation.py
index f3f76a9..9a81405 100644
--- a/erpnext/hotels/doctype/hotel_room_reservation/hotel_room_reservation.py
+++ b/erpnext/hotels/doctype/hotel_room_reservation/hotel_room_reservation.py
@@ -18,7 +18,7 @@
 		self.validate_availability()
 
 	def validate_availability(self):
-		for i in xrange(date_diff(self.to_date, self.from_date)):
+		for i in range(date_diff(self.to_date, self.from_date)):
 			day = add_days(self.from_date, i)
 			self.rooms_booked = {}
 
@@ -54,7 +54,7 @@
 		self.net_total = 0
 		for d in self.items:
 			net_rate = 0.0
-			for i in xrange(date_diff(self.to_date, self.from_date)):
+			for i in range(date_diff(self.to_date, self.from_date)):
 				day = add_days(self.from_date, i)
 				if not d.item:
 					continue
diff --git a/erpnext/hotels/report/hotel_room_occupancy/hotel_room_occupancy.py b/erpnext/hotels/report/hotel_room_occupancy/hotel_room_occupancy.py
index aebeb45..f77d43b 100644
--- a/erpnext/hotels/report/hotel_room_occupancy/hotel_room_occupancy.py
+++ b/erpnext/hotels/report/hotel_room_occupancy/hotel_room_occupancy.py
@@ -24,7 +24,7 @@
 	out = []
 	for room_type in frappe.get_all('Hotel Room Type'):
 		total_booked = 0
-		for i in xrange(date_diff(filters.to_date, filters.from_date)):
+		for i in range(date_diff(filters.to_date, filters.from_date)):
 			day = add_days(filters.from_date, i)
 			total_booked += get_rooms_booked(room_type.name, day)
 
diff --git a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
index fa3bcf5..6015bd6 100644
--- a/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
+++ b/erpnext/maintenance/doctype/maintenance_schedule/maintenance_schedule.py
@@ -112,7 +112,7 @@
 		if not validated and holidays:
 
 			# max iterations = len(holidays)
-			for i in xrange(len(holidays)):
+			for i in range(len(holidays)):
 				if schedule_date in holidays:
 					schedule_date = add_days(schedule_date, -1)
 				else:
diff --git a/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py b/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
index bf274cd..4509904 100644
--- a/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
+++ b/erpnext/selling/report/customer_acquisition_and_loyalty/customer_acquisition_and_loyalty.py
@@ -41,8 +41,8 @@
 		cint(from_year), cint(from_month), cint(to_year), cint(to_month)
 
 	out = []
-	for year in xrange(from_year, to_year+1):
-		for month in xrange(from_month if year==from_year else 1, (to_month+1) if year==to_year else 13):
+	for year in range(from_year, to_year+1):
+		for month in range(from_month if year==from_year else 1, (to_month+1) if year==to_year else 13):
 			key = "{year}-{month:02d}".format(year=year, month=month)
 
 			new = new_customers_in.get(key, [0,0.0])
diff --git a/erpnext/stock/doctype/serial_no/serial_no.py b/erpnext/stock/doctype/serial_no/serial_no.py
index 80c93ef..0520a8d 100644
--- a/erpnext/stock/doctype/serial_no/serial_no.py
+++ b/erpnext/stock/doctype/serial_no/serial_no.py
@@ -272,7 +272,7 @@
 			and item_det.has_serial_no == 1 and item_det.serial_no_series:
 		from frappe.model.naming import make_autoname
 		serial_nos = []
-		for i in xrange(cint(sle.actual_qty)):
+		for i in range(cint(sle.actual_qty)):
 			serial_nos.append(make_autoname(item_det.serial_no_series, "Serial No"))
 		frappe.db.set(sle, "serial_no", "\n".join(serial_nos))
 		validate_serial_no(sle, item_det)
diff --git a/erpnext/templates/pages/home.py b/erpnext/templates/pages/home.py
index 9a4c89c..82d525a 100644
--- a/erpnext/templates/pages/home.py
+++ b/erpnext/templates/pages/home.py
@@ -19,7 +19,7 @@
 
 	# show atleast 3 products
 	if len(homepage.products) < 3:
-		for i in xrange(3 - len(homepage.products)):
+		for i in range(3 - len(homepage.products)):
 			homepage.append('products', {
 				'item_code': 'product-{0}'.format(i),
 				'item_name': frappe._('Product {0}').format(i),
diff --git a/erpnext/utilities/user_progress_utils.py b/erpnext/utilities/user_progress_utils.py
index 58a03e3..bc89b08 100644
--- a/erpnext/utilities/user_progress_utils.py
+++ b/erpnext/utilities/user_progress_utils.py
@@ -18,7 +18,7 @@
 def create_customers(args_data):
 	args = json.loads(args_data)
 	defaults = frappe.defaults.get_defaults()
-	for i in xrange(1,4):
+	for i in range(1,4):
 		customer = args.get("customer_" + str(i))
 		if customer:
 			try:
@@ -56,7 +56,7 @@
 def create_suppliers(args_data):
 	args = json.loads(args_data)
 	defaults = frappe.defaults.get_defaults()
-	for i in xrange(1,4):
+	for i in range(1,4):
 		supplier = args.get("supplier_" + str(i))
 		if supplier:
 			try:
@@ -89,7 +89,7 @@
 def create_items(args_data):
 	args = json.loads(args_data)
 	defaults = frappe.defaults.get_defaults()
-	for i in xrange(1,4):
+	for i in range(1,4):
 		item = args.get("item_" + str(i))
 		if item:
 			default_warehouse = ""
@@ -137,7 +137,7 @@
 @frappe.whitelist()
 def create_program(args_data):
 	args = json.loads(args_data)
-	for i in xrange(1,4):
+	for i in range(1,4):
 		if args.get("program_" + str(i)):
 			program = frappe.new_doc("Program")
 			program.program_code = args.get("program_" + str(i))
@@ -150,7 +150,7 @@
 @frappe.whitelist()
 def create_course(args_data):
 	args = json.loads(args_data)
-	for i in xrange(1,4):
+	for i in range(1,4):
 		if args.get("course_" + str(i)):
 			course = frappe.new_doc("Course")
 			course.course_code = args.get("course_" + str(i))
@@ -163,7 +163,7 @@
 @frappe.whitelist()
 def create_instructor(args_data):
 	args = json.loads(args_data)
-	for i in xrange(1,4):
+	for i in range(1,4):
 		if args.get("instructor_" + str(i)):
 			instructor = frappe.new_doc("Instructor")
 			instructor.instructor_name = args.get("instructor_" + str(i))
@@ -175,7 +175,7 @@
 @frappe.whitelist()
 def create_room(args_data):
 	args = json.loads(args_data)
-	for i in xrange(1,4):
+	for i in range(1,4):
 		if args.get("room_" + str(i)):
 			room = frappe.new_doc("Room")
 			room.room_name = args.get("room_" + str(i))
@@ -191,7 +191,7 @@
 		return
 	args = json.loads(args_data)
 	defaults = frappe.defaults.get_defaults()
-	for i in xrange(1,4):
+	for i in range(1,4):
 		email = args.get("user_email_" + str(i))
 		fullname = args.get("user_fullname_" + str(i))
 		if email: