fix: consider based on DOJ config while calculating leaves for passed months
diff --git a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py
index 41a9558..6168db8 100644
--- a/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py
+++ b/erpnext/hr/doctype/leave_policy_assignment/leave_policy_assignment.py
@@ -119,14 +119,15 @@
 		from_date_year = get_datetime(from_date).year
 
 		months_passed = 0
+		based_on_doj = leave_type_details.get(leave_type).based_on_date_of_joining
 
-		if current_year == from_date_year and current_month > from_date_month:
+		if current_year == from_date_year and current_month >= from_date_month:
 			months_passed = current_month - from_date_month
-			months_passed = add_current_month_if_applicable(months_passed)
+			months_passed = add_current_month_if_applicable(months_passed, date_of_joining, based_on_doj)
 
 		elif current_year > from_date_year:
 			months_passed = (12 - from_date_month) + current_month
-			months_passed = add_current_month_if_applicable(months_passed)
+			months_passed = add_current_month_if_applicable(months_passed, date_of_joining, based_on_doj)
 
 		if months_passed > 0:
 			monthly_earned_leave = get_monthly_earned_leave(new_leaves_allocated,
@@ -138,13 +139,20 @@
 		return new_leaves_allocated
 
 
-def add_current_month_if_applicable(months_passed):
+def add_current_month_if_applicable(months_passed, date_of_joining, based_on_doj):
 	date = getdate(frappe.flags.current_date) or getdate()
-	last_day_of_month = get_last_day(date)
 
-	# if its the last day of the month, then that month should also be considered
-	if last_day_of_month == date:
-		months_passed += 1
+	if based_on_doj:
+		# if leave type allocation is based on DOJ,
+		# and the date of assignment creation is same as DOJ,
+		# then the month should be considered
+		if date == date_of_joining:
+			months_passed += 1
+	else:
+		last_day_of_month = get_last_day(date)
+		# if its the last day of the month, then that month should be considered
+		if last_day_of_month == date:
+			months_passed += 1
 
 	return months_passed
 
@@ -183,7 +191,7 @@
 def get_leave_type_details():
 	leave_type_details = frappe._dict()
 	leave_types = frappe.get_all("Leave Type",
-		fields=["name", "is_lwp", "is_earned_leave", "is_compensatory",
+		fields=["name", "is_lwp", "is_earned_leave", "is_compensatory", "based_on_date_of_joining",
 			"is_carry_forward", "expire_carry_forwarded_leaves_after_days", "earned_leave_frequency", "rounding"])
 	for d in leave_types:
 		leave_type_details.setdefault(d.name, d)