В Odoo количество продукта рассчитывается каждый раз, когда открывается форма продукта. Это происходит в модели product.product ==> function _product_available.Odoo: как переопределить исходную функцию
Эта функция возвращает словарь с именем res.
Пример:
res = {8: {'qty_available': 5000.0, 'outgoing_qty': 1778.5, 'virtual_available': 3221.5, 'incoming_qty': 0.0}}
Теперь я хочу, чтобы изменить эти значения. Мне удалось это сделать, закодировав его непосредственно в исходной функции _product_available.
Поскольку это неправильный способ сделать это, я хочу сделать это в унаследованной модели. Я думаю, мне нужно переопределить функцию? Или перезаписать? Не уверен, что это называется.
Все, что я читал об этом, довольно расплывчато для меня. Я не могу найти много хорошей информации или примеров. Я также борюсь с тем, что оригинальная функция написана в старом стиле (osv), в то время как я использую новый стиль (модели).
Из частей информации, которую я собрал в Интернете, я написал что-то вроде этого (что не работает).
class product_product_inherit(models.Model):
_inherit = 'product.product'
#api.v7 because of old style? Also tried .multi and .model...
@api.v7
def _product_available(self, cr, uid, ids, field_names=None, arg=False, context=None):
#example of modified values. To be made variable after this is working.
res = {8: {'qty_available': 200.222, 'outgoing_qty': 1778.5, 'virtual_available': 30205.263671875, 'incoming_qty': 0.0}}
result = super(C, self)._product_available(res)
return result
Кто-нибудь знает, как правильно изменить возвращенный словарь исходной функции _product_available?
Как я получил это работает:
class product_product_inherit(models.Model):
_inherit = 'product.product'
def _product_available(self, cr, uid, ids, field_names=None, arg=False, context=None):
for product in self.browse(cr, uid, ids, context=context):
id = product.id
res = {id: {'qty_available': 200.222, 'outgoing_qty': 1778.5, 'virtual_available': 30205.263671875, 'incoming_qty': 0.0}}
return res
Просто определяется точно такой же метод, как и в оригинальной модели.
Получил это уже сейчас. Спасибо, в любом случае! Я опубликую, как я это сделал в своем OP. – RobbeM