diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py
index 93efebbad3d..877da092468 100644
--- a/addons/point_of_sale/point_of_sale.py
+++ b/addons/point_of_sale/point_of_sale.py
@@ -63,11 +63,13 @@ class pos_config(osv.osv):
'sequence_id' : fields.many2one('ir.sequence', 'Sequence', readonly=True),
# Add a sequence when we create a new pos.config object
+ 'user_id' : fields.many2one('res.users', 'User'),
}
_defaults = {
'state' : 'draft',
+ 'user_id' : lambda obj, cr, uid, context: uid,
}
def _check_only_one_cash_journal(self, cr, uid, ids, context=None):
@@ -234,6 +236,39 @@ class pos_session(osv.osv):
def wkf_action_post(self, cr, uid, ids, context=None):
return self.write(cr, uid, ids, {'state' : 'post'}, context=context)
+ def get_current_session(self, cr, uid, context=None):
+ current_user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+ domain = [
+ ('state', '=', 'open'),
+ ('start_at', '>=', time.strftime('%Y-%m-%d 00:00:00')),
+ ('config_id.user_id', '=', uid),
+ ]
+ session_ids = self.search(cr, uid, domain, context=context, limit=1, order='start_at desc')
+ session_id = session_ids[0] if session_ids else False
+
+ if not session_id:
+ pos_config_proxy = self.pool.get('pos.config')
+ pos_config_ids = pos_config_proxy.search(cr, uid, [('user_id', '=', uid),('state', '=', 'active')], limit=1, order='create_date desc')
+
+ if not pos_config_ids:
+ raise osv.except_osv(_('Error !'),
+ _('There is no active PoS Config for this User %s') % current_user.name)
+
+ config = pos_config_proxy.browse(cr, uid, pos_config_ids[0], context=context)
+
+ values = {
+ 'state' : 'draft',
+ 'start_at' : time.strftime('%Y-%m-%d %H:%M:%S'),
+ 'config_id' : config.id,
+ 'journal_id' : config.journal_id.id,
+ 'user_id': current_user.id,
+ }
+ session_id = self.create(cr, uid, values, context=context)
+ wkf_service = netsvc.LocalService('workflow')
+ wkf_service.trg_validate(uid, 'pos.session', session_id, 'open', cr)
+
+ return session_id
+
pos_session()
class pos_config_journal(osv.osv):
@@ -257,6 +292,7 @@ class pos_order(osv.osv):
def create_from_ui(self, cr, uid, orders, context=None):
#_logger.info("orders: %r", orders)
list = []
+ session_id = self.pool.get('pos.session').get_current_session()
for order in orders:
# order :: {'name': 'Order 1329148448062', 'amount_paid': 9.42, 'lines': [[0, 0, {'discount': 0, 'price_unit': 1.46, 'product_id': 124, 'qty': 5}], [0, 0, {'discount': 0, 'price_unit': 0.53, 'product_id': 62, 'qty': 4}]], 'statement_ids': [[0, 0, {'journal_id': 7, 'amount': 9.42, 'name': '2012-02-13 15:54:12', 'account_id': 12, 'statement_id': 21}]], 'amount_tax': 0, 'amount_return': 0, 'amount_total': 9.42}
order_obj = self.pool.get('pos.order')
diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml
index 48ba4c15700..c8a666f4a52 100644
--- a/addons/point_of_sale/point_of_sale_view.xml
+++ b/addons/point_of_sale/point_of_sale_view.xml
@@ -793,6 +793,7 @@
+
diff --git a/addons/point_of_sale/static/src/js/pos_models.js b/addons/point_of_sale/static/src/js/pos_models.js
index 981feb6e4d1..16ba53aef9e 100644
--- a/addons/point_of_sale/static/src/js/pos_models.js
+++ b/addons/point_of_sale/static/src/js/pos_models.js
@@ -154,7 +154,7 @@ function openerp_pos_models(module, instance){ //module is instance.point_of_sal
},
_int_flush : function() {
var self = this;
-
+
this.dao.get_operations().pipe(function(operations) {
self.set( {'nbr_pending_operations':operations.length} );
if(operations.length === 0){
diff --git a/addons/point_of_sale/wizard/pos_payment.xml b/addons/point_of_sale/wizard/pos_payment.xml
index a5f223652fc..84c0cdfb5df 100644
--- a/addons/point_of_sale/wizard/pos_payment.xml
+++ b/addons/point_of_sale/wizard/pos_payment.xml
@@ -11,7 +11,7 @@
-
+