diff --git a/modules/trade_finance/facility.py b/modules/trade_finance/facility.py index 2e9b22e..515c3d5 100644 --- a/modules/trade_finance/facility.py +++ b/modules/trade_finance/facility.py @@ -101,7 +101,8 @@ class Facility(ModelSQL, ModelView): depends=['is_tpa']) limits = fields.One2Many('trade_finance.facility_limit', 'facility', - 'Limits', domain=[('parent', '=', None)]) + 'Limits', domain=[('parent', '=', None)], + filter=[('parent', '=', None)]) currencies = fields.One2Many('trade_finance.facility_currency', 'facility', 'Accepted Currencies') caps = fields.One2Many('trade_finance.facility_cap', 'facility', 'Caps') diff --git a/modules/trade_finance/tests/test_module.py b/modules/trade_finance/tests/test_module.py index e297e22..8fb1945 100644 --- a/modules/trade_finance/tests/test_module.py +++ b/modules/trade_finance/tests/test_module.py @@ -61,6 +61,34 @@ class TradeFinanceTestCase(ModuleTestCase): self.assertEqual(child.date_from, root.date_from) self.assertEqual(child.date_to, root.date_to) + @with_transaction() + def test_facility_limits_only_returns_root_limits(self): + 'Test facility limits exclude nested sublimits' + pool = Pool() + Facility = pool.get('trade_finance.facility') + Limit = pool.get('trade_finance.facility_limit') + + facility, currency = self.create_facility() + root, = Limit.create([{ + 'facility': facility.id, + 'name': 'Global limit', + 'currency': currency.id, + 'amount': Decimal('100.00'), + 'date_from': date(2026, 1, 1), + 'date_to': date(2026, 12, 31), + }]) + child, = Limit.create([{ + 'parent': root.id, + 'name': 'Trading limit', + 'amount': Decimal('50.00'), + }]) + + facility = Facility(facility.id) + root = Limit(root.id) + + self.assertEqual(list(facility.limits), [root]) + self.assertEqual(list(root.children), [child]) + @with_transaction() def test_sublimit_dates_must_stay_within_parent(self): 'Test sublimit dates stay within parent dates'