summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
authorXavier ALT <xal@openerp.com>2012-11-16 16:15:09 +0100
committerXavier ALT <xal@openerp.com>2012-11-16 16:15:09 +0100
commitd1ae6722193f3cd403dfdb70c0a4b010c4f28fa2 (patch)
tree5da64ac01d62bb076f5712f39dade2ad0b783655 /addons
parent27fbca1d69b3ab5f3beeb960b61f6457e39f4f86 (diff)
[FIX] pos: fix order creation from ui having multi payment method + returns
bzr revid: xal@openerp.com-20121116151509-04l15a66370rqx8h
Diffstat (limited to 'addons')
-rw-r--r--addons/point_of_sale/point_of_sale.py35
1 files 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):