在Odoo里面,默认提供了ir.sequence
这样一个序号生成模块
创建编号
打开xml
文件,加入如下代码:
1 | <record id="business_order_number" model="ir.sequence"> <field name="name">Order Number</field> <field name="code">business.order</field> |
参数说明
name
- 名字,随便叫什么都行code
- 调用生成编码的 Key,需保证唯一性prefix
- 前缀,可以是固定的字面量也可以是组合参数suffix
- 后缀padding
- 序列递增的位数1位1
、2位01
、3位001
调用
1 | class Example(models.Model): ''' Example ''' _name = "Example.example" number = fields.Char(string='Number', required=True, copy=False, readonly=True, index=True, default=lambda self: _('New')) # 订单号 def create(self, vals): '''保存方法重写''' if not vals.get('number', False) or vals['number'] == _('New'): vals['number'] = self.env['ir.sequence'].next_by_code('business.order') or '/' print vals['number'] return super(SaleOrder, self).create(vals) |
单据格式
PO-
+ 年月日 + 自定义位数的顺序编号PO-20180621001
PO-180621001