【odoo15】在tree视图的Header添加按钮来批量审批订单

点击完成后:状态-->【完成】

代码:非常简单只需要在xml中的tree里添加:

  <header>
       <button name="action_done" string="完成" class="btn-primary" type="object"/>
               
 </header>

不需要添加button的ID

完整代码粘一下: 前边的博客状态流程中详细的写过这个东西,可以翻看。

from odoo import fields, models, api, _


class mysale(models.Model):
    _name = "mysale.mysale"
    _description = "mysale模块"
    _inherit = ['mail.thread', 'mail.activity.mixin']
    serial_number = fields.Char(string="序列号", copy=False, readonly=True,
                                default=lambda self: _('NEW'))
    name = fields.Char(tracking=True, required=True)
    field = fields.Char()
    note = fields.Char(tracking=True)
    gender = fields.Selection([('male', '男的'), ('female', '女的'), ('other', '其它')],
                              required=True, default='other')
    mynote = fields.Text(string="备注便签")
    state = fields.Selection(
        [('draft', '草稿'), ('confirm', '确认'),
         ('done', '完成'), ('cancel', '取消')], string="状态", default='draft')
    # product.template
    product_id = fields.Many2one('product.template', string="产品")

    date_test1 = fields.Date(string="日期")
    date_test2 = fields.Datetime(string="时间")
    # value3 = fields.Integer()

    def action_draft(self):
        self.state = 'draft'

    def acton_confirm(self):
        self.state = 'confirm'
        # print(self.name)
        # # print(self.name.id)
        # print(self.id)

    def action_done(self):
        self.state = 'done'

    def action_cancel(self):
        self.state = 'cancel'

    # 模型修饰器
    @api.model
    def create(self, vals):
        # 覆盖create方法
        if vals.get('serial_number', _('New')) == _('New'):
            vals['serial_number'] = self.env['ir.sequence'].next_by_code('mysale.mysale') or _('New')
        res = super(mysale, self).create(vals)
        return res



<?xml version="1.0" encoding="utf-8"?>

<odoo>
    <record model="ir.actions.act_window" id="mysale_action_window">
        <field name="name">mysale 视图</field>
        <field name="res_model">mysale.mysale</field>
        <field name="view_mode">tree,form,kanban</field>
    </record>

    <record model="ir.ui.view" id="mysale_tree">
        <field name="name">mysale tree</field>
        <field name="model">mysale.mysale</field>
        <field name="arch" type="xml">
            <tree>
                <header>
                     <button name="action_done" string="完成" class="btn-primary" type="object"/>
                </header>
                <field name="serial_number" readonly="1"/>
                <field name="name"/>
                <field name="field"/>
                <field name="gender"/>
                <field name="note"/>
                <field name="state"/>
                <field name="product_id"/>
            </tree>
        </field>
    </record>


    <record model="ir.ui.view" id="mysale_form">
        <field name="name">mysale form</field>
        <field name="model">mysale.mysale</field>
        <field name="arch" type="xml">
            <form>
                <header>
                    <button id="button_draft" name="action_draft" string="草稿" class="btn-primary"
                     states="cancel" type="object"/>
                    <button id="button_confirm" name="acton_confirm" string="确认" class="btn-primary"
                     states="draft,cancel" type="object" confirm="确认选择完成?"/>
                    <button id="button_done" name="action_done" string="完成" class="btn-primary"
                     states="cancel,draft,confirm" type="object"/>
                    <button id="button_cancel" name="action_cancel" string="取消"
                    states="draft,done,confirm" type="object"/>
                    <field name="state" widget="statusbar" options="{'clickable':'1'}"
                    statusbar_visible="draft,confirm,done"/>
                </header>
                <sheet>
                    <div class="oe_title">
                        <h1>
                            <field name="serial_number" readonly="1"/>
                        </h1>
                    </div>
                    <group class="top">
                        <group class="left">
                            <field name="name"/>
                            <field name="field"/>
                            <field name="note"/>
                            <field name="gender"/>
                            <field name="mynote"/>
                            <field name="product_id"/>
                            <field name="date_test1"/>
                            <field name="date_test2"/>
                        </group>
                    </group>
                    <div class="oe_chatter">
                        <field name="message_follower_ids"/>
                        <field name="activity_ids"/>
                        <field name="message_ids"/>
                    </div>
                </sheet>
            </form>
        </field>
    </record>


    <!--    写一个search 搜索条件 -->
    <record model="ir.ui.view" id="mysale_search">
        <field name="name">mysale_search</field>
        <field name="model">mysale.mysale</field>
        <field name="arch" type="xml">
            <search string="search_field">
                <field name="name"/>
                <field name="field"/>
                <field name="note"/>
                <separator/>
                <filter string="男生" name="male" domain="[('gender','=','male')]"/>
                <filter string="女生" name="female" domain="[('gender','=','female')]"/>
                <group expand="1" string="性别组">
                    <filter string="性别组" name="gender" context="{'group_by':'gender'}"/>
                    <filter string="姓名组" name="name" context="{'group_by':'name'}"/>
                </group>
            </search>
        </field>
    </record>


