[IMP] point_of_sale: review the session workflow

[REF] point_of_sale: move the 'to_weight' field into the pos.category

bzr revid: stw@openerp.com-20120509133018-mu06479yu2yahvu4
This commit is contained in:
Stephane Wirtel 2012-05-09 15:30:18 +02:00
parent cd171effd5
commit a4dd08a340
9 changed files with 71 additions and 88 deletions

View File

@ -21,7 +21,6 @@
import point_of_sale
import account_bank_statement
import product
import res_users
import wizard
import report

View File

@ -66,7 +66,6 @@ Main features :
'point_of_sale_workflow.xml',
'account_statement_view.xml',
'account_statement_report.xml',
'product_view.xml',
'res_users_view.xml',
],
'demo_xml': [

View File

@ -129,6 +129,7 @@
<field name="act_window_id" ref="action_new_bank_statement_all_tree"/>
</record>
<!--
<menuitem name="Cash Register Management" parent="point_of_sale.menu_point_root"
id="menu_point_open_config" sequence="10"/>
<menuitem
@ -156,6 +157,7 @@
id="menu_all_menu_all_register"
sequence="4"
/>
-->
</data>

View File

@ -47,8 +47,8 @@ class pos_config(osv.osv):
'name' : fields.char('Name', size=32,
select=1,
required=True,
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'journal_ids' : fields.many2many('account.journal',
'pos_config_journal_rel',
@ -56,21 +56,21 @@ class pos_config(osv.osv):
'journal_id',
'Payment Methods',
domain="[('journal_user', '=', True )]",
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'shop_id' : fields.many2one('sale.shop', 'Shop',
required=True,
select=1,
readonly=True,
states={'draft' : [('readonly', False)]}
# 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)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'iface_self_checkout' : fields.boolean('Self Checkout Mode'),
'iface_websql' : fields.boolean('WebSQL (to store data)'),
@ -88,8 +88,8 @@ class pos_config(osv.osv):
'sequence_id' : fields.many2one('ir.sequence', 'Sequence',
readonly=True),
'user_id' : fields.many2one('res.users', 'User',
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
}
@ -180,34 +180,34 @@ class pos_session(osv.osv):
#"status [BUTTON TEXT]" -> utiliser
# "opening control (open) -> opened (cashbox control) -> closing control (close) -> closed & posted"
POS_SESSION_STATE = [('new', 'New'),('opened', 'Opened'),('closed', 'Closed'),('posted', 'Posted')]
#POS_SESSION_STATE = [
# ('new', 'Opening Control'),
# ('opened', 'Opened'),
# ('closed', 'Closing Control'),
# ('posted', 'Closed & Posted'),
#]
#POS_SESSION_STATE = [('new', 'New'),('opened', 'Opened'),('closed', 'Closed'),('posted', 'Posted')]
POS_SESSION_STATE = [
('opening_control', 'Opening Control'), # Signal open
('opened', 'Opened'), # Signal closing
('closing_control', 'Closing Control'), # Signal close
('closed', 'Closed'),
]
_columns = {
'config_id' : fields.many2one('pos.config', 'PoS',
required=True,
select=1,
domain="[('state', '=', 'active')]",
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'name' : fields.char('Session Sequence', size=32,
required=True,
select=1,
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'user_id' : fields.many2one('res.users', 'User',
required=True,
select=1,
readonly=True,
states={'draft' : [('readonly', False)]}
# readonly=True,
# states={'draft' : [('readonly', False)]}
),
'start_at' : fields.datetime('Opening Date'),
'stop_at' : fields.datetime('Closing Date'),
@ -234,7 +234,7 @@ class pos_session(osv.osv):
_defaults = {
'name' : '/',
'user_id' : lambda obj, cr, uid, context: uid,
'state' : 'new',
'state' : 'opening_control',
}
_sql_constraints = [
@ -309,15 +309,15 @@ class pos_session(osv.osv):
return True
def wkf_action_close(self, cr, uid, ids, context=None):
def wkf_action_closing_control(self, cr, uid, ids, context=None):
# Close CashBox
for record in self.browse(cr, uid, ids, context=context):
record.cash_register_id.button_confirm_cash(context=context)
return self.write(cr, uid, ids, {'state' : 'closed', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
return self.write(cr, uid, ids, {'state' : 'closing_control', 'stop_at' : time.strftime('%Y-%m-%d %H:%M:%S')}, context=context)
def wkf_action_post(self, cr, uid, ids, context=None):
def wkf_action_close(self, cr, uid, ids, context=None):
self._confirm_orders(cr, uid, ids, context=context)
return self.write(cr, uid, ids, {'state' : 'posted'}, context=context)
return self.write(cr, uid, ids, {'state' : 'closed'}, context=context)
def _confirm_orders(self, cr, uid, ids, context=None):
wf_service = netsvc.LocalService("workflow")
@ -370,7 +370,7 @@ class pos_session(osv.osv):
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)
wkf_service.trg_validate(uid, 'pos.session', session_id, 'opening_control', cr)
return session_id
@ -1112,6 +1112,11 @@ class pos_category(osv.osv):
'parent_id': fields.many2one('pos.category','Parent Category', select=True),
'child_id': fields.one2many('pos.category', 'parent_id', string='Children Categories'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of product categories."),
'to_weight' : fields.boolean('To Weight'),
}
_defaults = {
'to_weight' : False,
}
pos_category()

View File

@ -641,6 +641,7 @@
<field name="name"/>
<field name="parent_id"/>
<field name="sequence"/>
<field name="to_weight" />
</group>
</form>
</field>
@ -671,6 +672,7 @@
<menuitem name="Configuration" parent="menu_point_root"
id="menu_point_config_product" sequence="25" groups="group_pos_manager"/>
<!--
<record id="action_account_journal_form" model="ir.actions.act_window">
<field name="name">Payment Methods</field>
<field name="res_model">account.journal</field>
@ -685,6 +687,7 @@
id="menu_action_account_journal_form_open"
parent="menu_point_config_product"
sequence="20"/>
-->
<record model="ir.ui.view" id="view_pos_order_tree_all_sales_lines">
<field name="name">POS Sales Lines</field>
@ -894,10 +897,11 @@
</notebook>
<group colspan="4" col="5">
<field name="state" widget="statusbar" statusbar_visible="new,opened,closed,posted" statusbar_colors='{"posted":"green"}'/>
<button name="open" type="workflow" string="Open" states="new" />
<button name="close" type="workflow" string="Close" states="opened" />
<button name="post" type="workflow" string="Post" states="closed" />
<field name="state" /> <!-- widget="statusbar" statusbar_visible="new,opened,closed,posted" statusbar_colors='{"posted":"green"}'/> -->
<!-- state:opening_control -> signal:open -> state:opened -> signal:cashbox_control -> state:closing_control -> signal:close -> state:close -->
<button name="open" type="workflow" string="Open" states="opening_control"/>
<button name="cashbox_control" type="workflow" string="Cashbox Control" states="opened" />
<button name="close" type="workflow" string="Close" states="closing_control" />
</group>
</form>
</field>

View File

@ -86,51 +86,53 @@
<!-- Activities -->
<record model="workflow.activity" id="act_new">
<record model="workflow.activity" id="act_opening_control">
<field name="wkf_id" ref="wkf_pos_session"/>
<field name="flow_start">True</field>
<field name="name">new</field>
<field name="name">opening_control</field>
</record>
<record model="workflow.activity" id="act_open">
<field name="wkf_id" ref="wkf_pos_session"/>
<field name="name">open</field>
<field name="name">opened</field>
<field name="action">wkf_action_open()</field>
<field name="kind">function</field>
</record>
<record model="workflow.activity" id="act_closing_control">
<field name="wkf_id" ref="wkf_pos_session"/>
<field name="name">closing_control</field>
<field name="action">wkf_action_closing_control()</field>
<field name="kind">function</field>
</record>
<record model="workflow.activity" id="act_close">
<field name="wkf_id" ref="wkf_pos_session"/>
<field name="name">close</field>
<field name="flow_stop">True</field>
<field name="name">closed</field>
<field name="action">wkf_action_close()</field>
<field name="kind">function</field>
</record>
<record model="workflow.activity" id="act_post">
<field name="wkf_id" ref="wkf_pos_session"/>
<field name="flow_stop">True</field>
<field name="name">post</field>
<field name="action">wkf_action_post()</field>
<field name="kind">function</field>
</record>
<!-- Transitions -->
<record model="workflow.transition" id="trans_new_open">
<field name="act_from" ref="act_new"/>
<field name="act_to" ref="act_open"/>
<!-- state:opening_control -> signal:open -> state:opened -> signal:cashbox_control -> state:closing_control -> signal:close -> state:close -->
<record model="workflow.transition" id="trans_opening_control_to_open">
<field name="act_from" ref="act_opening_control" />
<field name="act_to" ref="act_open" />
<field name="signal">open</field>
</record>
<record model="workflow.transition" id="trans_open_close">
<field name="act_from" ref="act_open"/>
<field name="act_to" ref="act_close"/>
<field name="signal">close</field>
<record model="workflow.transition" id="trans_open_to_closing_control">
<field name="act_from" ref="act_open" />
<field name="act_to" ref="act_closing_control" />
<field name="signal">cashbox_control</field>
</record>
<record model="workflow.transition" id="trans_close_post">
<field name="act_from" ref="act_close"/>
<field name="act_to" ref="act_post"/>
<field name="signal">post</field>
<record model="workflow.transition" id="trans_closing_control_to_close">
<field name="act_from" ref="act_closing_control" />
<field name="act_to" ref="act_close" />
<field name="signal">close</field>
</record>
</data>

View File

@ -1,13 +0,0 @@
#!/usr/bin/env python
from osv import osv, fields
class product_category(osv.osv):
_inherit = 'product.category'
_columns = {
'to_weight' : fields.boolean('To Weight'),
}
_defaults = {
'to_weight' : False,
}

View File

@ -1,16 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<openerp>
<data>
<record id="product_category_form_view" model="ir.ui.view">
<field name="name">product.category.form</field>
<field name="model">product.category</field>
<field name="type">form</field>
<field name="inherit_id" ref="product.product_category_form_view" />
<field name="arch" type="xml">
<field name="type" position="after">
<field name="to_weight" />
</field>
</field>
</record>
</data>
</openerp>

View File

@ -23,7 +23,7 @@
</form>
</field>
</record>
<!--
<record id="action_pos_confirm" model="ir.actions.act_window">
<field name="name">Post Sale Entries</field>
<field name="type">ir.actions.act_window</field>
@ -32,6 +32,7 @@
<field name="view_mode">form</field>
<field name="target">new</field>
</record>
-->
</data>
</openerp>