2017-01-12 3 views
1

Я просто новичок в Odoo.I хочу переопределить метод сохранения при создании клиента на вкладке продаж (я использую odoo 8). SO, когда я нажимаю save, я отправлю сообщение XML RPC в другую систему (ESB). Я сделаю это, переопределив во многих модулях odoo (включая домены объявлений), но я не знаю, с чего я начинаю? Я сейчас установил odoo в своей системе, а также загрузил исходный код из репозитория git (https://github.com/odoo/odoo/tree/8.0) Любая идея, пожалуйста, как я могу это сделать?Как я могу переопределить действие сохранения в odoo?

Thanks

+1

Пожалуйста, измените свой вопрос и добавить: 1. Ваш код/​​ваши попытки 2. Ваш вход, токовый выход и ожидаемый выход –

+0

Возможные дубликата [Override Создать функцию в Odoo] (http://stackoverflow.com/questions/31749586/override-create-function-in-odoo) – danidee

+0

Я не думаю, что это дубликат, потому что мы говорим о клиентах здесь, и кнопка «сохраняет». Да, решение будет частично одинаковым, но те же решения не дублируют вопросы :-) – CZoellner

ответ

2

На самом деле можно было бы назвать два метода ORM. При создании кнопки сохранения вызывают модели create(), а при обновлении/записи он назовет write(). Поэтому вам нужно создать собственный модуль и переопределить эти методы. Вы должны позвонить super(), а затем делать то, что вы хотите делать с внешней системой. В Одуо есть много примеров, где уже сделаны такие переопределения.

+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