2015-09-30 104 views
2

在Odoo中,每次打開產品表單時都會計算產品的數量。這發生在model 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 

剛纔定義完全相同的一種方法,在原始模型。

回答

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 
+0

知道它現在工作已經。不管怎麼說,還是要謝謝你!我會發布我在OP中是如何做到的。 – RobbeM