说明:

  单据自动编码允许定义 单据前缀+按当前年、月、日、时、分、秒+流水号+单据后缀
  单据自动编号允许按所有公司统一编号或按分公司单独编号
  单据自动编号中的流水号部分未按月重新编号,不断累计,当超出定义长度时,自动进位增加位数
  暂时未实现按月重新编号,需要每月手工在设置中改变下一编号(客户肯定不会同意这样做的,待解决)

示例代码 xml 部分,编码规则定义:
sale_sequence.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data noupdate="1">
        <!-- Sequences for dispatch.sale --> 
        <record id="seq_type_dispatch_sale" model="ir.sequence.type">
            <field name="name">Dispatch Sale</field>
            <field name="code">dispatch.sale</field>
        </record>
        <record id="seq_dispatch_sale" model="ir.sequence">
            <field name="name">Dispatch Sale</field>
            <field name="code">dispatch.sale</field>
            <field name="prefix">po-%(y)s%(month)s-</field>
            <field name="padding">4</field>
            <field name="company_id" eval="False"/>
        </record>
    </data>
</openerp>

 示例代码 python 部分:

_columns={
       
'name':fields.char(u'单号', size=64, select=True, required=True,
readonly=True),
       
'date':fields.date(u'日期', select=True, required=True,
readonly=True),
       
'month':fields.function(_get_month, method=True, type='char', size=10, string =
u'月份', store=True,
invisible=True),
       
"customer":fields.many2one("dispatch.customer","客户", select=True, required=True,
readonly=True,
states={'draft':[('readonly',False)]}),
       
"product":fields.many2one("dispatch.product","产品", select=True, required=True,
readonly=True,
states={'draft':[('readonly',False)]}),
       
'price':fields.float(u'单价', digits=(18, 2), required=True, readonly=True,
states={'draft':[('readonly',False)]}),
       
'num':fields.integer(u'数量', required=True, readonly=True,
states={'draft':[('readonly',False)]}),
       
'cost':fields.float(u'成本', digits=(18, 2), required=True,
invisible=False),
       
'cost_view':fields.function(_view_cost, method=True, type='float', digits=(18,
2), string = u'成本',
invisible=True),
       
'sum_sale':fields.function(_sum_sale, method=True, type='float', digits=(18, 2),
string = u'销售金额', store=True),
       
'sum_cost':fields.function(_sum_cost, method=True, type='float', digits=(18, 2),
string = u'成本金额', store=True),
       
'sum_profit':fields.function(_sum_profit, method=True, type='float', digits=(18,
2), string = u'利润金额', store=True),
       
'employee_id':fields.many2one('hr.employee',u'业务员', select=True, required=True,
readonly=True,
states={'draft':[('readonly',False)]}),
       
'department_id':fields.many2one('hr.department',u'部门', select=True,
required=True, readonly=True,
states={'draft':[('readonly',False)]}),
       
'klbh':fields.char(u'开龙单号',size=64,required=False, readonly=True,
states={'draft':[('readonly',False)]}),
       
"work_order":fields.many2one("dispatch.work_order","服务单", required=False,
readonly=True,
states={'draft':[('readonly',False)]}),
       
'note':fields.text(u'备注', readonly=True,
states={'draft':[('readonly',False)]}),
       
'state': fields.selection([('draft', u'草稿'),('confirmed', u'已确认')], u'状态',
select=True, readonly=True),
       
'create_uid': fields.many2one('res.users', u"创建用户", select=True,
invisible=False, readonly=True),
#需要在记录中读取该字段或者在视图中显示该字段时,对象中必须包含
    }
   
_defaults={
        'name': lambda
obj, cr, uid, context:
'/',
       
'date':fields.date.context_today,
       
#'employee_id':_employee_get,
       
'state':'draft'
    }
   

    #数据库约束
    _sql_constraints =
[
        ('name_check',
"unique(name)",
u"单据编号已经存在且不允许重复."),
       
('num_check', "CHECK (num <> 0 )", u"销售数量不能等于 0 ."),
   
]
   
    def create(self, cr, uid, vals,
context=None):
        if
vals.get('name','/')=='/':
           
vals['name'] = self.pool.get('ir.sequence').get(cr, uid, 'dispatch.sale') or
'/'
        return
super(dispatch_sale, self).create(cr, uid, vals, context=context)

