栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

odoo14 | 序列号的生成以及格式

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

odoo14 | 序列号的生成以及格式

上面两个图是创建用户后自动生成的,字段为code,且当前设置为不可编辑

那么它是如何实现的?

首先创建字段

code = fields.Char(string='员工编号', readonly=1)

 这一字段创建后,为该字段写一个方法

#文件头部先导包
from odoo import fields, api, models

@api.model
    def create(self, values):
        if not values.get('code'):
            values['code'] = self.env['ir.sequence'].next_by_code('hr_employee_pro_data_worker_id')
        return super(HrEmployeePro, self).create(values)

 这里的next_by_code方法将自动计数,里面的参数是从data文件中传过来的

在模块文件夹中新建data文件夹以存放data文件

 然后在里面新建一个xml文件hr_xxxx_data.xml

并按如下代码写入



    
        
          基础信息工号生成
          hr_employee_pro_data_worker_id
          %(year)s%(month)s%(day)s
          3
        
    

ir.sequence是odoo原生提供的一个很好用的序列号生成器

这里code参数与上面刚刚写的方法的那个next_by_code方法的参数值一致,如果涉及到跨模型的情况推荐将“_”变成“.”,并尽可能简化命名词量或以“模型.id”的形式以确保可以关联上对应的方法。

padding是指在prefix格式生成的序列号后加几位的序号,这里设置是3位,所以默认从001开始。

注意id不要与其他id重复,最好的方法就是模块名+自定义名,这样也便于源码阅读时的可读性,可以增强团队合作的效率和幸福度。

prefix格式odoo官方也提供了,在设置-技术-序号中可以查看到,可以参考使用

 最后注意不要忘记在__manifest__.py文件中注册该xml的data文件

'data': [
        'security/ir.model.access.csv',
        'data/hr_xxxx_data.xml',
        'views/视图.xml',
    ],

这里需要注意位置,odoo非常讲究先后顺序,错误的顺序将直接导致启用新库时出现文件丢失的报错。

最后升级或安装模块,然后就可看到效果。

上面说到,padding是默认从001开始,可以在开发者模式下进入设置-技术-序号中查看,下面展示我这一演示模型的序号页面

若期望下一自动生成的员工编号从5开始,则在“下一号码”处修改为5即可。

可以看到修改后保存,返回员工界面后新建一个员工“张三”,他的员工编号已经从005开始了。 

本篇涉及的技术感谢我的同事璐哥的帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1005732.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号