我如何覆盖odoo中的保存操作?

How can i override a save action in odoo?

我只是 Odoo.I 的新手,想覆盖在销售选项卡中创建客户时的保存方法(我使用的是 odoo 8)。 因此,当我单击保存时,我将向其他系统 (ESB) 发送一条 XML RPC 消息。 我将在许多 odoo 模块(包括广告)中进行这种覆盖,但我不知道从哪里开始? 我现在已经在我的系统上安装了 odoo,并从 git 存储库 (https://github.com/odoo/odoo/tree/8.0) 下载了源代码 请问我该怎么做?

谢谢

实际上可以调用两个ORM方法。创建时,保存按钮将调用模型 create(),而在 update/write 时,它将调用 write()。所以你必须创建你自己的自定义模块并覆盖这些方法。您应该调用 super() 然后对您的外部系统执行任何您想执行的操作。 Odoo 本身有很多这样的覆盖已经完成的例子。

一个简单的例子:

from openerp import models, api

class ResUsers(models.Model):
    _inherit = "res.users"

    @api.model
    def create(self, vals):
        self.do_something_else()
        return super(ResUsers, self).create(vals)

    @api.multi
    def write(self, vals):
        res = super(ResUsers, self).write(vals)
        self.do_something_writefully_different()
        return res