序言:时间是我们最宝贵的财富,珍惜手上的每个时分
业务单据编号是企业运营中必不可少的一部分,那么在odoo中如何进行单据编号或者说某指定字段自动编号呢
直接上示例代码:
一:在py文件中新建一个业务类 TestOrder
class TestOrder(models.Model):
_name = 'test.order'
number = fields.Char('单据号')
@api.model
def create(self, vals):
if not vals.get('number'):
vals['number'] = self.env['ir.sequence'].next_by_code('test.order.sequence') or '/'
return super(TestOrder, self).create(vals)
此处我们重写了 create方法,注意 next_by_code()方法中的 test.order.sequence中,我们需要在后面的data数据中声明他才行。
二:声明编码规则
新建一个 xml文件如下
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="seq_test_order" model="ir.sequence">
<field name="name">测试单编号</field>
<field name="code">test.order.sequence</field>
<field name="prefix">TO%(year)s%(month)s%(day)s</field>
<field name="padding">3</field>
</record>
</data>
</odoo>
我们可以看到 test.order.sequence,这个变量我们只需要与py文件中的next_by_code变量相同即可
prefix 为编号方式,TO + 年月日
padding 为编号数字长度
创建单据保存后的第一个编号即为 TO001xx年xx月xx日
最后将xml文件添加至于manifest文件中。完成!
承接odoo二次开发.部署实施.
技术交流请添加 543127346 (穆尘)