odoo14中生成序列号
# 大货类型的制造订单,序列号格式为“MO 年份后两位 四位顺序码”,例:MO230001
# PPS样类型的制造订单,序列号格式为“MO 年份后两位 四位顺序码-Sample“,例:MO230001-Sample
在Odoo中,您可以使用XML来定义一个ir.sequence数据,以生成满足特定格式的序列号。以下是按照您提供的格式创建两种类型(大货和PPS样)序列号的XML定义:
<record id="seq_br_production_order_large" model="ir.sequence"> <field name="name">大货制造订单序列</field> <field name="code">br.production.order.large</field> <field name="prefix">MO%(range_year)s</field> <field name="suffix"></field> <field name="padding">4</field> <field name="number_increment">1</field> <field name="use_date_range">true</field> </record> <record id="seq_br_production_order_pps" model="ir.sequence"> <field name="name">PPS样制造订单序列</field> <field name="code">br.production.order.pps</field> <field name="prefix">MO%(range_year)s</field> <field name="suffix">-Sample</field> <field name="padding">4</field> <field name="number_increment">1</field> <field name="use_date_range">true</field> </record>
这两段XML代码定义了两个ir.sequence,它们会生成不同类型的制造订单序列号。其中:
- id是该记录在Odoo系统中的唯一标识符
- model指定了此记录应用于ir.sequence模型
- name是序列的描述性名称
- code是在Python代码中引用此序列的代码
- prefix是在生成的序列号前加的前缀。这里我们使用了内置的%(range_year)s变量,它会被替换为当前年份的后两位
- suffix是在生成的序列号后加的后缀。在PPS样制造订单序列中,我们加上了"-Sample"后缀
- padding定义了序列号的数字部分应有多少位数。这里我们设置为4,表示数字部分会有4位,如0001、0002、...、9999
- number_increment定义了每次生成新序列号时数字部分应增加多少。这里我们设置为1,表示每次生成新的序列号时数字部分会加1
- use_date_range设置为true,表示序列号中会包含年份信息
这样设置后,当我们在Python代码中调用
self.env['ir.sequence'].next_by_code('br.production.order.large')
和
self.env['ir.sequence'].next_by_code('br.production.order.pps')
,就会得到符合要求的序列号。
需要注意的是,上述XML代码应该放在一个名为data的目录中的XML文件中,并且这个XML文件应该在模块的__manifest__.py
文件中被引用,以便在安装或更新模块时被加载。