在odoo 10中,如何修改POS以添加新的标题小部件?

时间:2017-09-06 21:03:24

标签: python-2.7 openerp odoo-10 qweb

我正在尝试添加类似于HeaderButtonWidgetStatusWidget的自定义窗口小部件,但我还是无法做到: 我的第一次尝试:

odoo.define('my_module.pos', function(require) {
    "use strict";    
    var chrome  = require('point_of_sale.chrome');
    var _t = core._t;
    var _lt = core._lt;
    ...
    var AltHeader = chrome.HeaderButtonWidget.extend({
        template : 'AltHeader',
        init: function(parent, options){
            options = options || {};
            this._super(parent, options);
            this.action = options.action;
            this.label   = options.label;
        },
        renderElement: function(){
            var self = this;
            this._super();
        },
        button_click: function(){ console.log("its a hit") },
        highlight: function(highlight){
        this.$el.toggleClass('highlight',!!highlight);
        },
    });

但是这不起作用,并且Point_of_sale / static / src / js / screens.js的main方法没有返回HeaderButtonWidget,所以根据这个页面: http://odoo-development.readthedocs.io/en/latest/dev/pos/gui.html所以使用屏幕小部件扩展是不可能的,我该怎么做?

编辑: 以下是我的尝试:

odoo.define('pos_widget_toggler.pos', function (require) {
"use strict";
  var PosBaseWidget = require('point_of_sale.BaseWidget');
  var core = require('web.core');
  var _t = core._t;
  var _lt = core._lt;
  var AltHeader = PosBaseWidget.extend({
  template: 'AltHeader',
  init: function(parent,options){
            this._super(parent, options);
            this.label = _lt('OFF');
            this.action= function(){
                // code will be here
                } ;
       },
    });

  return{
    AltHeader:AltHeader
    };
});

pos_widget_toggler.xml

    <templates id="pos_widget_toggler" inherit_id="point_of_sale.template" xml:space="preserve">
    <t t-name="AltHeader">
        <div class="oe_status">
            <t t-esc="widget.label" />
        </div>
    </t>
   </templates>

我仍然看不到任何东西,

1 个答案:

答案 0 :(得分:1)

要创建新窗口小部件,

odoo.define('point_of_sale.chrome', function (require) {
"use strict";
  var PosBaseWidget = require('point_of_sale.BaseWidget');
  var AltHeader = PosBaseWidget.extend({
  template: 'AltHeader',
  init: function(parent, options){
    //Your code
       } 
    });

  return{
     AltHeader:AltHeader
 };
});

<强> YOUR_CUSTOM_MODULE /静态/ SRC / XML / file.xml

<t t-name="AltHeader">
    <div class="oe_status">
        // Your code
    </div>
</t>

在清单中添加此模板文件。

<强> YOUR_CUSTOM_MODULE / __清单__。PY

'qweb': ['static/src/xml/pos.xml'],

希望它会对你有所帮助。