odoo根据当前时间生成序列号

odoo在创建一个新的订单或者创建一个新的采购单等涉及到编号的记录的时候,可以根据当前时间自动生成生成这个编号


比如现在已经有一个Fund的model:

class Fund(models.Model):
    _description = 'Fund'
    _name = 'XXX.fund'
    name = fields.Char(string=u"编号")

现在想在创建一个新的Fund时能自动生成一个编号,这个字段为name。

首先,创建一个fund_sequence_data.xml的文件并放入data文件夹下,及主要在_manifest_.py文件中加入这个新xml文件



    
        
            XXX fund
            XXX.fund
            A%(year)s%(month)s%(day)s
            4
            
        

    


以上,A%(year)s%(month)s%(day)s 表示:

4 位数字表示的当前年份:%(year)s
两位数的当前年份:%(y)s
月份:%(month)s
日: %(day)s

然后,在model下加如一下方法:

@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


你可能感兴趣的:(odoo)