From 2d0a262d4dc583dff59de29618398eb88062aef5 Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Thu, 10 May 2012 12:35:43 +0200 Subject: [PATCH] [IMP] point_of_sale: Add a wizard for the Session Opening bzr revid: stw@openerp.com-20120510103543-ytwq5brqypnibml5 --- addons/point_of_sale/__openerp__.py | 1 + addons/point_of_sale/point_of_sale_view.xml | 3 + addons/point_of_sale/res_users.py | 1 + addons/point_of_sale/res_users_view.xml | 1 + addons/point_of_sale/wizard/__init__.py | 2 +- .../wizard/pos_session_opening.py | 72 +++++++++++++++++++ .../wizard/pos_session_opening.xml | 36 ++++++++++ 7 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 addons/point_of_sale/wizard/pos_session_opening.py create mode 100644 addons/point_of_sale/wizard/pos_session_opening.xml diff --git a/addons/point_of_sale/__openerp__.py b/addons/point_of_sale/__openerp__.py index a1cc41b7411..b2d60cda290 100644 --- a/addons/point_of_sale/__openerp__.py +++ b/addons/point_of_sale/__openerp__.py @@ -58,6 +58,7 @@ Main features : 'wizard/pos_payment_report.xml', 'wizard/pos_payment.xml', 'wizard/pos_box.xml', + 'wizard/pos_session_opening.xml', 'point_of_sale_report.xml', 'point_of_sale_view.xml', 'report/pos_order_report_view.xml', diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 69c269de4d5..71ef5e70fd9 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -1051,5 +1051,8 @@ + + + diff --git a/addons/point_of_sale/res_users.py b/addons/point_of_sale/res_users.py index e048ad01dac..e9c0d0219b6 100644 --- a/addons/point_of_sale/res_users.py +++ b/addons/point_of_sale/res_users.py @@ -39,6 +39,7 @@ class res_users(osv.osv): _columns = { 'ean13' : fields.char('EAN13', size=13, help="BarCode"), + 'pos_config' : fields.many2one('pos.config', 'PoS Config', domain=[('state', '=', 'active')]), } def _check_ean(self, cr, uid, ids, context=None): diff --git a/addons/point_of_sale/res_users_view.xml b/addons/point_of_sale/res_users_view.xml index c34b9566406..df726c25815 100644 --- a/addons/point_of_sale/res_users_view.xml +++ b/addons/point_of_sale/res_users_view.xml @@ -10,6 +10,7 @@ + diff --git a/addons/point_of_sale/wizard/__init__.py b/addons/point_of_sale/wizard/__init__.py index cc2ab6302ed..cce0b46d6ff 100644 --- a/addons/point_of_sale/wizard/__init__.py +++ b/addons/point_of_sale/wizard/__init__.py @@ -30,7 +30,7 @@ import pos_receipt import pos_payment_report_user import pos_payment_report import pos_payment - +import pos_session_opening import pos_box # vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4: diff --git a/addons/point_of_sale/wizard/pos_session_opening.py b/addons/point_of_sale/wizard/pos_session_opening.py new file mode 100644 index 00000000000..8415f8ec357 --- /dev/null +++ b/addons/point_of_sale/wizard/pos_session_opening.py @@ -0,0 +1,72 @@ +#!/usr/bin/env python + +from osv import osv, fields +from tools.translate import _ + +class pos_session_opening(osv.osv_memory): + _name = 'pos.session.opening' + + _columns = { + 'pos_config_id' : fields.many2one('pos.config', 'PoS Config', required=True), + 'pos_session_id' : fields.many2one('pos.session', 'PoS Session'), + } + + def open_session_cb(self, cr, uid, ids, context=None): + assert len(ids) == 1 + proxy = self.pool.get('pos.session') + wizard = self.browse(cr, uid, ids[0], context=context) + + if not wizard.pos_session_id: + values = { + 'user_id' : uid, + 'config_id' : wizard.pos_config_id.id, + } + session_id = proxy.create(cr, uid, values, context=context) + return self._open_session(session_id) + + def open_existing_session_cb(self, cr, uid, ids, context=None): + assert len(ids) == 1 + wizard = self.browse(cr, uid, ids[0], context=context) + return self._open_session(wizard.pos_session_id.id) + + def _open_session(self, session_id): + return { + 'name': _('Session'), + 'view_type': 'form', + 'view_mode': 'form,tree', + 'res_model': 'pos.session', + 'res_id': session_id, + 'view_id': False, + 'type': 'ir.actions.act_window', + } + + def on_change_config(self, cr, uid, ids, config_id, context=None): + if not config_id: + return {} + + domain = [ + ('state', 'in', ('opening_control', 'opened')), + ('config_id', '=', config_id), + ] + + proxy = self.pool.get('pos.session') + session_ids = proxy.search(cr, uid, domain, context=context) + + result = { + 'value' : { + 'pos_session_id' : session_ids and session_ids[0] or False, + } + } + + return result + + def default_get(self, cr, uid, fieldnames, context=None): + current_user = self.pool.get('res.users').browse(cr, uid, uid, context=context) + + result = { + 'pos_config_id' : current_user.pos_config and current_user.pos_config.id or False, + } + + return result + +pos_session_opening() \ No newline at end of file diff --git a/addons/point_of_sale/wizard/pos_session_opening.xml b/addons/point_of_sale/wizard/pos_session_opening.xml new file mode 100644 index 00000000000..912f966f57f --- /dev/null +++ b/addons/point_of_sale/wizard/pos_session_opening.xml @@ -0,0 +1,36 @@ + + + + + pos.session.opening.form.view + pos.session.opening + +
+ + + + + +