fix: employee user creation

- consider prefered email as default in employee creation

- remove unused user parameter from `create_user` API

- remove unnecessary validations on user ID, already checked by user doctype hooks

- set company email only if empty

(cherry picked from commit 613d36a139)
This commit is contained in:
Rucha Mahabal
2026-03-23 12:52:23 +05:30
committed by Mergify
parent 341bfb0bd9
commit 1ddadb72b7
2 changed files with 12 additions and 24 deletions

View File

@@ -56,7 +56,8 @@ frappe.ui.form.on("Employee", {
fieldname: "email",
label: __("Email"),
reqd: 1,
default: frm.doc.company_email || frm.doc.personal_email || frm.doc.user_id,
default:
frm.doc.prefered_email || frm.doc.company_email || frm.doc.personal_email,
},
{
fieldtype: "Check",

View File

@@ -416,31 +416,19 @@ def deactivate_sales_person(status=None, employee=None):
@frappe.whitelist()
def create_user(
employee: str, user: str | None = None, email: str | None = None, create_user_permission: int = 0
) -> str:
if not employee:
frappe.throw(_("Employee is required"))
def create_user(employee: str, email: str | None = None, create_user_permission: int = 0) -> str:
emp = frappe.get_doc("Employee", employee)
if email:
email = cstr(email).strip().lower()
else:
email = emp.company_email
if not email:
frappe.throw(_("Email is required to create a user"))
validate_email_address(email, True)
if emp.user_id:
frappe.throw(_("Employee {0} already has a linked user").format(emp.name))
if frappe.db.exists("User", email):
frappe.throw(_("User {0} already exists").format(email))
if not email:
email = emp.company_email
if not email:
frappe.throw(_("Email is required to create a user"))
email = validate_email_address(email, True)
employee_name = emp.employee_name.split(" ")
first_name = employee_name[0]
middle_name = last_name = ""
if len(employee_name) >= 3:
@@ -449,12 +437,9 @@ def create_user(
elif len(employee_name) == 2:
last_name = employee_name[1]
first_name = employee_name[0]
user = frappe.new_doc("User")
user.update(
{
"name": email,
"email": email,
"enabled": 1,
"first_name": first_name,
@@ -471,7 +456,9 @@ def create_user(
user.insert()
emp.reload()
emp.company_email = email
emp.user_id = user.name
if not emp.company_email:
emp.company_email = email
if not emp.prefered_contact_email:
emp.prefered_contact_email = "Company Email"
emp.save()