[IMP] point_of_sale: create a session if there is not session for the connected user

bzr revid: stw@openerp.com-20120504152720-nqfhr5aclihpfiis
This commit is contained in:
Stephane Wirtel
2012-05-04 17:27:20 +02:00
parent 0f8529cb36
commit d7b5e5a6ef
4 changed files with 39 additions and 2 deletions
+36
View File
@@ -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')
@@ -793,6 +793,7 @@
<field name="iface_vkeyboard" />
</page>
<page string="Other">
<field name="user_id" />
<field name="sequence_id" />
</page>
@@ -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){
+1 -1
View File
@@ -11,7 +11,7 @@
<group colspan="4" col="4" >
<group colspan="4">
<!--<field name="journal"/>-->
<field name="journal_id" />
<field name="journal_id" widget="selection" />
<field name="amount" />
<field name="payment_name"/>
</group>