odoo12:自动生成序列号方法

为了我们插入数据的效率,我们会想到自动生成序列号。那么怎么生成预想的序列号呢?下面我们就来看看。
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文件。

快去测试一下,在页面上看看是不是你想要的结果,欢迎大家指教。

猜你喜欢

转载自blog.csdn.net/qq_43239192/article/details/86632302