diff --git a/account_type_inactive/__init__.py b/account_type_inactive/__init__.py index 9a7e03ede..0650744f6 100644 --- a/account_type_inactive/__init__.py +++ b/account_type_inactive/__init__.py @@ -1 +1 @@ -from . import models \ No newline at end of file +from . import models diff --git a/account_type_inactive/models/account_type.py b/account_type_inactive/models/account_type.py index a479b2601..f963c7b9a 100644 --- a/account_type_inactive/models/account_type.py +++ b/account_type_inactive/models/account_type.py @@ -19,5 +19,5 @@ class AccountAccountType(models.Model): ('user_type_id', '=', self.id)]) if accounts: raise ValidationError(_('You cannot inactive this account type' - ' as this type is is used on %d ' + ' as this type is used on %d ' 'accounts.' % len(accounts))) diff --git a/account_type_inactive/tests/__init__.py b/account_type_inactive/tests/__init__.py new file mode 100644 index 000000000..1fc122e1f --- /dev/null +++ b/account_type_inactive/tests/__init__.py @@ -0,0 +1,3 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). diff --git a/account_type_inactive/tests/test_account_type_inactive.py b/account_type_inactive/tests/test_account_type_inactive.py new file mode 100644 index 000000000..1c3355449 --- /dev/null +++ b/account_type_inactive/tests/test_account_type_inactive.py @@ -0,0 +1,73 @@ +# -*- coding: utf-8 -*- +# Copyright 2017 Camptocamp SA +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo.tests.common import TransactionCase +from odoo.exceptions import ValidationError + + +class TestAccountTypeInactive(TransactionCase): + + def setUp(self): + super(TestAccountTypeInactive, self).setUp() + + self.income_type = self.env.ref('account.data_account_type_revenue') + self.payable_type = self.env.ref('account.data_account_type_payable') + self.custom_type = self.env['account.account.type'].create({ + 'name': 'Custom', + 'type': 'other' + }) + + self.journal = self.env['account.journal'].create({ + 'name': 'Test journal', + 'code': 'TEST', + 'type': 'sale', + }) + self.account_income = self.env['account.account'].create({ + 'name': 'Test income', + 'code': 'REV', + 'user_type_id': self.income_type.id + }) + self.account_payable = self.env['account.account'].create({ + 'name': 'Test payable', + 'code': 'PAY', + 'reconcile': True, + 'user_type_id': self.payable_type.id + }) + + def test_inactive(self): + + self.custom_type.active = False + # Check inactive account doesn't appear in search + active_types = self.env['account.account.type'].search([]) + self.assertNotIn(self.custom_type, active_types) + self.custom_type.active = True + + # Create move + self.env['account.move'].create({ + 'journal_id': self.journal.id, + 'line_ids': [(0, 0, { + 'name': 'debit payable', + 'debit': 20, + 'credit': 0, + 'account_id': self.account_payable.id, + }), (0, 0, { + 'name': 'credit income', + 'debit': 0, + 'credit': 20, + 'account_id': self.account_income.id, + })] + }) + + with self.assertRaises(ValidationError): + self.income_type.active = False + + income_accounts = self.env['account.account'].search([ + ('user_type_id', '=', self.income_type.id)]) + + income_accounts.write({ + 'user_type_id': self.custom_type.id + }) + + self.income_type.active = False + self.assertFalse(self.income_type.active) diff --git a/account_type_inactive/views/account_type.xml b/account_type_inactive/views/account_type.xml index 9ad4f94a8..12dc0df6a 100644 --- a/account_type_inactive/views/account_type.xml +++ b/account_type_inactive/views/account_type.xml @@ -10,4 +10,4 @@ - \ No newline at end of file +