跳至內容
選單
此問題已被標幟
2 回覆
6997 瀏覽次數

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.

頭像
捨棄
作者

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

最佳答案

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

頭像
捨棄
相關帖文 回覆 瀏覽次數 活動
1
9月 17
5167
1
9月 16
9048
1
3月 15
7979
4
10月 19
9274
2
6月 17
4117