summaryrefslogtreecommitdiff
path: root/odoo/addons/test_new_api
diff options
context:
space:
mode:
Diffstat (limited to 'odoo/addons/test_new_api')
-rw-r--r--odoo/addons/test_new_api/ir.model.access.csv4
-rw-r--r--odoo/addons/test_new_api/models.py35
-rw-r--r--odoo/addons/test_new_api/tests/test_new_fields.py20
3 files changed, 59 insertions, 0 deletions
diff --git a/odoo/addons/test_new_api/ir.model.access.csv b/odoo/addons/test_new_api/ir.model.access.csv
index c825fb51c59..77c881dcc4d 100644
--- a/odoo/addons/test_new_api/ir.model.access.csv
+++ b/odoo/addons/test_new_api/ir.model.access.csv
@@ -22,3 +22,7 @@ access_test_new_api_multi_compute_inverse,access_test_new_api_multi_compute_inve
access_test_new_api_recursive,access_test_new_api_recursive,model_test_new_api_recursive,,1,1,1,1
access_test_new_api_cascade,access_test_new_api_cascade,model_test_new_api_cascade,,1,1,1,1
access_test_new_api_binary_svg,access_test_new_api_binary_svg,model_test_new_api_binary_svg,,1,1,1,1
+access_test_new_api_monetary_base,access_test_new_api_monetary_base,model_test_new_api_monetary_base,,1,1,1,1
+access_test_new_api_monetary_related,access_test_new_api_monetary_related,model_test_new_api_monetary_related,,1,1,1,1
+access_test_new_api_monetary_custom,access_test_new_api_monetary_custom,model_test_new_api_monetary_custom,,1,1,1,1
+access_test_new_api_monetary_inherits,access_test_new_api_monetary_inherits,model_test_new_api_monetary_inherits,,1,1,1,1
diff --git a/odoo/addons/test_new_api/models.py b/odoo/addons/test_new_api/models.py
index 043ee8a0b7d..7d7ad777b44 100644
--- a/odoo/addons/test_new_api/models.py
+++ b/odoo/addons/test_new_api/models.py
@@ -468,3 +468,38 @@ class BinarySvg(models.Model):
name = fields.Char(required=True)
image_attachment = fields.Binary(attachment=True)
image_wo_attachment = fields.Binary(attachment=False)
+
+
+class MonetaryBase(models.Model):
+ _name = 'test_new_api.monetary_base'
+ _description = 'Monetary Base'
+
+ base_currency_id = fields.Many2one('res.currency')
+ amount = fields.Monetary(currency_field='base_currency_id')
+
+
+class MonetaryRelated(models.Model):
+ _name = 'test_new_api.monetary_related'
+ _description = 'Monetary Related'
+
+ monetary_id = fields.Many2one('test_new_api.monetary_base')
+ currency_id = fields.Many2one('res.currency', related='monetary_id.base_currency_id')
+ amount = fields.Monetary(related='monetary_id.amount')
+
+
+class MonetaryCustom(models.Model):
+ _name = 'test_new_api.monetary_custom'
+ _description = 'Monetary Related Custom'
+
+ monetary_id = fields.Many2one('test_new_api.monetary_base')
+ x_currency_id = fields.Many2one('res.currency', related='monetary_id.base_currency_id')
+ x_amount = fields.Monetary(related='monetary_id.amount')
+
+
+class MonetaryInherits(models.Model):
+ _name = 'test_new_api.monetary_inherits'
+ _description = 'Monetary Inherits'
+ _inherits = {'test_new_api.monetary_base': 'monetary_id'}
+
+ monetary_id = fields.Many2one('test_new_api.monetary_base', required=True, ondelete='cascade')
+ currency_id = fields.Many2one('res.currency')
diff --git a/odoo/addons/test_new_api/tests/test_new_fields.py b/odoo/addons/test_new_api/tests/test_new_fields.py
index caa4eedf4bf..9b3da038c5c 100644
--- a/odoo/addons/test_new_api/tests/test_new_fields.py
+++ b/odoo/addons/test_new_api/tests/test_new_fields.py
@@ -1054,6 +1054,26 @@ class TestFields(common.TransactionCase):
])
self.assertEqual(attachment.mimetype, 'text/plain')
+ def test_93_monetary_related(self):
+ """ Check the currency field on related monetary fields. """
+ # check base field
+ field = self.env['test_new_api.monetary_base']._fields['amount']
+ self.assertEqual(field.currency_field, 'base_currency_id')
+
+ # related fields must use the field 'currency_id' or 'x_currency_id'
+ field = self.env['test_new_api.monetary_related']._fields['amount']
+ self.assertEqual(field.related, ('monetary_id', 'amount'))
+ self.assertEqual(field.currency_field, 'currency_id')
+
+ field = self.env['test_new_api.monetary_custom']._fields['x_amount']
+ self.assertEqual(field.related, ('monetary_id', 'amount'))
+ self.assertEqual(field.currency_field, 'x_currency_id')
+
+ # inherited field must use the same field as its parent field
+ field = self.env['test_new_api.monetary_inherits']._fields['amount']
+ self.assertEqual(field.related, ('monetary_id', 'amount'))
+ self.assertEqual(field.currency_field, 'base_currency_id')
+
class TestX2many(common.TransactionCase):
def test_search_many2many(self):