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 @@
-
+
@@ -30,20 +30,19 @@
-
-
-
+ domain="[('parent', '=', None)]"/>
-
-
+
+
+
+
+
diff --git a/modules/trade_finance/view/facility_limit_tree.xml b/modules/trade_finance/view/facility_limit_tree.xml
index 42e32dc..4fda557 100644
--- a/modules/trade_finance/view/facility_limit_tree.xml
+++ b/modules/trade_finance/view/facility_limit_tree.xml
@@ -1,4 +1,4 @@
-
+