Как я могу вызвать мой метод после создания нового объекта в odoo 10? - PullRequest
0 голосов
/ 14 ноября 2018

Я использую odoo 10, унаследованный от модуля stock.quant, я добавляю новый атрибут и новый метод.я хочу, чтобы мой метод выполнялся после каждого создания нового объекта в stock.quant.Это мой кодекс Спасибо за помощь

class stock_quant(models.Model):
    _inherit = 'stock.quant'
    inventory_value_charge = fields.Float('Total Value',store=True,compute='update_stock_value')

    @api.one
    @api.depends('qty')
    def update_stock_value(self):
        stock_price_obj = self.env['stock.price.partition'].search([('id', '!=', False)])
        val_obj = stock_price_obj.search([('reception.pack_operation_product_ids.pack_lot_ids.lot_id.id', '=', self.lot_id.id)])
        if val_obj!= False:
            val_obj.calccule_price()
        else:
            self.inventory_value_charge=self.inventory_value
        #stock_price_obj = self.env['stock.price.partition'].search([('reception.pack_operation_product_ids.pack_lot_ids.lot_id.id', '=', self.lot_id.id)])
        return True

    @api.model
    def create(self, vals):
        res = super(stock_quant, self).create(vals)
        self.update_stock_value()
        return res

Ответы [ 2 ]

0 голосов
/ 15 ноября 2018

Прежде всего поле вычисляется, вам не нужно вызывать метод, потому что он уже вызван в процессе создать звонок. и в вызове write тоже, но только если вы измените поле qty.

Итак, удалите метод create, который вы только что вызывали во второй раз.

Теперь убедитесь, что ваш метод вызывается путем добавления некоторых вызовов печати, если Вы не знаете, как использовать отладку в вашей IDE.

Убедитесь, что вы импортируете модуль в свои __init__ файлы.

0 голосов
/ 14 ноября 2018

Просто измените вашу функцию создания следующим образом

@api.model
def create(self, vals):
    res = super(stock_quant, self).create(vals)
    res.update_stock_value()
    return res
...