Jesse
Jesse

Reputation: 769

Odoo hierarchy view open form

I created a hierarchy view (parent-childs) for asset, now when I click an item in the list I'd like to open a form view of this item. Following code only opens a NEW form view, any ideas?

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
        <field name="name">Assets</field> 
        <field name="type">ir.actions.act_window</field> 
        <field name="res_model">asset.asset</field> 
        <field name="view_type">tree</field> 
        <field name="view_mode">tree,form</field>
        <field name="domain">[('parent_id','=',False)]</field> 

</record>

<record id="assets_tree_view_inherit" model="ir.ui.view">
        <field name="name">asset.asset.tree</field> 
        <field name="model">asset.asset</field> 
        <field name="inherit_id" ref="asset.assets_tree_view"/>
        <field name="field_parent">child_ids</field> 
        <field name="arch" type="xml"> 
            <xpath expr="//tree" position="replace">
                <tree toolbar="1"> 
                    <field icon="icon" name="asset_number"/> 
                    <field name="display_name"/>
                    <field name="name"/> 
                    <field name="user_id"/>
                </tree> 
            </xpath>
        </field> 
</record>

 <record id="asset_form" model="ir.actions.act_window">
        <field name="name">Assets</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">asset.asset</field>
        <field name="view_type">form</field>
        <field name="view_mode">form,kanban</field>
</record>

<record id="ir_asset_form_open" model="ir.values">
        <field eval="'tree_but_open'" name="key2"/>
        <field eval="'asset.asset'" name="model"/>
        <field name="name">Assets</field>
        <field eval="'ir.actions.act_window,%d'%asset_form" name="value"/>
</record>

<menuitem name="Asset Hierarchy" id="asset_hierarchy" parent="asset.menu_maintenance_assets" action="action_assets_hierachy"/>

Upvotes: 0

Views: 1102

Answers (2)

Ali Abdi
Ali Abdi

Reputation: 168

You need some sort of JavaScript modification to achieve this. There is a function called "activate" in web/treeview.js which handle the event when an item clicked. You need to extend it like this:

odoo.define('web.ListViewClickable', function (require) {
"use strict";

var TreeView = require('web.TreeView');

TreeView.include({
    activate: function(id){
        var self = this;
        var result = self._super(id);
        if (self.model == 'your_model'){ //Only if you want to apply this to specific model
            self.do_action({
                    type: 'ir.actions.act_window',
                    res_model: self.model,
                    view_type: 'form',
                    view_mode: 'form',
                    res_id: id,
                    views: [[false, 'form']],
                 });
        }
        return result;
    },
});
});

Upvotes: 1

gdaramouskas
gdaramouskas

Reputation: 3747

Remove the:

 <record id="asset_form" model="ir.actions.act_window">
        <field name="name">Assets</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">asset.asset</field>
        <field name="view_type">form</field>
        <field name="view_mode">form,kanban</field>
</record>

Why do you need this action?

Also, change the:

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
        <field name="name">Assets</field> 
        <field name="type">ir.actions.act_window</field> 
        <field name="res_model">asset.asset</field> 
        <field name="view_type">tree</field> 
        <field name="view_mode">tree,form</field>
        <field name="domain">[('parent_id','=',False)]</field> 

</record>

to:

<record model="ir.actions.act_window" id="action_assets_hierachy"> 
        <field name="name">Assets</field> 
        <field name="type">ir.actions.act_window</field> 
        <field name="res_model">asset.asset</field> 
        <field name="view_type">form</field> 
        <field name="view_mode">tree,form</field>
        <field name="domain">[('parent_id','=',False)]</field> 

</record>

Upvotes: 0

Related Questions