引言
课前准备
- 学员准备:能访问互联网的电脑,可安装应用程序
- 教学材料:课件、讲义、案例、视频等教学材料,后续更新至该链接
- 课题纪律:培训签到及随堂作业完成情况,工作群通报
预期成果
1、掌握Odoo系统二次开发,修改现有模块,增加菜单及页面
2、掌握工作流模块应用,实现图形化配置工作流
3、了解Odoo代码开发规范
Odoo二次开发课程
1、新增模块
准备
1、下载样例文件:demo.7z
2、修改文件夹名称为:mrp_issue
3、放置到addons_local开发目录下
修改模块信息
addons_local/mrp_issue/__manifest__.py
# -*- coding: utf-8 -*-
{
'name': "mrp_issue",
'summary': "异常问题升级模块",
'author': "Hubin",
'website': "https://www.faway.com",
# Categories can be used to filter modules in modules listing
# Check https://github.com/odoo/odoo/blob/15.0/odoo/addons/base/data/ir_module_category_data.xml
# for the full list
'category': 'Manufacturing/Manufacturing',
'version': '0.1',
'application': True,
# any module necessary for this one to work correctly
'depends': ['base', 'mail', 'mrp'],
# always loaded
'data': [
'security/ir.model.access.csv',
'views/views.xml',
'views/menu.xml',
],
}
修改模型信息
addons_local/mrp_issue/models/models.py
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class MrpIssue(models.Model):
_name = 'mrp.issue'
_description = '异常问题'
_inherit = 'mail.thread'
name = fields.Char(string='问题单号')
user_name = fields.Char(string=u'记录人员', default=lambda self: self.env.user.name)
occur_time = fields.Datetime(string=u'记录时间', default=fields.Datetime.now)
description = fields.Text(string='问题描述')
attachment_ids = fields.Many2many('ir.attachment', relation="ir_attachment_mrp_issue_ref", string='上传附件')
修改视图信息
addons_local/mrp_issue/views/views.xml
<odoo>
<data>
<!-- explicit list view definition -->
<record model="ir.ui.view" id="mrp_issue_tree">
<field name="name">问题记录</field>
<field name="model">mrp.issue</field>
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="user_name"/>
<field name="occur_time"/>
<field name="description"/>
</tree>
</field>
</record>
<!-- explicit form view definition -->
<record model="ir.ui.view" id="mrp_issue_form">
<field name="name">问题详情</field>
<field name="model">mrp.issue</field>
<field name="arch" type="xml">
<form>
<sheet>
<group>
<field name="name"/>
<field name="user_name"/>
<field name="occur_time"/>
<field name="description"/>
</group>
<group string="附件">
<field name="attachment_ids" widget="many2many_binary"/>
</group>
</sheet>
<div class="oe_chatter">
<field name="message_ids"/>
<field name="message_follower_ids" options="{'open_attachments': True}"/>
</div>
</form>
</field>
</record>
<!-- actions opening views on models -->
<record model="ir.actions.act_window" id="action_mrp_issue_list">
<field name="name">问题记录</field>
<field name="res_model">mrp.issue</field>
<field name="view_mode">tree,form</field>
</record>
</data>
</odoo>
修改菜单信息
addons_local/mrp_issue/views/menu.xml
<odoo>
<data>
<menuitem id="menu_mrp_issue" name="异常" parent="mrp.menu_mrp_root" sequence="5"/>
<menuitem action="action_mrp_issue_list" id="submenu_mrp_issue_record" name="问题记录" parent="menu_mrp_issue" sequence="10"/>
</data>
</odoo>
修改权限信息
addons_local/mrp_issue/security/ir.model.access.csv
id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_mrp_issue,mrp.issue,model_mrp_issue,base.group_user,1,1,1,1
安装部署
2、二次开发
在工作中心中增加班长定义字段
新增模型
新增:addons_local/mrp_issue/models/mrp_workcenter.py
# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import api, fields, models, _
class MrpWorkcenter(models.Model):
_inherit = "mrp.workcenter"
leader = fields.Char(string='班组长')
修改addons_local/mrp_issue/models/__init__.py
# -*- coding: utf-8 -*-
from . import models
from . import mrp_workcenter
新增视图
addons_local/mrp_issue/views/mrp_workcenter_views.xml
<odoo>
<data>
<record id="mrp_workcenter_view_inhert" model="ir.ui.view">
<field name="name">mrp.workcenter.form.inhert</field>
<field name="model">mrp.workcenter</field>
<field name="inherit_id" ref="mrp.mrp_workcenter_view" />
<field name="arch" type="xml">
<xpath expr="//field[@name='resource_calendar_id']" position="after">
<field name="leader"/>
</xpath>
<xpath expr="//field[@name='tag_ids']" position="attributes">
<attribute name="invisible">1</attribute>
</xpath>
</field>
</record>
</data>
</odoo>
修改:addons_local/mrp_issue/__manifest__.py
# always loaded
'data': [
'security/ir.model.access.csv',
'views/views.xml',
'views/mrp_workcenter_views.xml',
'views/menu.xml',
],
重启、升级
Odoo工作流配置
安装模块包
crnd_web_diagram_plus.7z
odoo_dynamic_workflow.7z
工作流功能
1、定义节点:草稿->班长确认->设备接修->维修完成->班长复核->完成
2、定义链接:提交->确认->处理->完成->确认
3、配置审批人
4、允许转发
5、设置字段必填
6、超时通知
7、增加物料问题->处理完成节点,条件判断
8、自定义按钮
9、按钮结束触发其他事件
Odoo开发规范
参照链接:https://blog.csdn.net/m0_62065137/article/details/138192385
评论区