Friday, 16 January 2015

Odoo/OpenERP: Create multiple workflows in a single module

Today's post is about : How to create multiple workflows for multiple models in a single module. Few days back, I created a module custom_account with two models custom_expense and custom_payment. I created two different but almost similar workflows for both of them. When I installed the module, only latter one was working. What could be the reason?

Problem was with Activity and Transition ids. I was using same ids in both the workflows. Check following:

Old Code:


custom_expense_workflow_view.xml

        <!-- Activity -->
       
        <record id="act_draft" model="workflow.activity">
            <field name="wkf_id" ref="custom_expense_workflow"/>
            <field name="flow_start">True</field>
            <field name="kind">dummy</field>
            <field name="name">draft</field>
        </record>          
       
        <record id="act_submit" model="workflow.activity">
            <field name="wkf_id" ref="custom_expense_workflow"/>
            <field name="kind">function</field>
            <field name="action">expense_submit()</field>
            <field name="name">submit</field>
        </record>    
       
        <!-- Transistion -->

        <record id="trans_draft_submit" model="workflow.transition">
            <field name="act_from" ref="act_draft"/>
            <field name="act_to" ref="act_submit"/>
            <field name="signal">signal_submit</field>                      
        </record>  
 
custom_payment_workflow_view.xml

        <!-- Activity -->
       
        <record id="act_draft" model="workflow.activity">
            <field name="wkf_id" ref="custom_payment_workflow"/>
            <field name="flow_start">True</field>
            <field name="kind">dummy</field>
            <field name="name">draft</field>
        </record>          
       
        <record id="act_submit" model="workflow.activity">
            <field name="wkf_id" ref="custom_payment_workflow"/>
            <field name="kind">function</field>
            <field name="action">expense_submit()</field>
            <field name="name">submit</field>
        </record>    
       
        <!-- Transistion -->

        <record id="trans_draft_submit" model="workflow.transition">
            <field name="act_from" ref="act_draft"/>
            <field name="act_to" ref="act_submit"/>
            <field name="signal">signal_submit</field>                      
        </record>      


So workflow.activity and workflow.transition were same. That was the catch.

New Code:


custom_expense_workflow_view.xml

         <!-- Activity -->
       
        <record id="expense_act_draft" model="workflow.activity">
            <field name="wkf_id" ref="custom_expense_workflow"/>
            <field name="flow_start">True</field>
            <field name="kind">dummy</field>
            <field name="name">draft</field>
        </record>          
       
        <record id="expense_act_submit" model="workflow.activity">
            <field name="wkf_id" ref="custom_expense_workflow"/>
            <field name="kind">function</field>
            <field name="action">expense_submit()</field>
            <field name="name">submit</field>
        </record>    
       
        <!-- Transistion -->

        <record id="expense_trans_draft_submit" model="workflow.transition">
            <field name="act_from" ref="expense_act_draft"/>
            <field name="act_to" ref="expense_act_submit"/>
            <field name="signal">signal_submit</field>                      
        </record>  
 
custom_payment_workflow_view.xml

        <!-- Activity -->
       
        <record id="payment_act_draft" model="workflow.activity">
            <field name="wkf_id" ref="custom_payment_workflow"/>
            <field name="flow_start">True</field>
            <field name="kind">dummy</field>
            <field name="name">draft</field>
        </record>          
       
        <record id="payment_act_submit" model="workflow.activity">
            <field name="wkf_id" ref="custom_payment_workflow"/>
            <field name="kind">function</field>
            <field name="action">expense_submit()</field>
            <field name="name">submit</field>
        </record>    
       
        <!-- Transistion -->

        <record id="payment_trans_draft_submit" model="workflow.transition">
            <field name="act_from" ref="payment_act_draft"/>
            <field name="act_to" ref="payment_act_submit"/>
            <field name="signal">signal_submit</field>                      
        </record>      

That's it.

Thanks!!!!!!!!!! Enjoy Programming :)

Gmail: Download blocked file

Hi, today we are going to learn, how to download blocked file in gmail. Sometimes you see following message in gmail: and you can...