From 56179c5d18f26ce91a99e1b4708c37b0267b5628 Mon Sep 17 00:00:00 2001 From: Pranay Date: Wed, 12 Mar 2025 17:44:06 +0530 Subject: [PATCH] Employees family, education, and other fields added --- .../hr_employee_extended/__manifest__.py | 5 +- .../hr_employee_extended/models/__init__.py | 7 +- .../models/bank_details.py | 12 ++ .../models/education_history.py | 24 +++ .../models/employer_history.py | 12 ++ .../models/family_details.py | 23 +++ .../models/hr_employee.py | 40 ++++ .../models/hr_employee_attachments.py | 10 + .../security/ir.model.access.csv | 6 +- .../views/bank_details.xml | 28 +++ .../views/education_details.xml | 59 ++++++ .../views/hr_employee.xml | 176 +++++++++++++++++- 12 files changed, 388 insertions(+), 14 deletions(-) create mode 100644 addons_extensions/hr_employee_extended/models/bank_details.py create mode 100644 addons_extensions/hr_employee_extended/models/education_history.py create mode 100644 addons_extensions/hr_employee_extended/models/employer_history.py create mode 100644 addons_extensions/hr_employee_extended/models/family_details.py create mode 100644 addons_extensions/hr_employee_extended/models/hr_employee_attachments.py create mode 100644 addons_extensions/hr_employee_extended/views/bank_details.xml create mode 100644 addons_extensions/hr_employee_extended/views/education_details.xml diff --git a/addons_extensions/hr_employee_extended/__manifest__.py b/addons_extensions/hr_employee_extended/__manifest__.py index 98fe4e581..9a6872b82 100644 --- a/addons_extensions/hr_employee_extended/__manifest__.py +++ b/addons_extensions/hr_employee_extended/__manifest__.py @@ -16,15 +16,16 @@ # for the full list 'category': 'Human Resources/Employees', 'version': '0.1', - 'license': 'LGPL-3', # any module necessary for this one to work correctly - 'depends': ['base','hr'], + 'depends': ['base','hr','account','mail','hr_skills'], # always loaded 'data': [ + 'security/security.xml', 'security/ir.model.access.csv', 'views/hr_employee.xml', + 'views/bank_details.xml', 'wizards/work_location_wizard.xml' ], } diff --git a/addons_extensions/hr_employee_extended/models/__init__.py b/addons_extensions/hr_employee_extended/models/__init__.py index 52d4ff8bc..315b0c858 100644 --- a/addons_extensions/hr_employee_extended/models/__init__.py +++ b/addons_extensions/hr_employee_extended/models/__init__.py @@ -1,2 +1,7 @@ from . import hr_employee -from . import work_location_history \ No newline at end of file +from . import work_location_history +from . import education_history +from . import employer_history +# from . import hr_employee_attachments +from . import family_details +from . import bank_details diff --git a/addons_extensions/hr_employee_extended/models/bank_details.py b/addons_extensions/hr_employee_extended/models/bank_details.py new file mode 100644 index 000000000..311b327ef --- /dev/null +++ b/addons_extensions/hr_employee_extended/models/bank_details.py @@ -0,0 +1,12 @@ +from odoo import api, fields, models + +class Bank(models.Model): + _inherit = 'res.bank' + + branch = fields.Char(string='Branch') + + +class PartnerBank(models.Model): + _inherit='res.partner.bank' + + full_name = fields.Char(string="Full Name(as per bank)") \ No newline at end of file diff --git a/addons_extensions/hr_employee_extended/models/education_history.py b/addons_extensions/hr_employee_extended/models/education_history.py new file mode 100644 index 000000000..75ab5c2e1 --- /dev/null +++ b/addons_extensions/hr_employee_extended/models/education_history.py @@ -0,0 +1,24 @@ +from odoo import models, fields + + +class EducationHistory(models.Model): + _name = "education.history" + _description = "Education Details" + _rec_name = "name" + + name = fields.Char(string="Specialization", required=True) + university = fields.Char(string="University/Institute", required=True) + start_year = fields.Integer(string="Start Year", required=True) + end_year = fields.Integer(string="End Year", required=True) + marks_or_grade = fields.Char(string="Marks/Grade", required=True) + + education_type = fields.Selection([ + ('10', '10th'), + ('inter', 'Inter'), + ('graduation', 'Graduation'), + ('post_graduation', 'Post Graduation'), + ('additional', 'Additional Qualification'), + ], string="Education Type", required=True) + + employee_id = fields.Many2one('hr.employee') + diff --git a/addons_extensions/hr_employee_extended/models/employer_history.py b/addons_extensions/hr_employee_extended/models/employer_history.py new file mode 100644 index 000000000..1039a18d4 --- /dev/null +++ b/addons_extensions/hr_employee_extended/models/employer_history.py @@ -0,0 +1,12 @@ +from odoo import models, fields + +class EmployerHistory(models.Model): + _name = 'employer.history' + _description = 'Employee Work History' + + company_name = fields.Char(string='Company Name', required=True) + designation = fields.Char(string='Designation', required=True) + date_of_joining = fields.Date(string='Date of Joining', required=True) + last_working_day = fields.Date(string='Last Working Day') + ctc = fields.Char(string='CTC') + employee_id = fields.Many2one('hr.employee') diff --git a/addons_extensions/hr_employee_extended/models/family_details.py b/addons_extensions/hr_employee_extended/models/family_details.py new file mode 100644 index 000000000..477df12c7 --- /dev/null +++ b/addons_extensions/hr_employee_extended/models/family_details.py @@ -0,0 +1,23 @@ +from odoo import models, fields + + +class FamilyDetails(models.Model): + _name = "family.details" + _description = "Family Details" + _rec_name = "name" + + name = fields.Char(string="Full Name", required=True) + contact_no = fields.Char(string="Contact No") + dob = fields.Date(string="Date of Birth") + location = fields.Char(string="Location") + + relation_type = fields.Selection([ + ('father', 'Father'), + ('mother', 'Mother'), + ('spouse', 'Spouse'), + ('kid1', 'Kid 1'), + ('kid2', 'Kid 2'), + ], string="Relation Type", required=True) + + employee_id = fields.Many2one('hr.employee') + diff --git a/addons_extensions/hr_employee_extended/models/hr_employee.py b/addons_extensions/hr_employee_extended/models/hr_employee.py index 0476fae2e..781965098 100644 --- a/addons_extensions/hr_employee_extended/models/hr_employee.py +++ b/addons_extensions/hr_employee_extended/models/hr_employee.py @@ -20,6 +20,18 @@ class HrEmployeeBase(models.AbstractModel): emp_type = fields.Many2one('hr.contract.type', "Employee Type", tracking=True) + blood_group = fields.Selection([ + ('A+', 'A+'), + ('A-', 'A-'), + ('B+', 'B+'), + ('B-', 'B-'), + ('O+', 'O+'), + ('O-', 'O-'), + ('AB+', 'AB+'), + ('AB-', 'AB-'), + ], string="Blood Group") + + @api.constrains('identification_id') def _check_identification_id(self): @@ -84,3 +96,31 @@ class HrEmployeeBase(models.AbstractModel): total_months = record.previous_exp % 12 record.total_exp = f"{total_years} years {total_months} months 0 days" + + +class HrEmployee(models.Model): + _inherit = 'hr.employee' + + education_history = fields.One2many('education.history','employee_id', string='Education Details') + + employer_history = fields.One2many('employer.history','employee_id', string='Education Details') + + family_details = fields.One2many('family.details','employee_id',string='Family Details') + + permanent_street = fields.Char(string="permanent Street", groups="hr.group_hr_user") + permanent_street2 = fields.Char(string="permanent Street2", groups="hr.group_hr_user") + permanent_city = fields.Char(string="permanent City", groups="hr.group_hr_user") + permanent_state_id = fields.Many2one( + "res.country.state", string="permanent State", + domain="[('country_id', '=?', private_country_id)]", + groups="hr.group_hr_user") + permanent_zip = fields.Char(string="permanent Zip", groups="hr.group_hr_user") + permanent_country_id = fields.Many2one("res.country", string="permanent Country", groups="hr.group_hr_user") + marriage_anniversary_date = fields.Date(string='Anniversary Date', tracking=True) + + passport_start_date = fields.Date(string='Passport Issued Date') + passport_end_date = fields.Date(string='Passport End Date') + passport_issued_location = fields.Char(string='Passport Issued Location') + + previous_company_pf_no = fields.Char(string='Previous Company PF No') + previous_company_uan_no = fields.Char(string='Previous Company UAN No') \ No newline at end of file diff --git a/addons_extensions/hr_employee_extended/models/hr_employee_attachments.py b/addons_extensions/hr_employee_extended/models/hr_employee_attachments.py new file mode 100644 index 000000000..f1b0ef08a --- /dev/null +++ b/addons_extensions/hr_employee_extended/models/hr_employee_attachments.py @@ -0,0 +1,10 @@ +from odoo import models, fields + +class HrEmployeeAttachment(models.Model): + _name = 'hr.employee.attachment' + _description = 'Attachments for Work History and Education Details' + + name = fields.Char(string='Attachment Name', required=True) + file = fields.Binary(string='File', required=True) + employer_history_id = fields.Many2one('employer.history', string='Employer History') + education_history_id = fields.Many2one('education.history', string='Education History') diff --git a/addons_extensions/hr_employee_extended/security/ir.model.access.csv b/addons_extensions/hr_employee_extended/security/ir.model.access.csv index d53e01e31..8232994f7 100644 --- a/addons_extensions/hr_employee_extended/security/ir.model.access.csv +++ b/addons_extensions/hr_employee_extended/security/ir.model.access.csv @@ -1,3 +1,7 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_emp_work_location_history,emp.work.location.history,model_emp_work_location_history,base.group_user,1,1,1,1 -access_work_location_wizard,work.location.wizard,model_work_location_wizard,base.group_user,1,1,1,1 \ No newline at end of file +access_work_location_wizard,work.location.wizard,model_work_location_wizard,base.group_user,1,1,1,1 + +access_education_history,education.history,model_education_history,base.group_user,1,1,1,1 +access_employer_history,employer.history,model_employer_history,base.group_user,1,1,1,1 +access_family_details,family.details,model_family_details,base.group_user,1,1,1,1 diff --git a/addons_extensions/hr_employee_extended/views/bank_details.xml b/addons_extensions/hr_employee_extended/views/bank_details.xml new file mode 100644 index 000000000..c9b9c97b2 --- /dev/null +++ b/addons_extensions/hr_employee_extended/views/bank_details.xml @@ -0,0 +1,28 @@ + + + + + + base_view_res_bank_form_inherit + res.bank + + + + + + + + + + view_partner_bank_form_inherit_account_inherit + res.partner.bank + + + + + + + + + + \ No newline at end of file diff --git a/addons_extensions/hr_employee_extended/views/education_details.xml b/addons_extensions/hr_employee_extended/views/education_details.xml new file mode 100644 index 000000000..e74592449 --- /dev/null +++ b/addons_extensions/hr_employee_extended/views/education_details.xml @@ -0,0 +1,59 @@ + + + + + education.details.form + education.details + +
+ + + + + + + + + + + + + + +
+
+
+ + + + education.details.list + education.details + + + + + + + + + + + + + + + Education Details + education.details + list,form + + + + + + + + + + + +
diff --git a/addons_extensions/hr_employee_extended/views/hr_employee.xml b/addons_extensions/hr_employee_extended/views/hr_employee.xml index 08ca2adec..b89137a22 100644 --- a/addons_extensions/hr_employee_extended/views/hr_employee.xml +++ b/addons_extensions/hr_employee_extended/views/hr_employee.xml @@ -1,11 +1,138 @@ + + hr.employee.skills.form.inherit + hr.employee + + + + +
+
+ + + + + + + + + + + +
+ + + + + + + + + + + + + + +
+ +
+ +
+
+ + + + + + + + + + + + +
+ + + + + + + + + + + + + + + +
+ +
+
+
+
+
+
hr.employee.form.inherit hr.employee + + + + + + + + + +
Family Details
+ + + + + + + + + +
+
+
Education Details
+ + + + + + + + + + + +
+
+
Employer History
+ + + + + + + + + + +
1 @@ -26,14 +153,16 @@ -