From 9160712352572da2c91c49f8c65b19f026637b5f Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 24 May 2012 10:04:43 +0200 Subject: [PATCH] [FIX] account: add a last closing balance on the cash register object bzr revid: stw@openerp.com-20120524080443-jv4rjvkmjcgs6db5 --- addons/account/account_cash_statement.py | 42 ++++++++++++++++++++++++ addons/account/account_view.xml | 2 +- 2 files changed, 43 insertions(+), 1 deletion(-) diff --git a/addons/account/account_cash_statement.py b/addons/account/account_cash_statement.py index cf88fff2041..3c0cd4a3f6c 100644 --- a/addons/account/account_cash_statement.py +++ b/addons/account/account_cash_statement.py @@ -127,6 +127,47 @@ class account_cash_statement(osv.osv): return result + def _compute_last_closing_balance(self, cr, uid, ids, fieldnames, args, context=None): + result = dict.fromkeys(ids, 0.0) + + for obj in self.browse(cr, uid, ids, context=context): + if obj.state == 'draft': + self.search(cr, uid, + [('journal_id', '=', journal_id),('state', '=', 'closed')], + order='create_date desc', + limit=1, + context=context + ) + + if not statement_ids: + return result + + st = self.browse(cr, uid, statement_ids[0], context=context) + result[obj.id] = st.balance_end_real + + return result + + def onchange_journal_id(self, cr, uid, ids, journal_id, context=None): + result = super(account_cash_statement, self).on_change_journal_id(cr, uid, ids, journal_id) + + if not journal_id: + return result + + statement_ids = self.search(cr, uid, + [('journal_id', '=', journal_id),('state', '=', 'closed')], + order='create_date desc', + limit=1, + context=context + ) + + if not statement_ids: + return result + + st = self.browse(cr, uid, statement_ids[0], context=context) + result.setdefault('value', {}).update({'last_closing_balance' : st.balance_end_real}) + + return result + _columns = { 'total_entry_encoding': fields.function(_get_sum_entry_encoding, string="Total Cash Transactions", store = { @@ -139,6 +180,7 @@ class account_cash_statement(osv.osv): 'closing_details_ids' : fields.one2many('account.cashbox.line', 'bank_statement_id', string='Closing Cashbox Lines'), 'user_id': fields.many2one('res.users', 'Responsible', required=False), 'difference' : fields.function(_compute_difference, method=True, string="Difference", type="float"), + 'last_closing_balance' : fields.function(_compute_last_closing_balance, method=True, string='Last Closing Balance', type='float', store=True), } _defaults = { 'state': 'draft', diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 5c5fd28b0f9..64eb718bd47 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2732,12 +2732,12 @@ action = pool.get('res.config').next(cr, uid, [], context) + -