2016-10-10 8 views
0

特定の条件で編集ボタンを制御するモジュールを作成したいと思います。私はjsで次のコードを試してみましたが、何の効果もありませんでした。だから私はjsの関数を拡張する方法を知りたいです。どのように私はこの機能(編集ボタン)をJavaScriptのOdoo内で拡張できますか?

formView.include({ 
    init:function(){ 

     var edits = new Model('sale.order'); 
     edits.query(['validity_date']); 
     console.log(validity_date) 
     }, 
    on_button_edit: function(){ 
     this._super(); 

答えて

1

jsファイルに次のような記述ができます。私はあなたを助けるいくつかの例を書いた。

openerp.custom_edit_button = function (instance) { 
    var _t = instance.web._t; 

    instance.web.FormView.include({ 
     init: function() { 
      console.log('JS loaded') 
      this._super.apply(this, arguments); 
     }, 

     to_edit_mode: function(){ 
      // examples of useful methods 
      var field_values = this.get_fields_values(); 
      var ids = this.get_selected_ids(); 
      var id = field_values['id']; 
      var date = field_values['date']; 
      var model = this.model; 

      console.log(field_values) 
      console.log(ids) 
      console.log(id) 
      console.log(model) 
      console.log(date) 
      console.log(Date.today()) 

      date_to_compare = new Date(date); 
      console.log(date_to_compare) 

      if(date_to_compare < Date.today()){ 
       error = this.error; 
       var QWeb = instance.web.qweb; 
       var dialog = new instance.web.Dialog(this, { 
        title: _t("Set new expiry date"), 
        width: '30%', 
        size: 'medium', 
        /*dialogClass: 'oe_act_window',*/ 
        buttons: [ 
          { text: _t("OK"), click: function() { self.set_new_expiry_date(); }}, 
          { text: _t("Close"), click: function() { dialog.close(); return; } 
          },       
         ], 
       }, QWeb.render('custom_edit_button.expiry_date_form', {error: error})).open(); 

      } 

      this._super(); 
     } 
    }); 
} 

有効期限が過去である場合、フォームはそれを変更するように見えます。メソッドset_new_expiry_dateも定義する必要があります。また、一方で、このテンプレート、またはフォームを表示するのに似たものを追加する必要があります。私のモジュールの名前は、私は、既存の有効期限に基づいていますしようとしています何( `validity_date`)返信用

+0

おかげ例でcustom_edit_buttonであることをご__openerp__.py

<templates xml:space="preserve"> <div t-name="custom_edit_button.expiry_date_form" > <div class="form-group"> <label for="date" class="control-label">New expiry date:</label> <input name="date" class="form-control"/> </div> </div> </templates> 

お知らせのQWEBセクションにファイルを追加します。 'sale.order'のフィールドは、有効期限が現在の日付を超える場合にのみ編集モードを有効にします。 – 111sree

+0

編集ボタンが現れたら、あなたはそのレコードのIDを持っていないので、あなたはそうすることはできないと思う。別のオプションは、各フィールドまたはグループまたはフィールドで 'attrs'属性を使うことです。 – ChesuCR

+0

答えが更新されました。 – ChesuCR

関連する問題