diff --git a/addons/account/account.py b/addons/account/account.py index ecf346d2592..a841a299a67 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -681,7 +681,6 @@ class account_fiscalyear(osv.osv): _inherit = "account.fiscalyear" _description = "Fiscal Year" _columns = { - 'start_journal_period_id':fields.many2one('account.journal.period','New Entries Journal'), 'end_journal_period_id':fields.many2one('account.journal.period','End of Year Entries Journal', readonly=True), } diff --git a/addons/account/account_end_fy.xml b/addons/account/account_end_fy.xml index 8ac41eadd6d..ee2ad952e6a 100644 --- a/addons/account/account_end_fy.xml +++ b/addons/account/account_end_fy.xml @@ -3,13 +3,17 @@ - Close Period + Close a Period account.period form [('state','=','draft')] - + diff --git a/addons/account/account_move_line.py b/addons/account/account_move_line.py index 2e2a6913882..5bd28e505c6 100644 --- a/addons/account/account_move_line.py +++ b/addons/account/account_move_line.py @@ -558,7 +558,7 @@ class account_move_line(osv.osv): GROUP BY account_id,reconcile_id') r = cr.fetchall() #TODO: move this check to a constraint in the account_move_reconcile object - if len(r) != 1: + if (len(r) != 1) and context.get('same_account', True): raise osv.except_osv(_('Error'), _('Entries are not of the same account or already reconciled ! ')) if not unrec_lines: raise osv.except_osv(_('Error'), _('Entry is already reconciled')) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 5c5e2df1e82..8b8f3e0eb9e 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -16,7 +16,6 @@ - diff --git a/addons/account/account_wizard.xml b/addons/account/account_wizard.xml index b90e663712d..07a6ac6eecc 100644 --- a/addons/account/account_wizard.xml +++ b/addons/account/account_wizard.xml @@ -9,13 +9,27 @@ - + - - + + diff --git a/addons/account/invoice.py b/addons/account/invoice.py index 44a36e7c2d4..e0854cf3eae 100644 --- a/addons/account/invoice.py +++ b/addons/account/invoice.py @@ -107,8 +107,8 @@ class account_invoice(osv.osv): paid_amt = 0.0 to_pay = inv.amount_total for lines in inv.move_lines: - paid_amt = paid_amt + lines.credit + lines.debit - res[inv.id] = to_pay - paid_amt + paid_amt = paid_amt - lines.credit + lines.debit + res[inv.id] = to_pay - abs(paid_amt) return res def _get_lines(self, cr, uid, ids, name, arg, context=None): diff --git a/addons/account/wizard/wizard_fiscalyear_close.py b/addons/account/wizard/wizard_fiscalyear_close.py index 8af3ed8a353..3dd8c8f799f 100644 --- a/addons/account/wizard/wizard_fiscalyear_close.py +++ b/addons/account/wizard/wizard_fiscalyear_close.py @@ -29,7 +29,9 @@ _transaction_form = '''
- + + + @@ -37,6 +39,8 @@ _transaction_form = ''' _transaction_fields = { 'fy_id': {'string':'Fiscal Year to close', 'type':'many2one', 'relation': 'account.fiscalyear','required':True, 'domain':[('state','=','draft')]}, + 'journal_id': {'string':'Opening Entries Journal', 'type':'many2one', 'relation': 'account.journal','required':True}, + 'period_id': {'string':'Opening Entries Period', 'type':'many2one', 'relation': 'account.period','required':True, 'domain':"[('fiscalyear_id','=',fy2_id)]"}, 'fy2_id': {'string':'New Fiscal Year', 'type':'many2one', 'relation': 'account.fiscalyear', 'domain':[('state','=','draft')], 'required':True}, 'report_name': {'string':'Name of new entries', 'type':'char', 'size': 64, 'required':True}, 'sure': {'string':'Check this box', 'type':'boolean'}, @@ -53,18 +57,15 @@ def _data_save(self, cr, uid, data, context): fy_id = data['form']['fy_id'] new_fyear = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']) - start_jp = new_fyear.start_journal_period_id - periods_fy2 = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']).period_ids + periods_fy2 = new_fyear.period_ids if not periods_fy2: raise wizard.except_wizard(_('UserError'), _('There are no periods defined on New Fiscal Year.')) period=periods_fy2[0] - if not start_jp: - raise wizard.except_wizard(_('UserError'), - _('The new fiscal year should have a journal for new entries define on it')) - new_journal = start_jp.journal_id + new_journal = data['form']['journal_id'] + new_journal = pool.get('account.journal').browse(cr, uid, new_journal, context=context) if not new_journal.default_credit_account_id or not new_journal.default_debit_account_id: raise wizard.except_wizard(_('UserError'), @@ -160,13 +161,15 @@ def _data_save(self, cr, uid, data, context): ids = pool.get('account.move.line').search(cr, uid, [('journal_id','=',new_journal.id), ('period_id.fiscalyear_id','=',new_fyear.id)]) + context['same_account'] = False pool.get('account.move.line').reconcile(cr, uid, ids, context=context) - new_fyear = pool.get('account.fiscalyear').browse(cr, uid, data['form']['fy2_id']) - start_jp = new_fyear.start_journal_period_id - cr.execute('UPDATE account_fiscalyear ' \ - 'SET end_journal_period_id = %s ' \ - 'WHERE id = %s', (start_jp and start_jp.id or None, fy_id)) + new_period = data['form']['period_id'] + ids = pool.get('account.journal.period').search(cr, uid, [('journal_id','=',new_journal.id),('period_id','=',new_period)]) + if ids: + cr.execute('UPDATE account_fiscalyear ' \ + 'SET end_journal_period_id = %s ' \ + 'WHERE id = %s', (ids[0], new_fyear.id)) return {} class wiz_journal_close(wizard.interface): diff --git a/addons/account/wizard/wizard_open_closed_fiscalyear.py b/addons/account/wizard/wizard_open_closed_fiscalyear.py index 05e29cf24b4..0b8e2611c72 100644 --- a/addons/account/wizard/wizard_open_closed_fiscalyear.py +++ b/addons/account/wizard/wizard_open_closed_fiscalyear.py @@ -27,7 +27,7 @@ from tools.translate import _ form = """ - + """