_description ='Process Nodes'
_columns = {
'name': fields.char('Name', size=30,required=True),
- 'process_id': fields.many2one('process.process', 'Process', required=True),
+ 'process_id': fields.many2one('process.process', 'Process', required=True, ondelete='cascade'),
'kind': fields.selection([('state','State'), ('subflow','Subflow')], 'Kind of Node', required=True),
'menu_id': fields.many2one('ir.ui.menu', 'Related Menu'),
'note': fields.text('Notes'),
_description = 'Condition'
_columns = {
'name': fields.char('Name', size=30, required=True),
- 'node_id': fields.many2one('process.node', 'Node', required=True),
+ 'node_id': fields.many2one('process.node', 'Node', required=True, ondelete='cascade'),
'model_id': fields.many2one('ir.model', 'Object', ondelete='set null'),
'model_states': fields.char('Expression', required=True, size=128)
}
+++ /dev/null
-<?xml version="1.0" ?>
-<openerp>
- <data>
- <record id="process_process_salesworkflow0" model="process.process">
- <field eval="1" name="active"/>
- <field eval=""""Sales flow for services companies."""" name="note"/>
- <field eval=""""Sales Workflow"""" name="name"/>
- </record>
- </data>
- <data>
- <record id="process_node_quotation0" model="process.node">
- <field name="menu_id" ref="sale.menu_action_order_tree10"/>
- <field name="process_id" ref="process_process_salesworkflow0"/>
- <field eval=""""state"""" name="kind"/>
- <field eval=""""Quotation"""" name="name"/>
- <field name="model_id" ref="sale.model_sale_order"/>
- <field eval="1" name="flow_start"/>
- </record>
- </data>
- <data>
- <record id="process_node_saleorder0" model="process.node">
- <field name="menu_id" ref="sale.menu_action_order_tree9"/>
- <field name="process_id" ref="process_process_salesworkflow0"/>
- <field eval=""""state"""" name="kind"/>
- <field eval=""""Sale Order"""" name="name"/>
- <field name="model_id" ref="sale.model_sale_order"/>
- <field eval="0" name="flow_start"/>
- </record>
- </data>
- <data>
- <record id="process_node_packinglist0" model="process.node">
- <field name="menu_id" ref="stock.menu_picking_waiting"/>
- <field name="process_id" ref="process_process_salesworkflow0"/>
- <field eval=""""state"""" name="kind"/>
- <field eval=""""Packing List"""" name="name"/>
- <field name="model_id" ref="stock.model_stock_picking"/>
- <field eval="0" name="flow_start"/>
- </record>
- </data>
- <data>
- <record id="process_node_deliveryorder0" model="process.node">
- <field name="menu_id" ref="stock.menu_picking_waiting_delivery"/>
- <field name="process_id" ref="process_process_salesworkflow0"/>
- <field eval=""""state"""" name="kind"/>
- <field eval=""""Delivery Order"""" name="name"/>
- <field name="model_id" ref="stock.model_stock_picking"/>
- <field eval="0" name="flow_start"/>
- </record>
- </data>
- <data>
- <record id="process_node_invoice0" model="process.node">
- <field name="menu_id" ref="account.menu_invoice_draft"/>
- <field name="process_id" ref="process_process_salesworkflow0"/>
- <field eval=""""state"""" name="kind"/>
- <field eval=""""Invoice"""" name="name"/>
- <field name="model_id" ref="account.model_account_invoice"/>
- <field eval="0" name="flow_start"/>
- </record>
- </data>
- <data>
- <record id="process_transition_confirmquotation0" model="process.transition">
- <field eval="[(6,0,[])]" name="transition_ids"/>
- <field eval=""""Confirm Quotation"""" name="name"/>
- <field name="node_from_id" ref="process_node_quotation0"/>
- <field name="node_to_id" ref="process_node_saleorder0"/>
- </record>
- </data>
- <data>
- <record id="process_transition_packing0" model="process.transition">
- <field eval="[(6,0,[])]" name="transition_ids"/>
- <field eval=""""Packing"""" name="name"/>
- <field name="node_from_id" ref="process_node_saleorder0"/>
- <field name="node_to_id" ref="process_node_packinglist0"/>
- </record>
- </data>
- <data>
- <record id="process_transition_deliver0" model="process.transition">
- <field eval="[(6,0,[])]" name="transition_ids"/>
- <field eval=""""Deliver"""" name="name"/>
- <field name="node_from_id" ref="process_node_packinglist0"/>
- <field name="node_to_id" ref="process_node_deliveryorder0"/>
- </record>
- </data>
- <data>
- <record id="process_transition_invoice0" model="process.transition">
- <field eval="[(6,0,[])]" name="transition_ids"/>
- <field eval=""""Invoice"""" name="name"/>
- <field name="node_from_id" ref="process_node_saleorder0"/>
- <field name="node_to_id" ref="process_node_invoice0"/>
- </record>
- </data>
-</openerp>
--- /dev/null
+<?xml version="1.0" ?>
+<openerp>
+
+
+ <data>
+
+ <record id="sales_workflow" model="process.process">
+ <field name="name">Sales Workflow</field>
+ <field name="note">Sales flow for services companies.</field>
+ </record>
+
+ <!-- Nodes -->
+
+ <record id="node_quotation" model="process.node">
+ <field name="name">Quotation</field>
+ <field name="note">Quotations are sale orders in draft mode</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Sale Order')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'My Quotations')]"></field>
+ <field name="kind">state</field>
+ <field name="model_states">object.state == 'draft'</field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_sale_order" model="process.node">
+ <field name="name">Sale Order</field>
+ <field name="note">Manages the delivery in invoicing process</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Sale Order')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'All Sales Order')]"></field>
+ <field name="kind">state</field>
+ <field name="model_states">object.state == 'manual'</field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_invoice_on_sale" model="process.node">
+ <field name="name">Invoice</field>
+ <field name="note">In case you invoiced on Sale Order</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Invoice')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Invoices')]"></field>
+ <field name="kind">state</field>
+ <field name="model_states"></field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_tasks" model="process.node">
+ <field name="name">Tasks</field>
+ <field name="note">In case you sale services on order</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Task')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'All Tasks')]"></field>
+ <field name="kind">subflow</field>
+ <field name="model_states"></field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_packing" model="process.node">
+ <field name="name">Packing List</field>
+ <field name="note">The workers pack the requested items</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Packing list')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Packings to Process')]"></field>
+ <field name="kind">state</field>
+ <field name="model_states"></field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_delivery_order" model="process.node">
+ <field name="name">Delivery Order</field>
+ <field name="note">The transporter take the box and deliver it</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Stock Move')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Waiting Delivery Orders')]"></field>
+ <field name="kind">state</field>
+ <field name="model_states"></field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <record id="node_invoice_on_delivery" model="process.node">
+ <field name="name">Invoice</field>
+ <field name="note">In case you invoice based on deliveries</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Invoice')]"></field>
+ <field name="menu_id" model="ir.ui.menu" search="[('name', '=', 'Invoices')]"></field>
+ <field name="kind">subflow</field>
+ <field name="model_states"></field>
+ <field name="process_id" ref="sales_workflow"/>
+ </record>
+
+ <!-- Node conditions (Gray nodes) -->
+
+ <record id="node_condition_invoice_on_order" model="process.condition">
+ <field name="name">Invoice on order</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Sale Order')]"></field>
+ <field name="model_states">object.order_policy != 'postpaid'</field>
+ <field name="node_id" ref="node_invoice_on_sale"/>
+ </record>
+
+ <record id="node_condition_invoice_on_delivery" model="process.condition">
+ <field name="name">Invoice on delivery</field>
+ <field name="model_id" model="ir.model" search="[('name', '=', 'Sale Order')]"></field>
+ <field name="model_states">object.order_policy == 'postpaid'</field>
+ <field name="node_id" ref="node_invoice_on_sale"/>
+ </record>
+
+ <!-- Transitions -->
+
+ <record id="transition_confirm_quotation" model="process.transition">
+ <field name="name">Confirm Quotation</field>
+ <field name="source_node_id" ref="node_quotation"></field>
+ <field name="target_node_id" ref="node_sale_order"></field>
+ </record>
+
+ <record id="transition_packing" model="process.transition">
+ <field name="name">Packing</field>
+ <field name="source_node_id" ref="node_sale_order"></field>
+ <field name="target_node_id" ref="node_packing"></field>
+ </record>
+
+ <record id="transition_invoce_on_sale" model="process.transition">
+ <field name="name">Invoice on order</field>
+ <field name="source_node_id" ref="node_sale_order"></field>
+ <field name="target_node_id" ref="node_invoice_on_sale"></field>
+ </record>
+
+ <record id="transition_traks" model="process.transition">
+ <field name="name">Create Tasks</field>
+ <field name="source_node_id" ref="node_sale_order"></field>
+ <field name="target_node_id" ref="node_tasks"></field>
+ </record>
+
+ <record id="transition_delivery" model="process.transition">
+ <field name="name">Deliver Goods</field>
+ <field name="source_node_id" ref="node_packing"></field>
+ <field name="target_node_id" ref="node_delivery_order"></field>
+ </record>
+
+ <record id="transition_invoice_on_delivery" model="process.transition">
+ <field name="name">Invoice or delivery</field>
+ <field name="source_node_id" ref="node_delivery_order"></field>
+ <field name="target_node_id" ref="node_invoice_on_delivery"></field>
+ </record>
+
+ <!-- TODO: Transition actions (Buttons) -->
+ <!-- TODO: Transition roles (workflow transition ids) -->
+
+ </data>
+
+</openerp>