mirror of
https://github.com/frappe/erpnext.git
synced 2026-04-02 06:29:54 +00:00
feat(employee): Add automatic user creation feature and related validations. Create User on Import.
(cherry picked from commit 57f3048d27)
This commit is contained in:
committed by
Mergify
parent
cd0a25ca17
commit
8f8b48746b
@@ -29,6 +29,8 @@
|
||||
"erpnext_user",
|
||||
"user_id",
|
||||
"create_user_permission",
|
||||
"column_break_xwnm",
|
||||
"create_user_automatically",
|
||||
"company_details_section",
|
||||
"company",
|
||||
"department",
|
||||
@@ -286,12 +288,20 @@
|
||||
},
|
||||
{
|
||||
"default": "1",
|
||||
"depends_on": "user_id",
|
||||
"depends_on": "eval:doc.user_id || doc.create_user_automatically",
|
||||
"description": "This will restrict user access to other employee records",
|
||||
"fieldname": "create_user_permission",
|
||||
"fieldtype": "Check",
|
||||
"label": "Create User Permission"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"depends_on": "eval:doc.__islocal",
|
||||
"description": "This will create User for this employee depending on the Company Email.",
|
||||
"fieldname": "create_user_automatically",
|
||||
"fieldtype": "Check",
|
||||
"label": "Create User Automatically"
|
||||
},
|
||||
{
|
||||
"allow_in_quick_entry": 1,
|
||||
"collapsible": 1,
|
||||
@@ -447,6 +457,7 @@
|
||||
"fieldname": "company_email",
|
||||
"fieldtype": "Data",
|
||||
"label": "Company Email",
|
||||
"mandatory_depends_on": "create_user_automatically",
|
||||
"oldfieldname": "company_email",
|
||||
"oldfieldtype": "Data",
|
||||
"options": "Email"
|
||||
@@ -809,6 +820,10 @@
|
||||
"fieldtype": "Data",
|
||||
"label": "IBAN",
|
||||
"options": "IBAN"
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break_xwnm",
|
||||
"fieldtype": "Column Break"
|
||||
}
|
||||
],
|
||||
"icon": "fa fa-user",
|
||||
@@ -816,7 +831,7 @@
|
||||
"image_field": "image",
|
||||
"is_tree": 1,
|
||||
"links": [],
|
||||
"modified": "2026-02-16 13:06:01.752904",
|
||||
"modified": "2026-02-19 12:48:22.080419",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Setup",
|
||||
"name": "Employee",
|
||||
|
||||
@@ -49,6 +49,7 @@ class Employee(NestedSet):
|
||||
company: DF.Link
|
||||
company_email: DF.Data | None
|
||||
contract_end_date: DF.Date | None
|
||||
create_user_automatically: DF.Check
|
||||
create_user_permission: DF.Check
|
||||
ctc: DF.Currency
|
||||
current_accommodation_type: DF.Literal["", "Rented", "Owned"]
|
||||
@@ -125,6 +126,7 @@ class Employee(NestedSet):
|
||||
self.set_employee_name()
|
||||
self.validate_date()
|
||||
self.validate_email()
|
||||
self.validate_auto_user_creation()
|
||||
self.validate_status()
|
||||
self.validate_reports_to()
|
||||
self.set_preferred_email()
|
||||
@@ -159,6 +161,10 @@ class Employee(NestedSet):
|
||||
self.validate_for_enabled_user_id(data.get("enabled", 0))
|
||||
self.validate_duplicate_user_id()
|
||||
|
||||
def validate_auto_user_creation(self):
|
||||
if self.create_user_automatically and not self.company_email:
|
||||
frappe.throw(_("Email is mandatory when Create User Automatically is enabled"))
|
||||
|
||||
def update_nsm_model(self):
|
||||
frappe.utils.nestedset.update_nsm(self)
|
||||
|
||||
@@ -170,6 +176,19 @@ class Employee(NestedSet):
|
||||
self.update_user_permissions()
|
||||
self.reset_employee_emails_cache()
|
||||
|
||||
def after_insert(self):
|
||||
if not self.create_user_automatically:
|
||||
return
|
||||
|
||||
if self.user_id:
|
||||
return
|
||||
|
||||
create_user(
|
||||
employee=self.name,
|
||||
email=self.company_email,
|
||||
create_user_permission=self.create_user_permission,
|
||||
)
|
||||
|
||||
def update_user_permissions(self):
|
||||
if not self.has_value_changed("user_id") and not self.has_value_changed("create_user_permission"):
|
||||
return
|
||||
@@ -406,7 +425,7 @@ def create_user(employee, user=None, email=None, create_user_permission=0):
|
||||
if email:
|
||||
email = cstr(email).strip().lower()
|
||||
else:
|
||||
email = emp.prefered_email
|
||||
email = emp.company_email
|
||||
|
||||
if not email:
|
||||
frappe.throw(_("Email is required to create a user"))
|
||||
@@ -436,7 +455,7 @@ def create_user(employee, user=None, email=None, create_user_permission=0):
|
||||
user = frappe.new_doc("User")
|
||||
user.update(
|
||||
{
|
||||
"name": emp.employee_name,
|
||||
"name": email,
|
||||
"email": email,
|
||||
"enabled": 1,
|
||||
"first_name": first_name,
|
||||
@@ -446,7 +465,6 @@ def create_user(employee, user=None, email=None, create_user_permission=0):
|
||||
"birth_date": emp.date_of_birth,
|
||||
"phone": emp.cell_number,
|
||||
"bio": emp.bio,
|
||||
"send_welcome_email": 1,
|
||||
}
|
||||
)
|
||||
user.append_roles("Employee")
|
||||
|
||||
Reference in New Issue
Block a user