为了我们插入数据的效率,我们会想到自动生成序列号。那么怎么生成预想的序列号呢?下面我们就来看看。
1.data/data.xml
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="0">
<record id="yhb_gathering_no" model="ir.sequence">
<field name="name">收款单号</field>
<field name="code">yhb.gathering</field>
<field name="prefix">SKD%(year)s%(month)s%(day)s</field>
<field name="padding">6</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>
关键点解释:
noupdate="0"
:一般测试的时候都是用noupdate=“0”,如果noupdate=“1”,则模块只会被更新一次,如果之后调试它,则不会看到实时效果。
name="code"
:后面写模块_name的名字。
name="prefix"
:表示自定义的前缀是什么。
name="padding"
:表示有几位数,如果输入4,则第一位数是“前缀+0001”。
name="company_id"
:因为任何字符串都是有值,都是真值,而我们需要False则需要用eval来解析。
2.model.py里写入方法:
@api.model
def create(self, vals):
"""
自动生成单号
:return:
"""
vals['name'] = self.env['ir.sequence'].next_by_code('yhb.gathering') or ''
return super(YhbGathering, self).create(vals)
其中:
yhb.gathering
:是_name定义的值。
YhbGathering
:模块的类名。
其他地方不进行修改的话,可以让name自动获的单号。打印名称是:
SHD年月日000001
在__manifest__.py中引入data.xml文件。
快去测试一下,在页面上看看是不是你想要的结果,欢迎大家指教。