在Odoo里面,默认提供了ir.sequence这样一个模块,他的作用就是一个序号生成器。在这次的项目中刚好用到了,这里就记录一下。
创建序号
打开 data/data.xml 写入如下代码:
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="True">
<record id="contract_number" model="ir.sequence">
<field name="name">预算编号</field>
<field name="code">budget.number</field>
<field name="prefix">HT%(year)s%(month)s%(day)s</field>
<field name="suffix">号</field>
<field name="padding">1</field>
</record>
</data>
</odoo>
参数说明:
- name - 名字,随便叫什么都行
- code - 调用生成编码的 Key,需保证唯一性
- prefix - 前缀,可以是固定的字面量也可以是组合参数
- padding - 序列递增的位数
调用
将data/data.xml加入到__manifest__.py的data列表中。
budget_num = fields.Char(string=u'预算编号', copy=False, readonly=True, default=lambda x: _('New'))
@api.model
def create(self, vals):
""" 保存方法重写 """
if not vals.get('name', False) or vals['name'] == _('New'):
vals['budget_num'] = self.env['ir.sequence'].next_by_code('budget.number')
return super(Budget, self).create(vals)
文章评论