I want to create 15-15 days leave every 6 months

We have 30 leaves in a year . I want to assign 15 leave from jan to june and other 15 leave from july to dec. In one leave type, how can i create this leave type. Can anyone suggest me.

I am not sure if this will sort your issue but you can use earned leave which will grant the employee 2.5 days each month

yes this is ok and I had already done this . but I want 6 month earned leave on 1st of Jan and next 6th month earned leave automatically credit to 1st of July in employee account.

Do the changes on leave_policy_assignment.py file and get the result

def get_leaves_for_passed_months(self, leave_type, new_leaves_allocated, leave_type_details, date_of_joining):
		from erpnext.hr.utils import get_monthly_earned_leave
		current_date = frappe.flags.current_date or getdate()
		if current_date > getdate(self.effective_to):
			current_date = getdate(self.effective_to)

		from_date = getdate(self.effective_from)
		if getdate(date_of_joining) > from_date:
			from_date = getdate(date_of_joining)
		months_passed = 0
		based_on_doj = leave_type_details.get(leave_type).based_on_date_of_joining

		if current_date.year == from_date.year and current_date.month >= from_date.month:
			months_passed = current_date.month - from_date.month
			months_passed = add_current_month_if_applicable(months_passed, date_of_joining, based_on_doj)

		elif current_date.year > from_date.year:
			months_passed = (12 - from_date.month) + current_date.month
			months_passed = add_current_month_if_applicable(months_passed, date_of_joining, based_on_doj)
		# created here half yarly leave concept
		# suppose we get 15-15 days leave every half year
		# we will devide here total yearly leave with 12 and multiply with remaining month and allot all remaining month leave in one time
        # custom code
		#custom_leave_type = leave_type_details.get(leave_type).leave_type

		if leave_type_details.get(leave_type).earned_leave_frequency=='Half-Yearly':
			leave_per_month = new_leaves_allocated/12
			if date_of_joining.year<current_date.year:
				new_leaves_allocated = round(leave_per_month*6)
				if current_date.month<=6:
					months_passed = (6-date_of_joining.month)+1
					new_leaves_allocated = round(leave_per_month*months_passed)
				elif  current_date.month>6:
					months_passed = (12-current_date.month)+1
					new_leaves_allocated = round(leave_per_month*months_passed)
			#core code
			if months_passed > 0:
				monthly_earned_leave = get_monthly_earned_leave(new_leaves_allocated,
				leave_type_details.get(leave_type).earned_leave_frequency, leave_type_details.get(leave_type).rounding)
				new_leaves_allocated = monthly_earned_leave * months_passed
				new_leaves_allocated = 0
			#core code
        # custom code
		return new_leaves_allocated