feat: expire current allocation
This commit is contained in:
		
							parent
							
								
									c5385e141b
								
							
						
					
					
						commit
						afa1dc4ffa
					
				| @ -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) { | 	employee: function(frm) { | ||||||
| 		frm.trigger("calculate_total_leaves_allocated"); | 		frm.trigger("calculate_total_leaves_allocated"); | ||||||
| 	}, | 	}, | ||||||
|  | |||||||
| @ -565,6 +565,40 @@ | |||||||
|    "translatable": 0, |    "translatable": 0, | ||||||
|    "unique": 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_bulk_edit": 0, | ||||||
|    "allow_in_quick_entry": 0, |    "allow_in_quick_entry": 0, | ||||||
| @ -677,7 +711,7 @@ | |||||||
|  "issingle": 0, |  "issingle": 0, | ||||||
|  "istable": 0, |  "istable": 0, | ||||||
|  "max_attachments": 0, |  "max_attachments": 0, | ||||||
|  "modified": "2019-05-22 11:28:09.360525", |  "modified": "2019-05-30 11:28:09.360525", | ||||||
|  "modified_by": "Administrator", |  "modified_by": "Administrator", | ||||||
|  "module": "HR", |  "module": "HR", | ||||||
|  "name": "Leave Allocation", |  "name": "Leave Allocation", | ||||||
|  | |||||||
| @ -131,7 +131,7 @@ class LeaveAllocation(Document): | |||||||
| 
 | 
 | ||||||
| 	def expire_previous_allocation(self): | 	def expire_previous_allocation(self): | ||||||
| 		''' expire previous allocation leaves ''' | 		''' 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: | 		if flt(leaves) > 0: | ||||||
| 			args = dict( | 			args = dict( | ||||||
| @ -171,11 +171,26 @@ def get_carry_forwarded_leaves(employee, leave_type, date, carry_forward=None): | |||||||
| 	carry_forwarded_leaves = 0 | 	carry_forwarded_leaves = 0 | ||||||
| 	if carry_forward: | 	if carry_forward: | ||||||
| 		validate_carry_forward(leave_type) | 		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 | 	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={ | 	return frappe.db.get_value("Leave Ledger Entry", filters={ | ||||||
| 			"to_date": ("<=", date), | 			"to_date": ("<=", date), | ||||||
| 			"employee": employee, | 			"employee": employee, | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user