转载:http://book.odoomommy.com/chapter2/README13.html
第十四章 序列
序列是odoo中用来获取单据序号的对象,技术模型为ir.sequence。序列的使用在odoo中是非常广泛的,典型的使用场景各个单据的单号。
新建序列
因为序列也是odoo中的对象,因此新建的方法同普通的odoo模型创建的方法一致。通常一个序列包含如下的关键项:
- name: 序列名称
- code: 序列代码,通常为实现的模型名称
- implemetiton: 实现方式。序列有两种实现方式,一种为标准方式(Strandard),另外一种为非间断式(No gap)。两者的区别在于,标准方式允许中间断层(1,2,4,6),而非间断式即不允许断层(1,2,3,4)。非间断式的性能开销要大于标准方式。
- prefix: 前缀,即生成的序列号的前缀。
- suffix: 后缀,即生成的序列号的后缀。
- padding: 序列不包含前缀和后缀的长度。
- step: 步长,即序列号增长的长度,默认值为1。
- number_next_actual: 下一序列号数字。
其中,prefix和suffix中可以使用如下的时间变量:
Current Year with Century: %(year)s
Current Year without Century: %(y)s
Month: %(month)s
Day: %(day)s
Day of the Year: %(doy)s
Week of the Year: %(woy)s
Day of the Week (0:Monday): %(weekday)s
Hour 00->24: %(h24)s
Hour 00->12: %(h12)s
Minute: %(min)s
Second: %(sec)s
获取序列
ir.sequence对象提供了获取当前序列号的方法:
根据Sequence Code获取当前序列号
@api.model
def next_by_code(self, sequence_code, sequence_date=None):
pass
next_by_code方法接收两个参数:
sequence_code: 序列代码 sequence_date: 序列日期。序列支持根据一段时间内,使用指定的序列。