當(dāng)狀態(tài)為草稿或者結(jié)算時(shí)候,顯示結(jié)算。
已審核狀態(tài)
當(dāng)進(jìn)行結(jié)算操作,狀態(tài)變?yōu)椤狡谑湛睢蛘咂渌麪顟B(tài)時(shí),就顯示單據(jù)狀態(tài)
到期收款狀態(tài)
背書狀態(tài)
model.py 文件, 'dynamic_state'選項(xiàng)為動態(tài)顯示的內(nèi)容
state = fields.Selection([
('draft', '草稿'),
('verify', '已審核'),
('due_payment', '到期收款'),
('discount', '貼現(xiàn)'),
('endorsement', '背書'),
('endorsement_return', '背書退回'),
('bill_return', '票據(jù)退回'),
('dynamic_state', '結(jié)算'), # 動態(tài)顯示,設(shè)置默認(rèn)值為'結(jié)算'
], string='單據(jù)狀態(tài)', copy=False, index=True, track_visibility='onchange', track_sequence=3, default='draft')
xml文件, 'dynamic_state' 會根據(jù)單據(jù)的狀態(tài)動態(tài)顯示 dynamic_visible屬性中的值
<field name="state" widget="statusbar" readonly="1" statusbar_visible="draft,verify,dynamic_state"
dynamic_visible="due_payment,discount,endorsement,endorsement_return,bill_return"/>
js文件,繼承relational_fields.js 。FieldStatus的widget進(jìn)行重寫。
odoo.define('ps_base.statusbar_dynamic_visible', function (require) {
"use strict";
var relational_fields = require('web.relational_fields');
relational_fields.FieldStatus.include({
_setState: function () {
var self = this;
if (this.field.type === 'many2one') {
this.status_information = _.map(this.record.specialData[this.name], function (info) {
return _.extend({
selected: info.id === self.value.res_id,
}, info);
});
} else {
var selection = this.field.selection;
if (this.attrs.statusbar_visible) {
var restriction = this.attrs.statusbar_visible;
if (this.attrs.dynamic_visible) {
var dynamic_state = this.attrs.dynamic_visible.split(",");
if (dynamic_state.indexOf(self.value) !== -1) {
restriction = restriction.replace('dynamic_state', self.value);
}
}
restriction = restriction.split(",");
selection = _.filter(selection, function (val) {
return _.contains(restriction, val[0]) || val[0] === self.value;
});
}
this.status_information = _.map(selection, function (val) {
return {id: val[0], display_name: val[1], selected: val[0] === self.value, fold: false};
});
}
},
});
}
);
====================================================================================================================================