方案一:代码实现自动编号
优点:如果移植程序后,不需要重新配置
缺点:不方便
代码结构:
1、XML代码
a、建一个qhdata文件夹,新建一个xml文件'qhdata/qh_sequence.xml'
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="sequence_confirm_price" model="ir.sequence">
<field name="name">任务池自动编码</field>
<field name="code">qhfendan.pool.qh_number</field>
<field name="prefix">QHRW%(year)s%(month)s%(day)s</field>
<field name="padding">5</field>
<field name="number_next">1</field>
<!-- <field name="number_increment">1</field> -->
<!-- <field name="company_id" eval="False"/> -->
</record>
</data>
</odoo>
- name: 序列名称
- code: 序列代码,通常为实现的模型名称
- implemetiton: 实现方式。序列有两种实现方式,一种为标准方式(Strandard),另外一种为非间断式(No gap)。两者的区别在于,标准方式允许中间断层(1,2,4,6),而非间断式即不允许断层(1,2,3,4)。非间断式的性能开销要大于标准方式。
- prefix: 前缀,即生成的序列号的前缀。
- suffix: 后缀,即生成的序列号的后缀。
- padding: 序列不包含前缀和后缀的长度。
- step: 步长,即序列号增长的长度,默认值为1。
- number_next_actual: 下一序列号数字。
-
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
b、__manifest__.py文件引入XML文件
2、模型文件写方法
@api.model
def create(self, vals):
vals['qh_number'] = self.env['ir.sequence'].next_by_code('qhfendan.pool.qh_number')
return super(QhFenDanPool,self).create(vals)
3、设置
路径:设置/技术/序号
将公司清空,否则只在选中公司有效
效果展示:
方案二:配置实现自动编号
路径:设置/技术/序号
按路径新建即可,
优点:方便
缺点:如果移植程序后,需要重新配置