Skip to main content

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 :)

Comments

Popular posts from this blog

Odoo/OpenERP: one2one relational field example

one2one relational field is deprecated in OpenERP version>5 but you can achieve the same using many2one relational field. You can achieve it in following two ways : 1) using many2one field in both the objects ( http://tutorialopenerp.wordpress.com/2014/04/23/one2one/ ) 2)  using inheritance by deligation You can easily find the first solution with little search over internet so let's start with 2nd solution. Scenario :  I want to create a one2one relation between two objects of openerp hr.employee and hr.employee.medical.details What I should do  i. Add _inherits section in hr_employee class ii. Add field medical_detail_id in hr_employee class class hr_employee(osv.osv):     _name = 'hr.employee'     _inherits = {' hr.employee.medical.details ': "medical_detail_id"}     _inherit = 'hr.employee'         _columns = {             ...

How to draw Dynamic Line or Timeseries Chart in Java using jfreechart library?

Today we are going to write a code to draw a dynamic timeseries-cum-line chart in java.   The only difference between simple and dynamic chart is that a dynamic event is used to create a new series and update the graph. In out example we are using timer which automatically calls a funtion after every 1/4 th second and graph is updated with random data. Let's try with the code : Note : I had tried my best to provide complete documentation along with code. If at any time anyone have any doubt or question please post in comments section. DynamicLineAndTimeSeriesChart.java import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import javax.swing.Timer; import javax.swing.JPanel; import org.jfree.chart.ChartFactory; import org.jfree.chart.ChartPanel; import org.jfree.chart.JFreeChart; import org.jfree.chart.axis.ValueAxis; import org.jfree.chart.plot.XYPlot; import...

pyodbc.OperationalError: ('08001', '[08001] [Microsoft][ODBC Driver 17 for SQL Server]

Recently, I faced this error in our Docker-Container environment. All the necessary packages were already installed but still, I was facing this clueless error. I search a bit and after an hour and so I found the exact reason and solution for this error. To know more about this error in detail. Please follow this Github thread. https://github.com/mkleehammer/pyodbc/issues/610 https://github.com/mkleehammer/pyodbc/issues/610#issuecomment-587523802 Solution: It's because the   server's certificate has too weak a key. In case you are using Linux env directly/not the Docker one.  Just edited /etc/ssl/openssl.cnf and change these 2 lines. MinProtocol = TLSv1.0 CipherString = DEFAULT@SECLEVEL=1 In case you are also using a container, please add these three lines to your Docker file. RUN chmod +rwx /etc/ssl/openssl.cnf RUN sed -i ' s/TLSv1.2/TLSv1/g ' /etc/ssl/openssl.cnf RUN sed -i ' s/SECLEVEL=2/SECLEVEL=1/g ' /etc/ssl/openssl.cnf Thanks!! Enjoy Programming! Refer...