From 2def801d804d08fde4fef031314370d27d4864ef Mon Sep 17 00:00:00 2001 From: Stephane Wirtel Date: Wed, 9 May 2012 10:19:42 +0200 Subject: [PATCH] [IMP] point_of_sale: Add some fields in readonly mode bzr revid: stw@openerp.com-20120509081942-oo65eepvzi0whz03 --- addons/point_of_sale/point_of_sale.py | 110 +++++++++++++++----- addons/point_of_sale/point_of_sale_view.xml | 44 +++++--- 2 files changed, 115 insertions(+), 39 deletions(-) diff --git a/addons/point_of_sale/point_of_sale.py b/addons/point_of_sale/point_of_sale.py index 1921edfe872..b47723d9d56 100644 --- a/addons/point_of_sale/point_of_sale.py +++ b/addons/point_of_sale/point_of_sale.py @@ -36,20 +36,42 @@ _logger = logging.getLogger(__name__) class pos_config(osv.osv): _name = 'pos.config' - POS_CONFIG_STATE = [('draft', 'Draft'),('active', 'Active'),('inactive', 'Inactive'),('deprecated', 'Deprecated')] + POS_CONFIG_STATE = [ + ('draft', 'Draft'), + ('active', 'Active'), + ('inactive', 'Inactive'), + ('deprecated', 'Deprecated') + ] _columns = { - 'name' : fields.char('Name', size=32, select=1, required=True), - 'journal_ids' : fields.many2many('account.journal', 'pos_config_journal_rel', 'pos_config_id', 'journal_id', 'Payment Methods', domain="[('journal_user', '=', True )]"), - 'shop_id' : fields.many2one('sale.shop', 'Shop', required=True, select=1), - 'journal_id' : fields.many2one('account.journal', 'Journal', required=True, select=1, domain=[('type', '=', 'sale')]), - 'profit_account_id' : fields.many2one('account.account', 'Profit Account', required=True, select=1), - 'loss_account_id' : fields.many2one('account.account', 'Loss Account', required=True, select=1), - - 'authorized_cashbox_diff' : fields.integer('Authorized Cashbox Difference (%)'), - 'authorized_cashbox_diff_fixed' : fields.integer('Authorized Cashbox Difference (Fixed Amount)'), - - + 'name' : fields.char('Name', size=32, + select=1, + required=True, + readonly=True, + states={'draft' : [('readonly', False)]} + ), + 'journal_ids' : fields.many2many('account.journal', + 'pos_config_journal_rel', + 'pos_config_id', + 'journal_id', + 'Payment Methods', + domain="[('journal_user', '=', True )]", + readonly=True, + states={'draft' : [('readonly', False)]} + ), + 'shop_id' : fields.many2one('sale.shop', 'Shop', + required=True, + select=1, + readonly=True, + states={'draft' : [('readonly', False)]} + ), + 'journal_id' : fields.many2one('account.journal', 'Journal', + required=True, + select=1, + domain=[('type', '=', 'sale')], + readonly=True, + states={'draft' : [('readonly', False)]} + ), 'iface_self_checkout' : fields.boolean('Self Checkout Mode'), 'iface_websql' : fields.boolean('WebSQL (to store data)'), 'iface_led' : fields.boolean('LED Interface'), @@ -59,17 +81,19 @@ class pos_config(osv.osv): 'iface_barscan' : fields.boolean('BarScan Interface'), 'iface_vkeyboard' : fields.boolean('Virtual KeyBoard Interface'), - 'state' : fields.selection(POS_CONFIG_STATE, 'State', required=True, readonly=True), + 'state' : fields.selection(POS_CONFIG_STATE, 'State', + required=True, + readonly=True), - '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'), + 'sequence_id' : fields.many2one('ir.sequence', 'Sequence', + readonly=True), + 'user_id' : fields.many2one('res.users', 'User', + readonly=True, + states={'draft' : [('readonly', False)]} + ), } - #def default_get(self, cr, uid, fieldnames, context=None): - # return dict() - _defaults = { 'state' : 'draft', 'user_id' : lambda obj, cr, uid, context: uid, @@ -165,21 +189,45 @@ class pos_session(osv.osv): #] _columns = { - 'config_id' : fields.many2one('pos.config', 'PoS', required=True, select=1, domain="[('state', '=', 'active')]"), + 'config_id' : fields.many2one('pos.config', 'PoS', + required=True, + select=1, + domain="[('state', '=', 'active')]", + readonly=True, + states={'draft' : [('readonly', False)]} + ), - '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), + 'name' : fields.char('Session Sequence', size=32, + required=True, + select=1, + readonly=True, + states={'draft' : [('readonly', False)]} + ), + 'user_id' : fields.many2one('res.users', 'User', + required=True, + select=1, + readonly=True, + states={'draft' : [('readonly', False)]} + ), + 'start_at' : fields.datetime('Opening Date'), 'stop_at' : fields.datetime('Closing Date'), - 'state' : fields.selection(POS_SESSION_STATE, 'State', required=True, readonly=True, select=1), + 'state' : fields.selection(POS_SESSION_STATE, 'State', + required=True, + readonly=True, + select=1), - 'cash_register_id' : fields.many2one('account.bank.statement', 'Bank Account Statement', ondelete='cascade'), + 'cash_register_id' : fields.many2one('account.bank.statement', 'Bank Account Statement', + ondelete='cascade'), 'details_ids' : fields.related('cash_register_id', 'details_ids', type='one2many', relation='account.cashbox.line', string='CashBox Lines'), - 'journal_ids' : fields.related('config_id', 'journal_ids', type='many2many', relation='account.journal', string='Journals'), + 'journal_ids' : fields.related('config_id', 'journal_ids', + type='many2many', + readonly=True, + relation='account.journal', + string='Journals'), 'order_ids' : fields.one2many('pos.order', 'session_id', 'Orders'), } @@ -296,7 +344,14 @@ class pos_session(osv.osv): 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') + domain = [ + ('user_id', '=', uid), + ('state', '=', 'active'), + ] + pos_config_ids = pos_config_proxy.search(cr, uid, domain, + limit=1, + order='create_date desc', + context=context) if not pos_config_ids: raise osv.except_osv(_('Error !'), @@ -311,6 +366,7 @@ class pos_session(osv.osv): '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) diff --git a/addons/point_of_sale/point_of_sale_view.xml b/addons/point_of_sale/point_of_sale_view.xml index 188dd603708..f148fd96c74 100644 --- a/addons/point_of_sale/point_of_sale_view.xml +++ b/addons/point_of_sale/point_of_sale_view.xml @@ -774,13 +774,6 @@ - - - - - - - @@ -792,12 +785,10 @@ - + - - @@ -816,13 +807,41 @@ pos.config tree - + + + + + + pos.config.search.view + pos.config + search + + + + + + + + + + + + + + + + + + + + + - Point of Sales + PoS Config ir.actions.act_window pos.config form tree,form +