}
def graph_get(self, cr, uid, id, res_model, res_id, scale, context):
-
pool = pooler.get_pool(cr.dbname)
-
process = pool.get('process.process').browse(cr, uid, [id])[0]
current_object = pool.get(res_model).browse(cr, uid, [res_id])[0]
-
nodes = {}
start = []
transitions = {}
pass
nodes[node.id] = data
if node.flow_start:
start.append(node.id)
- for tr in node.transition_ids:
+ for tr in node.transition_out:
data = {}
data['name'] = tr.name
data['source'] = tr.source_node_id.id
data['target'] = tr.target_node_id.id
-
data['buttons'] = buttons = []
for b in tr.action_ids:
button = {}
button['name'] = b.name
buttons.append(button)
-
data['roles'] = roles = []
- for r in tr.role_ids:
- role = {}
- role['name'] = r.name
- roles.append(role)
+ for r in tr.transition_ids:
+ if r.role_id:
+ role = {}
+ role['name'] = r.role_id.name
+ roles.append(role)
-
transitions[tr.id] = data
g = tools.graph(nodes.keys(), map(lambda x: (x['source'], x['target']), transitions.values()))
g.process(start)
#g.scale(100, 100, 180, 120)
g.scale(*scale)
-
graph = g.result_get()
miny = -1
for k,v in nodes.items():
-
x = graph[k]['y']
y = graph[k]['x']
-
if miny == -1:
miny = y
-
miny = min(y, miny)
-
v['x'] = x
v['y'] = y
for k, v in nodes.items():
y = v['y']
v['y'] = min(y - miny + 10, y)
-
return dict(nodes=nodes, transitions=transitions)
process_process()
'model_id': fields.many2one('ir.model', 'Object', ondelete='set null'),
'model_states': fields.char('States Expression', size=128),
'flow_start': fields.boolean('Starting Flow'),
- 'transition_ids': fields.one2many('process.transition', 'source_node_id', 'Transitions'),
+ 'transition_in': fields.one2many('process.transition', 'target_node_id', 'Starting Transitions'),
+ 'transition_out': fields.one2many('process.transition', 'source_node_id', 'Ending Transitions'),
}
_defaults = {
'kind': lambda *args: 'state',
'source_node_id': fields.many2one('process.node', 'Source Node', required=True, ondelete='cascade'),
'target_node_id': fields.many2one('process.node', 'Target Node', required=True, ondelete='cascade'),
'action_ids': fields.one2many('process.transition.action', 'transition_id', 'Buttons'),
- 'role_ids': fields.many2many('res.roles', 'process_transition_roles_rel', 'process_transition_id', 'role_id', 'Roles Required'),
+ 'transition_ids': fields.many2many('workflow.transition', 'process_transition_ids', 'ptr_id', 'wtr_id', 'Workflow Transitions'),
'note': fields.text('Description'),
}
- _defaults = {
- }
process_transition()
class process_transition_action(osv.osv):
}
process_transition_action()
-
-# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
-
</record>
<menuitem action="action_inventory_form" id="menu_action_inventory_form" parent="menu_stock_root"/>
- <record id="action_inventory_line_form" model="ir.actions.act_window">
- <field name="name">Inventory Lines</field>
+ <record id="action_inventory_form_draft" model="ir.actions.act_window">
+ <field name="name">Draft Physical Inventories</field>
<field name="type">ir.actions.act_window</field>
- <field name="res_model">stock.inventory.line</field>
+ <field name="res_model">stock.inventory</field>
<field name="view_type">form</field>
- <field name="view_mode">tree,form</field>
- <field name="view_id" ref="stock_inventory_line_tree"/>
+ <field name="domain">[('state','=','draft')]</field>
</record>
- <menuitem action="action_inventory_line_form" groups="base.group_extended" id="menu_action_inventory_line_form" parent="menu_action_inventory_form"/>
+ <menuitem action="action_inventory_form_draft" id="menu_action_inventory_form_draft" parent="menu_action_inventory_form"/>
+ <record id="action_inventory_form_new" model="ir.actions.act_window">
+ <field name="name">New Physical Inventory</field>
+ <field name="type">ir.actions.act_window</field>
+ <field name="res_model">stock.inventory</field>
+ <field name="view_type">form</field>
+ <field name="view_mode">form,tree</field>
+ </record>
+ <menuitem action="action_inventory_form_new" id="menu_action_inventory_form_new" parent="menu_action_inventory_form"/>
=============================
<field name="model">stock.location</field>
<field name="type">tree</field>
<field name="arch" type="xml">
- <tree string="Stock location">
- <field name="name"/>
+ <tree string="Stock location" colors="blue:usage=='internal'">
+ <field name="complete_name"/>
<field name="usage"/>
<field name="account_id"/>
<field name="active"/>
<field name="type">calendar</field>
<field name="priority" eval="2"/>
<field name="arch" type="xml">
- <calendar string="Calendar View" date_start="date" color="state">
+ <calendar string="Calendar View" date_start="min_date" date_stop="max_date" color="address_id">
<field name="name"/>
<field name="type"/>
<field name="address_id"/>
<field name="origin" select="2"/>
<field name="invoice_state" select="2" string="Invoice Control"/>
<field name="name" readonly="1" select="1"/>
- <field name="min_date" select="2"/>
+ <field name="min_date" select="2" readonly="1"/>
</group>
<notebook colspan="4">
<page string="General Information">