2017-01-12 5 views
1

私はちょうどOdooの初心者です。私はsalesタブで顧客を作成する際にsaveメソッドをオーバーライドしたいと思います(私はodoo 8を使用しています)。 SOをクリックすると、XML RPCメッセージが他のシステム(ESB)に送信されます。 多くのodooモジュール(広告ドンを含む)でこの種のオーバーライドを行いますが、どこから始めたらいいのでしょうか? 私はシステムにodooをインストールしているだけでなく、gitリポジトリからソースコードをダウンロードしています(https://github.com/odoo/odoo/tree/8.0) どうすればいいですか?odooで保存アクションを無効にするにはどうすればよいですか?

ありがとう

+1

あなたの質問を編集して追加してください:1.あなたのコード/あなたの試み2.あなたの入力、出力電流との予想出力 –

+0

可能性のある重複した[オーバーライドOdooで関数を作成します]( http://stackoverflow.com/questions/31749586/override-create-function-in-odoo) – danidee

+0

私はここで顧客について話しているので、私はそれが重複しているとは思わない、ボタンは "保存"です。はい、ソリューションは部分的に同じですが、同じソリューションで重複する質問はありません:-) – CZoellner

答えて

2

実際には2つのORMメソッドを呼び出すことができます。作成時に保存ボタンはモデルcreate()を呼び出し、更新/書き込み時にはwrite()を呼び出します。したがって、あなた自身のカスタムモジュールを作成し、これらのメソッドをオーバーライドする必要があります。 super()に電話をしてから、外部システムで何をしたいのですか。 このようなオーバーライドがすでに行われているOdoo自体には、多くの例があります。

+0

新しいモジュールを作成するか、課金資産モジュールのcreateメソッドをオーバーライドするか、完全なodooソースコードを再コンパイルするだけですか? – BenMansourNizar

+0

この機能は私がアドオンフォルダ(会計資産と呼ばれる)で見つけましたか? – BenMansourNizar

+0

odooコードをオーバーライドすることは決してお勧めしません。常に独自のカスタムモジュールを作成してください。 Odoo開発チュートリアル(例えば、[this](https://www.odoo.com/documentation/10.0/howtos/backend.html))を調べてみてください。あなたが継承し、そのメソッドをオーバーライドする必要があるOdooモデルは 'res.partner'です。 – CZoellner

2

簡単な例:

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 
関連する問題