← Back to team overview

openerp-dev-web team mailing list archive

lp:~openerp-dev/openobject-addons/addons-convert_training-room_intra_ysa into lp:~openobject-training/openobject-addons/training_with_history

 

Yogesh(Open ERP) has proposed merging lp:~openerp-dev/openobject-addons/addons-convert_training-room_intra_ysa into lp:~openobject-training/openobject-addons/training_with_history.

Requested reviews:
  OpenObject Training (openobject-training)

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

training_room, training_intra:- convert into v6 and fix problem. training:- add button icon.
-- 
https://code.launchpad.net/~openerp-dev/openobject-addons/addons-convert_training-room_intra_ysa/+merge/53756
Your team OpenERP R&D Team is subscribed to branch lp:~openerp-dev/openobject-addons/addons-convert_training-room_intra_ysa.
=== modified file 'training/training_email_view.xml'
--- training/training_email_view.xml	2011-03-14 10:48:46 +0000
+++ training/training_email_view.xml	2011-03-17 09:08:29 +0000
@@ -234,7 +234,7 @@
             <field name="search_view_id" ref="training_email_layout_search"/>
         </record>
 
-        <menuitem parent="training_config_mi" id="training_email_all_emails_mi" name="Emails" sequence='50'/>
+        <menuitem parent="training_config_mi" id="training_email_all_emails_mi" name="Emails" sequence='2'/>
         <menuitem parent="training_email_all_emails_mi" id="training_email_all_mi"
             action="training_email_all_act" sequence='1'/>
         <menuitem parent="training_email_all_emails_mi" id="training_email_stylegroup_mi"
@@ -258,7 +258,7 @@
                     <separator string="Message" colspan="4" />
                     <field name="message" colspan="4" nolabel="1" />
                     <separator colspan="4" />
-                    <button name="action_send" string="Send Email" type="object" colspan="4" />
+                    <button name="action_send" string="Send Email" type="object" colspan="4" icon="gtk-execute"/>
                 </form>
             </field>
         </record>

=== modified file 'training/training_holiday_view.xml'
--- training/training_holiday_view.xml	2011-03-14 10:48:46 +0000
+++ training/training_holiday_view.xml	2011-03-17 09:08:29 +0000
@@ -77,7 +77,7 @@
             <field name="search_view_id" ref="holiday_period_search"/>
         </record>
 
-        <menuitem id="holiday_mi" name="Non-Working Days" parent="training_config_mi" sequence='60'/>
+        <menuitem id="holiday_mi" name="Non-Working Days" parent="training_config_mi" sequence='3'/>
         <menuitem id="holiday_period_all_mi" action="holiday_period_all_act" parent="holiday_mi" />
 
         <record model="ir.ui.view" id="holiday_year_tree">

=== modified file 'training/training_view.xml'
--- training/training_view.xml	2011-03-14 10:48:46 +0000
+++ training/training_view.xml	2011-03-17 09:08:29 +0000
@@ -483,12 +483,12 @@
                     <group colspan="4" col="6">
                         <field name="state" />
                         <button name="signal_validate" string="Validate" type="workflow" states="draft"
-                            confirm="Do you want to validate this catalog ?" />
+                            icon="terp-document-new" confirm="Do you want to validate this catalog ?" />
                         <button name="signal_cancel" string="Cancel" type="workflow" states="validated,inprogress"
-                            confirm="Do you want to cancel this catalog ?"/>
-                        <button name="signal_inprogress" string="In Progress" type="workflow" states="validated" />
+                            icon="gtk-cancel" confirm="Do you want to cancel this catalog ?"/>
+                        <button name="signal_inprogress" string="In Progress" type="workflow" states="validated" icon="terp-accessories-archiver"/>
                         <button name="signal_deprecate" string="Deprecate" type="workflow" states="inprogress"
-                            confirm="Do you want to deprecate this catalog ?"/>
+                            icon="gtk-execute" confirm="Do you want to deprecate this catalog ?"/>
                     </group>
                 </form>
             </field>
@@ -633,12 +633,12 @@
                     <group colspan="4" col="3">
                         <field name="state" />
                         <group col="6" groups="training.group_session_manager">
-                            <button name="signal_open" string="Open" type="workflow" states="draft" confirm="Do you want to open this session ?"/>
-                            <button name="signal_open_confirm" string="Confirm" type="workflow" states="opened" confirm="Do you want to confirm this session ?" />
-                            <button name="signal_close_confirm" string="Close Subscriptions" type="workflow" states="opened_confirmed" confirm="Do you want to close the subscription for this session ?" />
-                            <button name="signal_inprogress" string="Start" type="workflow" states="closed_confirmed" confirm="Do you want to close this session for the subscription ?" />
-                            <button name="signal_close" string="Close" type="workflow" states="inprogress"  confirm="Do you want to close this session ?" />
-                            <button name="signal_cancel" string="Cancel" type="workflow" states="draft,opened,opened_confirmed,closed_confirmed" confirm="Do you want to cancel this session ?"/>
+                            <button name="signal_open" icon="gtk-ok" string="Open" type="workflow" states="draft" confirm="Do you want to open this session ?"/>
+                            <button name="signal_open_confirm" icon="gtk-go-up" string="Confirm" type="workflow" states="opened" confirm="Do you want to confirm this session ?" />
+                            <button name="signal_close_confirm" icon="gtk-close" string="Close Subscriptions" type="workflow" states="opened_confirmed" confirm="Do you want to close the subscription for this session ?" />
+                            <button name="signal_inprogress" icon="gtk-ok" string="Start" type="workflow" states="closed_confirmed" confirm="Do you want to close this session for the subscription ?" />
+                            <button name="signal_close" icon="gtk-close" string="Close" type="workflow" states="inprogress"  confirm="Do you want to close this session ?" />
+                            <button name="signal_cancel" icon="gtk-cancel" string="Cancel" type="workflow" states="draft,opened,opened_confirmed,closed_confirmed" confirm="Do you want to cancel this session ?"/>
                         </group>
                     </group>
                 </form>
@@ -777,9 +777,9 @@
                     <separator string="" colspan="4" />
                     <group colspan="4" col="5">
                         <field name="state" invisible="1" />
-                        <button string="Cancel" type="object" special="cancel" name="action_close" states="selection"/>
-                        <button string="Close" type="object" special="cancel" name="action_close" states="result" />
-                        <button string="Generate Reports" type="object" name="action_generate_zip" states="selection"/>
+                        <button string="Cancel" icon="gtk-cancel" type="object" special="cancel" name="action_close" states="selection"/>
+                        <button string="Close" icon="gtk-close" type="object" special="cancel" name="action_close" states="result" />
+                        <button string="Generate Reports" icon="gtk-new" type="object" name="action_generate_zip" states="selection"/>
                     </group>
                 </form>
             </field>
@@ -909,15 +909,15 @@
                     <group colspan="4" col="3">
                         <field name="state" />
                         <group col="5" groups="training.group_seance_manager">
