diff --git a/addons/account/account.py b/addons/account/account.py index df446abc3bc..f32c6b7b853 100644 --- a/addons/account/account.py +++ b/addons/account/account.py @@ -716,6 +716,7 @@ class account_journal(osv.osv): _name = "account.journal" _description = "Journal" _columns = { + 'with_last_closing_balance' : fields.boolean('Opening With Last Closing Balance'), 'name': fields.char('Journal Name', size=64, required=True), 'code': fields.char('Code', size=5, required=True, help="The code will be displayed on reports."), 'type': fields.selection([('sale', 'Sale'),('sale_refund','Sale Refund'), ('purchase', 'Purchase'), ('purchase_refund','Purchase Refund'), ('cash', 'Cash'), ('bank', 'Bank and Cheques'), ('general', 'General'), ('situation', 'Opening/Closing Situation')], 'Type', size=32, required=True, @@ -746,6 +747,7 @@ class account_journal(osv.osv): } _defaults = { + 'with_last_closing_balance' : False, 'user_id': lambda self, cr, uid, context: uid, 'company_id': lambda self, cr, uid, c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, } diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 2ea269d93ae..83d2e6264c3 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -487,6 +487,7 @@ + diff --git a/addons/point_of_sale/account_bank_statement.py b/addons/point_of_sale/account_bank_statement.py index 9a64185659c..367d94fd8f5 100644 --- a/addons/point_of_sale/account_bank_statement.py +++ b/addons/point_of_sale/account_bank_statement.py @@ -31,7 +31,6 @@ class account_journal(osv.osv): 'closing_control': fields.boolean('Closing Control', help="If you want the journal should be control at closing, check this option"), 'amount_authorized_diff' : fields.float('Amount Authorized Difference'), - } _defaults = { 'opening_control' : True, diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 4f688797d09..10c09dbe4ad 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -198,6 +198,14 @@ class pos_session(osv.osv): return result + def _compute_show_closing_control(self, cr, uid, ids, fieldnames, args, context=None): + result = dict.fromkeys(ids, False) + + for session in self.browse(cr, uid, ids, context=context): + result[session.id] = any(journal.closing_control == True for journal in session.config_id.journal_ids) + + return result + _columns = { 'config_id' : fields.many2one('pos.config', 'PoS', required=True, @@ -242,14 +250,40 @@ class pos_session(osv.osv): type='one2many', relation='account.cashbox.line', string='CashBox Lines'), - 'cash_register_date' : fields.related('cash_register_id', 'date', type='datetime', string='Started On'), - 'cash_register_closing_date' : fields.related('cash_register_id', 'closing_date', type='datetime', string='Closed On'), - 'cash_register_balance_end_real' : fields.related('cash_register_id', 'balance_end_real', type='float', digits_compute=dp.get_precision('Account'), string="Ending Balance"), - 'cash_register_balance_start' : fields.related('cash_register_id', 'balance_start', type='float', digits_compute=dp.get_precision('Account'), string="Starting Balance"), - 'cash_register_total_entry_encoding' : fields.related('cash_register_id', 'total_entry_encoding', string='Total Cash Transaction'), - 'cash_register_balance_end' : fields.related('cash_register_id', 'balance_end', type='float', digits_compute=dp.get_precision('Account'), string="Computed Balance"), - 'cash_register_balance_end_cash' : fields.related('cash_register_id', 'balance_end_cash', string='Closing Balance', help="Closing balance based on cashBox"), - 'cash_register_difference' : fields.related('cash_register_id', 'difference', type='float', string='Difference'), + 'cash_register_date' : fields.related('cash_register_id', 'date', + type='datetime', + string='Started On', + readonly=True), + 'cash_register_closing_date' : fields.related('cash_register_id', 'closing_date', + type='datetime', + string='Closed On', + readonly=True), + 'cash_register_balance_end_real' : fields.related('cash_register_id', 'balance_end_real', + type='float', + digits_compute=dp.get_precision('Account'), + string="Ending Balance", + readonly=True), + 'cash_register_balance_start' : fields.related('cash_register_id', 'balance_start', + type='float', + digits_compute=dp.get_precision('Account'), + string="Starting Balance", + readonly=True), + 'cash_register_total_entry_encoding' : fields.related('cash_register_id', 'total_entry_encoding', + string='Total Cash Transaction', + readonly=True), + 'cash_register_balance_end' : fields.related('cash_register_id', 'balance_end', + type='float', + digits_compute=dp.get_precision('Account'), + string="Computed Balance", + readonly=True), + 'cash_register_balance_end_cash' : fields.related('cash_register_id', 'balance_end_cash', + string='Closing Balance', + help="Closing balance based on cashBox", + readonly=True), + 'cash_register_difference' : fields.related('cash_register_id', 'difference', + type='float', + string='Difference', + readonly=True), 'journal_ids' : fields.related('config_id', 'journal_ids', type='many2many', @@ -259,6 +293,7 @@ class pos_session(osv.osv): 'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'), 'statement_ids' : fields.one2many('account.bank.statement', 'pos_session_id', 'Bank Statement', readonly=True), + 'show_closing_control': fields.function(_compute_show_closing_control, method=True, type='boolean', string='Show Closing Control Button'), } _defaults = { @@ -290,7 +325,7 @@ class pos_session(osv.osv): for session in self.browse(cr, uid, ids, context=None): domain = [ ('state', '!=', 'closed'), - ('config_id', '=', session.config.id), + ('config_id', '=', session.config_id.id), ('id', '!=', session.id), ] @@ -301,7 +336,7 @@ class pos_session(osv.osv): return True - _constraints = [ + _constraints2 = [ (_check_unicity, "You can create a new session, you have an existing and non closed session !", ['user_id', 'state']), (_check_pos_config, "There is an existing session for the PoS Config", ['config_id']), ] @@ -373,6 +408,18 @@ class pos_session(osv.osv): self._confirm_orders(cr, uid, ids, context=context) return self.write(cr, uid, ids, {'state' : 'closed'}, context=context) + def has_opening_control(self, cr, uid, ids, context=None): + return any(journal.opening_control == True + for session in self.browse(cr, uid, ids, context=context) + for journal in session.config_id.journal_ids) + + def has_closing_control(self, cr, uid, ids, context=None): + result = any(journal.closing_control == True + for session in self.browse(cr, uid, ids, context=context) + for journal in session.config_id.journal_ids) + print "result: %r" % (result,) + return result + def _confirm_orders(self, cr, uid, ids, context=None): wf_service = netsvc.LocalService("workflow") diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index d28b9045630..58e26c5f05a 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -884,7 +884,7 @@ - + @@ -942,14 +942,20 @@ + + + - +