これは、次の 2 つの方法で実現できます。
(1) on_change メソッドをadvance taken from company
&に記述できるTotal expense
ため、これら 2 つのフィールドに変更があった場合に、金額を計算し、due amount
フィールドに対して計算した値を返すことができます。
ここに例があります、
<field name="x_adv" on_change="onchange_amount(x_adv,total_expense)"/>
<field name="total_expense" on_change="onchange_amount(x_adv,total_expense)"/>
<field name="due_amount"/>
.py ファイルで onchange_amount 関数に書き込むと、この関数はx_adv
&に変更があったときに呼び出されtotal_expense
ます。
def onchange_amount(self, cr, uid, ids, x_adv, total_amount, context={}):
// Your calculation
value = {'due_amount': calculate_value}
return {'value': value}
これは問題なく動作しますが、結果のフィールド (ここでは due_amount) が読み取り専用の場合、クライアントやデータベースにも表示されない場合、少し問題が発生します。したがって、問題を特定する 2 番目の方法があります。
(2) due_mount をフィールド関数にする。
def _calculate_due_amount(self, cr, uid, ids, field_name, arg, context=None):
res = {}
if context is None:
context = {}
for current_ids in self.browse(cr, uid, ids, context=context)[0]
// Your calculation
res[current_ids] = calculated_amount
return res
'due_amount': fields.function(_calculate_due_amount, string='Due Amount', help="Due amount of employee.",
store={
'your_object': (lambda self, cr, uid, ids, c={}: ids, ['x_adv', 'total_expense'], 10)
}),
これは、問題を解決するための最適な方法の 1 つです。関数フィールドによって、データベースに値を保存でき、フィールドを読み取り専用にすることもできます。これがうまくいくことを願っています。