Как открыть представление формы (мастер) после нажатия кнопки в odoo 13 в Sales - PullRequest
0 голосов
/ 06 апреля 2020

Я создал кнопку " + Добавить товары " под строками заказа, используя наследование и xpath в sale.order в модуле продаж Odoo 13.0, моя цель состоит в том, чтобы, когда я нажимал кнопку «+ Добавить товары», просто открывался мастер (например, настраиваемый вид формы, в котором я могу заполнить сведения о товарах), а также создавал ниже Добавить * Кнопка 1012 * в мастере.

quotation_product.xml

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
        <record model="ir.ui.view" id="view_order_form">
            <field name="name">sale.order.form</field>
            <field name="model">sale.order</field>
            <field name="inherit_id" ref="sale.view_order_form"/>
            <field name="arch" type="xml">
                <xpath expr="/form/sheet/notebook/page/field[@name='order_line']" 
            position="before">
                    <button name="my_button" string=" + Add Products" type="object" class="btn 
                btn-info btn- lg"/>
                </xpath>
            </field>
        </record>
    </data>
</odoo>

quotation_product.py

from odoo import api, fields, models, api

class SaleOrder(models.Model):
    _inherit = "sale.order"
    _name = "sale.order"

    def my_button(self, context=None):
        print("ghghhhghghghghg")

    return True

1 Ответ

0 голосов
/ 09 апреля 2020

Mr op,

На вашей кнопке вы можете вернуть свое представление следующим образом, поэтому передайте object и ваш модуль view. При этом ваш view добавил button в в нижнем колонтитуле и с тем же добавили логи c на этом footer_button для выполнения в соответствии с вашими требованиями.

def my_button(self):
    return {
        'name': "Your String",
        'type': 'ir.actions.act_window',
        'view_type': 'form',
        'view_mode': 'form',
        'res_model': 'object',
        'view_id': self.env.ref('module.view_id').id,
        'target': 'new'
    }

И в вашем файле py, если вы хотите наследовать odoo defaul_object как sale.order тогда нет необходимости использовать _name.

class SaleOrder(models.Model):
    _inherit = "sale.order"

Вы также можете обратиться и найти официальную документацию odoo13.

Спасибо

...