Как добавить кнопку на дереве внутри формы в Odoo 10?

Я хочу добавить кнопку в дерево order_line в форме продажи, я добавил так:

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree/field[@name='price_subtotal']" position="after">
    <button name="%{action_view_wizard}d" string="" type="action" icon="fa-archive" attrs="{'invisible':[('product_id','=', False)]}"/>
</xpath>

И мастер определяется

<record id="check_stock" model="ir.ui.view">
    <field name="name">sale_warehouse.check_stock_wizard</field>
    <field name="model">sale_warehouse.check_stock_wizard</field>
    <field name="arch" type="xml">
        <form string="Stock by warehouse">
            <group col="1">
                <field name="stock" nolabel="1"/>
            </group>
            <footer>
                <button string="Close" class="btn-default" special="cancel" />
            </footer>
        </form>
    </field>
</record>

<record id="action_view_wizard" model="ir.actions.act_window">
    <field name="name">Stock by warehouse</field>
    <field name="type">ir.actions.act_window</field>
    <field name="res_model">sale_warehouse.check_stock_wizard</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    <field name="view_id" ref="check_stock"/>
    <field name="target">new</field>
</record>

Кнопка добавлена ​​​​в порядке, но ее загрузка отключена, и поэтому при нажатии мастера нет вызова, если я беру кнопку из дерева, мастер вызывается в порядке, но мне нужно вызвать из order_line, потому что мне нужно передать контекст с product_id строки, чтобы получить запас на каждом складе.

Я использую одоо10. Что я делаю неправильно?


person Mariano DAngelo    schedule 07.12.2016    source источник


Ответы (1)


Попробуй это:

<xpath expr="/form/sheet/notebook/page[1]/field[@name='order_line']/tree position="inside">
    <button name="open_view_wizard" string="" type="object" icon="fa-archive" attrs="{'invisible':[('product_id','=', False)]}"/>
</xpath>

Затем добавьте функцию open_view_wizard в свою модель продажи и откройте мастер внутри этой функции: например (вам, вероятно, нужно немного изменить этот код).

def open_view_wizard(self, cr, uid, ids, context=None):

            return {
                'view_type': 'form',
                'view_mode': 'form',
                'res_model': 'sale_warehouse.check_stock_wizard',
                'type': 'ir.actions.act_window',
                'context': context
            }
person B. Assem    schedule 22.12.2016