diff --git a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py
index 6a1cf56..ef762ff 100644
--- a/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py
+++ b/erpnext/crm/doctype/appointment_booking_settings/appointment_booking_settings.py
@@ -8,22 +8,31 @@
 import datetime
 from frappe.model.document import Document
 
+
 class AppointmentBookingSettings(Document):
-	def validate(self):
-		# Day of week should not be repeated
-		list_of_days = []
-		date = '01/01/1970 '
-		format_string = "%d/%m/%Y %H:%M:%S"
+    min_date = '01/01/1970 '
+    format_string = "%d/%m/%Y %H:%M:%S"
 
-		for record in self.availability_of_slots:
-			list_of_days.append(record.day_of_week)
-			# Difference between from_time and to_time is multiple of appointment_duration
-			from_time = datetime.datetime.strptime(date+record.from_time, format_string)
-			to_time = datetime.datetime.strptime(date+record.to_time, format_string)
-			timedelta = to_time-from_time
+    def validate(self):
+        self.validate_availability_of_slots()
 
-			if(from_time > to_time):
-				frappe.throw('From Time cannot be later than To Time for '+record.day_of_week)
-			
-			if timedelta.total_seconds() % (self.appointment_duration * 60):
-				frappe.throw('The difference between from time and To Time must be a multiple of Appointment ')
\ No newline at end of file
+    def validate_availability_of_slots(self):
+        for record in self.availability_of_slots:
+            from_time = datetime.datetime.strptime(
+                min_date+record.from_time, format_string)
+            to_time = datetime.datetime.strptime(
+                min_date+record.to_time, format_string)
+            timedelta = to_time-from_time
+            self.from_time_is_later_than_to_time(from_time, to_time)
+            self.duration_is_divisible(from_time, to_time)
+
+    def from_time_is_later_than_to_time(self, from_time, to_time):
+        if from_time > to_time:
+            err_msg = 'From Time cannot be later than To Time for '+record.day_of_week
+            frappe.throw(_(err_msg))
+
+    def duration_is_divisible(self, from_time, to_time):
+        timedelta = to_time - from_time
+        if timedelta.total_seconds() % (self.appointment_duration * 60):
+            frappe.throw(
+                _('The difference between from time and To Time must be a multiple of Appointmen'))
