先说结论
在 Odoo 里,Payment Term 不是“这张单多久到期”这么简单。
它真正表达的是:
这笔应收应付应该按什么节奏到期、是否拆成多期、以及如果客户提前付款,系统该按什么规则给折扣。
所以 Payment Term 是收款节奏规则,不是一个日期偏移量。
为什么它不只是“Net 30”
如果它只是“30 天后付款”,系统根本不需要:
account.payment.term- 多个 term line
- 余额行 / 百分比行 / 固定金额行
- 提前付款折扣字段
- 税口径相关选项
这些设计放在一起,已经说明 Odoo 在处理的是:
- 一次性到期
- 分期到期
- 提前付款优惠
- 对账和税务的后续影响
不是单纯改个 due date。
Payment Term Line 真正在做什么
付款条款通常不是一行规则,而是多行规则组合。
这意味着同一张发票可以被拆成:
- 一部分先到期
- 一部分月底到期
- 余款再到另一个日期
所以它不是“给整张单算一个截止日”,而是:
把一张会计单据拆成若干个有不同到期语义的部分。
这就是为什么发票有时会生成多个 receivable / payable 到期项。
提前付款折扣为什么和付款条款绑在一起
从模型字段能看出来,Odoo 把 early payment discount 放在 payment term 这一层,而不是付款动作那一层。
这很关键。
因为它想表达的不是:
- “付款时临时给你个优惠”
而是:
- “从一开始,这个应收应付就带着一套提前付款激励规则”
也就是说,折扣不是例外,而是合同条件的一部分。
为什么这会影响税和会计口径
源码里你会看到类似:
early_discountdiscount_percentageearly_pay_discount_computation
这说明 Odoo 不只是关心少收了多少钱,还关心:
- 这个折扣在会计上怎么体现
- 税基准要不要跟着变
- 是“总额打折”还是“税前/税后”某种口径处理
这就是为什么提前付款折扣看起来像销售优惠,实际上会落到会计和税务语义里。
为什么很多人会觉得对账结果怪怪的
因为一旦你启用了:
- 分期付款条款
- 提前付款折扣
那发票和付款之间就不再是“整张单 vs 一笔钱”这么直白。
系统要判断:
- 是正常付款
- 是部分付款
- 是享受了提前付款折扣的付款
- 剩余差额到底该记成什么
所以你觉得“明明没全收,怎么像结清了”或“怎么自动出了差额”,很多时候是 Payment Term 逻辑在发挥作用。
新手最容易误解的 4 件事
1. 以为付款条款只决定 due date
其实它还决定应收应付拆分方式。
2. 以为提前付款折扣只是销售优惠
实际上它会影响会计和税务口径。
3. 以为一张发票只能对应一个到期项
分期条款下可以有多个到期项。
4. 以为付款条款和对账无关
后续 residual、付款匹配和差额解释都可能受它影响。
一句话记忆法
Payment Term 不是“多久后付款”,而是“这笔应收应付按什么节奏结清,以及提前付时该怎么奖励和入账”。
DISCUSSION
评论区