Odoo中文网|Odoo实施培训

 找回密码
 立即注册
搜索
热搜: Odoo OpenERP 实施
查看: 5766|回复: 1

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

[复制链接]

68

主题

96

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
发表于 2018-6-25 09:05:19 | 显示全部楼层 |阅读模式

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
回复

使用道具 举报

68

主题

96

帖子

456

积分

中级会员

Rank: 3Rank: 3

积分
456
 楼主| 发表于 2018-6-26 13:50:11 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|技术支持|开发手册|Odoo中文网-远鼎旗下odoo培训网站 ( 苏ICP备15039516号 )

GMT+8, 2024-4-17 08:01 , Processed in 0.013309 second(s), 9 queries , Xcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表