企业 项目工时表

Odoo 企业版工时表格为什么不是“填完再批量批准”:验证锁定、计时器与合并边界讲透

timesheet_grid 的关键不在 grid 视图本身,而在 validated 锁、last_validated_timesheet_date、timer 保护和 merge 规则一起维护工时真相。

企业 项目
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 5 阅读

很多人第一次用企业版 timesheet grid,会觉得它只是“把工时录入做成了 Excel 一样的表格”。但真正让这个模块值钱的,不是 grid,而是 validatedlast_validated_timesheet_date、timer 和 merge 规则共同构成的控制网。

主要参考:

  • enterprise/timesheet_grid/models/account_analytic_line.py
  • enterprise/timesheet_grid/models/timesheet_grid_mixin.py

一、validated 不是勾选框,而是可编辑性的分界线

源码里一旦工时被验证,通过普通方式修改、删除,甚至继续用 timer 追记,都会受到限制。因为对企业项目来说,工时被批准后就不再只是员工个人记录,而可能已经进入成本、审批和计费链路。

二、last_validated_timesheet_date 让“时间”也变成边界

很多系统只锁具体记录,Odoo 企业版还会记员工最近一次被验证的工时日期。这样设计的意义是:即使不是同一条记录,只要发生在已验证边界之前,系统也会阻止继续倒填或补删。这对防止月末回头改工时非常有效。

三、timer 与 validation 是强耦合关系

源码里能看到,验证工时前后会主动停止相关 timer;已验证工时不能继续跑 timer,也不能把运行中的 timer 安在被锁区间上。换句话说,计时器不是一个独立小工具,它必须服从工时审批边界。

四、merge 只允许在合适对象上发生

_get_timesheets_to_merge() 等逻辑表明,只有未验证、属于项目的工时才适合合并。因为一旦进入验证或计费语境,随意合并记录就会破坏审计和回溯能力。

五、实施建议

  1. 明确谁能验证、谁只能录入,别让项目经理和普通成员共享同一权限口径。
  2. 月结前后统一执行验证,不要半个月度、半自由录入并存。
  3. 培训时重点讲“为什么不能改”,不要只告诉用户哪里点不了。

六、结论

timesheet grid 的价值,不是把工时录得更快,而是让“录入、验证、计时、合并”四件事最终指向同一份可信工时数据。

DISCUSSION

评论区

想参与讨论?先 登录 再发表评论。
还没有评论,你可以成为第一个留言的人。