2016-10-10 23 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. И, с другой стороны, вы должны добавить этот шаблон или что-то подобное, чтобы показать форму. Добавить файл в разделе Qweb вашего __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> 

Обратите внимание, что имя моего модуля в примере custom_edit_button

+0

спасибо за ответ, что я пытаюсь основан на существующей дате истечения срока действия ('validity_date') поле на 'sale.order', включите режим редактирования, только если дата истечения превышает текущую дату. – 111sree

+0

Ммм Я думаю, вы не можете этого сделать, потому что у вас нет идентификатора записи, когда появляется кнопка редактирования. Другой вариант - использовать атрибут attrs в каждом поле или группе или в полях. – ChesuCR

+0

Я обновил свой ответ, проверьте, полезен ли он для вас – ChesuCR