Odoo17.0发票生成规则浅析及基于日记账的发票生成设置
在16.0及之前版本的发票号码使用序列对象来实现,17.0的序号生成方式发生了改变,本文基于17.0,其他版本请参考相关资料。
odoo17 发票号码的生成规则
默认情况下,我们在客户发票的日记账中可以看到关于发票号码生成规则的设置:
默认情况下发票的编码规则是以INV开头形式如下的编号:
INV/2019/0001
新生成的编号会根据当前数据中的最大的序列规则+1的方式递增。比如当前的发票的号码是INV/2019/001,那么新生成的号码将是INV/2019/002。
如果我们修改了发票号码的前缀,比如改成了FACT,即数据库中当前拥有的发票号码是INV/2019/001,FACT/2019/001,那么系统下一个生成的发票号码将是FACT/2019/002。
这可能符合我们的预期,也可能不符合我们的预期。
下面我们来详细看一下这个问题,首先我们在客户发票日记账中新建两个发票:
然后我们把发票INV/2024/00002重命名为SINV/2024/00001:
此时我们的发票中既有INV又有SINV,那么当我们继续生成新的发票时,生成的发票将是SINV/2024/00002。
这说明发票生成的规则确实是会根据最近生成的序列进行递增。
如果我们想要把序列生成的规则跟日记账绑定,不希望它根据当前的这种半智能式的规则进行生成,该怎么办呢?
基于日记账代码的生成规则
为了解决这个问题,我们在解决方案中增加了根据日记账绑定的功能。首先,我们在设置-欧姆中激活财务拓展模块:
激活之后,我们在设置-会计中勾选基于日记账的发票编码选项:
然后我们再去创建发票就会发现新生成的发票编码始终跟日记账相关的代码序列:
结论
odoo17.0摒弃了之前使用的序列生成的方式,虽然解决了之前可能存在的可能漏号的弊端,但是也可能引发新的问题。不过碰到问题不要害怕,【欧姆网络】在您身边~