Переопределить функцию JavaScript в Odoo 11? - PullRequest
0 голосов
/ 16 декабря 2018

Я хочу наследовать функцию add_product из models.Order.

Вот оригинальная функция

/ point_of_sale / static / src / js / models.js

  add_product: function(product, options){
    if(this._printed){
        this.destroy();
        return this.pos.get_order().add_product(product, options);
    }
    this.assert_editable();
    options = options || {};
    var attr = JSON.parse(JSON.stringify(product));
    attr.pos = this.pos;
    attr.order = this;
    var line = new exports.Orderline({}, {pos: this.pos, order: this, product: product});

    if(options.quantity !== undefined){
        line.set_quantity(options.quantity);
    }

    if(options.price !== undefined){
        line.set_unit_price(options.price);
    }

    //To substract from the unit price the included taxes mapped by the fiscal position
    this.fix_tax_included_price(line);

    if(options.discount !== undefined){
        line.set_discount(options.discount);
    }

    if(options.extras !== undefined){
        for (var prop in options.extras) {
            line[prop] = options.extras[prop];
        }
    }

    var to_merge_orderline;
    for (var i = 0; i < this.orderlines.length; i++) {
        if(this.orderlines.at(i).can_be_merged_with(line) && options.merge !== false){
            to_merge_orderline = this.orderlines.at(i);
        }
    }
    if (to_merge_orderline){
        to_merge_orderline.merge(line);
    } else {
        this.orderlines.add(line);
    }
    this.select_orderline(this.get_last_orderline());

    if(line.has_product_lot){
        this.display_lot_popup();
    }
},

Мне нужно добавить еще одно условие, например,

   if(options.is_promo !== undefined){
    line.set_promo(options.is_promo);
  }

},

Так что в моем пользовательском модуле я пробовал это,

  var _super_order = models.Order.prototype;
  models.Order = models.Order.extend({

add_product: function(product, options){
  if(options.is_promo !== undefined){
    line.set_promo(options.is_promo);
  }
   _super_order.add_product.apply(this,arguments);

},

Но это бросаетошибка, line не определена.

Как я могу это сделать?

...