diff --git a/account_journal_period_close/model/account_journal_period.py b/account_journal_period_close/model/account_journal_period.py index d6cafbb29..4ac693e94 100644 --- a/account_journal_period_close/model/account_journal_period.py +++ b/account_journal_period_close/model/account_journal_period.py @@ -41,6 +41,11 @@ class AccountJournalPeriod(orm.Model): store=True, readonly=True) } + _sql_constraints = [ + ('journal_period_uniq', 'unique(period_id, journal_id)', + 'You can not add same journal in the same period twice.'), + ] + def _check(self, cr, uid, ids, context=None): return True @@ -71,7 +76,7 @@ class AccountJournalPeriod(orm.Model): period = self.pool.get('account.period')\ .browse(cr, uid, values['period_id'], context=context) values.update({'name': (journal.code or journal.name)+':' + - (period.name or '')}), + (period.name or '')}) return super(AccountJournalPeriod, self).create(cr, uid, values, diff --git a/account_journal_period_close/tests/test_account_journal_period_close.py b/account_journal_period_close/tests/test_account_journal_period_close.py index ed175a425..0e3a6dd05 100644 --- a/account_journal_period_close/tests/test_account_journal_period_close.py +++ b/account_journal_period_close/tests/test_account_journal_period_close.py @@ -30,6 +30,7 @@ import openerp.tests.common as common from openerp.osv import orm from datetime import datetime +from psycopg2 import IntegrityError DB = common.DB ADMIN_USER_ID = common.ADMIN_USER_ID @@ -194,3 +195,14 @@ class TestAccountConstraintChronology(common.TransactionCase): jour_per_obj.action_done, self.cr, self.uid, journal_period_ids, context=context) + + def test_duplicate_journal_period(self): + context = {} + journal_id = self.ref('account.sales_journal') + period_id = self.ref('account.period_1') + create_journal_period(self, period_id, journal_id, context) + # I check if the exception is correctly raised at adding both same + # journal on a period + self.assertRaises(IntegrityError, + create_journal_period, + self, period_id, journal_id, context)