[IMP] point_of_sale: Add some fields in readonly mode
bzr revid: stw@openerp.com-20120509081942-oo65eepvzi0whz03
This commit is contained in:
parent
8f4c7e161d
commit
2def801d80
|
@ -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)
|
||||
|
|
|
@ -774,13 +774,6 @@
|
|||
<separator string="Accounting" colspan="4" />
|
||||
<field name="shop_id" widget="selection" />
|
||||
<field name="journal_id" widget="selection" />
|
||||
|
||||
<separator string="Cash Differences" colspan="4" />
|
||||
<field name="profit_account_id" />
|
||||
<field name="loss_account_id" />
|
||||
<field name="authorized_cashbox_diff" />
|
||||
<field name="authorized_cashbox_diff_fixed" />
|
||||
|
||||
</page>
|
||||
<page string="Interfaces">
|
||||
<field name="iface_self_checkout" />
|
||||
|
@ -792,12 +785,10 @@
|
|||
<field name="iface_barscan" />
|
||||
<field name="iface_vkeyboard" />
|
||||
</page>
|
||||
<page string="Other">
|
||||
<page string="Others">
|
||||
<field name="user_id" />
|
||||
<field name="sequence_id" />
|
||||
</page>
|
||||
|
||||
|
||||
</notebook>
|
||||
|
||||
<group colspan="4" col="6">
|
||||
|
@ -816,13 +807,41 @@
|
|||
<field name="model">pos.config</field>
|
||||
<field name="type">tree</field>
|
||||
<field name="arch" type="xml">
|
||||
<tree string="PoS Configuration">
|
||||
<tree string="PoS Configuration" colors="grey:state == 'inactive'">
|
||||
<field name="name" />
|
||||
<field name="user_id" />
|
||||
<field name="journal_id" />
|
||||
<field name="shop_id" />
|
||||
<field name="state" />
|
||||
</tree>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
<record model="ir.ui.view" id="view_pos_config_search">
|
||||
<field name="name">pos.config.search.view</field>
|
||||
<field name="model">pos.config</field>
|
||||
<field name="type">search</field>
|
||||
<field name="arch" type="xml">
|
||||
<search string="PoS Config">
|
||||
<filter string="Active" domain="[('state', '=', 'active')]" />
|
||||
<filter string="Inactive" domain="[('state', '=', 'inactive')]" />
|
||||
<separator orientation="vertical"/>
|
||||
<field name="name" />
|
||||
<field name="user_id" />
|
||||
<field name="journal_id" />
|
||||
<field name="shop_id" />
|
||||
|
||||
<newline />
|
||||
<group expand="0" string="Group By...">
|
||||
<filter string="User" icon="terp-personal" domain="[]" context="{'group_by' : 'user_id'}" />
|
||||
<filter string="Journal" icon="terp-folder-orange" domain="[]" context="{'group_by' : 'journal_id'}" />
|
||||
<filter string="Shop" icon="terp-go-home" domain="[]" context="{'group_by' : 'shop_id'}" />
|
||||
</group>
|
||||
</search>
|
||||
</field>
|
||||
</record>
|
||||
|
||||
|
||||
<act_window
|
||||
id="act_pos_config_sessions"
|
||||
name="Sessions"
|
||||
|
@ -831,11 +850,12 @@
|
|||
domain="[('config_id', '=', active_id)]" />
|
||||
|
||||
<record model="ir.actions.act_window" id="action_pos_config_pos">
|
||||
<field name="name">Point of Sales</field>
|
||||
<field name="name">PoS Config</field>
|
||||
<field name="type">ir.actions.act_window</field>
|
||||
<field name="res_model">pos.config</field>
|
||||
<field name="view_type">form</field>
|
||||
<field name="view_mode">tree,form</field>
|
||||
<field name="search_view_id" ref="view_pos_config_search" />
|
||||
</record>
|
||||
|
||||
<menuitem
|
||||
|
|
Loading…
Reference in New Issue