功能字段在OpenERP中不起作用

时间:2014-11-17 13:02:39

标签: python openerp openerp-7

purchase.order.line我添加了新字段pln price并将单位价格字段更改为功能:

'price_unit': fields.function(_amount_pln, string='Unit Price', required=True, digits_compute= dp.get_precision('Product Price')),
'plnprice': fields.float('PLN Price', digits_compute= dp.get_precision('PLN Price')),

这是功能:

def _amount_pln(self, cr, uid, ids, prop, arg, context=None):
    res = {}
    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = line.plnprice * 0.25
    return res
现在,

兑换价值是硬编码的0.25,正如您在_amount_pln函数中看到的那样

然后我在purchase.order类中添加了新字段:

'exchange_value': fields.float('Exchange',readonly=False)

但是如何将此字段值赋予我的_amount_pln函数我不知道。 你能帮我解决一下这个问题吗?

3 个答案:

答案 0 :(得分:0)

有时功能字段需要参数:store=True

尝试将此参数添加到您的功能字段,看看它是否有效。

答案 1 :(得分:0)

尝试以下,

def _amount_pln(self, cr, uid, ids, prop, arg, context=None):
    res = {}
    for line in self.browse(cr, uid, ids, context=context):
        res[line.id] = line.plnprice * line.order_id.exchange_value
    return res

order_id是采购订单行中与采购订单相关的多个字段,因此您可以轻松访问采购订单行中采购订单的值。

答案 2 :(得分:0)

" purchase.order"之间的关系和" purchase.order.line"是" order_id"。 " purchase.order.line"包含" order_id"。您可以获得" purchase.order"的价值。使用此" order_id"。

for purchase_line in self.browse(cr, uid, ids, context=context):
    res[line.id] = purchase_line.plnprice * purchase_line.order_id.exchange_value