From 97de9d6d3ffcd5417d73d89d2145b7bab736d35d Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 5 Sep 2012 17:05:38 +0200 Subject: [PATCH] [FIX] point_of_sale: Set the right account for the internal account. [REF] point_of_sale: Review the code for the Take Money Out and Push Money In. [FIX] point_of_sale: Can post a session with an order in the invoiced state. bzr revid: stw@openerp.com-20120905150538-v9ex7wehyebft7tu --- addons/account/demo/account_minimal.xml | 2 +- addons/account/wizard/pos_box.py | 22 +++++++---------- addons/point_of_sale/point_of_sale.py | 2 +- addons/point_of_sale/point_of_sale_view.xml | 10 ++++---- addons/point_of_sale/wizard/pos_box.py | 27 +++++++++++++++++++-- 5 files changed, 41 insertions(+), 22 deletions(-) diff --git a/addons/account/demo/account_minimal.xml b/addons/account/demo/account_minimal.xml index b7bc34a3e35..94b3d2d4085 100644 --- a/addons/account/demo/account_minimal.xml +++ b/addons/account/demo/account_minimal.xml @@ -383,7 +383,7 @@ cash - + diff --git a/addons/account/wizard/pos_box.py b/addons/account/wizard/pos_box.py index b4254b5ba84..b5d1cc37776 100644 --- a/addons/account/wizard/pos_box.py +++ b/addons/account/wizard/pos_box.py @@ -40,6 +40,10 @@ class CashBox(osv.osv_memory): return {} + def _create_bank_statement_line(self, cr, uid, box, record, context=None): + values = self._compute_values_for_statement_line(cr, uid, box, record, context=context) + return self.pool.get('account.bank.statement.line').create(cr, uid, values, context=context) + class CashBoxIn(CashBox): _name = 'cash.box.in' @@ -49,30 +53,24 @@ class CashBoxIn(CashBox): 'ref' : fields.char('Reference', size=32), }) - def _create_bank_statement_line(self, cr, uid, box, record, context=None): - absl_proxy = self.pool.get('account.bank.statement.line') - - values = { + def _compute_values_for_statement_line(self, cr, uid, box, record, context=None): + return { 'statement_id' : record.id, 'journal_id' : record.journal_id.id, 'account_id' : record.journal_id.internal_account_id.id, 'amount' : box.amount or 0.0, - 'ref' : "%s" % (box.ref or ''), + 'ref' : '%s' % (box.ref or ''), 'name' : box.name, } - return absl_proxy.create(cr, uid, values, context=context) - CashBoxIn() class CashBoxOut(CashBox): _name = 'cash.box.out' - def _create_bank_statement_line(self, cr, uid, box, record, context=None): - absl_proxy = self.pool.get('account.bank.statement.line') - + def _compute_values_for_statement_line(self, cr, uid, box, record, context=None): amount = box.amount or 0.0 - values = { + return { 'statement_id' : record.id, 'journal_id' : record.journal_id.id, 'account_id' : record.journal_id.internal_account_id.id, @@ -80,6 +78,4 @@ class CashBoxOut(CashBox): 'name' : box.name, } - return absl_proxy.create(cr, uid, values, context=context) - CashBoxOut() diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 24c482bd53c..2d6d8b92da1 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -422,7 +422,7 @@ class pos_session(osv.osv): self.pool.get('pos.order')._create_account_move_line(cr, uid, order_ids, session, move_id, context=context) for order in session.order_ids: - if order.state != 'paid': + if order.state not in ('paid', 'invoiced'): raise osv.except_osv( _('Error!'), _("You cannot confirm all orders of this session, because they have not the 'paid' status")) diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 4a56c0dda3c..6dffbd82d19 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -897,7 +897,7 @@ - + @@ -906,7 +906,7 @@ - + @@ -916,14 +916,14 @@ -
+
-
+

You can define another list of available currencies on the Cash Registers tab of the @@ -933,7 +933,7 @@

- + diff --git a/addons/point_of_sale/wizard/pos_box.py b/addons/point_of_sale/wizard/pos_box.py index 8c3b0aa4607..2d1c1a8e0cf 100644 --- a/addons/point_of_sale/wizard/pos_box.py +++ b/addons/point_of_sale/wizard/pos_box.py @@ -15,8 +15,7 @@ class PosBox(CashBox): active_ids = context.get('active_ids', []) or [] if active_model == 'pos.session': - records = self.pool.get(active_model).browse(cr, uid, context.get('active_ids', []) or [], context=context) - + records = self.pool.get(active_model).browse(cr, uid, active_ids, context=context) bank_statements = [record.cash_register_id for record in records if record.cash_register_id] if not bank_statements: @@ -30,6 +29,30 @@ class PosBox(CashBox): class PosBoxIn(PosBox): _inherit = 'cash.box.in' + def _compute_values_for_statement_line(self, cr, uid, box, record, context=None): + values = super(PosBoxIn, self)._compute_values_for_statement_line(cr, uid, box, record, context=context) + + active_model = context.get('active_model', False) or False + active_ids = context.get('active_ids', []) or [] + + if active_model == 'pos.session': + session = self.pool.get(active_model).browse(cr, uid, active_ids, context=context)[0] + values['ref'] = session.name + + return values + + class PosBoxOut(PosBox): _inherit = 'cash.box.out' + def _compute_values_for_statement_line(self, cr, uid, box, record, context=None): + values = super(PosBoxOut, self)._compute_values_for_statement_line(cr, uid, box, record, context=context) + + active_model = context.get('active_model', False) or False + active_ids = context.get('active_ids', []) or [] + + if active_model == 'pos.session': + session = self.pool.get(active_model).browse(cr, uid, active_ids, context=context)[0] + values['ref'] = session.name + + return values