エラーが発生しない関数フィールドがありますが、必要な場合でも値を設定しません。
コード:
class stock_move_custom(osv.osv):
_name = 'stock.move'
_inherit = 'stock.move'
def _penalty(self, cr, uid, ids, field_name, arg, context=None):
if not ids: return {}
res = {}
for id in ids:
res[id] = 20.0
for line in self.browse(cr, uid, ids, context=context):
if line.picking_id:
if line.picking_id.purchase_id:
if line.picking_id.purchase_id.penalty_id:
res[line.id] = 10.0
return res
_columns = {
'value_forpenalty': fields.float('Value', digits=(16,2)),
'actual_penalty': fields.function(_penalty, type='float', digits=(16,2), string='Penalty', store=True, select=True)
}
stock_move_custom()
注:penalty_idは、purchase.orderのカスタム子に追加されるmany2oneです。
Q1。私が得るのはペナルティの0だけです。20でも10でもない。何が悪いのだろうか?IDが空白であることが原因である場合、どうすればそれを回避できますか?
Q2。ペナルティを計算するために最終的に必要になるため、value_forpenaltyを関数に渡すにはどうすればよいですか?したがって、ユーザーがフォームのvalue_forpenaltyフィールドに値を入力すると(そして計算ボタンを押すか、理想的にはそれなしで)、値は計算のために関数に渡される必要があります。
ありがとう