[IMP] point_of_sale: Add a wizard for the Session Opening
bzr revid: stw@openerp.com-20120510103543-ytwq5brqypnibml5
This commit is contained in:
@@ -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',
|
||||
|
||||
@@ -1051,5 +1051,8 @@
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<menuitem action="action_pos_session_opening" parent="menu_point_of_sale" id="menu_pos_session_opening" />
|
||||
|
||||
</data>
|
||||
</openerp>
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<notebook position="inside">
|
||||
<page string="Point Of Sale">
|
||||
<field name="ean13" />
|
||||
<field name="pos_config" />
|
||||
</page>
|
||||
</notebook>
|
||||
</field>
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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()
|
||||
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<openerp>
|
||||
<data>
|
||||
<record model="ir.ui.view" id="pos_session_opening_form_view">
|
||||
<field name="name">pos.session.opening.form.view</field>
|
||||
<field name="model">pos.session.opening</field>
|
||||
<field name="arch" type="xml">
|
||||
<form string="PoS Session Opening">
|
||||
<separator string="Could you select a Point of Sale ?" colspan="4" />
|
||||
<field name="pos_config_id" on_change="on_change_config(pos_config_id)" />
|
||||
|
||||
<field name="pos_session_id" invisible="1" />
|
||||
<group colspan="4" col="3">
|
||||
<button special="cancel" icon="gtk-cancel" string="Cancel" />
|
||||
<button name="open_existing_session_cb" type="object" string="Open Session" icon="gtk-ok"
|
||||
confirm="Are you sure to open this existing session?"
|
||||
attrs="{'invisible' : [('pos_session_id', '=', False)]}"
|
||||
/>
|
||||
<button name="open_session_cb" type="object" string="Open Session" icon="gtk-ok"
|
||||
attrs="{'invisible' : [('pos_session_id', '!=', False)]}"
|
||||
/>
|
||||
</group>
|
||||
</form>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record id="action_pos_session_opening" model="ir.actions.act_window">
|
||||
<field name="name">PoS Session Opening</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">pos.session.opening</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">form</field>
|
||||
<field name="target">new</field>
|
||||
</record>
|
||||
</data>
|
||||
</openerp>
|
||||
Reference in New Issue
Block a user