diff --git a/hr_managment/__init__.py b/hr_managment/__init__.py new file mode 100644 index 0000000..aa4d0fd --- /dev/null +++ b/hr_managment/__init__.py @@ -0,0 +1,4 @@ +# -*- coding: utf-8 -*- + +from . import controllers +from . import models diff --git a/hr_managment/__manifest__.py b/hr_managment/__manifest__.py new file mode 100644 index 0000000..0353815 --- /dev/null +++ b/hr_managment/__manifest__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +{ + 'name': "hr_managment", + + 'summary': "Short (1 phrase/line) summary of the module's purpose", + + 'description': """ +Long description of module's purpose + """, + + 'author': "Duy Dat", + 'website': "https://www.yourcompany.com", + + # Categories can be used to filter modules in modules listing + # Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml + # for the full list + 'category': 'Human Resources', + 'version': '0.1', + + # any module necessary for this one to work correctly + 'depends': ['base'], + + # always loaded + 'data': [ + 'security/ir.model.access.csv', + 'views/employee_views.xml', + ], +} + diff --git a/hr_managment/controllers/__init__.py b/hr_managment/controllers/__init__.py new file mode 100644 index 0000000..b0f26a9 --- /dev/null +++ b/hr_managment/controllers/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- + +from . import controllers diff --git a/hr_managment/controllers/controllers.py b/hr_managment/controllers/controllers.py new file mode 100644 index 0000000..63eb672 --- /dev/null +++ b/hr_managment/controllers/controllers.py @@ -0,0 +1,22 @@ +# -*- coding: utf-8 -*- +# from odoo import http + + +# class HrManagment(http.Controller): +# @http.route('/hr_managment/hr_managment', auth='public') +# def index(self, **kw): +# return "Hello, world" + +# @http.route('/hr_managment/hr_managment/objects', auth='public') +# def list(self, **kw): +# return http.request.render('hr_managment.listing', { +# 'root': '/hr_managment/hr_managment', +# 'objects': http.request.env['hr_managment.hr_managment'].search([]), +# }) + +# @http.route('/hr_managment/hr_managment/objects/', auth='public') +# def object(self, obj, **kw): +# return http.request.render('hr_managment.object', { +# 'object': obj +# }) + diff --git a/hr_managment/models/__init__.py b/hr_managment/models/__init__.py new file mode 100644 index 0000000..7006ca2 --- /dev/null +++ b/hr_managment/models/__init__.py @@ -0,0 +1,2 @@ +# -*- coding: utf-8 -*- +from . import employee diff --git a/hr_managment/models/employee.py b/hr_managment/models/employee.py new file mode 100644 index 0000000..5022528 --- /dev/null +++ b/hr_managment/models/employee.py @@ -0,0 +1,34 @@ +from odoo import models, fields, api +from datetime import date + +class Employee(models.Model): + _name = 'hr.employee' + _description = 'Nhân viên' + name = fields.Char(string='Tên nhân viên', required=True) + employee_code = fields.Char(string='Mã nhân viên', required=True, copy=False, readonly=True, default='New') + job_title = fields.Char(string='Chức vụ') + date_of_birth = fields.Date(string='Ngày sinh') + hire_date = fields.Date(string='Ngày vào làm') + active = fields.Boolean(string='Còn làm việc', default=True) + age = fields.Integer(string='Tuổi', compute='_compute_age') + @api.depends('date_of_birth') + def _compute_age(self): + for rec in self: + if rec.date_of_birth: + today = date.today() + rec.age = today.year - rec.date_of_birth.year + else: + rec.age = 0 + @api.model + def create(self, vals): + if vals.get('employee_code', 'New') == 'New': + # Tạo mã tự động, ví dụ: EMP0001 + last_employee = self.env['hr.employee'].search([], order='id desc', limit=1) + if last_employee: + last_code = last_employee.employee_code or 'EMP0000' + # Lấy phần số sau "EMP" và tăng lên 1 + number = int(last_code.replace('EMP', '')) + 1 + vals['employee_code'] = 'EMP%04d' % number + else: + vals['employee_code'] = 'EMP0001' + return super(Employee, self).create(vals) diff --git a/hr_managment/security/ir.model.access.csv b/hr_managment/security/ir.model.access.csv new file mode 100644 index 0000000..92b9a3b --- /dev/null +++ b/hr_managment/security/ir.model.access.csv @@ -0,0 +1,3 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_hr_employee,hr.employee,model_hr_employee,base.group_user,1,1,1,1 + diff --git a/hr_managment/views/employee_views.xml b/hr_managment/views/employee_views.xml new file mode 100644 index 0000000..de75524 --- /dev/null +++ b/hr_managment/views/employee_views.xml @@ -0,0 +1,47 @@ + + + + hr.employee.list + hr.employee + + + + + + + + + + + + + + + hr.employee.form + hr.employee + +
+ + + + + + + + + + + +
+
+
+ + + Nhân viên + hr.employee + list,form + + + + +