From cd7d047cf8c7ae8fc4388252f6a3c3b08d3785dc Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Tue, 10 Apr 2012 13:24:29 +0200 Subject: [PATCH] [IMP] point_of_sales: Add the POS Session bzr revid: stw@openerp.com-20120410112429-dckcpq3hfemlnr5n --- addons/account/account_view.xml | 2 +- addons/point_of_sale/point_of_sale.py | 42 +++++- .../point_of_sale/point_of_sale_sequence.xml | 12 ++ addons/point_of_sale/point_of_sale_view.xml | 139 +++++++++++++++++- .../point_of_sale/point_of_sale_workflow.xml | 52 +++++++ .../point_of_sale/wizard/pos_box_entries.py | 7 +- .../point_of_sale/wizard/pos_box_entries.xml | 6 +- addons/point_of_sale/wizard/pos_box_out.py | 7 +- addons/point_of_sale/wizard/pos_box_out.xml | 6 +- 9 files changed, 260 insertions(+), 13 deletions(-) diff --git a/addons/account/account_view.xml b/addons/account/account_view.xml index 66e5201e214..cd3bda45b46 100644 --- a/addons/account/account_view.xml +++ b/addons/account/account_view.xml @@ -2617,7 +2617,7 @@ action = pool.get('res.config').next(cr, uid, [], context) - + diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 012de387776..10b51a26ca6 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -61,6 +61,9 @@ class pos_config(osv.osv): 'state' : fields.selection(POS_CONFIG_STATE, 'State', required=True, readonly=True), + #'sequence_id' : fields.many2one('ir.sequence', 'Sequence'), + # Add a sequence when we create a new pos.config object + } _defaults = { @@ -84,10 +87,45 @@ pos_config() class pos_session(osv.osv): _name = 'pos.session' + POS_SESSION_STATE = [('new', 'New'),('opened', 'Opened'),('closed', 'Closed'),('posted', 'Posted')] + _columns = { - 'config_id' : fields.many2one('pos.config', 'Configuration', required=True, select=1), + 'config_id' : fields.many2one('pos.config', 'PoS', required=True, select=1), + + 'name' : fields.char('Session Sequence', size=32, required=True, select=1, readonly=1), + 'user_id' : fields.many2one('res.users', 'User', required=True, select=1), + 'start_at' : fields.datetime('Opening Date'), #, readonly=True), + 'stop_at' : fields.datetime('Closing Date'), + + 'state' : fields.selection(POS_SESSION_STATE, 'State', required=True, readonly=True, select=1), } + _defaults = { + 'name' : '/', + 'user_id' : lambda obj, cr, uid, context: uid, + 'state' : 'new', + } + + def create(self, cr, uid, values, context=None): + if values.pop('name', '/') == '/': + values['name'] = self.pool.get('ir.sequence').get(cr, uid, 'pos.session') + + return super(pos_session, self).create(cr, uid, values, context=context) + + def wkf_action_open(self, cr, uid, ids, context=None): + # si pas de date start_at, je balance une date, sinon on utilise celle de l'utilisateur + values = { + #'start_at' : time.strftime('%Y-%m-%d %H:%M:%S'), + 'state' : 'opened', + } + return self.write(cr, uid, ids, values, context=context) + + def wkf_action_close(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'state' : 'close'}, context=context) + + def wkf_action_post(self, cr, uid, ids, context=None): + return self.write(cr, uid, ids, {'state' : 'post'}, context=context) + pos_session() class pos_config_journal(osv.osv): @@ -204,6 +242,8 @@ class pos_order(osv.osv): 'pricelist_id': fields.many2one('product.pricelist', 'Pricelist', required=True, states={'draft': [('readonly', False)]}, readonly=True), 'partner_id': fields.many2one('res.partner', 'Customer', change_default=True, select=1, states={'draft': [('readonly', False)], 'paid': [('readonly', False)]}), + 'session_id' : fields.many2one('pos.session', 'Session', required=True, select=1), + 'state': fields.selection([('draft', 'New'), ('cancel', 'Cancelled'), ('paid', 'Paid'), diff --git a/addons/point_of_sale/point_of_sale_sequence.xml b/addons/point_of_sale/point_of_sale_sequence.xml index bf83fe17942..4bcab244c56 100644 --- a/addons/point_of_sale/point_of_sale_sequence.xml +++ b/addons/point_of_sale/point_of_sale_sequence.xml @@ -28,5 +28,17 @@ 4 + + POS Session + pos.session + + + + POS Session + pos.session + POS/%(day)s/(month)s/%(year)s/ + 4 + + diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 4e1fcc7c6db..189662290db 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -807,8 +807,8 @@ - - + + @@ -828,7 +828,7 @@ - +