2017-09-06 3 views
1

Im essayant d'ajouter une coutume widget de similaire à HeaderButtonWidget ou StatusWidget, mais je ne suis pas en mesure de le faire encore: ma première tentative:dans odoo 10, comment puis-je modifier le point de vente pour ajouter un nouveau widget en-tête?

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); 
     }, 
    }); 

mais cela ne fonctionne pas, et HeaderButtonWidget n'est pas retourné par la méthode principale de point_of_sale/statique/src/js/screens.js donc selon cette page: http://odoo-development.readthedocs.io/en/latest/dev/pos/gui.html donc en utilisant le widget d'écran étendre n'est pas possible, comment puis-je faire cela?

EDIT: Voici ce que j'ai essayé:

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 
    }; 
}); 

et 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> 

Im toujours pas en mesure de voir quoi que ce soit,

+0

Dites-moi exactement ce que vous voulez créer? Nouvel écran ou changements dans l'écran existant? –

+0

Ajouter un nouveau widget à côté de la fermeture et le bouton wifi sur POS. – user122508

+0

Vous pouvez vous référer au module de réception de réimpression. De cela, vous pouvez obtenir une référence facilement. Parce qu'ils font de même ce que vous avez demandé. –

Répondre

1

Pour créer un nouveau widget

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/statique/src/xml/file.xml

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

Ajouter ce fichier modèle dans votre manifeste.

your_custom_module/__ manifest__.py

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

espère que ça vous aidera.

+0

que diriez-vous de la spécification de modèle? Je ne vois pas un ID pour hériter juste t-name – user122508

+0

dois-je le faire dans point_of_sale.chrome? Je travaille sur un module séparé. – user122508

+0

Mis à jour ma réponse, vous pouvez créer un nouveau widget à partir de votre module personnalisé. – KbiR