0

我想使用以前的值计算函数字段的值(=具有以前id的记录的值)

'testrest' : fields.function(get_reste, method=True, string='Restant',type='integer'),

 def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= a + record.entree_nbr # a should be the same field for the previous record

我怎样才能做到这一点?谢谢你

4

2 回答 2

1
def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    a = 0.0
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= a + record.entree_nbr 
                a =record.testrest
    return x

如果需要,您可以按以下方式对 id 列表进行排序ids.sort()

于 2012-07-03T12:52:11.310 回答
1

OE 6.1+关于and的第一点fields.function():它不再需要method参数 [ Server rev 3495 revid odo@openerp.com-20110701232328-flgxulxva70vnyxr 和 addons rev 4844]。所以请不要再使用“method”参数了!

现在您想根据以前的值计算值,所以您可以做的是您可以store=True在这里使用参数,它将您以前的值存储在数据中,现在在您的计算中以供记录您可以读取以前的值并计算新值并返回它。

'testrest' : fields.function(get_reste, store=True, string='Restant',type='integer'),

 def get_reste(self, cr, uid, ids, field_name, arg, context):
    x = {}
    for record in self.browse(cr, uid, ids ,context):
            if record.statut !=  'entree': 
                x[record.id]= record.testrest + record.entree_nbr
    return x

字符串的好处是您可以在 OE 之外的任何地方或某些外部报告工具中使用此值,您甚至可以使用此字段。

希望这会有所帮助。

更多代码:

'price': fields.function(_price_get, method=True, string="Price", store=True),
于 2012-07-03T11:04:18.770 回答