User interface 在树状视图Odoo 13外添加按钮

User interface 在树状视图Odoo 13外添加按钮,user-interface,button,treeview,odoo,odoo-13,User Interface,Button,Treeview,Odoo,Odoo 13,你好 有没有办法在Odoo中的树状视图上方添加一个按钮 我想在用户单击按钮时运行一个函数 如果这是不可能的,你能帮我一个替代方案吗 以下是我的查看代码: '''<?xml version="1.0" encoding="utf-8"?> <odoo> <record id="account_payment_import_view_tree" model="ir.ui.view"&

你好

有没有办法在Odoo中的树状视图上方添加一个按钮
我想在用户单击按钮时运行一个函数
如果这是不可能的,你能帮我一个替代方案吗

以下是我的查看代码:

'''<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="account_payment_import_view_tree" model="ir.ui.view">
        <field name="name">account.payment.import.view.tree</field>
        <field name="model">account.payment.import</field>
        <field name="arch" type="xml">
            <tree string="Payment Imports" decoration-info="payment_id != False" decoration-danger="error_msg != False">
                <field name="transaction_date"/>
                <field name="facts_id"/>
                <field name="paid_in_lei"/>
                <field name="paid_in_euro"/>
                <field name="amount"/>
                <field name="account"/>
                <field name="account_no"/>
                <field name="document_no"/>
                <field name="details_bk_statement"/>
                <field name="error_msg"/>
                <field name="invoice_number" invisible="1"/>
                <field name="payment_id" widget="many2onebutton" invisible="1"/>
                <field name="invoice_id" widget="many2onebutton" invisible="1"/>
                <field name="company_id" invisible="1"/>
                <field name="currency_id" invisible="1"/>
            </tree>
        </field>
    </record>

    <record id="account_payment_import_action" model="ir.actions.act_window">
        <field name="name">Payment Imports</field>
        <field name="res_model">account.payment.import</field>
        <field name="view_mode">tree</field>
        <field name="domain">[]</field>
        <field name="context">{'edit': 0}</field>
    </record>

    <menuitem
        id="account_payment_import_menu"
        name="Payment Imports"
        action="account_payment_import_action"
        parent="account.menu_finance_receivables"
        sequence="160"/>
</odoo>''' 
“”
account.payment.import.view.tree
帐户、付款、进口
进口支付
帐户、付款、进口
树
[]
{'edit':0}
''' 

好吧,下面是我在树状视图中获取按钮的尝试。我会一步一步地给你解释清楚

首先,我们必须通过qweb将按钮添加到树视图中,从web模块继承树视图。 这将使我们的新按钮出现在所有树视图中,这是我们不希望看到的。为了避免这种情况,我们添加了一个条件
t-if='widget.modelName==“account.payment.import”
,这将导致仅为我们感兴趣的模型的视图生成按钮。我们还添加了一个CSS类
oe_new_custom_button
,以便能够从javascript中识别按钮

让我们调用包含此qweb的文件tree\u view\u button.xml,并将其放入您的\u模块\u name/static/src/xml


自定义按钮
其次,我们必须赋予按钮功能,我们通过javascript实现这一点

在这里,我们继承了树视图控制器,称为ListController,它的作用是在控制面板中呈现和绑定所有额外的按钮/寻呼机等

让我们调用包含此javascript的文件tree\u view\u button.js,并将其放入您的\u模块\u name/static/src/js

odoo.define('your_module_name.tree_view_button')函数(require){
“严格使用”;
var ajax=require('web.ajax');
var ListController=require('web.ListController');
ListController.include({
renderButtons:函数($node){
这个._super.apply(这个,参数);
var self=这个;
如果(此为$buttons){
$(此.$按钮)。查找('.oe_新建_自定义_按钮')。打开('单击',函数()){
//自定义代码
});
}
},
});
});
最后,我们将javascript添加到odoo资产中,并配置清单以接受所有更改

让我们调用包含资产的文件assets.xml,并将其放入您的\u模块\u name/views


这就是它应该看起来的样子

{
“数据”:[
[ ... ]

“views/assets.xml”,#好吧,下面是我在树状视图中获取按钮的尝试。我将尝试一步一步地向您解释

首先,我们必须通过qweb将按钮添加到树视图中,从web模块继承树视图。 这将使我们的新按钮出现在所有树视图中,这是我们不希望看到的。因此,为了避免出现这种情况,我们添加了一个条件
t-if='widget.modelName==“account.payment.import”“
这将导致仅为我们感兴趣的模型视图生成按钮。我们还添加了一个CSS类
oe_new_custom_button
,以便能够从javascript中识别按钮

让我们调用包含此qweb的文件tree\u view\u button.xml,并将其放入您的\u模块\u name/static/src/xml


自定义按钮
其次,我们必须赋予按钮功能,我们通过javascript实现这一点

在这里,我们继承了树视图控制器,称为ListController,它的作用是在控制面板中呈现和绑定所有额外的按钮/寻呼机等

让我们调用包含此javascript的文件tree\u view\u button.js,并将其放入您的\u模块\u name/static/src/js

odoo.define('your_module_name.tree_view_button')函数(require){
“严格使用”;
var ajax=require('web.ajax');
var ListController=require('web.ListController');
ListController.include({
renderButtons:函数($node){
这个._super.apply(这个,参数);
var self=这个;
如果(此为$buttons){
$(此.$按钮)。查找('.oe_新建_自定义_按钮')。打开('单击',函数()){
//自定义代码
});
}
},
});
});
最后,我们将javascript添加到odoo资产中,并配置清单以接受所有更改

让我们调用包含资产的文件assets.xml,并将其放入您的\u模块\u name/views


这就是它应该看起来的样子

{
“数据”:[
[ ... ]

“views/assets.xml”,#可选:操作菜单服务器操作。Odoo中已有示例,例如
sale.order
的树视图中的“将报价标记为已发送”。可选:操作菜单服务器操作。Odoo中已有示例,例如
sale.order
的树视图中的“将报价标记为已发送”。