Skip to Content
Menú
This question has been flagged
2 Respostes
6988 Vistes

Odoo V8

I've added a global discount field that I want that I only want editable if the Public Pricelist is selected, unless the user is in the sale manager group, in which case they can edit irrespective of the pricelist selected.

.py

class sale_order(models.Model):
_inherit = 'sale.order'
    ct_global_discount = fields.Float('Global Discount')
    can_apply_discount = fields.Boolean(default=False)

@api.one
@api.onchange('pricelist_id')
def onchange_pricelist_id(self):
    if self.pricelist_id.name != 'Public Pricelist':
        self.ct_global_discount = 0
        if self.env.user.has_group('base.group_sale_manager'):
            self.can_apply_discount = True
        else:
            self.can_apply_discount = False
    else:     
        self.can_apply_discount = True

XML

<xpath expr="//group[@name='sale_total']" position="after">
<field name="can_apply_discount" invisible="1"/>
<field name="ct_global_discount" attrs="{'readonly': ['can_apply_discount', '=', False]}" />
</xpath>


I get an error that can_apply_discount does not exist. I can get this working using the old interface but can't for the life of me see how you get this working with the new API.

Avatar
Descartar
Autor

addition: I've also tried without @api.one but with no luck

Best Answer

Hello Graham Vickrage,

I have seen your scenario you gave attrs on " ct_global_discount " field its syntax is actually wrong.
its should be like this :

<field name="ct_global_discount" attrs="{'readonly':[('can_apply_discount', '=', False)]}"/>

and also small correction, when you add new fields through .py file, must add a label (field string).
e.g:

can_apply_discount = fields.Boolean(string="Can Apply Discount?" default=False)   

Thanks

Avatar
Descartar
Related Posts Respostes Vistes Activitat
1
de set. 17
5153
1
de set. 16
9037
1
de març 15
7973
4
d’oct. 19
9273
2
de juny 17
4106