-                        <button name="seance_confirm" string="Confirm" type="workflow" states="opened" confirm="Do you want to confirm this seance (procurements, ...) ?" />
-                        <button name="action_do_confirm" string="Re-generate Purchase" type="object" states="confirmed,inprogress" confirm="Are you sure you want to regenerate all purchases for this seance?" groups="training.group_seance_manager"/>
-                        <button name="signal_inprogress" string="Start" type="workflow" states="confirmed" confirm="Do you want to start this seance ?" />
-                        <button name="signal_close" string="Close" type="workflow" states="inprogress" confirm="Do you want to close this seance ?" />
-                        <button name="signal_cancel" string="Cancel" type="workflow" states="opened,confirmed"  confirm="Do you want to cancel this seance ?" />
-                        <button name="signal_seance_done" string="Done" type="workflow" states="closed" />
+	                        <button name="seance_confirm" icon="gtk-go-up" string="Confirm" type="workflow" states="opened" confirm="Do you want to confirm this seance (procurements, ...) ?" />
+	                        <button name="action_do_confirm" icon="gtk-refresh" string="Re-generate Purchase" type="object" states="confirmed,inprogress" confirm="Are you sure you want to regenerate all purchases for this seance?" groups="training.group_seance_manager"/>
+	                        <button name="signal_inprogress" icon="gtk-ok" string="Start" type="workflow" states="confirmed" confirm="Do you want to start this seance ?" />
+	                        <button name="signal_close" icon="gtk-close" string="Close" type="workflow" states="inprogress" confirm="Do you want to close this seance ?" />
+	                        <button name="signal_cancel" icon="gtk-cancel" string="Cancel" type="workflow" states="opened,confirmed"  confirm="Do you want to cancel this seance ?" />
+	                        <button name="signal_seance_done" icon="gtk-go-up" string="Done" type="workflow" states="closed" />
                         </group>
                     </group>
-                    <button name="%(seance_generate_zip_wizard_act)d" type="action" string="Generate Reports" colspan="4" groups="training.group_training"/>
+                    <button name="%(seance_generate_zip_wizard_act)d" type="action" string="Generate Reports" colspan="4" groups="training.group_training" icon="gtk-execute"/>
                 </form>
             </field>
         </record>
@@ -1131,7 +1131,7 @@
                                                 <field name="paid" />
                                             </group>
                                             <group states="confirmed,done">
-                                                <button name="action_create_invoice" string="Create Invoice" type="object" attrs="{'invisible': [('invoice_line_id', '!=', False)]}"/>
+                                                <button name="action_create_invoice" string="Create Invoice" icon="gtk-new" type="object" attrs="{'invisible': [('invoice_line_id', '!=', False)]}"/>
                                             </group>
                                         </group>
                                     </group>
@@ -1160,9 +1160,9 @@
                     <group colspan="4" col="6">
                         <field name="state" />
                         <button string="Confirm Request" type="workflow" name="signal_confirm" states="draft"
-                            confirm="Do you want to confirm the request for this subscription ?" />
+                            icon="gtk-go-up" confirm="Do you want to confirm the request for this subscription ?" />
                         <button string="Cancel" type="workflow" name="signal_cancel" states="draft"
-                            confirm="Do you want to cancel this subscription ?" />
+                            icon="gtk-cancel" confirm="Do you want to cancel this subscription ?" />
                     </group>
                 </form>
             </field>
@@ -1295,7 +1295,7 @@
                     <group states="end" colspan="4">
                         <label string="The operation has been done with success !" colspan="4" />
                         <separator string="" colspan="4" />
-                        <button name="action_done" string="Done" type="object" states="end" />
+                        <button name="action_done" icon="gtk-ok" string="Done" type="object" states="end" />
                     </group>
 
                     <group col="7" colspan="4" attrs="{'invisible' : [('state', '=', 'end')]}">
@@ -1303,9 +1303,9 @@
                         <field name="state" invisible="1" />
                         <button name="action_cancel" string="Cancel" type="object" special="cancel" icon="gtk-cancel" states="init,replacement,postponement,cancellation"/>
                         <label string="" />
-                        <button name="action_cancellation" string="Cancellation" type="object" states="init" />
-                        <button name="action_replacement" string="Replacement" type="object" states="init" />
-                        <button name="action_postponement" string="Postponement" type="object" states="init" />
+                        <button name="action_cancellation" string="Cancellation" type="object" states="init" icon="gtk-cancel"/>
+                        <button name="action_replacement" string="Replacement" type="object" states="init" icon="gtk-refresh"/>
+                        <button name="action_postponement" string="Postponement" type="object" states="init" icon="execute"/>
                         <label string="" />
                         <button name="action_apply" string="Apply" type="object" states="cancellation,replacement,postponement" icon="gtk-apply"/>
                     </group>
@@ -1355,7 +1355,7 @@
                                         <field name="paid" />
                                     </group>
                                     <group states="confirmed,done" groups="training.group_training">
-                                        <button name="action_create_invoice" string="Create Invoice" type="object"
+                                        <button name="action_create_invoice" string="Create Invoice" type="object" icon="gtk-new"
                                             attrs="{'invisible': [('invoice_line_id', '!=', False)]}" />
                                     </group>
                                 </group>
@@ -1388,14 +1388,15 @@
                     <group col="9" colspan="4">
                         <field name="state" />
                         <button name="signal_confirm" string="Confirm" type="workflow" states="draft"
-                            confirm="Do you want to confirm this subscription line ?"/>
+                            icon="gtk-go-up" confirm="Do you want to confirm this subscription line ?"/>
                         <button name="signal_cancel" string="Cancel" type="workflow" states="draft"
-                            confirm="Do you want to cancel this subscription line ?" />
+                            icon="gtk-cancel" confirm="Do you want to cancel this subscription line ?" />
                         <button name="signal_invoice_and_send_emails" string="Cancel (Penalities)" type="workflow" states="confirmed"
-                            confirm="Do you want to cancel this subscription line ?" />
+                            icon="gtk-cancel" confirm="Do you want to cancel this subscription line ?" />
                         <button name="%(training.subscription_cancellation_wizard_act)d"
                             string="Cancel (Free)"
                             type="action"
+                            icon="gtk-cancel"
                             groups="training.group_subscription_manager"
                             states="confirmed"
                             context="{'default_state':'cancellation'}"
@@ -1403,18 +1404,20 @@
                         <button name="%(training.subscription_cancellation_wizard_act)d"
                             string="Replacement"
                             type="action"
+                            icon="gtk-refresh"
                             states="confirmed"
                             groups="training.group_subscription_manager"
                             context="{'default_state':'replacement'}"
                             confirm="Do you want to do a replacement for this subscription line ?" />
                         <button name="%(training.subscription_cancellation_wizard_act)d"
                             string="Postponement"
+                            icon="gtk-execute"
                             type="action"
                             states="confirmed"
                             groups="training.group_subscription_manager"
                             context="{'default_state':'postponement'}"
                             confirm="Do you want to postpone this subscription line ?" />
-                        <button name="signal_done" string="Done" type="workflow"  states="confirmed" />
+                        <button name="signal_done" string="Done" type="workflow"  states="confirmed" icon="gtk-go-up"/>
                     </group>
                 </form>
             </field>
