Odoo Help

Welcome!

This community is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

0

How can I show integers measured fields instead floats in graph views in Odoo 8?

By
Eduardo BP
on 5/5/15, 10:38 PM 1,950 views

Hi Odoo developers,


In graph views, the measured fields are shown as floats by default instead of integers. How can I show them as integers?.

For instance, in the CRM module, I have a graph for opportunities which show the expected revenue in the x-axis and the opportunity stage in y.axis. The expected revenue is shown as a float (e.g 60,000.0). How can I show the expected revenue as an integer (e.g 60,000 instead of 60,000.0).

Thanks.

Version Odoo: Odoo 8

OS: Ubuntu 14.04


EDIT:

Here is my own example.

The Session model:

class Session(models.Model):
_name = 'openacademy.session'
name = fields.Char(required=True)
start_date = fields.Date(default=fields.Date.today())
end_date = fields.Date(string="End Date", store=True,
compute='_get_end_date', inverse='_set_end_date')
duration = fields.Float(digits=(3, 0), help="Duración en días")
seats = fields.Integer(string="Seats")
percent_taken_seats = fields.Float(string='Percentage of taken seats', compute='_taken_seats_percentage')
instructor_id = fields.Many2one('res.partner', ondelete='set null',
domain=['|', ('instructor', '=', True),
('category_id.name', 'ilike', 'Teacher')])
course_id = fields.Many2one('openacademy.course', ondelete='cascade')
attendees = fields.Many2many('res.partner', string='Attendees')
num_of_attendees = fields.Integer(string="Number of attendees", compute="_get_num_attendees", store=True)
active = fields.Boolean(default=True)
hours = fields.Integer(string="Duration in hours", compute='_get_hours')
color = fields.Integer()

...

@api.one @api.depends('attendees') def _get_num_attendees(self): self.num_of_attendees = len(self.attendees)

Part of the view:

<record model="ir.ui.view" id="session_graph_view">
<field name="name">session.graph</field>
<field name="model">openacademy.session</field>
<field name="arch" type="xml">
<graph string="Session graph" type="bar">
<field name="course_id"/>
<field name="num_of_attendees" type="measure"/>
<field name="duration" type="measure"/>
</graph>
</field>
</record>

Although the 'num_of_attendees' is a integer field in Session model, in the graph view it is shown as a float number. For instance, instead of showing 60 attendees (num_of_attendees=60), 60.00 is shown in the bar graph.


Just curious, why don't you convert all the numbers to integers for the graphs in place as doubles? Or do you absolutely need double's everywhere?

Yenthe
on 5/6/15, 2:03 AM

@Yenthe, about the CRM incorporated in Odoo by default, I don't know where I should realize the conversion from float to integer for the 'expected revenue' field. Anyway, I suspect that some kind of conversion to float is realized from the client side (in JavaScript). I say this because I have built a test module where I have a computed integer field (named num_of_attendees) in a module name Session (a course session), and this field is shown like a decimal in a graph view. class Session(models.Model): _name = 'openacademy.session' num_of_attendees = fields.Integer(string="Number of attendees", compute="_get_num_attendees", store=True) attendees = fields.Many2many('res.partner', string='Attendees') @api.one @api.depends('attendees') def _get_num_attendees(self): self.num_of_attendees = len(self.attendees) session.graph openacademy.session

Eduardo BP
on 5/6/15, 6:58 AM

@Eduardo the field 'expected revenue' can be found in the CRM module in your Python file (see https://github.com/odoo/odoo/blob/b74d830eb299c6d672c58f3b53410dde37608a5f/addons/crm/report/crm_lead_report.py#L53). You could *try* to change this to an integer in place of a float, but only do this on a test server because I'm not sure if the graphs etc absolutely need a double or not!

Yenthe
on 5/6/15, 8:00 AM

Thank you for your help @Yenth. I would prefer not to modify the core of the CRM module. But the problem is not only in CRM module. I have edited my original post to present my own example.

Eduardo BP
on 5/6/15, 1:31 PM

Your Answer

Please try to give a substantial answer. If you wanted to comment on the question or answer, just use the commenting tool. Please remember that you can always revise your answers - no need to answer the same question twice. Also, please don't forget to vote - it really helps to select the best questions and answers!

About This Community

This community is for professionals and enthusiasts of our products and services. Read Guidelines

Question tools

1 follower(s)

Stats

Asked: 5/5/15, 10:38 PM
Seen: 1950 times
Last updated: 5/6/15, 1:38 PM