DTCloud 序列号

134 阅读1分钟

序列是 dtcloud 中用来获取单据序号的对象,技术模型为 ir.sequence。序列的使用在 dtcloud 中是非常广泛的,典型的使用场景各个单据的单号。
新建序列
因为序列也是 dtcloud 中的对象,因此新建的方法同普通的 dtcoud 模型创建的方法一致。通常一个序列包含如下的关键项:

  • 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: 序列日期。序列支持根据一段时间内,使用指定的序列。