Odoo中文网|Odoo实施培训
标题: odoo根据当前时间生成序列号 [打印本页]
作者: 磨叽什么 时间: 2018-6-25 09:05
标题: odoo根据当前时间生成序列号
odoo在创建一个新的订单或者创建一个新的采购单等涉及到编号的记录的时候,可以根据当前时间自动生成生成这个编号
比如现在已经有一个Fund的model:
[python] view plain copy
- class Fund(models.Model):
- _description = 'Fund'
- _name = 'XXX.fund'
- name = fields.Char(string=u"编号")
现在想在创建一个新的Fund时能自动生成一个编号,这个字段为name。
首先,创建一个fund_sequence_data.xml的文件并放入data文件夹下,及主要在_manifest_.py文件中加入这个新xml文件
[html] view plain copy
- <?xml version="1.0" encoding="utf-8"?>
- <odoo>
- <data>
- <record id="seq_sale_order" model="ir.sequence">
- <field name="name">XXX fund</field>
- <field name="code">XXX.fund</field>
- <field name="prefix">A%(year)s%(month)s%(day)s</field>
- <field name="padding">4</field>
- <field name="company_id" eval="False"/>
- </record>
-
- </data>
- </odoo>
以上,<field name="prefix">A%(year)s%(month)s%(day)s</field> 表示:
4 位数字表示的当前年份:%(year)s |
两位数的当前年份:%(y)s |
月份:%(month)s |
日: %(day)s |
然后,在model下加如一下方法:
[python] view plain copy
- @api.model
- def create(self,vals):
- if not vals.get('name'):
- vals['name'] = self.env['ir.sequence'].next_by_code('XXX.fund') or '/'
- print vals['name']
- return super(Fund, self).create(vals)
自此,创建一个新纪录时,不用填写编号那个字段,保存时会看到编号会自动生成,编号格式类似: A201701200001
作者: 磨叽什么 时间: 2018-6-26 13:50



欢迎光临 Odoo中文网|Odoo实施培训 (http://www.chinaodoo.net/) |
Powered by Discuz! X3.2 |