From b9f8c8dec1dd6c2e18913e37676ae503d417a66b Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Mon, 30 Apr 2012 17:05:57 +0200 Subject: [PATCH] [FIX] fix some bugs in the point of sale bzr revid: stw@openerp.com-20120430150557-5hw97hbcze4ngw3b --- addons/point_of_sale/point_of_sale.py | 39 ++++++++++++--------- addons/point_of_sale/point_of_sale_demo.xml | 2 ++ addons/point_of_sale/point_of_sale_view.xml | 7 +--- 3 files changed, 26 insertions(+), 22 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 381c30f49de..f27db1537f1 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -152,7 +152,7 @@ class pos_session(osv.osv): POS_SESSION_STATE = [('new', 'New'),('opened', 'Opened'),('closed', 'Closed'),('posted', 'Posted')] _columns = { - 'config_id' : fields.many2one('pos.config', 'PoS', required=True, select=1), + 'config_id' : fields.many2one('pos.config', 'PoS', required=True, select=1, domain="[('state', '=', 'active')]"), 'name' : fields.char('Session Sequence', size=32, required=True, select=1, readonly=1), 'user_id' : fields.many2one('res.users', 'User', required=True, select=1), @@ -179,9 +179,6 @@ class pos_session(osv.osv): ] def _create_cash_register(self, cr, uid, pos_config, name, context=None): - import pdb - #pdb.set_trace() - if not pos_config: return False @@ -205,7 +202,6 @@ class pos_session(osv.osv): return cash_register_id def create(self, cr, uid, values, context=None): - config_id = values.get('config_id', False) or False if config_id: @@ -222,14 +218,18 @@ class pos_session(osv.osv): 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) + for record in self.browse(cr, uid, ids, context=context): + values = {} + if not record.start_at: + values['start_at'] = time.strftime('%Y-%m-%d %H:%M:%S') + values['state'] = 'opened' + + record.write(values, context=context) + + return True def wkf_action_close(self, cr, uid, ids, context=None): - return self.write(cr, uid, ids, {'state' : 'close'}, context=context) + return self.write(cr, uid, ids, {'state' : 'close', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context) def wkf_action_post(self, cr, uid, ids, context=None): return self.write(cr, uid, ids, {'state' : 'post'}, context=context) @@ -334,8 +334,7 @@ class pos_order(osv.osv): return super(pos_order, self).copy(cr, uid, id, d, context=context) _columns = { - 'name': fields.char('Order Ref', size=64, required=True, - states={'draft': [('readonly', False)]}, readonly=True), + 'name': fields.char('Order Ref', size=64, required=True, readonly=True), 'company_id':fields.many2one('res.company', 'Company', required=True, readonly=True), 'shop_id': fields.many2one('sale.shop', 'Shop', required=True, states={'draft': [('readonly', False)]}, readonly=True), @@ -350,7 +349,11 @@ 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), + 'session_id' : fields.many2one('pos.session', 'Session', + select=1, + domain="[('state', '=', 'opened')]", + states={'draft' : [('readonly', False)]}, + readonly=True), 'state': fields.selection([('draft', 'New'), ('cancel', 'Cancelled'), @@ -377,7 +380,7 @@ class pos_order(osv.osv): _defaults = { 'user_id': lambda self, cr, uid, context: uid, 'state': 'draft', - 'name': lambda obj, cr, uid, context: obj.pool.get('ir.sequence').get(cr, uid, 'pos.order'), + 'name': '/', 'date_order': lambda *a: time.strftime('%Y-%m-%d %H:%M:%S'), 'nb_print': 0, 'company_id': lambda self,cr,uid,c: self.pool.get('res.users').browse(cr, uid, uid, c).company_id.id, @@ -386,6 +389,10 @@ class pos_order(osv.osv): 'pricelist_id': _default_pricelist, } + def create(self, cr, uid, values, context=None): + values['name'] = self.pool.get('ir.sequence').get(cr, uid, 'pos.order') + return super(pos_order, self).create(cr, uid, values, context=context) + def test_paid(self, cr, uid, ids, context=None): """A Point of Sale is paid when the sum @return: True @@ -453,7 +460,7 @@ class pos_order(osv.osv): if not len(ids): return False for order in self.browse(cr, uid, ids, context=context): - if order.state<>'cancel': + if order.state != 'cancel': raise osv.except_osv(_('Error!'), _('In order to set to draft a sale, it must be cancelled.')) self.write(cr, uid, ids, {'state': 'draft'}) wf_service = netsvc.LocalService("workflow") diff --git a/addons/point_of_sale/point_of_sale_demo.xml b/addons/point_of_sale/point_of_sale_demo.xml index 577d025c4fd..3a8b4a308c1 100644 --- a/addons/point_of_sale/point_of_sale_demo.xml +++ b/addons/point_of_sale/point_of_sale_demo.xml @@ -134,6 +134,7 @@ + diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 120f29fbfd5..edd1d65a41d 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -18,6 +18,7 @@
+ @@ -871,12 +872,6 @@ -