项目盈利

Odoo 项目盈利为什么不只是“收入减成本”:Billable、To Invoice、Invoiced 和利润面板到底怎么来的

很多人看 Odoo 项目利润面板时只想要一个总数,但源码里盈利其实来自 billable 工时、待开票、已开票和成本归集的组合。本文把它讲透。

Odoo 开发 会计 项目
进阶 开发者 1 分钟阅读
0 评论 0 点赞 0 收藏 6 阅读

先说结论

很多人打开 Odoo 项目的 Profitability 面板,只会盯一个问题:

  • 这个项目赚没赚钱

但系统真正做的不是一条简单减法,而是:

把项目相关的成本、可计费工时、待开票金额、已开票收入等多种口径同时汇总,再形成一张经营视图。

所以项目盈利不是“财务最后算一下”,而是项目过程中的实时经营归集。


为什么它不是一个总字段

project_project.py 的源码看,官方用了整套方法:

  • _get_profitability_items()
  • _get_profitability_values()
  • action_profitability_items()
  • analytic_account_balance

这说明 Odoo 不是在项目表上放一个“利润”数字就结束,而是在做:

  • 成本项归集
  • 收入项归集
  • to bill / to invoice / invoiced / billed 等口径拆分

也就是说,利润面板本质上是一份动态经营分解表


billable 为什么很关键

项目里的很多工作不是自动等于收入。

只有当项目、任务、工时和销售链条具备 billable 语义时,这些工作才可能进入:

  • 待开票
  • 已开票
  • 收入预测

所以 billable 不是一个好看的标签,而是在回答:

这些项目工作能不能合法地转成销售收入。

如果不能 billable,它可能依然是成本,但不会自然变成收入。


to invoiceinvoiced 为什么不能混

很多人会把这两个口径看成一回事。

但它们差别很大:

  • to invoice:业务上已经可以开票,但还没真正开
  • invoiced:已经形成正式销售 / 会计结果

这两个数字同时存在,正说明 Odoo 关心的是项目经营进度,而不是只看结果。

换句话说:

利润面板既看“已经落地多少”,也看“还在路上多少”。


为什么成本不只来自工时

虽然很多项目利润最直观来自 timesheet,但 Odoo 的 profitability 设计并不只盯工时。

源码和项目说明都在强调,它还可能汇入:

  • 采购单
  • 供应商账单
  • 发票
  • 工时
  • ticket / 服务相关链路

所以项目盈利不是“工时乘单价”这么窄,而是一个更完整的项目经营口径。


为什么 analytic account 还是底座

前面项目与分析账户的文章已经讲过归集逻辑,这里更进一步:

  • 如果没有分析账户归集
  • 成本和收入就很难稳定地汇到同一个项目口径下

所以 profitability 面板看起来像项目功能,底层其实仍然站在 analytic account 这块地基上。


一句话记忆法

项目盈利不是“收入减成本”四个字那么简单,而是“哪些工作能计费、哪些还待开票、哪些已入账、哪些成本已归集”的一张经营总览。

DISCUSSION

评论区

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