继承 Odoo 10 中的 POS Javascript 函数

Inherit POS Javascript function in Odoo 10

我正在尝试继承和修改point_of_sale模块已有的js功能。 这是我需要继承的功能

models.js

exports.Orderline = Backbone.Model.extend({
set_quantity: function(quantity){
    console.log('quantity',quantity);
    this.order.assert_editable();
    if(quantity === 'remove'){
        this.order.remove_orderline(this);
        return;
    }else{
        var quant = parseFloat(quantity) || 0;
        var unit = this.get_unit();
        if(unit){
            if (unit.rounding) {
                this.quantity    = round_pr(quant, unit.rounding);
                var decimals = this.pos.dp['Product Unit of Measure'];
                this.quantityStr = formats.format_value(round_di(this.quantity, decimals), { type: 'float', digits: [69, decimals]});
            } else {
                this.quantity    = round_pr(quant, 1);
                this.quantityStr = this.quantity.toFixed(0);
            }
        }else{
            this.quantity    = quant;
            this.quantityStr = '' + this.quantity;
        }
    }
    this.trigger('change',this);
},
});

这是我的代码:

pos_model.js

odoo.define('point_of_sale.models_inherit', function (require) {
"use strict";

   var module = require('point_of_sale.models');
   module.include({

   set_quantity: function(quantity){
       console.log('initialize');
             }


     }); 

 });

现在我在控制台中收到一个错误,例如,

 `module.include is not a function`

我如何继承它?

我认为您需要使用 module.Orderline.include 而不是 module.include [source], as point_of_sale.models is an object.

odoo.define('point_of_sale.models_inherit', function (require) {
    "use strict";

    var module = require('point_of_sale.models');
    module.Orderline.include({
        set_quantity: function(quantity) {
            console.log('initialize');
        }
    });

});

试试下面的代码片段!!已在 Odoo v10.0

中测试
odoo.define('point_of_sale.models', function (require) {
"use strict";

var models = require('point_of_sale.models');

var _super_orderline = models.Orderline.prototype;

models.Orderline = models.Orderline.extend({
    set_quantity: function(quantity){

        // Call SUPER method!!
        _super_orderline.set_quantity.apply(this,arguments);

        // =============
        // DO YOUR STUFF
        // =============

    }
});

});

顺便说一句,您可以在 odoo 10 中找到相同的示例... 检查 multiprint.js 个文件!!