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):
|
def on_trash(self):
|
||||||
self.update_nsm_model()
|
self.update_nsm_model()
|
||||||
delete_events(self.doctype, self.name)
|
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):
|
def validate_preferred_email(self):
|
||||||
if self.prefered_contact_email and not self.get(scrub(self.prefered_contact_email)):
|
if self.prefered_contact_email and not self.get(scrub(self.prefered_contact_email)):
|
||||||
|
@ -4,7 +4,27 @@
|
|||||||
|
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from frappe.utils import getdate
|
||||||
|
from erpnext.hr.utils import update_employee
|
||||||
|
|
||||||
class EmployeePromotion(Document):
|
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
|
from __future__ import unicode_literals
|
||||||
import frappe
|
import frappe
|
||||||
|
from frappe import _
|
||||||
from frappe.model.document import Document
|
from frappe.model.document import Document
|
||||||
|
from frappe.utils import getdate
|
||||||
|
from erpnext.hr.utils import update_employee
|
||||||
|
|
||||||
class EmployeeTransfer(Document):
|
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