@@ -1566,8 +1569,8 @@
                 <form string="Procurements Update">
                     <group colspan="4" col="2" states="confirm">
                         <label string="Are you sure you want to update procurements all opened seance in all future session?" colspan="2"/>
-                        <button string="Cancel" special="cancel" name="action_close"/>
-                        <button string="Confirm" type="object" name="action_confirm"/>
+                        <button string="Cancel" special="cancel" name="action_close" icon="gtk-cancel"/>
+                        <button string="Confirm" type="object" name="action_confirm" icon="gtk-go-up"/>
                     </group>
                     <group colspan="4" col="4" states="update" expand="1">
                         <field name="name"/>
@@ -1687,10 +1690,12 @@
                             </field>
                             <button name="action_load_procurements"
                                 type="object"
+                                icon="gtk-execute"
                                 string="Load Procurements From Courses" colspan="4"
                                 attrs="{'invisible' : [('state', '=', 'validated')]}"/>
                             <button name="%(training_offer_purchase_line_wizard_act)d"
                                 type="action"
+                                icon="gtk-execute"
                                 string="Update Seance Procurments" colspan="4"/>
                         </page>
                         <page string="Pedagogical Suggestion">
@@ -1717,12 +1722,12 @@
                     <group col="5" colspan="4">
                         <field name="state" />
                         <button name="signal_validate" string="Validate" type="workflow" states="draft"
-                            confirm="Do you want to validate this offer ?"/>
+                            icon="gtk-new" confirm="Do you want to validate this offer ?"/>
                         <button name="signal_deprecate" string="Deprecate" type="workflow" states="validated,draft"
-                            confirm="Do you want to deprecate this offer ?" />
+                            icon="gtk-execute" confirm="Do you want to deprecate this offer ?" />
                         <button name="draft_cb" string="Draft" type="object" states="validated,deprecated"
                             confirm="Are you sure to reset to Draft (Check the sessions for this offer) ?"
-                            groups="training.group_offer_manager" />
+                            groups="training.group_offer_manager" icon="gtk-new"/>
                     </group>
                 </form>
             </field>
@@ -1823,7 +1828,7 @@
 
         <menuitem id="training_config_mi" parent="training_mi" name="Configuration" sequence="1"/>
 
-        <menuitem id="training_config_library_mi" parent="training_config_mi" name="Library" />
+        <menuitem id="training_config_library_mi" parent="training_config_mi" name="Library" sequence="1"/>
         <menuitem id="training_config_library_categ_mi" parent="training_config_library_mi" name="Categorisation" sequence='10'/>
 
         <menuitem id="course_theme_all_mi" parent="training_config_library_categ_mi" action="course_theme_all_act" sequence='10'/>
@@ -1999,8 +2004,8 @@
                         <field name="price" />
                         <field name="purchase_order_id" groups="training.group_training" />
                         <button type="object" name="action_create_purchase_order" string="Create Purchase Order"
-                            attrs="{'invisible' : [('purchase_order_id', '!=', False)]}" icon="gtk-new"
-                            groups="training.group_training"/>
+                            attrs="{'invisible' : [('purchase_order_id', '!=', False)]}"
+                            groups="training.group_training" icon="gtk-new"/>
                         <field name="amount_to_pay" groups="training.group_training" />
                         <field name="purchase_paid" groups="training.group_training" select="2"/>
                     </group>
@@ -2039,7 +2044,7 @@
                             states="draft,valid,requested,accepted"
                             groups="training.group_request_manager"
                             confirm="Do you want to cancel this request ?" />
-                        <button type="workflow" name="pshr_done" string="Done" states="accepted" groups="training.group_request_manager"/>
+                        <button type="workflow" name="pshr_done" string="Done" icon="gtk-ok" states="accepted" groups="training.group_request_manager"/>
                     </group>
                 </form>
             </field>

=== renamed file 'training_intra/__terp__.py' => 'training_intra/__openerp__.py'
=== modified file 'training_intra/report/detail_offer_intra.py'
--- training_intra/report/detail_offer_intra.py	2010-10-08 07:14:40 +0000
+++ training_intra/report/detail_offer_intra.py	2011-03-17 09:08:29 +0000
@@ -56,6 +56,8 @@
 
 class report_sxw_offer_intra_detail(report_sxw.report_sxw):
     def create_single_pdf(self, cr, uid, ids, data, report_xml, context=None):
+        if context is None:
+            context = {}
         pool = pooler.get_pool(cr.dbname)
         offer_pool = pool.get('training.offer')
         sale_order_report = netsvc.LocalService('report.sale.order')

=== modified file 'training_intra/training_intra.py'
--- training_intra/training_intra.py	2011-02-25 12:33:02 +0000
+++ training_intra/training_intra.py	2011-03-17 09:08:29 +0000
@@ -21,10 +21,11 @@
 #    along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 ############################################################################################
-from osv import osv, fields
-import tools
-from tools import config
+
+from osv import osv
+from osv import fields
 from tools.translate import _
+import decimal_precision as dp
 
 class sale_order(osv.osv):
     _inherit = 'sale.order'
