在odoo 10中为pos创建一个小部件

时间:2017-09-07 10:30:07

标签: openerp odoo-10

我尝试创建自定义小部件,

*。JS

odoo.define('pos_widget',function (require) {
var PosBaseWidget = require('point_of_sale.BaseWidget');
aleert('Alert One');//It alerts
var NewWidget = PosBaseWidget.extend({
template: 'NewWidget',
init: function(parent,options){
     alert('Alert Two inside init function'); // It not alerts       
     var self = this;
  },
});

});

但在控制台上收到错误:

Error: Service pos_widget already defined  boot.js:119:27
No type for action Object { context: Object }  action_manager.js:631:13
error: Some modules could not be started 
Failed modules:          Array [ "point_of_sale.chrome" ] 
Non loaded modules:      Array [ "point_of_sale.main" ] 
Debug:                   Object { point_of_sale.main: Object, point_of_sale.chrome: Object } 

注意    我已经在chrome.js文件(point_of_sale模块)中直接添加了这些行,并且可以正常工作。但不是在自定义模块中。

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

您使用的名称似乎是冲突'pos_widget'

将其更改为您的like modulename.pos_custom_widget

答案 1 :(得分:1)

检查xml文件中给出的js文件的路径。它应该是这样的:

XML文件:

<?xml version="1.0" encoding="utf-8"?>

    <template id="assets" inherit_id="point_of_sale.assets">
      <xpath expr="." position="inside">
          <script type="text/javascript" src="/custom_module/static/src/js/js_file.js"></script>
       </xpath>
    </template>

之后对于js文件应该是这样的:

JS档案:

odoo.define('custom_module.file_name', function (require) {
"use strict";
var PosBaseWidget = require('point_of_sale.BaseWidget');
var TableWidget = PosBaseWidget.extend({
template: 'TableWidget',
init: function(parent, options){
    this._super(parent, options);
    alert("Custom Widget");
}
});
});

之后在清单中添加xml文件,如下所示:

清单文件:

'data': [
     'views/pos_restaurant_views.xml',
    ],

此后,您还必须在xml文件中创建qweb模板。并在清单中添加此qweb temlpate,如下所示:

清单中的qweb模板

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

在此之后运行您的POS。