[FIX] point_of_sale: prevent duplicated order posting
bzr revid: dle@openerp.com-20140317164131-eewyqmzz5niebz2a
This commit is contained in:
parent
9965b2c434
commit
112fe22347
|
@ -488,10 +488,14 @@ class pos_order(osv.osv):
|
||||||
_description = "Point of Sale"
|
_description = "Point of Sale"
|
||||||
_order = "id desc"
|
_order = "id desc"
|
||||||
|
|
||||||
def create_from_ui(self, cr, uid, orders, context=None):
|
def create_from_ui(self, cr, uid, orders, context=None):
|
||||||
#_logger.info("orders: %r", orders)
|
# 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 = []
|
order_ids = []
|
||||||
for tmp_order in orders:
|
for tmp_order in orders_to_save:
|
||||||
order = tmp_order['data']
|
order = tmp_order['data']
|
||||||
order_id = self.create(cr, uid, {
|
order_id = self.create(cr, uid, {
|
||||||
'name': order['name'],
|
'name': order['name'],
|
||||||
|
@ -529,7 +533,10 @@ class pos_order(osv.osv):
|
||||||
}, context=context)
|
}, context=context)
|
||||||
order_ids.append(order_id)
|
order_ids.append(order_id)
|
||||||
wf_service = netsvc.LocalService("workflow")
|
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
|
return order_ids
|
||||||
|
|
||||||
def write(self, cr, uid, ids, vals, context=None):
|
def write(self, cr, uid, ids, vals, context=None):
|
||||||
|
|
Loading…
Reference in New Issue