@@ -41,11 +42,7 @@
     _columns = {
         'offer_partner_id' : fields.related('offer_id', 'partner_id', type='many2one', relation='res.partner', readonly=True, string='Partner', select=1),
         'offer_sale_order_id' : fields.related('offer_id', 'sale_order_id', type='many2one', relation='sale.order', readonly=True, string='Sale Order', select=1),
-        'offer_sale_order_state' : fields.related('offer_id', 'sale_order_id',
-                                                  'state',
-                                                  string="Sale Order's State",
-                                                  type='selection',
-                                                  readonly=True,
+        'offer_sale_order_state' : fields.related('offer_id', 'sale_order_id', 'state', string="Sale Order's State", type='selection', readonly=True,
                                                   selection=[
                                                       ('draft','Quotation'),
                                                       ('waiting_date','Waiting Schedule'),
@@ -62,9 +59,7 @@
     def on_change_offer(self, cr, uid, ids, offer_id, context=None):
         if not offer_id:
             return False
-
         offer = self.pool.get('training.offer').browse(cr, uid, offer_id, context=context)
-
         return {
             'value' : {
                 'kind' : offer.kind,
@@ -83,7 +78,6 @@
     def _is_intra_search(self, cr, uid, obj, name, args, context=None):
         if not len(args):
             return []
-
         cr.execute("""
                    SELECT DISTINCT(tssr.seance_id)
                      FROM training_session_seance_rel tssr,
@@ -101,26 +95,15 @@
 
     def _is_intra_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(session.kind == 'intra' for session in obj.session_ids)
-
         return res
 
     _columns = {
-        'is_intra' : fields.function(_is_intra_compute,
-                                     method=True,
-                                     fnct_search=_is_intra_search,
-                                     type='boolean',
-                                     string='Is Intra'),
-
+        'is_intra' : fields.function(_is_intra_compute, method=True, fnct_search=_is_intra_search, type='boolean', string='Is Intra'),
         'partner_id' : fields.related('session_ids', 'offer_id', 'partner_id', type='many2one', relation='res.partner', readonly=True, string='Partner', select=1),
         'sale_order_id' : fields.related('session_ids', 'offer_id', 'sale_order_id', type='many2one', relation='sale.order', readonly=True, string='Sale Order'),
-        'sale_order_state' : fields.related('session_ids', 'offer_id', 'sale_order_id',
-                                            'state',
-                                            string="Sale Order's State",
-                                            type='selection',
-                                            readonly=True,
+        'sale_order_state' : fields.related('session_ids', 'offer_id', 'sale_order_id', 'state', string="Sale Order's State", type='selection', readonly=True,
                                             selection=[
                                                 ('draft','Quotation'),
                                                 ('waiting_date','Waiting Schedule'),
@@ -131,7 +114,6 @@
                                                 ('done','Done'),
                                                 ('cancel','Cancel'),
                                             ],
-                                            select=1
                                            ),
     }
 
@@ -141,6 +123,10 @@
     _inherit = 'training.seance.purchase_line'
 
     def _get_analytic_account_id(self, cr, uid, ids, context=None):
+        if not ids:
+            return False
+        if context is None:
+            context = {}
         po_line = self.browse(cr, uid, ids[0], context=context)
         if po_line.seance_id.is_intra:
             offer_record = po_line.seance_id.session_ids[0].offer_id
@@ -157,38 +143,29 @@
     _name = 'training.intra.budget.tpl'
 
     def _amount_all(self, cr, uid, ids, fieldnames, args, context=None):
+        if context is None:
+            context = {}
         res = {}
-
         for obj in self.browse(cr, uid, ids, context=context):
             values = {'costs' : 0.0, 'revenues' : 0.0, 'balance' : 0.0}
-
             for line in obj.line_ids:
                 if line.type == 'cost':
                     values['costs'] += line.price
                 else:
                     values['revenues'] += line.price
-
                 values['balance'] = values['revenues'] - values['costs']
-
             res[obj.id] = values
-
         return res
 
     _columns = {
         'name' : fields.char('Name', size=64, required=True),
         'line_ids' : fields.one2many('training.intra.budget.tpl.line', 'template_id', 'Budget Intra Template Lines'),
-        'costs' : fields.function(_amount_all, method=True, multi="compute", string="Costs",
-                                  type="float",
-                                  store=True,
-                                  readonly=True,
-                                  digits=(16, int(config['price_accuracy']))
-                                 ),
+        'costs' : fields.function(_amount_all, method=True, multi="compute", string="Costs", type="float", store=True,
+                                  readonly=True, digits_compute=dp.get_precision('Account')),
         'revenues' : fields.function(_amount_all, method=True, multi="compute", string="Revenues", type="float", store=True, readonly=True,
-                                     digits=(16, int(config['price_accuracy']))
-                                    ),
+                                      digits_compute=dp.get_precision('Account')),
         'balance' : fields.function(_amount_all, method=True, multi="compute", string="Balance", type="float", store=True, readonly=True,
-                                     digits=(16, int(config['price_accuracy']))
-                                   ),
+                                      digits_compute=dp.get_precision('Account')),
     }
 
 training_intra_budget_tpl()
@@ -198,10 +175,8 @@
 
     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] = obj.product_qty * obj.unit_price
-
         return res
 
     _columns = {
@@ -210,13 +185,9 @@
         'product_id' : fields.many2one('product.product', 'Product', required=True),
         'product_qty' : fields.float('Quantity', required=True),
         'product_uom' : fields.many2one('product.uom', 'Product UoM', required=True),
-        'unit_price' : fields.float('Unit Price', required=True, digits=(16, int(config['price_accuracy']))),
-        'price' : fields.function(_price_compute,
-                                  method=True,
-                                  store=True,
-                                  string='Subtotal',
-                                  digits=(16, int(config['price_accuracy'])),
-                                  type='float'),
+        'unit_price' : fields.float('Unit Price', required=True,  digits_compute=dp.get_precision('Account')),
+        'price' : fields.function(_price_compute, method=True, store=True, string='Subtotal',
+                                   digits_compute=dp.get_precision('Account'), type='float'),
         'type' : fields.selection([('cost', 'Cost'),('revenue', 'Revenue')], 'Type', required=True),
     }
 
@@ -333,39 +304,22 @@
         return res
 
     _columns = {
-        'intra_session_started': fields.function(
-                                 _is_intra_started,
-                                fnct_search=_is_intra_started_search,
-                                type='boolean',
-                                string='Is Intra Session Started',
-                                method=True,
-                                readonly=True),
-        'costs' : fields.function(_amount_all,
-                                  method=True,
-                                  multi="compute",
-                                  string="Costs",
-                                  digits=(16, int(config['price_accuracy'])),
-                                  type="float",
+        'intra_session_started': fields.function(_is_intra_started, fnct_search=_is_intra_started_search, type='boolean',
+                                string='Is Intra Session Started', method=True, readonly=True),
+        'costs' : fields.function(_amount_all, method=True, multi="compute", string="Costs", digits_compute=dp.get_precision('Account'),
+                                  type="float",readonly=True
                                   #store={
                                   #    'training.intra.budget.line' : (_get_offer, None, 10),
                                   #},
-                                  readonly=True),
-        'revenues' : fields.function(_amount_all,
-                                     method=True,
-                                     multi="compute",
-                                     string="Revenues",
-                                     digits=(16, int(config['price_accuracy'])),
-                                     type="float",
+                                  ),
+        'revenues' : fields.function(_amount_all, method=True, multi="compute", string="Revenues",
+                                     digits_compute=dp.get_precision('Account'), type="float",
                                      #store={
                                      #    'training.intra.budget.line' : (_get_offer, None, 10),
                                      #},
                                      readonly=True),
-        'balance' : fields.function(_amount_all,
-                                    method=True,
-                                    multi="compute",
-                                    string="Balance",
-                                    digits=(16, int(config['price_accuracy'])),
-                                    type="float",
+        'balance' : fields.function(_amount_all, method=True, multi="compute", string="Balance",
+                                    digits_compute=dp.get_precision('Account'), type="float",
                                     #store={
                                     #    'training.intra.budget.line' : (_get_offer, None, 10),
                                     #},
@@ -375,16 +329,10 @@
         'address_id' : fields.many2one('res.partner.address', 'Address'),
         'job_id' : fields.many2one('res.partner.job', 'Contact'),
         'job_email' : fields.char('Email', size=64),
-
         'analytic_account_id': fields.many2one('account.analytic.account', 'Analytic Account'),
-
         'sale_order_id' : fields.many2one('sale.order', 'Sale Order', readonly=True),
         'sale_order_create_date' : fields.related('sale_order_id', 'create_date', type='datetime', readonly=True, string="Sale Order's Create Date"),
-        'sale_order_state' : fields.related('sale_order_id',
-                                            'state',
-                                            string="Sale Order's State",
-                                            type='selection',
-                                            readonly=True,
+        'sale_order_state' : fields.related('sale_order_id', 'state', string="Sale Order's State", type='selection', readonly=True,
                                             selection=[
                                                 ('draft','Quotation'),
                                                 ('waiting_date','Waiting Schedule'),
@@ -395,38 +343,28 @@
                                                 ('done','Done'),
                                                 ('cancel','Cancel'),
                                             ],
-                                            select=1
                                            ),
-
         'budget_intra_template_id' : fields.many2one('training.intra.budget.tpl', 'Budget Intra Template'),
         'budget_intra_line_ids' : fields.one2many('training.intra.budget.line', 'offer_id', 'Budget Intra Lines'),
         'attachment_id' : fields.many2one('ir.attachment', 'Support of Course', domain="[('res_model', '=', 'training.course'),('type', '=', 'course_material')]"),
-        'attachment_price' : fields.related('attachment_id', 'price', type='float',
-                                            digits=(16, int(config['price_accuracy'])),
-                                            string="Support's Price", readonly=True),
+        'attachment_price' : fields.related('attachment_id', 'price', type='float', string="Support's Price", readonly=True,
+                                            digits_compute=dp.get_precision('Account')),
         'note_intra' : fields.text('Note'), # note for internal usage
         'remark_intra' : fields.text('Remark(s)'), # node for client usage
         'coordinator' : fields.many2one('res.users', 'Coordinator'),
-
         'number_of_sessions' : fields.integer('Number of Sessions'),
         'number_of_participants' : fields.integer('Number of Participants', help='The number of participants of all sessions'),
         'max_participants_seance' : fields.integer('Maximum of Participants per Seance'),
         'approved_by' : fields.many2one('res.users', 'Approved By'),
         'lecturer_id' : fields.many2one('res.partner.job', 'Lecturer'),
         'location_id' : fields.many2one('training.location', 'Location'),
-
         'state' : fields.selection([('draft', 'Draft'),
                                     ('validated', 'Validated'),
                                     ('deprecated', 'Deprecated'),
                                     ('refused', 'Refused'),
                                     ('done', 'Done'),
                                    ],
-                                   'State',
-                                   required=True,
-                                   readonly=True,
-                                   select=1,
-                                   help="The status of the course",
-                                  ),
+                                   'State', required=True, readonly=True, help="The status of the course"),
     }
 
     _defaults = {
@@ -435,10 +373,12 @@
         'number_of_participants' : lambda *a: 12,
     }
 
-
     def action_add_costs(self, cr, uid, ids, context=None):
+        if not ids:
+            return False
+        if context is None:
+            context = {}
         this = self.browse(cr, uid, ids[0], context=context)
-
         proxy = self.pool.get('training.intra.budget.line')
         for course in this.course_ids:
             for proc_line in course.course_id.purchase_line_ids:
@@ -465,7 +405,6 @@
                     'course_id' : course.course_id.id,
                 }
                 proxy.create(cr, uid, values, context=context)
-
         return True
 
     def action_compute_values(self, cr, uid, ids, context=None):
@@ -475,13 +414,11 @@
         email = ''
         if job_id:
             email = self.pool.get('res.partner.job').browse(cr, uid, job_id, context=context).email or ''
-
         return {'value' : {'job_email' : email}}
 
     def on_change_partner(self, cr, uid, ids, partner_id, context=None):
         if not partner_id:
             return {'value' : {'address_id' : 0}}
-
         partner = self.pool.get('res.partner').browse(cr, uid, partner_id, context=context)
         if partner.address:
             return {'value' : {'address_id' : partner.address[0].id}}
@@ -491,16 +428,12 @@
     def on_change_budget_intra_template(self, cr, uid, ids, tpl_id, context=None):
         if not tpl_id:
             return False
-
         if not ids:
             return False
-
         his = self.browse(cr, uid, ids[0], context=context)
-
         tpl_line_proxy = self.pool.get('training.intra.budget.tpl.line')
         line_proxy = self.pool.get('training.intra.budget.line')
         line_ids = tpl_line_proxy.search(cr, uid, [('template_id', '=', tpl_id)], context=context)
-
         new_line_ids = []
         for line in tpl_line_proxy.browse(cr, uid, line_ids, context=context):
             values = {
@@ -512,7 +445,6 @@
                 'type' : line.type,
             }
             new_line_ids.append(line_proxy.create(cr, uid, values, context=context))
-
         return {
             'value' : {
                 'budget_intra_line_ids': new_line_ids
@@ -520,7 +452,15 @@
         }
 
     def action_create_quotation(self, cr, uid, ids, context=None):
-
+        if not ids:
+            return False
+        if context is None:
+            context = {}
+        proxy_adist = self.pool.get('account.analytic.plan.instance')
+        proxy_adistline = self.pool.get('account.analytic.plan.instance.line')
+        proxy = self.pool.get('sale.order')
+        proxy_line = self.pool.get('sale.order.line')
+        journal_proxy = self.pool.get('account.journal')
         this = self.browse(cr, uid, ids[0], context=context)
 
         if not this.partner_id:
@@ -533,10 +473,6 @@
         if not len(this.course_ids):
             raise osv.except_osv(_('Warning'),
                                  _('The list of courses is empty !'))
-
-        proxy = self.pool.get('sale.order')
-        proxy_line = self.pool.get('sale.order.line')
-
         values = {
             'partner_id' : this.partner_id.id,
             'pricelist_id' : this.partner_id.property_product_pricelist.id,
@@ -559,10 +495,6 @@
                     raise osv.except_osv(_('Error'),
                                          _("The following course has not a valid duration \"%s\" (%d)") % (course_rel.course_id.name, course_rel.course_id.id))
                 total_duration += course_rel.course_id.duration
-            proxy_adist = self.pool.get('account.analytic.plan.instance')
-            proxy_adistline = self.pool.get('account.analytic.plan.instance.line')
-
-            journal_proxy = self.pool.get('account.journal')
             journal_sales_srch = journal_proxy.search(cr, uid, [('type','=','sale'),('refund_journal','=',False)])
             journal_sales = journal_proxy.browse(cr, uid, journal_sales_srch)[0]
 
@@ -648,7 +580,6 @@
 
     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] = obj.product_qty * obj.unit_price * (obj.number_of_seances or 1.0)
 
@@ -656,21 +587,12 @@
 
     _columns = {
         'offer_id' : fields.many2one('training.offer', 'Offer', select=1),
-
         'description' : fields.char('Description', size=128, required=True),
         'product_id' : fields.many2one('product.product', 'Product', select=1),
         'product_qty' : fields.float('Quantity', required=True),
         'product_uom' : fields.many2one('product.uom', 'Product UoM', required=True),
-        'unit_price' : fields.float('Unit Price', required=True,
-                                    digits=(16, int(config['price_accuracy'])),
-                                   ),
-        'price' : fields.function(_price_compute,
-                                  method=True,
-                                  string='Price',
-                                  store=True,
-                                  select=2,
-                                  digits=(16, int(config['price_accuracy'])),
-                                  type='float'),
+        'unit_price' : fields.float('Unit Price', required=True, digits_compute=dp.get_precision('Account')),
+        'price' : fields.function(_price_compute, method=True, string='Price', store=True, digits_compute=dp.get_precision('Account'), type='float'),
         'number_of_seances' : fields.integer('Recurrence', required=True),
         'type' : fields.selection([('cost', 'Cost'),('revenue', 'Revenue')], 'Type', required=True, select=1),
         'course_id' : fields.many2one('training.course', 'Course', select=1),

=== modified file 'training_intra/training_intra_view.xml'
--- training_intra/training_intra_view.xml	2011-02-23 12:44:45 +0000
+++ training_intra/training_intra_view.xml	2011-03-17 09:08:29 +0000
@@ -56,7 +56,23 @@
             </field>
         </record>
 
-        <record model="ir.ui.view" id="budget_intra_tpl_form">
+        <record model="ir.ui.view" id="budget_intra_tpl_line_search">
+            <field name="name">training.intra.budget.tpl.line.search</field>
+            <field name="model">training.intra.budget.tpl.line</field>
+            <field name="type">search</field>
+            <field name="arch" type="xml">
+                <search string="Search Training Intra Budget">
+                   <field name="product_id"/>
+                   <field name="type"/>
+                   <newline/>
+	               <group expand="0" string="Group By..." colspan="4">
+	                   <filter string="Type" icon="terp-stock_symbol-selection" domain="[]"  context="{'group_by':'type'}"/>
+	               </group>
+               </search>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="view_budget_intra_tpl_form">
             <field name="name">training.intra.budget.tpl.form</field>
             <field name="model">training.intra.budget.tpl</field>
             <field name="type">form</field>
@@ -73,11 +89,39 @@
             </field>
         </record>
 
+        <record model="ir.ui.view" id="view_budget_intra_tpl_tree">
+            <field name="name">training.intra.budget.tpl.tree</field>
+            <field name="model">training.intra.budget.tpl</field>
+            <field name="type">tree</field>
+            <field name="arch" type="xml">
+                <tree string="Budget Template">
+	                <field name="name"/>
+	                <field name="costs"/>
+	                <field name="revenues"/>
+	                <field name="balance"/>
+                </tree>
+            </field>
+        </record>
+
+        <record model="ir.ui.view" id="view_budget_intra_tpl_search">
+            <field name="name">training.intra.budget.tpl.search</field>
+            <field name="model">training.intra.budget.tpl</field>
+            <field name="type">search</field>
+            <field name="arch" type="xml">
+                <search string="Budget Template">
+                    <field name="name"/>
+                    <field name="revenues"/>
+                    <field name="balance"/>
+                </search>
+            </field>
+        </record>
+
         <record model="ir.actions.act_window" id="budget_intra_tpl_all_act">
             <field name="name">Budget Templates</field>
             <field name="res_model">training.intra.budget.tpl</field>
             <field name="view_type">form</field>
             <field name="view_mode">tree,form</field>
+            <field name="search_view_id" ref="view_budget_intra_tpl_search"/>
         </record>
 
         <menuitem parent="training.training_config_mi" id="budget_intra_tpl_all_mi" action="budget_intra_tpl_all_act" />
@@ -177,7 +221,7 @@
             </field>
         </record>
 
-        <act_window 
+        <act_window
             name="Sale Order"
             src_model="training.offer"
             res_model="sale.order"
@@ -186,26 +230,26 @@
             id="sale_order_offer_rel"
             domain="[('id', '=', sale_order_id)]" />
 
-    <act_window id="training_intra_sale_order_invoice_link"
-	name="Invoices"
-	src_model="sale.order"
-	res_model="account.invoice"
-	view_mode="tree,form"
-	groups="base.group_user"
-	domain="[('id','in',(invoice_ids and invoice_ids[0][2] or []))]"/>
-
-    <record id="training_intra_so_link_view1" model="ir.actions.act_window.view">
-	<field name="sequence" eval="1"/>
-	<field name="view_mode">tree</field>
-	<field name="act_window_id" ref="training_intra_sale_order_invoice_link"/>
-    </record>
-
-    <record id="training_intra_so_link_view2" model="ir.actions.act_window.view">
-	<field name="sequence" eval="2"/>
-	<field name="view_mode">form</field>
-	<field name="view_id" ref="account.invoice_form"/>
-	<field name="act_window_id" ref="training_intra_sale_order_invoice_link"/>
-    </record>
+        <act_window id="training_intra_sale_order_invoice_link"
+			name="Invoices"
+			src_model="sale.order"
+			res_model="account.invoice"
+			view_mode="tree,form"
+			groups="base.group_user"
+			domain="[('id','in',(invoice_ids and invoice_ids[0][2] or []))]"/>
+
+        <record id="training_intra_so_link_view1" model="ir.actions.act_window.view">
+			<field name="sequence" eval="1"/>
+			<field name="view_mode">tree</field>
+			<field name="act_window_id" ref="training_intra_sale_order_invoice_link"/>
+        </record>
+
+		<record id="training_intra_so_link_view2" model="ir.actions.act_window.view">
+			<field name="sequence" eval="2"/>
+			<field name="view_mode">form</field>
+			<field name="view_id" ref="account.invoice_form"/>
+			<field name="act_window_id" ref="training_intra_sale_order_invoice_link"/>
+		</record>
 
         <record model="ir.ui.view" id="budget_intra_line_tree">
             <field name="name">training.intra.budget.line.tree</field>
@@ -215,7 +259,7 @@
                 <tree string="Budget Lines" editable="bottom">
                     <field name="offer_id" invisible="1" />
                     <field name="number_of_seances" />
-                    <field name="course_id"  context="{'offer_id' : offer_id}" /> 
+                    <field name="course_id"  context="{'offer_id' : offer_id}" />
                     <field name="type" on_change="on_change_product(type, product_id)" />
                     <field name="product_id" on_change="on_change_product(type, product_id)" />
                     <field name="description" />
@@ -242,13 +286,29 @@
                     <field name="type" on_change="on_change_product(type, product_id)" />
                     <field name="unit_price" />
                     <field name="number_of_seances" />
-                    <field name="course_id"  context="{'offer_id' : offer_id}" /> 
+                    <field name="course_id"  context="{'offer_id' : offer_id}" />
                     <field name="offer_id" invisible="1" />
                 </form>
             </field>
         </record>
 
-
+        <record model="ir.ui.view" id="budget_intra_line_search">
+            <field name="name">training.intra.budget.line.search</field>
+            <field name="model">training.intra.budget.line</field>
+            <field name="type">search</field>
+            <field name="arch" type="xml">
+                <search string="Budget Lines">
+                    <field name="offer_id"/>
+                    <field name="course_id"/>
+                    <field name="type"/>
+                    <field name="product_id"/>
+                    <newline/>
+					<group expand="0" string="Group By..." colspan="4">
+					    <filter string="Type" icon="terp-stock_symbol-selection" domain="[]"  context="{'group_by':'type'}"/>
+					</group>
+                </search>
+            </field>
+        </record>
 
         <record model="ir.ui.view" id="course_form">
             <field name="name">training.course.form.intra</field>
@@ -271,71 +331,62 @@
             <field name="priority">20</field>
             <field name="arch" type="xml">
                 <tree string="Offers">
-                    <field name="name" />
-                    <field name="type_id" />
-                    <field name="partner_id" select="1" />
-                    <field name="responsible" select="1" />
+                    <field name="name"/>
+                    <field name="kind"/>
+                    <field name="type_id"/>
+                    <field name="partner_id" select="1"/>
+                    <field name="responsible" select="1"/>
                     <field name="create_date" select="1"/>
-                    <field name="is_standalone" />
-                    <field name="state" />
-		    <field name="costs"/>
-		    <field name="revenues"/>
-                    <field name="sale_order_id" />
-                    <field name="sale_order_create_date" />
+                    <field name="is_standalone"/>
+                    <field name="state"/>
+				    <field name="costs"/>
+				    <field name="revenues"/>
+                    <field name="sale_order_id"/>
+                    <field name="sale_order_create_date"/>
                     <field name="sale_order_state" select="1"/>
                 </tree>
             </field>
         </record>
 
+        <record model="ir.ui.view" id="view_training_intra_offer_search">
+            <field name="name">training.offer.search</field>
+            <field name="model">training.offer</field>
+            <field name="type">search</field>
+            <field name="arch" type="xml">
+                <search string="Search Training Offer">
+                   <group col='10' colspan='4'>
+                        <filter icon="terp-document-new" string="Draft" domain="[('state','=', 'draft')]"/>
+                        <filter icon="terp-accessories-archiver" string="Validated" domain="[('state','=', 'validated')]"/>
+                        <filter icon="terp-dialog-close" string="Deprecated" domain="[('state','=', 'deprecated')]"/>
+                        <filter icon="gtk-go-up" string="Done" domain="[('state','=', 'done')]"/>
+                        <filter icon="gtk-refresh" string="Refused" domain="[('state','=', 'refused')]"/>
+                        <separator orientation="vertical"/>
+                        <field name="name"/>
+                        <field name="type_id"/>
+                        <field name="kind"/>
+                       </group>
+                   <newline/>
+                   <group expand="0" string="Group By..." colspan="4" col="20">
+                       <filter string="Category" icon="terp-personal" domain="[]"  context="{'group_by':'categorie_id'}"/>
+                       <filter string="kind" icon="terp-report" domain="[]"  context="{'group_by':'kind'}"/>
+                       <filter string="Type" icon="terp-stock_symbol-selection" domain="[]"  context="{'group_by':'type_id'}"/>
+                       <filter string="Product" icon="terp-stage" domain="[]"  context="{'group_by':'product_id'}"/>
+                       <filter string="State" icon="terp-stock_effects-object-colorize" domain="[]"  context="{'group_by':'state'}"/>
+                   </group>
+               </search>
+            </field>
+        </record>
+
         <record model="ir.actions.act_window" id="training_offer_intra_act">
-            <field name="name">Intra</field>
+            <field name="name">Intra Offers</field>
             <field name="res_model">training.offer</field>
             <field name="view_type">form</field>
             <field name="view_mode">tree,form</field>
             <field name="view_id" ref="training_offer_intra_tree" />
             <field name="domain">[('kind', '=', 'intra')]</field>
-        </record>
-        <menuitem id="training_offer_intra_mi" parent="training.training_offer_mi" action="training_offer_intra_act" sequence="2"/>
-
-        <record model="ir.actions.act_window" id="training_offer_validated_intra_act">
-            <field name="name">Validated Intra Offers</field>
-            <field name="res_model">training.offer</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="view_id" ref="training_offer_intra_tree" />
-            <field name="domain">[('kind', '=', 'intra'),('state', '=', 'validated')]</field>
-        </record>
-        <menuitem id="training_offer_validated_intra_mi" parent="training_offer_intra_mi" action="training_offer_validated_intra_act" sequence="2"/>
-
-        <record model="ir.actions.act_window" id="training_offer_draft_intra_act">
-            <field name="name">Draft Intra Offers</field>
-            <field name="res_model">training.offer</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="view_id" ref="training_offer_intra_tree" />
-            <field name="domain">[('kind', '=', 'intra'),('state', '=', 'draft')]</field>
-        </record>
-        <menuitem id="training_offer_draft_intra_mi" parent="training_offer_intra_mi" action="training_offer_draft_intra_act" sequence="2"/>
-
-        <record model="ir.actions.act_window" id="training_offer_deprecated_intra_act">
-            <field name="name">Deprecated Intra Offers</field>
-            <field name="res_model">training.offer</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="view_id" ref="training_offer_intra_tree" />
-            <field name="domain">[('kind', '=', 'intra'),('state', '=', 'deprecated')]</field>
-        </record>
-        <menuitem id="training_offer_deprecated_intra_mi" parent="training_offer_intra_mi" action="training_offer_deprecated_intra_act" sequence="2"/>
-
-        <record model="ir.actions.act_window" id="training_offer_intra_notdone_notcancelled_act">
-            <field name="name">Not Done, Not Cancelled Intra Offers</field>
-            <field name="res_model">training.offer</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">tree,form</field>
-            <field name="view_id" ref="training_offer_intra_tree"/>
-            <field name="domain">[('kind', '=', 'intra'),('state', 'not in', ['cancelled','done'])]</field>
-        </record>
-        <menuitem id="training_offer_intra_notdone_notcancelled_mi" parent="training_offer_intra_mi" action="training_offer_intra_notdone_notcancelled_act"/>
+            <field name="search_view_id" ref="view_training_intra_offer_search"/>
+        </record>
+        <menuitem id="training_offer_intra_mi" parent="training.training_library_mi" action="training_offer_intra_act" sequence="20"/>
 
         <!-- contact function 'intra' doesn't exists -> choose 'standard' lecturers... -->
         <record model='ir.ui.view' id="training_session_form_inherit">
@@ -386,26 +437,6 @@
             </field>
         </record>
 
-        <record model="ir.actions.act_window" id="intra_session_all_act">
-            <field name="name">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="domain">[('kind', '=', 'intra')]</field>
-        </record>
-        
-        <menuitem id="intra_session_all_mi" parent="training.training_planning_session_future_all_mi" action="intra_session_all_act" />
-
-        <record model="ir.actions.act_window" id="intra_seance_all_act">
-            <field name="name">Intra 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">[('is_intra', '=', 1)]</field>
-        </record>
-        
-        <menuitem id="intra_seance_all_mi" parent="training.training_planning_future_seances_mi" action="intra_seance_all_act"/>
-
         <record model='ir.ui.view' id="training_seance_form_inherit">
             <field name="name">training_intra.seance.form.inherit</field>
             <field name="model">training.seance</field>

=== modified file 'training_room/__init__.py'
--- training_room/__init__.py	2011-02-25 12:33:02 +0000
+++ training_room/__init__.py	2011-03-17 09:08:29 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
 ############################################################################################
 #
-#    OpenERP, Open Source Management Solution	
+#    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
@@ -24,3 +24,5 @@
 
 import training_room
 import wizard
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== renamed file 'training_room/__terp__.py' => 'training_room/__openerp__.py'
--- training_room/__terp__.py	2011-02-25 12:33:02 +0000
+++ training_room/__openerp__.py	2011-03-17 09:08:29 +0000
@@ -1,7 +1,7 @@
 # -*- encoding: utf-8 -*-
 ############################################################################################
 #
-#    OpenERP, Open Source Management Solution	
+#    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
@@ -35,7 +35,7 @@
     'demo_xml' : [ ],
     'update_xml' : [
         'training_room_view.xml',
-        'wizard/wizard_create_session_i_view.xml',
+        'wizard/training_create_session_wizard_view.xml',
         'security/ir.model.access.csv',
     ],
     'active' : False,

=== modified file 'training_room/training_room.py'
--- training_room/training_room.py	2011-02-25 12:33:02 +0000
+++ training_room/training_room.py	2011-03-17 09:08:29 +0000
@@ -30,9 +30,8 @@
     _inherit = 'res.partner'
 
     _columns = {
-        'notify_location' : fields.many2one('res.partner.job',
-                                            'Notification for Location',
-                                            domain="[('name', '=', active_id),('state', '=', 'current')]"),
+        'notify_location' : fields.many2one('res.partner.job', 'Notification for Location',
+                                        domain="[('name', '=', active_id),('state', '=', 'current')]"),
     }
 
 res_partner()
@@ -54,10 +53,11 @@
     }
 
     def name_get(self, cr, uid, ids, context=None):
+        if context is None:
+            context = {}
         res = []
         for obj in self.browse(cr, uid, list(set(ids)), context=context):
             res.append((obj.id, "%s (%s)" % (obj.name, obj.partner_id.name,)))
-
         return res
 
     def name_search(self, cr, uid, name, args=None, operator='ilike', context=None, limit=80):
@@ -118,7 +118,10 @@
     def _default_get_location_id(self, cr, uid, context=None):
         # FIXME: get default for a core_config option
         cr.execute("SELECT min(id) from training_location")
-        return cr.fetchone()
+        location = cr.fetchone()
+        if not location or (len(location) > 0 and not location[0]):
+            location = False
+        return location
 
     _defaults = {
         'reserved' : lambda *a: 0,
@@ -155,14 +158,16 @@
         seance_ids = super(training_session, self)._create_seance(cr, uid, session, context=context)
         seance_vals = {}
         if session.location_id:
-            seance_vals['location_id'] = session.location_id.id
-            seance_vals['delivery_location_id'] = session.location_id.id # will be overwritten if a the "delivery location" is really filled up
+            seance_vals.update({
+                         'location_id' : session.location_id.id,
+                         'delivery_location_id' : session.location_id.id
+                         }) # will be overwritten if a the "delivery location" is really filled up
         if session.delivery_location_id:
-            seance_vals['delivery_location_id'] = session.delivery_location_id.id
+            seance_vals.update({'delivery_location_id' : session.delivery_location_id.id})
         if session.location_note:
-            seance_vals['location_note'] = session.location_note
+            seance_vals.update({'location_note' : session.location_note})
         if session.delivery_location_note:
-            seance_vals['delivery_location_note'] = session.delivery_location_note
+            seance_vals.update({'delivery_location_note' : session.delivery_location_note})
         if seance_vals:
             self.pool.get('training.seance').write(cr, uid, seance_ids, seance_vals, context=context)
         return seance_ids
@@ -187,3 +192,5 @@
         'delivery_location_id': fields.related('seance_id', 'delivery_location_id', type='many2one', relation='training.location', string='Delivery Location', readonly=True),
     }
 purchase_order_line_seance_room()
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== modified file 'training_room/training_room_view.xml'
--- training_room/training_room_view.xml	2011-01-05 11:41:40 +0000
+++ training_room/training_room_view.xml	2011-03-17 09:08:29 +0000
@@ -41,28 +41,31 @@
             </field>
         </record>
 
+        <record model="ir.ui.view" id="view_training_location_search">
+            <field name="name">training.location.search</field>
+            <field name="model">training.location</field>
+            <field name="type">search</field>
+            <field name="arch" type="xml">
+                <search string="Search Training Location">
+                    <field name="name"/>
+                    <field name="partner_id"/>
+                    <field name="seats"/>
+               </search>
+            </field>
+        </record>
+
         <record model="ir.actions.act_window" id="training_location_all_act">
             <field name="name">Rooms</field>
             <field name="res_model">training.location</field>
             <field name="view_type">form</field>
             <field name="view_mode">tree,form</field>
-        </record>
-
-        <record model="ir.actions.act_window" id="training_location_new_act">
-            <field name="name">New Room</field>
-            <field name="res_model">training.location</field>
-            <field name="view_type">form</field>
-            <field name="view_mode">form</field>
-        </record>
-
-        <menuitem 
-            id="training_config_locations_mi" 
-            parent="training.training_config_mi" 
-            action="training_location_all_act" sequence='45'/>
-        <menuitem 
-            id="training_config_locations_new_mi" 
-            parent="training_config_locations_mi" 
-            action="training_location_new_act" />
+            <field name="search_view_id" ref="view_training_location_search"/>
+        </record>
+
+        <menuitem
+            id="training_config_locations_mi"
+            parent="training.training_config_mi"
+            action="training_location_all_act" sequence='60'/>
 
         <record model="ir.ui.view" id="training_seance_form">
             <field name="name">training.seance.form</field>

=== modified file 'training_room/wizard/__init__.py'
--- training_room/wizard/__init__.py	2010-10-08 09:37:19 +0000
+++ training_room/wizard/__init__.py	2011-03-17 09:08:29 +0000
@@ -21,4 +21,6 @@
 #
 ##############################################################################
 
-import wizard_create_session_i
+import training_create_session_wizard
+
+# vim:expandtab:smartindent:tabstop=4:softtabstop=4:shiftwidth=4:
\ No newline at end of file

=== renamed file 'training_room/wizard/wizard_create_session_i.py' => 'training_room/wizard/training_create_session_wizard.py'
--- training_room/wizard/wizard_create_session_i.py	2010-10-08 09:50:38 +0000
+++ training_room/wizard/training_create_session_wizard.py	2011-03-17 09:08:29 +0000
@@ -33,6 +33,8 @@
     }
 
     def _default_get_location(self, cr, uid, context=None, field='location_id'):
+        if context is None:
+            context= {}
         session_pool = self.pool.get('training.session')
         active_id = context and context.get('active_id') or None
         vals = session_pool.on_change_offer(cr, uid, None, active_id)
@@ -50,6 +52,8 @@
     }
 
     def _get_new_session_data(self, cr, uid, wizard, context=None):
+        if context is None:
+            context = {}
         resdict = super(training_session_create_wizard_room, self)._get_new_session_data(cr, uid, wizard, context=context)
         if wizard.location_id:
             resdict['location_id'] = wizard.location_id.id

=== renamed file 'training_room/wizard/wizard_create_session_i_view.xml' => 'training_room/wizard/training_create_session_wizard_view.xml'

Follow ups