介绍
在 Odoo 中,模型定义了数据在数据库中的结构和存储方式。您处理的每一条业务数据,从销售订单到发票再到员工,都存在于一个模型中。
理解 Odoo 模型对开发者和功能顾问来说至关重要。模型是 Odoo 数据架构的基础。它们定义了字段、关系和业务逻辑。
本文重点介绍 HR 模块中的核心模型之一:hr.employee。无论您是在构建自定义 HR 工作流程、集成薪资系统,还是配置考勤和请假,您都将与该模型打交道。
hr.employee 模型是什么
hr.employee模型代表Odoo中的员工。它是存储所有人员信息的中心位置。
该Odoo模型是HR(人力资源)应用的一部分。它用于考勤、请假、合同、工资单和时间表等方面。
当您启用员工应用时,它会被安装。其他模块通过Odoo模型继承扩展它。hr_contract添加合同字段。hr_attendance添加签到和签退。hr_leave添加休假。每个模块根据需要添加内容,而不重复核心结构。
Odoo还提供hr.employee.public,这是对相同数据的受限视图,供需要有限员工可见性的用户使用。这是Odoo如何使用抽象模型模式和模型继承来控制访问的一个例子。
模型中的关键字段
以下是hr.employee模型中最重要的Odoo字段。理解这些将帮助您有效地处理员工记录。
1. name
类型:Char。此字段存储员工姓名。它通常在许多Odoo视图中显示,并且是员工记录的主要标识符。
2. create_date
类型:Datetime。存储记录创建的日期和时间。由Odoo自动管理。对于报告和审计非常有用。
3. write_date
类型:Datetime。存储最后修改的日期和时间。也由系统自动管理。帮助跟踪数据最后更新的时间。
4. active
类型:布尔值。软删除标志。当为 False 时,记录被归档并从默认视图中隐藏。员工离职时使用此标志。记录不会被物理删除。
5. company_id
类型:Many2one (res.company)。在多公司设置中,这表示员工所属的 Odoo 公司。大多数员工记录都需要此项。
6. user_id
类型:Many2one (res.users)。将员工与 Odoo 用户链接。当设置后,员工可以登录并使用 Odoo。用于门户访问、工时表和审批。
7. work_email
类型:Char。工作电子邮件地址。用于内部通信和通知。
8. work_phone
类型:Char。工作电话号码。在员工表单中显示,并用于联系工作流程。
9. mobile_phone
类型:Char。工作手机号码。通常用于短信或紧急通知。
10. department_id
类型:Many2one (hr.department)。员工所属的部门。用于组织图、报告和审批工作流程。
11. job_id
类型:Many2one (hr.job)。职位。链接到定义职位名称和空缺职位的 hr.job 模型。
12. job_title
类型:Char。自由文本职位名称。当 job_id 未设置或用于自定义标题时可以使用。
13. parent_id
类型:Many2one (hr.employee)。经理。启用员工层级。用于审批链和组织结构。
14. coach_id
类型:Many2one (hr.employee)。该员工的教练。用于绩效和发展。教练默认没有特定权限。
15. resource_id
类型:Many2one (resource.resource)。链接到资源模型。用于调度、容量规划和日历集成。
16. work_contact_id
类型:Many2one(res.partner)。工作联系人。链接到用于工作相关通信和文件的合作伙伴记录。
17. address_id
类型:Many2one(res.partner)。工作地址。链接到办公室或工作地点的res.partner记录。
18. address_home_id
类型:Many2one(res.partner)。私人地址。员工的家庭地址,而不是办公室。用于工资和紧急联系人。
19. resource_calendar_id
类型:Many2one(resource.calendar)。工作时间表。定义工作时间和工作日。用于考勤、请假和计划。
20. employee_type
类型:选择。员工类型:员工、自由职业者或实习生。必填。影响合同历史:只有员工类型应在合同之下。
21. barcode
类型:字符。徽章ID。用于考勤自助机和其他条形码扫描中的员工识别。
22. pin
类型:字符。用于在考勤应用程序的自助服务模式中签到和签出。也用于更换销售点的收银员。
23. 生日
类型:日期。出生日期。用于人力资源记录和可选的生日提醒。
24. 身份证号
类型:字符。国家身份证号码。用于人力资源和工资合规。
25. 护照号
类型:字符。护照号码。用于旅行和工作许可证跟踪。
26. 银行账户ID
类型:Many2one (res.partner.bank)。员工银行账户,用于工资支付。
27. 个人邮箱
类型:字符。员工的个人电子邮件。在工作邮箱不可用时使用。
28. 电话
类型:字符。私人电话号码。不同于工作联系信息。
29. contract_id
类型:Many2one (hr.contract)。当前合同。对活动合同的引用。
30. contract_ids
类型:One2many (hr.contract)。与该员工相关的所有合同。合同历史。
31. image_1920
类型:二进制。员工照片或头像。Odoo存储多种尺寸。用于表单、报告和目录。
32. related_partner_id
类型:Many2one (res.partner)。与该员工相关的联系人。将员工数据连接到合作伙伴模型,以便于CRM和其他模块。
33. leave_manager_id
类型:Many2one (res.users)。负责批准休假的用户。如果为空,批准将由管理员或批准者进行。
34. expense_manager_id
类型:Many2one(res.users)。负责批准费用的用户。如果为空,批准将由管理员或批准者进行。
35. timesheet_manager_id
类型:Many2one(res.users)。负责批准工时表的用户。如果为空,批准将由工时管理员或用户进行。
该模型在业务工作流程中的使用
1. 员工目录和入职
当人力资源创建新员工时,他们填写 hr.employee 记录。姓名、部门、职位、经理和联系方式。当员工获得 Odoo 访问权限时,user_id 链接被设置。
2. 考勤和时间跟踪
员工通过考勤应用签到和签出。签到和签出时间存储在 hr.attendance 中,链接到 hr.employee。条形码和 PIN 字段启用自助服务模式。
3. 请假和休假
请假请求参考员工。leave_manager_id 和 resource_calendar_id 决定谁批准以及分配多少天。
4. 薪资和合同
薪资使用 hr.employee 进行薪资结构、银行账户和合同数据。contract_id 链接到当前合同。contract_ids 保存完整历史记录。
5. 工时表和项目分配
当员工在项目上记录时间时,时间表链接到 hr.employee。timesheet_manager_id 控制审批。resource_id 链接到计划和调度工具。
开发者如何扩展该模型
开发人员使用几种模式扩展 hr.employee。Odoo 模型继承是主要机制。
模型继承
使用 _inherit = 'hr.employee' 来扩展模型。添加新字段,重写方法或添加约束。Odoo 中的继承模型将您的更改保留在单独的模块中,以便于升级。
添加字段
在您继承的模型中定义新的 Odoo 字段。使用正确的字段类型:Char、Many2one、Boolean、Integer、Text、Selection。考虑多公司环境下的公司相关字段。
Python 扩展
重写 create、write 或 unlink 来添加逻辑。使用 super() 调用原始方法。对计算字段及其依赖关系要小心。
Odoo Studio
Odoo Studio 让您可以在没有代码的情况下添加字段。适合快速自定义。对于复杂逻辑或升级,自定义模块更易于维护。
最佳实践
- 仅在员工需要 Odoo 访问时设置 user_id。并非所有员工都需要用户帐户。
- 正确使用 parent_id 层次结构。从上到下构建组织结构。
- 设置 resource_calendar_id 以确保工作时间和请假计算的一致性。
- 在构建 API 集成时,使用 XML-RPC 或 JSON-RPC API。Odoo 中的 hr.employee 模型完全作为 API 模型暴露。仔细映射外部 ID。
- 对于自定义字段,使用
x_前缀或模块前缀,以避免与未来 Odoo 版本的冲突。 - 限制为 hr.group_hr_user 的字段不应为没有 HR 访问权限的用户预取。使用字段定义上的组。
常见错误
- 创建重复的员工记录而不是搜索现有记录。使用 work_email 或 identification_id 进行去重。
- 混淆 user_id 和 related_partner_id。user_id 用于 Odoo 登录。related_partner_id 是联系人记录。
- 忘记设置 employee_type。它是必需的,并会影响合同行为。
- 覆盖核心方法而不调用 super()。这可能会破坏其他模块或未来的升级。
- 添加没有默认值的必需自定义字段。现有记录在升级时将无法通过验证。
- 将敏感的 HR 字段暴露给没有 hr.group_hr_user 的用户。对包含私人数据的字段使用组。
结论
hr.employee 模型是 Odoo HR 的核心。它存储员工数据,链接到合同、考勤和请假。理解其字段及模块如何扩展它将帮助您有效配置、定制和集成 Odoo。
无论您是映射 HR 流程的功能顾问,还是构建自定义模块的开发人员,扎实掌握 hr.employee 将节省时间并防止错误。
需要帮助进行 Odoo 实施吗?
Dasolo帮助公司实施、定制和优化Odoo。我们专注于API集成和Odoo开发。我们的团队在Odoo数据架构和模型(如hr.employee)方面拥有丰富的经验。
如果您需要Odoo实施、定制HR模块或集成方面的帮助,我们随时为您提供支持。 预约演示 以讨论您的项目。