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`)返信用
おかげ例で
custom_edit_button
であることをご__openerp__.py
お知らせのQWEBセクションにファイルを追加します。 'sale.order'のフィールドは、有効期限が現在の日付を超える場合にのみ編集モードを有効にします。 – 111sree
編集ボタンが現れたら、あなたはそのレコードのIDを持っていないので、あなたはそうすることはできないと思う。別のオプションは、各フィールドまたはグループまたはフィールドで 'attrs'属性を使うことです。 – ChesuCR
答えが更新されました。 – ChesuCR