from datetime import date

from openerp.tests.common import TransactionCase
from openerp.osv.orm import except_orm

class TestPeriodState(TransactionCase):
    """
    Forbid creation of Journal Entries for a closed period.
    """

    def setUp(self):
        super(TestPeriodState, self).setUp()
        cr, uid = self.cr, self.uid
        self.wizard_period_close = self.registry('account.period.close')
        self.wizard_period_close_id = self.wizard_period_close.create(cr, uid, {'sure': 1})
        _, self.sale_journal_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "sales_journal")
        _, self.period_id = self.registry("ir.model.data").get_object_reference(cr, uid, "account", "period_0")

    def test_period_state(self):
        cr, uid = self.cr, self.uid
        self.wizard_period_close.data_save(cr, uid, [self.wizard_period_close_id], {
            'lang': 'en_US',
            'active_model': 'account.period',
            'active_ids': [self.period_id],
            'tz': False,
            'active_id': self.period_id
        })
        with self.assertRaises(except_orm):
            self.registry('account.move').create(cr, uid, {
                'name': '/',
                'period_id': self.period_id,
                'journal_id': self.sale_journal_id,
                'date': date.today(),
                'line_id': [(0, 0, {
                        'name': 'foo',
                        'debit': 10,
                    }), (0, 0, {
                        'name': 'bar',
                        'credit': 10,
                    })]
            })
