From f1b8b56828781741423ee01ab31de9a8c7b6d7e8 Mon Sep 17 00:00:00 2001 From: "ksa (OpenERP)" Date: Fri, 13 Jul 2012 15:54:41 +0530 Subject: [PATCH 1/3] [FIX]:multiple payment does not work bzr revid: ksa@tinyerp.com-20120713102441-bl88wuofaseyt1xo --- addons/point_of_sale/point_of_sale.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 2445e4be10a..d3dab0836cb 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -62,15 +62,16 @@ class pos_order(osv.osv): statement_ids = order.pop('statement_ids') order_id = self.create(cr, uid, order, context) list.append(order_id) + for data in statement_ids: # call add_payment; refer to wizard/pos_payment for data structure # add_payment launches the 'paid' signal to advance the workflow to the 'paid' state - data = { - 'journal': statement_ids[0][2]['journal_id'], - 'amount': order['amount_paid'], - 'payment_name': order['name'], - 'payment_date': statement_ids[0][2]['name'], - } - order_obj.add_payment(cr, uid, order_id, data, context=context) + data = { + 'journal': data[2]['journal_id'], + 'amount': data[2]['amount'], + 'payment_name': order['name'], + 'payment_date': data[2]['name'], + } + order_obj.add_payment(cr, uid, order_id, data, context=context) return list def unlink(self, cr, uid, ids, context=None): From 27fbca1d69b3ab5f3beeb960b61f6457e39f4f86 Mon Sep 17 00:00:00 2001 From: "ksa (OpenERP)" Date: Mon, 16 Jul 2012 10:31:51 +0530 Subject: [PATCH 2/3] [IMP]:change the variable name bzr revid: ksa@tinyerp.com-20120716050151-xsxish71ok4pjqf3 --- addons/point_of_sale/point_of_sale.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index d3dab0836cb..62a485910f2 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -62,14 +62,14 @@ class pos_order(osv.osv): statement_ids = order.pop('statement_ids') order_id = self.create(cr, uid, order, context) list.append(order_id) - for data in statement_ids: + for value in statement_ids: # call add_payment; refer to wizard/pos_payment for data structure # add_payment launches the 'paid' signal to advance the workflow to the 'paid' state data = { - 'journal': data[2]['journal_id'], - 'amount': data[2]['amount'], + 'journal': value[2]['journal_id'], + 'amount': value[2]['amount'], 'payment_name': order['name'], - 'payment_date': data[2]['name'], + 'payment_date': value[2]['name'], } order_obj.add_payment(cr, uid, order_id, data, context=context) return list From d1ae6722193f3cd403dfdb70c0a4b010c4f28fa2 Mon Sep 17 00:00:00 2001 From: Xavier ALT Date: Fri, 16 Nov 2012 16:15:09 +0100 Subject: [PATCH 3/3] [FIX] pos: fix order creation from ui having multi payment method + returns bzr revid: xal@openerp.com-20121116151509-04l15a66370rqx8h --- addons/point_of_sale/point_of_sale.py | 35 +++++++++++++++++++-------- 1 file changed, 25 insertions(+), 10 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 62a485910f2..da187126a2e 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -62,16 +62,31 @@ class pos_order(osv.osv): statement_ids = order.pop('statement_ids') order_id = self.create(cr, uid, order, context) list.append(order_id) - for value in statement_ids: - # call add_payment; refer to wizard/pos_payment for data structure - # add_payment launches the 'paid' signal to advance the workflow to the 'paid' state - data = { - 'journal': value[2]['journal_id'], - 'amount': value[2]['amount'], - 'payment_name': order['name'], - 'payment_date': value[2]['name'], - } - order_obj.add_payment(cr, uid, order_id, data, context=context) + for payments in statement_ids: + # call add_payment; refer to wizard/pos_payment for data structure + # add_payment launches the 'paid' signal to advance the workflow to the 'paid' state + payment = payments[2] + order_obj.add_payment(cr, uid, order_id, { + 'amount': payment['amount'], + 'payment_name': order['name'], + 'payment_date': payment['name'], + 'journal': payment['journal_id'], + }, context=context) + if order['amount_return']: + # search for open cash register of 'cash' journal + statement_obj = self.pool.get('account.bank.statement') + cash_registers_domain = [('state','=','open'),('user_id','=',uid),('journal_id.type','=','cash')] + cash_register_ids = statement_obj.search(cr, uid, cash_registers_domain, context=context) + if not len(cash_register_ids): + raise osv.except_osv( _('Error!'), + _("No cash statement found for this session. Unable to record returned cash.")) + cash_register = statement_obj.browse(cr, uid, cash_register_ids[0], context=context) + self.add_payment(cr, uid, order_id, { + 'amount': -order['amount_return'], + 'payment_date': time.strftime('%Y-%m-%d %H:%M:%S'), + 'payment_name': _('return'), + 'journal': cash_register.journal_id.id, + }, context=context) return list def unlink(self, cr, uid, ids, context=None):