在开发模块的时候,我们有时需要像销售采购那些订单一样,在单据头那里创建一个序列号,
odoo是如何在每次建单的时候这样自动地生成一个单据编号呢?
在odoo中编号所对应的模型是ir.sequence
方式一:通过界面创建
激活开发者模式,依次点击 技术>>序号
方式二:通过xml创建:
记得在__manifest__文件中导入
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="sequence_confirm_price" model="ir.sequence">
<field name="name">Product Confirm Price</field>
<field name="code">product.confirm.price</field>
<field name="prefix">PR/%(y)s/%(month)s/</field>
<field name="padding">5</field>
<field name="number_next">1</field>
<field name="number_increment">1</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>
重写create方法为编号字段赋值:
@api.model
def create(self, vals):
seq_date = fields.Datetime.context_timestamp(self, fields.Datetime.to_datetime(vals['date']))
vals['name'] = self.env['ir.sequence'].next_by_code(
'product.confirm.price', sequence_date=seq_date) or _('New')
return super(ProductConfirmPrice, self).create(vals)