Javascript-OpenERP:修改/替换POS模板视图

时间:2012-10-24 23:36:30

标签: javascript openerp

基本上,我试图在版本6.1中引入OpenERP的POS界面修改。我看到这个视图的布局可以在/static/src/xml/pos.xml找到。我想要的是从我自己的插件修改这个视图(因此,不改变原来的pos插件),据我所知,没有办法继承这个视图来添加更改(或者是吗?)。所以在研究模块之后,我试图覆盖它的js函数,在我自己的pos.xml中进行所有修改(原始pos.xml的副本,但名称为'PointOfSale_Mine'和其他修改)。到目前为止,我已经添加了我自己的.js,如下所示:

openerp.my_pos = function(db) {


db.point_of_sale.PointOfSale = db.point_of_sale.PointOfSale.extend({

    render: function() {
        this._super.apply(this,arguments);
        return qweb_template("PointOfSale_Mine")();

        //return this._super.qweb_template("PointOfSale_Mine")();
        //return db.point_of_sale.qweb_template("PointOfSale_Mine")();
        }
    })

};

当然,我收到错误“qweb_template未定义”作为我的JS技能,而且我对OpenERP6.1新Web框架的了解非常有限。我真的想知道如何调用原始'render'函数调用的相同方法(你可以在上面的代码中看到我的无用尝试)。或者我的整个方法是错误的,并且有更好的方法将我的更改引入模板?

提前致谢。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

确定。经过一些试验和错误后,我想出了这个代码来实现这个诀窍:

openerp.my_pos = function(db) {


db.point_of_sale.PointOfSale = db.point_of_sale.PointOfSale.extend({

    render: function() {
        var rend = this._super();

        var jdoc = $(rend);
        jdoc.find('.pos-payment-container').prepend('<input type="text" value=""/>')

        return jdoc[0].outerHTML;
        }
    })

};

它不会像我最初尝试的那样替换整个pos.xml模板,但它可能更好,因为您继承了当前模板并仅引入了您的修改(即使您必须 .prepend()很大一部分HTML代码)