feat: expire current allocation

This commit is contained in:
Mangesh-Khairnar 2019-06-03 20:09:22 +05:30
parent c5385e141b
commit afa1dc4ffa
3 changed files with 76 additions and 4 deletions

View File

@ -21,6 +21,29 @@ frappe.ui.form.on("Leave Allocation", {
})
},
refresh: function(frm) {
if(frm.doc.docstatus == 1){
frm.add_custom_button('Expire Allocation', function() {
frm.trigger("expire_allocation");
});
}
},
expire_allocation: function(frm) {
frappe.call({
method: 'erpnext.hr.doctype.leave_application.leave_application.expire_previous_allocation',
args: {
ref_doc: frm.doc
},
freeze: true,
callback: function(r){
if(!r.exc){
frappe.msgprint(__("Allocation Expired!"));
}
}
});
},
employee: function(frm) {
frm.trigger("calculate_total_leaves_allocated");
},

View File

@ -565,6 +565,40 @@
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
"allow_on_submit": 0,
"bold": 0,
"collapsible": 0,
"columns": 0,
"fetch_from": "employee.leave_policy",
"fieldname": "leave_policy",
"fieldtype": "Link",
"hidden": 0,
"ignore_user_permissions": 0,
"ignore_xss_filter": 0,
"in_filter": 0,
"in_global_search": 0,
"in_list_view": 0,
"in_standard_filter": 1,
"label": "Leave Policy",
"length": 0,
"no_copy": 0,
"options": "Leave Policy",
"permlevel": 0,
"precision": "",
"print_hide": 0,
"print_hide_if_no_value": 0,
"read_only": 1,
"remember_last_selected_value": 0,
"report_hide": 0,
"reqd": 0,
"search_index": 0,
"set_only_once": 0,
"translatable": 0,
"unique": 0
},
{
"allow_bulk_edit": 0,
"allow_in_quick_entry": 0,
@ -677,7 +711,7 @@
"issingle": 0,
"istable": 0,
"max_attachments": 0,
"modified": "2019-05-22 11:28:09.360525",
"modified": "2019-05-30 11:28:09.360525",
"modified_by": "Administrator",
"module": "HR",
"name": "Leave Allocation",

View File

@ -131,7 +131,7 @@ class LeaveAllocation(Document):
def expire_previous_allocation(self):
''' expire previous allocation leaves '''
leaves = get_remaining_leaves(self.employee, self.leave_type, self.from_date)
leaves = get_unused_leaves(self.employee, self.leave_type, self.from_date)
if flt(leaves) > 0:
args = dict(
@ -171,11 +171,26 @@ def get_carry_forwarded_leaves(employee, leave_type, date, carry_forward=None):
carry_forwarded_leaves = 0
if carry_forward:
validate_carry_forward(leave_type)
carry_forwarded_leaves = get_remaining_leaves(employee, leave_type, date)
carry_forwarded_leaves = get_unused_leaves(employee, leave_type, date)
return carry_forwarded_leaves
def get_remaining_leaves(employee, leave_type, date):
@frappe.whitelist()
def expire_current_allocation(ref_doc):
''' expire previous allocation leaves '''
leaves = get_unused_leaves(ref_doc.employee, ref_doc.leave_type, ref_doc.to_date)
if flt(leaves) > 0:
args = dict(
leaves=leaves * -1,
from_date=ref_doc.from_date,
to_date=ref_doc.from_date,
is_carry_forward=0,
is_expired=1
)
create_leave_ledger_entry(ref_doc, args)
def get_unused_leaves(employee, leave_type, date):
return frappe.db.get_value("Leave Ledger Entry", filters={
"to_date": ("<=", date),
"employee": employee,