扩展PoS模块Odoo 8.x(formely OpenERP)?

时间:2015-02-25 01:23:24

标签: openerp odoo

我需要在Odoo 8的PoS模块中进行一些自定义。

为此,我创建了一个模块调用“cus_pos”。使用此代码,我扩展了界面:

<?xml version="1.0" encoding="UTF-8"?>
    <templates xml:space="preserve">
        <t t-extend="PosWidget">
            <t t-jquery="div.pos-leftpane > div.window > div:last" t-operation="after">
            <div class="payment-lines">
                <div class="paymentline selected">
                    <!-- trigger an error <t t-esc="widget.get_list_salespersons()" /> -->
                    <div class="paymentline-name"> Salesperson: </div>
                    <select id="salesperson-select" class="paymentline-input">
                    </select> 
                </div>
            </div>
        </t>
    </t>
</templates> 

但是当我尝试扩展小部件“PosWidget”时,要添加一个方法来填充选择“salesperson-select”,我得到这个错误“错误:QWeb2 - template ['PosWidget']:运行时错误:TypeError: dict.widget.get_list_salespersons不是函数“。

为了扩展“PosWidget”我试过这个策略:

一:

openerp.cus_pos = function(instance) {
    template: 'PosWidget',
    var module = instance.point_of_sale;

    module.PosWidget = module.PosWidget.extend({
        get_list_salespersons: function() {
            console.log("Hurray!!!");
        }
    }); 
}

二:

function openerp_pos_salesperson(instance, module) { //module is instance.point_of_sale
    var module = instance.point_of_sale;
    var QWeb = instance.web.qweb;
    _t = instance.web._t;

    module.SalePersonWidget = module.PosWidget.include({
        template: 'PosWidget',

        get_list_salespersons: function() {
            console.log("Hurray!!!");
        }        
    });
}

三:

function openerp_pos_saleperson(instance, module) { //module is instance.point_of_sale
    var module = instance.point_of_sale;
    var QWeb = instance.web.qweb;
    _t = instance.web._t;

    module.SalePersonWidget = module.PosWidget.include({
        template: 'PosWidget',

        get_list_salespersons: function() {
            console.log("Hurray!!!");
        }        
    });
}

(function() {
    var _super = window.openerp.point_of_sale;
    window.openerp.point_of_sale = function(instance) {
        _super(instance);
        var module = instance.point_of_sale;
        openerp_pos_vendedor(instance,module);
    }
})();

四:

openerp.cus_pos = function(instance) {
    var module = instance.point_of_sale; 
    var _super_ = module.PosWidget.prototype.get_list_salespersons;

    module.PosWidget.prototype.get_list_salespersons = function() {
        console.log("Hurray!!!");
        _super_.call(this);
    };
};

搜索我找到的http://thierry-godin.developpez.com/openerp/tutorial-module-creation-pos-modification-english-version/#LI但过时的文档。

对我的问题的任何帮助都将是一个很大的帮助。非常感谢

1 个答案:

答案 0 :(得分:3)

是的,Thierry Godin写了关于V7的东西,但现在很多东西在V8中已经过时了。 你应该在gitHub / OCA / POS上的OCA中检查新的V8模块

你也可以看看Odoo论坛。

之后,如果您仍然被阻止,我可以检查您的问题。

有两种方法可以使现有的Odoo POS超载:

(取决于对象的种类。)

顺便说一句,你的模块的目标是什么?

亲切的问候。