html video 增加按钮_【odoo ERP开发】入门第二课 自定义按钮

    Odoo ERP开发入门第二课,如何添加自定义按钮。

    传统ERP单据界面,都对应着很多按钮如:增删改查、审核、弃审等。Odoo原生模块主打简洁易用,按钮动作可能满足不了某些个性化需求,则需要我们自定义按钮及动作、或者扩展继承原模块按钮。

    本小节主要学习按钮的视图标签,及按钮如何关联业务逻辑的Python方法。

案例需求:

  •     增加表头按钮“是否转正”,点击修改“转正”属性

  •     增加smart按钮“转正”,根据转正属性设置是否可见

  •     增加smart按钮,关联显示“薪酬”记录值

效果预览:

899e9aac43bfa257ad91da3d33d54d38.png

1、视图层:修改XML文件按钮

  • 可以设置在标签、标签中

         中添加:常规按钮样式,一般定义为流程相关的动作

88b9188fe39097d7469ed12b2c66b6ae.png

         中添加:smart按钮样式,更美观,一般定义为快速查看、修改关联记录的动作

791b511843ca84cdb2f2e9e1d3de0986.png

  • name 属性,关联动作名称

  • type 属性,按钮类型,单击按钮调用哪里的动作

    • object:调用python模型类对应name的方法

    • action: 调用xml文件中定义的name动作

    • attrs: 动态属性,仅影响当前字段,常用属性是invisible隐藏或显示按钮,domain语法

    • groups :可用用户组权限

    XML部分代码

 1"Teacher Form" > 2   3    "jwerp_action_teacher_regular" type="object" string="是否转正" class="oe_highlight"  /> 4  header> 5  <sheet> 6    <div class="oe_button_box" name="button_box"> 7      <button name="jwerp_action_teacher_regular" 8              type="object" 9              class="oe_stat_button"10              icon="fa-globe icon"11              attrs="{'invisible': [('is_regular', '=', True)]}">12        
o_field_widget o_stat_info">13          o_stat_text">转正14        
15      16      jwerp_module.action_window"17              type="action"1819              class="oe_stat_button"20              icon="fa-pencil-square-o" >2122        salary" widget="statinfo" string="薪酬"/>23      24    
25        ...... 26 27

2、模型层:修改 Model类

 1from odoo import models, fields, api
2
3
4class Teacher(models.Model):
5    _name = 'jwerp_module.teacher'
6    _description = "JwERP/Teacher"
7
8    name = fields.Char(string="名字", index=True, required=True, )
9    age = fields.Integer(string='年龄')
10    is_regular = fields.Boolean(string="转正", default=False)
11    salary = fields.Float(string="薪酬", digits=(10, 2))
12    title = fields.Selection([
13        ("primary senior","正高级"),
14        ("senior", "高级"),
15        ("first grade", "一级"),
16        ("second grade", "二级"),
17        ("third grade", "三级"),
18        ("no", "无")
19    ], string="职称", default="no")
20
21    _sql_constraints = [('name_unique', 'unique(name)', 'A Name can only have one Teacher.')]

3、业务逻辑层:模型的python类方法:

    方法内实现相关业务逻辑,实现修改teacher 的 is_regular属性值。

    方法名“jwerp_action_teacher_regular” 和XML的name关联。

    此处方法没有用odoo的api装饰器,调用方法时self指向上下文关联的model类实例,可直接对实例属性修改、查询。如果用@api.model装饰器,则方法的self不指向特定实例。

1def jwerp_action_teacher_regular(self):
2        print('修改前转正 %s' % self.is_regular)
3        self.write({'is_regular' : not self.is_regular})
4        print('修改后转正 %s' % self.is_regular)
5        return True

API参考:

https://www.odoo.com/documentation/14.0/reference/views.html#generic-structure

https://www.odoo.com/documentation/14.0/reference/views.html#semantic-components

课程回顾:

(原创)【odoo开发】入门第一课

强烈推荐一套开源ERP、电子商务和网站

c92b0f32f86fd0df6240e53595fc2bd1.png

关注公众号,
更多资讯早知道!

体验用户:demo

MiMa:demodemo

体验地址
阅读原文


版权声明:本文为weixin_31585653原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。