0

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

问题是 as interestis afunction field并且它搜索当前amountPayinterestType记录的值但它失败了,因为这些值尚未保存。

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

有什么方法可以通过点击提交 1 次来即时执行此操作吗?

任何正确方向的提示将不胜感激,谢谢!

4

1 回答 1

1

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

将 on_change 添加到 amountPay 和 interestType 字段。这可以调用传入这两个字段的相同 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。

于 2013-07-12T02:25:49.637 回答