Employee Promotion, Transfer - validate, submit, cancel workflow
This commit is contained in:
parent
fddfffd3e6
commit
56b58017d1
@ -156,6 +156,9 @@ class Employee(NestedSet):
|
||||
def on_trash(self):
|
||||
self.update_nsm_model()
|
||||
delete_events(self.doctype, self.name)
|
||||
if frappe.db.exists("Employee Transfer", {'new_employee_id': self.name, 'docstatus': 1}):
|
||||
emp_transfer = frappe.get_doc("Employee Transfer", {'new_employee_id': self.name, 'docstatus': 1})
|
||||
emp_transfer.db_set("new_employee_id", '')
|
||||
|
||||
def validate_preferred_email(self):
|
||||
if self.prefered_contact_email and not self.get(scrub(self.prefered_contact_email)):
|
||||
|
@ -4,7 +4,27 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import getdate
|
||||
from erpnext.hr.utils import update_employee
|
||||
|
||||
class EmployeePromotion(Document):
|
||||
pass
|
||||
def validate(self):
|
||||
if frappe.get_value("Employee", self.employee, "status") == "Left":
|
||||
frappe.throw(_("Cannot promote Employee with status Left"))
|
||||
|
||||
def before_submit(self):
|
||||
if getdate(self.promotion_date) > getdate():
|
||||
frappe.throw(_("Employee Promotion cannot be submitted before Promotion Date "),
|
||||
frappe.DocstatusTransitionError)
|
||||
|
||||
def on_submit(self):
|
||||
employee = frappe.get_doc("Employee", self.employee)
|
||||
employee = update_employee(employee, self.promotion_details)
|
||||
employee.save()
|
||||
|
||||
def on_cancel(self):
|
||||
employee = frappe.get_doc("Employee", self.employee)
|
||||
employee = update_employee(employee, self.promotion_details, True)
|
||||
employee.save()
|
||||
|
@ -4,7 +4,59 @@
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe import _
|
||||
from frappe.model.document import Document
|
||||
from frappe.utils import getdate
|
||||
from erpnext.hr.utils import update_employee
|
||||
|
||||
class EmployeeTransfer(Document):
|
||||
pass
|
||||
def validate(self):
|
||||
if frappe.get_value("Employee", self.employee, "status") == "Left":
|
||||
frappe.throw(_("Cannot transfer Employee with status Left"))
|
||||
|
||||
def before_submit(self):
|
||||
if getdate(self.transfer_date) > getdate():
|
||||
frappe.throw(_("Employee Transfer cannot be submitted before Transfer Date "),
|
||||
frappe.DocstatusTransitionError)
|
||||
|
||||
def on_submit(self):
|
||||
employee = frappe.get_doc("Employee", self.employee)
|
||||
if self.create_new_employee_id:
|
||||
new_employee = frappe.copy_doc(employee)
|
||||
new_employee = update_employee(new_employee, self.transfer_details)
|
||||
if self.new_company:
|
||||
new_employee.company = self.new_company
|
||||
#move user_id to new employee before insert
|
||||
if employee.user_id and not self.validate_user_in_details():
|
||||
new_employee.user_id = employee.user_id
|
||||
employee.db_set("user_id", "")
|
||||
new_employee.insert()
|
||||
self.db_set("new_employee_id", new_employee.name)
|
||||
#relieve the old employee
|
||||
employee.db_set("relieving_date", self.transfer_date)
|
||||
employee.db_set("status", "Left")
|
||||
else:
|
||||
employee = update_employee(employee, self.transfer_details)
|
||||
if self.new_company:
|
||||
employee.company = self.new_company
|
||||
employee.save()
|
||||
|
||||
def on_cancel(self):
|
||||
employee = frappe.get_doc("Employee", self.employee)
|
||||
if self.create_new_employee_id:
|
||||
if self.new_employee_id:
|
||||
frappe.throw(_("Please delete the Employee <a href='#Form/Employee/{0}'>{0}</a>\
|
||||
to cancel this document").format(self.new_employee_id))
|
||||
#mark the employee as active
|
||||
employee.status = "Active"
|
||||
employee.relieving_date = ''
|
||||
employee.save()
|
||||
else:
|
||||
employee = update_employee(employee, self.transfer_details, True)
|
||||
employee.save()
|
||||
|
||||
def validate_user_in_details(self):
|
||||
for item in self.transfer_details:
|
||||
if item.fieldname == "user_id" and item.new != item.current:
|
||||
return True
|
||||
return False
|
||||
|
Loading…
x
Reference in New Issue
Block a user