企业 项目计费

Odoo 企业版已验证工时计费为什么不是“勾选 approved only”:portal 可见性、delivered hours 与发票域讲透

sale_timesheet_enterprise 真正改变的不是一个设置项,而是已验证工时对 delivered quantity、portal 展示和 invoice domain 的全链路影响。

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

在项目服务计费里,“只给客户看已批准工时”听起来像一个很普通的设置。但 sale_timesheet_enterprise 的实现告诉你,这根本不是前台筛选,而是一条横跨工时、销售行、客户门户和发票取数的主链路。

主要参考:

  • enterprise/sale_timesheet_enterprise/models/account_analytic_line.py
  • enterprise/sale_timesheet_enterprise/models/sale_order_line.py
  • enterprise/sale_timesheet_enterprise/models/project_task.py

一、approved only 会改 delivered quantity 的计算域

sale_order_line.py_timesheet_compute_delivered_quantity_domain() 会在配置为 approved 时,把 validated = True 作为 delivered hours 的取数条件。也就是说,销售行上看到的已交付工时,已经不是“录了多少”而是“批准了多少”。

二、门户可见性也受同一口径控制

account_analytic_line.pyproject_task.py 都会检查配置参数。如果公司设置为只向客户展示已验证工时,那么 portal 读取任务工时、展示列表甚至进度口径都会一起收紧。企业版没有把“内部批准口径”和“外部展示口径”分裂开,这是非常重要的设计。

三、发票取数同样沿用这个边界

account_move_line.py 一侧也会收缩发票所关联的 timesheet domain。这样做的目的非常直接:既然公司规定只有已批准工时可计费,那么 delivered、portal、invoice 三处必须是同一答案,否则用户一定会在客户投诉时崩溃。

四、最容易误解的点

  • approved only 不是报表过滤器。 它会改核心业务域。
  • 客户看不到不代表不计费。 在企业版里,两者通常被同一配置联动。
  • 工时验证是项目经理内部动作。 一旦连接销售与门户,它就不再只是内部动作。

五、实战建议

  1. 上线前先决定组织到底按“全部工时计费”还是“批准后计费”,不要模棱两可。
  2. 用真实项目测试同一工时在内部、SO、portal、invoice 四处是否一致。
  3. 若客户抱怨门户工时与内部不一致,先查配置参数 sale.invoiced_timesheet 与工时验证状态。

六、结论

企业版已验证工时计费的重点,不是多了一个开关,而是系统用这个开关统一了交付、计费和客户可见性三套口径。

DISCUSSION

评论区

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