2017-06-16 253 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