diff --git a/addons/point_of_sale/pos.py b/addons/point_of_sale/pos.py
index 954110d2036..d29482db4de 100644
--- a/addons/point_of_sale/pos.py
+++ b/addons/point_of_sale/pos.py
@@ -44,7 +44,17 @@ class pos_order(osv.osv):
_order = "date_order, create_date desc"
_order = "date_order desc"
- wf_service = netsvc.LocalService("workflow")
+ def unlink(self, cr, uid, ids, context={}):
+ for rec in self.browse(cr, uid, ids, context=context):
+ if rec.state<>'draft':
+ raise osv.except_osv(_('Invalid action !'), _('Cannot delete a point of sale which is already confirmed !'))
+ return super(pos_order, self).unlink(cr, uid, ids, context=context)
+
+ def onchange_partner_pricelist(self, cr, uid, ids, part, context={}):
+ if not part:
+ return {}
+ pricelist = self.pool.get('res.partner').browse(cr, uid, part).property_product_pricelist.id
+ return {'value':{'pricelist_id': pricelist}}
def _amount_total(self, cr, uid, ids, field_name, arg, context):
id_set = ",".join(map(str, ids))
@@ -340,7 +350,8 @@ class pos_order(osv.osv):
'location_dest_id': stock_dest_id,
})
- self.wf_service.trg_validate(uid, 'stock.picking',
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'stock.picking',
picking_id, 'button_confirm', cr)
self.pool.get('stock.picking').force_assign(cr,
uid, [picking_id], context)
@@ -375,7 +386,8 @@ class pos_order(osv.osv):
clone_id = picking_obj.copy(
cr, uid, order.last_out_picking.id, {'type': 'in'})
# Confirm the picking
- self.wf_service.trg_validate(uid, 'stock.picking',
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'stock.picking',
clone_id, 'button_confirm', cr)
clone_list.append(clone_id)
# Remove the ref to last picking and delete the payments
@@ -409,8 +421,9 @@ class pos_order(osv.osv):
'amount': amount,
})
- self.wf_service.trg_validate(uid, 'pos.order', order_id, 'payment', cr)
- self.wf_service.trg_write(uid, 'pos.order', order_id, cr)
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'pos.order', order_id, 'payment', cr)
+ wf_service.trg_write(uid, 'pos.order', order_id, cr)
return payment_id
def add_product(self, cr, uid, order_id, product_id, qty, context=None):
@@ -430,7 +443,8 @@ class pos_order(osv.osv):
'qty': qty,
'price_unit': price,
})
- self.wf_service.trg_write(uid, 'pos.order', order_id, cr)
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_write(uid, 'pos.order', order_id, cr)
return order_line_id
@@ -504,7 +518,8 @@ class pos_order(osv.osv):
inv_line_ref.create(cr, uid, inv_line, context)
for i in inv_ids:
- self.wf_service.trg_validate(uid, 'account.invoice', i, 'invoice_open', cr)
+ wf_service = netsvc.LocalService("workflow")
+ wf_service.trg_validate(uid, 'account.invoice', i, 'invoice_open', cr)
return inv_ids
def create_account_move(self, cr, uid, ids, context=None):
@@ -809,7 +824,7 @@ class pos_payment(osv.osv):
_columns = {
'name': fields.char('Description', size=64),
- 'order_id': fields.many2one('pos.order', 'Order Ref', required=True),
+ 'order_id': fields.many2one('pos.order', 'Order Ref', required=True, ondelete='cascade'),
'journal_id': fields.many2one('account.journal', "Journal", required=True),
'amount': fields.float('Amount', required=True),
}
diff --git a/addons/point_of_sale/pos_view.xml b/addons/point_of_sale/pos_view.xml
index b9fe90df9f1..4c6510f4abb 100644
--- a/addons/point_of_sale/pos_view.xml
+++ b/addons/point_of_sale/pos_view.xml
@@ -80,7 +80,7 @@
-
+