Search code examples
xmltreeviewodooodoo-9odoo-view

Odoo 9 where can I find action button dropdown in stock.move xml?


I want to change action button dropdown menu with adding or deleting the submenus in stock.move class (or change export function) but I can't find the place in xml where is described button "action" with "export" and "delete" dropdown menu. As I understand it has to be record model="ir.actions.act_window" and in tree view.

I am talking about this menu:


(source: part.lt)

I have these xml's from core stock addon:

<record id="act_product_stock_move_open" model="ir.actions.act_window">
        <field name="context">{'search_default_product_id': active_id, 'default_product_id': active_id}</field>
        <field name="name">Moves</field>
        <field name="res_model">stock.move</field>
        <field name="view_id" ref="stock.view_move_tree"/>
    </record>

    <record id="action_move_form2" model="ir.actions.act_window">
        <field name="name">Stock Moves</field>
        <field name="res_model">stock.move</field>
        <field name="type">ir.actions.act_window</field>
        <field name="view_type">form</field>
        <field name="view_id" ref="view_move_tree"/>
        <field name="search_view_id" ref="view_move_search"/>
        <field name="context">{}</field>
        <field name="help" type="html">
          <p class="oe_view_nocontent_create">
            Click to create a stock movement.
          </p><p>
            This menu gives you the full traceability of inventory
            operations on a specific product. You can filter on the product
            to see all the past or future movements for the product.
          </p>
        </field>
    </record>

    <record model="ir.actions.act_window.view" id="action_stock_move_tree_all">
        <field name="sequence" eval="1"/>
        <field name="view_mode">tree</field>
        <field name="view_id" ref="view_move_tree"/>
        <field name="act_window_id" ref="action_move_form2"/>
    </record>

    <record model="ir.actions.act_window.view" id="action_stock_move_form_all">
        <field name="sequence" eval="3"/>
        <field name="view_mode">form</field>
        <field name="view_id" ref="view_move_form"/>
    <field name="act_window_id" ref="action_move_form2"/>
    </record>

<record model="ir.actions.act_window.view" id="action_stock_move_graph_all">
    <field name="sequence" eval="3"/>
    <field name="view_mode">graph</field>
    <field name="view_id" ref="view_move_graph"/>
    <field name="act_window_id" ref="action_move_form2"/>
</record>

Maybe I'm searching not in the right place?


Solution

  • base.xml(at addons/web/static/src/xml/base.xml) have FieldBinaryFileUploader which call the controller /web/binary/upload_attachment (at addons/web/controllers/main.py)

    <t t-name="FieldBinaryFileUploader">
        <div t-att-style="widget.node.attrs.style" t-attf-class="oe_fileupload #{widget.node.attrs.class ? widget.node.attrs.class :''}">
            <div class="oe_placeholder_files"/>
            <div class="oe_add" t-if="!widget.get('effective_readonly')">
                <!-- uploader of file -->
                <button class="oe_attach"><i class="fa fa-paperclip"/></button>
                <span class='oe_attach_label'><t t-esc="widget.string"/></span>
                <t t-call="HiddenInputFile">
                    <t t-set="fileupload_id" t-value="widget.fileupload_id"/>
                    <t t-set="fileupload_action" t-translation="off">/web/binary/upload_attachment</t>
                    <input type="hidden" name="model" t-att-value="widget.view.model"/>
                    <input type="hidden" name="id" value="0"/>
                    <input type="hidden" name="session_id" t-att-value="widget.session.session_id" t-if="widget.session.override_session"/>
                </t>
            </div>
        </div>
    </t>
    

    Edited: For adding new value in option

    Create a record of model="ir.values" in xml and place the stock.move in <field name="model"> and create the action

    <record id="my_module.my_new_action_stock_move" model="ir.actions.server">

    OR

    <record id="my_module.my_new_action_stock_move" model="ir.actions.act_window">

    for handling the onclick of action

    Sample Code ir.values as below :

    <record model="ir.values" id="my_module.model_stock_move_values">
        <field name="model_id" ref="stock.model_stock_move" />
        <field name="name">My Options</field>
        <field name="key2">client_action_multi</field>
        <field name="value" eval="'ir.actions.act_window,'+str(ref('my_module.my_new_action_stock_move'))" />
        <field name="key">action</field>
        <field name="model">stock.move</field>
    </record>
    

    Hope this reference may help in understanding how export work.