openerp - Type error: argument 2 to map() must support iteration -
i getting error: type error: argument 2 map() must support iteration when trying save. view rendered correctly , calculations way want. when click on save, mentioned error. believe problem type of object passing write. can please suggest change should make below code fix issue?
below code:
class export_rebate(osv.osv): _name = 'export.rebate' def _cal_difference(self, cr, uid, ids, field_names, arg=none, context=none): res = {} item in self.browse(cr, uid, ids, context=context): res[item.id] = item.rebate_amount or 0.0 - item.amount_received or 0.0 return res def _get_quantity (self, cr, uid, ids, field_names, arg=none, context=none): res = {} line in self.browse(cr,uid,ids,context=context): qty = 0.0 invoice = line.invoice_id if invoice , invoice.invoice_line: invline in invoice.invoice_line: qty += invline.quantity res[line.id] = qty return res def onchange_invoice_id(self, cr, uid, ids, invoice_id): print 'on_change called' res = {} if invoice_id: inv = self.pool.get('account.invoice').browse(cr, uid, invoice_id) res['date_invoice'] = inv.date_invoice or false res['form_e_num'] = inv.form_e_num or false res['form_e_date'] = inv.form_e_date or false res['invoice_line'] = [x.id x in inv.invoice_line or []] return {'value': res} _columns = { 'invoice_id': fields.many2one('account.invoice', 'invoice no.'), 'type': fields.char('type', size=64, readonly=true, select=true), 'state': fields.char('status', select=true, readonly=true), 'date_invoice': fields.related('invoice_id', 'date_invoice', string='invoice date', relation='account.invoice', type='date', readonly=true), 'form_e_num': fields.related('invoice_id', 'form_e_num', string='form e no.', relation='account.invoice', type='char', readonly=true), 'form_e_date': fields.related('invoice_id', 'form_e_date', string='form e date', relation='account.invoice', type='date', readonly=true), 'invoice_line': fields.related('invoice_id', 'id', relation='account.invoice.line', type='one2many', readonly=true), 'quantity': fields.function(_get_quantity, type='float', digits=(16,2), string='quantity', store=true, readonly=true), 'rebate_file_num': fields.char('rebate file no.', size=64, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'claim_file_date': fields.date('claim file date', select=true, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'rebate_amount': fields.float('rebate amount', digits=(16,2), states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'rebate_rate': fields.float('rebate rate', digits=(16,2), states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'gd_num': fields.char('g.d. no.', size=64, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'gd_date': fields.date('g.d. date', select=true, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'prc_date': fields.date('prc date', select=true, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'claim_sbmt_date': fields.date('claim submission date', select=true, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'cheque_num': fields.char('cheque no.', size=64, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'cheque_date': fields.date('cheque date', select=true, states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'amount_received': fields.float('amount received', digits=(16,2), states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'net_amt_rcvd': fields.float('net amount received', digits=(16,2), states={'draft': [('readonly', false)], 'sent': [('readonly', false)]}), 'difference': fields.function(_cal_difference, type='float', digits=(16,2), string='difference', store=true, readonly=true) } _default = { 'quantity': 0.00 } export_rebate()
i think problem in onchange_invoice_id method.
this 1 seems suspicious res['invoice_line'] = [x.id x in inv.invoice_line or []]. try after comment line.
Comments
Post a Comment