Javascript Odoo 12:如何在“打开”时弹出消息;“保存”;在sale.order模型上单击按钮?

Javascript Odoo 12:如何在“打开”时弹出消息;“保存”;在sale.order模型上单击按钮?,javascript,qweb,odoo-12,Javascript,Qweb,Odoo 12,我被困了3个小时。 当我的条件满足(_某些字段等于某个值)时,我想在用户单击record on sale.order model(仅限)表单视图上的“Save”(保存)按钮时显示一个弹出窗口(非阻塞窗口)。该弹出窗口应在Save(保存)按钮形成其默认操作后触发,因为我需要检查数据库中的条件是否满足。 我找到了如何从Odoo中的javascript获取model.Models。 我还发现我需要覆盖“编辑表单”按钮来进行更改,但我不知道如何做,也不知道它是否会对其他模型产生影响,因为其他人使用它。


我被困了3个小时。
当我的条件满足(_某些字段等于某个值)时,我想在用户单击record on sale.order model(仅限)表单视图上的“Save”(保存)按钮时显示一个弹出窗口(非阻塞窗口)。
该弹出窗口应在Save(保存)按钮形成其默认操作后触发,因为我需要检查数据库中的条件是否满足。
我找到了如何从Odoo中的javascript获取model.Models。
我还发现我需要覆盖“编辑表单”按钮来进行更改,但我不知道如何做,也不知道它是否会对其他模型产生影响,因为其他人使用它。

this.$buttons.on('click', '.o_form_button_edit', this._onEdit.bind(this));
我不知道我的方法是不是很好?如果没有,你能推荐另一个吗? 你能帮助我吗?非常感谢。

PS:我需要一个弹出窗口,因为用户可以在保存记录时接受或放弃更改。如果放弃,我需要重新打开o_form_button_edit如果没有,我们什么也不做,因为我们已经调用了write方法。

下面是一个代码片段,可以执行您想要的操作:

var FormController = require('web.FormController');
var ExtendFormController = FormController.include({
    saveRecord: function () {
        var res = this._super.apply(this, arguments);
        if(this.modelName == 'project.task'){
            var self = this;
            res.then(function(changedFields){
                console.log(changedFields);
                console.log(self.modelName);
                self.do_notify('title', 'message');
                // you can call a method on the server like this
                self._rpc({
                        model: self.modelName,
                        method: 'search_read',
                        fields: ['name'],
                        context: self.context,
                    }).then(function(result){
                        console.log('rpc result');
                        console.log(result);
                    })
            });
        }
        return res;
    }
});
单击“保存”后的屏幕截图:

您还需要以相同的方式继承createRecord()方法

请注意:

  • 第一个控制台日志行说:[“name”]是changedFields的值(在点击Save之前我只更改了任务的名称)
  • 我正在处理project.task对象,但您可以将其更改为sale.order:)

这很有帮助

一次变革活动还不够好吗@阿丹考特斯,我不这么认为。我需要它在按下“保存”按钮时触发你是我的救星。让我测试一下,然后再投票。非常感谢:)很高兴能帮忙