tooltip_analytic
authorFabien Pinckaers <fp@tinyerp.com>
Mon, 27 Oct 2008 09:48:02 +0000 (10:48 +0100)
committerFabien Pinckaers <fp@tinyerp.com>
Mon, 27 Oct 2008 09:48:02 +0000 (10:48 +0100)
bzr revid: fp@tinyerp.com-20081027094802-xt9dt17h9m08yc3k

addons/account_analytic_analysis/account_analytic_analysis.py
addons/project/project_view.xml

index 15db30b..e460c28 100644 (file)
@@ -407,22 +407,22 @@ class account_analytic_account(osv.osv):
         return res
 
     _columns ={
-        'ca_invoiced': fields.function(_ca_invoiced_calc, method=True, type='float', string='Invoiced amount'),
-        'total_cost': fields.function(_total_cost_calc, method=True, type='float', string='Total cost'),
-        'ca_to_invoice': fields.function(_ca_to_invoice_calc, method=True, type='float', string='Uninvoiced amount'),
-        'ca_theorical': fields.function(_ca_theorical_calc, method=True, type='float', string='Theorical revenue'),
-        'hours_quantity': fields.function(_hours_quantity_calc, method=True, type='float', string='Hours tot'),
-        'last_invoice_date': fields.function(_last_invoice_date_calc, method=True, type='date', string='Last invoice date'),
-        'last_worked_invoiced_date': fields.function(_last_worked_invoiced_date_calc, method=True, type='date', string='Last invoiced worked date'),
-        'last_worked_date': fields.function(_last_worked_date_calc, method=True, type='date', string='Last worked date'),
-        'hours_qtt_non_invoiced': fields.function(_hours_qtt_non_invoiced_calc, method=True, type='float', string='Uninvoiced hours'),
-        'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, method=True, type='float', string='Invoiced hours'),
-        'remaining_hours': fields.function(_remaining_hours_calc, method=True, type='float', string='Remaining hours'),
-        'remaining_ca': fields.function(_remaining_ca_calc, method=True, type='float', string='Remaining revenue'),
-        'revenue_per_hour': fields.function(_revenue_per_hour_calc, method=True, type='float', string='Revenue per hours (real)'),
-        'real_margin': fields.function(_real_margin_calc, method=True, type='float', string='Real margin'),
-        'theorical_margin': fields.function(_theorical_margin_calc, method=True, type='float', string='Theorical margin'),
-        'real_margin_rate': fields.function(_real_margin_rate_calc, method=True, type='float', string='Real margin rate (%)'),
+        'ca_invoiced': fields.function(_ca_invoiced_calc, method=True, type='float', string='Invoiced Amount', help="Total customer invoiced amount for this account."),
+        'total_cost': fields.function(_total_cost_calc, method=True, type='float', string='Total Costs', help="Total of costs for this account. It includes real costs (from invoices) and indirect costs, like time spent on timesheets."),
+        'ca_to_invoice': fields.function(_ca_to_invoice_calc, method=True, type='float', string='Uninvoiced Amount', help="If invoice from analytic account, the remaining amount you can invoice to the customer based on the total costs."),
+        'ca_theorical': fields.function(_ca_theorical_calc, method=True, type='float', string='Theorical Revenue', help="Based on the costs you had on the project, what would have been the revenue of all these costs have been invoiced at the normal sale price provided by the pricelist."),
+        'hours_quantity': fields.function(_hours_quantity_calc, method=True, type='float', string='Hours Tot', help="Number of hours on spent on the analytic account (from timesheet). It computes on all journal of type 'general'."),
+        'last_invoice_date': fields.function(_last_invoice_date_calc, method=True, type='date', string='Last Invoice Date', help="Date of the last invoice created for this analytic account."),
+        'last_worked_invoiced_date': fields.function(_last_worked_invoiced_date_calc, method=True, type='date', string='Last Invoiced Worked Date', help="If invoice from the costs, this is the date of the latest work or cost that have been invoiced."),
+        'last_worked_date': fields.function(_last_worked_date_calc, method=True, type='date', string='Last Worked Date', help="Date of the latest work done on this account."),
+        'hours_qtt_non_invoiced': fields.function(_hours_qtt_non_invoiced_calc, method=True, type='float', string='Uninvoiced Hours', help="Number of hours (from journal of type 'general') that can be invoiced if you invoice based on analytic account."),
+        'hours_qtt_invoiced': fields.function(_hours_qtt_invoiced_calc, method=True, type='float', string='Invoiced Hours', help="Number of hours that already have invoiced. If you don't invoice based on costs, it's the number of hours spent. If you invoice based on hours, it's the hours that have been invoiced."),
+        'remaining_hours': fields.function(_remaining_hours_calc, method=True, type='float', string='Remaining Hours', help="Computed using the forumla: Maximum Quantity - Hours Tot."),
+        'remaining_ca': fields.function(_remaining_ca_calc, method=True, type='float', string='Remaining Revenue', help="If you invoice based on costs, this is the revenue you will invoice to the customer when you will launch the invoicing wizard."),
+        'revenue_per_hour': fields.function(_revenue_per_hour_calc, method=True, type='float', string='Revenue per Hours (real)', help="Computed using the formula: Invoiced Amount / Hours Tot."),
+        'real_margin': fields.function(_real_margin_calc, method=True, type='float', string='Real Margin', help="Computed using the formula: Invoiced Amount - Total Costs."),
+        'theorical_margin': fields.function(_theorical_margin_calc, method=True, type='float', string='Theorical Margin', help="Computed using the formula: (Theorical Revenue / Total Costs) * 100."),
+        'real_margin_rate': fields.function(_real_margin_rate_calc, method=True, type='float', string='Real Margin Rate (%)', help="Computes using the formula: (Invoiced Amount / Total Costs) * 100."),
         'month_ids': fields.function(_month, method=True, type='many2many', relation='account_analytic_analysis.summary.month', string='Month'),
         'user_ids': fields.function(_user, method=True, type="many2many", relation='account_analytic_analysis.summary.user', string='User'),
     }
index 12f9a17..e25836c 100644 (file)
         <menuitem action="open_view_project_open" id="menu_open_view_project_open" parent="menu_all_project"/>
 
         <record id="open_view_template_project" model="ir.actions.act_window">
-            <field name="name">Template projects</field>
+            <field name="name">Template of Projects</field>
             <field name="res_model">project.project</field>
             <field name="view_type">form</field>
             <field name="domain">[('state','=','template')]</field>
             <field name="view_id" ref="view_project"/>
         </record>
-               <menuitem id="next_id_54" name="Projects" parent="project.menu_definitions"/>
-        <menuitem action="open_view_template_project" id="menu_template_project" parent="next_id_54"/>
+        <menuitem action="open_view_template_project" id="menu_template_project" parent="menu_definition"/>
 
         <record id="open_view_project" model="ir.actions.act_window">
             <field name="name">New Project</field>