У меня есть поле функций, которое не дает никаких ошибок, но также не устанавливает никаких значений, даже если это необходимо.openerp fields.function не влияет на значение
код:
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 является many2one добавлен к пользовательскому ребенку purchase.order.
Q1. Все, что я получаю, - 0 за штраф. Ни 20, ни 10. Что может быть неправильным? Если это из-за пустых идентификаторов, как мне обойти это?
Q2. Как передать значение_forpenalty в функцию, поскольку мне в конечном итоге понадобится ее для расчета штрафа? Поэтому, когда пользователь вводит значение для поля value_forpenalty в форме (и нажмите кнопку расчета или, в идеале, без этого), значение должно быть передано функции для вычисления.
Благодаря
Спасибо ... Я буду стараться это. –