Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

Pass value through 'Validate' button.

By
Arjun Khode
on 4/3/15, 3:35 AM 661 views

Hi

I have a receipt form that lets you register payments. Now I wanna take the amount entered AFTER pressing the validate button and use it in another model. How can I do that?

2

Cyril Gaspard (GEM)

--Cyril Gaspard (GEM)--
4136
| 5 6 8
Paris, France
--Cyril Gaspard (GEM)--

Forum contributor since 2008

Cyril Gaspard (GEM)
On 4/4/15, 6:01 AM

Hi,

you must have a relation field between class account voucher (but you do not give this information), with example I give after, with field voucher_id in class record, and use a field type related or function (use function type for better performance) depending of the amount field in class voucher which will give the value in the field amount in record class when field amount change in class voucher.

Never use an onchange for that because if I do a write from a function in current class or a write from an other class in this field, the onchange will be not used and the value will not change in the record class.



from openerp import models, fields, api


class Record(models.Model):

    _name= 'record'

   

    voucher_id = fields.Many2one('account.voucher', 'Voucher')

    amount = fields.Float(compute='_get_voucher_amount', string='Voucher amount')


    @api.one

    @api.depends('voucher_id', 'voucher_id.amount')

    def _get_voucher_amount(self):

        self.amount = self.voucher_id.amount

Bye

I'm getting this error when I run it: ProgrammingError: column record.voucher_id does not exist

Arjun Khode
on 4/5/15, 2:31 AM

Hi Cyril, I managed to get it working. But in my 'amount':fields.float(compute='_get_voucher_amount',string="Voucher Amount"), the _get_voucher_amount is not getting called. I have put a print statement in it but it just doesn't show.

Arjun Khode
on 4/5/15, 5:43 AM

update my code, forgot to add voucher_id in @depends, now when you will change voucher_id in class record, or amount in class account voucher, amount in class record will be updated, bye

Cyril Gaspard (GEM)
on 4/5/15, 9:32 PM

Cyril still the function _get_voucher_amount is not getting called..

Arjun Khode
on 4/7/15, 2:10 AM
1
Demirel yakito
On 4/3/15, 7:04 AM

here i using odoo 8. after press the amount in account.voucher model. u can get the amount value in another model. for that u just simply inherit the model in ur current model and use that value in ur current model.

from openerp import models, fields, api, _

class account_voucher(models.Model):

_inherit = 'account.voucher'

@api.multi

def onchange_amount(self, amount, rate, partner_id, journal_id, currency_id, ttype, date, payment_rate_currency_id, company_id):

print amount

return True

Thanks. How do I set the value of amount to the value of another variable which is in a model called 'record' ? Like record.amt=amount

Arjun Khode
on 4/3/15, 7:15 AM

yes. you simply assign tht amount to another value. like self.field_name=amount.

Demirel yakito
on 4/3/15, 8:28 AM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 4/3/15, 3:35 AM
Seen: 661 times
Last updated: 4/5/15, 9:29 PM