【问题标题】:Odoo 10 : Call a confirmation form (Yes / No) from WizardOdoo 10:从向导调用确认表(是/否)
【发布时间】:2017-05-15 15:39:42
【问题描述】:

我想在我的采购订单中添加一个“取消”按钮。此按钮会将我的记录状态更改为“已取消”。 当用户单击此按钮时,脚本会验证所有购买查询和供应商订单(如果有任何一项尚未完成或取消)。 我想添加一个弹出窗口来警告用户。用户可以取消操作或追踪,取消所有相关的查询和订单。

这是我的向导模型:

# -*- coding: utf-8 -*-

from odoo import models, fields, api

class confirm_wizard(models.TransientModel):
    _name = 'tjara.confirm_wizard'

    yes_no = fields.Char(default='Do you want to proceed?')

    @api.multi
    def yes(self):
        return True

    @api.multi
    def no(self):
        return False

我的向导视图:

<?xml version="1.0" encoding="UTF-8"?>
<odoo>
    <data>
        <record model="ir.ui.view" id="confirm_wizard_form">
            <field name="name">wizard.form</field>
            <field name="model">tjara.confirm_wizard</field>
            <field name="type">form</field>
            <field name="arch" type="xml">
                <form string="Confirm dialog">
                    <field name="yes_no" readonly="1" />
                    <footer>
                        <button class="oe_highlight" name="yes" string="Yes" />
                        <button class="oe_highlight" name="no" string="No" />
                    </footer>
                </form>
            </field>
        </record>
    </data>
</odoo>

按钮:

<button string="Canceled" type="object" name="canceled_progressbar" class="oe_highlight" attrs="{'invisible': [('state', '=', 'done')]}"/>

最后是两种方法:

@api.multi
def return_confirmation(self):
    return {
        'name': 'Are you sure?',
        'type': 'ir.actions.act_window',
        'res_model': 'tjara.confirm_wizard',
        'view_mode': 'form',
        'view_type': 'form',
        'target': 'new',
    }

@api.multi
def canceled_progressbar(self):
    if(self.return_confirmation()):
        #Do some code
    else:
        #Do some code

只有当按钮指向 return_confirmation 方法时才会触发模型。这使我无法追求我的代码。当用户单击按钮时,只会出现一个弹出窗口然后消失。 我想通过 cancel_progressbar 调用 return_confirmation(弹出窗口),这样我就可以返回值并继续前进。

【问题讨论】:

  • 请在表单中添加按钮标签,并在按钮中添加确认属性。请参考odoo.com/forum/help-1/question/…
  • 您好,感谢您的回复。无论如何,这只会显示一个确认弹出窗口。我只想在一种情况下显示确认按钮:当记录的相关实体尚未完成时。
  • @Shreeram 感谢您的回复。在我的情况下,确认按钮没有用。请阅读下面我的回复中的解决方案。

标签: python openerp odoo-10


【解决方案1】:

嗯,这就是我写的:

    @api.multi
    def yes(self):
        print 'yes function'
        self.env['tjara.purchase_order'].function1()

    @api.multi
    def no(self):
        print 'no function'
        self.env['purchase_order'].function1()

'canceled_progressbar' 方法返回:

    @api.multi
    def canceled_progressbar(self):
        print 'canceled_progressbar'
        return {
            'name': 'Are you sure?',
            'type': 'ir.actions.act_window',
            'res_model': 'tjara.confirm_wizard',
            'view_mode': 'form',
            'view_type': 'form',
            'target': 'new',
        }

我根据确认添加了两个功能:

    @api.multi
    def function1(self):
        print 'this function 1'

    @api.multi
    def function2(self):
        print 'this function 2'

我想知道我是否只能制作一个功能,但这似乎是不可能的。

感谢大家的帮助。

【讨论】:

  • 1./ 'cancel_progressbar' 似乎是正确的 2./ 您不需要单独的函数 'function1' 和 'function2'。 3./在'def yes'和'def no'的点击直接添加你的代码。
  • @HardikPatadia 在这里运行良好。我不想在向导页面中工作,这只是关于代码的组织 :) 非常感谢
【解决方案2】:

您可以添加:

confirm="Your Custom message like Are you sure you want to process this?"

在 xml 中的按钮中。

【讨论】:

  • 这是迄今为止最简单的方法。
【解决方案3】:

您应该直接从def canceled_progressbar 方法返回Action,而不是单独定义它。

另外,我不认为您的方法def return_confirmation 将能够通过返回“True”或“False”以您尝试的方式接收值。

在这里,您应该根据单击“是”或“否”按钮直接在向导中添加您的代码,这是您在def return_confirmation 中计划的那个。

【讨论】:

    猜你喜欢
    • 2018-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-21
    • 1970-01-01
    • 2019-05-31
    • 1970-01-01
    相关资源
    最近更新 更多