Odoo Help

0

Modify action on button press

By
José
on 12/4/14, 2:29 PM 1,802 views

Hello, I want to modify the actions in the system when the user presses "Save" in the Pricelist Item form. (The ID is product.pricelist.item.form) in Odoo 8.

I learn the view, but there isn't a <button> element so I don't know what is the method called when the user presses "Save". How can I know that? So then, have I to override this method?

Thanks!

1
Ivan
On 12/4/14, 8:32 PM

It is the method "write" and "create".  Save button is not part of the view.

1
Anand
On 12/5/14, 12:43 AM

If you want your save button to do something you should write the below function in your module becozz this function is called when ever save button is clicked....

def create(self, cr, user, vals, context=None):

       ###### something you want#####
        return osv.osv.create(self, cr, user, vals, context=context)

Sorry Anand your code breaks inheritance as it calls osv.osv.create directly. The proper call would be return super(class_name, self).create(cr, user, vals, context=context) on v7.

Ivan
on 12/5/14, 1:01 AM

yes... you are right... thanks....Ivan

Anand
on 12/5/14, 1:09 AM
0
José
On 12/4/14, 10:34 PM

Ok, thanks. In what case have I to override "write" and in what case "create"?

write will be executed when an existing record is updated. Note that for write the vals in the method's argument will only contain those data that are updated. So, you might want to read/browse first if you need those data. Also write operates on multiple records (ids in the argument). create is called when a new record is created, the vals argument will contain all fields that are to be written and no ids in the arguments.

Ivan
on 12/4/14, 10:49 PM

You are very clear. I have understand perfectly. Thanks!

José
on 12/5/14, 1:11 PM

Sorry, in the case of write, why the ids are a collection? If I am updating a single record

José
on 12/5/14, 2:38 PM

It is just the way Odoo is written Jose. write expects a list for ids arguments. If you just updates one record, you put it in a list. pool.write(cr, uid, [id], vals, context=context). That'll do.

Ivan
on 12/8/14, 1:06 AM

About This Community

This platform 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.

Register

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

2 follower(s)

Stats

Asked: 12/4/14, 2:29 PM
Seen: 1802 times
Last updated: 3/16/15, 8:10 AM