1. 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'
  2.  
  3. elif vals['lx_origin'] and vals['lx_type']=='4' :
    vals['lx_origin']=vals['lx_origin']+'S(LX)'
  4.  
  5. elif vals['lx_origin'] and vals['lx_type']=='5' :
    vals['lx_origin']=vals['lx_origin']+'C'
  6.  
  7. elif vals['lx_origin'] and vals['lx_type']=='6' :
    vals['lx_origin']=vals['lx_origin']+'C(LX)'
    else:
    vals['lx_origin']=vals['lx_origin']
  8.  
  9. if vals['lx_origin'] and vals['display_name']==14:
    vals['lx_origin']='HL'+vals['lx_origin']
  10.  
  11. elif vals['lx_origin'] and vals['display_name']==19:
    vals['lx_origin']='TZRL'+vals['lx_origin']
  12.  
  13. elif vals['lx_origin'] and vals['display_name']==18:
    vals['lx_origin']='JT'+vals['lx_origin']
  14.  
  15. elif vals['lx_origin'] and vals['display_name']==17:
    vals['lx_origin']='YC'+vals['lx_origin']
  16.  
  17. elif vals['lx_origin'] and vals['display_name']==22:
    vals['lx_origin']='XN'+vals['lx_origin']
  18.  
  19. 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']
  20.  
  21. else:
    vals['lx_origin']=vals['lx_origin']
  22.  
  23. new_id=super(demo_contract_lx,self).create(cr,uid,vals,context=context)
    return new_id
  24.  
  25.   WQLX2017-070S(LX)
  1. 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
  1. 第三种: TZRL2017-001SL
  1. # 新加的地方
    def create(self, cr, uid, vals, context=None):
    context = context or {}
  2.  
  3. partner_id = vals.get('display_name')
    print partner_id
  4.  
  5. # 根据公司来生成不同的编号
    if partner_id:
    vals['lx_origin'] = self.get_lx_sequence(cr,uid,partner_id)
    else:
    raise osv.except_osv(u'请先选择公司!')
  6.  
  7. new_id=super(demo_contract_lx, self).create(cr, uid, vals, context)
    return new_id
  8.  
  9. 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)
  10.  
  11. def get_lx_sequence(self,cr,uid,partner_id,context=None):
  12.  
  13. code="demo_contract_lx_no_%d" %(partner_id)
  14.  
  15. no=self.pool.get('ir.sequence').get(cr, uid, code, context=context)
  16.  
  17. 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
  1.  
  1. 所用方法:
    def get(self, cr, uid, code, context=None):
    company_ids = self.pool.get('res.company').search(cr, uid, [], context=context) + [False]
  2.  
  3. ids = self.search(cr, uid, ['&', ('code', '=', code), ('company_id', 'in', company_ids),('active','=',True)])
  4.  
  5. # assert len(ids)==1
    ir_seq_obj=self.browse(cr,uid,ids,context)
    implementation=ir_seq_obj.implementation
  6.  
  7. 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
  8.  
  9. 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})
  10.  
  11. return prefix+nowyyr+'%%0%sd' % padding % yyrnext_num+suffix
    else:
    return self.get_id(cr, uid, code, 'code', context)
  1.  

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. <Android开源库> PagerSlidingTabStrip从头到脚

    简介 PagerSlidingTabStrip,是我个人经常使用到的一个和ViewPager配合的页面指示器,可以满足开发过程中常用的需求,如类似于今日头条的首页新闻内容导航栏等等,之前自己开发的Ju ...

  2. 最近见到一个用react native实现的标尺动画,不知道如何实现 帖两张图(新知食App)

    很恶心,这款App的标尺没有做兼容,我在模拟上看不到效果,无法说明我想做出的东西的效果,无奈粘一张图吧! 就是这么一个屌样子,如何实现?

  3. [WPF 知识总结系列] —— 基本控件的简单样式集合

    一.ScrollBar <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presenta ...

  4. Java 注解用法详解——@SuppressWarnings

    转自: https://www.cnblogs.com/fsjohnhuang/p/4040785.html Java魔法堂:注解用法详解——@SuppressWarnings   一.前言 编码时我 ...

  5. Mongodb集群与分片 2

    前面我们介绍了简单的集群配置实例.在简单实例中,虽然MongoDB auto-Sharding解决了海量存储问题,和动态扩容问题,但是离我们在真实环境下面所需要的高可靠性和高可用性还有一定的距离. 下 ...

  6. textbox只允许输入数字

    private void txtUserId_KeyPress(object sender, KeyPressEventArgs e) { //如果输入的不是数字键,也不是回车键.Backspace键 ...

  7. 使用 Azure PowerShell 管理 Azure 虚拟网络和 Windows 虚拟机

    Azure 虚拟机使用 Azure 网络进行内部和外部网络通信. 本教程介绍了如何在虚拟网络中创建多个虚拟机 (VM),以及如何在虚拟机之间配置网络连接. 你将学习如何执行以下操作: 创建虚拟网络 创 ...

  8. redie config 详解

    # redis 配置文件示例 # 当你需要为某个配置项指定内存大小的时候,必须要带上单位,# 通常的格式就是 1k 5gb 4m 等酱紫:## 1k => 1000 bytes# 1kb =&g ...

  9. Access restriction: The type BASE64Encoder is not accessible due to restriction on required library C:\Program Files\Java\jre6\lib\rt.jar

    解决方案:在configure build path 中去掉 jre system library,然后重新加载jre system library.....

  10. olivettifaces数据集实现人脸识别代码

    数据集: # -*- coding: utf-8 -*- """ Created on Wed Apr 24 18:21:21 2019 @author: 92958 & ...