<!--    自定义kanban视图    -->
    <record id="mysale_kanban" model="ir.ui.view">
        <field name="name">mysale kanban</field>
        <field name="model">mysale.mysale</field>
        <field name="arch" type="xml">
            <kanban>
                <field name="name"/>
                <field name="field"/>
                <field name="gender"/>
                <templates>
                    <t t-name="kanban-box">
                        <div class="oe_kanban_global_click">
                            <div class="o_kanban_image">
                                <img t-att-src="kanban_image('im_livechat.channel', 'image_128')"
                                     class="img-fluid" alt="Channel"/>
                            </div>
                            <ul>
                                <li> 姓名:<field name="name"/></li>
                                <li> 领域:<field name="field"/></li>
                                <li> 性别:<field name="gender"/></li>
                            </ul>
                        </div>
                    </t>
                </templates>
            </kanban>
        </field>
    </record>

    <menuitem id="mysale_menu_root"
              name="mysale菜单"
              action="mysale_action_window"/>

    <menuitem id="menu_1_list"
              name="mysale"
              parent="mysale_menu_root"
              action="mysale_action_window"
              sequence="10"/>

    <menuitem id="menu_1_list1"
              name="mysale"
              parent="menu_1_list"
              action="mysale_action_window"
              sequence="10"/>


</odoo>

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Odoo中,要在视图动作按添加查询按并将其赋值给属性,需要进行以下步骤: 1. 在视图添加一个按,并设置按的名称、图标等属性。 2. 在按的操作中添加一个查询动作,并设置查询条件和查询结果的属性。 3. 将查询动作的结果值设置为按的属性值。 下面是一个示例代码,演示了如何在Odoo中实现这个功能: ``` <record model="ir.ui.view" id="my_view"> <field name="name">My View</field> <field name="model">my.model</field> <field name="arch" type="xml"> <form string="My Form"> <header> <button name="action_search" string="Search" type="object" icon="fa-search"/> </header> <sheet> <!-- fields go here --> </sheet> </form> </field> </record> <record model="ir.actions.act_window" id="my_search_action"> <field name="name">My Search Action</field> <field name="type">ir.actions.act_window</field> <field name="res_model">my.model</field> <field name="view_mode">tree,form</field> <field name="search_view_id" ref="my_search_view"/> </record> <record model="ir.ui.view" id="my_search_view"> <field name="name">My Search View</field> <field name="model">my.model</field> <field name="arch" type="xml"> <search> <!-- search fields go here --> </search> </field> </record> <record model="ir.values" id="my_search_button_value"> <field name="name">My Search Button Value</field> <field name="model">my.model</field> <field name="key">my_search_button</field> <field name="value" eval="'ir.actions.act_window,%d' % my_search_action"/> </record> ``` 在这个示例中,我们在一个表单视图添加了一个名为“Search”的按,并将其与一个查询动作关联。查询动作使用了一个搜索视图,并设置了查询条件和结果属性。最后,我们将查询动作的结果值设置为一个名为“my_search_button”的属性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值