def create(self,cr,uid,vals,context=None):
if context is None:
context ={}
print 111111
print vals
[]
if vals.get('lx_origin', '/') == '/' :
vals['lx_origin'] = self.pool.get('ir.sequence').get(cr, uid, 'demo.contract.lx', context=context) or '/'
if vals['lx_origin'] and vals['lx_type']=='3':
vals['lx_origin']=vals['lx_origin']+'S' elif vals['lx_origin'] and vals['lx_type']=='4' :
vals['lx_origin']=vals['lx_origin']+'S(LX)' elif vals['lx_origin'] and vals['lx_type']=='5' :
vals['lx_origin']=vals['lx_origin']+'C' elif vals['lx_origin'] and vals['lx_type']=='6' :
vals['lx_origin']=vals['lx_origin']+'C(LX)'
else:
vals['lx_origin']=vals['lx_origin'] if vals['lx_origin'] and vals['display_name']==14:
vals['lx_origin']='HL'+vals['lx_origin'] elif vals['lx_origin'] and vals['display_name']==19:
vals['lx_origin']='TZRL'+vals['lx_origin'] elif vals['lx_origin'] and vals['display_name']==18:
vals['lx_origin']='JT'+vals['lx_origin'] elif vals['lx_origin'] and vals['display_name']==17:
vals['lx_origin']='YC'+vals['lx_origin'] elif vals['lx_origin'] and vals['display_name']==22:
vals['lx_origin']='XN'+vals['lx_origin'] elif vals['lx_origin'] and vals['display_name']==3 or vals['display_name']==13 or vals['display_name']==11:
vals['lx_origin']='WQ'+vals['lx_origin'] else:
vals['lx_origin']=vals['lx_origin'] new_id=super(demo_contract_lx,self).create(cr,uid,vals,context=context)
return new_id   WQLX2017-070S(LX)
def create(self, cr, uid, vals, context=None):
if context is None:
context = {}
if vals.get('name', '/') == '/':
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'mrp.production.report') or '/'
ctx = dict(context or {}, mail_create_nolog=True)
new_id = super(mrp_production_report, self).create(cr, uid, vals, context=ctx)
bgdate=vals.get('date')
name=vals.get('name')
sql="update mrp_production_report_line set ldate='%s',lrname='%s' where line_id=%d"%(bgdate,name,new_id)
cr.execute(sql)
return new_id
  第三种:  TZRL2017-001SL 
# 新加的地方
def create(self, cr, uid, vals, context=None):
context = context or {} partner_id = vals.get('display_name')
print partner_id # 根据公司来生成不同的编号
if partner_id:
vals['lx_origin'] = self.get_lx_sequence(cr,uid,partner_id)
else:
raise osv.except_osv(u'请先选择公司!') new_id=super(demo_contract_lx, self).create(cr, uid, vals, context)
return new_id def create_new_sequence(self,cr,uid,code,partner_id):
#创建编码原则
ir_sequence_type_obj=self.pool.get('ir.sequence.type')
ir_sequence_type_obj.create(cr,uid,{'name':code,'code':code})
values={}
values['name']=code
values['code']=code
values['implementation']='no_gap'
values['active']=True
values['prefix']="%(year)s-"
values['number_next']=1
values['number_next_actual']=1
values['number_increment']=1
values['padding']=3
ir_sequence_obj=self.pool.get('ir.sequence')
ir_sequence_obj.create(cr,uid,values) def get_lx_sequence(self,cr,uid,partner_id,context=None): code="demo_contract_lx_no_%d" %(partner_id) no=self.pool.get('ir.sequence').get(cr, uid, code, context=context) if no==False:
self.create_new_sequence(cr,uid,code,partner_id)
no=self.pool.get('ir.sequence').get(cr, uid, code, context=context)
partner_ids=self.pool.get('res.partner').search(cr,uid,[('id','=',partner_id)])
partner_obj=self.pool.get('res.partner').browse(cr,uid,partner_ids)
no = "%s%s" %(partner_obj.code,no)
return no

所用方法:
def get(self, cr, uid, code, context=None):
company_ids = self.pool.get('res.company').search(cr, uid, [], context=context) + [False] ids = self.search(cr, uid, ['&', ('code', '=', code), ('company_id', 'in', company_ids),('active','=',True)]) # assert len(ids)==1
ir_seq_obj=self.browse(cr,uid,ids,context)
implementation=ir_seq_obj.implementation if implementation=='yyrnum': #表示编号用年月日+流水号 那么只输入前缀和后缀即可
oldnyr=ir_seq_obj.nyr #现在模块在使用的年月日
nowyyr=datetime.datetime.now().strftime("%Y%m%d") #当前年月日
prefix=ir_seq_obj.prefix if ir_seq_obj.prefix else ''
suffix=ir_seq_obj.suffix if ir_seq_obj.suffix else ''
padding=ir_seq_obj.padding if oldnyr==nowyyr: #如果序列规则保存的日期和当前的是一样,那么说明是同一天,反之不是同一天,那么就修改保存的日期以及序列从1开始
yyrnext_num=ir_seq_obj.yyrnext_num #序列号
#修改下一个号码
self.write(cr,uid,ids,{'yyrnext_num':yyrnext_num+1})
else:
yyrnext_num=1
self.write(cr,uid,ids,{'nyr':nowyyr,'yyrnext_num':2}) return prefix+nowyyr+'%%0%sd' % padding % yyrnext_num+suffix
else:
return self.get_id(cr, uid, code, 'code', context)

