{% extends 'base.html' %} {% block content %} {# ---------- Macros with error/highlight + repopulation + READ-ONLY ---------- #} {% macro input_field(label, name, value, type='text', required=False, errors=None, form_values=None, is_readonly=False) -%} {% set v = (form_values[name] if form_values and name in form_values else value) %} {% set has_err = errors and (name in errors) %}
{% if has_err %}
{{ errors[name] }}
{% endif %}
{%- endmacro %} {% macro select_field(label, name, options, option_value, option_label, selected_value, required=False, errors=None, form_values=None, is_readonly=False) -%} {% set sel = (form_values[name] if form_values and name in form_values else selected_value) %} {% set has_err = errors and (name in errors) %}
{% if has_err %}
{{ errors[name] }}
{% endif %}
{%- endmacro %} {% set errors = errors or {} %} {% set form_values = form_values or {} %} {% set is_readonly = is_readonly or false %}

Edit Employee

{# Status chip #} {% set st = (employee.status or 'active')|lower %} {% if st == 'active' %} Active {% elif st in ['notice','notice_period','manager_accepted'] %} Notice Period {% elif st == 'resigned' %} Resigned {% else %} {{ employee.status }} {% endif %}
{# ---------- Flash messages ---------- #} {% with messages = get_flashed_messages(with_categories=true) %} {% if messages %} {% for category, message in messages %} {% endfor %} {% endif %} {% endwith %} {# Read-only banner #} {% if is_readonly %} {% endif %}
{# ---------- Personal Tab ---------- #}
{{ input_field('Full Name', 'full_name', employee.full_name, 'text', True, errors, form_values, is_readonly) }} {{ input_field('Email (Work)', 'email', employee.email, 'email', True, errors, form_values, is_readonly) }} {{ input_field('Phone', 'phone', employee.phone, 'tel', True, errors, form_values, is_readonly) }} {{ input_field('Current Employee Code', 'employee_code', employee.employee_code, 'text', True, errors, form_values, is_readonly) }} {{ input_field('Location', 'location', employee.location, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Qualification', 'qualification', employee.qualification, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Institute', 'institute', employee.institute, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Personal Email', 'personal_email', employee.personal_email, 'email', False, errors, form_values, is_readonly) }} {{ input_field('Gender', 'gender', employee.gender, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Date of Birth', 'dob', employee.dob.strftime('%Y-%m-%d') if employee.dob else '', 'date', False, errors, form_values, is_readonly) }} {{ input_field('Father/Spouse Name', 'father_spouse_name', employee.father_spouse_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Marital Status', 'marital_status', employee.marital_status, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Permanent Address', 'address', employee.address, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Temporary Address', 'temporary_address', employee.temporary_address, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Personal Number', 'personal_number', employee.personal_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Emergency Contact Name', 'emergency_contact_name', employee.emergency_contact_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Emergency Contact Number', 'emergency_contact_number', employee.emergency_contact_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Aadhar Name', 'aadhar_name', employee.aadhar_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Aadhar Number', 'aadhar_number', employee.aadhar_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('PAN Name', 'pan_name', employee.pan_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('PAN Number', 'pan_number', employee.pan_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('UAN', 'uan', employee.uan, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Last Company PF Number', 'last_company_pf_number', employee.last_company_pf_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Bank Account Name', 'bank_account_name', employee.bank_account_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Bank Account Number', 'bank_account_number', employee.bank_account_number, 'text', False, errors, form_values, is_readonly) }} {{ input_field('IFSC Code', 'ifsc_code', employee.ifsc_code, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Bank Name', 'bank_name', employee.bank_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Date of Joining', 'date_of_joining', employee.date_of_joining.strftime('%Y-%m-%d') if employee.date_of_joining else '', 'date', False, errors, form_values, is_readonly) }} {{ input_field('Shift Start', 'shift_start', employee.shift_start, 'time', False, errors, form_values, is_readonly) }} {{ input_field('Shift End', 'shift_end', employee.shift_end, 'time', False, errors, form_values, is_readonly) }} {{ input_field('Desktime ID', 'desktime_id', employee.desktime_id, 'text', False, errors, form_values, is_readonly) }} {% set work_modes = [{'id':'Hybrid','title':'Hybrid'},{'id':'WFO','title':'WFO'},{'id':'WFH','title':'WFH'}] %} {{ select_field('Work Mode', 'work_mode', work_modes, 'id', 'title', employee.work_mode, False, errors, form_values, is_readonly) }} {{ select_field('Reporting Manager', 'reporting_manager_id', managers, 'id', 'full_name', employee.reporting_manager_id, True, errors, form_values, is_readonly) }} {{ select_field('Department', 'department_id', departments, 'id', 'name', employee.department_id, True, errors, form_values, is_readonly) }} {{ select_field('Designation', 'designation_id', designations, 'id', 'title', employee.designation_id, True, errors, form_values, is_readonly) }}
{# ---------- Education Tab ---------- #}
{{ input_field('Secondary School Name', 'secondary_name', employee.secondary_school_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Marks', 'secondary_marks', employee.secondary_school_marks, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Year', 'secondary_year', employee.secondary_school_year, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Higher Secondary School Name', 'higher_secondary_name', employee.higher_secondary_school_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Marks', 'higher_secondary_marks', employee.higher_secondary_school_marks, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Year', 'higher_secondary_year', employee.higher_secondary_school_year, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Graduation Name', 'graduation_name', employee.graduation_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Marks', 'graduation_marks', employee.graduation_marks, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Year', 'graduation_year', employee.graduation_year, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Post Graduation Name', 'post_graduation_name', employee.post_graduation_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Marks', 'post_graduation_marks', employee.post_graduation_marks, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Year', 'post_graduation_year', employee.post_graduation_year, 'text', False, errors, form_values, is_readonly) }}
{# ---------- Professional Tab ---------- #}
{{ input_field('Last Company Name', 'last_company_name', employee.last_company_name, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Last Company Code', 'last_company_code', employee.last_company_code, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Last Designation', 'last_company_designation', employee.last_company_designation, 'text', False, errors, form_values, is_readonly) }} {{ input_field('Last Joining Date', 'last_company_doj', (employee.last_company_join_date.strftime('%Y-%m-%d') if employee.last_company_join_date else ''), 'date', False, errors, form_values, is_readonly) }} {{ input_field('Last Exit Date', 'last_company_doe', (employee.last_company_exit_date.strftime('%Y-%m-%d') if employee.last_company_exit_date else ''), 'date', False, errors, form_values, is_readonly) }}
{# ---------- Documents Tab ---------- #}
{% macro file_input(label, name, path, is_readonly=False) -%}
{% if path %} {% endif %}
{%- endmacro %} {{ file_input('Resume', 'resume', employee.resume_path, is_readonly) }} {{ file_input('ID Proof', 'id_proof', employee.id_proof_path, is_readonly) }} {{ file_input('Qualification Certificate', 'doc_qualification', employee.doc_qualification, is_readonly) }} {{ file_input('Employment Proof', 'doc_employment_proof', employee.doc_employment_proof, is_readonly) }} {{ file_input('Photograph', 'doc_photographs', employee.doc_photographs, is_readonly) }} {{ file_input('PAN Card', 'doc_pan_card', employee.doc_pan_card, is_readonly) }} {{ file_input('Aadhar Card', 'doc_aadhar_card', employee.doc_aadhar_card, is_readonly) }} {{ file_input('Parent/Spouse Aadhar', 'doc_parents_aadhar', employee.doc_parents_aadhar, is_readonly) }} {{ file_input('UAN Card', 'doc_uan_card', employee.doc_uan_card, is_readonly) }} {{ file_input('Cancelled Cheque', 'doc_cancelled_cheque', employee.doc_cancelled_cheque, is_readonly) }}
{% if not is_readonly %} {% else %} {% endif %}
{# ---------- JS: tabs, focus first error, client assist ---------- #} {% endblock %}