35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
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)
|