目 录CONTENT

文章目录

二、系统开发培训课程(三)

胡彬
2024-08-06 / 0 评论 / 0 点赞 / 542 阅读 / 1,413 字

引言

课前准备

  1. 学员准备:能访问互联网的电脑,可安装应用程序
  2. 教学材料:课件、讲义、案例、视频等教学材料,后续更新至该链接
  3. 课题纪律:培训签到及随堂作业完成情况,工作群通报

预期成果

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

0

评论区