odoo创建编号的更多相关文章

  1. Odoo创建基础模块和相关内容

    Odoo创建模块 这里我先引用一下几篇文章,这里完整的实现了一个odoo的模块创建demo https://segmentfault.com/a/1190000014047552 https://se ...

  2. 记一次odoo创建新的模块时,但是在odoo web界面找不到应用的案例

    原因就是在odoo.conf配置文件中没有说明  模块查找的路径

  3. Odoo创建数据库时出现的问题 DataError: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)

    解决方案: 执行如下指令进入PostgreSQL控制台: sudo -u postgres psql postgres 然后在PostgreSQL控制下按顺序执行如下指令: update pg_dat ...

  4. Java 在Word中创建多级项目符号列表和编号列表

    本文分享通过Java程序代码在Word中创建多级项目符号列表和编号列表的方法.程序运行环境如下: IntelliJ IDEA 2018(JDK 1.8.0) Word 2013 Word Jar包:F ...

  5. odoo视图入门学习- tree视图的使用

    上一篇内容:如何快速在odoo中创建自己的菜单 前言 上面的内容我们已经学会了如何去创建odoo的菜单,下面我们要学习的是odoo的基础视图tree视图,我们的目标是实现型号管理的列表页面 创建mod ...

  6. Odoo 10的Linux安装

    CentOS7安装Odoo10流程如下一.更新系统#yum clean all#yum update 二.安装 PostgreSQL 1.安装数据库#yum install postgresql po ...

  7. 《Odoo开发指南》精选分享—第1章-开始使用Odoo开发(1)

    引言 在进入Odoo开发之前,我们需要建立我们的开发环境,并学习它的基本管理任务. 在本章中,我们将学习如何设置工作环境,在这里我们将构建我们的Odoo应用程序.我们将学习如何设置Debian或Ubu ...

  8. 2.Odoo产品分析 (一) – 一切为零

    查看Odoo产品分析系列--目录 1. 默认数据库 声明在先  本系列文档(Odoo产品分析)整理来自本人对该ERP的理解,并结合文档Working-with-Odoo-10-Second-Editi ...

  9. macOS Sierra 10.12.6 odoo 10.0 开发环境配置

    参考了网上的一些教程,将最终过程记录一下,其中需要的一些程序,我已经放到百度网盘: https://pan.baidu.com/s/1boKHSTL 1.抹盘安装macOS Sierra 10.12. ...

随机推荐

  1. JSP基本语法总结【1】(jsp工作原理,脚本元素,指令元素,动作元素)

    时隔半年,回头对jsp复习整理一下,温故而知新. jsp工作原理: jsp服务器管理jsp页面分两个阶段:转换阶段(translation phase)和执行阶段(execution phase). ...

  2. oracle学习之pl/sql使用==转载

    PLSQL循序渐进全面学习教程(全):https://blog.csdn.net/spark998/article/details/2065269

  3. .NET中低版本程序调用高版本DLL

    在.NET项目开发中,有时需要对旧的程序进行二次开发,但是有些DLL是高版本的,如果对旧程序升级高版本,则需要改动的地方比较多,在项目比较急,开发时间短的情况下,可以通过下面方法让低版本程序调用高版本 ...

  4. jQuery表格排序(tablesorter)

    1.在html页面的head中引用 <script src="/static/Bootstrap/js/jquery/jquery.tablesorter.min.js"&g ...

  5. wc 命令使用说明

    wc 命令 使用说明 wc 命令还是很是简单的,通过 man 命令,可以见到可以选择的选项: wc option file 并且 wc 命令支持 管道操作 其中较为常用的命令选项 -c 字符的个数 - ...

  6. [IDEA_6] IDEA 集成 Python

    0. 说明 在 IDEA 中集成 Python 1. IDEA 集成 Python 1.1 Ctrl + Alt + S 进入设置 依次选中 Settings  -->  Plugins  -- ...

  7. SQL SERVER解析Json

    外包的项目,有很多信息存储在JSON中,无论是查询还是修改信息都十分麻烦.找了一些实用的SQL Function去解析,并附修改例子. 使用过程: 1. 需要在SQL新建自定义类型 table: Hi ...

  8. Linux运维之——每日小技巧,使用awk命令截取每行的指定列数据

    获取/etc/passwd目录下的UID值小于10的数,并输出第一.三列 [root@:vg_adn_tidbCkhsTest:172.31.30.62 ~]#cat /etc/passwd | aw ...

  9. python中判断实例可迭代地几种方式

    1. 利用 __iter__内建属性 if hasattr(obj, '__iter__') : print 'iterable' 这种方法不能检测字符串,如:hasattr('', '__iter_ ...

  10. 《面向对象程序设计》六 GUI

    git传送门 我这无药可救的拖延症和懒癌orz 主界面 文件读取界面 提示界面 最初选择vs+mfc,发现许多自动生成的代码读不懂(不须懂),尝试qt后感觉人生迎来了希望,看了推荐的视频与教程稍微了解 ...