Odoo 的单据编号到底能不能按年、月、日重新开始?我来一探究竟
在企业管理系统里,单据编号往往不仅是识别编码,还常常承载着流程管理、财务核对、审计追踪等作用。
那么问题来了:在 Odoo 里,我们能不能让单据编号每年、每月、甚至每天自动重新编号?
很多第一次接触 Odoo 的人常常会问:
-
- 销售订单(SO)能不能每年重新编号,从 SO/2025/001 开始?
- 发票(Invoice)编号可不可以按月份重置?
- 有没有办法做到每天从 1 开始编号,来实现某些行业的流水号需求?
- Odoo 17 到底支持哪些模式?是不是还需要写代码?
这些疑问在社区、论坛中反复出现,所以我决定针对 Odoo 17 整理一篇完整解读。
Odoo 能按年 / 月 / 日重置编号吗?
答案是 可以!并且完全内置,无需开发!
Odoo 中所有编号的核心机制都是 Sequence(序列)。
只要打开开发者模式,就能找到这些序列,并且序列本身支持以下重置周期:
- Yearly(按年)
- Monthly(按月)
- Daily(按日)
- No reset(不重置)
也就是说,Odoo 原生就能做到:
-
- 每年从 1 重新开始编号
- 每月从 1 重新开始编号
- 每天从 1 重新开始编号
- 永不重置,连续累计增长
那是不是所有单据都能这样操作呢?
那为什么在某些界面,比如发票,看不到编号设置?
这里很多人都会困惑:
“销售订单我好像能找到序列,那发票的序列在哪?怎么 UI 里没有?”
其实原因是:
- Odoo 不会把序列放在单据界面给你改
- 但所有单据的编号都依然来自序列(ir.sequence)
所以发票、账单、会计分录虽然前端没有入口,但底层仍然是用同样的序列机制控制的。
换句话说:
找不到序列,并不代表它不存在。
找不到 UI 入口,并不代表不能修改。
只要进入开发者模式 →「设置 → 技术 → 序列」,就能找到所有单据的编号规则。
使用序列还能做到什么?
很多人不知道 Odoo 的序列其实非常强大,它不仅能重置,还能通过变量自定义编号格式。
比如你可以设置前缀为:
-
- SO/%(year)s/
- INV/%(year)s/%(month)s/
- WH/%(year)s/%(month)s/%(day)s/
- %(company_id)s/%(year)s/%(month)s/N°
甚至还可以自定义数字长度,例如:
-
- 001、0001、000001
这样便能构建严谨、兼容审计且具有辨识度的编号体系。
需要注意的几个坑
1. 修改序列不会影响历史单据
如果业务上希望“重新整理历史编号”,那几乎都是不推荐甚至不允许的(尤其会计模块)。
2. 多公司环境中,每家公司序列独立
你需要分别调整。
3. 某些模块修改编号可能有法律影响
例如发票在某些国家法规严格限制,不允许随意变更编号格式。
那么,Odoo 的单据编号应该怎么规划?
这是企业落地时最常出现的疑惑之一:
- 是否要按年度重置?
- 是否需要带月份?
- 是否每个业务类型(如国内 vs 国外订单)要分序列?
- 是否需要加入公司代码?
这些都要结合业务场景、审计规则和跨公司流程来决定。
结语:Odoo 的序列非常强大,但你需要正确使用它
如果你正在规划 Odoo 的编号体系,不妨问问自己:
- 我们的编号真的需要每年重置吗?
- 是否有会计合规要求?
- 业务人员是否需要从编号推断时间?
- 多公司情况下是否要统一格式?
想清楚这些问题,再利用 Odoo 序列的灵活性,你几乎能实现任何编号规则。
