Odoo Help


Problems of synchronisation between datas and BDD

on 5/2/16, 9:50 AM 377 views

Hi, I started a few weeks ago with odoo 9 and now, I'm building a module that inherit from point of sales : A loyalty module. One of the things I want to realize is a reduction coupon system (physical tickets with a code that is entered in the sale interface and recognized as a determined amount of reduction).

So, the class of coupons is :

class loyalty_coupon(osv.osv):
    _name = 'loyalty.coupon'
    _columns = {
        'name':                 fields.char('Name', size=32, select=1, required=True, help='An internal identification for this loyalty coupon'),
        'loyalty_program_id':   fields.many2one('loyalty.program', 'Loyalty Program', help='The Loyalty Program this coupon belongs to'),
        'reduction':       fields.float('Reduction', help='The amount of reduction of this coupon in EUR'),
        'date':                 fields.date('Date Limit', help='The date limit of the coupon'),
        'used':           fields.boolean('Used',        help='The state of the coupon, used or not used'),
        'commande':         fields.many2one('pos.order', 'Order', help="If used, it's the order this coupon belongs to"),

    _defaults = {
        'used': False,
        'date': datetime.date.today(),

But my problem is in the sale interface where I use this function :

var _super = models.Order;
models.Order = models.Order.extend({
    apply_coupon: function(coupon){
        for (var i = 0; i < this.pos.loyalty.coupons.length; i++) {
            if (coupon.reduction === this.pos.loyalty.coupons[i].reduction && coupon.name === this.pos.loyalty.coupons[i].name) {
                this.pos.loyalty.coupons[i].used = true;

In the interface, the coupon "used" attribute is right passed to true where the coupon is used.

But, when I'm looking to views or the database or also when I refresh the page, the coupon is unused ('used' = false).

I did lots of research and I understood that I need to synchronize datas in the interface with real datas in the database. The problem is that I don't know how to do this.

Sorry for potentials mistakes in English and thank you in advance for your help !


On 5/3/16, 4:27 AM

Ok I've seen that with openerp 7, we could use the function fetch to access database :

fetch: function(model, fields, domain, ctx){

return new instance.web.Model(model).query(fields).filter(domain).context(ctx).all()


But my js file start with :

odoo.define('pos_loyalty.pos_loyalty', function (require) {

"use strict";

As a consequence, instance is not defined and I can't use fetch.

Is there any equivalent for Odoo 9 ?

Maybe, this could be the solution I'm searching ?

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


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

1 follower(s)


Asked: 5/2/16, 9:50 AM
Seen: 377 times
Last updated: 5/3/16, 4:27 AM