在Odoo中,每次打开产品表时都会计算产品数量。这发生在model product.product ==> function _product_available。
此函数返回一个名为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
刚刚定义的方法与原始模型完全相同。
答案 0 :(得分:0)
我想你可以尝试一下。
class ProductProductInherit(models.Model):
_inherit = 'product.product'
@api.multi
def _product_available(self, field_names=None, arg=False):
#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(ProductProductInherit, self)._product_available(res)
return result
答案 1 :(得分:0)
提问者的解决方案(从问题中删除了答案数据):
我是如何让它工作的:
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
刚刚定义了与原始模型中完全相同的方法。