diff --git a/modules/trade_finance/facility.py b/modules/trade_finance/facility.py index 0909192..9c40b4c 100644 --- a/modules/trade_finance/facility.py +++ b/modules/trade_finance/facility.py @@ -194,7 +194,9 @@ class FacilityLimit(ModelSQL, ModelView): _rec_name = 'name' facility = fields.Many2One('trade_finance.facility', 'Facility', - required=True, ondelete='CASCADE') + required=True, ondelete='CASCADE', + states={'readonly': Bool(Eval('parent'))}, + depends=['parent']) parent = fields.Many2One('trade_finance.facility_limit', 'Parent Limit', ondelete='RESTRICT', domain=[('facility', '=', Eval('facility'))], @@ -212,7 +214,9 @@ class FacilityLimit(ModelSQL, ModelView): sequence = fields.Integer('Sequence') is_global = fields.Function(fields.Boolean('Global Limit'), - 'get_is_global') + 'get_is_global', + states={'invisible': Bool(Eval('parent'))}, + depends=['parent']) haircuts = fields.One2Many('trade_finance.facility_limit_haircut', 'limit', 'Haircuts') @@ -232,6 +236,15 @@ class FacilityLimit(ModelSQL, ModelView): def default_sequence(): return 10 + @classmethod + def create(cls, vlist): + vlist = [v.copy() for v in vlist] + for values in vlist: + if values.get('parent') and not values.get('facility'): + parent = cls(values['parent']) + values['facility'] = parent.facility.id + return super().create(vlist) + def get_is_global(self, name): return self.parent is None diff --git a/modules/trade_finance/view/facility_limit_form.xml b/modules/trade_finance/view/facility_limit_form.xml index d798512..569a01a 100644 --- a/modules/trade_finance/view/facility_limit_form.xml +++ b/modules/trade_finance/view/facility_limit_form.xml @@ -1,41 +1,43 @@ -
- + + - + - + - + - + - + - + - + - +