[FIX] point_of_sale: prevent duplicated order posting

bzr revid: dle@openerp.com-20140317164131-eewyqmzz5niebz2a
This commit is contained in:
Denis Ledoux 2014-03-17 17:41:31 +01:00
parent 9965b2c434
commit 112fe22347
1 changed files with 11 additions and 4 deletions

View File

@ -488,10 +488,14 @@ class pos_order(osv.osv):
_description = "Point of Sale"
_order = "id desc"
def create_from_ui(self, cr, uid, orders, context=None):
#_logger.info("orders: %r", orders)
def create_from_ui(self, cr, uid, orders, context=None):
# Keep only new orders
submitted_references = [o['data']['name'] for o in orders]
existing_orders = self.search_read(cr, uid, domain=[('pos_reference', 'in', submitted_references)], fields=['pos_reference'], context=context)
existing_references = set([o['pos_reference'] for o in existing_orders])
orders_to_save = [o for o in orders if o['data']['name'] not in existing_references]
order_ids = []
for tmp_order in orders:
for tmp_order in orders_to_save:
order = tmp_order['data']
order_id = self.create(cr, uid, {
'name': order['name'],
@ -529,7 +533,10 @@ class pos_order(osv.osv):
}, context=context)
order_ids.append(order_id)
wf_service = netsvc.LocalService("workflow")
wf_service.trg_validate(uid, 'pos.order', order_id, 'paid', cr)
try:
wf_service.trg_validate(uid, 'pos.order', order_id, 'paid', cr)
except Exception:
_logger.error('ERROR: Could not mark POS Order as Paid.', exc_info=True)
return order_ids
def write(self, cr, uid, ids, vals, context=None):