fix: expiry ledger creation

This commit is contained in:
Mangesh-Khairnar
2019-05-27 15:39:48 +05:30
parent 705b7dc9c2
commit 7fbaef5de3

View File

@@ -364,32 +364,31 @@ class LeaveApplication(Document):
create_leave_ledger_entry(self, args, submit) create_leave_ledger_entry(self, args, submit)
def create_ledger_entry_for_intermediate_expiry(self, expiry_date, submit): def create_ledger_entry_for_intermediate_expiry(self, expiry_date, submit):
''' splits leave application into two ledger entries to consider expiry ''' ''' splits leave application into two ledger entries to consider expiry of allocation '''
args = dict( args = dict(
from_date=self.from_date, from_date=self.from_date,
to_date=self.to_date, to_date=self.to_date,
leaves=date_diff(expiry_date, self.from_date) * -1 leaves=(date_diff(expiry_date, self.from_date) + 1) * -1
) )
create_leave_ledger_entry(self, args, submit) create_leave_ledger_entry(self, args, submit)
start_date = add_days(expiry_date, 1) start_date = add_days(expiry_date, 1)
args.update(dict( args.update(dict(
from_date=start_date, from_date=start_date,
to_date=self.to_date, to_date=self.to_date,
leaves=date_diff(self.to_date, start_date) * -1 leaves=date_diff(self.to_date, expiry_date) * -1
)) ))
create_leave_ledger_entry(self, args, submit) create_leave_ledger_entry(self, args, submit)
def get_allocation_expiry(employee, leave_type, to_date, from_date): def get_allocation_expiry(employee, leave_type, to_date, from_date):
return frappe.db.sql(""" expiry = frappe.get_all("Leave Ledger Entry",
SELECT filters={
to_date 'employee': employee,
FROM `tabLeave Ledger Entry` 'leave_type': leave_type,
WHERE 'transaction_type': 'Leave Allocation',
employee='%s' 'to_date': ['between', (from_date, to_date)]
AND leave_type='%s' },fields=['to_date'])
AND transaction_type='Leave Allocation' return expiry[0]['to_date'] if expiry else None
AND (to_date BETWEEN %s AND %s)
""" %(employee, leave_type, from_date, to_date), as_dict=1)
@frappe.whitelist() @frappe.whitelist()
def get_number_of_leave_days(employee, leave_type, from_date, to_date, half_day = None, half_day_date = None): def get_number_of_leave_days(employee, leave_type, from_date, to_date, half_day = None, half_day_date = None):
@@ -452,10 +451,12 @@ def get_remaining_leaves(allocation, leaves_taken, date, expiry):
if remaining_leaves > 0: if remaining_leaves > 0:
remaining_days = date_diff(end_date, date) + 1 remaining_days = date_diff(end_date, date) + 1
remaining_leaves = min(remaining_days, remaining_leaves) remaining_leaves = min(remaining_days, remaining_leaves)
return remaining_leaves return remaining_leaves
if expiry: if expiry:
remaining_leaves = _get_remaining_leaves(allocation.carry_forwarded_leaves, expiry) remaining_leaves = _get_remaining_leaves(allocation.carry_forwarded_leaves, expiry)
return flt(allocation.new_leaves_allocated) + flt(remaining_leaves) return flt(allocation.new_leaves_allocated) + flt(remaining_leaves)
else: else:
return _get_remaining_leaves(allocation.total_leaves_allocated, allocation.to_date) return _get_remaining_leaves(allocation.total_leaves_allocated, allocation.to_date)
@@ -543,7 +544,7 @@ def get_leave_allocation_records(date, employee=None):
"total_leaves_allocated": d.total_leaves_allocated, "total_leaves_allocated": d.total_leaves_allocated,
"carry_forward": d.carry_forward, "carry_forward": d.carry_forward,
"carry_forwarded_leaves": d.carry_forwarded_leaves, "carry_forwarded_leaves": d.carry_forwarded_leaves,
"new_leaves": d.new_leaves_allocated, "new_leaves_allocated": d.new_leaves_allocated,
"leave_type": d.leave_type "leave_type": d.leave_type
})) }))
return allocated_leaves return allocated_leaves