企业 税务

Odoo 企业版 Tax Return 状态机为什么不是“review 完就提交”:review、submit、pay 与 amount-to-pay 分工讲透

基于 account return 状态机测试,讲清不同 states_workflow 模式下 review、submit、pay 为何不总是全都有。

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

不少团队以为 Tax Return 的标准流程一定是“审核 → 提交 → 付款”。但企业版 account.return 明确允许不同 return type 走不同 workflow,关键不在步骤看起来完整,而在每一步是否真的有业务意义。

参考入口:

  • enterprise/account_reports/tests/test_account_returns.pytest_state_progression
  • enterprise/account_reports/models/account_return.py

一、workflow 不是写死的,return type 决定状态路径

测试里至少覆盖了几种模式:

  • only pay
  • only review
  • review + submit
  • review + submit + pay(或带支付结果收敛)

这说明 Odoo 不把所有国家、所有申报表的后续动作强塞进同一模板里。

二、review 的意义在于生成并锁定工作文件,不只是点通过

action_validate() 往往伴随检查、附件生成、锁定动作或 closing context 准备。所以 review 不是“领导看过了”,而是申报资料从可编辑口径转入可提交口径。

三、submit 不一定等于下一步一定是 paid

对某些 workflow,action_submit() 后会进入 submitted;对另一些模式,如果没有实际待付金额或该类型不需要独立支付阶段,状态可能直接收敛到完成态。测试 test_account_return_state_review_submit_pay 还特地覆盖了有实际税额待付时,支付向导如何接管最后一步。

四、pay 动作的前提是 amount-to-pay 真的存在

Odoo 不是为了流程完整而硬加付款步骤。只有 return 计算出可支付金额、并且 workflow 需要这一阶段时,action_pay() 和支付向导才有意义。否则“已提交”就可能已经是流程终点。

五、实战建议

  • 上线前按国家/报表类型确认 states_workflow,不要默认套一个全球流程。
  • 看到某类 return 没有 submit 或 pay 按钮,先查 workflow 配置和 amount-to-pay 语义。
  • 培训财务时,强调状态机代表的是法定动作分层,不是 UI 缺按钮。

六、结论

Tax Return 的 workflow 设计,核心不是把 review、submit、pay 全凑齐,而是让每一步都对应真实的合规动作。没有金额、不需要支付、不要求单独提交时,少一步反而更准确。

DISCUSSION

评论区

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