私の理解が正しければ、入力フィールドとしてフォームに amountPay フィールドと InterestType フィールドがあります。Interest が機能フィールドの場合、フォームが表示されるたびに (ロード時、保存後など)、計算された機能フィールドの値が表示されますが、on_change を使用して必要なことを行うことができます。
amountPay フィールドと InterestType フィールドの両方に on_change を追加します。これにより、これら 2 つのフィールドを渡す同じ 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 にする必要があります。