是否可以在OpenERP中以相同的形式计算来自另一个字段的字段的值?

时间:2013-07-12 00:04:40

标签: python openerp

我正在尝试根据用户在表单上完成的amountPayinterestType字段来计算付款的利息。当用户点击提交时,我需要在兴趣字段中插入,请说amountPay * 0.05

问题在于interestfunction field并且它会搜索当前amountPayinterestType记录的值,但它会失败,因为这些值没有已经保存了。

我注意到如果在保存后我编辑了字段并再次保存,那么我就得到了正确的兴趣。

有什么方法可以通过点击提交1次来实现动态

非常感谢任何正确方向的提示,谢谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以在表单上将amountPay和interestType字段作为输入字段。如果兴趣是一个功能字段,那么每次显示表单时(加载后,保存等),都会显示计算的功能字段值,但您可以使用on_change来执行您需要的操作。

在amountPay和interestType字段中添加on_change。这可以调用传递这两个字段的相同on_change方法。

在on_change方法中,计算正确的兴趣并将其返回。

def on_change_interest_fields(self, cr, uid, ids, amountPay, interestType, context):
    interest = amountPay * 0.5
    return {'value': {'interest': interest,},}

虽然兴趣字段是只读功能字段,但表单中保存的值将更改为值字典中返回的值。然后,当使用保存或重新加载表单时,将正确计算和显示功能字段。此方法的唯一缺点是您正在复制功能字段使用的逻辑。要解决这个问题,请将函数字段调用的方法中的逻辑拉出到可以从函数字段方法和on_change方法调用的单独方法中。

最后一点小点,记住python不是java。要遵循PEP008和OpenERP惯​​例,您的字段应为amount_pay和interest_type。