yogakumboro
yogakumboro

Reputation: 127

odoo 9 get field value in current record

I want to add up a number and field value in current record, this is my code:

def _add(self, cr, uid, ids, context=None):
    state_id = self.pool.get('ga.cashadvance').browse(self, cr, uid, ids, self.state)
    res = chr(int(state_id) + 1)
    return res

class cashadvance(osv.osv):
    _name = 'ga.cashadvance'
    _columns = {
        'id_user'                   : fields.many2one('res.users', string='User', required=True, readonly=True),
        'description'               : fields.text('Description', required=True),
        'state'                     : fields.char('State', readonly=True, required=True),
    }

def addition(self, cr, uid, ids, context=None):
        return self.write(cr,uid,ids,{'state':_add(self, cr, uid, ids, context)},context=context)

the addition function refers to a button in view form, when I click to the button raise this error: AttributeError: 'ga.cashadvance' object has no attribute '_ids'

Need help please

Upvotes: 1

Views: 881

Answers (1)

CZoellner
CZoellner

Reputation: 14801

Just write the state on every button click without so much code:

class cashadvance(orm.Model):
    _name = 'ga.cashadvance'
    _columns = {
        'id_user': fields.many2one(
            'res.users', string='User', required=True, readonly=True),
        'description': fields.text('Description', required=True),
        'state': fields.char('State', readonly=True, required=True),
    }

    def addition(self, cr, uid, ids, context=None):
        for adv in self.browse(cr, uid, ids, context):
            new_state = chr(int(adv.state) + 1)
            adv.write({'state': new_state})
        return True

Upvotes: 1

Related Questions