diff --git a/trytond/model/fields/field.py b/trytond/model/fields/field.py index 44baf4dc71..0e59d17443 100644 --- a/trytond/model/fields/field.py +++ b/trytond/model/fields/field.py @@ -605,7 +605,7 @@ class FieldTranslate(Field): column = Coalesce(NullIf(column, ''), translation.value) language = get_parent_language(language) - return [Coalesce(column, self.sql_column(table))] + return [Coalesce(NullIf(column, ''), self.sql_column(table))] def definition(self, model, language): definition = super().definition(model, language) diff --git a/trytond/tests/test_modelsql.py b/trytond/tests/test_modelsql.py index c65a10fa1b..25354c29d2 100644 --- a/trytond/tests/test_modelsql.py +++ b/trytond/tests/test_modelsql.py @@ -776,6 +776,31 @@ class ModelSQLTranslationTestCase(TranslationTestCase): self.assertEqual(record.name, "Foo") self.assertEqual(other.name, "Baz") + @with_transaction() + def test_order_empty_translation(self): + "Test order on empty translation value" + pool = Pool() + Model = pool.get('test.modelsql.translation') + Translation = pool.get('ir.translation') + + with Transaction().set_context(language=self.default_language): + records = Model.create( + [{'name': "A"}, {'name': "B"}, {'name': "C"}]) + + translation, = Translation.search([ + ('lang', '=', self.default_language), + ('name', '=', 'test.modelsql.translation,name'), + ('type', '=', 'model'), + ('res_id', '=', records[1].id), + ]) + translation.value = '' + translation.save() + + with Transaction().set_context(language=self.default_language): + self.assertEqual( + Model.search([], order=[('name', 'ASC')]), + records) + @with_transaction() def test_search_unique_result(self): "Test unique result on search"