From 8a18ef0c5a302850d05de801d01139e530173e02 Mon Sep 17 00:00:00 2001 From: Ravi Gohil Date: Fri, 2 Feb 2018 10:46:23 +0000 Subject: [PATCH 1/3] [FIX] base: allow property field to be set to False closes odoo/odoo#29147 --- odoo/addons/base/res/ir_property.py | 8 +++++--- odoo/addons/test_new_api/tests/test_new_fields.py | 6 ++++++ 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/odoo/addons/base/res/ir_property.py b/odoo/addons/base/res/ir_property.py index 5d714d33756..bedea3fa243 100644 --- a/odoo/addons/base/res/ir_property.py +++ b/odoo/addons/base/res/ir_property.py @@ -50,9 +50,9 @@ class Property(models.Model): @api.multi def _update_values(self, values): - value = values.pop('value', None) - if not value: + if 'value' not in values: return values + value = values.pop('value') prop = None type_ = values.get('type') @@ -68,7 +68,9 @@ class Property(models.Model): raise UserError(_('Invalid type')) if field == 'value_reference': - if isinstance(value, models.BaseModel): + if not value: + value = False + elif isinstance(value, models.BaseModel): value = '%s,%d' % (value._name, value.id) elif isinstance(value, (int, long)): field_id = values.get('fields_id') 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 aac6e13298c..16758292937 100644 --- a/odoo/addons/test_new_api/tests/test_new_fields.py +++ b/odoo/addons/test_new_api/tests/test_new_fields.py @@ -541,6 +541,12 @@ class TestFields(common.TransactionCase): self.assertEqual(record.sudo(user1).foo, 'alpha') self.assertEqual(record.sudo(user2).foo, 'default') + record.sudo(user1).foo = False + record.invalidate_cache() + self.assertEqual(record.sudo(user0).foo, 'main') + self.assertEqual(record.sudo(user1).foo, False) + self.assertEqual(record.sudo(user2).foo, 'default') + # create company record and attribute company_record = self.env['test_new_api.company'].create({'foo': 'ABC'}) attribute_record = self.env['test_new_api.company.attr'].create({ From 1d553eea7b4d2ea74e6a5014b0a08930552200ad Mon Sep 17 00:00:00 2001 From: Richard Mathot Date: Fri, 23 Nov 2018 09:57:38 +0000 Subject: [PATCH 2/3] [FIX] models.py: log the full traceback when record import fails Without the full stack trace, it is very hard for the developers to know why and where the record creation has failed. closes odoo/odoo#29143 --- odoo/models.py | 1 + 1 file changed, 1 insertion(+) diff --git a/odoo/models.py b/odoo/models.py index 785a616a743..db2c6ed2b90 100644 --- a/odoo/models.py +++ b/odoo/models.py @@ -893,6 +893,7 @@ class BaseModel(object): # avoid broken transaction) and keep going cr.execute('ROLLBACK TO SAVEPOINT model_load_save') except Exception as e: + _logger.exception("Error while loading record") message = (_('Unknown error during import:') + ' %s: %s' % (type(e), unicode(e.message or e.name))) moreinfo = _('Resolve other errors first') messages.append(dict(info, type='error', message=message, moreinfo=moreinfo)) From 80a11ca27dc8960638023a881deda30d15a5e214 Mon Sep 17 00:00:00 2001 From: Nicolas Martinelli Date: Thu, 29 Nov 2018 16:59:22 +0000 Subject: [PATCH 3/3] [FIX] report_intrastat: discount on invoice - Create an invoice with a discount - Validate - Open the Intrastat report The discount is not taken into account. opw-1913155 closes odoo/odoo#29161 --- addons/report_intrastat/report/report_intrastat_report.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/report_intrastat/report/report_intrastat_report.py b/addons/report_intrastat/report/report_intrastat_report.py index 012fd84ea1b..3ff63b4a4f6 100644 --- a/addons/report_intrastat/report/report_intrastat_report.py +++ b/addons/report_intrastat/report/report_intrastat_report.py @@ -36,7 +36,7 @@ class ReportIntrastat(models.Model): intrastat.id as intrastat_id, upper(inv_country.code) as code, sum(case when inv_line.price_unit is not null - then inv_line.price_unit * inv_line.quantity + then inv_line.price_unit * (1.0 - coalesce(inv_line.discount, 0.0) / 100.0) * inv_line.quantity else 0 end) as value, sum(