2017-06-16 155 views
2

我想在销售点中扩展OrderWidget并在h2标签之间显示日期。在odoo中添加js 9

<script> 
    var d = new Date(); 
    var strDate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate(); 
    $("#div1").load(strDate); 
    </script> 

我继承OrderWidget的模板这样。

<?xml version="1.0" encoding="UTF-8"?> 
    <templates id="template" xml:space="preserve"> 
    <t t-extend="OrderWidget" > 
    <t t-jquery=".order-empty" t-operation="append"> 
      <h2 id="div1"></h2> 
    </t> 
    </t> 
    </templates> 

我在哪里可以把脚本放在上面的例子中?

回答

2

您正确继承了OrderWidget模板。

<?xml version="1.0" encoding="UTF-8"?> 
    <templates id="template" xml:space="preserve"> 
      <t t-extend="OrderWidget" > 
       <t t-jquery=".order-empty" t-operation="append"> 
       <h2><span t-esc="strDt"/></h2> 
       </t> 
      </t> 
    </templates> 

所以,现在你需要设置日期间<h2 id="div1"></h2>

可以包括这样的OrderWidget。

然后,您需要创建一个.js文件以包含您的自定义代码,比如说order_extend.js。

odoo.define('your_module.order_extend', function (require) { 
"use strict"; 
var screens = require('point_of_sale.screens'); 
var core = require('web.core'); 
var QWeb = core.qweb; 
var _t = core._t; 

screens.OrderWidget.include({ 
renderElement: function(scrollbottom){ 
    var order = this.pos.get_order(); 
    if (!order) { 
     return; 
    } 
    var orderlines = order.get_orderlines(); 

    var d = new Date(); 
    var strDate = d.getFullYear() + "/" + (d.getMonth()+1) + "/" + d.getDate(); 
    var el_str = QWeb.render('OrderWidget',{widget:this, order:order, orderlines:orderlines,strDt:strDate}); 

    var el_node = document.createElement('div'); 
     el_node.innerHTML = _.str.trim(el_str); 
     el_node = el_node.childNodes[0]; 


    var list_container = el_node.querySelector('.orderlines'); 
    for(var i = 0, len = orderlines.length; i < len; i++){ 
     var orderline = this.render_orderline(orderlines[i]); 
     list_container.appendChild(orderline); 
    } 

    if(this.el && this.el.parentNode){ 
     this.el.parentNode.replaceChild(el_node,this.el); 
    } 
    this.el = el_node; 
    this.update_summary(); 

    if(scrollbottom){ 
     this.el.querySelector('.order-scroller').scrollTop = 100 * orderlines.length; 
    } 

}, 
}); 

    }); 

而这个js文件需要在xml文件中这样添加到pos后端。

例如。 TEMPLATE.XML

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

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

    </data> 
</openerp> 

而且TEMPLATE.XML你需要在的OpenERP .py文件中添加这样的数据部分该XML文件。

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

我希望这个答案值得你。

+0

Tnx求助我复制你的例子,但不工作。我会尝试找到问题。 – Pointer

+0

我在我身边试过了。可能是在做任何错误。或者可能是你没有清除浏览器的缓存。尝试缓存清除后。 –

+0

在我的odoo 9版本无法正常工作的同时,我也无法解决任何错误! – Pointer