diff --git a/modules/trade_finance/constraint_type.py b/modules/trade_finance/constraint_type.py index 41f54fe..1dc09bc 100644 --- a/modules/trade_finance/constraint_type.py +++ b/modules/trade_finance/constraint_type.py @@ -13,18 +13,42 @@ class ConstraintType(ModelSQL, ModelView): _rec_name = 'name' name = fields.Char('Type', required=True, size=50) - view_name = fields.Selection('get_views_selection', 'View') - value_field = fields.Many2One('ir.model.field', 'Value Field', - ondelete='RESTRICT') - label_field = fields.Many2One('ir.model.field', 'Label Field', - ondelete='RESTRICT') + view_name = fields.Selection([], 'View') + value_field = fields.Selection( + 'get_column_selection', 'Value Field', + selection_change_with=['view_name']) + label_field = fields.Selection( + 'get_column_selection', 'Label Field', + selection_change_with=['view_name']) - @classmethod - def get_views_selection(cls): + @fields.depends('view_name') + def get_column_selection(self): + if not self.view_name: + return [('', '')] cursor = Transaction().connection.cursor() cursor.execute( - "SELECT table_name FROM information_schema.views " - "WHERE table_schema = 'public' AND table_name LIKE 'vw_tf_const_%' " - "ORDER BY table_name" + "SELECT column_name FROM information_schema.columns " + "WHERE table_schema = 'public' AND table_name = %s " + "ORDER BY ordinal_position", + (self.view_name,) ) return [('', '')] + [(r[0], r[0]) for r in cursor.fetchall()] + + @fields.depends('view_name') + def on_change_view_name(self): + self.value_field = None + self.label_field = None + + @classmethod + def fields_get(cls, fields_names=None, level=0): + res = super().fields_get(fields_names, level) + if 'view_name' in res: + cursor = Transaction().connection.cursor() + cursor.execute( + "SELECT table_name FROM information_schema.views " + "WHERE table_schema = 'public' AND table_name LIKE 'vw_tf_const_%' " + "ORDER BY table_name" + ) + res['view_name']['selection'] = ( + [('', '')] + [(r[0], r[0]) for r in cursor.fetchall()]) + return res diff --git a/modules/trade_finance/facility.py b/modules/trade_finance/facility.py index 215e28a..8cff530 100644 --- a/modules/trade_finance/facility.py +++ b/modules/trade_finance/facility.py @@ -115,6 +115,15 @@ class Facility(ModelSQL, ModelView): 'facility', 'Facility Constraints', domain=[('limit', '=', None)]) + @classmethod + def default_status(cls): + pool = Pool() + FacilityStatus = pool.get('trade_finance.facility_status') + statuses = FacilityStatus.search([('code', '=', 'DRAFT')], limit=1) + if statuses: + return statuses[0].id + return None + @staticmethod def default_commitment_status(): return 'uncommitted' @@ -140,6 +149,10 @@ class FacilityCurrency(ModelSQL, ModelView): 'FX Haircut Formula', ondelete='RESTRICT') fx_feeder = fields.Many2One('trade_finance.fx_feeder', 'FX Rate Feeder', ondelete='RESTRICT') + valuation_method = fields.Many2One('trade_finance.valuation_method', + 'Valuation Method', ondelete='RESTRICT') + date_from = fields.Date('Valid From') + date_to = fields.Date('Valid To') # --------------------------------------------------------------------------- @@ -476,3 +489,9 @@ class FacilityConstraint(ModelSQL, ModelView): 'Constraint Type', required=True, ondelete='RESTRICT') is_exclusion = fields.Boolean('Exclusion', help='Checked = Exclusion constraint, unchecked = Inclusion constraint') + date_from = fields.Date('Valid From') + date_to = fields.Date('Valid To') + + @staticmethod + def default_is_exclusion(): + return False diff --git a/modules/trade_finance/facility.xml b/modules/trade_finance/facility.xml index 1382dba..e88f1df 100644 --- a/modules/trade_finance/facility.xml +++ b/modules/trade_finance/facility.xml @@ -15,6 +15,16 @@ + + + + + + DRAFT + Draft + + + diff --git a/modules/trade_finance/view/facility_constraint_tree.xml b/modules/trade_finance/view/facility_constraint_tree.xml index dd51296..9ce4a5d 100644 --- a/modules/trade_finance/view/facility_constraint_tree.xml +++ b/modules/trade_finance/view/facility_constraint_tree.xml @@ -1,4 +1,6 @@ + + diff --git a/modules/trade_finance/view/facility_currency_tree.xml b/modules/trade_finance/view/facility_currency_tree.xml index 859f9f9..050403c 100644 --- a/modules/trade_finance/view/facility_currency_tree.xml +++ b/modules/trade_finance/view/facility_currency_tree.xml @@ -1,5 +1,8 @@ + + + diff --git a/modules/trade_finance/view/facility_form.xml b/modules/trade_finance/view/facility_form.xml index 4bc6377..88b9a09 100644 --- a/modules/trade_finance/view/facility_form.xml +++ b/modules/trade_finance/view/facility_form.xml @@ -3,7 +3,7 @@