Search code examples
pythonodoo

Odoo - add "%" next to float field in tree view


How can I add "%" next to value in tree view column for below field:

rec.reserved_qty_per = round(rec.sum_reserved_qty / rec.sum_dmd_qty * 100)

when I used to add (+ "%") it's giving me an error that can't mix between float and str fields.

enter image description here

Here's is my Code:

    sum_dmd_qty = fields.Float(compute='calculate_dmd_qty', string='Total Ordered Quantity', digits=(12,0))
    sum_reserved_qty = fields.Float(compute='calculate_reserved_qty', string='Total Ready Quantity', digits=(12,0))
    reserved_qty_per = fields.Float(compute='_compute_percentage', string='Ready (%)', digits=(12,0))

    @api.depends('sum_reserved_qty', 'sum_dmd_qty')
    def _compute_percentage(self):
        for rec in self:
            if rec.sum_dmd_qty:
                rec.reserved_qty_per = round(rec.sum_reserved_qty / rec.sum_dmd_qty * 100)

Solution

  • The easiest one is to change reserved_qty_per to a Char field.

        reserved_qty_per_chr = fields.Char(compute='_compute_percentage', string='Ready (%)')
    
        @api.depends('sum_reserved_qty', 'sum_dmd_qty')
        def _compute_percentage(self):
            for rec in self:
                if rec.sum_dmd_qty:
                    qty = round(rec.sum_reserved_qty / rec.sum_dmd_qty * 100)
                    rec.reserved_qty_per = "{0} {1}".format(qty,"%")