openerp学习笔记 单据自动编号(编码规则)的更多相关文章

  1. 转:从开源项目学习 C 语言基本的编码规则

    从开源项目学习 C 语言基本的编码规则 每个项目都有自己的风格指南:一组有关怎样为那个项目编码约定.一些经理选择基本的编码规则,另一些经理则更偏好非常高级的规则,对许多项目而言则没有特定的编码规则,项 ...

  2. thinkphp学习笔记9—自动加载

    原文:thinkphp学习笔记9-自动加载 1.命名空间自动加载 在3.2版本中不需要手动加载类库文件,可以很方便的完成自动加载. 系统可以根据类的命名空间自动定位到类库文件,例如定义了一个类Org\ ...

  3. openerp学习笔记 模块结构分析

    以OpenERP7.0中的 hr_expense 模块为例: 如图中代码所示: __init__.py :和普通 Python 模块中的__init__.py 作用相同,主要用于引用模块根目录下的.p ...

  4. openerp学习笔记 跟踪状态,记录日志,发送消息

    跟踪状态基础数据: kl_qingjd/kl_qingjd_data.xml <?xml version="1.0"?><openerp>    <d ...

  5. 【JAVAEE学习笔记】hibernate02:实体规则、对象状态、缓存、事务、批量查询和实现客户列表显示

    一.hibernate中的实体规则 实体类创建的注意事项 1.持久化类提供无参数构造 2.成员变量私有,提供共有get/set方法访问.需提供属性 3.持久化类中的属性,应尽量使用包装类型 4.持久化 ...

  6. openerp学习笔记 domain 的应用

    1.在Action中定义,domain用于对象默认的搜索条件: 示例: <record id="action_orders" model="ir.actions.a ...

  7. Hibernate学习笔记(二)—— 实体规则&对象的状态&一级缓存

    一.持久化类 1.1 什么是持久化类? Hibernate是持久层的ORM映射框架,专注于数据的持久化工作.所谓的持久化,就是将内存中的数据永久存储到关系型数据库中.那么知道了什么是持久化,什么又是持 ...

  8. jade 学习笔记 - gulp 自动编译

    实时监控   jade -P -w .\test1.jade sublime 分栏,可以看到实时修改情况     1. 元素写法 doctype html <!--[if IE8]>< ...

  9. Spring 4.0.2 学习笔记(2) - 自动注入及properties文件的使用

    接上一篇继续, 学习了基本的注入使用后,可能有人会跟我一样觉得有点不爽,Programmer的每个Field,至少要有一个setter,这样spring配置文件中才能用<property> ...

随机推荐

  1. 【Day1】4.基础语法及分支结构

     视频地址(全部) https://edu.csdn.net/course/detail/26057 课件地址(全部) https://download.csdn.net/download/gentl ...

  2. 1-win10配置 Vagrant 环境

    1-win10配置 Vagrant 环境 2019.9.13 Vagrant 概述 vagrant是一个操作虚拟机的工具.是一个基于Ruby的工具,用于创建和部署虚拟化开发环境. 通过命令和配置文件来 ...

  3. Java常用类(一)Math类和Random类

    一.Math类 Math类中有一些常用的数学函数,比较简单,不进行详细解释,仅举例说明: 1.绝对值和取整 import java.lang.Math; public class Mat { publ ...

  4. Linux磁盘分区的实用管理命令

    系统环境:Centos6.7 命令信息: 1.lsblk  列出分区信息,可以查看分区的光在目录和使用情况  (读取内存中的分区表信息) 2.fdisk 用来创建MBR分区(也可以创建GPT分区,但是 ...

  5. hivesql-一个表中的数据不在另一个表中

    如何最有效的判断 一个表中的数据不在另一个表中 两个方法一个是join 另一个是 exist 方法

  6. keras中常用的初始化器

    keras中常用的初始化器有恒值初始化器.正态分布初始化器.均匀分布初始化器 恒值初始化器: keras.initializers.Zeros() keras.initializers.Ones() ...

  7. [Python之路] 元类(引申 单例模式)

    一.类也是对象 当我们定义一个变量或者函数的时候,我们可以在globals()的返回值字典中找到响应的映射: def A(): print("This is function A" ...

  8. DOM 事件流与事件处理程序

    ㈠事件流 ▶事件:是文档和浏览器窗口中发生的,特定的交互瞬间. ▶事件流:描述的是从页面中接受事件的顺序   ⑴DOM事件冒泡 定义:事件最开始由最具体的元素(文档中嵌套层次最深的那个节点)接受,然后 ...

  9. java+文件批量下载

    这篇文章主要介绍了Java实现批量下载选中文件功能,非常不错,具有参考借鉴价值,需要的朋友可以参考下 1.在action中定义变量 private List<String> downLoa ...

  10. java+大文件上传解决方案

    众所皆知,web上传大文件,一直是一个痛.上传文件大小限制,页面响应时间超时.这些都是web开发所必须直面的. 本文给出的解决方案是:前端实现数据流分片长传,后面接收完毕后合并文件的思路. 实现文件夹 ...