← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/training_degree_search_view_gpa into lp:openobject-addons

 

gpa(Open ERP) has proposed merging lp:~openerp-dev/openobject-addons/training_degree_search_view_gpa into lp:openobject-addons.

Requested reviews:
  Bhumika (OpenERP) (sbh-openerp)

For more details, see:
https://code.launchpad.net/~openerp-dev/openobject-addons/training_degree_search_view_gpa/+merge/53759

training_degree: Improvement for the training_degree view , added search view ,icon in the button, improvement in the wizard
-- 
The attached diff has been truncated due to its size.
https://code.launchpad.net/~openerp-dev/openobject-addons/training_degree_search_view_gpa/+merge/53759
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/training_degree_search_view_gpa.
=== added directory 'base_contact_training'
=== added file 'base_contact_training/__init__.py'
--- base_contact_training/__init__.py	1970-01-01 00:00:00 +0000
+++ base_contact_training/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,25 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+import base_contact_training
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'base_contact_training/__openerp__.py'
--- base_contact_training/__openerp__.py	1970-01-01 00:00:00 +0000
+++ base_contact_training/__openerp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,39 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+
+{
+    'name': 'Base Contact Training',
+    'version': '1.0',
+    'category': 'Generic Modules/Base',
+    'description':'',
+    'author': 'OpenERP SA',
+    'website': 'http://www.openerp.com',
+    'depends': ['base','base_contact'],
+    'init_xml': [],
+    'update_xml':['base_contact_training_view.xml'],
+    'demo_xml': [],
+    'test': [],
+    'installable': True,
+    'active': False,
+    'certificate': '',
+}
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'base_contact_training/base_contact_training.py'
--- base_contact_training/base_contact_training.py	1970-01-01 00:00:00 +0000
+++ base_contact_training/base_contact_training.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,46 @@
+# -*- coding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2010 Tiny SPRL (<http://tiny.be>).
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU Affero General Public License as
+#    published by the Free Software Foundation, either version 3 of the
+#    License, or (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU Affero General Public License for more details.
+#
+#    You should have received a copy of the GNU Affero General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import fields, osv
+
+class res_partner_function(osv.osv):
+    _name = 'res.partner.function'
+    _description = 'Function of the contact'
+    _columns = {
+        'name': fields.char('Function Name', size=64, required=True),
+        'code': fields.char('Code', size=8, required=True),
+        'ref':fields.char('Notes', size=32,),
+    }
+    _order = 'name'
+    _sql_constraints = [
+        ('code_uniq', 'unique (code)', 'The Code of the Partner Function must be unique !')
+    ]
+res_partner_function()
+
+class res_partner_job(osv.osv):
+    _inherit = 'res.partner.job'
+    _columns = {
+    'function_id': fields.many2one('res.partner.function','Partner Function')
+    }
+res_partner_job()    
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'base_contact_training/base_contact_training_view.xml'
--- base_contact_training/base_contact_training_view.xml	1970-01-01 00:00:00 +0000
+++ base_contact_training/base_contact_training_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+	   <record id="view_partner_function_form" model="ir.ui.view">
+	            <field name="name">res.partner.function.form</field>
+	            <field name="model">res.partner.function</field>
+	            <field name="type">form</field>
+	            <field name="arch" type="xml">
+	                <form string="Partner Functions">
+	                    <field name="name" select="1"/>
+	                    <field name="code" select="1"/>
+	                </form>
+	            </field>
+	        </record>
+	        <record id="view_partner_function_tree" model="ir.ui.view">
+	            <field name="name">res.partner.function.tree</field>
+	            <field name="model">res.partner.function</field>
+	            <field name="type">tree</field>
+	            <field name="arch" type="xml">
+	                <tree string="Partner Functions">
+	                    <field name="code"/>
+	                    <field name="name"/>
+	                </tree>
+	            </field>
+	        </record>
+	        <record id="action_partner_function_form" model="ir.actions.act_window">
+	            <field name="name">Partner Functions</field>
+	            <field name="type">ir.actions.act_window</field>
+	            <field name="res_model">res.partner.function</field>
+	            <field name="view_type">form</field>
+	        </record>
+	        <menuitem action="action_partner_function_form" id="menu_partner_function_form" parent="base.menu_address_book"/>
+
+	</data>
+</openerp>
\ No newline at end of file

=== added directory 'board_training'
=== added file 'board_training/__init__.py'
--- board_training/__init__.py	1970-01-01 00:00:00 +0000
+++ board_training/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import board_training

=== added file 'board_training/__terp__.py'
--- board_training/__terp__.py	1970-01-01 00:00:00 +0000
+++ board_training/__terp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,44 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+{
+    'name' : 'Board Training',
+    'version' : '0.1',
+    'author' : 'Tiny SPRL - Thamini S.à.R.L',
+    'depends' : [
+        'board',
+        'training',
+        'training_exam',
+    ],
+    'init_xml' : [],
+    'demo_xml' : [],
+    'update_xml' : [
+        'security/ir.model.access.csv',
+        'board_training_view.xml',
+        'board_course.xml',
+        'board_questionnaire.xml',
+        'board_orders.xml',
+    ],
+    'active' : False,
+    'installable' : True,
+}

=== added file 'board_training/board_course.xml'
--- board_training/board_course.xml	1970-01-01 00:00:00 +0000
+++ board_training/board_course.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,82 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <record model="ir.actions.act_window" id="seances_without_supports_act">
+            <field name="name">Seances in the next 30 days without courses supports</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <!--<field name="context">{'working_days': 21}</field>-->
+            <field name="domain">[('kind', '!=', 'exam'), ('state', 'in', ['opened', 'confirmed']), ('course_has_attachments', '=', False),('course_forced_nosupport','=',False), ('date','&gt;',time.strftime('%Y-%m-%d 00:00:00')), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59'))]</field>
+
+        </record>
+
+        <record model="ir.actions.act_window" id="seances_with_supports_under_review_act">
+            <field name="name">Seances in the next 30 days with courses supports under review</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <!--<field name="context">{'working_days': 21}</field>-->
+            <field name="domain">[('kind', '!=', 'exam'), ('state', 'in', ['opened', 'confirmed']), ('course_has_attachments', '=', True),('course_id.active_course_review','=',True),('date','&gt;',time.strftime('%Y-%m-%d 00:00:00')), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_course_pending_review_action">
+            <field name="name">Review Waiting Confirmation</field>
+            <field name="res_model">training.content.review</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('type', '=', 'course_material'),('state', 'in', ['draft', 'validated'])]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_course_inprogress_action">
+            <field name="name">Review In Progress</field>
+            <field name="res_model">training.content.review</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('type', '=', 'course_material'),('state', '=', 'inprogress')]</field>
+        </record>
+
+        <record model="ir.ui.view" id="courses_board">
+            <field name="name">training.course.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Courses Materials Dashboard">
+                    <vpaned>
+                        <child1 col="1">
+                            <hpaned>
+                                <child1 col="1">
+                                    <action name="%(seances_without_supports_act)d" string="Seances in the next 30 days without course support"/>
+                                </child1>
+                                <child2 col="1">
+                                    <action name="%(seances_with_supports_under_review_act)d" string="Seances in the next 30 days with course support under review"/>
+                                </child2>
+                            </hpaned>
+                        </child1>
+                        <child2 col="1">
+                            <vpaned>
+                                <child1 col="1">
+                                    <action name="%(board_course_pending_review_action)d" string="Review Waiting Confirmation"/>
+                                </child1>
+                                <child2 col="1">
+                                    <action name="%(board_course_inprogress_action)d" string="Review In Progress"/>
+                                </child2>
+                            </vpaned>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="courses_board_act">
+            <field name="name">Course Materials Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="courses_board" />
+        </record>
+        <menuitem parent="board_mi" id="courses_board_mi" action="courses_board_act" icon="terp-graph" />
+
+
+    </data>
+</openerp>
+    

=== added file 'board_training/board_orders.xml'
--- board_training/board_orders.xml	1970-01-01 00:00:00 +0000
+++ board_training/board_orders.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,154 @@
+<openerp>
+<data>
+
+        <record id="board_training_purchase_order_line_tree" model="ir.ui.view">
+            <field name="name">training.purchase.order.line.tree.portal</field>
+            <field name="model">purchase.order.line</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree colors="red:seance_date&lt;time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 24*3600*3))" string="Purchase Order Lines">
+                    <field name="seance_date"/>
+                    <field name="seance_id_int" />
+                    <field name="seance_id" link="0"/>
+                    <field name="course_id" link="0"/>
+                    <field name="product_qty"/>
+                    <field name="product_id" link="0" />
+                    <field name="name"/>
+                    <field name="price_unit"/>
+                    <field name="price_subtotal" sum="Total"/>
+		            <field name="location_id" link="0"/>
+                </tree>
+            </field>
+        </record>
+
+        <!--
+            Dashboard ZONE: Order line waiting confirmation
+        -->
+        <record model="ir.actions.act_window" id="purchase_order_line_waiting_confirm_action">
+	        <field name="name">Order line waiting confirmation</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state','=','confirmed')]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_waiting_confirm_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="board_training_purchase_order_line_tree"/>
+            <field name="act_window_id" ref="purchase_order_line_waiting_confirm_action"/>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_waiting_confirm_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="training.purchase_order_line_form"/>
+            <field name="act_window_id" ref="purchase_order_line_waiting_confirm_action"/>
+        </record>
+
+        <!--
+            Dashboard ZONE: Approved order lines
+        -->
+        <record model="ir.actions.act_window" id="purchase_order_line_approved_action">
+	        <field name="name">Approved order lines</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state','in',['approved','done']),('seance_date','&gt;=',time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_approved_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="board_training_purchase_order_line_tree"/>
+            <field name="act_window_id" ref="purchase_order_line_approved_action"/>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_approved_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="training.purchase_order_line_form"/>
+            <field name="act_window_id" ref="purchase_order_line_approved_action"/>
+        </record>
+
+        <!--
+            Dashboard ZONE: Disapproved order lines
+        -->
+        <record model="ir.actions.act_window" id="purchase_order_line_disapproved_action">
+	        <field name="name">Disapproved order lines</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state','=','cancel'),('seance_date','&gt;=', time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_disapproved_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="board_training_purchase_order_line_tree"/>
+            <field name="act_window_id" ref="purchase_order_line_disapproved_action"/>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_disapproved_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="training.purchase_order_line_form"/>
+            <field name="act_window_id" ref="purchase_order_line_disapproved_action"/>
+        </record>
+
+        <!--
+            Dashboard ZONE: Seance with Purchase in Errors
+        -->
+        <record model="ir.actions.act_window" id="seance_with_purchase_in_errors_action">
+           <field name="name">Seance with Purchase in Errors</field> 
+           <field name="res_model">training.seance</field>
+           <field name="view_type">form</field>
+           <field name="view_mode">tree,form</field>
+           <field name="domain">[('purchase_in_error','=',True)]</field>
+        </record>
+
+        <!--
+            Dashboard: Supplier Orders Dashboard
+        -->
+        <record model="ir.ui.view" id="board_training_supplier_order_form">
+            <field name="name">board.training.supplier.orders</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Supplier Orders Dashboard">
+                    <vpaned>
+                        <child1 col="1">
+                            <vpaned>
+                                <child1 col="1">
+                                    <action name="%(purchase_order_line_waiting_confirm_action)d" string="Order Line Waiting Confirmation" />
+                                </child1>
+                                <child2 col="1">
+                                    <action name="%(purchase_order_line_approved_action)d" string="Approved Order Lines"/>
+                                </child2>
+                            </vpaned>
+                        </child1>
+                        <child2 col="2">
+                            <vpaned>
+                                <child1 col="1">
+                                    <!-- TODO: Seance with difference between commanded and real number of participants -->
+                                    <action name="%(seance_with_purchase_in_errors_action)d" string="Seance with Purchase in Errors"/>
+                                </child1>
+                                <child2>
+                                    <action name="%(purchase_order_line_disapproved_action)d" string="Disapproved Order Lines"/> 
+                                </child2>
+                            </vpaned> 
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="action_board_supplier_orders">
+            <field name="name">Supplier Orders DashboardBoard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="usage">menu</field>
+            <field name="view_id" ref="board_training_supplier_order_form" />
+        </record>
+
+        <menuitem parent="board_mi" id="orders_board_mi" action="action_board_supplier_orders" icon="terp-graph" />
+</data>
+</openerp>

=== added file 'board_training/board_questionnaire.xml'
--- board_training/board_questionnaire.xml	1970-01-01 00:00:00 +0000
+++ board_training/board_questionnaire.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,154 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+    <record model="ir.ui.view" id="board_questionnaire_exam_questionnaire_tree">
+        <field name="name">board.questionnaire.training.exam.questionnaire.tree</field>
+        <field name="model">training.exam.questionnaire</field>
+        <field name="type">tree</field>
+        <field name="priority">20</field>
+        <field name="arch" type="xml">
+            <tree string="Questionnaires" colors="red:questionnaire_min_ready_date&lt;time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 24*3600*10))">
+                <field name="questionnaire_min_ready_date" string="Next Scheduled Date"/>
+                <field name="name" />
+                <field name="course_ids" />
+                <field name="duration" />
+                <field name="kind" />
+                <field name="passing_score"/>
+                <field name="state" />
+            </tree>
+        </field>
+    </record>
+
+    <record model="ir.actions.act_window" id="questionnaires_pending_act">
+	    <field name="name">Questionnaires Pending Review</field>
+        <field name="res_model">training.exam.questionnaire</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('state', '=', 'pending')]</field>
+        <field name="context">{}</field>
+        <field name="view_id" ref="board_questionnaire_exam_questionnaire_tree"/>
+    </record>
+
+    <record model="ir.actions.act_window" id="questionnaires_inprogress_act">
+        <field name="name">Questionnaires In Progress</field>
+        <field name="res_model">training.exam.questionnaire</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('state', '=', 'inprogress')]</field>
+        <field name="context">{}</field>
+        <field name="view_id" ref="board_questionnaire_exam_questionnaire_tree"/>
+    </record>
+
+    <record model="ir.ui.view" id="dashboard_questionnaire_training_course_list">
+        <field name="name">training.course.list</field>
+        <field name="model">training.course</field>
+        <field name="type">tree</field>
+        <field name="priority">20</field>
+        <field name="arch" type="xml">
+            <tree string="Courses" colors="red:questionnaire_min_ready_date&lt;time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 24*3600*10))">
+	        <field name="questionnaire_min_ready_date"/>
+                <field name="course_type_id" />
+                <field name="name" string="Short Name" />
+                <field name="category_id" string="Product Line" />
+                <field name="duration" widget="float_time" />
+                <field name="state_course" />
+                <field name="has_support" />
+                <field name="reference_id" />
+                <field name="reference_lang_id" />
+                <field name="reference_type" />
+                <field name="active_exam_review"/>
+                <field name="active_exam_review_name"/>
+
+            </tree>
+        </field>
+    </record>
+
+    <record model="ir.actions.act_window" id="questionnaires_course_wo_valid_questionnaire">
+	<field name="name">Courses without Questionnaires and planned within the next 30 days</field>
+	<field name="res_model">training.course</field>
+	<field name="view_type">form</field>
+	<field name="view_mode">tree,form</field>
+	<field name="domain">[('has_valid_questionnaire','=',False),('forced_noquestionnaire','=',False),('questionnaire_min_ready_date','&lt;=',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59'))]</field> 
+	<field name="context">{}</field>
+	<field name="view_id" ref="dashboard_questionnaire_training_course_list"/>
+    </record>
+
+    <record model="ir.actions.act_window" id="questionnaires_course_with_questionnaire_under_review">
+    	<field name="name">Courses with Questionnaires under review and planned within the next 30 days</field>
+    	<field name="res_model">training.course</field>
+    	<field name="view_type">form</field>
+    	<field name="view_mode">tree,form</field>
+    	<field name="domain">[('has_valid_questionnaire','=',True),('questionnaire_min_ready_date','&lt;=',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59')),('active_exam_review','=',True)]</field> 
+    	<field name="context">{}</field>
+    	<field name="view_id" ref="dashboard_questionnaire_training_course_list"/>
+    </record>
+
+    <record model="ir.actions.act_window" id="board_questionnaire_pending_review_action">
+        <field name="name">Review waiting confirmation</field>
+        <field name="res_model">training.content.review</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('type', '=', 'exam_material'),('state', 'in', ['draft','validated'])]</field>
+    </record>
+
+    <record model="ir.actions.act_window" id="board_questionnaire_inprogress_review_action">
+        <field name="name">Review In Progress</field>
+        <field name="res_model">training.content.review</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('type', '=', 'exam_material'),('state', '=', 'inprogress')]</field>
+    </record>
+
+    <record model="ir.actions.act_window" id="board_questionnaire_manually_blocked_for_print_act">
+        <field name="name">Questionnaire Manually Blocked For Printing</field>
+        <field name="res_model">training.exam.questionnaire</field>
+        <field name="view_type">form</field>
+        <field name="view_mode">tree,form</field>
+        <field name="domain">[('forced_noprint','=',True)]</field>
+    </record>
+
+    <record model="ir.ui.view" id="questionnaires_board">
+        <field name="name">training.questionnaire.dashboard</field>
+        <field name="model">board.board</field>
+        <field name="type">form</field>
+        <field name="arch" type="xml">
+            <form string="Exam Materials Dashboard">
+                <vpaned>
+                    <child1 col="1">
+                        <hpaned>
+                            <child1>
+			                    <action name="%(questionnaires_course_wo_valid_questionnaire)d" string="Courses without Questionnaires and planned within the next 30 days"/>
+                            </child1>
+                            <child2>
+                                <action name="%(questionnaires_course_with_questionnaire_under_review)d" string="Courses with Questionnaires under review and planned within the next 30 days"/>
+                            </child2>
+                        </hpaned>
+                    </child1>
+                    <child2 col="1">
+                        <vpaned>
+                            <child1 col="1">
+                                <action name="%(board_questionnaire_pending_review_action)d" string="Review Waiting Confirmation"/>
+                            </child1>
+                            <child2 col="2">
+                                <action name="%(board_questionnaire_inprogress_review_action)d" string="Review In Progress"/>
+                            </child2>
+                        </vpaned>
+                        <action name="%(board_questionnaire_manually_blocked_for_print_act)d" string="Questionnaire Manually Blocked For Printing"/>
+                    </child2>
+                </vpaned>
+            </form>
+        </field>
+    </record>
+
+    <record model="ir.actions.act_window" id="questionnaires_board_act">
+        <field name="name">Exam Materials Dashboard</field>
+        <field name="res_model">board.board</field>
+        <field name="view_id" ref="questionnaires_board" />
+    </record>
+    <menuitem parent="board_mi" id="questionnaires_board_mi" action="questionnaires_board_act" icon="terp-graph" />
+
+
+    </data>
+</openerp>
+    

=== added file 'board_training/board_training.py'
--- board_training/board_training.py	1970-01-01 00:00:00 +0000
+++ board_training/board_training.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,318 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+from osv import osv, fields
+import mx.DateTime
+import tools
+from tools.func import partial
+
+FMT = '%Y-%m-%d'
+
+class act_window(osv.osv):
+    _inherit = 'ir.actions.act_window'
+    _columns = {
+        'domain': fields.char('Domain Value', size=512),    # bigger size...
+    }
+act_window()
+
+
+class training_session(osv.osv):
+    _inherit = 'training.session'
+
+    def _has_confirmed_stakeholder_compute(self, cr, uid, ids, fields, args, context=None):
+        res = dict.fromkeys(ids, 0)
+
+        for obj in self.browse(cr, uid, ids, context=context):
+            res[obj.id] = all(any(part.state == 'accepted' for part in seance.contact_ids)
+                              for seance in obj.seance_ids)
+
+        return res
+
+    _columns = {
+        'has_confirmed_stakeholder' : fields.function(_has_confirmed_stakeholder_compute,
+                                                      method=True,
+                                                      string='Stakeholder',
+                                                      type='boolean'),
+    }
+
+training_session()
+
+def _generate_sql_working_days(working_days):
+    positive = working_days > 0
+    sign = ['-', '+'][positive]
+
+    return """(SELECT date
+                 FROM (SELECT current_date %s s.t as date
+                         FROM generate_series(0, 365) as s(t)
+                      ) AS days
+                WHERE NOT EXISTS(SELECT 1
+                                   FROM training_holiday_period
+                                  WHERE days.date BETWEEN date_start AND date_stop
+                                )
+                LIMIT %d)
+    """ % (sign, abs(working_days) + 1)
+
+
+class training_session(osv.osv):
+    _inherit = 'training.session'
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        _super = partial(super(training_session, self).search, cr=cr, uid=uid, domain=domain, offset=offset, limit=limit, order=order, context=context, count=count)
+
+        min_limit_confirmed = context and context.get('min_limit_confirmed', False) or False
+        if min_limit_confirmed:
+            ids = _super(order='date desc', count=False)
+            ids = [session.id for session in self.browse(cr, uid, ids, context=context) if session.min_limit < (session.manual and session.participant_count_manual or session.participant_count)]
+            if count:
+                return len(ids)
+            return ids
+
+        working_days = context and context.get('working_days', False) or False
+
+        if working_days is not False:   # 0 is for today
+            cr.execute("select id from training_session where date::date in %s" % (_generate_sql_working_days(working_days),))
+
+            ids = [x[0] for x in cr.fetchall()]
+            cr.sql_log = True
+            return _super(domain=[('id', 'in', ids)]+domain)
+        return _super()
+
+training_session()
+
+class training_seance(osv.osv):
+    _inherit = 'training.seance'
+
+    def _valid_participant_count(self, cr, uid, ids, fn, args, context=None):
+        result = dict.fromkeys(ids, False)
+        for seance in self.browse(cr, uid, ids, context=context):
+            count = ['participant_count_manual', 'participant_count'][seance.manual]
+            result[seance.id] = seance[count] in range(seance.min_limit, seance.max_limit + 1)
+        return result
+
+    def _course_has_attachments(self, cr, uid, ids, fn, args, context=None):
+        result = dict.fromkeys(ids, False)
+        for seance in self.browse(cr, uid, ids, context=context):
+            result[seance.id] = seance.kind == 'standard' and len(seance.course_id.attachment_ids) > 0 or False
+        return result
+
+    def _course_has_attachments_search(self, cr, uid, obj, name, domain, context=None):
+        if not len(domain):
+            return []
+
+        val = bool(domain[0][2])
+        if domain[0][1] != '=':
+            val = not val
+
+        _not = ['NOT', ''][val]
+        query = """SELECT distinct(id)
+                     FROM training_seance s
+                    WHERE %s EXISTS(SELECT 1
+                                      FROM ir_attachment a
+                                     WHERE a.res_model = 'training.course'
+                                       AND a.res_id = s.course_id
+                                       AND a.type = 'course_material'
+                                    )
+                """ % ( _not,)
+        cr.execute(query)
+        ids = [i for (i,) in cr.fetchall()]
+        if not ids:
+            return [('id','=','0')]
+        return [('id', 'in', ids)]
+
+
+    _columns = {
+        'valid_participant_count': fields.function(_valid_participant_count,
+                                                   method=True,
+                                                   string='Valid Participant Count',
+                                                   store=True),
+        'course_has_attachments': fields.function(_course_has_attachments,
+                                                  method=True,
+                                                  fnct_search=_course_has_attachments_search,
+                                                  string='Couse Has Attachements?'),
+        'course_forced_nosupport': fields.related('course_id', 'forced_nosupport', type='boolean', string='Course Forced No Support'),
+    }
+
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None,context=None, count=False):
+        _super = partial(super(training_seance, self).search, cr=cr, uid=uid, domain=domain, offset=offset, limit=limit, order=order, context=context, count=count)
+
+        working_days = context and context.get('working_days', False) or False
+
+        if working_days is not False:   # 0 is for today
+            cr.execute("select id from training_seance where date::date in %s" % (_generate_sql_working_days(working_days),))
+            ids = [x[0] for x in cr.fetchall()]
+            cr.sql_log = True
+            return _super(domain=[('id', 'in', ids)]+domain)
+
+        return _super()
+
+training_seance()
+
+#- Zone de tableaux de board
+#---- Par rapport à la première date d'une séance (donc début de la session)----
+#- Lister les seances qui commencent dans moins de 21 jours et qui remplissent au minimum l'une des règles suivantes :
+#- Statut > Open
+#- Formateur non confirmé
+#- Support de cours non présent (pour au min. une séance liée)
+#- Pas de lieux (classroom)
+#- Support de cours en cours de mise à jours
+#- Seuil min. non atteint
+#- Seuil max. dépassé
+
+
+
+class training_participation_stakeholder(osv.osv):
+
+    _inherit = 'training.participation.stakeholder'
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        condition = context and context.get('condition', False) or False
+        if condition and condition in ('yes', 'no'):
+            # To check the condition for the payment of the lecturer
+            # 1. Check the evaluation form
+            # 2. Check the presence list
+            pass
+
+        return super(training_participation_stakeholder, self).search(cr, uid, domain, offset=offset, limit=limit, order=order, context=context, count=count)
+
+training_participation_stakeholder()
+
+class training_course_inactive_lecturer(osv.osv):
+    _name = 'training.course.inactive.lecturer'
+    _table = 'training_course_inactive_lecturer'
+
+    #_auto = False
+    _rec_name = 'contact_id'
+    _columns = {
+        'contact_id' : fields.many2one('res.partner.job', 'Contact', readonly=True),
+        'course_id' : fields.many2one('training.course', 'Course', readonly=True),
+    }
+
+    #def init(self, cr):
+    #    tools.drop_view_if_exists(cr, 'training_course_inactive_lecturer')
+    #    cr.execute('CREATE OR REPLACE VIEW training_course_inactive_lecturer AS ( '
+    #                    'SELECT 1 as id, rpc.id as contact_id, tccr.course_id as course_id '
+    #                   'FROM res_partner_contact rpc, training_course_job_rel tccr, res_partner_job rpj, res_partner_function rpf '
+    #                   'WHERE rpf.code = %s '
+    #                   'AND rpj.function_id = rpf.id '
+    #                   'AND rpj.state != %s '
+    #                   'AND rpj.contact_id = rpc.id '
+    #                   'AND rpc.id = tccr.contact_id )',
+    #               ('TR', 'current',)
+    #              )
+
+training_course_inactive_lecturer()
+
+class training_participation_stakeholder_doublon(osv.osv):
+    _name = 'training.participation.stakeholder.doublon'
+
+    _table = 'training_participation_stakeholder_doublon'
+
+    _auto = False
+
+    _columns = {
+        'participation_id' : fields.many2one('training.participation.stakeholder', 'Participation', readonly=True, select=1),
+        'contact_id' : fields.many2one('res.partner.contact', 'Contact', readonly=True, select=1),
+        'seance_id' : fields.many2one('training.seance', 'Seance', readonly=True, select=1),
+        'date' : fields.datetime('Date', readonly=True, select=1),
+        'state' : fields.selection([('draft', 'Draft'),
+                                    ('accepted', 'Accepted'),
+                                    ('refused', 'Refused'),
+                                    ('cancelled', 'Cancelled'),
+                                    ('done', 'Done'),
+                                   ],
+                                   'State',
+                                   readonly=True,
+                                   select=1
+                                   ),
+    }
+
+    def init(self, cr):
+        tools.drop_view_if_exists(cr, 'training_participation_stakeholder_doublon')
+        cr.execute(
+            """CREATE OR REPLACE VIEW training_participation_stakeholder_doublon AS (
+            SELECT tps.id as id, tps.id as participation_id, tps.contact_id as contact_id, tps.seance_id, tps.date as date, tps.state as state
+            FROM training_participation_stakeholder tps, training_seance s
+            WHERE tps.state IN ('requested', 'confirmed', 'draft', 'accepted')
+            AND s.id = tps.seance_id
+            AND EXISTS (
+                SELECT 1
+                FROM training_participation_stakeholder tps2, training_seance this_seance
+                WHERE tps2.state IN ('requested', 'confirmed', 'draft', 'accepted')
+                AND this_seance.id = tps2.seance_id
+                AND tps.date >= CURRENT_TIMESTAMP
+                AND tps.id != tps2.id
+                AND tps.contact_id = tps2.contact_id
+                AND (
+                    (this_seance.date BETWEEN s.date AND s.date + (s.duration * interval '1 hour'))
+                    OR (this_seance.date + (this_seance.duration * interval '1 hour') BETWEEN s.date AND s.date + (s.duration * interval '1 hour'))
+                    OR (this_seance.date < s.date AND this_seance.date + (this_seance.duration * interval '1 hour') > s.date + (s.duration * interval '1 hour'))
+                    )
+                )
+            AND tps.date >= CURRENT_TIMESTAMP
+            ORDER BY tps.contact_id, tps.seance_id, tps.state, tps.date DESC
+            )
+            """)
+
+training_participation_stakeholder_doublon()
+
+class training_participation_doublon(osv.osv):
+    _name = 'training.participation.doublon'
+
+    _table = 'training_participation_doublon'
+
+    _auto = False
+
+    _columns = {
+        'participation_id' : fields.many2one('training.participation', 'Participation', readonly=True, select=1),
+        'contact_id' : fields.many2one('res.partner.contact', 'Contact', readonly=True, select=1),
+        'seance_id' : fields.many2one('training.seance', 'Seance', readonly=True, select=1),
+        'date' : fields.datetime('Date', readonly=True, select=1),
+        'subscription_line_id' : fields.many2one('training.subscription.line', 'Subscription Line', readonly=True, select=1),
+        'exam_id' : fields.many2one('training.course', 'Exam', readonly=True, select=1),
+    }
+
+    def init(self, cr):
+        tools.drop_view_if_exists(cr, 'training_participation_doublon')
+        cr.execute(
+            """CREATE OR REPLACE VIEW training_participation_doublon AS (
+            SELECT tp1.id as id, tp1.id as participation_id, tp1.contact_id, tp1.seance_id, tp1.date, tp1.subscription_line_id, tp1.course_questionnaire_id as exam_id
+            FROM training_participation tp1, training_seance ts1
+            WHERE EXISTS(
+                    SELECT 1 FROM training_participation tp2, training_seance ts2
+                    WHERE tp1.id != tp2.id
+                    AND tp1.contact_id = tp2.contact_id
+                    AND tp1.date = tp2.date
+                    AND tp2.date >= CURRENT_TIMESTAMP
+                    AND ts2.kind IN ('standard', 'intra')
+                    AND ts2.id = tp2.seance_id
+            )
+            AND tp1.seance_id = ts1.id
+            AND tp1.date >= CURRENT_TIMESTAMP
+            AND ts1.kind IN ('standard', 'intra')
+            ORDER BY tp1.contact_id ASC
+            )
+            """)
+
+training_participation_doublon()

=== added file 'board_training/board_training_view.xml'
--- board_training/board_training_view.xml	1970-01-01 00:00:00 +0000
+++ board_training/board_training_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <menuitem parent="board.dashboard_menu" id="board_mi" name="Training"/>  
+
+        <record model="ir.ui.view" id="seance_list_board">
+            <field name="name">training.seance.list.dashboard</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date &lt;= current_date">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="course_id" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="seance_list_board_d_minus_4">
+            <field name="name">training.seance.list.dashboard</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date &lt;= time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 4*24*3600))">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="course_id" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="seance_list_board_d_minus_7">
+            <field name="name">training.seance.list.dashboard</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date &lt;= time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 7*24*3600))">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="course_id" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="seance_list_board_2">
+            <field name="name">training.seance.list.dashboard.2</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date&lt;time.strftime('%%Y-%%m-%%d')">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="sessions_type" />
+                    <field name="course_id" />
+                    <field name="contact_names" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="seance_list_board_3">
+            <field name="name">training.seance.list.dashboard.3</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date&lt;time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 10*24*3600))">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="duration" widget="float_time" />
+                    <field name="original_offer_id" />
+                    <field name="original_offer_kind" />
+                    <field name="state_course" />
+                    <field name="group_id" />
+                    <field name="participant_count" />
+                    <field name="available_seats" />
+                    <field name="draft_seats" />
+                    <field name="confirmed_lecturer" />
+                    <field name="contact_names" />
+                    <field name="presence_form" />
+                    <field name="is_first_seance" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="session_list_min_limit_confirm_board">
+            <field name="name">training.session.list.dashboard</field>
+            <field name="model">training.session</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Sessions" colors="red:date &lt;= current_date">
+                    <field name="state"/>
+                    <field name="name"/>
+                    <field name="date"/>
+                    <field name="offer_id"/>
+                    <field name="kind"/>
+                    <field name="available_seats" groups="training.group_seance_user"/>
+                    <field name="participant_count" groups="training.group_seance_user"/>
+                    <field name="draft_subscriptions" groups="training.group_seance_user"/>
+                    <field name="confirmed_subscriptions" groups="training.group_seance_user"/>
+                    <field name="has_shared_seances" />
+                    <field name="offer_product_line_id"/>
+                    <field name="has_confirmed_stakeholder" />
+                </tree>
+            </field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="today_training_to_start_act">
+            <field name="name">Today's Trainings To Start</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('state', 'in', ['opened', 'confirmed']), ('original_session_id.kind', 'in', ['standard','exam']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="today_training_to_stop_act">
+            <field name="name">Today's Trainings To Terminate</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('state', 'in', ['inprogress']), ('original_session_id.kind', 'in', ['standard', 'exam']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="today_training_to_done_act">
+            <field name="name">Today's Trainings To Finalize</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('state', 'in', ['closed']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.ui.view" id="today_board">
+            <field name="name">training.today.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Today's Training Dashboard">
+                    <vpaned>
+                        <child1 col="1">
+                            <action name="%(today_training_to_start_act)d" string="Seances to Start"/>
+                        </child1>
+                        <child2 col="1">
+                            <vpaned>
+                                <child1 col="1">
+                                    <action name="%(today_training_to_stop_act)d" string="Seances to Terminate"/>
+                                </child1>
+                                <child2 col="1">
+                                    <action name="%(today_training_to_done_act)d" string="Seances to Finalize"/>
+                                </child2>
+                            </vpaned>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="today_board_act">
+            <field name="name">Today's Training Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="today_board" />
+            <field name="usage">menu</field>
+        </record>
+        <menuitem parent="board_mi" id="today_board_mi" action="today_board_act" icon="terp-graph" />
+
+        <record model="ir.actions.act_window" id="board_sessions_to_confirm_act">
+            <field name="name">Sessions to Confirm</field>
+            <field name="res_model">training.session</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="session_list_min_limit_confirm_board" />
+            <field name="domain">['&amp;', ('state', '=', 'opened'), '|', ('min_limit_reached', '=', True), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="board_seances_to_confirm_standard_act">
+            <field name="name">Standard Seances To Confirm</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="seance_list_board_d_minus_4" />
+            <field name="domain">[('state', '=', 'opened'), ('original_offer_kind','in',['standard','exam']), ('original_session_id.state', 'in', ['opened_confirmed', 'closed_confirmed', 'inprogress']), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=4)).strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_seances_to_confirm_intra_act">
+            <field name="name">Intra Seances To Confirm</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="seance_list_board_d_minus_7" />
+            <field name="domain">[('state', '=', 'opened'), ('original_offer_kind','in',['intra']), ('original_session_id.state', 'in', ['opened_confirmed', 'closed_confirmed', 'inprogress']), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=4)).strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_seances_without_confirmed_lecturer_act">
+            <field name="name">Seances Without Confirmed Lecturer</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="seance_list_board_3"/>
+            <field name="domain">[('state', 'in', ['opened','confirmed']), ('original_session_id.kind', 'in', ['standard','intra']), ('original_session_id.state', 'in', ['opened', 'opened_confirmed', 'closed_confirmed', 'inprogress']), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=30)).strftime('%Y-%m-%d 23:59:59')), ('confirmed_lecturer', '=', 'no'),('forced_lecturer','=',False)]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="participation_stakeholder_request_draft_or_valid_act">
+            <field name="name">Requests to validate or to send</field>
+            <field name="res_model">training.participation.stakeholder.request</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ['draft', 'valid'])]</field>
+        </record>
+
+
+        <record model="ir.ui.view" id="planification_board">
+            <field name="name">training.planification.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Training Planification Dashboard">
+                    <vpaned>
+                        <child1 col="2">
+                            <group col="1" expand="1">
+                                <action name="%(board_sessions_to_confirm_act)d" string="Sessions to Confirm"/>
+                            </group>
+                            <group col="1">
+                                <action name="%(board_seances_to_confirm_standard_act)d" string="Standard Seances to Confirm"/>
+                                <action name="%(board_seances_to_confirm_intra_act)d" string="Intra Seances to Confirm"/>
+                            </group>
+                        </child1>
+                        <child2 col="1">
+                            <vpaned>
+                                <child1 col="2">
+                                    <group col="2" expand="1">
+                                        <action name="%(participation_stakeholder_request_draft_or_valid_act)d" string="Lecturer Requests To Validate Or To Send"/>
+                                    </group>
+                                    <group col="1">
+                                        <action name="%(board_seances_without_confirmed_lecturer_act)d" string="Seances without confirmed lecturers"/>
+                                    </group>
+                                </child1>
+                                <child2 col="2">
+                                    <group col="1" expand="1">
+                                        <action name="%(training.training_subscription_to_validate_act)d" string="Subscriptions to Validate"/>
+                                    </group>
+                                    <group col="1">
+                                        <action name="%(training.training_subscription_line_draft_act)d" string="Subscription Lines to Validate"/>
+                                    </group>
+                                </child2>
+                            </vpaned>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="planification_board_act">
+            <field name="name">Training Planification Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="planification_board" />
+        </record>
+        <menuitem parent="board_mi" id="planification_board_mi" action="planification_board_act" icon="terp-graph" />
+
+        <record model="ir.ui.view" id="participation_stakeholder_doublon_tree">
+            <field name="name">training.participation.stakeholder.doublon.tree</field>
+            <field name="model">training.participation.stakeholder.doublon</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Doublons">
+                    <field name="contact_id" />
+                    <field name="seance_id" />
+                    <field name="date" />
+                    <field name="state" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="participation_stakeholder_doublon_form">
+            <field name="name">training.participation.stakeholder.doublon.form</field>
+            <field name="model">training.participation.stakeholder.doublon</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Doublon">
+                    <field name="contact_id" />
+                    <field name="seance_id" />
+                    <field name="date" />
+                    <field name="state" />
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="participation_stakeholder_doublon_act">
+            <field name="name">Participations (Doublons)</field>
+            <field name="res_model">training.participation.stakeholder.doublon</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <!--
+        <menuitem parent="board_mi" id="participation_stakeholder_doublon_mi" action="participation_stakeholder_doublon_act" />
+        -->
+
+        <record model="ir.ui.view" id="participation_doublon_tree">
+            <field name="name">training.participation.doublon.tree</field>
+            <field name="model">training.participation.doublon</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Doublons">
+                    <field name="contact_id" />
+                    <field name="seance_id" />
+                    <field name="date" />
+                    <field name="subscription_line_id" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="participation_doublon_form">
+            <field name="name">training.participation.doublon.form</field>
+            <field name="model">training.participation.doublon</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Doublon">
+                    <field name="contact_id" />
+                    <field name="seance_id" />
+                    <field name="date" />
+                    <field name="subscription_line_id" />
+                </form>
+            </field>
+        </record>
+        
+
+        <record model="ir.actions.act_window" id="participation_doublon_act">
+            <field name="name">Seances Participations (Doublons)</field>
+            <field name="res_model">training.participation.doublon</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <!--
+        <menuitem parent="board_mi" id="participation_doublon_mi" action="participation_doublon_act" />
+        -->
+
+        <record model="ir.ui.view" id="participation_doublon_board">
+            <field name="name">training.participation.doublon.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Participations Doubloons Dashboard">
+                    <vpaned>
+                        <child1 col="2">
+                            <action name="%(participation_doublon_act)d" string="Seances Participations"/>
+                        </child1>
+                        <child2 col="1">
+                            <action name="%(participation_stakeholder_doublon_act)d" string="Stakeholders Participations"/>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="participation_board_act">
+            <field name="name">Participations Doubloons Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="participation_doublon_board" />
+        </record>
+        <menuitem parent="board_mi" id="participation_doublon_board_mi" action="participation_board_act" icon="terp-graph" />
+
+    </data>
+</openerp>

=== added directory 'board_training/security'
=== added file 'board_training/security/ir.model.access.csv'
--- board_training/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ board_training/security/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,3 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_training_participation_doublon","training.participation.doublon","model_training_participation_doublon","training.group_training",1,0,0,0
+"access_training_participation_stakeholder_doublon","training.participation.stakeholder.doublon","model_training_participation_stakeholder_doublon","training.group_training",1,0,0,0

=== added directory 'board_training_intra'
=== added file 'board_training_intra/__init__.py'
--- board_training_intra/__init__.py	1970-01-01 00:00:00 +0000
+++ board_training_intra/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import board_training

=== added file 'board_training_intra/__terp__.py'
--- board_training_intra/__terp__.py	1970-01-01 00:00:00 +0000
+++ board_training_intra/__terp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,41 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+{
+    'name' : 'Board Training for Intra Offer',
+    'version' : '0.1',
+    'author' : 'Tiny SPRL - Thamini S.à.R.L',
+    'depends' : [
+        'board_training',
+        'training_intra',
+        'training_room',
+    ],
+    'init_xml' : [],
+    'demo_xml' : [],
+    'update_xml' : [
+        'security/ir.model.access.csv',
+        'board_training_view.xml',
+    ],
+    'active' : False,
+    'installable' : True,
+}

=== added file 'board_training_intra/board_course.xml'
--- board_training_intra/board_course.xml	1970-01-01 00:00:00 +0000
+++ board_training_intra/board_course.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+
+    </data>
+</openerp>
+    

=== added file 'board_training_intra/board_training.py'
--- board_training_intra/board_training.py	1970-01-01 00:00:00 +0000
+++ board_training_intra/board_training.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,24 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+

=== added file 'board_training_intra/board_training_view.xml'
--- board_training_intra/board_training_view.xml	1970-01-01 00:00:00 +0000
+++ board_training_intra/board_training_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,326 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <menuitem parent="board.dashboard_menu" id="intra_board_mi" name="Intra Training"/>  
+
+        <record model="ir.ui.view" id="seance_list_board">
+            <field name="name">training.seance.list.dashboard</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+		    <tree string="Seances" colors="red:date &lt; (time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + (6 * 86400))))">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="course_id" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="seance_list_board_2_with_location">
+            <field name="name">training.seance.list.dashboard.2</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">110</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date&lt;time.strftime('%%Y-%%m-%%d')">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="location_id"/>
+                    <field name="sessions_type" />
+                    <field name="course_id" />
+                    <field name="contact_names" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                </tree>
+            </field>
+        </record>
+
+
+        <record model="ir.ui.view" id="seance_list_board_2">
+            <field name="name">training.seance.list.dashboard.2</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">100</field>
+            <field name="arch" type="xml">
+                <tree string="Seances" colors="red:date&lt;time.strftime('%%Y-%%m-%%d')">
+                    <field name="state" />
+                    <field name="name" />
+                    <field name="date" />
+                    <field name="group_id" />
+                    <field name="partner_id"/>
+                    <field name="location_id" />
+                    <field name="course_id" />
+                    <field name="contact_names" />
+                    <field name="state_course" />
+                    <field name="confirmed_lecturer" />
+                    <field name="manual" />
+                </tree>
+            </field>
+        </record>
+
+        <!-- use intra list view for standard """Today's training start / terminate / finalize """ dashboard zones -->
+        <record model="ir.actions.act_window" id="board_training.today_training_to_done_act">
+            <field name="view_id" ref='seance_list_board_2'/>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_training.today_training_to_start_act">
+            <field name="view_id" ref='seance_list_board_2_with_location'/>
+            <field name="domain">[('state', 'in', ['opened', 'confirmed']), ('original_session_id.kind', 'in', ['standard','exam','intra']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="board_training.today_training_to_stop_act">
+            <field name="view_id" ref='seance_list_board_2_with_location'/>
+            <field name="domain">[('state', 'in', ['inprogress']), ('original_session_id.kind', 'in', ['standard', 'exam','intra']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.ui.view" id="session_list_min_limit_confirm_board">
+            <field name="name">training.session.list.dashboard</field>
+            <field name="model">training.session</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Sessions">
+                    <field name="state"/>
+                    <field name="name"/>
+                    <field name="date"/>
+                    <field name="offer_id"/>
+                    <field name="offer_partner_id" />
+                    <field name="offer_sale_order_id" />
+                    <field name="offer_sale_order_state" />
+                    <field name="available_seats" groups="training.group_seance_user"/>
+                    <field name="participant_count" groups="training.group_seance_user"/>
+                    <field name="draft_subscriptions" groups="training.group_seance_user"/>
+                    <field name="confirmed_subscriptions" groups="training.group_seance_user"/>
+                    <field name="has_shared_seances" />
+                    <field name="offer_product_line_id"/>
+                    <field name="has_confirmed_stakeholder" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="today_training_to_start_act">
+            <field name="name">Today's Trainings To Start</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('is_intra', '=', 1), ('state', 'in', ['opened', 'confirmed']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="today_training_to_stop_act">
+            <field name="name">Today's Trainings To Terminate</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('is_intra', '=', 1),('state', 'in', ['inprogress']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="today_training_to_done_act">
+            <field name="name">Today's Trainings To Finalize</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref='seance_list_board_2'/>
+            <field name="domain">[('is_intra', '=', 1),('state', 'in', ['closed']), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.ui.view" id="today_board">
+            <field name="name">training.today.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Today's Training Dashboard">
+                    <vpaned>
+                        <child1 col="1">
+                            <action name="%(today_training_to_start_act)d" string="Seances to Start"/>
+                        </child1>
+                        <child2 col="1">
+                            <vpaned>
+                                <child1 col="1">
+                                    <action name="%(today_training_to_stop_act)d" string="Seances to Terminate"/>
+                                </child1>
+                                <child2 col="1">
+                                    <action name="%(today_training_to_done_act)d" string="Seances to Finalize"/>
+                                </child2>
+                            </vpaned>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="today_board_act">
+            <field name="name">Today's Intra Training Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="today_board" />
+            <field name="usage">menu</field>
+        </record>
+
+        <menuitem parent="intra_board_mi" id="today_board_mi" action="today_board_act" icon="terp-graph" />
+        
+        <record model="ir.actions.act_window" id="board_sessions_to_confirm_act">
+            <field name="name">Future Intra Sessions</field>
+            <field name="res_model">training.session</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="session_list_min_limit_confirm_board" />
+            <field name="domain">[('kind', '=', 'intra'), ('state', 'in', ('opened', 'opened_confirmed', 'closed_confirmed', 'inprogress')),('date','&gt;=', current_date)]</field>
+        </record>
+        
+        <record model="ir.actions.act_window" id="board_seances_to_confirm_act">
+            <field name="name">Seances To Confirm</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="seance_list_board" />
+            <field name="domain">['&amp;', ('is_intra', '=', True), ('state', '=', 'opened'), ('original_session_id.state', 'in', ['opened', 'opened_confirmed', 'closed_confirmed', 'inprogress']), ('date','&lt;',(datetime.datetime.today() + datetime.timedelta(days=10)).strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.ui.view" id="planification_board">
+            <field name="name">training.planification.dashboard</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Training Planification Dashboard">
+                    <vpaned>
+				        <child1>
+                	        <action name="%(board_sessions_to_confirm_act)d" string="Future Intra Sessions"/>
+	                    </child1>
+        	            <child2>
+                	        <action name="%(board_seances_to_confirm_act)d" string="Seances to Confirm"/>
+	                    </child2>
+			        </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="board_training_offer_intra_tree">
+            <field name="name">training.offer.intra.tree</field>
+            <field name="model">training.offer</field>
+            <field name="type">tree</field>
+            <field name="priority">20</field>
+            <field name="arch" type="xml">
+                <tree string="Intra Offers" colors="red:state == 'validated'">
+                    <field name="name" />
+                    <field name="type_id" />
+                    <field name="partner_id" select="1" />
+                    <field name="responsible" select="1" />
+                    <field name="create_date" />
+                    <field name="is_standalone" />
+                    <field name="state" />
+                    <field name="sale_order_id" />
+                    <field name="sale_order_create_date" />
+                    <field name="sale_order_state" select="1"/>
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="planification_board_act">
+            <field name="name">Intra Training Planification Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="planification_board" />
+        </record>
+        <menuitem parent="intra_board_mi" id="planification_board_mi" action="planification_board_act" icon="terp-graph" />
+
+        <record model="ir.actions.act_window" id="intra_offer_without_sale_order">
+            <field name="name">Intra Offers Without Sale Order</field>
+            <field name="res_model">training.offer</field>
+            <field name="domain">[('kind', '=', 'intra'),('sale_order_id', '=', False),('state','not in',['deprecated','done','refused'])]</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="board_training_offer_intra_tree" />
+        </record>
+
+        <record model="ir.actions.act_window" id="intra_offer_with_sale_order">
+            <field name="name">Intra Offers With Sale Order Waiting Confirmation</field>
+            <field name="res_model">training.offer</field>
+            <field name="domain">[('kind', '=', 'intra'),('sale_order_id', '!=', False),('sale_order_id.state', '=', 'draft')]</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="training_intra.training_offer_intra_tree" />
+        </record>
+
+        <record model="ir.actions.act_window" id="intra_offer_to_plannify">
+            <field name="name">Intra Offers With Sale Order To Plannify</field>
+            <field name="res_model">training.offer</field>
+            <field name="domain">[('kind','=','intra'),('sale_order_id', '!=', False),('sale_order_id.state', 'in', ['manual','progress','invoice_except','shipping_except', 'done']),('is_planned','=',False),('state','not in',['refused','deprecated'])]</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="training_intra.training_offer_intra_tree" />
+        </record>
+
+        <record model="ir.actions.act_window" id="intra_offer_to_invoice">
+            <field name="name">Intra Offers To Invoice</field>
+            <field name="res_model">training.offer</field>
+            <field name="domain">[('kind','=','intra'),('sale_order_id','!=',False),('sale_order_id.state', 'in', ['manual']),('is_planned','=',True),('intra_session_started','=',True)]</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="view_id" ref="training_intra.training_offer_intra_tree" />
+        </record>
+
+        <record model="ir.ui.view" id="intra_offer_board">
+            <field name="name">training.offer.intra.board</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Intra Offer Dashboard">
+                    <vpaned>
+                        <child1>
+                            <hpaned>
+                                <child1>
+                                    <action name="%(intra_offer_without_sale_order)d" string="Offers Without Sale Order" />
+                                </child1>
+                                <child2>
+                                    <action name="%(intra_offer_with_sale_order)d" string="Offers With Sale Order Waiting Confirmation" />
+                                </child2>
+                            </hpaned>
+                        </child1>
+                        <child2>
+                            <hpaned>
+                                <child1>
+                                    <action name="%(intra_offer_to_plannify)d" string="Offers To Plannify" />
+                                </child1>
+                                <child2>
+                                    <action name="%(intra_offer_to_invoice)d" string="Offers To Invoice" />
+                                </child2>
+                            </hpaned>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+        <record model="ir.actions.act_window" id="intra_offer_board_act">
+            <field name="name">Intra Offers</field>
+            <field name="res_model">board.board</field>
+            <field name="view_id" ref="intra_offer_board" />
+        </record>
+        <menuitem parent="intra_board_mi" id="intra_offer_mi" action="intra_offer_board_act" icon="terp-graph" />
+
+
+        <record model="ir.ui.view" id="plannification_dashboard_intra_inherit">
+            <field name="name">training.plannification.dashboard.intra.inherit</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="board_training.planification_board"/>
+            <field name="arch" type="xml">
+                <xpath expr='/form/vpaned/child2/vpaned' position="after">
+                    <vpaned>
+                        <child1>
+                            <action name="%(intra_offer_to_plannify)d" string="Intra Offers To Plannify"/>
+                        </child1>
+                        <child2>
+                        </child2>
+                    </vpaned>
+                </xpath>
+            </field>
+        </record>
+
+    </data>
+</openerp>

=== added directory 'board_training_intra/security'
=== added file 'board_training_intra/security/ir.model.access.csv'
--- board_training_intra/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ board_training_intra/security/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,1 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"

=== added directory 'portal_training'
=== added file 'portal_training/__init__.py'
--- portal_training/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_training/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,29 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import portal_training
+import lecturer
+import subscription
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'portal_training/__terp__.py'
--- portal_training/__terp__.py	1970-01-01 00:00:00 +0000
+++ portal_training/__terp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,97 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+{
+    'name' : 'Training Portal',
+    'version' : '0.1',
+    'author' : 'Tiny SPRL - Thamini S.à.R.L',
+    'website' : 'http://www.openerp.com',
+    'description' : 'Training Portals',
+    'depends' : [
+        'training',
+        'training_degree',
+        'training_room',
+        'training_intra',
+        'training_exam',
+        'training_exam_processing',
+        'training_evaluation',
+        'portal',
+        'board',
+    ],
+    'init_xml' : [ ],
+    'demo_xml' : [
+        'lecturer/demo.xml',
+        'portal_training_demo.xml',
+    ],
+    'update_xml' : [
+        'security/groups.xml',
+        'portal_training_view.xml',
+        'security/rules.xml',
+        'security/ir.model.access.csv',
+        'views.xml',
+
+        'lecturer/security.xml',
+        'lecturer/ir.model.access.csv',
+        'lecturer/views.xml',
+        'lecturer/dashboard.xml',
+        'lecturer/menus.xml',
+        'lecturer/portal.xml',
+        'lecturer/demo.xml',
+
+        'supplier/security.xml',
+        'supplier/ir.model.access.csv',
+        'supplier/views.xml',
+        'supplier/actions.xml',
+        'supplier/menus.xml',
+        'supplier/portal.xml',
+
+        #'portal_training_partner_data.xml',
+        'partner/security.xml',
+        'partner/ir.model.access.csv',
+        'partner/menus.xml',
+        'partner/portal.xml',
+        'partner/report.xml',
+        'partner/views.xml',
+
+        'participant/groups.xml',
+        'participant/security.xml',
+        'participant/ir.model.access.csv',
+        'participant/views.xml',
+        'participant/menus.xml',
+        'participant/portal.xml',
+
+        'subscription/security.xml',
+        'subscription/ir.model.access.csv',
+        'subscription/views.xml',
+        'subscription/menus.xml',
+        #'subscription/portal.xml',
+
+        'portals.xml',
+        'update.sql',
+    ],
+    'active' : False,
+    'installable' : True,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added directory 'portal_training/i18n'
=== added file 'portal_training/i18n/de_DE.po'
--- portal_training/i18n/de_DE.po	1970-01-01 00:00:00 +0000
+++ portal_training/i18n/de_DE.po	2011-03-17 09:14:35 +0000
@@ -0,0 +1,728 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* portal_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.7\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-09-06 08:38:41+0000\n"
+"PO-Revision-Date: 2010-09-06 08:38:41+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Portal Contact"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Seances"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_participation_mi
+#: model:ir.ui.menu,name:portal_training.partner_participation_main_mi
+#: view:training.participation:0
+msgid "Participations"
+msgstr "Participations"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+#: field:purchase.order.line,supplier_note:0
+msgid "Supplier Note"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_history_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_history_mi
+msgid "Past courses"
+msgstr "Vergangene Schulungen"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_subscription_all_act
+#: model:ir.ui.menu,name:portal_training.partner_subscription_all_mi
+msgid "All Subscriptions Requests"
+msgstr "All Subscriptions Requests"
+
+#. module: portal_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.projected_purchase_lines_all_act
+#: model:ir.ui.menu,name:portal_training.projected_purchase_lines_all_mi
+msgid "Seances Planning"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.actions.act_window,name:portal_training.exam_correction_request_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_requests_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_new_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_mi
+msgid "New Requests"
+msgstr "Offen stehende Anfragen"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_basket
+msgid "training.subscription.basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_past_exams_mi
+msgid "Past Exams"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_main_mi
+msgid "Participation Requests"
+msgstr "Schulungsanfragen"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_current_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_current_mi
+msgid "Current Requests"
+msgstr "Current Requests"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_seance_participation_exam_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_exam_all_mi
+msgid "Past Exam Participations"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_seances_mi
+msgid "My training courses in detail"
+msgstr "Meine Schulungen im Detail"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: view:training.subscription.line:0
+msgid "Subscription Lines"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_today_training_act
+#: model:ir.ui.menu,name:portal_training.lecturer_today_training_mi
+msgid "Today's course"
+msgstr "Heutige Schulung"
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+#: field:portal.projected.purchase.lines,notes:0
+msgid "Notes"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_confirmed_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_confirmed_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_waiting_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_confirmed_mi
+msgid "Confirmed Subscriptions"
+msgstr "Confirmed Subscriptions"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_seance_participation_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_all_mi
+msgid "Past Seance Participations"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_create_portal_user_wizard
+msgid "training.create.portal.user.wizard"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_intra_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_intra_mi
+msgid "Today's Intra"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,notify_by_email:0
+msgid "Notify By Email"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_portal_purchase_order_lines
+#: model:ir.ui.menu,name:portal_training.menu_supplier_portal_training
+msgid "Supplier Portal"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,shortdesc:portal_training.module_meta_information
+msgid "Training Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,course_id:0
+#: field:training.contact.course.portal,course_id:0
+#: view:training.participation:0
+msgid "Course"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Session Information"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,partner_id:0
+#: field:res.users,partner_id:0
+#: field:training.create.portal.user.wizard,partner_id:0
+#: field:training.subscription.basket,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line Information"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,active:0
+msgid "Active"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Participant"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_partner_portal_training
+msgid "Partner Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:purchase.order.line,seance_date:0
+msgid "Seance Date"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_exams_mi
+msgid "Today's Exams"
+msgstr "Today's Exams"
+
+#. module: portal_training
+#: field:training.subscription.participant.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Start Seance"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_intras_act
+#: model:ir.ui.menu,name:portal_training.partner_past_intras_mi
+msgid "Past Intras"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,email:0
+msgid "Email"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,username:0
+msgid "Username"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_lecturer_action_menu
+msgid "Portal Lecturer Menu"
+msgstr "Trainer Extranet"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.basket_subscription_rel
+#: model:ir.ui.menu,name:portal_training.participant_subscriptions_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_main_mi
+#: field:training.subscription.basket,subscription_line_ids:0
+msgid "Subscriptions"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+#: field:training.seance,attachment_ids:0
+msgid "Material"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Summary"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,job_id:0
+msgid "Job"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"You have specifed an empty email !\"\""
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_courses_mi
+msgid "Today's Courses"
+msgstr "Today's Courses"
+
+#. module: portal_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Fehlerhafter xml Code für diese Ansicht!"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_training_subscription
+msgid "portal.training.subscription"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_refunds_mi
+msgid "Customer Refunds"
+msgstr "Gutschriften Kunden"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Participation"
+msgstr ""
+
+#. module: portal_training
+#: field:res.users,contact_id:0
+#: field:training.contact.course.portal,contact_id:0
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,contact_id:0
+#: view:training.subscription.basket:0
+#: field:training.subscription.basket,contact_id:0
+msgid "Contact"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_past_participations_mi
+msgid "Past Participations"
+msgstr "Past Participations"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Signature"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_partner_action_menu
+msgid "Partner Portal Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_old_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_old_id
+msgid "History Orders"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "End Seance"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Lecture manager board"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.participant.wizard,session_id:0
+msgid "Session"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_new_act
+msgid "New Subscription"
+msgstr "Neue automatische Buchung"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Select Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,category_id:0
+msgid "Product Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_subscription_new_mi
+msgid "New Subscription Request"
+msgstr "New Subscription Request"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_portal_training_mi
+msgid "Participant Portal"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Participants"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_degree_act
+#: model:ir.ui.menu,name:portal_training.participant_degrees_degrees_mi
+msgid "Degrees"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_qty:0
+msgid "Estimated Quantity"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_next_mi
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_next_act
+msgid "Upcoming Seances"
+msgstr "Kommende Schulungen"
+
+#. module: portal_training
+#: field:training.offer.kind,portal_visible:0
+msgid "Portal Visible"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_seances_mi
+msgid "Trainings"
+msgstr ""
+
+#. module: portal_training
+#: field:training.participation,seance_state:0
+#: field:training.participation.stakeholder.request,contact_id:0
+#: field:training.seance,user_is_stakeholder:0
+msgid "unknown"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_past_courses_mi
+msgid "Past Courses"
+msgstr "Past Courses"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,seance_id:0
+#: view:training.seance:0
+msgid "Seance"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,portal_id:0
+msgid "Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,date:0
+msgid "Date"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Information"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_treated_mi
+msgid "Treated Requests"
+msgstr "Treated Requests"
+
+#. module: portal_training
+#: field:training.contact.course.portal,lang_id:0
+msgid "Lang"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,description:portal_training.module_meta_information
+#: model:ir.ui.menu,name:portal_training.menu_portal_training
+msgid "Training Portals"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.contact_course_all_act
+#: view:training.contact.course.portal:0
+msgid "Courses"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Switch"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"This login already exists in the system. Please Choose an other username\"\""
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.open_board_lecture_manager
+#: model:ir.ui.menu,name:portal_training.lecturer_dashboard_mi
+#: model:ir.ui.menu,name:portal_training.menu_board_lecture_manager
+msgid "Dashboard"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.line,basket_id:0
+#: field:training.subscription.participant.wizard,basket_id:0
+msgid "Basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_history_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_cancelled_done_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_history_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_cancelled_done_mi
+msgid "History"
+msgstr "History"
+
+#. module: portal_training
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "You can not use this assistant because you do not have any basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_invoices_mi
+msgid "Customer Invoices"
+msgstr "Ausgangsrechnungen"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Participation Description"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "General"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_treated_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_treated_act
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_treated_mi
+msgid "Requests history"
+msgstr "Vergangene Aufträge"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: view:training.subscription.participant.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "Close"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_form_action
+msgid "Purchase Orders"
+msgstr "Beschaffungsaufträge"
+
+#. module: portal_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr "Der Objekt Name muss mit einem x_ starten und darf keine Sonderzeichen beinhalten"
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Subscribed"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Lines"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Init"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Purchase Order Lines"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Participation"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_lecturer_portal_training
+msgid "Lecturer Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,type_id:0
+msgid "Type"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_current_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_current_act
+msgid "Requests in progress"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_participant_wizard_act
+#: model:ir.ui.menu,name:portal_training.subscription_participant_wizard_mi
+#: view:training.subscription.participant.wizard:0
+msgid "Make Subscription"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "You are subscribed to the session !"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_confirmed_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_draft_mi
+msgid "Subscriptions waiting validation"
+msgstr "Subscriptions waiting validation"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.create_portal_user_wizard_act
+#: model:ir.ui.menu,name:portal_training.create_portal_user_wizard_mi
+#: view:training.create.portal.user.wizard:0
+msgid "Create Portal User"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,password:0
+msgid "Password"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_correction_requests_main_mi
+msgid "Correction Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_supplier_action_menu
+msgid "Portal Supplier Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_menu_act
+msgid "Portal Participant Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_projected_purchase_lines
+msgid "portal.projected.purchase.lines"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Approve"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Disapprove"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.res_partner_basket_rel
+#: model:ir.actions.act_window,name:portal_training.res_partner_contact_basket_rel
+#: model:ir.actions.act_window,name:portal_training.training_subscription_basket_act
+#: model:ir.ui.menu,name:portal_training.subscription_basket_mi
+#: view:training.subscription.basket:0
+msgid "Baskets"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_next_act
+msgid "Future courses"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_id:0
+msgid "Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_participations_mi
+msgid "Today's Participations"
+msgstr "Today's Participations"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_accounting_mi
+msgid "Accounting"
+msgstr "Buchhaltung"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Total"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_all_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_id
+msgid "Orders"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_participant_wizard
+msgid "training.subscription.participant.wizard"
+msgstr ""
+

=== added file 'portal_training/i18n/en_US.po'
--- portal_training/i18n/en_US.po	1970-01-01 00:00:00 +0000
+++ portal_training/i18n/en_US.po	2011-03-17 09:14:35 +0000
@@ -0,0 +1,726 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* portal_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.7\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-09-06 07:28:10+0000\n"
+"PO-Revision-Date: 2010-09-06 07:28:10+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Portal Contact"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_seances_mi
+#: view:training.seance:0
+msgid "Seances"
+msgstr "My training courses in detail"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_participation_mi
+#: model:ir.ui.menu,name:portal_training.partner_participation_main_mi
+#: view:training.participation:0
+msgid "Participations"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+#: field:purchase.order.line,supplier_note:0
+msgid "Supplier Note"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_subscription_all_act
+#: model:ir.ui.menu,name:portal_training.partner_subscription_all_mi
+msgid "All Subscriptions Requests"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.projected_purchase_lines_all_act
+#: model:ir.ui.menu,name:portal_training.projected_purchase_lines_all_mi
+msgid "Seances Planning"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.actions.act_window,name:portal_training.exam_correction_request_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_requests_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_new_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_mi
+msgid "New Requests"
+msgstr "New requests waiting for acceptance"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_basket
+msgid "training.subscription.basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_past_exams_mi
+msgid "Past Exams"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_main_mi
+msgid "Participation Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_current_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_current_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_current_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_current_mi
+msgid "Current Requests"
+msgstr "Requests in progress"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_seance_participation_exam_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_exam_all_mi
+msgid "Past Exam Participations"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: view:training.subscription.line:0
+msgid "Subscription Lines"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+#: field:portal.projected.purchase.lines,notes:0
+msgid "Notes"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_confirmed_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_confirmed_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_waiting_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_confirmed_mi
+msgid "Confirmed Subscriptions"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_seance_participation_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_all_mi
+msgid "Past Seance Participations"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_create_portal_user_wizard
+msgid "training.create.portal.user.wizard"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_intra_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_intra_mi
+msgid "Today's Intra"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,notify_by_email:0
+msgid "Notify By Email"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_portal_purchase_order_lines
+#: model:ir.ui.menu,name:portal_training.menu_supplier_portal_training
+msgid "Supplier Portal"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,shortdesc:portal_training.module_meta_information
+msgid "Training Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,course_id:0
+#: field:training.contact.course.portal,course_id:0
+#: view:training.participation:0
+msgid "Course"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Session Information"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,partner_id:0
+#: field:res.users,partner_id:0
+#: field:training.create.portal.user.wizard,partner_id:0
+#: field:training.subscription.basket,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line Information"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,active:0
+msgid "Active"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Participant"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_partner_portal_training
+msgid "Partner Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:purchase.order.line,seance_date:0
+msgid "Seance Date"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_exams_mi
+msgid "Today's Exams"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.participant.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Start Seance"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_intras_act
+#: model:ir.ui.menu,name:portal_training.partner_past_intras_mi
+msgid "Past Intras"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,email:0
+msgid "Email"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,username:0
+msgid "Username"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_lecturer_action_menu
+msgid "Portal Lecturer Menu"
+msgstr "Trainer Extranet"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.basket_subscription_rel
+#: model:ir.ui.menu,name:portal_training.participant_subscriptions_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_main_mi
+#: field:training.subscription.basket,subscription_line_ids:0
+msgid "Subscriptions"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_today_training_act
+#: model:ir.ui.menu,name:portal_training.lecturer_today_training_mi
+msgid "Today's Trainings"
+msgstr "Today's course"
+
+#. module: portal_training
+#: view:training.seance:0
+#: field:training.seance,attachment_ids:0
+msgid "Material"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Summary"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,job_id:0
+msgid "Job"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"You have specifed an empty email !\"\""
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_courses_mi
+msgid "Today's Courses"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_training_subscription
+msgid "portal.training.subscription"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_refunds_mi
+msgid "Customer Refunds"
+msgstr "Customer Credit Notes"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Participation"
+msgstr ""
+
+#. module: portal_training
+#: field:res.users,contact_id:0
+#: field:training.contact.course.portal,contact_id:0
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,contact_id:0
+#: view:training.subscription.basket:0
+#: field:training.subscription.basket,contact_id:0
+msgid "Contact"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_past_participations_mi
+msgid "Past Participations"
+msgstr ""
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Signature"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_partner_action_menu
+msgid "Partner Portal Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_old_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_old_id
+msgid "History Orders"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "End Seance"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Lecture manager board"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.participant.wizard,session_id:0
+msgid "Session"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_new_act
+msgid "New Subscription"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Select Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,category_id:0
+msgid "Product Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_subscription_new_mi
+msgid "New Subscription Request"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_portal_training_mi
+msgid "Participant Portal"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Participants"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_degree_act
+#: model:ir.ui.menu,name:portal_training.participant_degrees_degrees_mi
+msgid "Degrees"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_qty:0
+msgid "Estimated Quantity"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_next_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_next_mi
+msgid "Upcoming Seances"
+msgstr "Future courses"
+
+#. module: portal_training
+#: field:training.offer.kind,portal_visible:0
+msgid "Portal Visible"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_seances_mi
+msgid "Trainings"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_mi
+msgid "New requests waiting for acceptance"
+msgstr ""
+
+#. module: portal_training
+#: field:training.participation,seance_state:0
+#: field:training.participation.stakeholder.request,contact_id:0
+#: field:training.seance,user_is_stakeholder:0
+msgid "unknown"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_past_courses_mi
+msgid "Past Courses"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,seance_id:0
+#: view:training.seance:0
+msgid "Seance"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,portal_id:0
+msgid "Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,date:0
+msgid "Date"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Information"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_treated_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_treated_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_treated_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_treated_mi
+msgid "Treated Requests"
+msgstr "Requests history"
+
+#. module: portal_training
+#: field:training.contact.course.portal,lang_id:0
+msgid "Lang"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,description:portal_training.module_meta_information
+#: model:ir.ui.menu,name:portal_training.menu_portal_training
+msgid "Training Portals"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.contact_course_all_act
+#: view:training.contact.course.portal:0
+msgid "Courses"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Switch"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"This login already exists in the system. Please Choose an other username\"\""
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.open_board_lecture_manager
+#: model:ir.ui.menu,name:portal_training.lecturer_dashboard_mi
+#: model:ir.ui.menu,name:portal_training.menu_board_lecture_manager
+msgid "Dashboard"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.line,basket_id:0
+#: field:training.subscription.participant.wizard,basket_id:0
+msgid "Basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_history_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_cancelled_done_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_history_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_cancelled_done_mi
+msgid "History"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "You can not use this assistant because you do not have any basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_history_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_history_mi
+msgid "Seance History"
+msgstr "Past courses"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_invoices_mi
+msgid "Customer Invoices"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Participation Description"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "General"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_treated_mi
+msgid "Requests history"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: view:training.subscription.participant.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "Close"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_form_action
+msgid "Purchase Orders"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Subscribed"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Lines"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Init"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Purchase Order Lines"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Participation"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_lecturer_portal_training
+msgid "Lecturer Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,type_id:0
+msgid "Type"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_current_mi
+msgid "Requests in progress"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_participant_wizard_act
+#: model:ir.ui.menu,name:portal_training.subscription_participant_wizard_mi
+#: view:training.subscription.participant.wizard:0
+msgid "Make Subscription"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "You are subscribed to the session !"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_confirmed_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_draft_mi
+msgid "Subscriptions waiting validation"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.create_portal_user_wizard_act
+#: model:ir.ui.menu,name:portal_training.create_portal_user_wizard_mi
+#: view:training.create.portal.user.wizard:0
+msgid "Create Portal User"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,password:0
+msgid "Password"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_correction_requests_main_mi
+msgid "Correction Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_supplier_action_menu
+msgid "Portal Supplier Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_menu_act
+msgid "Portal Participant Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_projected_purchase_lines
+msgid "portal.projected.purchase.lines"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Approve"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Disapprove"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.res_partner_basket_rel
+#: model:ir.actions.act_window,name:portal_training.res_partner_contact_basket_rel
+#: model:ir.actions.act_window,name:portal_training.training_subscription_basket_act
+#: model:ir.ui.menu,name:portal_training.subscription_basket_mi
+#: view:training.subscription.basket:0
+msgid "Baskets"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_id:0
+msgid "Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_participations_mi
+msgid "Today's Participations"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_accounting_mi
+msgid "Accounting"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Total"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_all_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_id
+msgid "Orders"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_participant_wizard
+msgid "training.subscription.participant.wizard"
+msgstr ""
+

=== added file 'portal_training/i18n/fr_FR.po'
--- portal_training/i18n/fr_FR.po	1970-01-01 00:00:00 +0000
+++ portal_training/i18n/fr_FR.po	2011-03-17 09:14:35 +0000
@@ -0,0 +1,777 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* portal_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.15\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-11-22 16:49:48+0000\n"
+"PO-Revision-Date: 2010-11-22 16:49:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Portal Contact"
+msgstr "Portal Contact"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Seances"
+msgstr "Mes formations en détail"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_participation_mi
+#: model:ir.ui.menu,name:portal_training.partner_participation_main_mi
+#: view:training.participation:0
+msgid "Participations"
+msgstr "Participations"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+#: field:purchase.order.line,supplier_note:0
+msgid "Supplier Note"
+msgstr "Note fournisseur"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_history_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_history_mi
+msgid "Past courses"
+msgstr "Historique des formations"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_subscription_all_act
+#: model:ir.ui.menu,name:portal_training.partner_subscription_all_mi
+msgid "All Subscriptions Requests"
+msgstr "Toutes les demandes d'inscriptions"
+
+#. module: portal_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Invalid model name in the action definition."
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.projected_purchase_lines_all_act
+#: model:ir.ui.menu,name:portal_training.projected_purchase_lines_all_mi
+msgid "Seances Planning"
+msgstr "Futures séances"
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_mi
+msgid "New Requests"
+msgstr "Demandes de prestations en attentes de réponses"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_basket
+msgid "training.subscription.basket"
+msgstr "training.subscription.basket"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_past_exams_mi
+msgid "Past Exams"
+msgstr "Examens passés"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_main_mi
+msgid "Participation Requests"
+msgstr "Demandes de prestations"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_seance_participation_exam_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_exam_all_mi
+msgid "Past Exam Participations"
+msgstr "Past Exam Participations"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_seances_mi
+msgid "My training courses in detail"
+msgstr "Mes formations en détail"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Generate"
+msgstr "Generer"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: view:training.subscription.line:0
+msgid "Subscription Lines"
+msgstr "Lignes d'inscription"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_today_training_act
+#: model:ir.ui.menu,name:portal_training.lecturer_today_training_mi
+msgid "Today's course"
+msgstr "Formation du jour"
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+#: field:portal.projected.purchase.lines,notes:0
+msgid "Notes"
+msgstr "Notes"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_confirmed_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_confirmed_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_waiting_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_confirmed_mi
+msgid "Confirmed Subscriptions"
+msgstr "Inscriptions confirmées"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_seance_participation_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_all_mi
+msgid "Past Seance Participations"
+msgstr "Past Seance Participations"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_lecturer_action_menu
+msgid "Trainer Extranet"
+msgstr "Trainer Extranet"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Cancelled"
+msgstr "Annulée"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_create_portal_user_wizard
+msgid "training.create.portal.user.wizard"
+msgstr "training.create.portal.user.wizard"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_intra_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_intra_mi
+msgid "Today's Intra"
+msgstr "Intras d'aujourd'hui"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,notify_by_email:0
+msgid "Notify By Email"
+msgstr "Envoi notification par email"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Line"
+msgstr "Ligne d'inscription"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_portal_purchase_order_lines
+#: model:ir.ui.menu,name:portal_training.menu_supplier_portal_training
+msgid "Supplier Portal"
+msgstr "Portail fournisseur"
+
+#. module: portal_training
+#: model:ir.module.module,shortdesc:portal_training.module_meta_information
+msgid "Training Portal"
+msgstr "Training Portal"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,course_id:0
+#: field:training.contact.course.portal,course_id:0
+#: view:training.participation:0
+msgid "Course"
+msgstr "Cours"
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "Warning"
+msgstr "Warning"
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Session Information"
+msgstr "Information de la session"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,partner_id:0
+#: field:res.users,partner_id:0
+#: field:training.subscription.basket,partner_id:0
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_next_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_next_mi
+msgid "Future courses"
+msgstr "Formations futures"
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line Information"
+msgstr "Information projection de commandes"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Confirmed"
+msgstr "Confirmée"
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Participant"
+msgstr "Participant"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_partner_portal_training
+msgid "Partner Portal"
+msgstr "Portail partenaire"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_exams_mi
+msgid "Today's Exams"
+msgstr "Examens d'aujourd'hui"
+
+#. module: portal_training
+#: field:training.subscription.participant.wizard,state:0
+msgid "State"
+msgstr "Etat"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Start Seance"
+msgstr "Démarrer la séance"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_intras_act
+#: model:ir.ui.menu,name:portal_training.partner_past_intras_mi
+msgid "Past Intras"
+msgstr "Intras passés"
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,email:0
+msgid "Email"
+msgstr "Email"
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,username:0
+msgid "Username"
+msgstr "Nom d'utilisateur"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.basket_subscription_rel
+#: model:ir.ui.menu,name:portal_training.participant_subscriptions_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_main_mi
+#: field:training.subscription.basket,subscription_line_ids:0
+msgid "Subscriptions"
+msgstr "Inscriptions"
+
+#. module: portal_training
+#: view:training.seance:0
+#: field:training.seance,attachment_ids:0
+msgid "Material"
+msgstr "Materiel"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Summary"
+msgstr "Résumé Examen"
+
+#. module: portal_training
+#: field:training.subscription.basket,job_id:0
+msgid "Job"
+msgstr "Contact"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_courses_mi
+msgid "Today's Courses"
+msgstr "Cours d'aujourd'hui"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Your comment"
+msgstr "Votre commentaire"
+
+#. module: portal_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "Invalid XML for View Architecture!"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_training_subscription
+msgid "portal.training.subscription"
+msgstr "portal.training.subscription"
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"You have specifed an empty email !\"\""
+msgstr "\"\"You have specifed an empty email !\"\""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Participation"
+msgstr "Seance Participation"
+
+#. module: portal_training
+#: field:res.users,contact_id:0
+#: field:training.contact.course.portal,contact_id:0
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,job_id:0
+#: view:training.subscription.basket:0
+#: field:training.subscription.basket,contact_id:0
+msgid "Contact"
+msgstr "Contact"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_past_participations_mi
+msgid "Past Participations"
+msgstr "Participations passées"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Signature"
+msgstr "Signature"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_partner_action_menu
+msgid "Partner Portal Menu"
+msgstr "Partner Portal Menu"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_old_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_old_id
+msgid "History Orders"
+msgstr "Historique des commandes"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "End Seance"
+msgstr "Clôturer la séance"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Comment"
+msgstr "Commentaire"
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line"
+msgstr "Projected Purchase Line"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.participant.wizard,session_id:0
+msgid "Session"
+msgstr "Session"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_new_act
+msgid "New Subscription"
+msgstr "Nouvel abonnement"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Select Portal"
+msgstr "Selectionner le portail"
+
+#. module: portal_training
+#: field:training.contact.course.portal,category_id:0
+msgid "Product Line"
+msgstr "Ligne produit"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Opened"
+msgstr "Ouverte"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_subscription_new_mi
+msgid "New Subscription Request"
+msgstr "Nouvelle demande d'inscriptions to move partner portal"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_portal_training_mi
+msgid "Participant Portal"
+msgstr "Portail Participant"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Participants"
+msgstr "Participants"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_degree_act
+#: model:ir.ui.menu,name:portal_training.participant_degrees_degrees_mi
+msgid "Degrees"
+msgstr "Diplômes"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Closed"
+msgstr "Fermé"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_qty:0
+msgid "Estimated Quantity"
+msgstr "Quantité estimée"
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Upcoming Seances"
+msgstr "Formations futures"
+
+#. module: portal_training
+#: field:training.offer.kind,portal_visible:0
+msgid "Portal Visible"
+msgstr "Visible dans le portail"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_seances_mi
+msgid "Trainings"
+msgstr "Formations"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_request_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_requests_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_new_mi
+msgid "New requests waiting for acceptance"
+msgstr "Demandes de prestations en attentes de réponses"
+
+#. module: portal_training
+#: field:training.participation,seance_state:0
+#: field:training.participation.stakeholder.request,contact_id:0
+#: field:training.seance,user_is_stakeholder:0
+msgid "unknown"
+msgstr "unknown"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_past_courses_mi
+msgid "Past Courses"
+msgstr "Cours passés"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,seance_id:0
+#: view:training.seance:0
+msgid "Seance"
+msgstr "Séance"
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,portal_id:0
+msgid "Portal"
+msgstr "Portail"
+
+#. module: portal_training
+#: field:training.subscription.basket,active:0
+msgid "Active"
+msgstr "Actif"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Information"
+msgstr "Information sur la séance"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_treated_mi
+msgid "Treated Requests"
+msgstr "Historique des prestations"
+
+#. module: portal_training
+#: field:training.contact.course.portal,lang_id:0
+msgid "Lang"
+msgstr "Langue"
+
+#. module: portal_training
+#: model:ir.module.module,description:portal_training.module_meta_information
+#: model:ir.ui.menu,name:portal_training.menu_portal_training
+msgid "Training Portals"
+msgstr "Portails formation"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.contact_course_all_act
+#: view:training.contact.course.portal:0
+msgid "Courses"
+msgstr "Cours"
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Switch"
+msgstr "Permuter"
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"This login already exists in the system. Please Choose an other username\"\""
+msgstr "\"\"Ce nom d'utilisateur existe déjà dans le système. Veuillez en choisir un autre\"\""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.open_board_lecture_manager
+#: model:ir.ui.menu,name:portal_training.lecturer_dashboard_mi
+#: model:ir.ui.menu,name:portal_training.menu_board_lecture_manager
+msgid "Dashboard"
+msgstr "Dashboard-inactif-décision à prendre"
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "Error"
+msgstr "Error"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.line,basket_id:0
+#: field:training.subscription.participant.wizard,basket_id:0
+msgid "Basket"
+msgstr "Panier"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_history_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_cancelled_done_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_history_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_cancelled_done_mi
+msgid "History"
+msgstr "Historique"
+
+#. module: portal_training
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "You can not use this assistant because you do not have any basket"
+msgstr "Vous ne pouvez pas utiliser cet assistant car vous n'avez aucun panier"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_invoices_mi
+msgid "Customer Invoices"
+msgstr "Factures Clients"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Participation Description"
+msgstr "Description de la participation"
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "General"
+msgstr "Général"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Done"
+msgstr "Effectué"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_treated_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_treated_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_treated_mi
+msgid "Requests history"
+msgstr "Historique des prestations"
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: view:training.subscription.participant.wizard:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "Close"
+msgstr "Fermer"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_form_action
+msgid "Purchase Orders"
+msgstr "Commandes d'achats"
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "In Progress"
+msgstr "En cours"
+
+#. module: portal_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr "The Object name must start with x_ and not contain any special character !"
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Subscribed"
+msgstr "Inscrit"
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Lines"
+msgstr "Lignes d'inscription"
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Init"
+msgstr "Init"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Purchase Order Lines"
+msgstr "Lignes de commande"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_today_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_today_id
+msgid "Today's Orders"
+msgstr "Commandes du jours"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_refunds_mi
+msgid "Customer Credit Notes"
+msgstr "Note de crédit client"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,product_id:0
+msgid "Product"
+msgstr "Produit"
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Participation"
+msgstr "Participation à un examen"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_lecturer_portal_training
+msgid "Lecturer Portal"
+msgstr "Portail formateur"
+
+#. module: portal_training
+#: field:training.contact.course.portal,type_id:0
+msgid "Type"
+msgstr "Type"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_current_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_current_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_current_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_current_mi
+msgid "Requests in progress"
+msgstr "Prestations en cours"
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Lecture manager board"
+msgstr "Lecture manager board"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_participant_wizard_act
+#: model:ir.ui.menu,name:portal_training.subscription_participant_wizard_mi
+#: view:training.subscription.participant.wizard:0
+msgid "Make Subscription"
+msgstr "Faire l'inscription"
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "You are subscribed to the session !"
+msgstr "Vous êtes désormais inscrit à la session !"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_confirmed_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_draft_mi
+msgid "Subscriptions waiting validation"
+msgstr "Inscriptions en attente de validation"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.create_portal_user_wizard_act
+#: model:ir.ui.menu,name:portal_training.create_portal_user_wizard_mi
+#: view:training.create.portal.user.wizard:0
+msgid "Create Portal User"
+msgstr "Créer un utilisateur portail"
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,password:0
+msgid "Password"
+msgstr "Mot de passe"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_correction_requests_main_mi
+msgid "Correction Requests"
+msgstr "Demandes de corrections"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_supplier_action_menu
+msgid "Portal Supplier Menu"
+msgstr "Portal Supplier Menu"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_menu_act
+msgid "Portal Participant Menu"
+msgstr "Portal Participant Menu"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_projected_purchase_lines
+msgid "portal.projected.purchase.lines"
+msgstr "portal.projected.purchase.lines"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Approve"
+msgstr "Approver"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_evaluation_wizard
+msgid "Print Your Evaluations Summary"
+msgstr "Imprimer le résumé de vos évaluations"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Disapprove"
+msgstr "Refuser"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.res_partner_basket_rel
+#: model:ir.actions.act_window,name:portal_training.res_partner_contact_basket_rel
+#: model:ir.actions.act_window,name:portal_training.training_subscription_basket_act
+#: model:ir.ui.menu,name:portal_training.subscription_basket_mi
+#: view:training.subscription.basket:0
+msgid "Baskets"
+msgstr "Paniers"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,date:0
+msgid "Date"
+msgstr "Date"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_id:0
+msgid "Purchase Line"
+msgstr "Ligne de commande"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_participations_mi
+msgid "Today's Participations"
+msgstr "Participations d'aujourd'hui"
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,duration:0
+msgid "Duration"
+msgstr "Durée"
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_accounting_mi
+msgid "Accounting"
+msgstr "Comptabilité"
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Total"
+msgstr "Total"
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_all_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_id
+msgid "Orders"
+msgstr "Commandes"
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_participant_wizard
+msgid "training.subscription.participant.wizard"
+msgstr "training.subscription.participant.wizard"
+

=== added file 'portal_training/i18n/portal_training.pot'
--- portal_training/i18n/portal_training.pot	1970-01-01 00:00:00 +0000
+++ portal_training/i18n/portal_training.pot	2011-03-17 09:14:35 +0000
@@ -0,0 +1,777 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* portal_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.15\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2010-11-22 16:49:30+0000\n"
+"PO-Revision-Date: 2010-11-22 16:49:30+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Portal Contact"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Seances"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_participation_mi
+#: model:ir.ui.menu,name:portal_training.partner_participation_main_mi
+#: view:training.participation:0
+msgid "Participations"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+#: field:purchase.order.line,supplier_note:0
+msgid "Supplier Note"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_history_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_history_mi
+msgid "Past courses"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_subscription_all_act
+#: model:ir.ui.menu,name:portal_training.partner_subscription_all_mi
+msgid "All Subscriptions Requests"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.projected_purchase_lines_all_act
+#: model:ir.ui.menu,name:portal_training.projected_purchase_lines_all_mi
+msgid "Seances Planning"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_mi
+msgid "New Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_basket
+msgid "training.subscription.basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_past_exams_mi
+msgid "Past Exams"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_requests_main_mi
+msgid "Participation Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_seance_participation_exam_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_exam_all_mi
+msgid "Past Exam Participations"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_seances_mi
+msgid "My training courses in detail"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Generate"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: view:training.subscription.line:0
+msgid "Subscription Lines"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_today_training_act
+#: model:ir.ui.menu,name:portal_training.lecturer_today_training_mi
+msgid "Today's course"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+#: field:portal.projected.purchase.lines,notes:0
+msgid "Notes"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_confirmed_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_confirmed_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_waiting_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_confirmed_mi
+msgid "Confirmed Subscriptions"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_seance_participation_all_act
+#: model:ir.ui.menu,name:portal_training.participant_participation_all_mi
+msgid "Past Seance Participations"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_lecturer_action_menu
+msgid "Trainer Extranet"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Cancelled"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_create_portal_user_wizard
+msgid "training.create.portal.user.wizard"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_intra_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_intra_mi
+msgid "Today's Intra"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,notify_by_email:0
+msgid "Notify By Email"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_portal_purchase_order_lines
+#: model:ir.ui.menu,name:portal_training.menu_supplier_portal_training
+msgid "Supplier Portal"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,shortdesc:portal_training.module_meta_information
+msgid "Training Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,course_id:0
+#: field:training.contact.course.portal,course_id:0
+#: view:training.participation:0
+msgid "Course"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "Warning"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Session Information"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,partner_id:0
+#: field:res.users,partner_id:0
+#: field:training.subscription.basket,partner_id:0
+msgid "Partner"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.lecturer_seance_next_act
+#: model:ir.ui.menu,name:portal_training.lecturer_seance_next_mi
+msgid "Future courses"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line Information"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Confirmed"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.line:0
+msgid "Participant"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_partner_portal_training
+msgid "Partner Portal"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_exams_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_exams_mi
+msgid "Today's Exams"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.participant.wizard,state:0
+msgid "State"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Start Seance"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_intras_act
+#: model:ir.ui.menu,name:portal_training.partner_past_intras_mi
+msgid "Past Intras"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,email:0
+msgid "Email"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,username:0
+msgid "Username"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.basket_subscription_rel
+#: model:ir.ui.menu,name:portal_training.participant_subscriptions_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_main_mi
+#: field:training.subscription.basket,subscription_line_ids:0
+msgid "Subscriptions"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+#: field:training.seance,attachment_ids:0
+msgid "Material"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Summary"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,job_id:0
+msgid "Job"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_courses_mi
+msgid "Today's Courses"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Your comment"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_training_subscription
+msgid "portal.training.subscription"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"You have specifed an empty email !\"\""
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Participation"
+msgstr ""
+
+#. module: portal_training
+#: field:res.users,contact_id:0
+#: field:training.contact.course.portal,contact_id:0
+#: view:training.create.portal.user.wizard:0
+#: field:training.create.portal.user.wizard,job_id:0
+#: view:training.subscription.basket:0
+#: field:training.subscription.basket,contact_id:0
+msgid "Contact"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_past_participations_mi
+msgid "Past Participations"
+msgstr ""
+
+#. module: portal_training
+#: view:res.users:0
+msgid "Signature"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_partner_action_menu
+msgid "Partner Portal Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_old_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_old_id
+msgid "History Orders"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "End Seance"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Comment"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "Projected Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.participant.wizard,session_id:0
+msgid "Session"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_new_act
+msgid "New Subscription"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+msgid "Select Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,category_id:0
+msgid "Product Line"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Opened"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_subscription_new_mi
+msgid "New Subscription Request"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_portal_training_mi
+msgid "Participant Portal"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Participants"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_degree_act
+#: model:ir.ui.menu,name:portal_training.participant_degrees_degrees_mi
+msgid "Degrees"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Closed"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_qty:0
+msgid "Estimated Quantity"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Upcoming Seances"
+msgstr ""
+
+#. module: portal_training
+#: field:training.offer.kind,portal_visible:0
+msgid "Portal Visible"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.participant_seances_mi
+msgid "Trainings"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_request_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_requests_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_new_mi
+msgid "New requests waiting for acceptance"
+msgstr ""
+
+#. module: portal_training
+#: field:training.participation,seance_state:0
+#: field:training.participation.stakeholder.request,contact_id:0
+#: field:training.seance,user_is_stakeholder:0
+msgid "unknown"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_past_courses_act
+#: model:ir.ui.menu,name:portal_training.partner_past_courses_mi
+msgid "Past Courses"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,seance_id:0
+#: view:training.seance:0
+msgid "Seance"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,portal_id:0
+msgid "Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.subscription.basket,active:0
+msgid "Active"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Seance Information"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_treated_mi
+msgid "Treated Requests"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,lang_id:0
+msgid "Lang"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.module.module,description:portal_training.module_meta_information
+#: model:ir.ui.menu,name:portal_training.menu_portal_training
+msgid "Training Portals"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.contact_course_all_act
+#: view:training.contact.course.portal:0
+msgid "Courses"
+msgstr ""
+
+#. module: portal_training
+#: view:training.seance:0
+msgid "Switch"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "\"\"This login already exists in the system. Please Choose an other username\"\""
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.open_board_lecture_manager
+#: model:ir.ui.menu,name:portal_training.lecturer_dashboard_mi
+#: model:ir.ui.menu,name:portal_training.menu_board_lecture_manager
+msgid "Dashboard"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/portal_training.py:0
+#, python-format
+msgid "Error"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+#: field:training.subscription.line,basket_id:0
+#: field:training.subscription.participant.wizard,basket_id:0
+msgid "Basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_history_act
+#: model:ir.actions.act_window,name:portal_training.partner_subline_cancelled_done_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_history_mi
+#: model:ir.ui.menu,name:portal_training.partner_subline_cancelled_done_mi
+msgid "History"
+msgstr ""
+
+#. module: portal_training
+#: code:addons/portal_training/subscription/__init__.py:0
+#, python-format
+msgid "You can not use this assistant because you do not have any basket"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_invoices_mi
+msgid "Customer Invoices"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Participation Description"
+msgstr ""
+
+#. module: portal_training
+#: view:portal.projected.purchase.lines:0
+msgid "General"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "Done"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_treated_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_treated_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_treated_mi
+msgid "Requests history"
+msgstr ""
+
+#. module: portal_training
+#: view:training.create.portal.user.wizard:0
+#: view:training.subscription.participant.wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "Close"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_form_action
+msgid "Purchase Orders"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.participation,seance_state:0
+msgid "In Progress"
+msgstr ""
+
+#. module: portal_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Subscribed"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.basket:0
+msgid "Subcription Lines"
+msgstr ""
+
+#. module: portal_training
+#: selection:training.subscription.participant.wizard,state:0
+msgid "Init"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Purchase Order Lines"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_today_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_today_id
+msgid "Today's Orders"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_refunds_mi
+msgid "Customer Credit Notes"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,product_id:0
+msgid "Product"
+msgstr ""
+
+#. module: portal_training
+#: view:training.participation:0
+msgid "Exam Participation"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.menu_lecturer_portal_training
+msgid "Lecturer Portal"
+msgstr ""
+
+#. module: portal_training
+#: field:training.contact.course.portal,type_id:0
+msgid "Type"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.exam_correction_current_act
+#: model:ir.actions.act_window,name:portal_training.lecturer_participation_current_act
+#: model:ir.ui.menu,name:portal_training.examiner_exam_correction_current_mi
+#: model:ir.ui.menu,name:portal_training.lecturer_participation_current_mi
+msgid "Requests in progress"
+msgstr ""
+
+#. module: portal_training
+#: view:board.board:0
+msgid "Lecture manager board"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.training_subscription_participant_wizard_act
+#: model:ir.ui.menu,name:portal_training.subscription_participant_wizard_mi
+#: view:training.subscription.participant.wizard:0
+msgid "Make Subscription"
+msgstr ""
+
+#. module: portal_training
+#: view:training.subscription.participant.wizard:0
+msgid "You are subscribed to the session !"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.participant_subscription_line_act
+#: model:ir.ui.menu,name:portal_training.participant_subscription_confirmed_mi
+#: model:ir.ui.menu,name:portal_training.partner_subscription_draft_mi
+msgid "Subscriptions waiting validation"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.create_portal_user_wizard_act
+#: model:ir.ui.menu,name:portal_training.create_portal_user_wizard_mi
+#: view:training.create.portal.user.wizard:0
+msgid "Create Portal User"
+msgstr ""
+
+#. module: portal_training
+#: field:training.create.portal.user.wizard,password:0
+msgid "Password"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_correction_requests_main_mi
+msgid "Correction Requests"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_supplier_action_menu
+msgid "Portal Supplier Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.portal_participant_menu_act
+msgid "Portal Participant Menu"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_portal_projected_purchase_lines
+msgid "portal.projected.purchase.lines"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Approve"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.lecturer_evaluation_wizard
+msgid "Print Your Evaluations Summary"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Disapprove"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.res_partner_basket_rel
+#: model:ir.actions.act_window,name:portal_training.res_partner_contact_basket_rel
+#: model:ir.actions.act_window,name:portal_training.training_subscription_basket_act
+#: model:ir.ui.menu,name:portal_training.subscription_basket_mi
+#: view:training.subscription.basket:0
+msgid "Baskets"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,date:0
+msgid "Date"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,purchase_line_id:0
+msgid "Purchase Line"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.partner_todays_participations_act
+#: model:ir.ui.menu,name:portal_training.partner_todays_participations_mi
+msgid "Today's Participations"
+msgstr ""
+
+#. module: portal_training
+#: field:portal.projected.purchase.lines,duration:0
+msgid "Duration"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.ui.menu,name:portal_training.partner_accounting_mi
+msgid "Accounting"
+msgstr ""
+
+#. module: portal_training
+#: view:purchase.order.line:0
+msgid "Total"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.actions.act_window,name:portal_training.purchase_order_line_all_act
+#: model:ir.ui.menu,name:portal_training.supplier_portal_purchase_order_line_id
+msgid "Orders"
+msgstr ""
+
+#. module: portal_training
+#: model:ir.model,name:portal_training.model_training_subscription_participant_wizard
+msgid "training.subscription.participant.wizard"
+msgstr ""
+

=== added directory 'portal_training/lecturer'
=== added file 'portal_training/lecturer/__init__.py'
--- portal_training/lecturer/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,35 @@
+# -*- encoding: utf-8 -*-
+##############################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+##############################################################################
+
+from osv import osv, fields
+
+class request(osv.osv):
+    _inherit = 'training.participation.stakeholder.request'
+
+    _columns = {
+        'contact_id': fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', readonly=True, store=True),   # used for record rules
+    }
+
+request()
+

=== added file 'portal_training/lecturer/dashboard.xml'
--- portal_training/lecturer/dashboard.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/dashboard.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record model="ir.actions.act_window" id="lecturer_participation_requests_act">
+            <field name="name">New Requests</field>
+            <field name="res_model">training.participation.stakeholder.request</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="lecturer_seance_next_act">
+            <field name="name">Upcoming Seances</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <record id="board_lecture_manager_form" model="ir.ui.view">
+            <field name="name">board.lecture.manager.form</field>
+            <field name="model">board.board</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Lecture manager board">
+                    <vpaned>
+                        <child1>
+                            <action colspan="4" height="80" name="%(portal_training.lecturer_participation_requests_act)d" string="New Requests" />
+                        </child1>
+                        <child2>
+                            <action colspan="4" height="80" name="%(portal_training.lecturer_seance_next_act)d" string="Upcoming Seances"/>
+                        </child2>
+                    </vpaned>
+                </form>
+            </field>
+        </record>
+
+        <record id="open_board_lecture_manager" model="ir.actions.act_window">
+            <field name="name">Dashboard</field>
+            <field name="res_model">board.board</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="board_lecture_manager_form"/>
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/lecturer/demo.xml'
--- portal_training/lecturer/demo.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/demo.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,19 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data noupdate="1">
+        <record id="res_users_lecturer0" model="res.users">
+            <field model="ir.actions.actions" name="menu_id" search="[('name','=','Portal Lecturer Menu')]"/>
+            <field eval="[(6,0,[ref('portal_training.res_group_portal_lecturer')])]" name="groups_id"/>
+            <field name="address_id" ref="base.main_address"/>
+            <field eval="[(6,0,[])]" name="roles_id"/>
+            <field eval="1" name="active"/>
+            <field name="password">lecturer</field>
+            <field eval="&quot;&quot;&quot;en_US&quot;&quot;&quot;" name="context_lang"/>
+            <field name="name">Lecturer Portal</field>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="login">lecturer</field>
+            <field model="ir.actions.actions" name="action_id" search="[('name','=','Portal Lecturer Menu')]"/>
+        </record>
+    </data>
+</openerp>
+

=== added file 'portal_training/lecturer/ir.model.access.csv'
--- portal_training/lecturer/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,97 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"lecturer_board","board.board","board.model_board_board","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_invoice","account.invoice","account.model_account_invoice","res_group_portal_lecturer",1,1,1,0
+"lecturer_account_invoice_line","account.invoice.line","account.model_account_invoice_line","res_group_portal_lecturer",1,0,1,0
+"lecturer_account_tax","account.tax","account.model_account_tax","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_invoice_tax","account.invoice.tax","account.model_account_invoice_tax","res_group_portal_lecturer",1,0,1,0
+"lecturer_account_analytic","account.analytic.account","account.model_account_analytic_account","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_account","account.account","account.model_account_account","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_journal","account.journal","account.model_account_journal","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_analytic_plan_instance","account.analytic.plan.instance","account_analytic_plans.model_account_analytic_plan_instance","res_group_portal_lecturer",1,0,1,0
+"lecturer_account_analytic_plan_instance_line","account.analytic.plan.instance.line","account_analytic_plans.model_account_analytic_plan_instance_line","res_group_portal_lecturer",1,0,1,0
+"lecturer_account_payment_term","account.payment.term","account.model_account_payment_term","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_fiscal_position","account.fiscal.position","account.model_account_fiscal_position","res_group_portal_lecturer",1,0,0,0
+"lecturer_product_pricelist","product.pricelist","product.model_product_pricelist","res_group_portal_lecturer",1,0,0,0
+"lecturer_product_price_type","product.price.type","product.model_product_price_type","res_group_portal_lecturer",1,0,0,0
+"lecturer_product_product","product.product","product.model_product_product","res_group_portal_lecturer",1,0,0,0
+"lecturer_product_template","product.template","product.model_product_template","res_group_portal_lecturer",1,0,0,0
+"lecturer_product_uom","product.uom","product.model_product_uom","res_group_portal_lecturer",1,0,0,0
+"lecturer_purchase_order","purchase.order","purchase.model_purchase_order","res_group_portal_lecturer",1,1,0,0
+"lecturer_purchase_order_line","purchase.order.line","purchase.model_purchase_order_line","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner","res.partner","base.model_res_partner","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_lecturer",1,0,0,0
+"lecturer_res_partner_bank","res.partner.bank","base.model_res_partner_bank","res_group_portal_lecturer",1,0,0,0
+"lecturer_stock_location","stock.location","stock.model_stock_location","res_group_portal_lecturer",1,0,0,0
+"lecturer_stock_warehouse","stock.warehouse","stock.model_stock_warehouse","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course","training.course","training.model_training_course","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course_category","training.course.category","training.model_training_course_category","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course_type","training.course.type","training.model_training_course_type","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course_offer_rel","training.course.offer.rel","training.model_training_course_offer_rel","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_group","training.group","training.model_training_group","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_location","training.location","training_room.model_training_location","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_email","training.email","training.model_training_email","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_email_sign","training.email.sign","training.model_training_email_sign","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_email_layout","training.email.layout","training.model_training_email_layout","res_group_portal_lecturer",1,0,0,0
+"lecturer_email_smtpclient_queue","email.smtpclient.queue","smtpclient.model_email_smtpclient_queue","res_group_portal_lecturer",1,0,1,0
+"lecturer_training_offer","training.offer","training.model_training_offer","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_offer_kind","training.offer.kind","training.model_training_offer_kind","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course_kind","training.course.kind","training.model_training_course_kind","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_participation","training.participation","training.model_training_participation","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_participation_stakeholder","training.participation.stakeholder","training.model_training_participation_stakeholder","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_participation_stakeholder_request","training.participation.stakeholder.request","training.model_training_participation_stakeholder_request","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_seance","training.seance","training.model_training_seance","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_seance_pruchase_line","training.seance.purchase_line","training.model_training_seance_purchase_line","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_session","training.session","training.model_training_session","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_subscription","training.subscription","training.model_training_subscription","res_group_portal_lecturer",1,1,0,0
+"lecturer_training_subscription_line","training.subscription.line","training.model_training_subscription_line","res_group_portal_lecturer",1,1,0,0
+"lecturer_document_price_component","document.price.component","training.model_document_price_component","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_move","account.move","account.model_account_move","res_group_portal_lecturer",1,0,0,0
+"lecturer_account_move_line","account.move.line","account.model_account_move_line","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_degree_contact","training.degree.contact","training_degree.model_training_degree_contact","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_degree","training.degree","training_degree.model_training_degree","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_exam_questionnaire","training.exam.questionnaire","training_exam.model_training_exam_questionnaire","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_evaluation_category","training.evaluation.category","training_evaluation.model_training_evaluation_category","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_evaluation_line","training.evaluation.line","training_evaluation.model_training_evaluation_line","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_evaluation","training.evaluation","training_evaluation.model_training_evaluation","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_evaluation_global","training.evaluation.global","training_evaluation.model_training_evaluation_global","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_evaluation_question","training.evaluation.question","training_evaluation.model_training_evaluation_question","res_group_portal_lecturer",1,0,0,0
+"lecturer_training_course_theme","training.course.theme","training.model_training_course_theme","res_group_portal_lecturer",1,0,0,0
+"examiner_training_seance","training.seance","training.model_training_seance","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_correction_request","training.exam.correction.request","training_exam_processing.model_training_exam_correction_request","res_group_portal_examiner",1,1,0,0
+"examiner_training_exam_correction","training.exam.correction","training_exam_processing.model_training_exam_correction","res_group_portal_examiner",1,1,0,0
+"examiner_training_exam_questionnaire","training.exam.questionnaire","training_exam.model_training_exam_questionnaire","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_questionnaire.course","training.exam.questionnaire.course","training_exam.model_training_exam_questionnaire_course","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_questionnaire.question","training.exam.questionnaire.question","training_exam.model_training_exam_questionnaire_question","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_questionnaire.attachment","training.exam.questionnaire.attachment","training_exam.model_training_exam_questionnaire_attachment","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_question_answer","training.exam.question.answer","training_exam.model_training_exam_question_answer","res_group_portal_examiner",1,0,0,0
+"examiner_training_participation_line","training.participation.line","training_exam.model_training_participation_line","res_group_portal_examiner",1,1,0,0
+"examiner_training_participation_remarks","training.participation.remarks","training_diagnostic.model_training_participation_remarks","res_group_portal_examiner",1,0,0,0
+"examiner_training_exam_question","training.exam.question","training_exam.model_training_exam_question","res_group_portal_examiner",1,1,0,0
+"examiner_res_partner","res.partner","base.model_res_partner","res_group_portal_examiner",1,0,0,0
+"examiner_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_examiner",1,0,0,0
+"examiner_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_examiner",1,0,0,0
+"examiner_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_examiner",1,0,0,0
+"examiner_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_examiner",1,0,0,0
+"examiner_account_analytic","account.analytic.account","account.model_account_analytic_account","res_group_portal_examiner",1,0,0,0
+"examiner_product_pricelist","product.pricelist","product.model_product_pricelist","res_group_portal_examiner",1,0,0,0
+"examiner_product_price_type","product.price.type","product.model_product_price_type","res_group_portal_examiner",1,0,0,0
+"examiner_product_product","product.product","product.model_product_product","res_group_portal_examiner",1,0,0,0
+"examiner_product_template","product.template","product.model_product_template","res_group_portal_examiner",1,0,0,0
+"examiner_product_uom","product.uom","product.model_product_uom","res_group_portal_examiner",1,0,0,0
+"examiner_training_participation","training.participation","training.model_training_participation","res_group_portal_examiner",1,1,0,0
+"examiner_training_course","training.course","training.model_training_course","res_group_portal_examiner",1,0,0,0
+"examiner_training_course_category","training.course.category","training.model_training_course_category","res_group_portal_examiner",1,0,0,0
+"examiner_training_course_type","training.course.type","training.model_training_course_type","res_group_portal_examiner",1,0,0,0
+"examiner_purchase_order","purchase.order","purchase.model_purchase_order","res_group_portal_examiner",1,1,0,0
+"examiner_purchase_order_line","purchase.order.line","purchase.model_purchase_order_line","res_group_portal_examiner",1,0,0,0
+"examiner_account_invoice","account.invoice","account.model_account_invoice","res_group_portal_examiner",1,0,0,0
+"examiner_account_tax","account.tax","account.model_account_tax","res_group_portal_examiner",1,0,0,0
+"examiner_account_analytic","account.analytic.account","account.model_account_analytic_account","res_group_portal_examiner",1,0,0,0
+"examiner_training_offer","training.offer","training.model_training_offer","res_group_portal_examiner",1,0,0,0
+"examiner_training_offer_kind","training.offer.kind","training.model_training_offer_kind","res_group_portal_examiner",1,0,0,0
+"examiner_training_course_kind","training.course.kind","training.model_training_course_kind","res_group_portal_examiner",1,0,0,0
+"examiner_training_course_theme",training.course.theme,"training.model_training_course_theme","res_group_portal_examiner",1,0,0,0
+"access_training_participation_course_line_portal_examiner","training.participation.course.line","training_exam.model_training_participation_course_line","portal_training.res_group_portal_examiner",1,0,0,0

=== added file 'portal_training/lecturer/menus.xml'
--- portal_training/lecturer/menus.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/menus.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,284 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <menuitem name="Lecturer Portal" id="menu_lecturer_portal_training" parent="menu_portal_training" />
+        
+        <record id="portal_lecturer_action_menu" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('menu_lecturer_portal_training'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field eval="1" name="portal_visible"/>
+            <field name="view_mode">tree,form</field>
+            <field eval="80" name="limit"/>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Portal Lecturer Menu</field>
+        </record>
+
+        <!--
+        <menuitem name="Training Management" parent="menu_lecturer_portal_training" id="training_management_lecturer_portal_mi" />
+        <menuitem action="contact_course_all_act" id="lecturer_course_mi" parent="training_management_lecturer_portal_mi" />
+        -->
+        
+        <menuitem name="Seances"
+            parent="menu_lecturer_portal_training" id="lecturer_seances_mi" icon="terp-project"
+            groups="res_group_portal_lecturer" sequence="15"/>
+        <menuitem name="Dashboard" parent="portal.menu_portal_root" id="lecturer_dashboard_mi" icon="terp-graph" sequence="500"/>
+
+        <menuitem action="open_board_lecture_manager" icon="terp-graph" id="menu_board_lecture_manager" parent="lecturer_dashboard_mi" />
+
+        <record model="ir.actions.act_window" id="lecturer_today_training_act">
+            <field name="name">Today's Trainings</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ['confirmed', 'inprogress', 'closed']), ('user_is_stakeholder', '=', True), ('date','&gt;',time.strftime('%Y-%m-%d 00:00:00')), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+        <record model="ir.actions.act_window.view" id="lecturer_today_training_tree_act_view0">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="lecturer_seance_tree"/>
+            <field name="act_window_id" ref="lecturer_today_training_act"/>
+        </record>    
+        <record model="ir.actions.act_window.view" id="lecturer_today_training_form_act_view0">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="lecturer_seance_form"/>
+            <field name="act_window_id" ref="lecturer_today_training_act"/>
+        </record>
+        <menuitem parent="lecturer_seances_mi" action="lecturer_today_training_act" id="lecturer_today_training_mi" sequence="10"/>
+       
+        <menuitem parent="menu_lecturer_portal_training" id="lecturer_participation_requests_main_mi"
+            name="Participation Requests" icon="terp-crm" sequence="10"/>
+        
+        <record model="ir.actions.act_window" id="lecturer_participation_requests_act">
+            <field name="name">New Requests</field>
+            <field name="res_model">training.participation.stakeholder.request</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'requested')]</field>
+        </record>
+        <!--
+        <record model="ir.actions.act_window.view" id="lecturer_seance_request_tree_act_view0">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="lecturer_seance_request_tree"/>
+            <field name="act_window_id" ref="lecturer_seance_request_act"/>
+        </record>    
+        <record model="ir.actions.act_window.view" id="lecturer_seance_request_form_act_view0">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="lecturer_seance_request_form"/>
+            <field name="act_window_id" ref="lecturer_seance_request_act"/>
+        </record>    
+        <menuitem parent="lecturer_disponibility_requests_mi" action="lecturer_seance_request_act" name="Seances" id="lecturer_seance_request_mi" sequence="20"/>
+        
+        -->    
+        <menuitem parent="lecturer_participation_requests_main_mi" action="lecturer_participation_requests_act" id="lecturer_participation_requests_mi" sequence="10"/>
+
+        <record model="ir.actions.act_window" id="lecturer_participation_current_act">
+            <field name="name">Current Requests</field>
+            <field name="res_model">training.participation.stakeholder.request</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'accepted')]</field>
+            <field name="context">{ 'portal_search_reverse_order': True }</field>
+        </record>
+
+        <menuitem parent="lecturer_participation_requests_main_mi" action="lecturer_participation_current_act"
+            id="lecturer_participation_current_mi" sequence="20"/>
+
+        <record model="ir.actions.act_window" id="lecturer_participation_treated_act">
+            <field name="name">Treated Requests</field>
+            <field name="res_model">training.participation.stakeholder.request</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ('refused', 'done', 'cancelled'))]</field>
+        </record>
+
+        <menuitem parent="lecturer_participation_requests_main_mi" action="lecturer_participation_treated_act"
+            id="lecturer_participation_treated_mi" sequence="30"/>
+
+
+        <record model="ir.actions.act_window" id="lecturer_seance_next_act">
+            <field name="name">Upcoming Seances</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ['opened', 'confirmed']), ('user_is_stakeholder', '=', True), ('date','&gt;',time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+        <record model="ir.actions.act_window.view" id="lecturer_next_seance_tree_act_view0">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="lecturer_seance_tree"/>
+            <field name="act_window_id" ref="lecturer_seance_next_act"/>
+        </record>    
+        <record model="ir.actions.act_window.view" id="lecturer_seance_next_form_act_view0">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="lecturer_seance_form"/>
+            <field name="act_window_id" ref="lecturer_seance_next_act"/>
+        </record>    
+        <menuitem action="lecturer_seance_next_act" parent="lecturer_seances_mi" id="lecturer_seance_next_mi" sequence='30'/>
+
+        <record model="ir.actions.act_window" id="lecturer_seance_history_act">
+            <field name="name">Seance History</field>
+            <field name="res_model">training.seance</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ['closed', 'done']), ('user_is_stakeholder', '=', True), ('date','&lt;',time.strftime('%Y-%m-%d 23:59:59'))]</field>
+            <field name="context">{'portal_search_reverse_order': True }</field>
+        </record>
+        <record model="ir.actions.act_window.view" id="lecturer_history_seance_tree_act_view0">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="lecturer_seance_tree"/>
+            <field name="act_window_id" ref="lecturer_seance_history_act"/>
+        </record>    
+        <record model="ir.actions.act_window.view" id="lecturer_seance_history_form_act_view0">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="lecturer_seance_form"/>
+            <field name="act_window_id" ref="lecturer_seance_history_act"/>
+        </record>
+        <menuitem action="lecturer_seance_history_act" parent="lecturer_seances_mi" id="lecturer_seance_history_mi" sequence='40'/>
+
+	<menuitem id="lecturer_evaluation_wizard"
+	          action="training_evaluation.training_evaluation_contact_own_wizard"
+		  parent="lecturer_seances_mi"
+		  icon="STOCK_PRINT"
+		  type="wizard"
+		  string="Your Evaluations"
+		  sequence='50'/>
+
+        <!-- Po (tree) -->
+        <record id="purchase_form_action" model="ir.actions.act_window">
+            <field name="name">Purchase Orders</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">purchase.order</field>
+            <field name="view_mode">tree</field>
+        </record>
+
+        <!--
+        <menuitem name="Purchase Management" parent="menu_lecturer_portal_training" id="lecturer_purchase_management_mi" icon="terp-purchase" />
+
+        <menuitem action="purchase_form_action" parent="lecturer_purchase_management_mi" id="lecturer_purchase_order_mi" />
+        -->
+
+        <!--
+        <menuitem parent="lecturer_participation_requests_main_mi" action="lecturer_participation_requests_act" id="lecturer_participation_requests_mi" />
+        <menuitem parent="menu_lecturer_portal_training" id="lecturer_participation_requests_main_mi"
+        -->
+        <menuitem
+            id="lecturer_correction_requests_main_mi"
+            parent="menu_lecturer_portal_training"
+            name="Correction Requests"
+            icon="terp-crm" />
+
+        <record id="exam_correction_request_act" model="ir.actions.act_window">
+            <field name="name">New Requests</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">training.exam.correction.request</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'requested')]</field>
+        </record>
+
+        <menuitem
+            action="exam_correction_request_act"
+            parent="lecturer_correction_requests_main_mi"
+            id="examiner_exam_correction_new_mi" sequence="10"/>
+
+        <record id="exam_correction_current_act" model="ir.actions.act_window">
+            <field name="name">Current Requests</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">training.exam.correction.request</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'accepted')]</field>
+        </record>
+
+        <menuitem
+            action="exam_correction_current_act"
+            parent="lecturer_correction_requests_main_mi"
+            id="examiner_exam_correction_current_mi" sequence="20"/>
+
+        <record id="exam_correction_treated_act" model="ir.actions.act_window">
+            <field name="name">Treated Requests</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">training.exam.correction.request</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'refused')]</field>
+        </record>
+
+        <menuitem 
+            action="exam_correction_treated_act"
+            parent="lecturer_correction_requests_main_mi"
+            id="examiner_exam_correction_treated_mi" sequence="30"/>
+
+        <menuitem
+            id="lecturer_correction_requests_in_details"
+            parent="menu_lecturer_portal_training"
+            name="My Correction Requests in Details"
+            icon="terp-project"
+            groups="res_group_portal_examiner"
+            sequence="20"/>
+
+        <record id="training_exam.link_participation_to_participation_line" model="ir.actions.act_window">
+            <field name="groups_id" eval="[(4, ref('portal_training.res_group_portal_examiner'))]"/>
+        </record>
+
+        <record id="exam_correction_participation_view" model="ir.ui.view">
+            <field name="name">Corrections</field>
+            <field name="model">training.participation</field>
+            <field name="type">tree</field>
+            <field name="priority">200</field>
+            <field name="arch" type="xml">
+                <tree string="Corrections" link="0">
+                    <field name="date"/>
+                    <field name="contact_lastname"/>
+                    <field name="contact_firstname"/>
+                    <field name="course_questionnaire_id"/>
+                    <field name="result_pourcentage"/>
+                    <field name="result_received"/>
+                    <field name="succeeded"/>
+                    <field name="correction_state_id"/>
+                    <button name="do_correction_cb" string="Done" type="object"/>
+                </tree>
+            </field>
+        </record>
+
+        <record id="exam_correction_to_do_act" model="ir.actions.act_window">
+            <field name="name">Correction To Do</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('correction_id.request_id.state','=','accepted'),('correction_id.state', '=', 'to_correct')]</field>
+            <field name="view_id" ref="exam_correction_participation_view"/>
+        </record>
+
+        <menuitem
+            id="lecturer_correction_requests_to_do_mi"
+            parent="lecturer_correction_requests_in_details"
+            action="exam_correction_to_do_act"
+            sequence="10"/>
+
+
+        <record id="exam_correction_done_history_act" model="ir.actions.act_window">
+            <field name="name">History of Corrections</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">['|', ('correction_id.request_id.state', '=', 'done'), '&amp;', ('correction_id.request_id.state', '=', 'accepted'), ('correction_id.state', '=', 'corrected')]</field>
+        </record>
+
+        <menuitem
+            id="lecturer_correction_requests_done_history_mi"
+            parent="lecturer_correction_requests_in_details"
+            action="exam_correction_done_history_act"
+            sequence="15"/>
+
+    </data>
+</openerp>

=== added file 'portal_training/lecturer/portal.xml'
--- portal_training/lecturer/portal.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/portal.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="portal.model" id="model_training_contact_course_portal_model">
+            <field name="name">Training Lecturer Contact Course Portal</field>
+            <field name="model_id" search="[('model', '=', 'training.contact.course.portal')]"/>
+            <field name="rule_group_id" ref="portal_lecturer_rule_group" />
+            <field name="view_ids" eval="[(6, 0, [ref('contact_course_form'), ref('contact_course_tree')])]"/>
+        </record>
+
+        <report
+            id="training.training_seance_presence_list_repot"
+            model="training.seance"
+            name="training.seance.presence.report"
+            string="Presence List"
+            rml="training/report/training_presencelist.rml"
+            groups="training.group_session_manager,training.group_subscription_manager,portal_training.res_group_portal_lecturer,portal_training.res_group_portal_examiner"
+            header="True" />
+
+        <report
+            id="training_exam.training_participation_exam_sheet_w_note"
+            model="training.participation"
+            name="training.participation.report.w.notes"
+            string="Original Exam Sheet with Corrector Notes"
+            rml="training_exam/report/exam_sheet.rml"
+            header="False"
+            auto="False"
+            groups="training_exam.group_exam_user,portal_training.res_group_portal_examiner"/>
+
+	<report id="training_exam_processing.report_training_scanned_exam_sheet"
+	        name="training.participation.exam.sheet.scanned"
+		model="training.participation"
+	        string="Scanned Exam Sheet"
+	        rml="training_exam_processing/report/scanned_exam_sheet.rml"
+	        header="False"
+		auto="False"
+	        groups="training_exam.group_exam_user,portal_training.res_group_portal_examiner"/>
+
+    
+        <record model="ir.actions.report.xml" id="training_exam.training_seance_questions_folder">
+            <field name="groups_id" eval="[(3, ref('portal_training.res_group_portal_examiner')),(4, ref('portal_training.res_group_portal_examiner'))]"/>
+        </record>
+
+    </data>
+</openerp>

=== added file 'portal_training/lecturer/security.xml'
--- portal_training/lecturer/security.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/security.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,169 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data noupdate="0">
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="name">Portal Lecturer Group</field>
+        </record>
+        <record model="res.groups" id="res_group_portal_examiner">
+            <field name="name">Portal Examiner Group</field>
+        </record>
+    </data>
+    <data>
+        <!-- RULE #training.contact.course.portal -->
+        <record model="ir.rule.group" id="portal_lecturer_rule_group">
+            <field name="name">Portal Lecturer Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.contact.course.portal')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_lecturer_contact_course_rule">
+            <field name="field_id" search="[('model', '=', 'training.contact.course.portal'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="domain_force">[('contact_id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_lecturer_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="rule_groups" eval="[(4, ref('portal_lecturer_rule_group'))]"/>
+        </record>
+
+        <!-- RULE #training.participation.stakeholder -->
+        <record model="ir.rule.group" id="portal_lecturer_participation_rule_group">
+            <field name="name">Portal Lecturer Participation Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation.stakeholder')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_lecturer_participation_rule">
+            <field name="field_id" search="[('model', '=', 'training.participation.stakeholder'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="domain_force">[('contact_id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_lecturer_participation_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="rule_groups" eval="[(4, ref('portal_lecturer_participation_rule_group'))]"/>
+        </record>
+
+        <!-- RULE #training.participation.stakeholder.request -->
+        <record model="ir.rule.group" id="portal_lecturer_participation_request_rule_group">
+            <field name="name">Portal Lecturer Participation Request Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation.stakeholder.request')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_lecturer_participation_request_rule">
+            <field name="field_id" search="[('model', '=', 'training.participation.stakeholder.request'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="domain_force">[('contact_id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_lecturer_participation_request_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="rule_groups" eval="[(4, ref('portal_lecturer_participation_request_rule_group'))]" />
+        </record>
+
+        <!-- RULE #purchase.order -->
+        <record model="ir.rule.group" id="portal_lecturer_purchase_order_rule_group">
+            <field name="name">Portal Lecturer Purchase Order Rule</field>
+            <field name="model_id" search="[('model', '=', 'purchase.order')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_lecturer_purchase_order_rule">
+            <field name="field_id" search="[('model', '=', 'purchase.order'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('contact_id.id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_lecturer_purchase_order_rule_group"/>
+        </record>
+
+        <!--
+        <record model="ir.rule" id="portal_lecturer_purchase_order_rule">
+            <field name="field_id" search="[('model', '=', 'purchase.order'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="domain_force">[('contact.id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_lecturer_purchase_order_rule_group"/>
+        </record>
+        -->
+
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="rule_groups" eval="[(4, ref('portal_lecturer_purchase_order_rule_group'))]"/>
+        </record>
+
+        <!-- RULE #training.exam.correction.request -->
+        <record model="ir.rule.group" id="portal_examiner_exam_correction_request_rule_group">
+            <field name="name">Portal Examiner Exam Correction Request Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.exam.correction.request')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_examiner_exam_correction_request_rule">
+            <field name="field_id" search="[('model', '=', 'training.exam.correction.request'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="domain_force">[('contact_id.id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_examiner_exam_correction_request_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_examiner">
+            <field name="rule_groups" eval="[(4, ref('portal_examiner_exam_correction_request_rule_group'))]"/>
+        </record>
+
+        <record model="ir.rule.group" id="portal_examiner_participation_rule_group">
+            <field name="name">Portal Examiner Participation Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]" model="ir.model"/>
+            <field name="global" eval="False"/>
+        </record>
+
+        <record model="ir.rule" id="portal_examiner_participation_rule">
+            <field name="field_id" search="[('model', '=', 'training.participation'),('name', '=', 'correction_id')]" model="ir.model.fields"/>
+            <field name="domain_force">[('correction_id.request_id.contact_id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_examiner_participation_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_examiner">
+            <field name="rule_groups" eval="[(4, ref('portal_examiner_participation_rule_group'))]"/>
+        </record>
+
+        <record model="ir.rule.group" id="portal_examiner_purchase_order_rule_group">
+            <field name="name">Portal Examiner Purchase Order Rule</field>
+            <field name="model_id" search="[('model', '=', 'purchase.order')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_examiner_purchase_order_rule">
+            <field name="field_id" search="[('model', '=', 'purchase.order'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('contact_id.id', '=', user.contact_id.id)]</field>
+            <field name="rule_group" ref="portal_examiner_purchase_order_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_examiner">
+            <field name="rule_groups" eval="[(4, ref('portal_examiner_purchase_order_rule_group'))]"/>
+        </record>
+
+        <record model="ir.rule.group" id="portal_lecturer_report_xml_rule_group">
+            <field name="name">Portal Lecturer report Rule Group</field>
+            <field name="model_id" ref="base.model_ir_actions_report_xml" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_lecturer_report_xml_rule">
+            <field name="field_id" 
+                search="[('model', '=', 'ir.actions.report.xml'),('name', '=', 'portal_visible')]" />
+            <field name="operator">=</field>
+            <field name="operand">True</field>
+            <field name="rule_group" ref="portal_lecturer_report_xml_rule_group" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_lecturer">
+            <field name="rule_groups" eval="[(4, ref('portal_lecturer_report_xml_rule_group'))]" />
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/lecturer/views.xml'
--- portal_training/lecturer/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/lecturer/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="lecturer_seance_form">
+            <field name="name">portal.lecturer.seance.form</field>
+            <field name="model">training.seance</field>
+            <field name="type">form</field>
+            <field name="priority">25</field>
+            <field name="inherit_id" eval="False"/>
+            <field name="arch" type="xml">
+                <form string="Seance">
+                    <field name="name" readonly="1"/>
+                    <field name="course_id" readonly="1" link="0" />
+                    <field name="date" readonly="1"/>
+                    <field name="duration" readonly="1"/>
+                    <group states="confirmed" expand="1" colspan="4" col="1">
+                        <button name="signal_inprogress" string="Start Seance" type="workflow" states="confirmed"/>
+                    </group>
+                        <notebook colspan="4">
+                            <page string="Participants" attrs="{'invisible': [('state','!=','inprogress')]}">
+                                <field name="group_id" readonly="1" link="0" />
+                                <field name="participant_count"/>
+                                <field name="participant_ids" nolabel="1" colspan="4"
+                                    mode="tree"
+                                    attrs="{'invisible' : [('state', '=', 'closed')]}"
+                                    domain="[('state', '=', 'confirmed')]">
+                                    <tree string="Participants" limit="100">
+                                        <field name="seance_state" invisible="1"/>
+                                        <field name="contact_lastname" readonly="1"/>
+                                        <field name="contact_firstname" readonly="1"/>
+                                        <field name="partner_id" readonly="1"/>
+                                        <field name="present" readonly="0"/>
+                                        <button name="switch_presence" string="Switch"
+                                            type='object'
+                                            attrs="{'readonly': [(parent.state, '=', 'closed')]}"
+                                            />
+                                    </tree>
+                                    <form />
+                                </field>
+                                <button name="signal_close" 
+                                    string="End Seance"
+                                    type="workflow"
+                                    states='inprogress'
+                                    colspan="4"
+                                    confirm="Have you checked the presence of all participants before to close this seance ?" />
+                            </page>
+                            <page string="Material" attrs="{'invisible': [('state','not in', ['opened','confirmed','inprogress'])]}">
+                                <field name="attachment_ids" colspan="4" nolabel="1" readonly="1" mode="tree,form">
+                                    <tree string="Material">
+                                        <field name="name"/>
+                                        <field name="datas_fname"/>
+                                    </tree>
+                                    <form>
+                                        <field name="name" />
+                                        <field name="datas_fname" />
+                                        <field name="datas" />
+                                    </form>
+                                </field>
+                            </page>
+                            <page string="Comment" attrs="{'invisible': [('state', 'not in', ['inprogress','closed','done'])]}">
+                                <separator string="Your comment" colspan="4"/>
+                                <field name="lecturer_note" attrs="{'readonly': [('state', 'in', ['closed','done'])]}" nolabel="1" colspan="4"/>
+                            </page>
+                        </notebook>
+                    <field name="state" colspan="4"/>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="lecturer_seance_tree">
+            <field name="name">portal.lecturer.seance.tree</field>
+            <field name="model">training.seance</field>
+            <field name="type">tree</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <tree string="Seances">
+                    <field name="state"/>
+                    <field name="name"/>
+                    <field name="date"/>
+                    <field name="duration"/>
+                    <field name="participant_count"/>
+                    <field name="location_id" link="0" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="examiner_participation_form_inherited">
+            <field name="name">training.participation.form.inherited</field>
+            <field name="model">training.participation</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="training_exam.participation_form_inherited" />
+            <field name="arch" type="xml">
+		<data>
+		    <page string="Exam Summary" position="attributes">
+                        <attribute name="groups">base.group_user,portal_training.res_group_portal_examiner</attribute>
+		    </page>
+		    <page string="Exam Participation" position="attributes">
+                        <attribute name="groups">base.group_user,portal_training.res_group_portal_examiner</attribute>
+                    </page>
+		</data>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="examiner_processing_participation_form">
+            <field name="name">training.participation.portal.examiner</field>
+            <field name="model">training.participation</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="training_exam_processing.participation_form"/>
+            <field name="arch" type="xml">
+                <button name="do_correction_cb" position="attributes">
+                    <attribute name="groups">training_exam_processing.group_exam_correction_manager,portal_training.res_group_portal_examiner</attribute>
+                </button>
+            </field>
+        </record>
+
+    </data>
+</openerp>

=== added directory 'portal_training/participant'
=== added file 'portal_training/participant/groups.xml'
--- portal_training/participant/groups.xml	1970-01-01 00:00:00 +0000
+++ portal_training/participant/groups.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data noupdate="1">
+        <record model="res.groups" id="res_group_portal_participant">
+            <field name="name">Portal Participant Group</field>
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/participant/ir.model.access.csv'
--- portal_training/participant/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/participant/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,26 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"participant_res_partner","res.partner","base.model_res_partner","res_group_portal_participant",1,0,0,0
+"participant_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_participant",1,0,0,0
+"participant_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_participant",1,0,0,0
+"participant_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_participant",1,0,0,0
+"participant_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_participant",1,0,0,0
+"participant_training_course","training.course","training.model_training_course","res_group_portal_participant",1,0,0,0
+"participant_training_group","training.group","training.model_training_group","res_group_portal_participant",1,0,0,0
+"participant_training_offer","training.offer","training.model_training_offer","res_group_portal_participant",1,0,0,0
+"participant_training_offer_kind","training.offer_kind","training.model_training_offer_kind","res_group_portal_participant",1,0,0,0
+"participant_training_course_kind","training.course.kind","training.model_training_course_kind","res_group_portal_participant",1,0,0,0
+"participant_training_participation","training.participation","training.model_training_participation","res_group_portal_participant",1,1,0,0
+"participant_sub_training_participation","training.participation","training.model_training_participation","res_group_portal_participant",1,1,0,0
+"participant_training_participation_line","training.participation.line","training_exam.model_training_participation_line","res_group_portal_participant",1,1,0,0
+"participant_training_seance","training.seance","training.model_training_seance","res_group_portal_participant",1,0,0,0
+"participant_training_session","training.session","training.model_training_session","res_group_portal_participant",1,0,0,0
+"participant_training_subscription","training.subscription","training.model_training_subscription","res_group_portal_participant",1,0,0,0
+"participant_training_subscription_line","training.subscription.line","training.model_training_subscription_line","res_group_portal_participant",1,0,0,0
+"participant_training_exam_questionnaire","training.exam.questionnaire","training_exam.model_training_exam_questionnaire","res_group_portal_participant",1,0,0,0
+"participant_training_degree","training.degree","training_degree.model_training_degree","res_group_portal_participant",1,0,0,0
+"participant_training_degree_contact","training.degree.contact","training_degree.model_training_degree_contact","res_group_portal_participant",1,0,0,0
+"participant_account_analytic_account","account.analytic.account","account.model_account_analytic_account","res_group_portal_participant",1,0,0,0
+"participant_training_course_category","training.course_category","training.model_training_course_category","res_group_portal_participant",1,0,0,0
+"participant_training_course_type","training.course_type","training.model_training_course_type","res_group_portal_participant",1,0,0,0
+"participant_training_course_theme","training.course.theme","training.model_training_course_theme","res_group_portal_participant",1,0,0,0
+"access_training_participation_course_line_portal_participant","training.participation.course.line","training_exam.model_training_participation_course_line","portal_training.res_group_portal_participant",1,0,0,0

=== added file 'portal_training/participant/menus.xml'
--- portal_training/participant/menus.xml	1970-01-01 00:00:00 +0000
+++ portal_training/participant/menus.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <menuitem name="Participant Portal" id="participant_portal_training_mi" parent="menu_portal_training" />
+
+        <record id="portal_participant_menu_act" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('participant_portal_training_mi'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field eval="1" name="portal_visible"/>
+            <field name="view_mode">tree,form</field>
+            <field eval="80" name="limit"/>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Portal Participant Menu</field>
+        </record>
+
+
+        <menuitem name="Trainings" parent="participant_portal_training_mi" id="participant_seances_mi" icon="terp-project" />
+
+        <menuitem name="Participations" id="participant_participation_mi" parent="participant_portal_training_mi" icon="terp-partner" />
+
+        <record model="ir.actions.act_window" id="portal_participant_seance_participation_all_act">
+            <field name="name">Past Seance Participations</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('kind', '=', 'standard'),('date', '&lt;', current_date)]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_seance_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_seance_participation_tree" />
+            <field name="act_window_id" ref="portal_participant_seance_participation_all_act" />
+        </record>
+
+        <menuitem parent="participant_participation_mi" 
+            id="participant_participation_all_mi" 
+            action="portal_participant_seance_participation_all_act"
+            sequence='2'/>
+
+        <record model="ir.actions.act_window" id="participant_seance_participation_exam_all_act">
+            <field name="name">Past Exam Participations</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('kind', '=', 'exam'),('date', '&lt;', current_date)]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_exam_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_exam_participation_tree" />
+            <field name="act_window_id" ref="participant_seance_participation_exam_all_act" />
+        </record>
+
+        <menuitem parent="participant_participation_mi" 
+            id="participant_participation_exam_all_mi"
+            action="participant_seance_participation_exam_all_act" sequence='3' />
+
+        <record model="ir.actions.act_window" id="participant_degree_act">
+            <field name="name">Degrees</field>
+            <field name="res_model">training.degree.contact</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem id="participant_degrees_degrees_mi" 
+            parent="participant_participation_mi" 
+            action="participant_degree_act" sequence='4'/>
+
+        <menuitem name="Subscriptions"
+            parent="participant_portal_training_mi" 
+            id="participant_subscriptions_mi" 
+            icon="terp-sale" />
+
+
+        <record model="ir.actions.act_window" id="participant_subscription_line_act">
+            <field name="name">Subscriptions waiting validation</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('state', '=', 'draft')]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_subscription_line_wait_tree_view">
+            <field name="sequence" eval="1" />
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="participant_subscription_line_tree" />
+            <field name="act_window_id" ref="participant_subscription_line_act" />
+        </record>
+
+        <menuitem name="Subscriptions waiting validation"
+            action="participant_subscription_line_act" 
+            parent="participant_subscriptions_mi"
+            id="participant_subscription_confirmed_mi"
+            sequence="1" />
+
+        <record model="ir.actions.act_window" id="participant_subscription_line_confirmed_act">
+            <field name="name">Confirmed Subscriptions</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('state', '=', 'confirmed')]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_subscription_line_conf_tree_view">
+            <field name="sequence" eval="1" />
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="participant_subscription_line_tree" />
+            <field name="act_window_id" ref="participant_subscription_line_confirmed_act" />
+        </record>
+
+        <menuitem name="Confirmed Subscriptions"
+            action="participant_subscription_line_confirmed_act" 
+            parent="participant_subscriptions_mi"
+            id="participant_subscription_waiting_mi" 
+            sequence="2" />
+
+        <record model="ir.actions.act_window" id="participant_subscription_line_history_act">
+            <field name="name">History</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('state', 'in', ('cancelled', 'done'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_subscription_line_hist_tree_view">
+            <field name="sequence" eval="1" />
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="participant_subscription_line_tree" />
+            <field name="act_window_id" ref="participant_subscription_line_history_act" />
+        </record>
+
+        <menuitem name="History"
+            action="participant_subscription_line_history_act"
+            parent="participant_subscriptions_mi"
+            id="participant_subscription_history_mi" 
+            sequence="2" />
+    </data>
+</openerp>

=== added file 'portal_training/participant/portal.xml'
--- portal_training/participant/portal.xml	1970-01-01 00:00:00 +0000
+++ portal_training/participant/portal.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="portal.model" id="portal_participant_model_participation">
+            <field name="name">Participant Participations</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]"/>
+            <field name="rule_group_id" ref="participant_participation_rule_group" />
+        </record>
+
+        <record model="portal.model" id="portal_participant_model_subscription_line">
+            <field name="name">Participant Subscription Lines</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription.line')]"/>
+            <field name="rule_group_id" ref="participant_subscription_line_rule_group" />
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/participant/security.xml'
--- portal_training/participant/security.xml	1970-01-01 00:00:00 +0000
+++ portal_training/participant/security.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,57 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.rule.group" id="participant_participation_rule_group">
+            <field name="name">Portal Participant Participation Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="participant_participation_rule">
+            <field name="field_id" search="[('model', '=', 'training.participation'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="rule_group" ref="participant_participation_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_participant">
+            <field name="rule_groups" eval="[(4, ref('participant_participation_rule_group'))]" />
+        </record>
+
+        <record model="ir.rule.group" id="participant_subscription_line_rule_group">
+            <field name="name">Portal Participant Subscription Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription.line')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="participant_subscription_line_rule">
+            <field name="field_id" search="[('model', '=', 'training.subscription.line'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="rule_group" ref="participant_subscription_line_rule_group" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_participant">
+            <field name="rule_groups" eval="[(4, ref('participant_subscription_line_rule_group'))]" />
+        </record>
+
+
+        <record model="ir.rule.group" id="portal_participant_report_xml_rule_group">
+            <field name="name">Portal Participant Report Rule Group</field>
+            <field name="model_id" ref="base.model_ir_actions_report_xml" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_participant_report_xml_rule">
+            <field name="field_id" 
+                search="[('model', '=', 'ir.actions.report.xml'),('name', '=', 'portal_visible')]" />
+            <field name="operator">=</field>
+            <field name="operand">True</field>
+            <field name="rule_group" ref="portal_participant_report_xml_rule_group" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_participant">
+            <field name="rule_groups" eval="[(4, ref('portal_participant_report_xml_rule_group'))]" />
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/participant/views.xml'
--- portal_training/participant/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/participant/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <!-- Subscription Line-->
+        <record model="ir.ui.view" id="participant_subscription_line_form">
+            <field name="name">portal.participant.subscription.line.form</field>
+            <field name="model">training.subscription.line</field>
+            <field name="type">form</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <form string="Subscription Lines">
+                    <separator string="Session Information" colspan="4" />
+                    <field name="name" readonly="1" />
+                    <field name="subscription_id" link="0" />
+                    <field name="session_id" link="0" />
+                    <field name="session_date" />
+                    <separator string="Participant" colspan="4" />
+                    <field name="partner_id" readonly="1" link="0" />
+                    <field name="job_id" readonly="1" link="0" />
+                    <field name="job_email" />
+                    <field name="has_certificate" groups="base.group_user" readonly="1" />
+                    <!--
+                    <separator colspan="4"/>
+                    <group col="8" colspan="4">
+                        <field name="state" />
+                        <button name="signal_confirm" string="Confirm" type="workflow" attrs="{'readonly':[('state','=','draft')]}"/>
+                        <button name="signal_cancel" string="Cancel" type="workflow" states="draft" />
+                    </group>
+                    -->
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="participant_subscription_line_tree">
+            <field name="name">portal.participant.subscription.line.form</field>
+            <field name="model">training.subscription.line</field>
+            <field name="type">tree</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <tree string="Subscription Lines">
+                    <field name="state" />
+                    <field name="partner_id" readonly="1" link="0" />
+                    <field name="session_id" link="0" />
+                    <field name="session_date" />
+                    <field name="contact_firstname" />
+                    <field name="contact_lastname" />
+                    <field name="has_certificate" groups="base.group_user" readonly="1" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="participant_participation_form">
+            <field name="name">portal.participant.participation.form</field>
+            <field name="model">training.participation</field>
+            <field name="type">form</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <form string="Seance Participation">
+                    <separator string="Participation Description" colspan="4"/>
+                    <field name="job_id"/>
+                    <field name="partner_id" link="0" />
+                    <field name="present" readonly="1" />
+                    <separator string="Seance Information" colspan="4" />
+                    <field name="seance_id" link="0" />
+                    <field name="date"/>
+                    <field name="kind" readonly="1" />
+                    <notebook colspan="4">
+                        <page string="Course" attrs="{'invisible' : [('kind', '!=', 'standard')]}">
+                            <field name="course_id" link="0" />
+                        </page>
+                        <page string="Exam Participation" attrs="{'invisible':[('kind', '!=', 'exam')]}">
+                            <field name="questionnaire_id" link="0" />
+                            <field name="duration_questionnaire_id" />
+                            <field name="course_questionnaire_id" colspan="4" link="0" />
+                            <field name="participation_line_ids" colspan="4" nolabel="1" mode="tree" />
+                            <field name="forced_result" on_change="on_change_forced_result(forced_result)"/>
+                            <field name="result_received"/>
+                            <field name="result"/>
+                            <field name="passing_score"/>
+                            <field name="succeeded"/>
+                        </page>
+                    </notebook>
+                </form>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added directory 'portal_training/partner'
=== added file 'portal_training/partner/ir.model.access.csv'
--- portal_training/partner/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/partner/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,40 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"partner_res_partner","res.partner","base.model_res_partner","res_group_portal_partner",1,0,0,0
+"partner_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_partner",1,0,0,0
+"partner_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_partner",1,0,0,0
+"partner_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_partner",1,0,0,0
+"partner_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_partner",1,0,0,0
+"partner_product_template","product.template","product.model_product_template","res_group_portal_partner",1,0,0,0
+"partner_product_product","product.product","product.model_product_product","res_group_portal_partner",1,0,0,0
+"partner_product_pricelist","product.pricelist","product.model_product_pricelist","res_group_portal_partner",1,0,0,0
+"partner_product_price_type","product.price.type","product.model_product_price_type","res_group_portal_partner",1,0,0,0
+"partner_account_tax","account.tax","account.model_account_tax","res_group_portal_partner",1,0,0,0
+"partner_account_invoice","account.invoice","account.model_account_invoice","res_group_portal_partner",1,0,0,0
+"partner_account_invoice_line","account.invoice.line","account.model_account_invoice_line","res_group_portal_partner",1,0,0,0
+"partner_account_invoice_tax","account.invoice.tax","account.model_account_invoice_tax","res_group_portal_partner",1,0,0,0
+"partner_account_sequence_fiscalyear","account.sequence.fiscalyear","account.model_account_sequence_fiscalyear","res_group_portal_partner",1,0,0,0
+"partner_training_subscription","training.subscription","training.model_training_subscription","res_group_portal_partner",1,1,1,0
+"partner_training_subscription_line","training.subscription.line","training.model_training_subscription_line","res_group_portal_partner",1,1,1,0
+"partner_training_participation","training.participation","training.model_training_participation","res_group_portal_partner",1,1,0,0
+"partner_training_participation_line","training.participation.line","training_exam.model_training_participation_line","res_group_portal_partner",1,0,0,0
+"partner_training_participation_stakeholder_request","training.participation.stakeholder.request","training.model_training_participation_stakeholder_request","res_group_portal_partner",1,0,0,0
+"partner_training_participation_stakeholder","training.participation.stakeholder","training.model_training_participation_stakeholder","res_group_portal_partner",1,0,0,0
+"partner_training_session","training.session","training.model_training_session","res_group_portal_partner",1,0,0,0
+"partner_training_seance","training.seance","training.model_training_seance","res_group_portal_partner",1,0,0,0
+"partner_training_seance_purchase_line","training.seance.purchase_line","training.model_training_seance_purchase_line","res_group_portal_partner",1,0,0,0
+"partner_training_group","training.group","training.model_training_group","res_group_portal_partner",1,0,0,0
+"partner_training_offer","training.offer","training.model_training_offer","res_group_portal_partner",1,0,0,0
+"partner_training_offer_kind","training.offer.kind","training.model_training_offer_kind","res_group_portal_partner",1,0,0,0
+"partner_training_course_kind","training.course.kind","training.model_training_course_kind","res_group_portal_partner",1,0,0,0
+"partner_account_analytic_account","account.analytic.account","account.model_account_analytic_account","res_group_portal_partner",1,0,0,0
+"partner_training_course_offer_rel","training.course.offer.rel","training.model_training_course_offer_rel","res_group_portal_partner",1,0,0,0
+"partner_training_course","training.course","training.model_training_course","res_group_portal_partner",1,0,0,0
+"partner_training_course_pending_reason","training.course.pending.reason","training.model_training_course_pending_reason","res_group_portal_partner",1,0,0,0
+"partner_training_exam_questionnaire","training.exam.questionnaire","training_exam.model_training_exam_questionnaire","res_group_portal_partner",1,0,0,0
+"partner_training_exam_question","training.exam.question","training_exam.model_training_exam_question","res_group_portal_partner",1,0,0,0
+"partner_account_payment_term","account.payment.term","account.model_account_payment_term","res_group_portal_partner",1,0,0,0
+"partner_training_course_category","training.course_category","training.model_training_course_category","res_group_portal_partner",1,0,0,0
+"partner_training_course_type","training.course_type","training.model_training_course_type","res_group_portal_partner",1,0,0,0
+"partner_mrp_procurement","mrp.procurement","mrp.model_mrp_procurement","res_group_portal_partner",1,0,0,0
+"partner_training_course_theme","training.course.theme","training.model_training_course_theme","res_group_portal_partner",1,0,0,0
+"access_training_participation_course_line_portal_partner","training.participation.course.line","training_exam.model_training_participation_course_line","portal_training.res_group_portal_partner",1,0,0,0

=== added file 'portal_training/partner/menus.xml'
--- portal_training/partner/menus.xml	1970-01-01 00:00:00 +0000
+++ portal_training/partner/menus.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,216 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <menuitem name="Partner Portal" id="menu_partner_portal_training" parent="menu_portal_training" />
+        
+        <record id="portal_partner_action_menu" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('menu_partner_portal_training'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field name="portal_visible">1</field>
+            <field name="view_mode">tree,form</field>
+            <field name="limit">80</field>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Partner Portal Menu</field>
+        </record>
+
+
+        
+        <menuitem id="partner_subscription_main_mi" parent="menu_partner_portal_training" name="Subscriptions" sequence="3" icon="terp-sale" />
+
+        <!--
+        <record model="ir.actions.act_window" id="partner_subscription_line_all_act">
+            <field name="name">All Subscriptions (Line) Requested</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'draft')]</field>
+        </record>
+
+        <menuitem id="partner_subscription_line_all_mi" parent="partner_subscription_main_mi" action="partner_subscription_line_all_act" sequence="11"/>
+        -->
+
+        <record model="ir.actions.act_window" id="partner_subscription_all_act">
+            <field name="name">All Subscriptions Requests</field>
+            <field name="res_model">training.subscription</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem id="partner_subscription_all_mi" parent="partner_subscription_main_mi" action="partner_subscription_all_act" sequence="11"/>
+
+        <record model="ir.actions.act_window" id="training_subscription_new_act">
+            <field name="name">New Subscription</field>
+            <field name="res_model">training.subscription</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+        </record>
+
+
+        <menuitem id="partner_subscription_new_mi"
+            parent="menu_portal_training"
+            action="training_subscription_new_act"
+            sequence="10"
+            name="New Subscription Request" />
+        <menuitem id="partner_subscription_draft_mi"
+            parent="partner_subscription_main_mi"
+            action="training.training_subscription_line_draft_act"
+            name="Subscriptions waiting validation"
+            sequence="12"/>
+
+        <record model="ir.actions.act_window" id="partner_subline_confirmed_act">
+            <field name="name">Confirmed Subscriptions</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', '=', 'confirmed')]</field>
+        </record>
+        <menuitem id="partner_participation_main_mi" parent="menu_partner_portal_training" name="Participations" sequence="1" icon="terp-partner" />
+        <menuitem id="partner_subline_confirmed_mi" parent="partner_participation_main_mi" action="partner_subline_confirmed_act" sequence="22"/>
+
+        <record model="ir.actions.act_window" id="partner_subline_cancelled_done_act">
+            <field name="name">History</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+            <field name="domain">[('state', 'in', ('cancelled', 'done'))]</field>
+            <!--<field name="context">{'criteria_partner_id' : True}</field>
+            -->
+        </record>
+        <menuitem id="partner_subline_cancelled_done_mi" parent="partner_subscription_main_mi" action="partner_subline_cancelled_done_act" sequence="14"/>
+
+       
+        
+
+        <record model="ir.actions.act_window" id="partner_todays_participations_act">
+            <field name="name">Today's Participations</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('date', '&gt;=', time.strftime('%Y-%m-%d 00:00:00')), ('date', '&lt;=', time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+        <menuitem id="partner_todays_participations_mi" parent="partner_participation_main_mi" action="partner_todays_participations_act" sequence="21" />
+
+        <record model="ir.actions.act_window" id="partner_todays_courses_act">
+            <field name="name">Today's Courses</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('kind', '=', 'standard'), ('date', '&gt;=', time.strftime('%Y-%m-%d 00:00:00')), ('date', '&lt;=', time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_todays_seance_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_seance_participation_tree" />
+            <field name="act_window_id" ref="partner_todays_courses_act" />
+        </record>
+
+        <menuitem id="partner_todays_courses_mi" parent="partner_todays_participations_mi" action="partner_todays_courses_act" sequence="200"/>
+
+        <record model="ir.actions.act_window" id="partner_todays_exams_act">
+            <field name="name">Today's Exams</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('kind', '=', 'exam'), ('date', '&gt;=', time.strftime('%Y-%m-%d 00:00:00')), ('date', '&lt;=', time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_todays_exam_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_exam_participation_tree" />
+            <field name="act_window_id" ref="partner_todays_exams_act" />
+        </record>
+
+        <menuitem id="partner_todays_exams_mi" parent="partner_todays_participations_mi" action="partner_todays_exams_act" sequence="201"/>
+
+        <record model="ir.actions.act_window" id="partner_todays_intra_act">
+            <field name="name">Today's Intra</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('kind', '=', 'intra'), ('date', '&gt;=', time.strftime('%Y-%m-%d 00:00:00')), ('date', '&lt;=', time.strftime('%Y-%m-%d 23:59:59'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_todays_intra_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_seance_participation_tree"/>
+            <field name="act_window_id" ref="partner_todays_intra_act"/>
+        </record>
+
+        <menuitem id="partner_todays_intra_mi" parent="partner_todays_participations_mi" action="partner_todays_intra_act" sequence="202"/>
+
+       
+        <record model="ir.actions.act_window" id="partner_past_participations_act">
+            <field name="name">Past Participations</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('date', '&lt;', time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+        <menuitem id="partner_past_participations_mi" parent="partner_participation_main_mi" action="partner_past_participations_act" sequence="20" />
+
+        <record model="ir.actions.act_window" id="partner_past_courses_act">
+            <field name="name">Past Courses</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('kind', '=', 'standard'), ('date', '&lt;', time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_past_seance_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_seance_participation_tree" />
+            <field name="act_window_id" ref="partner_past_courses_act" />
+        </record>
+
+        <menuitem id="partner_past_courses_mi" parent="partner_past_participations_mi" action="partner_past_courses_act" sequence="210"/>
+
+        <record model="ir.actions.act_window" id="partner_past_exams_act">
+            <field name="name">Past Exams</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('kind', '=', 'exam'), ('date', '&lt;', time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_past_exam_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_exam_participation_tree" />
+            <field name="act_window_id" ref="partner_past_exams_act" />
+        </record>
+
+        <menuitem id="partner_past_exams_mi" parent="partner_past_participations_mi" action="partner_past_exams_act" sequence="211"/>
+
+        <record model="ir.actions.act_window" id="partner_past_intras_act">
+            <field name="name">Past Intras</field>
+            <field name="res_model">training.participation</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree</field>
+            <field name="domain">[('kind', '=', 'intra'), ('date', '&lt;', time.strftime('%Y-%m-%d 00:00:00'))]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="partner_past_intra_participation_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="portal_view_training_seance_participation_tree"/>
+            <field name="act_window_id" ref="partner_past_intras_act"/>
+        </record>
+
+        <menuitem id="partner_past_intras_mi" parent="partner_past_participations_mi" action="partner_past_intras_act" sequence="212"/>
+        
+        <menuitem id="partner_accounting_mi" parent="menu_partner_portal_training" name="Accounting" sequence="2" icon="terp-account" />
+        <menuitem id="partner_invoices_mi" parent="partner_accounting_mi" action="account.action_invoice_tree1" sequence="30" />
+        <menuitem id="partner_refunds_mi" parent="partner_accounting_mi" action="account.action_invoice_tree3" sequence="31" />
+
+    </data>
+</openerp>

=== added file 'portal_training/partner/portal.xml'
--- portal_training/partner/portal.xml	1970-01-01 00:00:00 +0000
+++ portal_training/partner/portal.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <record model="portal.model" id="portal_model_invoice">
+            <field name="name">Invoices</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]"/>
+            <field name="rule_group_id" ref="portal_partner_invoice_rule_group" />
+        </record>
+
+        <record model="portal.model" id="portal_model_subscription">
+            <field name="name">Subscriptions</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription')]"/>
+            <field name="rule_group_id" ref="portal_partner_subscription_rule_group" />
+        </record>
+
+    </data>
+</openerp>

=== added file 'portal_training/partner/report.xml'
--- portal_training/partner/report.xml	1970-01-01 00:00:00 +0000
+++ portal_training/partner/report.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <report
+            auto="False"
+            id="account.account_invoices"
+            model="account.invoice"
+            name="account.invoice"
+            rml="account/report/invoice.rml"
+            string="Invoices"
+            attachment="(object.state in ('open','paid')) and ('INV'+(object.number or '').replace('/',''))"
+            groups="base.group_user"
+            attachment_use="1"/>
+    </data>
+</openerp>

=== added file 'portal_training/partner/security.xml'
--- portal_training/partner/security.xml	1970-01-01 00:00:00 +0000
+++ portal_training/partner/security.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,94 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="name">Portal Partner Group</field>
+        </record>
+
+        <record model="ir.rule.group" id="portal_partner_invoice_rule_group">
+            <field name="name">Portal Partner Invoice Rule</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_account_invoice_rule">
+            <field name="field_id" search="[('model', '=', 'account.invoice'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_invoice_rule_group"/>
+        </record>
+
+
+        <record model="ir.rule.group" id="portal_partner_subscription_rule_group">
+            <field name="name">Portal Partner Subscription Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_subscription_rule">
+            <field name="field_id" search="[('model', '=', 'training.subscription'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_subscription_rule_group"/>
+        </record>
+        
+        <record model="ir.rule.group" id="portal_partner_subscription_line_rule_group">
+            <field name="name">Portal Partner Subscription Line Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription.line')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_subscription_line_rule">
+            <field name="field_id" search="[('model', '=', 'training.subscription.line'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_subscription_line_rule_group"/>
+        </record>
+
+        <record model="ir.rule.group" id="portal_partner_participation_rule_group">
+            <field name="name">Portal Partner Participation Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_participation_rule">
+            <field name="field_id" search="[('model', '=', 'training.participation'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_participation_rule_group"/>
+        </record>
+        
+        <record id="ir_rule_training_offer_kind_rule_group" model="ir.rule.group">
+            <field name="name">Training Offer Kind Rule</field>
+            <field model="ir.model" name="model_id" search="[('name','=','training.offer.kind')]"/>
+            <field eval="False" name="global"/>
+        </record>
+
+        <record id="ir_rule_training_offer_kind_rule" model="ir.rule">
+            <field name="operand">True</field>
+            <field name="operator">=</field>
+            <field model="ir.model.fields" name="field_id" search="[('name','=','portal_visible'),('model','=','training.offer.kind')]"/>
+            <field name="rule_group" ref="ir_rule_training_offer_kind_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(4, ref('ir_rule_training_offer_kind_rule_group'))]" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(4, ref('portal_partner_invoice_rule_group'))]" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(4, ref('portal_partner_subscription_rule_group'))]" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(4, ref('portal_partner_subscription_line_rule_group'))]" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(4, ref('portal_partner_participation_rule_group'))]" />
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/partner/views.xml'
--- portal_training/partner/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/partner/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="portal_subscription_form">
+            <field name="name">portal.training.subscription.form</field>
+            <field name="model">training.subscription</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="training.training_subscription_form" />
+            <field name="arch" type="xml">
+                <xpath expr="/form/notebook/page[@string='Subscription']/field[@name='subscription_line_ids']/form/field[@name='session_id']"
+                    position="attributes">
+                    <attribute name="context">{'from_subscription' : True}</attribute>
+                </xpath>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="portal_subscription_mass_line_form">
+            <field name="name">portal.training.subscription.mass.line.form</field>
+            <field name="model">training.subscription.mass.line</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="training.subscription_mass_line_form" />
+            <field name="arch" type="xml">
+                <field name="session_id" position="attributes">
+                    <attribute name="context">{'from_subscription' : True}</attribute>
+                </field>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/portal_training.py'
--- portal_training/portal_training.py	1970-01-01 00:00:00 +0000
+++ portal_training/portal_training.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,498 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import string
+from random import *
+import unicodedata
+from osv import osv, fields
+import tools
+from tools.translate import _
+import time
+
+class training_contact_course_portal(osv.osv):
+    """Contact By Course"""
+    _name = 'training.contact.course.portal'
+    _auto = False
+
+    _columns = {
+        'course_id' : fields.many2one('training.course', 'Course', readonly=True),
+        'category_id' : fields.related('course_id', 'category_id', type='many2one', relation='training.course_category', string='Product Line', readonly=True),
+        'type_id' : fields.related('course_id', 'course_type_id', type='many2one', relation='training.course_type', string='Type', readonly=True),
+        'lang_id' : fields.related('course_id', 'lang_id', type='many2one', relation='res.lang', string='Lang', readonly=True),
+        'contact_id' : fields.many2one('res.partner.contact', 'Contact', readonly=True),
+    }
+
+    def init(self, cr):
+        tools.drop_view_if_exists(cr, 'training_contact_course_portal')
+        cr.execute("CREATE OR REPLACE VIEW training_contact_course_portal AS ( "
+                   "SELECT course.id as id, course.id AS course_id, contact.id AS contact_id "
+                   "FROM training_course course, training_course_job_rel rel, res_partner_job job, res_partner_contact contact "
+                   "WHERE course.id = rel.course_id "
+                   "AND job.id = rel.job_id "
+                   "AND contact.id = job.contact_id )")
+
+training_contact_course_portal()
+
+
+class portal_training_lecturer(osv.osv):
+    _inherit = 'res.users'
+
+    _columns = {
+        'partner_id': fields.related('address_id', 'partner_id', string="Partner", type='many2one', relation='res.partner', readonly=True),
+        'contact_id': fields.many2one('res.partner.contact', 'Contact'),
+    }
+
+portal_training_lecturer()
+
+
+def _partner_from_uid(obj, cr, uid, context=None):
+    return False
+
+
+class training_subscription(osv.osv):
+    _inherit = 'training.subscription'
+    def _partner_default(self, cr, uid, context=None):
+        user = self.pool.get('res.users').browse(cr, uid, uid, context)
+        if user and user.partner_id:
+            return user.partner_id.id
+        return _partner_from_uid(self, cr, uid, context)
+
+    def _address_default(self, cr, uid, context=None):
+        part_id  = _partner_from_uid(self, cr, uid, context)
+        return self.on_change_partner(cr, uid, [], part_id).get('value', {}).get('address_id', False)
+
+    _defaults = {
+        'partner_id': _partner_default,
+        'address_id': _address_default,
+    }
+training_subscription()
+
+class portal_projected_purchase_lines(osv.osv):
+    _name = 'portal.projected.purchase.lines'
+    _auto = False
+
+    def _notes_compute(self, cr, uid, ids, fieldnames, args, context=None):
+        res = dict.fromkeys(ids, '')
+
+        for obj in self.browse(cr, uid, ids, context=context):
+            po_line = obj.purchase_line_id
+            note = []
+
+            if po_line.attachment_id:
+                for component in po_line.attachment_id.component_ids:
+                    note.append("%sx %s" % (component.product_qty, component.product_id.name,))
+
+                if po_line.attachment_id.support_note:
+                    note.append("==================================")
+                    note.append(po_line.attachment_id.support_note)
+
+            res[obj.id] = "\n".join(note)
+
+        return res
+
+    _columns = {
+        'product_id' : fields.many2one('product.product', 'Product', readonly=True, select=1),
+        'partner_id' : fields.many2one('res.partner', 'Partner', readonly=True, select=1),
+        'seance_id' : fields.many2one('training.seance', 'Seance', readonly=True, select=1),
+        'course_id': fields.many2one('training.course', 'Course', readonly=True, select=1),
+        'duration' : fields.float('Duration', readonly=True),
+        'date' : fields.datetime('Date', readonly=True, select=1),
+        'purchase_line_id' : fields.many2one('training.seance.purchase_line', 'Purchase Line', readonly=True, select=1),
+        'purchase_line_qty' : fields.related('purchase_line_id', 'proc_qty', string="Estimated Quantity", type='float', readonly=True, select=1),
+        'notes' : fields.function(_notes_compute, method=True, type="text", string="Notes", readonly=True),
+    }
+
+    def init(self, cr):
+        tools.drop_view_if_exists(cr, 'portal_projected_purchase_lines')
+
+        cr.execute(
+            "CREATE OR REPLACE VIEW portal_projected_purchase_lines AS ( "
+            "SELECT tspl.id as id, pr.id as product_id, partner.id as partner_id, ts.id as seance_id, tspl.course_id, ts.date, ts.duration, tspl.id as purchase_line_id "
+            "FROM "
+            "training_seance_purchase_line tspl, "
+            "training_seance ts, "
+            "product_product pr, "
+            "product_supplierinfo ps, "
+            "res_partner partner "
+            "WHERE tspl.seance_id = ts.id "
+            "AND tspl.procurement_id is null "
+            "AND ts.state = 'opened' "
+            "AND pr.id = tspl.product_id "
+            "AND ts.date between current_date AND current_date + 20 "
+            "AND ps.product_id = tspl.product_id "
+            "AND ps.name = partner.id "
+            ")"
+        )
+
+portal_projected_purchase_lines()
+
+
+class training_seance(osv.osv):
+    _inherit = 'training.seance'
+
+    def _attachment_compute(self, cr, uid, ids, fieldnames, args, context=None):
+        res = dict.fromkeys(ids, [])
+        proxy = self.pool.get('ir.attachment')
+
+        for obj in self.browse(cr, uid, ids, context=context):
+            if obj.course_id:
+                res[obj.id] = proxy.search(cr, uid,
+                                           [('res_model', '=', 'training.course'),
+                                            ('res_id', '=', obj.course_id.id),
+                                            ('type', '=', 'lecturer_material'),
+                                           ],
+                                           context=context
+                                          )
+
+        return res
+
+    def _user_is_stakeholder(self, cr, uid, ids, fieldname, arg, context=None):
+        user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+        result = dict.fromkeys(ids, False)
+        for this in self.browse(cr, uid, ids, context=context):
+            result[this.id] = any(sh.contact_id == user.contact_id and sh.state == 'confirmed' for sh in this.contact_ids)
+        return result
+
+    def _user_is_stakeholder_search(self, cr, uid, obj, name, domain, context=None):
+        if not context:
+            context = {}
+        user = self.pool.get('res.users').browse(cr, uid, uid)
+        if not len(domain):
+            return []
+
+        val = bool(domain[0][2])
+        if domain[0][1] != '=':
+            val = not val
+
+        _not = ['NOT', ''][val]
+        query = """SELECT distinct(id)
+                     FROM training_seance s
+                    WHERE %s EXISTS(SELECT 1
+                                      FROM training_participation_stakeholder sh
+                                     WHERE sh.seance_id = s.id
+                                       AND sh.state in ('done', 'accepted')
+                                       AND sh.contact_id = %%s
+                                    )
+                """ % ( _not,)
+        cr.execute(query, (user.contact_id.id or 0,))
+        ids = [i for (i,) in cr.fetchall()]
+        if not ids:
+            return [('id','=','0')]
+        return [('id', 'in', ids)]
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        if (context and context.get('portal_search_reverse_order') or False):
+            order = 'date DESC'
+        return super(training_seance, self).search(cr, uid, domain, offset=offset,
+                            limit=limit, order=order,context=context, count=count)
+
+    def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
+        if (context and context.get('portal_search_reverse_order') or False):
+            res = super(training_seance, self).read(cr, user, ids, fields=fields, context=context,
+                        load=load)
+            # we juste reverse the list. we don't have problem with offset and limit here because
+            # the search() method take care of that.
+            res.reverse()
+            return res
+        return super(training_seance, self).read(cr, user, ids, fields=fields, context=context, load=load)
+
+    #def _has_conf_pol_compute(self, cr, uid, ids, fn, args, context=None):
+    #    res = dict.fromkeys(ids, False)
+    #    for seance in self.browse(cr, uid, ids, context=context):
+    #        res[seance.id] = any(pol.state == 'confirmed' for pol in seance.purchase_order_line_ids)
+    #        #res[seance.id] = any(pl.procurement_id.state == 'running' for pl in seance.purchase_line_ids)
+    #    return res
+
+    #def _has_conf_pol_srch(self, cr, uid, obj, fn, domain, context=None):
+    #    if not len(domain):
+    #        return []
+    #
+    #    val = bool(domain[0][2])
+    #    if domain[0][1] != '=':
+    #        val = not val
+    #
+    #    _not = ['NOT', ''][val]
+    #    query = """SELECT distinct(id)
+    #                 FROM training_seance s
+    #                WHERE %s EXISTS(SELECT 1
+    #                                  FROM purchase_order po
+    #                            INNER JOIN purchase_order_line pol ON pol.order_id = po.id
+    #                                 WHERE po.seance_id = s.id
+    #                                   AND pol.state = 'confirmed'
+    #                                )
+    #            """ % ( _not,)
+    #    cr.execute(query)
+    #    ids = [i for (i,) in cr.fetchall()]
+    #    if not ids:
+    #        return [('id','=','0')]
+    #    return [('id', 'in', ids)]
+
+
+    _columns = {
+        'attachment_ids' : fields.function(_attachment_compute,
+                                           method=True,
+                                           string='Material',
+                                           type='one2many',
+                                           relation='ir.attachment'),
+
+        'user_is_stakeholder': fields.function(_user_is_stakeholder,
+                                               method=True,
+                                               type="boolean",
+                                               readonly=True,
+                                               fnct_search=_user_is_stakeholder_search,
+                                               ),
+        #'has_confirmed_pol': fields.function(_has_conf_pol_compute,
+        #                                    method=True,
+        #                                    fnct_search=_has_conf_pol_srch,
+        #                                    type='boolean',
+        #                                    string='Has Confirmed Purchase Order Lines',
+        #                                    readonly=True),
+
+        #'purchase_order_line_ids': fields.one2many('purchase.order.line', 'seance_id', 'Purchase Order Lines', readonly=True),
+    }
+
+training_seance()
+
+
+class participation(osv.osv):
+    _inherit = 'training.participation'
+
+    _columns = {
+        'seance_state': fields.related('seance_id', 'state', readonly=True, type='selection',
+                                selection=[
+                                    ('opened', 'Opened'),
+                                    ('confirmed', 'Confirmed'),
+                                    ('inprogress', 'In Progress'),
+                                    ('closed', 'Closed'),
+                                    ('cancelled', 'Cancelled'),
+                                    ('done', 'Done')]),
+    }
+
+    def switch_presence(self, cr, uid, ids, context=None):
+        for this in self.browse(cr, uid, ids, context=context):
+            this.write({'present': not this.present}, context=context)
+        return True
+
+participation()
+
+class training_session(osv.osv):
+    _inherit = 'training.session'
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        from_subscription = (context and 'from_subscription' in context) and context.pop('from_subscription') or False
+
+        result = super(training_session, self).search(cr, uid, domain, offset=offset, limit=limit, order=order, context=context, count=count)
+        if isinstance(result, (int,long)):
+            result = [ result ]
+
+        if from_subscription:
+            imd_proxy = self.pool.get('ir.model.data')
+            imd_ids = imd_proxy.search(cr, uid, [('module', '=', 'portal_training'),('name', '=', 'res_group_portal_partner'),('model', '=', 'res.groups')], context=context)
+            if imd_ids:
+                imd = imd_proxy.browse(cr, uid, imd_ids[0], context=context)
+                if imd:
+                    group = self.pool.get(imd.model).browse(cr, uid, imd.res_id)
+                    user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+                    if any(group_id.id == group.id for group_id in user.groups_id):
+                        result2 = super(training_session, self).search(cr, uid, [('kind', '!=', 'intra'),
+                                                                                 ('date', '>', time.strftime('%Y-%m-%d')),
+                                                                                 ('state', 'in', ('opened', 'opened_confirmed')),
+                                                                                 ('id', 'in', result),
+                                                                                ])
+
+                        return result2
+
+        return result
+
+training_session()
+
+class training_offer_kind(osv.osv):
+    _inherit = 'training.offer.kind'
+
+    _columns = {
+        'portal_visible' : fields.boolean('Portal Visible'),
+    }
+
+    _defaults = {
+        'portal_visible': lambda *a: True,
+    }
+
+training_offer_kind()
+
+class training_create_portal_user(osv.osv_memory):
+    _name = 'training.create.portal.user.wizard'
+
+    _columns = {
+        #'partner_id' : fields.many2one('res.partner', 'Partner'),
+        'job_id' : fields.many2one('res.partner.job', 'Contact'),
+
+        'email' : fields.char('Email', size=128),
+        'notify_by_email' : fields.boolean('Notify By Email'),
+
+        'username' : fields.char('Username', size=16, required=True),
+        'password' : fields.char('Password', size=16, required=True),
+
+        'portal_id' : fields.many2one('portal.portal', 'Portal', required=True),
+    }
+
+    _defaults = {
+        'notify_by_email' : lambda *a: True,
+        'portal' : lambda *a: 'lecturer',
+    }
+
+
+    def _strip_accents(self, s):
+        if isinstance(s, str):
+            s = unicode(s, 'utf-8')
+        return ''.join((c for c in unicodedata.normalize('NFD', s) if unicodedata.category(c) != 'Mn'))
+
+    def _compute_username(self, cr, uid, contact_brec, context=None):
+        return (self._strip_accents(contact_brec.first_name[0]) + \
+                self._strip_accents(contact_brec.name)).lower()
+
+    def _generate_random_password(self):
+        """ Create a password of random length between 8 and 16
+            characters long, made up of numbers and letters.
+        """
+        # The characters to make up the random password
+        chars = string.ascii_letters + string.digits + "_!-[]{}#"
+        return "".join(choice(chars) for x in range(8))
+
+    def onchange_job_id(self, cr, uid, ids, job_id, context=None):
+        if not job_id:
+            ocv = {
+                'value': {
+                    'username': '',
+                    'password': '',
+                    'email': '',
+                }
+            }
+        else:
+            job = self.pool.get('res.partner.job').browse(cr, uid, job_id, context=context)
+            ocv = {
+                'value': {
+                    'username': self._compute_username(cr, uid, job.contact_id, context=context),
+                    'password': self._generate_random_password(),
+                    'email': job.email or job.contact_id.email or '',
+                },
+            }
+        return ocv
+
+#    def onchange_partner_id(self, cr, uid, ids, partner_id, context=None):
+#        val = partner_id and [ partner_id ] or []
+#        return {
+#            'domain': {
+#                'job_id': [('address_id','!=',False),('address_id.partner_id','in',val)],
+#            }
+#        }
+
+    def button_generate_random_password(self, cr, uid, ids, context=None):
+        self.write(cr, uid, [ ids[0] ], {'password': self._generate_random_password()}, context=context)
+        return True
+
+    def close_cb(self, cr, uid, ids, context=None):
+        return {'type' : 'ir.actions.act_window_close'}
+
+    def create_cb(self, cr, uid, ids, context=None):
+        this = self.browse(cr, uid, ids[0], context=context)
+        if this.notify_by_email and len(this.email.strip()) == 0:
+            raise osv.except_osv(_('Error'),
+                                 _("""You have specifed an empty email !"""))
+
+        proxy = self.pool.get('res.users')
+        user_ids = proxy.search(cr, uid, [('login', '=', this.username)], context=context)
+        if not user_ids:
+            values = {
+                'login' : this.username,
+                'password' : this.password,
+                'name' : this.job_id.contact_id.name_get()[0][1],
+                'groups_id' : [(6, 0, [this.portal_id.group_id.id])],
+                'menu_id' : this.portal_id.home_action_id.id,
+                'action_id' : this.portal_id.home_action_id.id,
+                'address_id': this.job_id.address_id.id,
+                'contact_id': this.job_id.contact_id.id,
+            }
+
+            user_id = proxy.create(cr, uid, values, context=context)
+
+            if this.notify_by_email:
+                email_proxy = self.pool.get('training.email')
+                user_account = proxy.browse(cr, uid, user_id, context=context)
+                res = email_proxy.send_email(cr, uid, 'portal_create_user', 'po', to=this.email, context=context, user_account=user_account, user_login=values['login'], user_password=values['password'])
+
+            proxy_data = self.pool.get('ir.model.data')
+            view_ids = proxy_data.search(cr, uid, [
+                ('name', '=', 'view_users_form'),
+                ('module', '=', 'base'),
+                ('model', '=', 'ir.ui.view')
+            ], context=context)
+
+            view_id = proxy_data.browse(cr, uid, view_ids[0], context=context).res_id
+
+            tools.debug(view_id)
+
+            return {
+                'type' : 'ir.actions.act_window',
+                'res_model' : 'res.users',
+                'res_id' : user_id,
+                'view_id' : [view_id],
+                'name' : 'Portal User',
+                'view_type' : 'form',
+                'view_mode' : 'form',
+            }
+        else:
+            raise osv.except_osv(_('Warning'),
+                                 _("""This login already exists in the system. Please Choose an other username"""))
+
+training_create_portal_user()
+
+class purchase_order_line(osv.osv):
+    _inherit = 'purchase.order.line'
+
+    _columns = {
+        'supplier_note' : fields.text('Supplier Note'),
+    }
+
+purchase_order_line()
+
+class training_participation_stakeholder_request(osv.osv):
+    _inherit = 'training.participation.stakeholder.request'
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        if (context and context.get('portal_search_reverse_order') or False):
+            order = 'date DESC'
+        return super(training_participation_stakeholder_request, self).search(cr, uid, domain, offset=offset,
+                            limit=limit, order=order,context=context, count=count)
+
+    def read(self, cr, user, ids, fields=None, context=None, load='_classic_read'):
+        if (context and context.get('portal_search_reverse_order') or False):
+            res = super(training_participation_stakeholder_request, self).read(cr, user, ids, fields=fields, context=context,
+                        load=load)
+            res_dict = dict([(x['id'],x) for x in res])
+            res = [ res_dict[id] for id in ids ]
+            return res
+        return super(training_participation_stakeholder_request, self).read(cr, user, ids, fields=fields, context=context, load=load)
+training_participation_stakeholder_request()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'portal_training/portal_training_data.xml'
=== added file 'portal_training/portal_training_demo.xml'
--- portal_training/portal_training_demo.xml	1970-01-01 00:00:00 +0000
+++ portal_training/portal_training_demo.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,31 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data noupdate="1">
+        <record id="res_users_vb0" model="res.users">
+            <field model="ir.actions.actions" name="menu_id" search="[('name','=','Portal Supplier Menu')]"/>
+            <field eval="[(6,0,[ref('portal_training.res_group_portal_supplier')])]" name="groups_id"/>
+            <field name="address_id" ref="base.main_address"/>
+            <field eval="[(6,0,[])]" name="roles_id"/>
+            <field eval="1" name="active"/>
+            <field name="password">supplier</field>
+            <field name="name">Supplier Portal</field>
+            <field eval="&quot;&quot;&quot;en_US&quot;&quot;&quot;" name="context_lang"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="login">supplier</field>
+            <field model="ir.actions.actions" name="action_id" search="[('name','=','Portal Supplier Menu')]"/>
+        </record>
+        <record id="res_users_partner0" model="res.users">
+            <field model="ir.actions.actions" name="menu_id" search="[('name','=','Portal Partner Menu')]"/>
+            <field eval="[(6,0,[ref('portal_training.res_group_portal_partner')])]" name="groups_id"/>
+            <field name="address_id" ref="base.main_address"/>
+            <field eval="[(6,0,[])]" name="roles_id"/>
+            <field eval="1" name="active"/>
+            <field name="password">partner</field>
+            <field eval="&quot;&quot;&quot;en_US&quot;&quot;&quot;" name="context_lang"/>
+            <field name="name">Partner Portal</field>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="login">partner</field>
+            <field model="ir.actions.actions" name="action_id" search="[('name','=','Portal Partner Menu')]"/>
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/portal_training_participant_data.xml'
--- portal_training/portal_training_participant_data.xml	1970-01-01 00:00:00 +0000
+++ portal_training/portal_training_participant_data.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,124 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <!--
+        Voir sa participation
+        Voir ses resultats (Examen)
+        Voir son evaluation
+        -->
+        <!--
+        <record model="ir.rule.group" id="participant_rule_group">
+            <field name="name">Portal Participant Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="participant_rule_participant">
+            <field name="field_id" search="[('model', '=', 'training.participation'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+            <field name="rule_group" ref="participant_rule_group"/>
+        </record>
+
+        <record model="portal.model" id="portal_model_participations">
+            <field name="name">Participations</field>
+            <field name="model_id" search="[('model', '=', 'training.participation')]"/>
+            <field name="rule_group_id" ref="participant_rule_group" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_participant">
+            <field name="rule_groups" eval="[(4, ref('participant_rule_group'))]" />
+        </record>
+        -->
+
+        <menuitem name="Participant Portal" id="participant_portal_training_mi" parent="menu_portal_training" />
+    </data>
+
+    <data noupdate="1">
+        <record id="portal_participant_menu_act" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('participant_portal_training_mi'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field eval="1" name="portal_visible"/>
+            <field name="view_mode">tree,form</field>
+            <field eval="80" name="limit"/>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Portal Participant Menu</field>
+        </record>
+    </data>
+
+    <data>
+        <menuitem name="Participations" id="participant_participation_mi" parent="participant_portal_training_mi" />
+        <menuitem parent="participant_participation_mi" id="participant_participation_all_mi" action="training.action_training_participation_all"/>
+    </data>
+    <data>
+        <!-- Subscription Line-->
+        <record model="ir.ui.view" id="participant_subscription_line_form">
+            <field name="name">portal.participant.subscription.line.form</field>
+            <field name="model">training.subscription.line</field>
+            <field name="type">form</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <form string="Subscription Lines">
+                    <separator string="Session Information" colspan="4" />
+                    <field name="name" readonly="1" />
+                    <field name="subscription_id" on_change="on_change_subscription(subscription)" />
+                    <field name="session_id" on_change="on_change_session(session_id)" />
+                    <separator string="Participant" colspan="4" />
+                    <field name="partner_id" readonly="1"/>
+                    <field name="job_id" readonly="1" domain="[('name', '=', partner_id)]"/>
+                    <field name="job_email" />
+                    <field name="has_certificate" readonly="1" />
+                    <separator colspan="4"/>
+                    <group col="8" colspan="4">
+                        <field name="state" />
+                        <button name="signal_confirm" string="Confirm" type="workflow" attrs="{'readonly':[('state','=','draft')]}"/>
+                        <button name="signal_cancel" string="Cancel" type="workflow" states="draft" />
+                    </group>
+                </form>
+            </field>
+        </record>
+        <record model="ir.ui.view" id="participant_subscription_line_tree">
+            <field name="name">portal.participant.subscription.line.form</field>
+            <field name="model">training.subscription.line</field>
+            <field name="type">tree</field>
+            <field name="priority">25</field>
+            <field name="arch" type="xml">
+                <tree string="Subscription Lines">
+                    <field name="state" />
+                    <field name="partner_id" readonly="1"/>
+                    <field name="job_id" readonly="1"/>
+                    <field name="job_email" />
+                    <field name="has_certificate" readonly="1" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="participant_subscription_line_act">
+            <field name="name">Subscription Lines</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="participant_subscription_line_form_view">
+            <field name="sequence" eval="2" />
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="participant_subscription_line_form" />
+            <field name="act_window_id" ref="participant_subscription_line_act" />
+        </record>
+        <record model="ir.actions.act_window.view" id="participant_subscription_line_tree_view">
+            <field name="sequence" eval="1" />
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="participant_subscription_line_tree" />
+            <field name="act_window_id" ref="participant_subscription_line_act" />
+        </record>
+
+        <menuitem action="participant_subscription_line_act" parent="participant_participation_mi" id="participant_subscription_line_mi" />
+    </data>
+</openerp>

=== added file 'portal_training/portal_training_partner_data.xml'
--- portal_training/portal_training_partner_data.xml	1970-01-01 00:00:00 +0000
+++ portal_training/portal_training_partner_data.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,80 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.rule.group" id="portal_partner_invoice_rule_group">
+            <field name="name">Portal Partner Invoice Rule</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_account_invoice">
+            <field name="field_id" search="[('model', '=', 'account.invoice'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_invoice_rule_group"/>
+        </record>
+
+        <record model="portal.model" id="portal_model_invoice">
+            <field name="name">Invoices</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]"/>
+            <field name="rule_group_id" ref="portal_partner_invoice_rule_group" />
+        </record>
+
+        <record model="ir.rule.group" id="portal_partner_subscription_rule_group">
+            <field name="name">Portal Partner Subscription Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_partner_subscription">
+            <field name="field_id" search="[('model', '=', 'training.subscription'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="portal_partner_subscription_rule_group"/>
+        </record>
+
+        <record model="portal.model" id="portal_model_subscription">
+            <field name="name">Subscriptions</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription')]"/>
+            <field name="rule_group_id" ref="portal_partner_subscription_rule_group" />
+        </record>
+
+
+        <record model="res.groups" id="res_group_portal_partner">
+            <field name="rule_groups" eval="[(6, 0, [ref('portal_partner_invoice_rule_group'),ref('portal_partner_subscription_rule_group')])]" />
+        </record>
+
+        <menuitem name="Partner Portal" id="menu_partner_portal_training" parent="menu_portal_training" />
+    </data>
+    <data noupdate="1">
+        <record id="portal_partner_action_menu" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('menu_partner_portal_training'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field name="portal_visible">1</field>
+            <field name="view_mode">tree,form</field>
+            <field name="limit">80</field>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Portal Partner Menu</field>
+        </record>
+    </data>
+    <data>
+        <menuitem name="Training Management" id="menu_portal_partner_training" parent="menu_partner_portal_training" />
+
+        <menuitem name="Survey" id="portal_partner_survey_mi" parent="menu_portal_partner_training" />
+
+        <record model="ir.actions.act_window" id="partner_subscription_all_act">
+            <field name="name">Subscriptions</field>
+            <field name="res_model">training.subscription</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <menuitem id="partner_subscription_all_mi" parent="portal_partner_survey_mi" action="partner_subscription_all_act" />
+    </data>
+</openerp>

=== added file 'portal_training/portal_training_view.xml'
--- portal_training/portal_training_view.xml	1970-01-01 00:00:00 +0000
+++ portal_training/portal_training_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <!-- We define the main menu -->
+        <menuitem name="Training Portals" id="menu_portal_training" parent="portal.menu_portal_root" />
+
+        <record model="ir.ui.view" id="res_users_form">
+            <field name="name">res.users.training.portal</field>
+            <field name="model">res.users</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="base.view_users_form" />
+            <field name="arch" type="xml">
+                <field name="signature" position="before">
+                    <newline />
+                    <separator colspan="4" string="Portal Contact"/>
+                    <field name="partner_id" />
+                    <field name="contact_id" />
+                    <separator colspan="4" string="Signature" />
+                </field>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="create_portal_user_wizard_form">
+            <field name="name">training.create.portal.user.wizard.form</field>
+            <field name="model">training.create.portal.user.wizard</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Create Portal User">
+                    <separator string="Select Portal" colspan="4" />
+                    <field name="portal_id" colspan="4" widget="selection" />
+                    <separator string="Contact" colspan="4" />
+                    <field name="job_id" on_change="onchange_job_id(job_id)" domain="[('address_id','!=',False)]" colspan="4"/>
+                    <separator string="Notify By Email" colspan="4" />
+                    <field name="notify_by_email" nolabel="1" colspan="1" />
+                    <field name="email" nolabel="1" colspan="3" attrs="{'required' : [('notify_by_email', '=', 1)]}" />
+
+                    <field name="username" />
+                    <newline/>
+                    <field name="password"/>
+                    <button name="button_generate_random_password" type="object" string="Generate"/>
+
+                    <separator colspan="4" />
+                    <group colspan="4" col="2">
+                        <button name="close_cb" string="Cancel" type="object" special="cancel" icon="gtk-cancel" />
+                        <button name="create_cb" string="Create Portal User" type="object" icon="gtk-execute"  />
+                    </group>
+                </form>
+            </field>
+        </record>
+
+
+        <record model="ir.actions.act_window" id="create_portal_user_wizard_act">
+            <field name="name">Create Portal User</field>
+            <field name="res_model">training.create.portal.user.wizard</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+            <field name="groups_id" eval="[(6,0,[ref('portal_training.group_training_portal_user_manager')])]"/>
+        </record>
+
+        <menuitem id="create_portal_user_wizard_mi" parent="menu_portal_training" action="create_portal_user_wizard_act"/>
+    </data>
+</openerp>

=== added file 'portal_training/portals.xml'
--- portal_training/portals.xml	1970-01-01 00:00:00 +0000
+++ portal_training/portals.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,45 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="portal.portal" id="lecturer_portal">
+            <field name="name">Training Lecturer Portal</field>
+            <field name="menu_id" ref="menu_lecturer_portal_training" />
+            <field name="group_id" ref="res_group_portal_lecturer" />
+            <field name="company_id" ref="base.main_company" />
+            <!--<field name="menu_action_id" ref="portal_lecturer_action_menu" />-->
+            <field name="home_action_id" ref="portal_lecturer_action_menu" />
+        </record>
+
+        <record model="portal.portal" id="examiner_portal">
+            <field name="name">Training Examiner Portal</field>
+            <field name="menu_id" ref="menu_lecturer_portal_training" />
+            <field name="group_id" ref="res_group_portal_examiner" />
+            <field name="company_id" ref="base.main_company" />
+            <field name="home_action_id" ref="portal_lecturer_action_menu" />
+        </record>
+
+        <record model="portal.portal" id="partner_portal">
+            <field name="name">Training Partner Portal</field>
+            <field name="menu_id" ref="menu_partner_portal_training" />
+            <field name="group_id" ref="res_group_portal_partner" />
+            <field name="company_id" ref="base.main_company" />
+            <field name="home_action_id" ref="portal_partner_action_menu" />
+        </record>
+
+        <record model="portal.portal" id="supplier_portal">
+            <field name="name">Training Supplier Portal</field>
+            <field name="menu_id" ref="menu_supplier_portal_training" />
+            <field name="group_id" ref="res_group_portal_supplier" />
+            <field name="company_id" ref="base.main_company" />
+            <field name="home_action_id" ref="portal_supplier_action_menu" />
+        </record>
+
+        <record model="portal.portal" id="participant_portal">
+            <field name="name">Training Participant Portal</field>
+            <field name="menu_id" ref="participant_portal_training_mi" />
+            <field name="group_id" ref="res_group_portal_participant" />
+            <field name="company_id" ref="base.main_company" />
+            <field name="home_action_id" ref="portal_participant_menu_act" />
+        </record>
+    </data>
+</openerp>

=== added directory 'portal_training/security'
=== added file 'portal_training/security/groups.xml'
--- portal_training/security/groups.xml	1970-01-01 00:00:00 +0000
+++ portal_training/security/groups.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,10 @@
+<openerp>
+<data>
+
+  <record model="res.groups" id="group_training_portal_user_manager">
+    <field name="name">Training / Portal User Manager</field>
+    <field name="comment"></field>
+  </record>
+
+</data>
+</openerp>

=== added file 'portal_training/security/ir.model.access.csv'
--- portal_training/security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/security/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,2 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_training_portal_user_manager","base.res_users","base.model_res_users","portal_training.group_training_portal_user_manager",1,1,1,1

=== added file 'portal_training/security/rules.xml'
--- portal_training/security/rules.xml	1970-01-01 00:00:00 +0000
+++ portal_training/security/rules.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        
+        <!--
+        <record model="ir.rule.group" id="rule_grp_itself">
+            <field name="name">only itself</field>
+            <field name="model_id" ref="base.model_res_users" />
+            <field name="global" eval="False" />
+        </record>
+        <record model="ir.rule" id="rule_itself">
+            <field name="domain_force">[('id', '=', user.id)]</field>
+            <field name="rule_group" ref="rule_grp_itself"/>
+        </record>
+        
+        <record model="ir.rule.group" id="rule_grp_partner">
+            <field name="name">Same Partner</field>
+            <field name="model_id" ref="base.model_res_partner" />
+            <field name="global" eval="False" />
+        </record>
+        <record model="ir.rule" id="rule_partner">
+            <field name="domain_force">[('id', '=', user.address_id.partner_id.id)]</field>
+            <field name="rule_group" ref="rule_grp_partner"/>
+        </record>
+
+        <record model="ir.rule.group" id="rule_grp_partner_address">
+            <field name="name">Addresses Of Same Partner</field>
+            <field name="model_id" ref="base.model_res_partner_address" />
+            <field name="global" eval="False" />
+        </record>
+        <record model="ir.rule" id="rule_partner_address">
+            <field name="field_id" ref="base.field_res_partner_address_partner_id" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="rule_grp_partner_address"/>
+        </record>
+
+        <record model="ir.rule.group" id="rule_grp_partner_contact">
+            <field name="name">Contacts Of Same Partner</field>
+            <field name="model_id" ref="base_contact.model_res_partner_contact" />
+            <field name="global" eval="False" />
+        </record>
+        <record model="ir.rule" id="rule_partner_contact">
+            <field name="field_id" ref="base_contact.field_res_partner_contact_partner_id" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="rule_grp_partner_contact"/>
+        </record>
+
+        <record model="ir.rule.group" id="rule_grp_partner_job">
+            <field name="name">Jobs Of Same Partner</field>
+            <field name="model_id" ref="base_contact.model_res_partner_job" />
+            <field name="global" eval="False" />
+        </record>
+        <record model="ir.rule" id="rule_partner_job">
+            <field name="field_id" ref="base_contact.field_res_partner_job_name" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="rule_group" ref="rule_grp_partner_job"/>
+        </record>
+        -->
+
+    </data>
+</openerp>

=== added directory 'portal_training/subscription'
=== added file 'portal_training/subscription/__init__.py'
--- portal_training/subscription/__init__.py	1970-01-01 00:00:00 +0000
+++ portal_training/subscription/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,133 @@
+from osv import osv, fields
+
+import tools
+from tools.translate import _
+
+class training_subscription_basket(osv.osv):
+    _name = 'training.subscription.basket'
+
+    def name_get(self, cr, uid, ids, context=None):
+        res = []
+        for obj in self.browse(cr, uid, ids, context=context):
+            value = "%s - %s %s" % (obj.partner_id.name,
+                                    obj.contact_id.first_name,
+                                    obj.contact_id.name)
+            res.append((obj.id, value))
+        return res
+
+    _columns = {
+        'partner_id' : fields.many2one('res.partner', 'Partner', required=True, select=1),
+        'job_id' : fields.many2one('res.partner.job', 'Job', domain="[('name', '=', partner_id)]", required=True, select=1),
+        'contact_id' : fields.related('job_id', 'contact_id', type='many2one', relation='res.partner.contact', string='Contact', store=True, select=1),
+
+        #'period_start' : fields.date('Period Start'),
+        #'period_stop' : fields.date('Period Stop'),
+
+        #'type' : fields.selection([('limited', 'Limited Subscriptions'),
+        #                           ('unlimited', 'Unlimited Subscriptions')],
+        #                          'Type', required=True),
+
+        #'number_of_sub' : fields.integer('Number of Available Subscriptions'),
+
+        'active' : fields.boolean('Active'),
+
+        'subscription_line_ids' : fields.one2many('training.subscription.line', 'basket_id', 'Subscriptions', readonly=True),
+    }
+
+    _sql_constraints = [
+        ('uniq_basket', 'unique(partner_id, contact_id)', """The partner can fill a basket only for this contact"""),
+    ]
+
+    _defaults = {
+        #'type' : lambda *a: 'unlimited',
+        'active' : lambda *a: 1,
+        #'number_of_sub' : lambda *a: 1,
+    }
+
+training_subscription_basket()
+
+class training_subscription_line(osv.osv):
+    _inherit = 'training.subscription.line'
+
+    _columns = {
+        'basket_id' : fields.many2one('training.subscription.basket', 'Basket'),
+    }
+
+training_subscription_line()
+
+class training_subscription_participant_wizard(osv.osv_memory):
+    _name = 'training.subscription.participant.wizard'
+
+    _columns = {
+        'basket_id' : fields.many2one('training.subscription.basket', 'Basket', required=True),
+
+        'session_id' : fields.many2one('training.session', 'Session',
+                                       domain="[('kind', '!=', 'intra'),('state', 'in', ('opened', 'opened_confirmed')),('date', '>', current_date)]",
+                                       required=True),
+
+        'state' : fields.selection([('init', 'Init'),
+                                    ('subscribed', 'Subscribed')], 'State', readonly=True, required=True),
+    }
+
+    def default_get(self, cr, uid, fields, context=None):
+        basket_id = None
+
+        user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+
+        if user.contact_id:
+            proxy = self.pool.get('training.subscription.basket')
+            ids = proxy.search(cr, uid,
+                         [
+                             ('contact_id', '=', user.contact_id.id),
+                             ('active', '=', 1)
+                         ], context=context
+                        )
+
+            if len(ids) > 0:
+                basket_id = ids[0]
+            else:
+                raise osv.except_osv(_('Warning'),
+                                     _('You can not use this assistant because you do not have any basket'))
+
+        defaults = {
+            'state' : 'init',
+            'basket_id' : basket_id,
+        }
+
+        return defaults
+
+    def close_cb(self, cr, uid, ids, context=None):
+        return {'type' : 'ir.actions.act_window_close'}
+
+    def subscribe_cb(self, cr, uid, ids, context=None):
+        # We check if the participant can subscribe to a session
+
+        this = self.browse(cr, uid, ids[0], context=context)
+
+        user = self.pool.get('res.users').browse(cr, uid, uid, context=context)
+
+        values = {
+            'name' : '/',
+            'partner_id' : this.basket_id.partner_id.id,
+            'origin' : 'User Portal: %s "%s"' % (user.login, user.name)
+        }
+
+        proxy = self.pool.get('training.subscription')
+
+        vals = proxy.on_change_partner(cr, uid, [], this.basket_id.partner_id.id)
+
+        values.update(vals['value'])
+
+        subscription_id = proxy.create(cr, uid, values, context=context)
+
+        values = {
+            'session_id' : this.session_id.id,
+            'job_id' : this.basket_id.job_id.id,
+            'subscription_id' : subscription_id,
+            'basket_id' : this.basket_id.id,
+        }
+        self.pool.get('training.subscription.line').create(cr, uid, values, context=context)
+
+        return self.write(cr, uid, ids, {'state' : 'subscribed'}, context=context)
+
+training_subscription_participant_wizard()

=== added file 'portal_training/subscription/ir.model.access.csv'
--- portal_training/subscription/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/subscription/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,13 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"subscription_training_participation","training.participation","training.model_training_participation","res_group_portal_subscription",1,1,0,0
+"subscription_training_subscription","training.subscription","training.model_training_subscription","res_group_portal_subscription",1,1,1,0
+"subscription_training_subscription_line","training.subscription.line","training.model_training_subscription_line","res_group_portal_subscription",1,1,1,0
+"subscription_res_partner","res.partner","base.model_res_partner","res_group_portal_subscription",1,0,0,0
+"subscription_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_subscription",1,0,0,0
+"subscription_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_subscription",1,0,0,0
+"subscription_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_subscription",1,0,0,0
+"subscription_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_subscription",1,0,0,0
+"subscription_product_pricelist","product.pricelist","product.model_product_pricelist","res_group_portal_subscription",1,0,0,0
+"subscription_account_payment_term","account.payment.term","account.model_account_payment_term","res_group_portal_subscription",1,0,0,0
+"subscription_participant_wizard","training.subscription.participant.wizard","portal_training.model_training_subscription_participant_wizard","res_group_portal_subscription",1,1,1,0
+"subscription_training_subscription_basket","training.subscription.basket","portal_training.model_training_subscription_basket","res_group_portal_subscription",1,0,0,0

=== added file 'portal_training/subscription/menus.xml'
--- portal_training/subscription/menus.xml	1970-01-01 00:00:00 +0000
+++ portal_training/subscription/menus.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.actions.act_window" id="training_subscription_basket_act">
+            <field name="name">Baskets</field>
+            <field name="res_model">training.subscription.basket</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <!--
+        <act_window id="basket_subscription_rel"
+            name="Subscriptions"
+            src_model="" />
+            -->
+
+        <record model="ir.actions.act_window" id="basket_subscription_rel">
+            <field name="name">Subscriptions</field>
+            <field name="src_model">training.subscription.basket</field>
+            <field name="res_model">training.subscription.line</field>
+            <field name="domain">[('basket_id', '=', active_id)]</field>
+        </record>
+
+        <menuitem id="subscription_basket_mi" parent="training.training_subscription_management_mi" action="training_subscription_basket_act"/>
+
+        <record model="ir.actions.act_window" id="training_subscription_participant_wizard_act">
+            <field name="name">Make Subscription</field>
+            <field name="res_model">training.subscription.participant.wizard</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+        <menuitem
+            id="subscription_participant_wizard_mi"
+            parent="participant_subscriptions_mi"
+            action="training_subscription_participant_wizard_act"
+            groups="portal_training.res_group_portal_subscription"/>
+    </data>
+</openerp>
+

=== added file 'portal_training/subscription/security.xml'
--- portal_training/subscription/security.xml	1970-01-01 00:00:00 +0000
+++ portal_training/subscription/security.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="res.groups" id="res_group_portal_subscription">
+            <field name="name">Portal Participant Subscription Group</field>
+        </record>
+
+        <record model="ir.rule.group" id="portal_subscription_basket_rule_group">
+            <field name="name">Portal Subscription Invoice Rule</field>
+            <field name="model_id" search="[('model', '=', 'training.subscription.basket')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_subscription_basket_rule">
+            <field name="domain_force">[('contact_id', '=', user.contact_id.id),('active', '=', 1)]</field>
+            <field name="rule_group" ref="portal_subscription_basket_rule_group"/>
+            <field name="field_id" search="[('model', '=', 'training.subscription.basket'),('name', '=', 'contact_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.contact_id.id</field>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_subscription">
+            <field name="rule_groups" eval="[(6, 0, [ref('portal_subscription_basket_rule_group')])]" />
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/subscription/views.xml'
--- portal_training/subscription/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/subscription/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,106 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="training_subscription_basket_form">
+            <field name="name">training.subscription.basket.form</field>
+            <field name="model">training.subscription.basket</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Basket">
+                    <field name="partner_id" />
+                    <field name="job_id" context="{'partner_id' : partner_id}" />
+                    <!--
+                    <field name="period_start" />
+                    <field name="period_stop" />
+                    <field name="type" />
+                    <field name="number_of_sub"/>
+                    -->
+                    <field name="active" />
+                    <separator string="Subscription Lines" colspan="4" />
+                    <field name='subscription_line_ids' colspan="4" nolabel="1">
+                        <tree string="Subcription Lines">
+                            <field name="name" />
+                            <field name="contact_firstname" />
+                            <field name="contact_lastname" />
+                            <field name="job_email" />
+                            <field name="session_id" />
+                            <field name="session_date" />
+                            <field name="session_state" />
+                            <field name="state" />
+                        </tree>
+                        <form string="Subcription Line">
+                            <field name="name" />
+                            <separator string="Contact" colspan="4" />
+                            <field name="contact_firstname" />
+                            <field name="contact_lastname" />
+                            <field name="job_email" />
+                            <separator string="Session" colspan="4" />
+                            <field name="session_id" />
+                            <field name="session_date" />
+                            <field name="session_state" />
+                            <separator colspan="4" />
+                            <field name="state" />
+                        </form>
+                    </field>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="training_subscription_basket_tree">
+            <field name="name">training.subscription.basket.tree</field>
+            <field name="model">training.subscription.basket</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Baskets">
+                    <field name="partner_id" />
+                    <field name="job_id" />
+                    <!--
+                    <field name="period_start" />
+                    <field name="period_stop" />
+                    <field name="type" />
+                    <field name="number_of_sub"/>
+                    -->
+                    <field name="active" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="training_subscription_participant_wizard_form">
+            <field name="name">training.subscription.participant.wizard.form</field>
+            <field name="model">training.subscription.participant.wizard</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Make Subscription">
+                    <group states="init" colspan="4">
+                        <field name="basket_id" colspan="4" />
+                        <field name="session_id" colspan="4" />
+                    </group>
+                    <group states="subscribed" colspan="4" col="1">
+                        <label string="You are subscribed to the session !" />
+                    </group>
+                    <group colspan="4" col="5">
+                        <field name="state" invisible="1" />
+                        <button name="close_cb" string="Cancel" special="cancel" icon="gtk-cancel" type="object" states="init" />
+                        <button name="subscribe_cb" string="Make Subscription" icon="gtk-apply" type="object" states="init"/>
+                        <button name="close_cb" string="Close" special="cancel" icon="gtk-close" type="object" states="subscribed" />
+                    </group>
+                </form>
+            </field>
+        </record>
+
+        <act_window
+            id='res_partner_basket_rel'
+            name='Baskets'
+            src_model='res.partner'
+            res_model='training.subscription.basket'
+            domain="[('partner_id', '=', active_id)]" />
+
+        <act_window
+            id='res_partner_contact_basket_rel'
+            name='Baskets'
+            src_model='res.partner.contact'
+            res_model='training.subscription.basket'
+            domain="[('contact_id', '=', active_id)]" />
+
+    </data>
+</openerp>

=== added directory 'portal_training/supplier'
=== added file 'portal_training/supplier/actions.xml'
--- portal_training/supplier/actions.xml	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/actions.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,75 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.actions.act_window" id="purchase_order_line_all_act">
+            <field name="name">Orders</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state', '=', 'confirmed')]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_all_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="purchase_order_line_form_portal"/>
+            <field name="act_window_id" ref="purchase_order_line_all_act" />
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_all_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="purchase_order_line_tree_portal" />
+            <field name="act_window_id" ref="purchase_order_line_all_act" />
+        </record>
+
+        <record model="ir.actions.act_window" id="purchase_order_line_today_act">
+            <field name="name">Today's Orders</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state', '=', 'confirmed'),('seance_date','=', current_date)]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_today_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="purchase_order_line_form_portal"/>
+            <field name="act_window_id" ref="purchase_order_line_today_act" />
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_order_line_today_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="purchase_order_line_tree_portal" />
+            <field name="act_window_id" ref="purchase_order_line_today_act" />
+        </record>
+
+        <record model="ir.actions.act_window" id="projected_purchase_lines_all_act">
+            <field name="name">Seances Planning</field>
+            <field name="res_model">portal.projected.purchase.lines</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <record model="ir.actions.act_window" id="purchase_order_line_old_act">
+            <field name="name">History Orders</field>
+            <field name="res_model">purchase.order.line</field>
+            <field name="view_type">form</field>
+            <field name="domain">[('state', '=', 'done')]</field>
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_history_order_line_all_form_view">
+            <field name="sequence" eval="2"/>
+            <field name="view_mode">form</field>
+            <field name="view_id" ref="purchase_order_line_form_portal"/>
+            <field name="act_window_id" ref="purchase_order_line_old_act" />
+        </record>
+
+        <record model="ir.actions.act_window.view" id="purchase_history_order_line_all_tree_view">
+            <field name="sequence" eval="1"/>
+            <field name="view_mode">tree</field>
+            <field name="view_id" ref="purchase_order_line_tree_portal" />
+            <field name="act_window_id" ref="purchase_order_line_old_act" />
+        </record>
+
+    </data>
+</openerp>

=== added file 'portal_training/supplier/ir.model.access.csv'
--- portal_training/supplier/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,35 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"supplier_board","board.board","board.model_board_board","res_group_portal_supplier",1,0,0,0
+"supplier_account_invoice","account.invoice","account.model_account_invoice","res_group_portal_supplier",1,0,0,0
+"supplier_account_invoice_line","account.invoice.line","account.model_account_invoice_line","res_group_portal_supplier",1,0,0,0
+"supplier_account_journal","account.journal","account.model_account_journal","res_group_portal_supplier",1,0,0,0
+"supplier_account_move_line","account.move_line","account.model_account_move_line","res_group_portal_supplier",1,0,0,0
+"supplier_account_tax",","account.tax","account.model_account_tax","res_group_portal_supplier",1,0,0,0
+"supplier_document_price_component","document.price.component","training.model_document_price_component","res_group_portal_supplier",1,0,0,0
+"supplier_product_price_type","product.price.type","product.model_product_price_type","res_group_portal_supplier",1,1,1,1
+"supplier_mrp_procurement","mrp.procurement","mrp.model_mrp_procurement","res_group_portal_supplier",1,1,1,1
+"supplier_ir_attachment","ir.attachment","base.model_ir_attachment","res_group_portal_supplier",1,0,0,0
+"supplier_participation_stakeholder","training.participation.stakeholder","training.model_training_participation_stakeholder","res_group_portal_supplier",1,0,0,0
+"supplier_product_pricelist","product.pricelist","product.model_product_pricelist","res_group_portal_supplier",1,0,0,0
+"supplier_product_product","product.product","product.model_product_product","res_group_portal_supplier",1,0,0,0
+"supplier_product_template","product.template","product.model_product_template","res_group_portal_supplier",1,0,0,0
+"supplier_product_uom","product.uom","product.model_product_uom","res_group_portal_supplier",1,0,0,0
+"supplier_projected_purchase_lines","portal.projected.purchase.lines","model_portal_projected_purchase_lines","res_group_portal_supplier",1,0,0,0
+"supplier_purchase_order","purchase.order","purchase.model_purchase_order","res_group_portal_supplier",1,1,0,0
+"supplier_purchase_order_line","purchase.order.line","purchase.model_purchase_order_line","res_group_portal_supplier",1,1,0,0
+"supplier_stock_move","stock.move","stock.model_stock_move","res_group_portal_supplier",1,0,0,0
+"supplier_res_partner","res.partner","base.model_res_partner","res_group_portal_supplier",1,0,0,0
+"supplier_res_partner_address","res.partner.address","base.model_res_partner_address","res_group_portal_supplier",1,0,0,0
+"supplier_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","res_group_portal_supplier",1,0,0,0
+"supplier_res_partner_function","res.partner.function","base.model_res_partner_function","res_group_portal_supplier",1,0,0,0
+"supplier_res_partner_job","res.partner.job","base_contact.model_res_partner_job","res_group_portal_supplier",1,0,0,0
+"supplier_training_course","training.course","training.model_training_course","res_group_portal_supplier",1,0,0,0
+"supplier_training_group","training.group","training.model_training_group","res_group_portal_supplier",1,0,0,0
+"supplier_training_offer","training.offer","training.model_training_offer","res_group_portal_supplier",1,0,0,0
+"supplier_training_offer_kind","training.offer_kind","training.model_training_offer_kind","res_group_portal_supplier",1,0,0,0
+"supplier_training_course_kind","training.course.kind","training.model_training_course_kind","res_group_portal_supplier",1,0,0,0
+"supplier_training_seance","training.seance","training.model_training_seance","res_group_portal_supplier",1,0,0,0
+"supplier_training_seance_purchase_line","training.seance.purchase_line","training.model_training_seance_purchase_line","res_group_portal_supplier",1,0,0,0
+"supplier_training_session","training.session","training.model_training_session","res_group_portal_supplier",1,0,0,0
+"supplier_training_location","training.location","training_room.model_training_location","res_group_portal_supplier",1,0,0,0
+"supplier_training_course_theme","training.course.theme","training.model_training_course_theme","res_group_portal_supplier",1,0,0,0

=== added file 'portal_training/supplier/menus.xml'
--- portal_training/supplier/menus.xml	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/menus.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <menuitem name="Supplier Portal" id="menu_supplier_portal_training" parent="menu_portal_training" />
+
+        <record id="portal_supplier_action_menu" model="ir.actions.act_window">
+            <field eval="[(6,0,[])]" name="groups_id"/>
+            <field name="domain" eval="'[(\'parent_id\',\'=\','+str(ref('menu_supplier_portal_training'))+')]'"/>
+            <field name="target">current</field>
+            <field name="view_type">tree</field>
+            <field name="res_model">ir.ui.menu</field>
+            <field name="view_id" ref="base.view_menu"/>
+            <field eval="1" name="portal_visible"/>
+            <field name="view_mode">tree,form</field>
+            <field eval="80" name="limit"/>
+            <field name="context">{}</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="usage">menu</field>
+            <field name="name">Portal Supplier Menu</field>
+        </record>
+
+        <menuitem name="Supplier Portal" id="menu_portal_purchase_order_lines" parent="menu_supplier_portal_training" icon="terp-purchase" />
+
+        <menuitem action="purchase_order_line_today_act" parent="menu_portal_purchase_order_lines" id="supplier_portal_purchase_order_line_today_id" sequence="5"/>
+
+        <menuitem action="purchase_order_line_all_act" parent="menu_portal_purchase_order_lines" id="supplier_portal_purchase_order_line_id" sequence="10"/>
+
+        <menuitem action="projected_purchase_lines_all_act" parent="menu_portal_purchase_order_lines" id="projected_purchase_lines_all_mi" sequence="20"/>
+
+        <menuitem action="purchase_order_line_old_act" parent="menu_portal_purchase_order_lines" id="supplier_portal_purchase_order_line_old_id" sequence="30"/>
+    </data>
+</openerp>

=== added file 'portal_training/supplier/portal.xml'
--- portal_training/supplier/portal.xml	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/portal.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+
+        <record model="portal.model" id="model_purchase_order_line">
+            <field name="name">Purchase Order Line</field>
+            <field name="model_id" search="[('model', '=', 'purchase.order.line')]"/>
+            <field name="rule_group_id" ref="portal_supplier_rule_group" />
+            <field name="view_ids" eval="[(6, 0, [ref('purchase.purchase_order_line_tree'), ref('purchase_order_line_form_portal')])]"/>
+        </record>
+
+    <!-- Invoice
+
+        <record model="portal.model" id="model_supplier_invoices">
+            <field name="name">Invoices</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]"/>
+            <field name="rule_group_id" ref="portal_supplier_invoices_rule_group" />
+        </record>
+    -->
+
+        <record model="portal.model" id="model_supplier_projected_purchase_lines">
+            <field name="name">Projected Purchase Lines</field>
+            <field name="model_id" search="[('model', '=', 'portal.projected.purchase.lines')]"/>
+            <field name="rule_group_id" ref="portal_supplier_projected_purchase_lines_rule_group" />
+            <field name="view_ids" eval="[(6, 0, [ref('portal_projected_purchase_lines_tree'), ref('portal_projected_purchase_lines_form')])]"/>
+        </record>
+
+    </data>
+</openerp>

=== added file 'portal_training/supplier/security.xml'
--- portal_training/supplier/security.xml	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/security.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,107 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="name">Portal Supplier Group</field>
+        </record>
+
+        <record model="ir.rule.group" id="portal_supplier_wizard_rule_group">
+            <field name="name">Portal Supplier Wizard Rule Group</field>
+            <field name="model_id" ref="base.model_ir_actions_wizard" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_supplier_wizard_rule">
+            <field name="field_id" search="[('model', '=', 'ir.actions.wizard'),('name', '=', 'portal_visible')]" />
+            <field name="operator">=</field>
+            <field name="operand">True</field>
+            <field name="rule_group" ref="portal_supplier_wizard_rule_group" />
+        </record>
+
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="rule_groups" eval="[(4, ref('portal_supplier_wizard_rule_group'))]" />
+        </record>
+
+        <record model="ir.rule.group" id="portal_supplier_rule_group">
+            <field name="name">Portal Supplier Rule</field>
+            <field name="model_id" search="[('model', '=', 'purchase.order.line')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_supplier_purchase_order_line_rule">
+            <field name="field_id" search="[('model', '=', 'purchase.order.line'),('name', '=', 'order_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('order_id.partner_id.id', '=', user.address_id.partner_id.id)]</field>
+            <field name="rule_group" ref="portal_supplier_rule_group"/>
+        </record>
+        
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="rule_groups" eval="[(4, ref('portal_supplier_rule_group'))]" />
+        </record>
+
+    <!-- Invoice
+
+        <record model="ir.rule.group" id="portal_supplier_invoices_rule_group">
+            <field name="name">Portal Supplier Rule - Invoices</field>
+            <field name="model_id" search="[('model', '=', 'account.invoice')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_supplier_invoices_rule">
+            <field name="field_id" search="[('model', '=', 'account.invoice'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('partner_id.id', '=', user.address_id.partner_id.id)]</field>
+            <field name="rule_group" ref="portal_supplier_invoices_rule_group"/>
+        </record>
+        
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="rule_groups" eval="[(4, ref('portal_supplier_invoices_rule_group'))]" />
+        </record>
+    -->
+
+
+        <record model="ir.rule.group" id="portal_supplier_purchase_order_rule_group">
+            <field name="name">Portal Supplier Rule - Purchase Order</field>
+            <field name="model_id" search="[('model', '=', 'purchase.order')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_supplier_purchase_order_rule">
+            <field name="field_id" search="[('model', '=', 'purchase.order'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('partner_id.id', '=', user.address_id.partner_id.id)]</field>
+            <field name="rule_group" ref="portal_supplier_purchase_order_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="rule_groups" eval="[(4, ref('portal_supplier_purchase_order_rule_group'))]" />
+        </record>
+
+
+        <record model="ir.rule.group" id="portal_supplier_projected_purchase_lines_rule_group">
+            <field name="name">Portal Supplier Rule - Projected Purchase Lines</field>
+            <field name="model_id" search="[('model', '=', 'portal.projected.purchase.lines')]" model="ir.model" />
+            <field name="global" eval="False" />
+        </record>
+
+        <record model="ir.rule" id="portal_supplier_projected_purchase_lines_rule">
+            <field name="field_id" search="[('model', '=', 'portal.projected.purchase.lines'),('name', '=', 'partner_id')]" model="ir.model.fields" />
+            <field name="operator">=</field>
+            <field name="operand">user.address_id.partner_id.id</field>
+            <field name="domain_force">[('partner_id.id', '=', user.address_id.partner_id.id)]</field>
+            <field name="rule_group" ref="portal_supplier_projected_purchase_lines_rule_group"/>
+        </record>
+
+        <record model="res.groups" id="res_group_portal_supplier">
+            <field name="rule_groups" eval="[(4, ref('portal_supplier_projected_purchase_lines_rule_group'))]" />
+        </record>
+
+        <record model="ir.actions.wizard" id="purchase_manual.wizard_purchase_order_line_invoice">
+            <field name="portal_visible">False</field>
+        </record>
+    </data>
+</openerp>
+

=== added file 'portal_training/supplier/views.xml'
--- portal_training/supplier/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/supplier/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="portal_projected_purchase_lines_form">
+            <field name="name">portal.projected.purchase.lines.form</field>
+            <field name="model">portal.projected.purchase.lines</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Projected Purchase Line">
+                    <separator string="Projected Purchase Line Information" colspan="4" />
+                    <!--<field name="product_id" />-->
+                    <field name="purchase_line_qty" />
+                    <field name="partner_id" groups="base.user_root" />
+                    <notebook colspan="4">
+                        <page string="General">
+                            <field name="seance_id" link="0" />
+                            <field name="duration" />
+                            <field name="date" />
+                        </page>
+                        <page string="Notes">
+                            <field name="notes" colspan="4" nolabel="1" />
+                        </page>
+                    </notebook>
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="portal_projected_purchase_lines_tree">
+            <field name="name">portal.projected.purchase.lines.tree</field>
+            <field name="model">portal.projected.purchase.lines</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Projected Purchase Line">
+                    <field name="partner_id" groups="base.user_root" />
+                    <field name="seance_id" link="0" />
+                    <field name="date" />
+                    <field name="duration" />
+                    <!--<field name="product_id" />-->
+                    <field name="purchase_line_qty" />
+                    <field name="notes" />
+                </tree>
+            </field>
+        </record>
+
+        <record id="purchase_order_line_form_portal" model="ir.ui.view">
+            <field name="name">training.purchase.order.line.form.portal</field>
+            <field name="model">purchase.order.line</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="purchase.purchase_order_line_form"/>
+            <field name="priority">20</field>
+            <field name="arch" type="xml">
+                <data>
+                    <xpath expr="/form/group/field[@name='state']" position="after">
+                        <button name="cancel_cb" string="Disapprove" type="object" states="confirmed" />
+                        <button name="approved_cb" string="Approve" type="object" states="confirmed" />
+                    </xpath>
+
+                    <field name="product_id" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                        <attribute name="link">0</attribute>
+                        <attribute name="select">1</attribute>
+                    </field>
+                    <field name="product_uom" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+                    <field name="product_uom" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+                    <field name="product_qty" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+                    <field name="name" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+                    <field name="date_planned" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+                    <field name="price_unit" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                        <attribute name="link">0</attribute>
+                    </field>
+                    <field name="price_subtotal" position="attributes">
+                        <attribute name="attrs">{'readonly' : [('state', 'in', ['confirmed', 'done', 'cancel'])]}</attribute>
+                    </field>
+
+                    <notebook position="inside">
+                        <page string="Supplier Note">
+                            <field name="supplier_note" colspan="4" nolabel="1"/>
+                        </page>
+                    </notebook>
+                </data>
+            </field>
+        </record>
+
+        <record id="purchase_order_line_tree_portal" model="ir.ui.view">
+            <field name="name">training.purchase.order.line.tree.portal</field>
+            <field name="model">purchase.order.line</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree colors="red:seance_date&lt;time.strftime('%%Y-%%m-%%d', time.localtime(time.time() + 24*3600*3))" string="Purchase Order Lines">
+                    <field name="seance_date" select="1"/>
+                    <field name="seance_id_int" />
+                    <field name="seance_id" link="0"/>
+                    <field name="course_id" link="0"/>
+                    <field name="product_qty"/>
+                    <field name="product_id" link="0" select="1"/>
+                    <field name="name"/>
+                    <field name="price_unit"/>
+                    <field name="price_subtotal" sum="Total"/>
+                    <field name="delivery_location_id" link="0"/>
+                    <field name="state"/>
+                    <button name="approved_cb" string="Approve" type="object" states="confirmed" />
+                </tree>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added file 'portal_training/update.sql'
--- portal_training/update.sql	1970-01-01 00:00:00 +0000
+++ portal_training/update.sql	2011-03-17 09:14:35 +0000
@@ -0,0 +1,26 @@
+UPDATE ir_act_wizard SET portal_visible='False' 
+WHERE id = (
+    SELECT res_id FROM ir_model_data
+    WHERE name = 'wizard_purchase_order_line_invoice'
+      AND model = 'ir.actions.act_wizard'
+      AND module = 'purchase_manual'
+);
+
+UPDATE ir_act_report_xml SET portal_visible='False'
+WHERE id = (
+    SELECT res_id FROM ir_model_data 
+    WHERE name='report_purchase_quotation' 
+      AND model='ir.actions.report.xml' 
+      AND module = 'purchase'
+);
+
+UPDATE ir_act_report_xml SET portal_visible='False'
+WHERE model = 'training.participation'
+  AND report_name NOT IN (
+	'training.participation.report.w.notes',
+	'training.participation.exam.sheet.scanned',
+	'training.seance.questions.folder.report'
+  );
+
+UPDATE training_offer_kind SET portal_visible='False'
+WHERE code='intra';

=== added file 'portal_training/views.xml'
--- portal_training/views.xml	1970-01-01 00:00:00 +0000
+++ portal_training/views.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="contact_course_form">
+            <field name="name">training.contact.course.portal.form</field>
+            <field name="model">training.contact.course.portal</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Courses">
+                    <field name="course_id" select="1" />
+                    <field name="category_id" select="1" />
+                    <field name="type_id" select="1" />
+                    <field name="lang_id" select="1" />
+                </form>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="contact_course_tree">
+            <field name="name">training.contact.course.portal.form</field>
+            <field name="model">training.contact.course.portal</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Courses">
+                    <field name="course_id" />
+                    <field name="category_id" />
+                    <field name="type_id" />
+                    <field name="lang_id" />
+                    <field name="contact_id" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.actions.act_window" id="contact_course_all_act">
+            <field name="name">Courses</field>
+            <field name="res_model">training.contact.course.portal</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">tree,form</field>
+        </record>
+
+        <record model="ir.ui.view" id="portal_view_training_seance_participation_tree">
+            <field name="name">training.participation.tree</field>
+            <field name="model">training.participation</field>
+            <field name="type">tree</field>
+            <field name="priority">20</field>
+            <field name="arch" type="xml">
+                <tree string="Participations">
+                    <field name="date" />
+                    <field name="seance_id" />
+                    <field name="course_id" />
+                    <field name="duration" />
+                    <field name="contact_firstname" />
+                    <field name="contact_lastname" />
+                    <field name="present" />
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="portal_view_training_exam_participation_tree">
+            <field name="name">training.participation.tree</field>
+            <field name="model">training.participation</field>
+            <field name="type">tree</field>
+            <field name="priority">20</field>
+            <field name="arch" type="xml">
+                <tree string="Participations">
+                    <field name="date" />
+                    <field name="seance_id" />
+                    <field name="duration" />
+                    <field name="contact_firstname" />
+                    <field name="contact_lastname" />
+                    <field name="present" />
+                    <field name="course_questionnaire_id" />
+                    <field name="result_received"/>
+                    <field name="result" />
+                    <field name="succeeded" />
+                </tree>
+            </field>
+        </record>
+
+
+    </data>
+</openerp>

=== added directory 'profile_training'
=== added file 'profile_training/__init__.py'
--- profile_training/__init__.py	1970-01-01 00:00:00 +0000
+++ profile_training/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,25 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+import profile_training

=== added file 'profile_training/__terp__.py'
--- profile_training/__terp__.py	1970-01-01 00:00:00 +0000
+++ profile_training/__terp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,51 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+{
+    'name' : 'Training Profile',
+    'version' : '0.2',
+    'author' : 'Tiny SPRL - Thamini S.à.R.L',
+    'website' : 'http://www.openerp.com',
+    'description' : """Profile for the training management.
+With this profile the training management will be installed and you can have
+the choice to install the examn management and the room management""",
+    'depends' : [
+        'training',
+        'base_contact_crm',
+        'crm_configuration',
+        'crm',
+        'mrp',
+    ],
+    'init_xml' : [
+    ],
+    'demo_xml' : [
+    ],
+    'update_xml' : [
+        'profile_training.xml',
+    ],
+    'active' : False,
+    'installable' : True,
+    'category' : 'Profile',
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added directory 'profile_training/i18n'
=== added file 'profile_training/i18n/fr_FR.po'
--- profile_training/i18n/fr_FR.po	1970-01-01 00:00:00 +0000
+++ profile_training/i18n/fr_FR.po	2011-03-17 09:14:35 +0000
@@ -0,0 +1,113 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* profile_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-06-15 14:09:48+0000\n"
+"PO-Revision-Date: 2009-06-15 16:39+0100\n"
+"Last-Translator: \n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: \n"
+
+#. module: profile_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: profile_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: profile_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: profile_training
+#: model:ir.module.module,description:profile_training.module_meta_information
+msgid ""
+"Profile for the training management.\n"
+"With this profile the training management will be installed and you can have \n"
+"the choice to install the examn management and the room management"
+msgstr ""
+"Profil pour la gestion de formations.\n"
+"Ce profil installe la gestion de formations et vous proposera d'installer le support pour la gestion des examens et des salles de formations (facultatif)"
+
+#. module: profile_training
+#: model:ir.actions.act_window,name:profile_training.action_config_install_module
+msgid "Training Profile : Install Extra Modules"
+msgstr "Profil gestion de formations: installation de modules supplémentaires"
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Training Management"
+msgstr "Gestion de formations"
+
+#. module: profile_training
+#: model:ir.actions.todo,note:profile_training.config_install_wizard
+msgid "Install more modules. A few modules are proposed according to the Training Profile you selected. You will be able to install them based on our requirements."
+msgstr "Installer des modules supplémentaires. Des modules facultatifs vous seront proposé en installation d'après le profil \"Gestion de Formation\" que vous avez sélectionné."
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,training_exam:0
+msgid "Training Exams"
+msgstr "Examens"
+
+#. module: profile_training
+#: model:ir.model,name:profile_training.model_profile_training_config_install_modules_wizard
+msgid "profile.training.config.install_modules_wizard"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Portal"
+msgstr "Portail"
+
+#. module: profile_training
+#: model:ir.actions.act_window,name:profile_training.contact_by_team_act
+#: model:ir.ui.menu,name:profile_training.contact_by_team_mi
+msgid "Contacts By Team"
+msgstr "Contacts par cercle de qualité"
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Install"
+msgstr "Installer"
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,portal_training:0
+msgid "Portal Training"
+msgstr "Portail formateur"
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,training_room:0
+msgid "Training Rooms"
+msgstr "Salles de formation"
+
+#. module: profile_training
+#: model:ir.module.module,shortdesc:profile_training.module_meta_information
+msgid "Profile Training"
+msgstr "Profil gestion de formations"
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Install Extra Module"
+msgstr "Installer des modules supplémentaires"
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,name:0
+msgid "Name"
+msgstr "Nom"
+

=== added file 'profile_training/i18n/profile_training.pot'
--- profile_training/i18n/profile_training.pot	1970-01-01 00:00:00 +0000
+++ profile_training/i18n/profile_training.pot	2011-03-17 09:14:35 +0000
@@ -0,0 +1,110 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* profile_training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.1\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2009-06-15 14:09:48+0000\n"
+"PO-Revision-Date: 2009-06-15 14:09:48+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: profile_training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr ""
+
+#. module: profile_training
+#: constraint:ir.model:0
+msgid "The Object name must start with x_ and not contain any special character !"
+msgstr ""
+
+#. module: profile_training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr ""
+
+#. module: profile_training
+#: model:ir.module.module,description:profile_training.module_meta_information
+msgid "Profile for the training management.\n"
+"With this profile the training management will be installed and you can have \n"
+"the choice to install the examn management and the room management"
+msgstr ""
+
+#. module: profile_training
+#: model:ir.actions.act_window,name:profile_training.action_config_install_module
+msgid "Training Profile : Install Extra Modules"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Training Management"
+msgstr ""
+
+#. module: profile_training
+#: model:ir.actions.todo,note:profile_training.config_install_wizard
+msgid "Install more modules. A few modules are proposed according to the Training Profile you selected. You will be able to install them based on our requirements."
+msgstr ""
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,training_exam:0
+msgid "Training Exams"
+msgstr ""
+
+#. module: profile_training
+#: model:ir.model,name:profile_training.model_profile_training_config_install_modules_wizard
+msgid "profile.training.config.install_modules_wizard"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Portal"
+msgstr ""
+
+#. module: profile_training
+#: model:ir.actions.act_window,name:profile_training.contact_by_team_act
+#: model:ir.ui.menu,name:profile_training.contact_by_team_mi
+msgid "Contacts By Team"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Install"
+msgstr ""
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,portal_training:0
+msgid "Portal Training"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Cancel"
+msgstr ""
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,training_room:0
+msgid "Training Rooms"
+msgstr ""
+
+#. module: profile_training
+#: model:ir.module.module,shortdesc:profile_training.module_meta_information
+msgid "Profile Training"
+msgstr ""
+
+#. module: profile_training
+#: view:profile.training.config.install_modules_wizard:0
+msgid "Install Extra Module"
+msgstr ""
+
+#. module: profile_training
+#: field:profile.training.config.install_modules_wizard,name:0
+msgid "Name"
+msgstr ""
+

=== added file 'profile_training/profile_training.py'
--- profile_training/profile_training.py	1970-01-01 00:00:00 +0000
+++ profile_training/profile_training.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,79 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+from osv import fields, osv
+import pooler
+
+class profile_training_config_install_modules_wizard(osv.osv_memory):
+    _name='profile.training.config.install_modules_wizard'
+    _description = 'Configuration Wizard for the profile Training'
+    
+    _columns = {
+        'name':fields.char('Name', size=64),
+        'training_exam': fields.boolean('Exams Management', help='Allows to sell subscription to exams and manage the questions, the answers and the certificates'),
+        'training_evaluation' : fields.boolean('Evaluation Management', help='Allows to manage the evaluations about the courses or the lecturer'),
+        'mrp_jit': fields.boolean('Real Time Purchases', help='Install the mrp_jit modules that does real time planifications of procurement for training materials.'),
+        'training_exam_processing' : fields.boolean('Exams Automatic Corrections', help='With a scanner you can use the document processing for the exams of your participants'),
+        'training_room': fields.boolean('Training Rooms', help='Add the possibility to manage reservations on your rooms'),
+        'training_intra' : fields.boolean('Customised Trainings', help='Allows to manage customized training offers relying on budgets, timesheet reinvoicing, etc.'),
+        'training_report' : fields.boolean('Training Reports', help='Control your sales, subscriptions, participations and gross/net margins on courses.'),
+        'portal_training': fields.boolean('Portal Training', help='Allows to give acces to your participants and suppliers.'),
+        'board_training' : fields.boolean('Board Training'),
+        'board_training_intra' : fields.boolean('Board for Customised Trainings'),
+        'warning_training' : fields.boolean('Warning Training'),
+        'training_degree' : fields.boolean('Training Degree'),
+    }
+
+    def action_cancel(self,cr,uid,ids,conect=None):
+        return {
+                'view_type': 'form',
+                "view_mode": 'form',
+                'res_model': 'ir.actions.configuration.wizard',
+                'type': 'ir.actions.act_window',
+                'target':'new',
+         }
+
+    def action_install(self, cr, uid, ids, context=None):
+        result=self.read(cr,uid,ids)
+        mod_obj = self.pool.get('ir.module.module')
+        for res in result:
+            for r in res:
+                if r<>'id' and res[r]:
+                    ids += mod_obj.search(cr, uid, [('name', '=', r)])
+                    mod_obj.button_install(cr, uid, ids, context=context)
+        cr.commit()
+        db, pool = pooler.restart_pool(cr.dbname,update_module=True)
+        return {
+                'view_type': 'form',
+                "view_mode": 'form',
+                'res_model': 'ir.actions.configuration.wizard',
+                'type': 'ir.actions.act_window',
+                'target':'new',
+            }
+
+
+profile_training_config_install_modules_wizard()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
+

=== added file 'profile_training/profile_training.xml'
--- profile_training/profile_training.xml	1970-01-01 00:00:00 +0000
+++ profile_training/profile_training.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,86 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data>
+        <record id="view_confirm_install_module_form" model="ir.ui.view">
+            <field name="name">Training Profile : Install extra modules</field>
+            <field name="model">profile.training.config.install_modules_wizard</field>
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <form string="Install Extra Module">
+                    <separator string="Training Management" colspan="4"/>
+                    <field name="training_room" />
+                    <field name="training_intra" />
+                    <separator string="Exam Management" colspan="4"/>
+                    <field name="training_exam" />
+                    <field name="training_degree" />
+                    <field name="training_exam_processing" />
+                    <separator string="Evaluation Management"  colspan="4" />
+                    <field name="training_evaluation" />
+                    <separator string="Customers and Suppliers" colspan="4" />
+                    <field name="portal_training" />
+                    <field name="mrp_jit" />
+                    <separator string="Reporting" colspan="4" />
+                    <field name="board_training" />
+                    <field name="board_training_intra" />
+                    <field name="training_report" />
+                    <separator string="Warning" colspan="4" />
+                    <field name="warning_training" />
+                    <newline />
+                    <separator string="" colspan="4"/>
+                    <label string="" colspan="2"/>
+                    <group col="4" colspan="2">
+                        <button special="cancel" string="Cancel" name="action_cancel" type="object" icon='gtk-cancel'/>
+                        <button name="action_install" string="Install" icon='gtk-ok' type="object"/>
+                    </group>
+                </form>
+            </field>
+        </record>
+
+        <record id="action_config_install_module" model="ir.actions.act_window">
+            <field name="name">Training Profile : Install Extra Modules</field>
+            <field name="type">ir.actions.act_window</field>
+            <field name="res_model">profile.training.config.install_modules_wizard</field>
+            <field name="view_type">form</field>
+            <field name="view_mode">form</field>
+            <field name="target">new</field>
+        </record>
+
+        <record model="ir.actions.todo" id="profile_training.config_install_wizard">
+            <field name="name">Training Profile : Install Extra modules</field>
+            <field name="note">Install more modules. A few modules are proposed according to the Training Profile you selected. You will be able to install them based on our requirements.</field>
+            <field name="action_id" ref="action_config_install_module"/>
+        </record>
+    </data>
+    <data>
+        <!--
+        Members dans la zone team me semble être un duplicata de Contacts By Team
+        <act_window 
+            id="res_partner_team_members" 
+            name="Members" 
+            src_model="res.partner.team" 
+            res_model="res.partner"
+            />
+        -->
+
+        <!--
+        <record model="ir.values" id="res_partner_team_values_tree">
+            <field name="key2">tree_but_open</field>
+            <field name="model">res.partner.team</field>
+            <field name="name">Contacts By Team</field>
+            <field name="value" eval="'ir.actions.act_window,%d'%ref('base_contact.action_partner_contact_form')" />
+            <field name="object" eval="True"/>
+        </record>
+        -->
+
+        <record model="ir.actions.act_window" id="contact_by_team_act">
+            <field name="name">Contacts By Team</field>
+            <field name="res_model">res.partner.team</field>
+            <field name="view_type">tree</field>
+            <field name="view_id" ref="base_contact_team.res_partner_team_tree" />
+        </record>
+
+        <menuitem parent="base_contact_team.res_partner_team_all_mi" id="contact_by_team_mi"
+            action="contact_by_team_act" />
+    </data>
+
+</openerp>

=== added directory 'training'
=== added file 'training/__init__.py'
--- training/__init__.py	1970-01-01 00:00:00 +0000
+++ training/__init__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,37 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution	
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+import product
+import partner
+import res_groups
+import invoice
+import training_email
+import training
+import training_holiday
+import report
+import wizard
+import training_content_review
+
+import document_price
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'training/__openerp__.py'
--- training/__openerp__.py	1970-01-01 00:00:00 +0000
+++ training/__openerp__.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,120 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+
+{
+    'name' : 'Training Management',
+    'version' : '0.6',
+    'author' : 'Tiny SPRL - Thamini S.à.R.L',
+    'website' : 'http://www.openerp.com',
+    'description' : """
+From the conception of a project to the elaboration of your catalog, our training management allows you to create easily courses and to organize the sessions.
+With the analytic account support, you can know the costs of your trainings.
+
+* Manage the subscriptions
+* Manage the courses
+* Manage the offers (for a planning)
+* Manage the sessions
+* Manage the support of course
+""",
+    'depends' : [
+        'base',
+        'core_config',
+        'base_contact_team',
+        'decimal_precision',
+        'base_iban',
+        'account',
+        'account_payment',
+        'purchase',
+        'purchase_analytic_plans',
+        'product',
+        'mrp',
+        'smtpclient',
+        'product',
+        'sale',
+        'document',
+        'document_type',
+        'procurement',
+        'account_analytic_plans',
+        'base_contact_training',
+    ],
+    'init_xml' : [
+        'training_sequence.xml',
+        'training_data.xml',
+    ],
+    'demo_xml' : [
+        'demo/training_course_type.xml',
+        'demo/training_course_category.xml',
+        'demo/training_course_theme.xml',
+        'demo/training_course.xml',
+        'demo/training_offer.xml',
+        'demo/training_catalog.xml',
+#        'demo/training_session.xml',
+#        'demo/training_seance.xml',
+    ],
+    'update_xml' : [
+        'training_config.xml',
+        'security/training_security.xml',
+        'security/roles.xml',
+        'security/ir.model.access.csv',
+        'wizard/training_subscription_session.xml',
+        'wizard/validate_course_view.xml',
+        'wizard/training_subscription_line_confirm.xml',
+        'wizard/training_create_offer.xml',
+        'wizard/training_create_blockl_offer.xml',
+        'wizard/training_subscription_second_line.xml',
+        # TODO move this into the base_contact module
+        'contact_security/groups.xml',
+        'contact_security/ir.model.access.csv',
+
+        'document_type_data.xml',
+        'product_view.xml',
+        'purchase_view.xml',
+        'partner_view.xml',
+        'base_contact_view.xml',
+        'training_view.xml',
+        'training_content_review_view.xml',
+        'training_wizard.xml',
+        'wizard/wizard_create_session_view.xml',
+        'invoice_view.xml',
+        'training_report.xml',
+        'workflow/catalog.xml',
+        'workflow/course.xml',
+        'workflow/offer.xml',
+        'workflow/seance.xml',
+        'workflow/session.xml',
+        'workflow/subscription.xml',
+        'workflow/subscription_line.xml',
+        'workflow/participation_sh_request.xml',
+        'workflow/participation_sh.xml',
+        'workflow/invoice.xml',
+        'workflow/training_content_review.xml',
+        'training_email_view.xml',
+        'training_holiday_view.xml',
+        'document_price_view.xml',
+    ],
+    'active' : False,
+    'installable' : True,
+}
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:

=== added file 'training/base_contact_view.xml'
--- training/base_contact_view.xml	1970-01-01 00:00:00 +0000
+++ training/base_contact_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model="ir.ui.view" id="res_partner_contact_form_inherit">
+            <field name="name">res.partner.contact.form.inherit</field>
+            <field name="model">res.partner.contact</field>
+            <field name="inherit_id" ref="base_contact.view_partner_contact_form" />
+            <field name="type">form</field>
+            <field name="arch" type="xml">
+                <data>
+                    <field name="birthdate" position="after">
+                        <field name="education_level" />
+                        <field name="birthplace" />
+                        <field name="matricule" />
+                    </field>
+                    <xpath expr="/form/notebook/page[@string='General']/field[@name='job_ids']/form/group/field[@name='state']" position="after">
+                        <field name="team_id" />
+                        <field name="external_matricule" />
+                        <field name="departments" colspan="4" />
+                        <field name="orientation" colspan="4" />
+                    </xpath>
+                    <xpath expr="/form/notebook/page[@string='General']/field[@name='job_ids']/form/group/field[@name='address_id']" position="attributes">
+                        <attribute name="required">1</attribute>
+                    </xpath>
+                    <xpath expr="/form/notebook/page[@string='General']/field[@name='job_ids']/tree/field[@name='name']" position="after">
+                        <field name="team_id" />
+                    </xpath>
+                    <notebook position="inside">
+                        <page string="Linguistic Skills">
+                            <separator string="Linguistic Skills" colspan="4" />
+                            <field name="linguistic_skill_ids" nolabel="1" colspan="4"/>
+                        </page>
+                    </notebook>
+                </data>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added directory 'training/contact_security'
=== added file 'training/contact_security/groups.xml'
--- training/contact_security/groups.xml	1970-01-01 00:00:00 +0000
+++ training/contact_security/groups.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="utf-8"?>
+<openerp>
+    <data noupdate="0">
+        <record id="group_contact_manager" model="res.groups">
+            <field name="name">Partner Contact Manager</field>
+        </record>
+    </data>
+</openerp>
+

=== added file 'training/contact_security/ir.model.access.csv'
--- training/contact_security/ir.model.access.csv	1970-01-01 00:00:00 +0000
+++ training/contact_security/ir.model.access.csv	2011-03-17 09:14:35 +0000
@@ -0,0 +1,9 @@
+"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
+"access_res_partner_contact","res.partner.contact","base_contact.model_res_partner_contact","group_contact_manager",1,1,1,1
+"access_res_partner_job","res.partner.job","base_contact.model_res_partner_job","group_contact_manager",1,1,1,1
+
+"access_res_partner_address","res.partner.address","base.model_res_partner_address","group_contact_manager",1,1,0,0
+"access_res_partner","res.partner","base.model_res_partner","group_contact_manager",1,0,0,0
+"access_training_participation_contact_manager","training.participation","model_training_participation","group_contact_manager",1,1,0,0
+"access_subscription_line_contact_manager","training.subscription.line","model_training_subscription_line","group_contact_manager",1,1,0,0
+"access_training_course_theme_contact_manager","training.course.theme","model_training_course_theme","group_contact_manager",1,0,0,0

=== added directory 'training/demo'
=== added file 'training/demo/training_catalog.xml'
--- training/demo/training_catalog.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_catalog.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data>
+        <record id="training_catalog_0" model="training.catalog">
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field eval="time.strftime('Catalog %Y')" name="name" />
+            <field eval="time.strftime('%Y')" name="year"/>
+        </record>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.catalog" ref="training_catalog_0"/>
+    </data>
+</openerp>

=== added file 'training/demo/training_course.xml'
--- training/demo/training_course.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_course.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,333 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data noupdate="1">
+        <record id="training_course_openerpcrm0" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field name="category_id" ref="training_course_category_functionaluser0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - CRM&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpaccounting0" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field name="category_id" ref="training_course_category_functionaluser0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Accounting&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpaccounting1" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_functionaluser0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Functional User / Open ERP 5.0 - Accounting&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Accounting&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpaccounting1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpaccounting2" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_functionaluser0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Functional User / Open ERP 5.0 - Accounting&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Accounting&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpaccounting2" model="training.course">
+            <field eval="4.0" name="duration_without_children"/>
+            <field name="course_type_id" ref="training_course_type_expert0"/>
+        </record>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpaccounting2"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpaccounting0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpcrm0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpaccounting1"/>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_economicmodelofopenerp0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="4.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Economic Model of Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_business0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_economicmodelofopenerp1" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="4.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_business0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Business / Economic Model of Open ERP&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Economic Model of Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_economicmodelofopenerp1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field eval="&quot;&quot;&quot;How to sale Open ERP&quot;&quot;&quot;" name="name"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_howtoinstallopenerp0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;How to install Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_integrator0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_howtoinstallopenerp0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field eval="&quot;&quot;&quot;How to configure Open ERP&quot;&quot;&quot;" name="name"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_howtoconfigureopenerp0" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_integrator0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Integrator / How to configure Open ERP&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;How to configure Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_howtoconfigureopenerp0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="&quot;&quot;&quot;How to install Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="4.0" name="duration_without_children"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_howtoconfigureopenerp0" model="training.course">
+            <field eval="8.0" name="duration_without_children"/>
+            <field eval="&quot;&quot;&quot;How to extend Open ERP&quot;&quot;&quot;" name="name"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_howtoconfigureopenerp0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_expert0"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_howtoinstallopenerp1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="4.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;How to install Open ERP&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_integrator0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpetiny0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="8.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - eTiny&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_developer0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpopenofficereportdesigner0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="4.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Open Office Report Designer&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_integrator0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpopenofficereportdesigner1" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="4.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_integrator0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Integrator / Open ERP 5.0 - Open Office Report Designer&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Open Office Report Designer&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpopenofficereportdesigner1" model="training.course">
+            <field name="category_id" ref="training_course_category_developer0"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpopenofficereportdesigner1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Modules&quot;&quot;&quot;" name="name"/>
+            <field eval="96.0" name="duration_without_children"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpopenofficereportdesigner1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_basic0"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Open Office Report Designer&quot;&quot;&quot;" name="name"/>
+            <field eval="4.0" name="duration_without_children"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpmodules0" model="training.course">
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field eval="96.0" name="duration_without_children"/>
+            <field eval="0" name="has_support"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Modules&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state_course"/>
+            <field name="category_id" ref="training_course_category_developer0"/>
+            <field name="lang_id" ref="base.lang_en"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpmodules1" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="96.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_developer0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Developer / Open ERP 5.0 - Modules&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_advanced0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Modules&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpmodules1" model="training.course">
+            <field name="course_type_id" ref="training_course_type_expert0"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Extend the server&quot;&quot;&quot;" name="name"/>
+            <field eval="16.0" name="duration_without_children"/>
+        </record>
+    </data>
+    <data noupdate="1">
+        <record id="training_course_openerpextendtheserver0" model="training.course">
+            <field eval="[(6,0,[])]" name="lecturer_ids"/>
+            <field name="company_currency_id" ref="base.EUR"/>
+            <field eval="1" name="active"/>
+            <field eval="16.0" name="duration_without_children"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="category_id" ref="training_course_category_developer0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field name="lang_id" ref="base.lang_en"/>
+            <field eval="&quot;&quot;&quot;Open ERP / Developer / Open ERP 5.0 - Extend the server&quot;&quot;&quot;" name="complete_name"/>
+            <field eval="&quot;&quot;&quot;normal&quot;&quot;&quot;" name="type"/>
+            <field name="course_type_id" ref="training_course_type_expert0"/>
+            <field name="user_id" ref="base.user_root"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Extend the server&quot;&quot;&quot;" name="name"/>
+            <field eval="&quot;&quot;&quot;validated&quot;&quot;&quot;" name="state_course"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_course_openerpextendtheserver0" model="training.course">
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Extend the client&quot;&quot;&quot;" name="name"/>
+        </record>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpextendtheserver0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpmodules1"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_economicmodelofopenerp0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_economicmodelofopenerp1"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_howtoconfigureopenerp0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpetiny0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpopenofficereportdesigner0"/>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.course" ref="training_course_openerpmodules0"/>
+    </data>
+</openerp>

=== added file 'training/demo/training_course_category.xml'
--- training/demo/training_course_category.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_course_category.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,28 @@
+<?xml version="1.0" ?>
+<openerp>
+	<data>
+		<record id="training_course_category_openerp0" model="training.course_category">
+			<field eval="'Open ERP'" name="name"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_category_functionaluser0" model="training.course_category">
+			<field eval="'Functional User'" name="name"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_category_integrator0" model="training.course_category">
+			<field eval="'Integrator'" name="name"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_category_developer0" model="training.course_category">
+			<field eval="'Developer'" name="name"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_category_business0" model="training.course_category">
+			<field eval="'Business'" name="name"/>
+		</record>
+	</data>
+</openerp>

=== added file 'training/demo/training_course_theme.xml'
--- training/demo/training_course_theme.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_course_theme.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<openerp>
+    <data>
+        <record id="training_course_theme_0" model="training.course.theme">
+            <field name="name">Functional</field>
+            <field name="active">True</field>
+        </record>
+        <record id="training_course_theme_1" model="training.course.theme">
+            <field name="name">Technical</field>
+            <field name="active">True</field>
+        </record>
+    </data>
+</openerp>

=== added file 'training/demo/training_course_type.xml'
--- training/demo/training_course_type.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_course_type.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,24 @@
+<?xml version="1.0" ?>
+<openerp>
+	<data>
+		<record id="training_course_type_basic0" model="training.course_type">
+			<field eval="10" name="max_limit"/>
+			<field eval="&quot;&quot;&quot;Basic&quot;&quot;&quot;" name="name"/>
+			<field eval="5" name="min_limit"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_type_advanced0" model="training.course_type">
+			<field eval="10" name="max_limit"/>
+			<field eval="&quot;&quot;&quot;Advanced&quot;&quot;&quot;" name="name"/>
+			<field eval="5" name="min_limit"/>
+		</record>
+	</data>
+	<data>
+		<record id="training_course_type_expert0" model="training.course_type">
+			<field eval="5" name="max_limit"/>
+			<field eval="&quot;&quot;&quot;Expert&quot;&quot;&quot;" name="name"/>
+			<field eval="3" name="min_limit"/>
+		</record>
+	</data>
+</openerp>

=== added file 'training/demo/training_offer.xml'
--- training/demo/training_offer.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_offer.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,120 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data noupdate="1">
+        <record id="product_product_coursesession0" model="product.product">
+            <field eval="&quot;&quot;&quot;buy&quot;&quot;&quot;" name="supply_method"/>
+            <field eval="1.0" name="list_price"/>
+            <field eval="0" name="track_production"/>
+            <field eval="1.0" name="standard_price"/>
+            <field name="uom_id" ref="product.product_uom_unit"/>
+            <field eval="&quot;&quot;&quot;service&quot;&quot;&quot;" name="type"/>
+            <field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="cost_method"/>
+            <field eval="1.0" name="uos_coeff"/>
+            <field eval="1" name="sale_ok"/>
+            <field eval="1" name="purchase_ok"/>
+            <field eval="0" name="track_outgoing"/>
+            <field name="company_id" ref="base.main_company"/>
+            <field name="uom_po_id" ref="product.product_uom_unit"/>
+            <field eval="1.0" name="price_margin"/>
+            <field eval="0" name="track_incoming"/>
+            <field name="property_stock_production" ref="stock.location_production"/>
+            <field eval="[(6,0,[])]" name="supplier_taxes_id"/>
+            <field eval="&quot;&quot;&quot;make_to_order&quot;&quot;&quot;" name="procure_method"/>
+            <field eval="1" name="active"/>
+            <field name="property_stock_inventory" ref="stock.location_inventory"/>
+            <field name="property_stock_procurement" ref="stock.location_procurement"/>
+            <field eval="&quot;&quot;&quot;Course Session&quot;&quot;&quot;" name="name"/>
+            <field eval="0" name="rental"/>
+            <field eval="&quot;&quot;&quot;fixed&quot;&quot;&quot;" name="mes_type"/>
+            <field eval="7.0" name="sale_delay"/>
+            <field name="categ_id" ref="product.product_category_services"/>
+            <field eval="[(6,0,[])]" name="taxes_id"/>
+            <field eval="1.0" name="produce_delay"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_offer_openerpintegrator0" model="training.offer">
+            <field name="lang_id" ref="base.lang_en" />
+            <field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+            <field name="product_id" ref="product_product_coursesession0"/>
+            <field name="product_line_id" ref="training_course_category_integrator0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field eval="&quot;&quot;&quot;This offer helps an integrator to launch his Open ERP activity&quot;&quot;&quot;" name="objective"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Integrator&quot;&quot;&quot;" name="name"/>
+        </record>
+
+        <record model="training.course.offer.rel" id="training_course_offer_rel_0">
+            <field name="course_id" eval="ref('training_course_howtoconfigureopenerp0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpintegrator0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_1">
+            <field name="course_id" eval="ref('training_course_economicmodelofopenerp1')" />
+            <field name="offer_id" eval="ref('training_offer_openerpintegrator0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_2">
+            <field name="course_id" eval="ref('training_course_openerpetiny0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpintegrator0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_3">
+            <field name="course_id" eval="ref('training_course_openerpopenofficereportdesigner0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpintegrator0')" />
+        </record>
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.offer" ref="training_offer_openerpintegrator0"/>
+    </data>
+    <data>
+        <record id="training_offer_openerpbusiness0" model="training.offer">
+            <field name="lang_id" ref="base.lang_en" />
+            <field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Business&quot;&quot;&quot;" name="name"/>
+            <field name="product_id" ref="product_product_coursesession0"/>
+            <field name="product_line_id" ref="training_course_category_business0"/>
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_4">
+            <field name="course_id" eval="ref('training_course_openerpcrm0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpbusiness0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_5">
+            <field name="course_id" eval="ref('training_course_economicmodelofopenerp0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpbusiness0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_6">
+            <field name="course_id" eval="ref('training_course_economicmodelofopenerp1')" />
+            <field name="offer_id" eval="ref('training_offer_openerpbusiness0')" />
+        </record>
+
+    </data>
+    <data>
+        <workflow action="signal_validate" model="training.offer" ref="training_offer_openerpbusiness0"/>
+    </data>
+    <data>
+        <record id="training_offer_openerpbusiness0" model="training.offer">
+            <field name="product_id" ref="product_product_coursesession0"/>
+        </record>
+    </data>
+    <data>
+        <record id="training_offer_openerpdeveloper0" model="training.offer">
+            <field name="lang_id" ref="base.lang_en" />
+            <field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+            <field name="product_id" ref="product_product_coursesession0"/>
+            <field eval="&quot;&quot;&quot;draft&quot;&quot;&quot;" name="state"/>
+            <field eval="&quot;&quot;&quot;Open ERP 5.0 - Developer&quot;&quot;&quot;" name="name"/>
+            <field name="product_line_id" ref="training_course_category_developer0"/>
+        </record>
+
+        <record model="training.course.offer.rel" id="training_course_offer_rel_7">
+            <field name="course_id" eval="ref('training_course_openerpetiny0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpdeveloper0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_8">
+            <field name="course_id" eval="ref('training_course_openerpopenofficereportdesigner0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpdeveloper0')" />
+        </record>
+        <record model="training.course.offer.rel" id="training_course_offer_rel_9">
+            <field name="course_id" eval="ref('training_course_openerpmodules0')" />
+            <field name="offer_id" eval="ref('training_offer_openerpdeveloper0')" />
+        </record>
+    </data>
+</openerp>

=== added file 'training/demo/training_seance.xml'
--- training/demo/training_seance.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_seance.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+	<data noupdate="1">
+		<record id="training_subscription_mass_wizard_0" model="training.subscription.mass.wizard">
+			<field name="partner_id" ref="base.res_partner_agrolait"/>
+			<field eval="[(6,0,[ref('base_contact.res_partner_job_7')])]" name="job_ids"/>
+		</record>
+		<record id="training_subscription_mass_line_0" model="training.subscription.mass.line">
+			<field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+			<field name="wizard_id" ref="training_subscription_mass_wizard_0"/>
+			<field name="session_id" ref="training.training_session_0"/>
+		</record>
+	</data>
+	<data noupdate="1">
+		<record id="training_subscription_mass_wizard_1" model="training.subscription.mass.wizard">
+			<field name="partner_id" ref="base.res_partner_asus"/>
+			<field eval="[(6,0,[ref('base_contact.res_partner_job_3')])]" name="job_ids"/>
+		</record>
+		<record id="training_subscription_mass_line_1" model="training.subscription.mass.line">
+			<field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+			<field name="wizard_id" ref="training_subscription_mass_wizard_1"/>
+			<field name="session_id" ref="training.training_session_2"/>
+		</record>
+	</data>
+	<data noupdate="1">
+		<record id="training_subscription_mass_wizard_2" model="training.subscription.mass.wizard">
+			<field name="partner_id" ref="base.res_partner_2"/>
+			<field eval="[(6,0,[ref('base_contact.res_partner_job_8')])]" name="job_ids"/>
+		</record>
+		<record id="training_subscription_mass_line_2" model="training.subscription.mass.line">
+			<field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+			<field name="wizard_id" ref="training_subscription_mass_wizard_2"/>
+			<field name="session_id" ref="training.training_session_0"/>
+		</record>
+	</data>
+	<data noupdate="1">
+		<record id="training_subscription_mass_wizard_3" model="training.subscription.mass.wizard">
+			<field name="partner_id" ref="base.res_partner_3"/>
+			<field eval="[(6,0,[ref('base_contact.res_partner_job_10')])]" name="job_ids"/>
+		</record>
+		<record id="training_subscription_mass_line_3" model="training.subscription.mass.line">
+			<field eval="&quot;&quot;&quot;standard&quot;&quot;&quot;" name="kind"/>
+			<field name="wizard_id" ref="training_subscription_mass_wizard_3"/>
+			<field name="session_id" ref="training.training_session_0"/>
+		</record>
+	</data>
+</openerp>

=== added file 'training/demo/training_session.xml'
--- training/demo/training_session.xml	1970-01-01 00:00:00 +0000
+++ training/demo/training_session.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,59 @@
+<?xml version="1.0" ?>
+<openerp>
+    <data>
+        <record id="training_holiday_wizard_1" model="training.holiday.year.wizard">
+            <field name="year" eval="int(time.strftime('%Y'))" />
+        </record>
+
+        <function model="training.holiday.year.wizard" name="action_apply">
+            <value eval="[ref('training_holiday_wizard_1')]" />
+        </function>
+    </data>
+    <data noupdate="1">
+        <record id="training_session_0" model="training.session">
+            <field name="offer_id" ref="training.training_offer_openerpintegrator0"/>
+            <field name="name">Open ERP 5.0 - Integrator</field>
+            <field name="catalog_id" ref="training.training_catalog_0"/>
+            <field eval="(DateTime.now() + DateTime.RelativeDateTime(months=1)).strftime('%Y-%m-%d 08:30:00')" name="date" />
+            <field name="user_id" ref="base.user_root"/>
+        </record>
+    </data>
+    <data>
+        <function model="training.session" name="action_create_seances">
+            <value eval="[ref('training_session_0')]" />
+        </function>
+        <workflow action="signal_open" model="training.session" ref="training_session_0"/>
+        <workflow action="signal_open_confirm" model="training.session" ref="training_session_0"/>
+    </data>
+    <data noupdate="1">
+        <record id="training_session_1" model="training.session">
+            <field name="offer_id" ref="training.training_offer_openerpbusiness0"/>
+            <field name="name">Open ERP 5.0 - Business</field>
+            <field name="catalog_id" ref="training.training_catalog_0"/>
+            <field eval="(DateTime.now() + DateTime.RelativeDateTime(days=25)).strftime('%Y-%m-%d 08:30:00')" name="date" />
+            <field name="user_id" ref="base.user_root"/>
+        </record>
+    </data>
+    <data>
+        <function model="training.session" name="action_create_seances">
+            <value eval="[ref('training_session_1')]" />
+        </function>
+        <workflow action="signal_open" model="training.session" ref="training_session_1"/>
+    </data>
+    <data noupdate="1">
+        <record id="training_session_2" model="training.session">
+            <field name="offer_id" ref="training.training_offer_openerpbusiness0"/>
+            <field name="name">Open ERP 5.0 - Business</field>
+            <field name="catalog_id" ref="training.training_catalog_0"/>
+            <field eval="(DateTime.now() + DateTime.RelativeDateTime(days=15)).strftime('%Y-%m-%d 08:30:00')" name="date" />
+            <field name="user_id" ref="base.user_root"/>
+        </record>
+    </data>
+    <data>
+        <function model="training.session" name="action_create_seances">
+            <value eval="[ref('training_session_2')]" />
+        </function>
+        <workflow action="signal_open" model="training.session" ref="training_session_2"/>
+        <workflow action="signal_open_confirm" model="training.session" ref="training_session_2"/>
+    </data>
+</openerp>

=== added file 'training/document_price.py'
--- training/document_price.py	1970-01-01 00:00:00 +0000
+++ training/document_price.py	2011-03-17 09:14:35 +0000
@@ -0,0 +1,145 @@
+# -*- encoding: utf-8 -*-
+############################################################################################
+#
+#    OpenERP, Open Source Management Solution
+#    Copyright (C) 2004-2009 Tiny SPRL (<http://tiny.be>). All Rights Reserved
+#    Copyright (C) 2008-2009 AJM Technologies S.A. (<http://www.ajm.lu). All Rights Reserved
+#    Copyright (C) 2010-2011 Thamini S.à.R.L (<http://www.thamini.com>). All Rights Reserved
+#    $Id$
+#
+#    This program is free software: you can redistribute it and/or modify
+#    it under the terms of the GNU General Public License as published by
+#    the Free Software Foundation, either version 3 of the License, or
+#    (at your option) any later version.
+#
+#    This program is distributed in the hope that it will be useful,
+#    but WITHOUT ANY WARRANTY; without even the implied warranty of
+#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#    GNU General Public License for more details.
+#
+#    You should have received a copy of the GNU General Public License
+#    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+#
+############################################################################################
+from osv import osv, fields
+
+import tools
+import netsvc
+from tools import config
+from tools.translate import _
+import decimal_precision as dp
+
+class document_price_component(osv.osv):
+    _name = 'document.price.component'
+
+    def price_by_product(self, cr, uid, ids, pricelist, product_id, qty=0, partner_id=False):
+        if not product_id:
+            return 0.0
+        if not pricelist:
+            raise osv.except_osv(_('No Pricelist !'),
+                _('You have to select a pricelist in the sale form !\n' \
+                'Please set one before choosing a product.'))
+
+        price = self.pool.get('product.pricelist').price_get(cr, uid, [pricelist], product_id, qty or 1.0, partner_id)[pricelist]
+        if price is False:
+            raise osv.except_osv(_('No valid pricelist line found !'),
+                _("Couldn't find a pricelist line matching this product" \
+                " and quantity.\nYou have to change either the product," \
+                " the quantity or the pricelist."))
+        return price
+
+    def _price_compute(self, cr, uid, ids, fieldnames, args, context=None):
+        user_proxy = self.pool.get('res.users')
+        user = user_proxy.browse(cr, uid, uid, context=context)
+        try:
+            price_list = user.company_id.partner_id.property_product_pricelist_purchase.id
+        except:
+            ids = self.pool.get('product.pricelist').search(cr, uid, [('key', '=', 'purchase')])
+            price_list = ids[0]
+
+        prices = dict.fromkeys(ids, 0.0)
+        product_proxy = self.pool.get('product.product')
+        for component in self.browse(cr, uid, ids, context=context):
+            prices[component.id] += (
+                self.price_by_product(cr, uid, [],
+                                      price_list,
+                                      component.product_id.id,
+                                      component.product_qty,
+                                      user.company_id.partner_id.id) * component.product_qty
+            )
+
+        return prices
+
+    def _store_get_products(self, cr, uid, product_ids, context=None):
+        """get all document price related to the provided products"""
+        docprice_pool = self.pool.get('document.price.component')
+        docprice_ids = docprice_pool.search(cr, uid, [('product_id','in', product_ids)], context=context)
+        return docprice_ids
+
+    def _store_get_own(self, cr, uid, docprice_ids, context=None):
+        """get all document price related to the provied document price"""
+        return docprice_ids
+
+    _columns = {
+        'attach_id' : fields.many2one('ir.attachment', 'Document', required=True, ondelete="cascade"),
+        'product_qty' : fields.integer('Quantity', required=True),
+        'product_id' : fields.many2one('product.product', 'Product', required=True),
+        'unit_price' : fields.related('product_id', 'standard_price', type='float', string='Unit Price', readonly=True, digits_compute=dp.get_precision('Account')),
+        'price' : fields.function(_price_compute, method=True, type='float', string='Price',
+                                  digits_compute=dp.get_precision('Account'),
+                                  store = {
+                                    'product.product': (_store_get_products, ['standard_price'], 10),
+                                    'document.price.component': (_store_get_own, None, 9),
+                                  },
+                                 ),
+    }
+
+    _defaults = {
+        'product_qty' : lambda *a: 1,
+    }
+
+document_price_component()
+
+
+class document_price(osv.osv):
+    _inherit = 'ir.attachment'
+
+    def _price_compute(self, cr, uid, ids, fieldnames, args, context=None):
+        res = dict.fromkeys(ids, 0.0)
+
+        for obj in self.browse(cr, uid, ids, context=context):
+            res[obj.id] = reduce(lambda acc, component: acc + component.price,
+                                 obj.component_ids,
+                                 0.0)
+
+        return res
+
+    _columns = {
+        'component_ids' : fields.one2many('document.price.component', 'attach_id'),
+
+        'price' : fields.function(_price_compute, method=True,
+                                  digits_compute=dp.get_precision('Account'),
+                                  string='Price',
+                                  type='float'),
+        'state' : fields.selection( [ ('draft', 'Draft'), ('validated', 'Validated'), ('pending', 'Pending') ], 'State', select=1, readonly=True),
+        'support_note' : fields.text('Note'),
+    }
+
+    _defaults = {
+        'state' : lambda *a: 'draft',
+    }
+
+    def search(self, cr, uid, domain, offset=0, limit=None, order=None, context=None, count=False):
+        link_course_ids = context and context.get('course_ids', False) or False
+
+        if link_course_ids:
+            course_ids = [course[2]['course_id'] for course in link_course_ids]
+            return super(document_price, self).search(cr, uid, [('type', '=', 'course_material'),
+                                                                ('res_model', '=', 'training.course'),
+                                                                ('res_id', 'in', course_ids)])
+
+        return super(document_price, self).search(cr, uid, domain, offset=offset,
+                                                  limit=limit, order=order, context=context, count=count)
+
+document_price()
+

=== added file 'training/document_price_view.xml'
--- training/document_price_view.xml	1970-01-01 00:00:00 +0000
+++ training/document_price_view.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<openerp>
+    <data>
+        <record model='ir.ui.view' id='document_price_form'>
+            <field name="name">document.price.form</field>
+            <field name="model">ir.attachment</field>
+            <field name="type">form</field>
+            <field name="inherit_id" ref="document.view_document_file_form" />
+            <field name="arch" type="xml">
+                <notebook position="inside">
+                    <page string='Support of Course' attrs="{'invisible': [('type','!=','course_material')]}">
+                        <separator string="Support of Course" colspan="4" />
+                        <newline/>
+                        <field name="component_ids" colspan="4" nolabel="1">
+                            <tree string="Components">
+                                <field name="product_id" />
+                                <field name="product_qty" />
+                                <field name="unit_price" />
+                                <field name="price" />
+                            </tree>
+                            <form string="Component">
+                                <field name="product_id" />
+                                <field name="product_qty" />
+                                <field name="unit_price" />
+                                <field name="price" />
+                            </form>
+                        </field>
+                        <field name="price" />
+                        <separator string="Note" colspan="4" />
+                        <field name="support_note" colspan="4" nolabel="1" />
+                    </page>
+                </notebook>
+            </field>
+        </record>
+    </data>
+</openerp>

=== added file 'training/document_type_data.xml'
--- training/document_type_data.xml	1970-01-01 00:00:00 +0000
+++ training/document_type_data.xml	2011-03-17 09:14:35 +0000
@@ -0,0 +1,14 @@
+<openerp>
+<data>
+
+    <record model="document.type" id="document_type_course_material">
+        <field name="name">Course Material</field>
+        <field name="code">course_material</field>
+    </record>
+
+    <record model="document.type" id="document_type_lecturer_material">
+        <field name="name">Lecturer Material</field>
+        <field name="code">lecturer_material</field>
+    </record>
+</data>
+</openerp>

=== added directory 'training/i18n'
=== added file 'training/i18n/fr_FR.po'
--- training/i18n/fr_FR.po	1970-01-01 00:00:00 +0000
+++ training/i18n/fr_FR.po	2011-03-17 09:14:35 +0000
@@ -0,0 +1,4870 @@
+# Translation of OpenERP Server.
+# This file contains the translation of the following modules:
+#	* training
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: OpenERP Server 5.0.15\n"
+"Report-Msgid-Bugs-To: support@xxxxxxxxxxx\n"
+"POT-Creation-Date: 2011-01-10 15:07:29+0000\n"
+"PO-Revision-Date: 2011-01-10 15:07:29+0000\n"
+"Last-Translator: <>\n"
+"Language-Team: \n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: \n"
+"Plural-Forms: \n"
+
+#. module: training
+#: view:training.course:0
+#: field:training.course,lecturer_ids:0
+#: selection:training.email,target:0
+#: view:training.seance:0
+#: field:training.seance,contact_ids:0
+#: field:training.seance,contact_names:0
+msgid "Lecturers"
+msgstr "Formateurs"
+
+#. module: training
+#: field:training.participation.stakeholder,paid:0
+msgid "Invoiced & Paid"
+msgstr "Facturé & payé"
+
+#. module: training
+#: field:training.catalog,name:0
+msgid "Title"
+msgstr "Titre"
+
+#. module: training
+#: help:training.course,with_children:0
+msgid "Allows to know if the course contains some subcourses or not"
+msgstr "Permet de savoir si le cours contient des parties de cours ou pas"
+
+#. module: training
+#: code:addons/training/product.py:0
+#, python-format
+msgid "From Product"
+msgstr "Depuis le produit"
+
+#. module: training
+#: code:addons/training/product.py:0
+#, python-format
+msgid "Fix"
+msgstr "Fixe"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "There is no group in this session !"
+msgstr "Il n'y a pas de groupe sur cette session !"
+
+#. module: training
+#: field:training.session,has_shared_seances:0
+msgid "Has Shared Seances"
+msgstr "Contient des séances partagées"
+
+#. module: training
+#: view:training.participation.stakeholder.request:0
+msgid "Send Request"
+msgstr "Envoyer la requête"
+
+#. module: training
+#: field:training.course,theme_ids:0
+#: view:training.course.theme:0
+#: field:training.offer,theme_ids:0
+msgid "Theme"
+msgstr "Thème"
+
+#. module: training
+#: model:ir.model,name:training.model_training_session_create_wizard
+msgid "training.session.create.wizard"
+msgstr "training.session.create.wizard"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_email_layout_act
+#: model:ir.ui.menu,name:training.training_email_layout_mi
+#: view:training.email.layout:0
+msgid "Email Layout"
+msgstr "Mise en page emails"
+
+#. module: training
+#: view:training.seance:0
+msgid "Seance Description"
+msgstr "Description de la séance"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.holiday_period_future_act
+#: model:ir.ui.menu,name:training.holiday_period_future_mi
+msgid "Futures Periods"
+msgstr "Périodes futures"
+
+#. module: training
+#: help:training.seance,manual:0
+#: help:training.session,manual:0
+msgid "Allows to the user to specify the number of participants"
+msgstr "Permet de spécifier le nombre de participants"
+
+#. module: training
+#: field:training.participation.stakeholder,manual_price:0
+msgid "Manual Price"
+msgstr "Prix manuel"
+
+#. module: training
+#: field:training.course.theme,parent_id:0
+#: view:training.course_category:0
+msgid "Parent"
+msgstr "Parent"
+
+#. module: training
+#: model:document.type,name:training.document_type_course_material
+#: field:training.content.review.line,course_material_id:0
+#: field:training.content.review.line.wizard,course_material_ids:0
+msgid "Course Material"
+msgstr "Materiel de cours"
+
+#. module: training
+#: model:training.course.kind,name:training.training_course_kind_standard
+#: model:training.offer.kind,name:training.training_offer_kind_standard
+msgid "Standard"
+msgstr "Standard"
+
+#. module: training
+#: view:training.content.review.purchase.line:0
+msgid "Content Review Purchase Line"
+msgstr "Ligne de commandes"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The Payment Mode is not specified"
+msgstr "Le mode de paiement n'est pas spécifié"
+
+#. module: training
+#: help:training.course,purchase_line_ids:0
+msgid "The purchase line helps to create a purchase order for the seance"
+msgstr "La ligne d'achat permet la création d'un commande fournisseur pour la séance"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_session_draft_participants_act
+msgid "Subscriptions To Confirm"
+msgstr "Inscription à confirmer"
+
+#. module: training
+#: field:training.email,fail_email:0
+msgid "Fail Email"
+msgstr "Email d'erreur"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_subscription_line_uninvoiced_act
+#: model:ir.ui.menu,name:training.training_subscription_management_subscription_line_uninvoiced_mi
+msgid "All Subscription Lines to Invoice"
+msgstr "Toutes les lignes d'inscription à facturer"
+
+#. module: training
+#: model:ir.actions.wizard,name:training.wizard_training_subscription_line_second
+msgid "Subscription Second Line"
+msgstr "Subscription Second Line"
+
+#. module: training
+#: view:training.subscription.cancellation.wizard:0
+msgid "New Participant"
+msgstr "Nouveau participant"
+
+#. module: training
+#: field:training.participation.stakeholder,forced_price:0
+msgid "Renumeration"
+msgstr "Renumeration"
+
+#. module: training
+#: help:training.catalog,session_ids:0
+msgid "The sessions in the catalog"
+msgstr "Les sessions du catalogue"
+
+#. module: training
+#: field:training.participation,present:0
+#: rml:training.presence.certificate:0
+msgid "Present"
+msgstr "Présent"
+
+#. module: training
+#: view:product.product:0
+#: view:res.partner:0
+msgid "Training"
+msgstr "Training"
+
+#. module: training
+#: model:ir.model,name:training.model_res_partner_contact_technical_skill
+msgid "res.partner.contact_technical_skill"
+msgstr "Compétence linguistique"
+
+#. module: training
+#: model:ir.model,name:training.model_training_seance
+msgid "training.seance"
+msgstr "Séance"
+
+#. module: training
+#: code:addons/training/training_email.py:0
+#, python-format
+msgid "Procurements email are only sent to suppliers"
+msgstr "Les emails d'approvisionement ne sont envoyé qu'aux fournisseurs"
+
+#. module: training
+#: help:res.partner,no_penalties:0
+msgid "Allow to not invoice this partner in case of subscription cancellation"
+msgstr "Permet de ne pas facturer le partenaire en cas d'annulation d'inscription"
+
+#. module: training
+#: help:training.offer.public.target,name:0
+msgid "Allows to the participants to select a course whose can participate"
+msgstr "Permet au participants de selectionner un cours qui les concernent"
+
+#. module: training
+#: help:training.subscription.line,job_email:0
+msgid "Participant Email Address"
+msgstr "Email participant"
+
+#. module: training
+#: model:ir.model,name:training.model_training_content_review_line
+msgid "training.content.review.line"
+msgstr "training.content.review.line"
+
+#. module: training
+#: field:training.subscription,origin:0
+msgid "Origin"
+msgstr "Origine"
+
+#. module: training
+#: selection:training.participation.stakeholder,state:0
+#: selection:training.participation.stakeholder.request,state:0
+msgid "Accepted"
+msgstr "Accepté"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The following course has not a valid duration \\"%s\\" (%d)"
+msgstr "Le cours suivant \\"%s\\" (%d) n'as pas une durée valide"
+
+#. module: training
+#: field:training.content.review,ref:0
+#: field:training.participation.stakeholder.request,reference:0
+#: field:training.subscription,name:0
+#: field:training.subscription.line,name:0
+msgid "Reference"
+msgstr "Réference"
+
+#. module: training
+#: view:training.seance:0
+#: view:training.session:0
+msgid "Thresholds"
+msgstr "Seuils"
+
+#. module: training
+#: model:ir.model,name:training.model_training_email
+msgid "Training Email"
+msgstr "Training Email"
+
+#. module: training
+#: field:training.course,splitted_by:0
+msgid "Splitted By"
+msgstr "En partie de"
+
+#. module: training
+#: wizard_view:training.course.create.block.offer,init:0
+#: view:training.offer:0
+msgid "Offer Description"
+msgstr "Description de l'offre"
+
+#. module: training
+#: field:training.course_category,analytic_account_id:0
+msgid "Analytic Account"
+msgstr "Compte analytique"
+
+#. module: training
+#: field:purchase.order,course_id:0
+#: field:purchase.order.line,course_id:0
+#: view:res.partner.contact:0
+#: field:training.contact.course,course_id:0
+#: field:training.content.review,course_id:0
+#: field:training.content.review.line.wizard,course_id:0
+#: view:training.course:0
+#: field:training.course.offer.rel,course_id:0
+#: field:training.course.purchase_line,course_id:0
+#: view:training.offer:0
+#: field:training.offer.purchase.line,course_id:0
+#: field:training.participation,course_id:0
+#: selection:training.participation,kind:0
+#: field:training.participation.stakeholder,course_id:0
+#: selection:training.participation.stakeholder,kind:0
+#: field:training.seance,course_id:0
+msgid "Course"
+msgstr "Cours"
+
+#. module: training
+#: model:ir.model,name:training.model_training_session
+msgid "training.session"
+msgstr "training.session"
+
+#. module: training
+#: help:training.session,date:0
+msgid "The date of the planned session"
+msgstr "Date de la session plannifiée"
+
+#. module: training
+#: field:training.seance,available_seats:0
+#: field:training.session,available_seats:0
+#: field:training.subscription.line,available_seats:0
+msgid "Available Seats"
+msgstr "Places disponibles"
+
+#. module: training
+#: view:training.participation.stakeholder.request:0
+msgid "Participation Request"
+msgstr "Participation Request"
+
+#. module: training
+#: field:training.subscription.line,create_date:0
+msgid "Created at"
+msgstr "Créé le"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Availability Request - Cancellation"
+msgstr "Demande de disponibilité - Annulation"
+
+#. module: training
+#: field:training.session,participant_count:0
+msgid "Total Confirmed Seats"
+msgstr "Total places confirmées"
+
+#. module: training
+#: code:addons/training/training.py:0
+#: field:res.partner,notif_participant:0
+#: field:training.participation,job_id:0
+#: rml:training.presence.certificate:0
+#: view:training.subscription.cancellation.wizard:0
+#: field:training.subscription.cancellation.wizard,new_participant_id:0
+#: field:training.subscription.cancellation.wizard,participant_id:0
+#: field:training.subscription.line,job_id:0
+#, python-format
+msgid "Participant"
+msgstr "Participant"
+
+#. module: training
+#: constraint:ir.actions.act_window:0
+msgid "Invalid model name in the action definition."
+msgstr "Nom de modèle invalide pour la définition de l'action"
+
+#. module: training
+#: help:training.course,duration:0
+#: help:training.course,duration_with_children:0
+#: help:training.course,duration_without_children:0
+msgid "The duration of the course"
+msgstr "La durée du cours"
+
+#. module: training
+#: help:training.session,offer_id:0
+msgid "Allows to select a validated offer for the session"
+msgstr "Permet de sélectionner une offre (validée) pour la session"
+
+#. module: training
+#: view:training.email.error:0
+msgid "Label"
+msgstr "Label"
+
+#. module: training
+#: field:purchase.order.line,seance_date:0
+#: field:training.participation,seance_date:0
+msgid "Seance Date"
+msgstr "Date de séance"
+
+#. module: training
+#: view:training.subscription.line:0
+msgid "Cancel (Penalities)"
+msgstr "Annuler (avec pénalités)"
+
+#. module: training
+#: help:training.course,long_name:0
+msgid "Allows to show the long name of the course for the external view"
+msgstr "Permet d'afficher le nom long du cours pour un affichage externe"
+
+#. module: training
+#: view:training.seance:0
+msgid "Re-generate Purchase"
+msgstr "Re-générer les commandes"
+
+#. module: training
+#: field:training.email,smtp_client_id:0
+msgid "SMTP Client"
+msgstr "Client SMTP"
+
+#. module: training
+#: help:res.partner.team,specialisation_id:0
+msgid "A Quality Team has a particularity"
+msgstr "Le cercle de qualité à une spécialisation"
+
+#. module: training
+#: model:ir.model,name:training.model_training_participation
+#: view:training.participation:0
+#: field:training.participation.reassign.wizard,participation_id:0
+#: view:training.participation.stakeholder:0
+msgid "Participation"
+msgstr "Participation"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_email_stylegroup_act
+#: model:ir.ui.menu,name:training.training_email_stylegroup_mi
+msgid "Emails Style Groups"
+msgstr "Style de groupe d'emails"
+
+#. module: training
+#: rml:training.seance.support.delivery.report:0
+msgid "Salle"
+msgstr "Salle"
+
+#. module: training
+#: view:training.course:0
+#: selection:training.email,trigger:0
+#: view:training.offer:0
+#: field:training.offer,purchase_line_ids:0
+#: view:training.participation:0
+#: view:training.seance:0
+msgid "Procurements"
+msgstr "Approvisionnement"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.holiday_year_new_act
+#: model:ir.ui.menu,name:training.holiday_year_new_mi
+msgid "Define New Year"
+msgstr "Définir une nouvelle année"
+
+#. module: training
+#: model:ir.model,name:training.model_training_content_pending
+msgid "training.content.pending"
+msgstr "training.content.pending"
+
+#. module: training
+#: model:ir.model,name:training.model_training_course
+msgid "training.course"
+msgstr "training.course"
+
+#. module: training
+#: field:training.holiday.period,date_stop:0
+msgid "Date Stop"
+msgstr "Date de fin"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.session_participation_requests
+#: view:training.session:0
+msgid "Lecturer Requests"
+msgstr "Requêtes formateur"
+
+#. module: training
+#: view:training.config.invoice:0
+msgid "Threshold Invoices"
+msgstr "Threshold Invoices"
+
+#. module: training
+#: model:ir.model,name:training.model_training_offer_category
+msgid "Categories"
+msgstr "Categories"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.offer_session_link
+msgid "Planned Sessions"
+msgstr "Sessions plannifiées"
+
+#. module: training
+#: code:addons/training/training_holiday.py:0
+#, python-format
+msgid "Can you give a right date ?"
+msgstr "Pouvez-vous saisir une date valide ?"
+
+#. module: training
+#: view:training.participation.stakeholder.request:0
+msgid "Participation Requests"
+msgstr "Participation Requests"
+
+#. module: training
+#: wizard_view:training.subscription.line_second,init:0
+msgid "Mass Subscription Second Line"
+msgstr "Mass Subscription Second Line"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "Cancelled by Postponement: %s"
+msgstr "Annulé par report: %s"
+
+#. module: training
+#: field:res.partner.job,departments:0
+msgid "Departments"
+msgstr "Départements"
+
+#. module: training
+#: field:training.offer.purchase.line.log,log:0
+#: field:training.offer.purchase.line.update.wizard,log:0
+msgid "Log Text"
+msgstr "Message du journal"
+
+#. module: training
+#: model:ir.model,name:training.model_document_price_component
+msgid "document.price.component"
+msgstr "document.price.component"
+
+#. module: training
+#: field:purchase.order,contact_id:0
+#: field:training.contact.course,contact_id:0
+#: field:training.holiday.period,contact_id:0
+#: field:training.participation,contact_id:0
+#: field:training.participation.stakeholder,job_id:0
+#: field:training.participation.stakeholder.request,job_id:0
+#: field:training.subscription.line,contact_id:0
+#: field:training.subscription.line.second,job_id:0
+msgid "Contact"
+msgstr "Contact"
+
+#. module: training
+#: code:addons/training/document_price.py:0
+#, python-format
+msgid "No valid pricelist line found !"
+msgstr "Aucune liste de prix valide n'a été trouvé ! "
+
+#. module: training
+#: view:training.email:0
+msgid "_Draft"
+msgstr "_Brouillon"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The type of the course (%s) of this seance has no product defined"
+msgstr "Le type de cours (%s) de cette séance n'a pas de produit défini"
+
+#. module: training
+#: help:training.session,seance_ids:0
+msgid "List of the events in the session"
+msgstr "Liste des événements de la session"
+
+#. module: training
+#: field:training.seance.generate.zip.wizard,presence_list_report:0
+msgid "Presence List Report"
+msgstr "Liste de présence"
+
+#. module: training
+#: selection:training.seance.generate.zip.wizard,state:0
+msgid "Selection"
+msgstr "Sélection"
+
+#. module: training
+#: field:ir.attachment,state:0
+#: field:training.catalog,state:0
+#: field:training.content.review,state:0
+#: field:training.course,state_course:0
+#: field:training.email,state:0
+#: field:training.offer,state:0
+#: field:training.participation.stakeholder,state:0
+#: field:training.participation.stakeholder.request,state:0
+#: field:training.seance,state:0
+#: field:training.seance.generate.zip.wizard,state:0
+#: field:training.session,state:0
+#: field:training.subscription,state:0
+#: field:training.subscription.cancellation.wizard,state:0
+#: field:training.subscription.line,state:0
+#: field:training.subscription.line,subscription_state:0
+msgid "State"
+msgstr "État"
+
+#. module: training
+#: field:training.session,min_limit:0
+msgid "Mininum Threshold"
+msgstr "Seuil miniumum"
+
+#. module: training
+#: field:training.participation.stakeholder.request,purchase_paid:0
+msgid "Invoice Paid"
+msgstr "Facture payée"
+
+#. module: training
+#: field:training.seance.purchase_line,seance_date:0
+msgid "Sceance Date"
+msgstr "Date de séance"
+
+#. module: training
+#: view:training.holiday.year:0
+msgid "Holiday Years"
+msgstr "Holiday Years"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Session Confirmed -> Cancelled"
+msgstr "Session Confirmée -> Annulée"
+
+#. module: training
+#: view:training.subscription.line:0
+msgid "Email Notifcation Extra Text"
+msgstr "Texte supplémentaire pour l'email de notification"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.course_linked_course
+msgid "Linked Courses"
+msgstr "Cours liées"
+
+#. module: training
+#: field:training.seance,purchase_in_error:0
+msgid "Have Purchase In Errors"
+msgstr "Contient des commandes en erreur"
+
+#. module: training
+#: rml:training.seance.support.delivery.report:0
+msgid "Additional Information"
+msgstr "Information supplémentaire"
+
+#. module: training
+#: field:training.offer,categorie_id:0
+#: field:training.offer.category,name:0
+msgid "Category"
+msgstr "Categories"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.action_training_participation_stakeholder_all
+#: model:ir.ui.menu,name:training.seance_stakeholder_participation_mi
+msgid "All Participations"
+msgstr "Toutes les participations"
+
+#. module: training
+#: model:ir.model,name:training.model_training_group
+#: view:training.group:0
+#: field:training.participation,group_id:0
+#: field:training.participation.stakeholder,group_id:0
+#: field:training.seance,group_id:0
+#: field:training.session,group_ids:0
+#: field:training.session.duplicate.wizard,group_id:0
+msgid "Group"
+msgstr "Groupe"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.offer_lecturer_request_link
+msgid "All Lecturer Requests"
+msgstr "Toutes les requêtes formateur"
+
+#. module: training
+#: model:ir.model,name:training.model_training_holiday_period
+msgid "training.holiday.period"
+msgstr "training.holiday.period"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The defined groups for this session does not have the same number of seances !"
+msgstr "Le groupes définis pour cette session n'ont pas le même nombre de séances !"
+
+#. module: training
+#: field:training.seance,original_offer_kind:0
+msgid "Original Offer Kind"
+msgstr "Genre de l'offre intiale"
+
+#. module: training
+#: field:res.partner.job,contact_lastname:0
+#: field:training.participation,contact_lastname:0
+msgid "Contact Last Name"
+msgstr "Nom du contact"
+
+#. module: training
+#: model:ir.model,name:training.model_training_participation_reassign_wizard
+msgid "training.participation.reassign.wizard"
+msgstr "training.participation.reassign.wizard"
+
+#. module: training
+#: field:training.course,long_name:0
+msgid "Long Name"
+msgstr "Nom détaillé"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "Selection Date"
+msgstr "Selection Date"
+
+#. module: training
+#: model:ir.model,name:training.model_training_offer
+msgid "training.offer"
+msgstr "training.offer"
+
+#. module: training
+#: selection:training.course,splitted_by:0
+msgid "8 Hours"
+msgstr "8 Heures"
+
+#. module: training
+#: view:training.config.penality:0
+msgid "Penality"
+msgstr "Penalité"
+
+#. module: training
+#: model:ir.model,name:training.model_training_content_review_line_wizard
+msgid "training.content.review.line.wizard"
+msgstr "training.content.review.line.wizard"
+
+#. module: training
+#: model:ir.model,name:training.model_training_course_offer_rel
+msgid "training.course.offer.rel"
+msgstr "training.course.offer.rel"
+
+#. module: training
+#: model:ir.model,name:training.model_training_subscription_line_second
+msgid "training.subscription.line.second"
+msgstr "training.subscription.line.second"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_course_type_all_act
+#: model:ir.ui.menu,name:training.training_config_library_course_type_mi
+msgid "Levels"
+msgstr "Types"
+
+#. module: training
+#: view:training.session:0
+msgid "Overall seats"
+msgstr "Nom de places globale"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "There is no Purchase Order for a request"
+msgstr "Il n'y a pas de commande pour cette requête"
+
+#. module: training
+#: model:ir.actions.wizard,name:training.wizard_training_course_validate
+msgid "Validate Course(s)"
+msgstr "Valider le(s) cours"
+
+#. module: training
+#: field:training.subscription.line,theoritical_disponibility:0
+msgid "Theoritical Disponibility"
+msgstr "Disponibilité théorique"
+
+#. module: training
+#: view:training.participation.reassign.wizard:0
+#: view:training.participation.stakeholder:0
+msgid "Seance Information"
+msgstr "Information de la séance"
+
+#. module: training
+#: code:addons/training/product.py:0
+#, python-format
+msgid "By Subscription"
+msgstr "Par inscription"
+
+#. module: training
+#: view:training.seance:0
+#: field:training.seance,user_id:0
+#: field:training.session,user_id:0
+msgid "Responsible"
+msgstr "Responsable"
+
+#. module: training
+#: view:training.course_type:0
+msgid "Limits"
+msgstr "Limites"
+
+#. module: training
+#: model:ir.model,name:training.model_training_subscription_line
+msgid "training.subscription.line"
+msgstr "training.subscription.line"
+
+#. module: training
+#: field:training.email.stylegroup,default:0
+msgid "Default"
+msgstr "Défaut"
+
+#. module: training
+#: help:training.session,has_shared_seances:0
+msgid "Allows to know if the session has a shared seance"
+msgstr "Détermine si le session contient des séances partagées"
+
+#. module: training
+#: field:training.offer.purchase.line.log,name:0
+#: field:training.offer.purchase.line.update.wizard,name:0
+#: view:training.participation:0
+#: field:training.participation,summary:0
+msgid "Summary"
+msgstr "Résumé"
+
+#. module: training
+#: field:training.participation,purchase_state:0
+msgid "Purchase State"
+msgstr "État de la commande"
+
+#. module: training
+#: field:training.content.review,estimated_delivery_date:0
+msgid "Estimated Delivery Date"
+msgstr "Date de livraison estimée"
+
+#. module: training
+#: field:training.participation.stakeholder.request,amount_to_pay:0
+msgid "Amount to pay"
+msgstr "Montant à payer"
+
+#. module: training
+#: field:document.price.component,product_qty:0
+#: field:training.base.purchase_line,product_qty:0
+#: field:training.content.review.purchase.line,product_qty:0
+#: field:training.course.purchase_line,product_qty:0
+#: field:training.offer.purchase.line,product_qty:0
+#: field:training.seance.purchase_line,product_qty:0
+#: rml:training.seance.support.delivery.report:0
+msgid "Quantity"
+msgstr "Quantité"
+
+#. module: training
+#: rml:training.presence.certificate:0
+msgid "Presence Rate"
+msgstr "Presence Rate"
+
+#. module: training
+#: view:training.course:0
+msgid "Course Description"
+msgstr "Description du cours"
+
+#. module: training
+#: field:training.participation.stakeholder,price:0
+#: field:training.participation.stakeholder.request,price:0
+msgid "Remuneration"
+msgstr "Rémunérration"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "You can not cancel this purchase line it is not the only one purchase order lines in the purchase order"
+msgstr "Vous ne pouvez pas annuler cette ligne de commande car il a plus d'une ligne dans la commande"
+
+#. module: training
+#: field:training.subscription.line,has_certificate:0
+msgid "Has Certificate"
+msgstr "Certificat médical disponible"
+
+#. module: training
+#: help:training.catalog,state:0
+msgid "The status of the catalog"
+msgstr "État du catalogue"
+
+#. module: training
+#: view:training.holiday.year:0
+msgid "Period"
+msgstr "Période"
+
+#. module: training
+#: model:ir.ui.menu,name:training.training_config_library_mi
+#: model:ir.ui.menu,name:training.training_library_mi
+msgid "Library"
+msgstr "Bibliothèque"
+
+#. module: training
+#: help:training.participation.stakeholder,seance_id:0
+msgid "Select the Seance"
+msgstr "Selectionnez la séance"
+
+#. module: training
+#: field:training.base.purchase_line,attachment_price:0
+#: field:training.course.purchase_line,attachment_price:0
+#: field:training.offer.purchase.line,attachment_price:0
+#: field:training.seance.purchase_line,attachment_price:0
+msgid "Attachment Price"
+msgstr "Prix de la pièce jointe"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_session_future_all_act
+#: model:ir.ui.menu,name:training.training_planning_session_future_all_mi
+msgid "Futur Sessions"
+msgstr "Sessions futures"
+
+#. module: training
+#: field:training.seance,original_session_id:0
+msgid "Original Session"
+msgstr "Session d'origine"
+
+#. module: training
+#: view:training.participation.reassign.wizard:0
+msgid "Reassign Participation to Seance"
+msgstr "Réassigner une participation à une autre séance"
+
+#. module: training
+#: model:ir.model,name:training.model_training_holiday_year
+msgid "training.holiday.year"
+msgstr "training.holiday.year"
+
+#. module: training
+#: field:training.offer.purchase.line,auto_update:0
+#: field:training.seance.purchase_line,auto_update:0
+msgid "Auto. Update"
+msgstr "Mise à jour auto."
+
+#. module: training
+#: field:training.offer,is_certification:0
+msgid "Is a certification?"
+msgstr "Est une certification ?"
+
+#. module: training
+#: view:training.catalog:0
+#: selection:training.catalog,state:0
+#: view:training.content.review:0
+#: selection:training.content.review,state:0
+#: selection:training.participation.stakeholder,state_seance:0
+#: selection:training.seance,state:0
+#: selection:training.session,state:0
+#: selection:training.subscription.cancellation.wizard,session_state:0
+#: selection:training.subscription.line,session_state:0
+msgid "In Progress"
+msgstr "En cours"
+
+#. module: training
+#: help:training.subscription.line,session_id:0
+msgid "Select the session"
+msgstr "Selectionner la session"
+
+#. module: training
+#: code:addons/training/wizard/wizard_create_session.py:0
+#, python-format
+msgid "You can not create a session with a non-validated offer"
+msgstr "Vous ne pouvez pas créer de session avec une offre non validée"
+
+#. module: training
+#: help:training.email,fail_email:0
+msgid "If the mail rendering fail, the traceback will be sent to this email"
+msgstr "Si la génération de l'email échoue, le message d'erreur sera envoyé à cet email"
+
+#. module: training
+#: model:ir.config,description:training.config_training_subscription_cancel_discount_rate
+msgid "define the rate of the refund in percentage of the total amount"
+msgstr "define the rate of the refund in percentage of the total amount"
+
+#. module: training
+#: field:training.subscription.mass.line,wizard_id:0
+msgid "Wizard"
+msgstr "Assistant"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid " and "
+msgstr " and "
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_catalog_old_act
+#: model:ir.ui.menu,name:training.training_offer_catalog_old_mi
+msgid "Old Catalogs"
+msgstr "Anciens catalogues"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "Product %s doesn't have any supplier defined"
+msgstr "Le produit %s n'a aucun fournisseur de défini"
+
+#. module: training
+#: field:purchase.order.line,seance_id_int:0
+#: field:training.session,id:0
+msgid "Seance ID"
+msgstr "ID Séance"
+
+#. module: training
+#: help:training.session,min_limit:0
+msgid "The minimum threshold is the minimum of the minimum threshold of each seance"
+msgstr "The minimum threshold is the minimum of the minimum threshold of each seance"
+
+#. module: training
+#: view:training.content.review:0
+msgid "Review Follow Up"
+msgstr "Suivi de la révision"
+
+#. module: training
+#: model:ir.model,name:training.model_training_config_invoice
+msgid "training.config.invoice"
+msgstr "training.config.invoice"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_subscription_line_draft_act
+#: model:ir.ui.menu,name:training.training_subscription_management_subscription_line_draft_mi
+msgid "Subscription Lines to Validate"
+msgstr "Lignes d'inscription à valider"
+
+#. module: training
+#: view:training.course_type:0
+#: field:training.course_type,objective:0
+#: view:training.offer:0
+#: field:training.offer,objective:0
+msgid "Objective"
+msgstr "Objectif"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.holiday_year_all_act
+#: model:ir.ui.menu,name:training.holiday_year_all_mi
+msgid "Years"
+msgstr "Années"
+
+#. module: training
+#: help:training.course_type,name:0
+msgid "The course type's name"
+msgstr "Le nom du type de cours"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The number of participants is less than the required minimal limit"
+msgstr "Le nombre de participants est inférieur au seuil minimum"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.subscription_line_second_all_act
+#: model:ir.ui.menu,name:training.subscription_line_second_all_mi
+msgid "Subscription Lines without Partner (to resolve)"
+msgstr "Lignes d'inscriptions sans partenaire (à corriger)"
+
+#. module: training
+#: model:ir.model,name:training.model_training_subscription_mass_wizard
+msgid "Mass Subscription Wizard"
+msgstr "Assistant inscription en masse"
+
+#. module: training
+#: wizard_button:training.subscription.line_second,init,make_subscription:0
+#: wizard_button:training.subscription.session,init,make_subscription:0
+msgid "Make Subscription"
+msgstr "Lancer l'inscription"
+
+#. module: training
+#: code:addons/training/training_email.py:0
+#, python-format
+msgid "Only examiners will receive request emails"
+msgstr "Seul les correcteurs recevront le emails de requête"
+
+#. module: training
+#: model:ir.model,name:training.model_training_holiday_year_wizard
+msgid "training.holiday.year.wizard"
+msgstr "training.holiday.year.wizard"
+
+#. module: training
+#: help:training.course,internal_note:0
+msgid "The user can write some internal note for this course"
+msgstr "L'utilisateur peut renseigner une note interne sur ce cours"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "The type of the course (%s) of this seance hasn't a product"
+msgstr "Le type de cours (%s) de cette séance n'a pas de produit défini"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_email_all_act
+#: model:ir.ui.menu,name:training.training_email_all_mi
+msgid "Emails"
+msgstr "Emails"
+
+#. module: training
+#: model:ir.ui.menu,name:training.training_planning_mi
+msgid "Plannings"
+msgstr "Planification"
+
+#. module: training
+#: field:training.content.review.line.wizard,question_ids:0
+msgid "Questions"
+msgstr "Questions"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_session_draft_act
+#: model:ir.ui.menu,name:training.training_planning_session_draft_mi
+msgid "Draft Sessions"
+msgstr "Sessions brouillon"
+
+#. module: training
+#: help:training.offer,objective:0
+msgid "The objective of the course will be used by the internet web site"
+msgstr "L'objectif du cours sera affiché sur le site internet"
+
+#. module: training
+#: code:addons/training/wizard/wizard_create_offer.py:0
+#, python-format
+msgid "Please, you can create an offer with a validated course"
+msgstr "S'il vous plait, pouvez-vous créer un offre avec un cours validé"
+
+#. module: training
+#: field:training.participation.stakeholder,request_id:0
+msgid "Request"
+msgstr "Requête"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_offer_purchase_line_wizard_act
+#: view:training.offer.purchase.line.update.wizard:0
+msgid "Procurements Update"
+msgstr "Mise à cours des commandes"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.seance_participation_stakeholders
+msgid "Lecturer Participations"
+msgstr "Participations formateur"
+
+#. module: training
+#: field:training.course,reference_id:0
+msgid "Master Course"
+msgstr "Cours référant"
+
+#. module: training
+#: view:training.participation.stakeholder.request:0
+msgid "Create Purchase Order"
+msgstr "Créer la commande"
+
+#. module: training
+#: code:addons/training/wizard/wizard_create_session.py:0
+#, python-format
+msgid "Context not defined"
+msgstr "Context not defined"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.action_training_participation_absent_all
+#: model:ir.ui.menu,name:training.absent_participant_participation_mi
+msgid "Absent Participants"
+msgstr "Participants absent"
+
+#. module: training
+#: field:training.content.review,create_date:0
+#: field:training.email.error,create_date:0
+#: field:training.offer,create_date:0
+msgid "Create Date"
+msgstr "Date de création"
+
+#. module: training
+#: model:ir.model,name:training.model_training_config_contact_function
+msgid "training.config.contact.function"
+msgstr "training.config.contact.function"
+
+#. module: training
+#: selection:training.email,target:0
+msgid "Subscription Contacts (HR)"
+msgstr "Subscription Contacts (HR)"
+
+#. module: training
+#: view:training.participation.reassign.wizard:0
+#: view:training.subscription.cancellation.wizard:0
+msgid "Apply"
+msgstr "Appliquer"
+
+#. module: training
+#: view:training.offer.purchase.line.log:0
+msgid "Purchase Line Update Log"
+msgstr "Journal des mise à journal de ligne de commandes"
+
+#. module: training
+#: help:training.group,name:0
+msgid "The group's name"
+msgstr "Le nom du groupe"
+
+#. module: training
+#: field:training.course_category,child_ids:0
+msgid "Child Accounts"
+msgstr "Comptes enfant"
+
+#. module: training
+#: view:training.content.review.writer:0
+msgid "Content Review Writer"
+msgstr "Rédacteurs"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "Please, Can you check the price list of the partner ?"
+msgstr "Veuillez vérifier la liste de prix sur le partenaire!"
+
+#. module: training
+#: help:product.product,procurement_price:0
+msgid "From where will the real procurement price come. If 'From Attachment' is choosen and no attachment is specified, the system will use product price as fallback"
+msgstr "La manière dont le prix réel de l'approvisionnment est calculé. Si l'option 'Depuis pièce jointe' est choisie et aucune pièce jointe n'est spécifiée, le système utilisera le prix défini sur le produit à la place"
+
+#. module: training
+#: model:ir.model,name:training.model_training_content_review_reason
+msgid "training.content.review.reason"
+msgstr "training.content.review.reason"
+
+#. module: training
+#: field:training.seance,master_id:0
+msgid "Master Seance"
+msgstr "Séance principale"
+
+#. module: training
+#: field:account.invoice,sent_by_mail_at:0
+msgid "Sent At"
+msgstr "Envoyé à"
+
+#. module: training
+#: field:training.config.penality,trigger:0
+#: field:training.email,trigger:0
+#: field:training.offer.purchase.line,procurement_quantity:0
+msgid "Trigger"
+msgstr "Déclencheur"
+
+#. module: training
+#: field:training.seance.purchase_line,course_id:0
+msgid "For Course"
+msgstr "Pour le cours"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.action_training_participation_present_all
+#: model:ir.ui.menu,name:training.present_participant_participation_mi
+msgid "Present Participants"
+msgstr "Participants présent"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.offer_purchase_line_log_link
+msgid "Procurements Update Logs"
+msgstr "Journal des mises à jour de commandes"
+
+#. module: training
+#: field:training.email,body:0
+msgid "Body"
+msgstr "Corps"
+
+#. module: training
+#: model:ir.model,name:training.model_training_offer_public_target
+msgid "training.offer.public.target"
+msgstr "training.offer.public.target"
+
+#. module: training
+#: model:ir.model,name:training.model_training_session_duplicate_wizard
+msgid "training.session.duplicate.wizard"
+msgstr "training.session.duplicate.wizard"
+
+#. module: training
+#: view:training.offer:0
+#: field:training.offer,notification_note:0
+msgid "Notification Note"
+msgstr "Note de notification"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_seance_to_confirm_act
+#: model:ir.ui.menu,name:training.training_planning_seances_confirm_mi
+msgid "Seances to Confirm"
+msgstr "Séances à confirmer"
+
+#. module: training
+#: view:training.email.error:0
+msgid "Send Email"
+msgstr "Envoyer email"
+
+#. module: training
+#: help:training.seance,shared:0
+msgid "Allows to know if the seance is linked with a lot of sessions"
+msgstr "Détermine si la séance est liée à plus d'une session"
+
+#. module: training
+#: view:training.offer:0
+#: view:training.seance:0
+msgid "Automatic Declaration"
+msgstr "Déclaration automatique"
+
+#. module: training
+#: view:ir.attachment:0
+msgid "Support of Course"
+msgstr "Support de cours"
+
+#. module: training
+#: code:addons/training/product.py:0
+#, python-format
+msgid "On Last Seance"
+msgstr "Sur la dernière séance"
+
+#. module: training
+#: field:training.subscription.line,create_uid:0
+msgid "Created by"
+msgstr "Crée par"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_subscription_line_all_act
+#: model:ir.ui.menu,name:training.training_subscription_management_subscription_line_all_mi
+#: field:training.session,subscription_line_ids:0
+#: view:training.subscription:0
+#: field:training.subscription,subscription_line_ids:0
+#: view:training.subscription.line:0
+#: view:training.subscription.line.second:0
+msgid "Subscription Lines"
+msgstr "Lignes d'inscription"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Correction Request - Cancellation"
+msgstr "Requête de correction - Annulation"
+
+#. module: training
+#: code:addons/training/training_content_review.py:0
+#, python-format
+msgid "[REVIEW] %s"
+msgstr "[REVISION] %s"
+
+#. module: training
+#: selection:training.email,target:0
+msgid "Suppliers"
+msgstr "Fournisseurs"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "%(participant)s is already following the session \"%(session)s\""
+msgstr "%(participant)s participe déjà à la session \"%(session)s\""
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_session_planning_act
+#: model:ir.ui.menu,name:training.training_planning_session_calendar_mi
+msgid "Calendar of Sessions"
+msgstr "Calendrier des sessions"
+
+#. module: training
+#: selection:training.config.invoice,threshold:0
+msgid "Maximum"
+msgstr "Maximum"
+
+#. module: training
+#: help:training.seance.generate.zip.wizard,presence_list_report:0
+msgid "If you select this option you will print the report for the presence list. The file format is Presence_List_DATEOFSEANCE_SEANCEID.pdf"
+msgstr "Si vous sélectionnez cette option, vous générerez la liste de présence. Le nom du fichier sera présenté le la manière suivante Presence_List_DATEDESEANCE_IDSEANCE.pdf"
+
+#. module: training
+#: model:ir.model,name:training.model_training_course_purchase_line
+msgid "training.course.purchase_line"
+msgstr "training.course.purchase_line"
+
+#. module: training
+#: field:training.subscription,address_id:0
+msgid "Invoice Address"
+msgstr "Adresse de facturation"
+
+#. module: training
+#: view:training.offer.public.target:0
+msgid "Target Audience (Internet)"
+msgstr "Public cible (Internet)"
+
+#. module: training
+#: view:training.seance:0
+#: view:training.session:0
+msgid "Start"
+msgstr "Démarrer"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_course_related_review
+msgid "Related Content Review"
+msgstr "Révisions associées"
+
+#. module: training
+#: model:ir.model,name:training.model_training_course_category
+msgid "training.course_category"
+msgstr "training.course_category"
+
+#. module: training
+#: selection:training.config.penality,trigger:0
+msgid "Discount Invoice"
+msgstr "Discount Invoice"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "You have not selected a participant of this session"
+msgstr "Vous devez selectionner un participant de cette session"
+
+#. module: training
+#: view:training.participation.stakeholder:0
+msgid "Payment"
+msgstr "Paiement"
+
+#. module: training
+#: selection:training.config.invoice,threshold:0
+msgid "Minimum"
+msgstr "Minimum"
+
+#. module: training
+#: view:training.session:0
+msgid "Email Style"
+msgstr "Style d'email"
+
+#. module: training
+#: view:training.course_type:0
+msgid "Types"
+msgstr "Types"
+
+#. module: training
+#: field:training.seance,participant_count:0
+msgid "Confirmed Seats"
+msgstr "Places confirmées"
+
+#. module: training
+#: help:training.course,forced_nosupport:0
+msgid "This course has no attachment, and that is normal"
+msgstr "Ce cours ne possède pas de support de cours, et ceci est normal."
+
+#. module: training
+#: view:training.participation.reassign.wizard:0
+msgid "Participation Information"
+msgstr "Information sur la participation"
+
+#. module: training
+#: field:training.seance,duplicated:0
+msgid "Duplicated"
+msgstr "Dédoublée"
+
+#. module: training
+#: view:training.holiday.year:0
+msgid "Holiday year"
+msgstr "Holiday year"
+
+#. module: training
+#: field:training.seance,state_course:0
+msgid "Course's State"
+msgstr "État du cours"
+
+#. module: training
+#: field:training.course_type,max_limit:0
+#: field:training.seance,max_limit:0
+#: field:training.session,max_limit:0
+#: field:training.subscription.line,max_limit:0
+msgid "Maximum Threshold"
+msgstr "Seuil maximum"
+
+#. module: training
+#: field:training.subscription.line,contact_firstname:0
+msgid "Contact Firstname"
+msgstr "Prénom contact"
+
+#. module: training
+#: view:training.offer:0
+msgid "Load Procurements From Courses"
+msgstr "Récuperer les approvisionnements depuis les cours"
+
+#. module: training
+#: code:addons/training/training_email.py:0
+#, python-format
+msgid "Accountant can only receive invoice emails"
+msgstr "Seul les comptables peuvent recevoir les emails de facturations"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Correction Request - Refusal"
+msgstr "Requête de correction - refus"
+
+#. module: training
+#: view:training.subscription.cancellation.wizard:0
+msgid "Medical Certificate"
+msgstr "Certificat médical"
+
+#. module: training
+#: field:training.subscription.line,email_note:0
+msgid "Email Note"
+msgstr "Note email"
+
+#. module: training
+#: field:training.seance,shared:0
+msgid "Shared"
+msgstr "Partagée"
+
+#. module: training
+#: model:ir.model,name:training.model_training_base_purchase_line
+msgid "training.base.purchase_line"
+msgstr "training.base.purchase_line"
+
+#. module: training
+#: view:training.subscription.line:0
+#: field:training.subscription.line,reason_cancellation:0
+msgid "Reason of Cancellation"
+msgstr "Raison d'annulation"
+
+#. module: training
+#: field:training.course_type,min_limit:0
+#: field:training.seance,min_limit:0
+msgid "Minimum Threshold"
+msgstr "Seuil minimum"
+
+#. module: training
+#: view:training.subscription.cancellation.wizard:0
+msgid "The operation has been done with success !"
+msgstr "L'opération s'est déroulée avec succès !"
+
+#. module: training
+#: code:addons/training/product.py:0
+#, python-format
+msgid "From Attachment"
+msgstr "Depuis pièce jointe"
+
+#. module: training
+#: help:training.seance,date:0
+msgid "The create date of seance"
+msgstr "La date de création de la séance"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_content_review_action
+#: model:ir.ui.menu,name:training.training_content_review_mi
+#: view:training.content.review:0
+msgid "Content Reviews"
+msgstr "Révision de contenu"
+
+#. module: training
+#: field:training.subscription,create_date:0
+msgid "Creation Date"
+msgstr "Date de création"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_seance_all_act
+#: model:ir.actions.act_window,name:training.training_session_seances_act
+#: model:ir.ui.menu,name:training.training_planning_seances_mi
+#: view:training.group:0
+#: field:training.group,seance_ids:0
+#: view:training.seance:0
+#: view:training.session:0
+#: field:training.session,seance_ids:0
+msgid "Seances"
+msgstr "Séances"
+
+#. module: training
+#: field:ir.attachment,component_ids:0
+#: field:res.partner.job,birthdate:0
+#: field:training.offer.purchase.line.update.wizard,state:0
+#: field:training.participation,session_id:0
+#: field:training.participation.stakeholder,contact_id:0
+#: field:training.participation.stakeholder,request_session_id:0
+msgid "unknown"
+msgstr "Date de naissance"
+
+#. module: training
+#: field:training.subscription.line,validation_date:0
+msgid "Validated at"
+msgstr "Validé le"
+
+#. module: training
+#: model:ir.ui.menu,name:training.subscription_treat_mi
+msgid "Manage Subscriptions"
+msgstr "Gérer les inscriptions"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.participation_stakeholder_request_valid_act
+#: model:ir.ui.menu,name:training.participation_stakeholder_request_valid_mi
+msgid "Requests to send"
+msgstr "Requêtes à envoyer"
+
+#. module: training
+#: model:ir.actions.report.xml,name:training.training_seance_presence_noshow_report
+#: rml:training.seance.presence.noshow:0
+msgid "Presence NoShow List"
+msgstr "Presence NoShow List"
+
+#. module: training
+#: view:res.partner.job:0
+#: field:res.partner.job,pricelist_id:0
+#: view:training.course_category:0
+#: field:training.course_category,price_list_id:0
+#: field:training.subscription,pricelist_id:0
+#: field:training.subscription.line,price_list_id:0
+msgid "Pricelist"
+msgstr "Liste de prix"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_session_create_wizard_action
+#: view:training.session.create.wizard:0
+msgid "Plannify Session"
+msgstr "Plannifier une session"
+
+#. module: training
+#: constraint:ir.ui.view:0
+msgid "Invalid XML for View Architecture!"
+msgstr "XML non valide pour l'architecture de la vue"
+
+#. module: training
+#: field:res.partner.contact,linguistic_skill_ids:0
+msgid "Linguistic Skill"
+msgstr "Compétences linguistique"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.subscription_cancellation_wizard_act
+#: view:training.subscription.cancellation.wizard:0
+msgid "Subscription Cancellation Wizard"
+msgstr "Assistant d'annulation d'inscription"
+
+#. module: training
+#: code:addons/training/training.py:0
+#: field:training.content.review,partner_id:0
+#: field:training.participation,partner_id:0
+#: field:training.participation.stakeholder,partner_id:0
+#: rml:training.presence.certificate:0
+#: field:training.subscription,partner_id:0
+#: field:training.subscription.cancellation.wizard,partner_id:0
+#: field:training.subscription.line,partner_id:0
+#: field:training.subscription.line.second,partner_id:0
+#: view:training.subscription.mass.wizard:0
+#: field:training.subscription.mass.wizard,partner_id:0
+#: wizard_view:training.subscription.session,init:0
+#: wizard_field:training.subscription.session,init,partner_id:0
+#, python-format
+msgid "Partner"
+msgstr "Partenaire"
+
+#. module: training
+#: view:training.catalog:0
+msgid "Catalog Description"
+msgstr "Description du catalogue"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_catalog_all_act
+#: model:ir.ui.menu,name:training.training_catalog_mi
+#: model:ir.ui.menu,name:training.training_offer_catalog_all_mi
+#: view:training.catalog:0
+msgid "Catalogs"
+msgstr "Catalogues"
+
+#. module: training
+#: model:training.email.layout,layout:training.default_email_layout
+msgid "<html>\n"
+"    <head>\n"
+"        <title>Training Center</title>\n"
+"        <meta content='text/html' http-equiv='Content-Type' />\n"
+"        <style type='text/css'>\n"
+"            body {\n"
+"                margin-left: auto;\n"
+"                margin-right: auto;\n"
+"                background: white;\n"
+"                font-size: 10pt;\n"
+"                font-family:  Arial, \"Trebuchet MS\", Verdana,  sans-serif;\n"
+"            }\n"
+"            #page {\n"
+"                background: white;\n"
+"                padding: 0.5em;\n"
+"            }\n"
+"            #subject {\n"
+"                text-align: center;\n"
+"                text-decoration:  underline;\n"
+"            }\n"
+"            #footer #sign {\n"
+"                text-align: left;\n"
+"            }\n"
+"            table {\n"
+"                width: 98%;\n"
+"                margin-left: auto;\n"
+"                margin-right: auto;\n"
+"                cellpadding: 0;\n"
+"                cellspacing: 0;\n"
+"            }\n"
+"            .even {\n"
+"                background: white;\n"
+"            }\n"
+"            .underline {\n"
+"               text-decoration: underline;\n"
+"            }\n"
+"        </style>\n"
+"    </head>\n"
+"    <body>\n"
+"        <div id='page'>\n"
+"            <div id='header'>\n"
+"                <div id='logo'><img src=\"cid:company_logo\" /></div>\n"
+"            </div>\n"
+"            <div id='body'>\n"
+"                ${body}\n"
+"            </div>\n"
+"            <div id='footer'>\n"
+"                <div id='sign'>\n"
+"% if sign: \n"
+"   ${sign} \n"
+"% endif\n"
+"                </div>\n"
+"            </div>\n"
+"        </div>\n"
+"    </body>\n"
+"</html>"
+msgstr "<html>\n"
+"    <head>\n"
+"        <title>Training Center</title>\n"
+"        <meta content='text/html' http-equiv='Content-Type' />\n"
+"        <style type='text/css'>\n"
+"            body {\n"
+"                margin-left: auto;\n"
+"                margin-right: auto;\n"
+"                background: white;\n"
+"                font-size: 10pt;\n"
+"                font-family:  Arial, \"Trebuchet MS\", Verdana,  sans-serif;\n"
+"            }\n"
+"            #page {\n"
+"                background: white;\n"
+"                padding: 0.5em;\n"
+"            }\n"
+"            #subject {\n"
+"                text-align: center;\n"
+"                text-decoration:  underline;\n"
+"            }\n"
+"            #footer #sign {\n"
+"                text-align: left;\n"
+"            }\n"
+"            table {\n"
+"                width: 98%;\n"
+"                margin-left: auto;\n"
+"                margin-right: auto;\n"
+"                cellpadding: 0;\n"
+"                cellspacing: 0;\n"
+"            }\n"
+"            .even {\n"
+"                background: white;\n"
+"            }\n"
+"            .underline {\n"
+"               text-decoration: underline;\n"
+"            }\n"
+"        </style>\n"
+"    </head>\n"
+"    <body>\n"
+"        <div id='page'>\n"
+"            <div id='header'>\n"
+"                <div id='logo'><img src=\"cid:company_logo\" /></div>\n"
+"            </div>\n"
+"            <div id='body'>\n"
+"                ${body}\n"
+"            </div>\n"
+"            <div id='footer'>\n"
+"                <div id='sign'>\n"
+"% if sign: \n"
+"   ${sign} \n"
+"% endif\n"
+"                </div>\n"
+"            </div>\n"
+"        </div>\n"
+"    </body>\n"
+"</html>"
+
+#. module: training
+#: view:training.subscription.line:0
+msgid "Cancel (Free)"
+msgstr "Annuler (gratuitement)"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_course_mature_all_act
+#: model:ir.ui.menu,name:training.training_library_course_course_mature_mi
+msgid "Deprecated Courses"
+msgstr "Cours obsolètes"
+
+#. module: training
+#: model:ir.model,name:training.model_training_config_penality
+msgid "training.config.penality"
+msgstr "training.config.penality"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "Replacement: %s %s -> %s %s"
+msgstr "Replacement: %s %s -> %s %s"
+
+#. module: training
+#: help:training.course,p_id:0
+msgid "The parent course"
+msgstr "Module de cours parent"
+
+#. module: training
+#: help:training.content.review.reason,to_invoice:0
+msgid "If checked, this means that this type should normally be invoiced"
+msgstr "Si coché, cela signifie que ce type est facturable"
+
+#. module: training
+#: field:training.email,sign_id:0
+#: field:training.email.sign,sign:0
+msgid "Sign"
+msgstr "Signature"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "You can not duplicate a session"
+msgstr "Vous ne pouvez pas dupliquer une session"
+
+#. module: training
+#: field:account.invoice,send_manually:0
+msgid "Send Manually"
+msgstr "Envoyer manuellement"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_subscription_new_act
+#: model:ir.ui.menu,name:training.training_subscription_management_subscription_new_mi
+msgid "New Subscription"
+msgstr "Nouvelle inscription"
+
+#. module: training
+#: field:training.course,child_reference_id:0
+msgid "Children"
+msgstr "Enfants"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_course_draft_all_act
+#: model:ir.ui.menu,name:training.training_library_course_course_draft_mi
+msgid "Draft Courses"
+msgstr "Cours brouillon"
+
+#. module: training
+#: field:res.partner.contact,matricule:0
+#: field:res.partner.job,external_matricule:0
+msgid "Matricule"
+msgstr "Matricule"
+
+#. module: training
+#: field:training.content.review,reason_to_invoice:0
+#: field:training.content.review.reason,to_invoice:0
+msgid "To Invoice"
+msgstr "À facturer"
+
+#. module: training
+#: code:addons/training/training_email.py:0
+#, python-format
+msgid "Suppliers can only receive procurements emails"
+msgstr "Les fournisseurs ne peuvent recevoir que les emails de type approvisionnement"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_offer_validated_act
+#: model:ir.ui.menu,name:training.training_offer_validated_mi
+msgid "Validated Offers"
+msgstr "Offres validées"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.act_window_subscription_line_to_confirm
+msgid "Subscription Lines To Confirm"
+msgstr "Lignes d'inscription à confirmer"
+
+#. module: training
+#: field:training.content.review.line,review_id:0
+#: field:training.content.review.purchase.line,review_id:0
+#: field:training.content.review.writer,review_id:0
+msgid "Review"
+msgstr "Révision"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_seance_future_all_act
+#: model:ir.ui.menu,name:training.training_planning_future_seances_mi
+msgid "Futur Seances"
+msgstr "Séances futures"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.seance_participations
+#: model:ir.ui.menu,name:training.participant_participation_mi
+#: selection:training.email,target:0
+#: view:training.seance:0
+#: field:training.seance,participant_ids:0
+#: view:training.session.duplicate.wizard:0
+#: view:training.subscription.mass.wizard:0
+msgid "Participants"
+msgstr "Participants"
+
+#. module: training
+#: code:addons/training/training_email.py:0
+#, python-format
+msgid "SMTP Server Error !"
+msgstr "SMTP Server Error !"
+
+#. module: training
+#: help:training.offer,description:0
+msgid "Allows to write the description of the course"
+msgstr "Permet de spécifier une description pour le cours"
+
+#. module: training
+#: field:training.subscription.cancellation.wizard,session_state:0
+#: field:training.subscription.line,session_state:0
+msgid "Session State"
+msgstr "État de la session"
+
+#. module: training
+#: view:training.subscription:0
+msgid "Confirm Request"
+msgstr "Confirmer la demande d'inscription"
+
+#. module: training
+#: help:res.partner.contact,matricule:0
+msgid "The matricule of the contact"
+msgstr "Le matricule du contact"
+
+#. module: training
+#: help:training.subscription,name:0
+msgid "The unique identifier is generated by the system (customizable)"
+msgstr "L'identifiant unique est générer par le système (personalisable)"
+
+#. module: training
+#: field:training.offer.purchase.line.log,date:0
+#: field:training.offer.purchase.line.update.wizard,date:0
+#: field:training.participation,date:0
+#: field:training.participation.reassign.wizard,participation_seance_date:0
+#: field:training.participation.stakeholder,date:0
+#: rml:training.presence.certificate:0
+#: field:training.seance,date:0
+#: rml:training.seance.support.delivery.report:0
+#: field:training.session,date:0
+#: field:training.session.create.wizard,date:0
+#: field:training.subscription.line,date:0
+msgid "Date"
+msgstr "Date"
+
+#. module: training
+#: field:res.partner.contact,technical_skill_ids:0
+#: view:res.partner.contact_technical_skill:0
+msgid "Technical Skill"
+msgstr "Compétence technique"
+
+#. module: training
+#: help:training.offer,product_id:0
+msgid "An offer can be a product for invoicing"
+msgstr "Une offre peut être un produit facturable"
+
+#. module: training
+#: field:training.email,notes:0
+#: view:training.subscription.line:0
+#: field:training.subscription.line,internal_note:0
+msgid "Internal Note"
+msgstr "Note interne"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.res_partner_contact_technical_skill_all_act
+#: model:ir.ui.menu,name:training.partner_config_contact_technical_skill_all
+msgid "Technical Skills"
+msgstr "Compétances technique"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "You have selected a session with a shared seance"
+msgstr "Vous avez selectionner une session contenant une séance partagée"
+
+#. module: training
+#: field:training.course,lang_id:0
+#: wizard_field:training.course.create.block.offer,init,lang_id:0
+#: field:training.course.offer.rel,lang_id:0
+#: field:training.offer,lang_id:0
+msgid "Language"
+msgstr "Langue"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_catalog_new_act
+#: model:ir.ui.menu,name:training.training_offer_catalog_new_mi
+msgid "New Catalog"
+msgstr "Nouveau catalogue"
+
+#. module: training
+#: selection:training.catalog,state:0
+#: selection:training.course,state_course:0
+#: selection:training.email,state:0
+#: selection:training.offer,state:0
+#: selection:training.seance,state_course:0
+msgid "Deprecated"
+msgstr "Obsolète"
+
+#. module: training
+#: model:ir.model,name:training.model_training_offer_purchase_line
+msgid "training.offer.purchase.line"
+msgstr "training.offer.purchase.line"
+
+#. module: training
+#: selection:training.seance,confirmed_lecturer:0
+#: selection:training.seance,presence_form:0
+msgid "No"
+msgstr "Non"
+
+#. module: training
+#: model:ir.model,name:training.model_training_participation_stakeholder
+msgid "training.participation.stakeholder"
+msgstr "training.participation.stakeholder"
+
+#. module: training
+#: view:res.partner.contact:0
+msgid "Linguistic Skills"
+msgstr "Conpétences Linguistique"
+
+#. module: training
+#: field:training.subscription.cancellation.wizard,session_offer_id:0
+msgid "Session Offer"
+msgstr "Offre de la session"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "You can not suppress a seance with a invoiced subscription"
+msgstr "Vous ne pouvez pas supprimer de séance liée avec une inscription facturée"
+
+#. module: training
+#: view:training.course:0
+#: view:training.subscription.line:0
+msgid "History"
+msgstr "Historique"
+
+#. module: training
+#: help:training.offer,notification_note:0
+msgid "This note will be show on notification emails"
+msgstr "Cette note sera visible sur les emails de notification"
+
+#. module: training
+#: code:addons/training/training.py:0
+#, python-format
+msgid "%d seance(s) updated"
+msgstr "%d séance(s) mise(s) à jour"
+
+#. module: training
+#: field:training.content.review.reason,code:0
+#: field:training.course.kind,code:0
+#: view:training.course_category:0
+#: field:training.offer.category,code:0
+#: field:training.offer.kind,code:0
+msgid "Code"
+msgstr "Code"
+
+#. module: training
+#: field:res.partner.job,orientation:0
+msgid "Orientation"
+msgstr "Orientation"
+
+#. module: training
+#: field:training.subscription,responsible_id:0
+msgid "Creator"
+msgstr "Créateur"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.action_training_participation_all
+#: model:ir.ui.menu,name:training.training_participation_all_mi
+msgid "Seance Participations"
+msgstr "Participations au séances"
+
+#. module: training
+#: model:ir.actions.act_window,name:training.training_offer_new_act
+msgid "New Offer"
+msgstr "Nouvelle offre"
+
+#. module: training
+#: field:training.subscription.line,notification_text:0
+msgid "Notification (Kind)"
+msgstr "Notification (Type)"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Subscription Draft -> Confirmation (Session Not Confirmed)"
+msgstr "Inscription brouillon -> confirmée (session non confirmée)"
+
+#. module: training
+#: selection:training.email,trigger:0
+msgid "Session Open -> Confirmed"
+msgstr "Session ouverte -> confirmée"
+
+#. module: training
+#: view:training.catalog:0
+#: view:training.content.review:0
+#: view:training.content.review.line.wizard:0
+#: wizard_button:training.course.create.block.offer,init,end:0
+#: wizard_button:training.course.create.offer,init,end:0
+#: wizard_button:training.course.validate,init,end:0
+#: view:training.offer.purchase.line.update.wizard:0
+#: view:training.participation.reassign.wizard:0
+#: view:training.participation.stakeholder.request:0
+#: view:training.seance:0
+#: view:training.seance.generate.zip.wizard:0
+#: view:training.session:0
+#: view:training.session.create.wizard:0
+#: view:training.session.duplicate.wizard:0
+#: view:training.subscription:0
+#: view:training.subscription.cancellation.wizard:0
+#: view:training.subscription.line:0
+#: wizard_button:training.subscription.line.confirm,init,end:0
+#: wizard_button:training.subscription.line_second,init,end:0
+#: wizard_button:training.subscription.session,init,end:0
+msgid "Cancel"
+msgstr "Annuler"
+
+#. module: training
+#: help:training.seance,participant_count:0
+msgid "Confirmed Subscriptions for this seance"
+msgstr "Inscriptions confirmées pour cette séance"
+
+#. module: training
+#: view:training.group:0
+msgid "Information"
+msgstr "Information"
+
+#. module: training
+#: view:training.subscription.cancellation.wizard:0
+#: selection:training.subscription.cancellation.wizard,state:0
+#: view:training.subscription.line:0
+msgid "Replacement"
+msgstr "Remplacement"
+
+#. module: training
+#: help:training.base.purchase_line,product_uom:0
+#: help:training.course.purchase_line,product_uom:0
+#: help:training.offer.purchase.line,product_uom:0
+#: help:training.seance.purchase_line,product_uom:0
+msgid "The unit of mesure for this product"
+msgstr "L'unité de mesure de ce produit"
+
+#. module: training
+#: wizard_view:training.subscription.line_second,init:0
+msgid "This wizard will generate the subscription !"
+msgstr "Cet assistant va créer les inscriptions !"
+
+#. module: training
+#: help:training.course_type,min_limit:0
+msgid "The minimum threshold is the minimum for this type of course"
+msgstr "Le seuil minimum est le minimum pour ce type de cours"
+
+#. module: training
+#: help:training.offer,is_standalone:0
+msgid "Allows to know if an offer is standalone or a block of courses"
+msgstr "Permet de savoir si une offre est un cours seul, ou un bloc de cours"
+
+#. module: training
+#: model:ir.model,name:training.model_training_participation_stakeholder_request
+msgid "training.participation.stakeholder.request"
+msgstr "training.participation.stakeholder.request"
+
+#. module: training
+#: field:training.subscription.mass.line,allow_closed_session:0
+msgid "Allow Closed Session"
+msgstr "Permettre le choix des session fermée"
+
+#. module: training
+#: view:purchase.order:0
+#: view:training.content.review:0
+#: view:training.subscription:0
+#: view:training.subscription.line:0
+msgid "Create Invoice"
+msgstr "Créer la facture"
+
+#. module: training
+#: field:purchase.order,date_approved:0
+msgid "Date Approved"
+msgstr "Date d'approbation"
+
+#. module: training
+#: model:ir.actions.wizard,name:training.wizard_subscription_session
+msgid "Create Subscription"
+msgstr "Créer une inscription"
+
+#. module: training
+#: help:training.session,available_seats:0
+msgid "Available Seats = Maximum Threshold - Total Confirmed Seats"
+msgstr "Places disponibles = Seuil Max. - Total places confirmées"
+
+#. module: training
+#: view:training.offer:0
+msgid "Other Informations"
+msgstr "Autres informations"
+
+#. module: training
+#: field:training.subscription,is_from_web:0
+msgid "Is from Web?"
+msgstr "Provient du web ?"
+
+#. module: training
+#: selection:training.participation.stakeholder.request,state:0
+msgid "Requested"
+msgstr "Demandé"
+
+#. module: training
+#: help:training.course,reference_id:0
+msgid "The master course is necessary if the user wants to link certain courses together to easy the managment"
+msgstr "Le cours référant est nécessaire l'ont veut liéer certains cours ensemble pour facilier leur gestion"
+
+#. module: training
+#: field:training.seance,is_first_seance:0
+msgid "First Seance"
+msgstr "1ère séance"
+
+#. module: training
+#: view:training.subscription.mass.wizard:0
+msgid "Partner Filter"
+msgstr "Filtre partenaire"
+
+#. module: training
+#: help:training.session,draft_subscriptions:0
+msgid "Draft Subscriptions for this session"
+msgstr "Inscriptions brouillon pour cette session"
+
+#. module: training
+#: field:training.course,purchase_line_ids:0
+#: field:training.seance,purchase_line_ids:0
+msgid "Supplier Commands"
+msgstr "Commandes fournisseur"
+
+#. module: training
+#: view:ir.attachment:0
+msgid "Component"
+msgstr "Composant"
+
+#. module