Yes, it's possible using custom widget and quite simple.
you'll need to write your widget in javascript lets say with a name: "my_widget"
under static/src/js/ folder in your module add javascript file with a custom widget (say static/src/js/mywidget.js):
openerp.your_module_name = function (instance) {
instance.web.list.columns.add('field.your_widget_name', 'instance.your_module_name.your_widget_name');
instance.your_module_name.your_widget_name = instance.web.list.Column.extend({
_format: function (row_data, options) {
res = this._super.apply(this, arguments);
var amount = parseFloat(res);
if (amount < 0){
return "<font color='#ff0000'>"+(-amount)+"</font>";
}
return res
}
});
//
//here you can add more widgets if you need, as above...
//
};
the above example widget can be used in a list view for field of type float and it displays a content in red if value < 0, also "hides" '-' sign. adapt it to your requirements.
don't forget to add javascript file to your module:
in v7.0 through __openerp__.py manifest:
'js':['static/src/js/mywidget.js'],
in v8.0 through XML file:
<template id="assets_backend" name="your_module_name assets" inherit_id="web.assets_backend">
<xpath expr="." position="inside">
<script type="text/javascript" src="/your_module_name/static/src/js/mywidget.js"></script>
</xpath>
</template>
then in your tree view, use this widget for the column you need to apply your rules to:
<tree >
....
<field name="field_name" widget="my_widget"/>
....
</tree>
do not forget to add 'web' as dependency in __openerp__.py:
'depends': ['web',....]
that's it.