[MERGE] mereged addons2 branch

bzr revid: hmo@tinyerp.com-20101015161020-azosyanmk6jdhuz1
This commit is contained in:
Harry (OpenERP)
2010-10-15 21:40:20 +05:30
35 changed files with 537 additions and 359 deletions
+4 -2
View File
@@ -277,7 +277,7 @@
</form>
</field>
</record>
<record id="view_attach_filter_inherit0" model="ir.ui.view">
<field name="name">IR Attachment0</field>
<field name="model">ir.attachment</field>
@@ -296,9 +296,9 @@
</field>
</record>
<record id="view_attach_filter_inherit2" model="ir.ui.view">
<field name="name">IR Attachment2</field>
<field name="model">ir.attachment</field>
<field name="type">search</field>
@@ -307,12 +307,14 @@
<filter string="Owner" position="replace">
<filter string="Owner" icon="terp-personal" domain="[]" context="{'group_by':'user_id'}"/>
<filter string="Partner" icon="terp-partner" domain="[]"
context="{'group_by':'partner_id'}" groups="base.group_extended"/>
<filter string="Directory" icon="terp-folder-green" domain="[]" context="{'group_by':'parent_id'}"/>
</filter>
</field>
</record>
<record model="ir.ui.view" id="view_document_file_tree">
<field name="name">ir.attachment</field>
<field name="model">ir.attachment</field>
@@ -5,7 +5,6 @@
<menuitem id="base.menu_project_management_time_tracking" name="Time Tracking"
parent="base.menu_main_pm" sequence="3"/>
<record id="hr_timesheet_line_tree" model="ir.ui.view">
<field name="name">hr.analytic.timesheet.tree</field>
<field name="model">hr.analytic.timesheet</field>
@@ -101,7 +100,6 @@
<menuitem id="menu_project_working_hours" parent="base.menu_project_management_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/>
<menuitem id="menu_hr_working_hours" parent="hr_attendance.menu_hr_time_tracking" action="act_hr_timesheet_line_evry1_all_form"/>
<menuitem id="menu_partner_invc" parent="base.menu_project_management_time_tracking" action="account.action_invoice_tree1"/>
<record id="hr_timesheet_employee_extd_form" model="ir.ui.view">
<field name="name">hr.timesheet.employee.extd_form</field>
@@ -186,6 +186,9 @@
<menuitem action="act_hr_timesheet_sheet_form" id="menu_act_hr_timesheet_sheet_form" parent="hr_attendance.menu_hr_time_tracking"
sequence="2"/>
<menuitem action="hr_timesheet_sheet.act_hr_timesheet_sheet_form" id="menu_act_project_management_timesheet_sheet_form" parent="base.menu_project_management_time_tracking"
sequence="5"/>
<!--
Company inheritancy
-->
@@ -322,8 +325,8 @@
</field>
</record>
<!-- Timesheet Button on Employee Form -->
<act_window
context="{'search_default_employee_id': [active_id]}"
<act_window
context="{'search_default_employee_id': [active_id]}"
id="act_hr_employee_2_hr_timesheet" name="Timesheets" res_model="hr_timesheet_sheet.sheet" src_model="hr.employee"/>
</data>
+24
View File
@@ -1,6 +1,10 @@
<?xml version="1.0"?>
<openerp>
<data>
<menuitem id="base.menu_mail_gateway" name="Email"
parent="base.menu_base_config" sequence="1" />
<record model="ir.ui.view" id="view_mailgate_message_form">
<field name="name">mailgate.message.form</field>
<field name="model">mailgate.message</field>
@@ -85,6 +89,20 @@
</field>
</record>
<record id="action_view_mail_message" model="ir.actions.act_window">
<field name="name">Message</field>
<field name="res_model">mailgate.message</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" ref="view_mailgate_message_search"/>
</record>
<record model="ir.ui.view" id="view_mailgate_thread_form">
<field name="name">mailgate.thread.form</field>
<field name="model">mailgate.thread</field>
@@ -134,6 +152,9 @@
</field>
</record>
<!-- Emails action-->
<record model="ir.actions.act_window" id="action_view_mailgate_thread">
<field name="name">Mailgateway Threads</field>
@@ -192,5 +213,8 @@
src_model="mailgate.message"
domain="[('res_id', '=', res_id),('res_model','=',model)]"/>
<menuitem id="menu_email_gateway_form"
parent="base.menu_mail_gateway" action="action_view_mail_message" />
</data>
</openerp>
+10 -5
View File
@@ -189,13 +189,13 @@ class project(osv.osv):
'warn_manager': fields.boolean('Warn Manager', help="If you check this field, the project manager will receive a request each time a task is completed by his team.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members', help="Project's member. Not used in any computation, just for information purpose.", states={'close':[('readonly',True)], 'cancelled':[('readonly',True)]}),
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
'planned_hours': fields.function(_progress_rate, multi="progress", method=True, string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
'planned_hours': fields.function(_progress_rate, multi="progress", method=True, string='Planned Time', help="Sum of planned hours of all tasks related to this project and its child projects.",
store = {
'project.project': (lambda self, cr, uid, ids, c={}: ids, ['tasks'], 10),
'project.task': (_get_project_task, ['planned_hours', 'effective_hours', 'remaining_hours', 'total_hours', 'progress', 'delay_hours'], 10),
'project.task.work': (_get_project_work, ['hours'], 10),
}),
'effective_hours': fields.function(_progress_rate, multi="progress", method=True, string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects.",
'effective_hours': fields.function(_progress_rate, multi="progress", method=True, string='Time Spent', help="Sum of spent hours of all tasks related to this project and its child projects.",
store = {
'project.project': (lambda self, cr, uid, ids, c={}: ids, ['tasks'], 10),
'project.task': (_get_project_task, ['planned_hours', 'effective_hours', 'remaining_hours', 'total_hours', 'progress', 'delay_hours'], 10),
@@ -395,10 +395,15 @@ class task(osv.osv):
if hours.get(task.id, False):
dur_in_user_uom = uom_obj._compute_qty(cr, uid, default_uom, hours.get(task.id, 0.0), user_uom)
hours[task.id] = dur_in_user_uom
timespent=0
for task in self.browse(cr, uid, ids, context=context):
res[task.id] = {'effective_hours': hours.get(task.id, 0.0), 'total_hours': task.remaining_hours + hours.get(task.id, 0.0)}
res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours
# res[task.id]['delay_hours'] = res[task.id]['total_hours'] - task.planned_hours
for ctimespent in task.work_ids:
timespent=timespent+ctimespent.hours
res[task.id]['delay_hours'] = task.planned_hours - timespent
res[task.id]['progress'] = 0.0
if (task.remaining_hours + hours.get(task.id, 0.0)):
res[task.id]['progress'] = round(min(100.0 * hours.get(task.id, 0.0) / res[task.id]['total_hours'], 99.99),2)
@@ -463,7 +468,7 @@ class task(osv.osv):
'description': fields.text('Description'),
'priority': fields.selection([('4','Very Low'), ('3','Low'), ('2','Medium'), ('1','Urgent'), ('0','Very urgent')], 'Priority'),
'sequence': fields.integer('Sequence', help="Gives the sequence order when displaying a list of tasks."),
'type_id': fields.many2one('project.task.type', 'Stage',),
'type_id': fields.many2one('project.task.type', 'Type',),
'state': fields.selection([('draft', 'Draft'),('open', 'In Progress'),('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', readonly=True, required=True,
help='If the task is created the state is \'Draft\'.\n If the task is started, the state becomes \'In Progress\'.\n If review is needed the task is in \'Pending\' state.\
\n If the task is over, the states is set to \'Done\'.'),
+210
View File
@@ -2,6 +2,216 @@
<openerp>
<data noupdate="1">
<!-- Users -->
<record id="res_users_analyst" model="res.users">
<field name="name">Phuong</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="login">phu</field>
<field name="password">phu</field>
</record>
<record id="res_users_project_manager" model="res.users">
<field name="name">Anthony</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="login">al</field>
<field name="password">al</field>
</record>
<record id="res_users_technical_leader" model="res.users">
<field name="name">Quentin</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">qdp</field>
<field name="password">qdp</field>
</record>
<record id="res_users_developer" model="res.users">
<field name="name">Francois</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">fpi</field>
<field name="password">fpi</field>
</record>
<record id="res_users_designer" model="res.users">
<field name="name">Julien</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">jth</field>
<field name="password">jth</field>
</record>
<record id="res_users_tester" model="res.users">
<field name="name">Alien</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">apr</field>
<field name="password">apr</field>
</record>
<record id="res_users_finacial_manager" model="res.users">
<field name="name">Fabian</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_finance')])]" name="groups_id"/>
<field name="login">fbs</field>
<field name="password">fbs</field>
</record>
<!-- Projects -->
<record id="project_integrate_openerp" model="project.project">
<field name="date_start" eval="time.strftime('%Y-%m-01 10:00:00')"/>
<field name="state">open</field>
<field name="type">normal</field>
<field name="description">Integrate a Sale and Warehouse Management.</field>
<field eval="[(6, 0, [
ref('project.res_users_analyst'),
ref('project.res_users_project_manager'),
ref('project.res_users_technical_leader'),
ref('project.res_users_developer'),
ref('project.res_users_designer'),
ref('project.res_users_tester'),
ref('project.res_users_finacial_manager')])]" name="members"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="name">Integrate a Sale and Warehouse Management.</field>
</record>
<!-- Tasks -->
<record id="project_task_1" model="project.task">
<field eval="100.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Prepare Requirements Document</field>
</record>
<record id="project_task_2" model="project.task">
<field eval="80.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Make SRS</field>
</record>
<record id="project_task_3" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Design Use Cases</field>
</record>
<record id="project_task_4" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Budget Planning</field>
</record>
<record id="project_task_5" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Quality Planning</field>
</record>
<record id="project_task_6" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Risk Management Planning</field>
</record>
<record id="project_task_7" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Create Project Schedules</field>
</record>
<record id="project_task_8" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Dataflow Design</field>
</record>
<record id="project_task_9" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">User Interface Design</field>
</record>
<record id="project_task_10" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Develop Module in Sale Management</field>
</record>
<record id="project_task_11" model="project.task">
<field eval="90.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Develop module in Warehouse</field>
</record>
<record id="project_task_12" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Integrate Modules</field>
</record>
<record id="project_task_13" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Unit Testing</field>
</record>
<record id="project_task_14" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Regression Test</field>
</record>
<record id="project_task_15" model="project.task">
<field eval="15.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Documentation</field>
</record>
<record id="project_task_16" model="project.task">
<field eval="10" name="sequence"/>
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Performance Tuning</field>
</record>
<record id="project_task_17" model="project.task">
<field eval="5.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Deploy and Review on Customer System</field>
</record>
<record id="project_task_18" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project.project_integrate_openerp"/>
<field name="name">Training and Presentation</field>
</record>
<!--
Resource: project.project
-->
+5 -3
View File
@@ -305,13 +305,15 @@
<field eval="2" name="priority"/>
<field name="arch" type="xml">
<tree colors="grey:state in ('cancelled','done');blue:remaining_hours&lt;0 and state in ('pending');red:date_deadline and (date_deadline&lt;current_date) and (state in ('draft','open'))" string="Tasks">
<field name="id"/>
<field name="sequence" invisible="not context.get('seq_visible', False)"/>
<field name="name"/>
<field name="project_id" icon="gtk-indent" domain="['|',('user_id','=',uid),('members','=',uid)]" invisible="context.get('user_invisible', False)"/>
<field name="user_id" invisible="context.get('user_invisible', False)"/>
<field name="delegated_user_id" invisible="context.get('show_delegated', True)"/>
<field name="remaining_hours" widget="float_time" sum="Remaining Hours" on_change="onchange_remaining(remaining_hours,planned_hours)"/>
<field name="planned_hours" widget="float_time" invisible="1"/>
<field name="planned_hours"/>
<field name="delay_hours"/>
<field name="date_deadline" invisible="context.get('set_visible',False)"/>
<field name="type_id" groups="base.group_extended" invisible="context.get('set_visible',False)"/>
<button name="next_type" invisible="context.get('set_visible',False)"
@@ -325,7 +327,7 @@
<field name="date_end" invisible="1"/>
<field name="progress" widget="progressbar" invisible="context.get('set_visible',False)"/>
<field name="state" invisible="context.get('set_visible',False)"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
<button name="do_cancel" states="draft,open,pending" string="Cancel" type="object" icon="gtk-cancel" help="For cancelling the task"/>
<button name="do_open" states="pending,draft,done,cancel" string="Start Task" type="object" icon="gtk-execute" help="For changing to open state" invisible="context.get('set_visible',False)"/>
<button groups="base.group_extended" name="%(action_project_task_delegate)d" states="pending,open,draft" string="Delegate" type="action" icon="gtk-sort-descending" help="For changing to delegate state"/>
<button name="action_close" states="draft,pending,open" string="Done" type="object" icon="terp-dialog-close" help="For changing to done state"/>
@@ -500,7 +502,7 @@
<act_window context="{'search_default_user_id': [active_id]}" id="act_res_users_2_project_project" name="User's projects" res_model="project.project" src_model="res.users" view_mode="tree,form" view_type="form"/>
<act_window
context="{'search_default_project_id': [active_id]}"
domain="[('project_id', '=', active_id)]"
id="act_project_project_2_project_task_all"
name="Tasks"
res_model="project.task"
@@ -115,9 +115,9 @@
<newline/>
<field name="date_start"/>
<field name="date_end"/>
<field name="date_deadline"/>
<field name="date_deadline"/>
<separator orientation="vertical"/>
</group>
<newline/>
<group expand="1" string="Group By..." colspan="10" col="12">
@@ -149,7 +149,7 @@
<field name="help">Get detailed analysis by task</field>
</record>
<menuitem action="action_project_task_user_tree" id="menu_project_task_user_tree" parent="base.menu_project_report" groups="project.group_project_manager"/>
<menuitem id="menu_tasks_config" name="Tasks" parent="project.menu_definitions" sequence="1" groups="base.group_system,group_project_finance_user"/>
<!-- Views and action for project dashboard -->
<record id="view_project_vs_remaining_hours_tree" model="ir.ui.view">
+10 -2
View File
@@ -1,12 +1,12 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1
"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,0,0,0
"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1
"access_project_project","project.project","model_project_project","project.group_project_user",1,1,1,1
"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,1,1,1
"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,1,1,1
"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1
"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1
"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1
"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,0
"access_project_task_work","project.task.work","model_project_task_work","project.group_project_user",1,1,1,1
"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1
"access_report_project_task_user","report.project.task.user","model_report_project_task_user","project.group_project_manager",1,1,1,1
@@ -28,3 +28,11 @@
"access_project_vs_hours_system","project.vs.hours.system","model_project_vs_hours","base.group_system",1,0,0,0
"access_project_task_sale_user","project.task salesman","model_project_task","base.group_sale_salesman",1,0,0,0
"access_project_project_sale_user","project.project salesman","model_project_project","base.group_sale_salesman",1,0,0,0
"access_project_project_project_financial_user","project.project.project.financial.user","model_project_project","group_project_finance_user",1,0,0,0
"access_project_task_project_financial_user","project.task.project.financial.user","model_project_task","group_project_finance_user",1,0,0,0
"access_project_task_work_project_financial_user","project.task.work.project.financial.user","model_project_task_work","group_project_finance_user",1,0,0,0
"access_report_project_task_user_project_financial_user","report.project.task.user.project.financial.user","model_report_project_task_user","group_project_finance_user",1,0,0,0
"access_project_board_project_financial_user","board.board.project.financial.user","board.model_board_board","group_project_finance_user",1,0,0,0
"access_account_analytic_account_project_financial_user","account.analytic.account.project.financial.user","analytic.model_account_analytic_account","group_project_finance_user",1,0,0,0
"access_project_task_type_project_financial_user","project.task.type.project.financial.user","model_project_task_type","group_project_finance_user",1,0,0,0
"access_project_vs_hours_project_financial_user","project.vs.hours.project.financial.user","model_project_vs_hours","group_project_finance_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_project_manager project.project manager model_project_project project.group_project_manager 1 1 1 1
3 access_account_analytic_account_manager account.analytic.account analytic.model_account_analytic_account project.group_project_manager 1 0 1 0 1 0 1
4 access_project_project project.project model_project_project project.group_project_user 1 1 1 1
5 access_account_analytic_account account.analytic.account analytic.model_account_analytic_account project.group_project_user 1 1 1 1
6 access_project_task_type_user project.task.type user model_project_task_type project.group_project_user 1 1 1 1
7 access_project_task_type project.task.type model_project_task_type project.group_project_manager 1 1 1 1
8 access_project_task_manager project.task manager model_project_task project.group_project_manager 1 1 1 1
9 access_project_task project.task model_project_task project.group_project_user 1 1 1 1 0
10 access_project_task_work project.task.work model_project_task_work project.group_project_user 1 1 1 1
11 access_project_task_work_manager project.task.work.manager model_project_task_work project.group_project_manager 1 1 1 1
12 access_report_project_task_user report.project.task.user model_report_project_task_user project.group_project_manager 1 1 1 1
28 access_project_vs_hours_system project.vs.hours.system model_project_vs_hours base.group_system 1 0 0 0
29 access_project_task_sale_user project.task salesman model_project_task base.group_sale_salesman 1 0 0 0
30 access_project_project_sale_user project.project salesman model_project_project base.group_sale_salesman 1 0 0 0
31 access_project_project_project_financial_user project.project.project.financial.user model_project_project group_project_finance_user 1 0 0 0
32 access_project_task_project_financial_user project.task.project.financial.user model_project_task group_project_finance_user 1 0 0 0
33 access_project_task_work_project_financial_user project.task.work.project.financial.user model_project_task_work group_project_finance_user 1 0 0 0
34 access_report_project_task_user_project_financial_user report.project.task.user.project.financial.user model_report_project_task_user group_project_finance_user 1 0 0 0
35 access_project_board_project_financial_user board.board.project.financial.user board.model_board_board group_project_finance_user 1 0 0 0
36 access_account_analytic_account_project_financial_user account.analytic.account.project.financial.user analytic.model_account_analytic_account group_project_finance_user 1 0 0 0
37 access_project_task_type_project_financial_user project.task.type.project.financial.user model_project_task_type group_project_finance_user 1 0 0 0
38 access_project_vs_hours_project_financial_user project.vs.hours.project.financial.user model_project_vs_hours group_project_finance_user 1 0 0 0
+1 -1
View File
@@ -30,7 +30,7 @@
<field name="res_model">project.gtd.context</field>
</record>
<menuitem name="Contexts" id="menu_open_gtd_time_contexts" groups="group_project_getting,base.group_system"
<menuitem name="Contexts" id="menu_open_gtd_time_contexts" groups="group_project_getting,base.group_system,project.group_project_finance_user"
parent="project.menu_tasks_config" action="open_gtd_context_tree"/>
<record model="ir.ui.view" id="view_gtd_timebox_tree">
@@ -7,3 +7,5 @@
"access_project_gtd_timebox_manager","project.gtd.timebox project manager","model_project_gtd_timebox","project.group_project_manager",1,1,1,1
"access_project_gtd_context_system","project.gtd.context system","model_project_gtd_context","base.group_system",1,1,1,1
"access_project_gtd_timebox_system","project.gtd.timebox system","model_project_gtd_timebox","base.group_system",1,1,1,1
"access_project_gtd_context_finacial_user","project.gtd.context.financial.user","model_project_gtd_context","project.group_project_finance_user",1,0,0,0
"access_project_gtd_timebox_finacial_user","project.gtd.timebox.financial.user","model_project_gtd_timebox","project.group_project_finance_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
7 access_project_gtd_timebox_manager project.gtd.timebox project manager model_project_gtd_timebox project.group_project_manager 1 1 1 1
8 access_project_gtd_context_system project.gtd.context system model_project_gtd_context base.group_system 1 1 1 1
9 access_project_gtd_timebox_system project.gtd.timebox system model_project_gtd_timebox base.group_system 1 1 1 1
10 access_project_gtd_context_finacial_user project.gtd.context.financial.user model_project_gtd_context project.group_project_finance_user 1 0 0 0
11 access_project_gtd_timebox_finacial_user project.gtd.timebox.financial.user model_project_gtd_timebox project.group_project_finance_user 1 0 0 0
+1 -1
View File
@@ -2,7 +2,7 @@
<openerp>
<data>
<menuitem id="menu_project_confi" name="Project Issue" parent="project.menu_definitions" sequence="2" groups="base.group_system"/>
<menuitem id="menu_project_confi" name="Project Issue" parent="project.menu_definitions" sequence="2" groups="base.group_system,project.group_project_finance_user"/>
<record model="ir.ui.view" id="project_issue_version_search_view">
<field name="name">Issue Version</field>
@@ -56,7 +56,7 @@
<group col="16" colspan="8">
<filter string="Year" icon="terp-go-year" help="Current Year"
domain="[('create_date','&lt;=', time.strftime('%%Y-%%m-%%d')),('create_date','&gt;=',time.strftime('%%Y-01-01'))]"
/>
/>
<filter string="Month" icon="terp-go-month" name="This Month"
domain="[('create_date','&lt;=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('create_date','&gt;=',(datetime.date.today()-relativedelta(day=1)).strftime('%%Y-%%m-%%d'))]"
@@ -177,7 +177,7 @@
</record>
<menuitem icon="terp-project" id="base.menu_main_pm" name="Project" sequence="10"/>
<menuitem id="base.menu_project_report" name="Reporting" parent="base.menu_main_pm" sequence="50"/>
<menuitem action="action_project_issue_report" id="menu_project_issue_report_tree" parent="base.menu_project_report" groups="project.group_project_manager"/>
<menuitem action="action_project_issue_report" id="menu_project_issue_report_tree" parent="base.menu_project_report" groups="project.group_project_manager,project.group_project_finance_user"/>
</data>
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_issue_all","project.issue","model_project_issue","project.group_project_manager",1,0,0,0
"access_project_issue_all","project.issue","model_project_issue","project.group_project_manager",1,1,1,1
"access_project_issue_user","project.issue","model_project_issue","project.group_project_user",1,1,1,1
"access_project_issue","project.issue","model_project_issue","project_issue.group_project_supporter",1,1,1,1
"access_project_issue_report_all","project.issue.report","model_project_issue_report","project.group_project_manager",1,1,1,1
@@ -11,4 +11,14 @@
"access_project_issue_system","project.issue system","model_project_issue","base.group_system",1,0,0,0
"access_project_issue_report_system","project.issue.report system","model_project_issue_report","base.group_system",1,0,0,0
"access_crm_case_section_system","crm.case.section system","crm.model_crm_case_section","base.group_system",1,1,1,1
"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,0,0,0
"access_project_issue_version_financial_user","project.issue.version.financial.user","model_project_issue_version","project.group_project_finance_user",1,0,0,0
"access_crm_case_categ_financial_user","crm.case.categ.financial.user","crm.model_crm_case_categ","project.group_project_finance_user",1,0,0,0
"access_crm_case_stage_financial_user","crm.case.stage.financial.user","crm.model_crm_case_stage","project.group_project_finance_user",1,0,0,0
"access_project_issue_report_financial_user","project.issue.report.financial.user","model_project_issue_report","project.group_project_finance_user",1,0,0,0
"access_project_issue_board_project_financial_user","board.board.project.issue.financial.user","board.model_board_board","project.group_project_finance_user",1,0,0,0
"access_project_issue_project_financial_user","project.issue.financial.user","model_project_issue","project.group_project_finance_user",1,0,0,0
"access_mailgate_message_project_financial_user","mailgate.message.financial.user","mail_gateway.model_mailgate_message","project.group_project_finance_user",1,0,0,0
"access_mailgate_message_project_manager","mailgate.message.manager","mail_gateway.model_mailgate_message","project.group_project_manager",1,1,1,1
"access_resource_calendar_project_manager","resource.calendar.project.manager","resource.model_resource_calendar","project.group_project_manager",1,1,1,1
"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,1,1,0
"access_mailgate_message_issue_project_user","project.mailgate.message.issue.user","mail_gateway.model_mailgate_message","project.group_project_user",1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_issue_all project.issue model_project_issue project.group_project_manager 1 0 1 0 1 0 1
3 access_project_issue_user project.issue model_project_issue project.group_project_user 1 1 1 1
4 access_project_issue project.issue model_project_issue project_issue.group_project_supporter 1 1 1 1
5 access_project_issue_report_all project.issue.report model_project_issue_report project.group_project_manager 1 1 1 1
11 access_project_issue_system project.issue system model_project_issue base.group_system 1 0 0 0
12 access_project_issue_report_system project.issue.report system model_project_issue_report base.group_system 1 0 0 0
13 access_crm_case_section_system crm.case.section system crm.model_crm_case_section base.group_system 1 1 1 1
14 access_project_issue_report_user access_project_issue_version_financial_user project.issue.report user project.issue.version.financial.user model_project_issue_report model_project_issue_version project.group_project_user project.group_project_finance_user 1 0 0 0
15 access_crm_case_categ_financial_user crm.case.categ.financial.user crm.model_crm_case_categ project.group_project_finance_user 1 0 0 0
16 access_crm_case_stage_financial_user crm.case.stage.financial.user crm.model_crm_case_stage project.group_project_finance_user 1 0 0 0
17 access_project_issue_report_financial_user project.issue.report.financial.user model_project_issue_report project.group_project_finance_user 1 0 0 0
18 access_project_issue_board_project_financial_user board.board.project.issue.financial.user board.model_board_board project.group_project_finance_user 1 0 0 0
19 access_project_issue_project_financial_user project.issue.financial.user model_project_issue project.group_project_finance_user 1 0 0 0
20 access_mailgate_message_project_financial_user mailgate.message.financial.user mail_gateway.model_mailgate_message project.group_project_finance_user 1 0 0 0
21 access_mailgate_message_project_manager mailgate.message.manager mail_gateway.model_mailgate_message project.group_project_manager 1 1 1 1
22 access_resource_calendar_project_manager resource.calendar.project.manager resource.model_resource_calendar project.group_project_manager 1 1 1 1
23 access_project_issue_report_user project.issue.report user model_project_issue_report project.group_project_user 1 1 1 0
24 access_mailgate_message_issue_project_user project.mailgate.message.issue.user mail_gateway.model_mailgate_message project.group_project_user 1 1 1 0
@@ -5,4 +5,18 @@
"access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0
"access_hr_analytic_timesheet_system","hr_analytic_timesheet system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,0,0,0
"access_hr_timesheet_sheet_sheet_project_system","hr_timesheet_sheet.sheet system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,0,0,0
"access_hr_analytic_timesheet_project_financial_user","account.analytic.line.timesheet.project.financial.user","account.model_account_analytic_line","project.group_project_finance_user",1,1,1,0
"access_account_analytic_journal_project_financial_user","account.analytic.journal.project.financial.user","account.model_account_analytic_journal","project.group_project_finance_user",1,1,1,0
"access_account_fiscalyear_project_financial_user","account.fiscalyear.project.financial.user","account.model_account_fiscalyear","project.group_project_finance_user",1,1,1,0
"access_hr_timesheet_invoice_factor_project_financial_user","hr_timesheet_invoice.factor.project.financial.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_finance_user",1,1,1,0
"access_account_invoice_project_financial_user","account.invoice.project.financial.user","account.model_account_invoice","project.group_project_finance_user",1,1,1,0
"access_hr_analytic_timesheet_project_manager","account.analytic.line.timesheet.project.manager","account.model_account_analytic_line","project.group_project_manager",1,1,1,1
"access_account_analytic_journal_project_manager","account.analytic.journal.project.manager","account.model_account_analytic_journal","project.group_project_manager",1,1,1,1
"access_account_fiscalyear_project_manager","account.fiscalyear.project.manager","account.model_account_fiscalyear","project.group_project_manager",1,1,1,1
"access_hr_timesheet_invoice_factor_project_manager","hr_timesheet_invoice.factor.project.manager","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_manager",1,1,1,1
"access_account_invoice_project_manager","account.invoice.project.manager","account.model_account_invoice","project.group_project_manager",1,1,1,1
"access_analytic_account_line_project_user","analytic_account_line_timesheet user","analytic.model_account_analytic_line","project.group_project_user",1,1,1,0
"access_account_analytic_journal_project_user","account.analytic.journal.project.user","account.model_account_analytic_journal","project.group_project_user",1,1,1,0
"access_account_fiscalyear_project_user","account.fiscalyear.project.user","account.model_account_fiscalyear","project.group_project_user",1,1,1,0
"access_hr_timesheet_invoice_factor_project_user","hr_timesheet_invoice.factor.project.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_user",1,1,1,0
"access_account_invoice_project_user","account.invoice.project.user","account.model_account_invoice","project.group_project_user",1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
5 access_hr_timesheet_sheet_sheet_project_manager hr_timesheet_sheet.sheet manager hr_timesheet_sheet.model_hr_timesheet_sheet_sheet project.group_project_manager 1 0 0 0
6 access_hr_analytic_timesheet_system hr_analytic_timesheet system hr_timesheet_sheet.model_hr_analytic_timesheet base.group_system 1 0 0 0
7 access_hr_timesheet_sheet_sheet_project_system hr_timesheet_sheet.sheet system hr_timesheet_sheet.model_hr_timesheet_sheet_sheet base.group_system 1 0 0 0
8 access_hr_analytic_timesheet_project_financial_user account.analytic.line.timesheet.project.financial.user account.model_account_analytic_line project.group_project_finance_user 1 1 1 0
9 access_account_analytic_journal_project_financial_user account.analytic.journal.project.financial.user account.model_account_analytic_journal project.group_project_finance_user 1 1 1 0
10 access_account_fiscalyear_project_financial_user account.fiscalyear.project.financial.user account.model_account_fiscalyear project.group_project_finance_user 1 1 1 0
11 access_hr_timesheet_invoice_factor_project_financial_user hr_timesheet_invoice.factor.project.financial.user hr_timesheet_invoice.model_hr_timesheet_invoice_factor project.group_project_finance_user 1 1 1 0
12 access_account_invoice_project_financial_user account.invoice.project.financial.user account.model_account_invoice project.group_project_finance_user 1 1 1 0
13 access_hr_analytic_timesheet_project_manager account.analytic.line.timesheet.project.manager account.model_account_analytic_line project.group_project_manager 1 1 1 1
14 access_account_analytic_journal_project_manager account.analytic.journal.project.manager account.model_account_analytic_journal project.group_project_manager 1 1 1 1
15 access_account_fiscalyear_project_manager account.fiscalyear.project.manager account.model_account_fiscalyear project.group_project_manager 1 1 1 1
16 access_hr_timesheet_invoice_factor_project_manager hr_timesheet_invoice.factor.project.manager hr_timesheet_invoice.model_hr_timesheet_invoice_factor project.group_project_manager 1 1 1 1
17 access_account_invoice_project_manager account.invoice.project.manager account.model_account_invoice project.group_project_manager 1 1 1 1
18 access_analytic_account_line_project_user analytic_account_line_timesheet user analytic.model_account_analytic_line project.group_project_user 1 1 1 0
19 access_account_analytic_journal_project_user account.analytic.journal.project.user account.model_account_analytic_journal project.group_project_user 1 1 1 0
20 access_account_fiscalyear_project_user account.fiscalyear.project.user account.model_account_fiscalyear project.group_project_user 1 1 1 0
21 access_hr_timesheet_invoice_factor_project_user hr_timesheet_invoice.factor.project.user hr_timesheet_invoice.model_hr_timesheet_invoice_factor project.group_project_user 1 1 1 0
22 access_account_invoice_project_user account.invoice.project.user account.model_account_invoice project.group_project_user 1 1 1 0
@@ -395,7 +395,18 @@ class project_resource_allocation(osv.osv):
_name = 'project.resource.allocation'
_description = 'Project Resource Allocation'
_rec_name = 'resource_id'
def get_name(self, cr, uid, ids, field_name, arg, context=None):
res = {}
for allocation in self.browse(cr, uid, ids, context=context):
name = allocation.resource_id.name
if allocation.user_id:
name = '%s' %(allocation.user_id.name)
name += ' (%s%%)' %(allocation.useability)
res[allocation.id] = name
return res
_columns = {
'name': fields.function(get_name, method=True, type='char', size=256),
'resource_id': fields.many2one('resource.resource', 'Resource', required=True),
'phase_id': fields.many2one('project.phase', 'Project Phase', ondelete='cascade', required=True),
'project_id': fields.related('phase_id', 'project_id', type='many2one', relation="project.project", string='Project', store=True),
@@ -2,115 +2,54 @@
<openerp>
<data noupdate="1">
<!--
This Demo data file includes Users, Human Resources, Projects and it' members list, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
This Demo data file Human Resources, Phases and Resources,Tasks allocation and also run scheduling of phase and tasks.
-->
<!-- Users -->
<record id="res_users_analyst" model="res.users">
<field name="name">Phuong</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="login">phu</field>
<field name="password">phu</field>
</record>
<record id="res_users_project_manager" model="res.users">
<field name="name">Anthony</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_manager')])]" name="groups_id"/>
<field name="login">al</field>
<field name="password">al</field>
</record>
<record id="res_users_technical_leader" model="res.users">
<field name="name">Quentin</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">qdp</field>
<field name="password">qdp</field>
</record>
<record id="res_users_developer" model="res.users">
<field name="name">Francois</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">fpi</field>
<field name="password">fpi</field>
</record>
<record id="res_users_designer" model="res.users">
<field name="name">Julien</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">jth</field>
<field name="password">jth</field>
</record>
<record id="res_users_tester" model="res.users">
<field name="name">Aline</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_user')])]" name="groups_id"/>
<field name="login">apr</field>
<field name="password">apr</field>
</record>
<record id="res_users_finacial_manager" model="res.users">
<field name="name">Fabian</field>
<field eval="[(6, 0, [ref('base.group_user'), ref('project.group_project_finance')])]" name="groups_id"/>
<field name="login">fbs</field>
<field name="password">fbs</field>
</record>
<!-- Human Resources -->
<record id="resource_analyst" model="resource.resource">
<field name="user_id" ref="res_users_analyst"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="name">Analyst</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_project_manager" model="resource.resource">
<field name="user_id" ref="res_users_project_manager"/>
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="name">Project Manager</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_technical_leader" model="resource.resource">
<field name="user_id" ref="res_users_technical_leader"/>
<field name="user_id" ref="project.res_users_technical_leader"/>
<field name="name">Technical Leader</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_developer" model="resource.resource">
<field name="user_id" ref="res_users_developer"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="name">Developer</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_designer" model="resource.resource">
<field name="user_id" ref="res_users_designer"/>
<field name="user_id" ref="project.res_users_designer"/>
<field name="name">Designer</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_tester" model="resource.resource">
<field name="user_id" ref="res_users_tester"/>
<field name="user_id" ref="project.res_users_tester"/>
<field name="name">Tester</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<record id="resource_finacial_manager" model="resource.resource">
<field name="user_id" ref="res_users_finacial_manager"/>
<field name="user_id" ref="project.res_users_finacial_manager"/>
<field name="name">Project Finacial Manager</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
</record>
<!-- Projects -->
<record id="project_integrate_openerp" model="project.project">
<field name="date_start" eval="time.strftime('%Y-%m-01 10:00:00')"/>
<field name="state">open</field>
<field name="type">normal</field>
<field name="description">Integrate an Sale and Warehouse Management.</field>
<field eval="[(6, 0, [
ref('res_users_analyst'),
ref('res_users_project_manager'),
ref('res_users_technical_leader'),
ref('res_users_developer'),
ref('res_users_designer'),
ref('res_users_tester'),
ref('res_users_finacial_manager')])]" name="members"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="name">Integrate an Sale and Warehouse Management.</field>
</record>
<!-- Project Phases -->
<record id="project_phase_1" model="project.phase">
@@ -119,8 +58,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="1" name="sequence"/>
<field name="duration">30</field>
<field name="responsible_id" ref="res_users_analyst"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_analyst"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<record id="project_phase_2" model="project.phase">
@@ -129,8 +68,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="2" name="sequence"/>
<field name="duration">20</field>
<field name="responsible_id" ref="res_users_project_manager"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_project_manager"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<record id="project_phase_3" model="project.phase">
@@ -139,8 +78,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="3" name="sequence"/>
<field name="duration">20</field>
<field name="responsible_id" ref="res_users_project_manager"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_project_manager"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<record id="project_phase_4" model="project.phase">
@@ -149,8 +88,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="4" name="sequence"/>
<field name="duration">90</field>
<field name="responsible_id" ref="res_users_technical_leader"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_technical_leader"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<record id="project_phase_5" model="project.phase">
@@ -159,8 +98,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="5" name="sequence"/>
<field name="duration">30</field>
<field name="responsible_id" ref="res_users_project_manager"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_project_manager"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<record id="project_phase_6" model="project.phase">
@@ -169,8 +108,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<field name="product_uom" ref="product.uom_day"/>
<field eval="5" name="sequence"/>
<field name="duration">10</field>
<field name="responsible_id" ref="res_users_analyst"/>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="responsible_id" ref="project.res_users_analyst"/>
<field name="project_id" ref="project.project_integrate_openerp"/>
</record>
<!-- Project Resource Allocation -->
@@ -221,173 +160,82 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
<!-- Tasks -->
<record id="project_task_1" model="project.task">
<field eval="100.0" name="planned_hours"/>
<field name="user_id" ref="res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Prepare Requirements Document</field>
<record id="project.project_task_1" model="project.task">
<field name="phase_id" ref="project_phase_1"/>
</record>
<record id="project_task_2" model="project.task">
<field eval="80.0" name="planned_hours"/>
<field name="user_id" ref="res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Make SRS</field>
<record id="project.project_task_2" model="project.task">
<field name="phase_id" ref="project_phase_1"/>
</record>
<record id="project_task_3" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Design Use Cases</field>
<record id="project.project_task_3" model="project.task">
<field name="phase_id" ref="project_phase_2"/>
</record>
<record id="project_task_4" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Budget Planning</field>
<record id="project.project_task_4" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_5" model="project.task">
<field eval="25.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Quality Planning</field>
<record id="project.project_task_5" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_6" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Risk Management Planning</field>
<record id="project.project_task_6" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_7" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Create Project Schedules</field>
<record id="project.project_task_7" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_8" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Dataflow Design</field>
<record id="project.project_task_8" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_9" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field name="user_id" ref="res_users_project_manager"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">User Interface Design</field>
<record id="project.project_task_9" model="project.task">
<field name="phase_id" ref="project_phase_3"/>
</record>
<record id="project_task_10" model="project.task">
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Develop Module in Sale Management</field>
<record id="project.project_task_10" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_11" model="project.task">
<field eval="90.0" name="planned_hours"/>
<field name="user_id" ref="res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Develop module in Warehouse</field>
<record id="project.project_task_11" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_12" model="project.task">
<field eval="20.0" name="planned_hours"/>
<field name="user_id" ref="res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Integrate Modules</field>
<record id="project.project_task_12" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_13" model="project.task">
<field eval="50.0" name="planned_hours"/>
<field name="user_id" ref="res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Unit Testing</field>
<record id="project.project_task_13" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_14" model="project.task">
<field eval="30.0" name="planned_hours"/>
<field name="user_id" ref="res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Regression Test</field>
<record id="project.project_task_14" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_15" model="project.task">
<field eval="15.0" name="planned_hours"/>
<field name="user_id" ref="res_users_developer"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Documentation</field>
<record id="project.project_task_15" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_16" model="project.task">
<field eval="10" name="sequence"/>
<field eval="40.0" name="planned_hours"/>
<field name="user_id" ref="res_users_tester"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Performance Tuning</field>
<record id="project.project_task_16" model="project.task">
<field name="phase_id" ref="project_phase_4"/>
</record>
<record id="project_task_17" model="project.task">
<field eval="5.0" name="planned_hours"/>
<field name="user_id" ref="res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Deploy and Review on Customer System</field>
<record id="project.project_task_17" model="project.task">
<field name="phase_id" ref="project_phase_6"/>
</record>
<record id="project_task_18" model="project.task">
<field eval="10.0" name="planned_hours"/>
<field name="user_id" ref="res_users_analyst"/>
<field name="priority">2</field>
<field name="project_id" ref="project_integrate_openerp"/>
<field name="name">Training and Presentation</field>
<record id="project.project_task_18" model="project.task">
<field name="phase_id" ref="project_phase_6"/>
</record>
<!-- run scheduling of phase -->
<function model="project.project" name="schedule_phases" eval="(ref('project_integrate_openerp'),)"/>
<function model="project.project" name="schedule_phases" eval="(ref('project.project_integrate_openerp'),)"/>
<!-- run scheduling of tasks -->
<function model="project.project" name="schedule_tasks" eval="(ref('project_integrate_openerp'),)"/>
<function model="project.project" name="schedule_tasks" eval="(ref('project.project_integrate_openerp'),)"/>
</data>
</openerp>
@@ -13,9 +13,9 @@
<field name="model">project.resource.allocation</field>
<field name="type">gantt</field>
<field name="arch" type="xml">
<gantt color="resource_id" date_start="date_start" date_stop="date_end" mode="year">
<level object="project.project" link="project_id" domain="[]">
<field name="phase_id"/>
<gantt color="project_id" date_start="date_start" date_stop="date_end" mode="year">
<level object="project.phase" link="phase_id" domain="[]">
<field name="name"/>
</level>
</gantt>
</field>
@@ -369,17 +369,17 @@
# ------------------------------------------------------
<menuitem action="act_project_phase"
groups="base.group_extended"
groups="base.group_extended,project.group_project_finance_user,project.group_project_manager"
id="menu_project_phase" parent="base.menu_project_long_term" sequence="1"/>
<menuitem id="menu_resouce_allocation" action="act_resouce_allocation"
name="Resource Allocations" parent="base.menu_project_long_term" sequence="3"/>
name="Resource Allocations" parent="base.menu_project_long_term" sequence="2"/>
<menuitem id="menu_pm_resources_project1"
groups="base.group_extended"
groups="base.group_extended,project.group_project_finance_user"
name="Resources" parent="project.menu_definitions" sequence="3"/>
<menuitem id="menu_phase_schedule" name="Scheduling" parent="base.menu_project_long_term" sequence="4" groups="project.group_project_user,project.group_project_manager,base.group_system"/>
<menuitem id="menu_phase_schedule" name="Scheduling" parent="base.menu_project_long_term" sequence="4" groups="project.group_project_user,project.group_project_manager,base.group_system,project.group_project_finance_user"/>
<menuitem action="resource.action_resource_resource_tree" id="menu_view_resource" parent="base.menu_project_long_term" sequence="2"/>
<menuitem action="resource.action_resource_calendar_form" id="menu_view_resource_calendar" parent="menu_pm_resources_project1" sequence="1"/>
<menuitem action="resource.action_resource_calendar_leave_tree" id="menu_view_resource_calendar_leaves" parent="menu_pm_resources_project1" sequence="1"/>
@@ -1,10 +1,16 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_phase","project.phase","model_project_phase","project.group_project_user",1,1,1,0
"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_user",1,1,1,0
"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_user",1,0,0,0
"access_project_phase_manager","project.phase manager","model_project_phase","project.group_project_manager",1,0,0,0
"access_project_resource_allocation_manager","project.resource.allocation manager","model_project_resource_allocation","project.group_project_manager",1,0,0,0
"access_project_resource_allocation_system","project.resource.allocation system","model_project_resource_allocation","base.group_system",1,0,0,0
"access_project_phase_system","project.phase system","model_project_phase","base.group_system",1,0,0,0
"access_resource_resource_user","resource.resource user","resource.model_resource_resource","project.group_project_user",1,0,1,1
"access_resource_resource_user","resource.resource user","resource.model_resource_resource","project.group_project_user",1,0,0,0
"access_resource_calendar_leaves_user","resource.calendar.leaves user","resource.model_resource_calendar_leaves","project.group_project_user",1,1,1,1
"access_resource_resource_manager","resource.resource manager","resource.model_resource_resource","project.group_project_manager",1,1,1,1
"access_project_resource_allocation_financial_user","project.resource.allocation.financial.user","model_project_resource_allocation","project.group_project_finance_user",1,0,0,0
"access_project_phase_financial_user","project.phase.financial.user","model_project_phase","project.group_project_finance_user",1,0,0,0
"access_resource_resource_financial_user","resource.resource.financial.user","model_resource_resource","project.group_project_finance_user",1,0,0,0
"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar","project.group_project_finance_user",1,0,0,0
"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar_leaves","project.group_project_finance_user",1,0,0,0
"access_project_resource_allocation_manager","project.resource.allocation.manager","model_project_resource_allocation","project.group_project_manager",1,1,1,1
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_phase project.phase model_project_phase project.group_project_user 1 1 1 0
3 access_project_resource_allocation project.resource.allocation model_project_resource_allocation project.group_project_user 1 1 0 1 0 0
4 access_project_phase_manager project.phase manager model_project_phase project.group_project_manager 1 0 0 0
5 access_project_resource_allocation_manager project.resource.allocation manager model_project_resource_allocation project.group_project_manager 1 0 0 0
6 access_project_resource_allocation_system project.resource.allocation system model_project_resource_allocation base.group_system 1 0 0 0
7 access_project_phase_system project.phase system model_project_phase base.group_system 1 0 0 0
8 access_resource_resource_user resource.resource user resource.model_resource_resource project.group_project_user 1 0 1 0 1 0
9 access_resource_calendar_leaves_user resource.calendar.leaves user resource.model_resource_calendar_leaves project.group_project_user 1 1 1 1
10 access_resource_resource_manager resource.resource manager resource.model_resource_resource project.group_project_manager 1 1 1 1
11 access_project_resource_allocation_financial_user project.resource.allocation.financial.user model_project_resource_allocation project.group_project_finance_user 1 0 0 0
12 access_project_phase_financial_user project.phase.financial.user model_project_phase project.group_project_finance_user 1 0 0 0
13 access_resource_resource_financial_user resource.resource.financial.user model_resource_resource project.group_project_finance_user 1 0 0 0
14 access_resource_calendar_financial_user resource.calendar.financial.user resource.model_resource_calendar project.group_project_finance_user 1 0 0 0
15 access_resource_calendar_financial_user resource.calendar.financial.user resource.model_resource_calendar_leaves project.group_project_finance_user 1 0 0 0
16 access_project_resource_allocation_manager project.resource.allocation.manager model_project_resource_allocation project.group_project_manager 1 1 1 1
@@ -4,13 +4,13 @@
!record {model: project.project, id: project_project_project0}:
name: Develop an outlook-openerp synchronization plugin
members:
- project_long_term.res_users_project_manager
- project_long_term.res_users_technical_leader
- project_long_term.res_users_developer
- project_long_term.res_users_designer
- project_long_term.res_users_tester
- project_long_term.res_users_analyst
- project_long_term.res_users_finacial_manager
- project.res_users_project_manager
- project.res_users_technical_leader
- project.res_users_developer
- project.res_users_designer
- project.res_users_tester
- project.res_users_analyst
- project.res_users_finacial_manager
-
Create phase 'Develop GUI' in Outlook
-
@@ -40,7 +40,7 @@
state: draft
phase_id: project_phase_phase0
project_id: project_project_project0
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Develop GUI for Modules Configuration'
@@ -52,7 +52,7 @@
state: draft
phase_id: project_phase_phase0
project_id: project_project_project0
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Develop GUI for OpenERP Synchronisation'
-
@@ -63,7 +63,7 @@
state: draft
phase_id: project_phase_phase0
project_id: project_project_project0
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Design required GUI/Menus'
-
@@ -74,7 +74,7 @@
state: draft
phase_id: project_phase_phase0
project_id: project_project_project0
user_id: project_long_term.res_users_designer
user_id: project.res_users_designer
-
Schedule phase tasks
@@ -4,13 +4,13 @@
!record {model: project.project, id: project_project_project1}:
name: Develop a thunderbird-openerp synchronization plugin
members:
- project_long_term.res_users_project_manager
- project_long_term.res_users_technical_leader
- project_long_term.res_users_developer
- project_long_term.res_users_designer
- project_long_term.res_users_tester
- project_long_term.res_users_analyst
- project_long_term.res_users_finacial_manager
- project.res_users_project_manager
- project.res_users_technical_leader
- project.res_users_developer
- project.res_users_designer
- project.res_users_tester
- project.res_users_analyst
- project.res_users_finacial_manager
-
Create phase 'Develop GUI' in thunderbird
@@ -41,7 +41,7 @@
state: draft
phase_id: project_phase_phase1
project_id: project_project_project1
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Develop GUI for Modules Configuration'
@@ -53,7 +53,7 @@
state: draft
phase_id: project_phase_phase1
project_id: project_project_project1
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Develop GUI for OpenERP Synchronisation'
-
@@ -64,7 +64,7 @@
state: draft
phase_id: project_phase_phase1
project_id: project_project_project1
user_id: project_long_term.res_users_developer
user_id: project.res_users_developer
-
Create the phase task 'Design required GUI/Menus'
-
@@ -75,7 +75,7 @@
state: draft
phase_id: project_phase_phase1
project_id: project_project_project1
user_id: project_long_term.res_users_designer
user_id: project.res_users_designer
-
+3 -3
View File
@@ -29,11 +29,11 @@
"depends": ["project", "mail_gateway"],
"description": """This module is an interface that synchronises mails with OpenERP Project Task.
It allows creating tasks as soon as a new mail arrives in our configured mail server.
Moreover, it keeps track of all further communications and task states.
It allows creating tasks as soon as a new mail arrives in our configured mail server.
Moreover, it keeps track of all further communications and task states.
""",
"init_xml": [],
"update_xml": [
"update_xml": ["security/ir.model.access.csv",
"project_mailgate_view.xml",
],
'demo_xml': [
@@ -0,0 +1,3 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_mailgate_message_project_manager","project.mailgate.message.manager","mail_gateway.model_mailgate_message","project.group_project_manager",1,1,1,0
"access_mailgate_message_project_user","project.mailgate.message.user","mail_gateway.model_mailgate_message","project.group_project_user",1,1,1,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_mailgate_message_project_manager project.mailgate.message.manager mail_gateway.model_mailgate_message project.group_project_manager 1 1 1 0
3 access_mailgate_message_project_user project.mailgate.message.user mail_gateway.model_mailgate_message project.group_project_user 1 1 1 0
+2 -1
View File
@@ -32,7 +32,8 @@
""",
'website': 'http://www.openerp.com',
'init_xml': [],
'update_xml': ['project_messages_view.xml'],
'update_xml': ['security/ir.model.access.csv',
'project_messages_view.xml'],
'demo_xml': [],
'installable': True,
'active': False,
@@ -109,6 +109,6 @@
<field name="view_mode">tree,form</field>
<field name="view_id" ref="project_messages.view_project_message_tree"/>
</record>
<menuitem action="messages_form" id="menu_messages_form" parent="project.menu_project_management"/>
<menuitem action="messages_form" id="menu_messages_form" parent="project.menu_project_management" groups="project.group_project_user"/>
</data>
</openerp>
@@ -1,3 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_messages","project.messages","model_project_messages","project.group_project_user",1,1,1,1
"access_project_messages_manager","project.messages manager","model_project_messages","project.group_project_manager",1,1,1,1
"access_project_messages_financial_user","project.messages.financial.user","model_project_messages","project.group_project_finance_user",1,0,0,0
"access_project_message_project_user","project.project.user","model_project_project","project.group_project_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_project_messages project.messages model_project_messages project.group_project_user 1 1 1 1
3 access_project_messages_manager project.messages manager model_project_messages project.group_project_manager 1 1 1 1
4 access_project_messages_financial_user project.messages.financial.user model_project_messages project.group_project_finance_user 1 0 0 0
5 access_project_message_project_user project.project.user model_project_project project.group_project_user 1 0 0 0
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_report_account_analytic_planning_project_manager","report_account_analytic.planning manager","model_report_account_analytic_planning","project.group_project_manager",1,0,0,0
"access_report_account_analytic_planning_project_manager","report_account_analytic.planning manager","model_report_account_analytic_planning","project.group_project_manager",1,1,1,1
"access_report_account_analytic_planning_line_project_manager","report_account_analytic.planning.line manager","model_report_account_analytic_planning_line","project.group_project_manager",1,0,0,0
"access_report_account_analytic_planning_stat_project_manager","report_account_analytic.planning.stat manager","model_report_account_analytic_planning_stat","project.group_project_manager",1,0,0,0
"access_report_account_analytic_planning_stat_project_user","report_account_analytic.planning.stat user","model_report_account_analytic_planning_stat","project.group_project_user",1,1,1,0
@@ -9,3 +9,7 @@
"access_report_account_analytic_planning_line_project_user","report_account_analytic.planning.line user","model_report_account_analytic_planning_line","project.group_project_user",1,1,1,0
"access_report_account_analytic_planning_account_project_user","report_account_analytic.planning.account user","model_report_account_analytic_planning_account","project.group_project_user",1,1,1,0
"access_report_account_analytic_planning_system","report_account_analytic.planning system","model_report_account_analytic_planning","base.group_system",1,0,0,0
"access_report_account_analytic_planning_financial_user","report_account_analytic.planning.financial.user","model_report_account_analytic_planning","project.group_project_finance_user",1,0,0,0
"access_report_account_analytic_planning_stat_financial_user","report_account_analytic.planning.stat.financial.user","model_report_account_analytic_planning_stat","project.group_project_finance_user",1,0,0,0
"access_report_account_analytic_planning__project_manager","report_account_analytic.planning.manager","model_report_account_analytic_planning_user","project.group_project_manager",1,1,1,1
"access_report_account_analytic_planning__project_finance_user","report_account_analytic.planning.finance.user","model_report_account_analytic_planning_user","project.group_project_finance_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_report_account_analytic_planning_project_manager report_account_analytic.planning manager model_report_account_analytic_planning project.group_project_manager 1 0 1 0 1 0 1
3 access_report_account_analytic_planning_line_project_manager report_account_analytic.planning.line manager model_report_account_analytic_planning_line project.group_project_manager 1 0 0 0
4 access_report_account_analytic_planning_stat_project_manager report_account_analytic.planning.stat manager model_report_account_analytic_planning_stat project.group_project_manager 1 0 0 0
5 access_report_account_analytic_planning_stat_project_user report_account_analytic.planning.stat user model_report_account_analytic_planning_stat project.group_project_user 1 1 1 0
9 access_report_account_analytic_planning_line_project_user report_account_analytic.planning.line user model_report_account_analytic_planning_line project.group_project_user 1 1 1 0
10 access_report_account_analytic_planning_account_project_user report_account_analytic.planning.account user model_report_account_analytic_planning_account project.group_project_user 1 1 1 0
11 access_report_account_analytic_planning_system report_account_analytic.planning system model_report_account_analytic_planning base.group_system 1 0 0 0
12 access_report_account_analytic_planning_financial_user report_account_analytic.planning.financial.user model_report_account_analytic_planning project.group_project_finance_user 1 0 0 0
13 access_report_account_analytic_planning_stat_financial_user report_account_analytic.planning.stat.financial.user model_report_account_analytic_planning_stat project.group_project_finance_user 1 0 0 0
14 access_report_account_analytic_planning__project_manager report_account_analytic.planning.manager model_report_account_analytic_planning_user project.group_project_manager 1 1 1 1
15 access_report_account_analytic_planning__project_finance_user report_account_analytic.planning.finance.user model_report_account_analytic_planning_user project.group_project_finance_user 1 0 0 0
+41 -25
View File
@@ -19,44 +19,60 @@
#
##############################################################################
from mx import DateTime
from datetime import datetime
from dateutil.relativedelta import relativedelta
import time
import pooler
from report.render import render
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
def compute_burndown(cr, uid, tasks_id, date_start, date_stop):
def compute_burndown(cr, uid, tasks_ids, date_start, date_stop):
latest = False
if len(tasks_id):
cr.execute('select id,create_date,state,planned_hours from project_task where id IN %s order by create_date',(tuple(tasks_id),))
tasks = cr.fetchall()
cr.execute('select w.date,w.hours from project_task_work w left join project_task t on (t.id=w.task_id) where t.id IN %s and t.state in (%s,%s) order by date',(tuple(tasks_id),'open','progress',))
tasks2 = cr.fetchall()
cr.execute('select date_end,planned_hours from project_task where id IN %s and state in (%s,%s) order by date_end' ,(tuple(tasks_id),'cancelled','done',))
tasks2 += cr.fetchall()
tasks2.sort()
pool = pooler.get_pool(cr.dbname)
project_task_pool = pool.get('project.task')
task_work_pool = pool.get('project.task.work')
if len(tasks_ids):
tasks_ids = project_task_pool.search(cr, uid, [('id','in',tasks_ids)], order='create_date')
tasks = project_task_pool.read(cr, uid, tasks_ids, ['create_date','planned_hours','state'])
tasks_ids = project_task_pool.search(cr, uid, [('id','in',tasks_ids),('state', 'in', ['open','progress'])], order='create_date')
work_ids = task_work_pool.search(cr, uid, [('task_id','in',tasks_ids)], order='date')
close_tasks = task_work_pool.read(cr, uid, work_ids, ['date','hours','state'])
tasks_ids = project_task_pool.search(cr, uid, [('id','in',tasks_ids),('state', 'in', ['cancelled','done'])], order='date_end')
close_tasks += project_task_pool.read(cr, uid, tasks_ids, ['date_end','planned_hours'])
else:
tasks = []
tasks2 = []
close_tasks = []
current_date = date_start
total = 0
done = 0
result = []
while current_date<=date_stop:
while len(tasks) and tasks[0][1] and tasks[0][1][:10]<=current_date:
while datetime.strptime(current_date, '%Y-%m-%d') <= datetime.strptime(date_stop, '%Y-%m-%d'):
while len(tasks) and tasks[0]['create_date'] and datetime.strptime(tasks[0]['create_date'][:10], '%Y-%m-%d')<=datetime.strptime(current_date, '%Y-%m-%d'):
latest = tasks.pop(0)
total += latest[3]
total += float(latest.get('planned_hours',0.0))
i = 0
while i<len(tasks2):
if tasks2[i][0] and tasks2[i][0][:10]<=current_date:
t = tasks2.pop(i)
done += t[1]
else:
i+=1
while i < len(close_tasks):
if close_tasks[i]:
date_end = close_tasks[i].get('date',False)
hours = float(close_tasks[i].get('hours',0.0))
if not date_end:
date_end = close_tasks[i].get('date_end',False)
hours = float(close_tasks[i].get('planned_hours',0.0))
if datetime.strptime(date_end[:10], '%Y-%m-%d')<=datetime.strptime(current_date, '%Y-%m-%d'):
t = close_tasks.pop(i)
done += hours
i+=1
result.append( (int(time.mktime(time.strptime(current_date,'%Y-%m-%d'))), total-done) )
current_date = (DateTime.strptime(current_date, '%Y-%m-%d') + DateTime.RelativeDateTime(days=1)).strftime('%Y-%m-%d')
if not len(tasks) and not len(tasks2):
current_date = (datetime.strptime(current_date, '%Y-%m-%d') + relativedelta(days=1)).strftime('%Y-%m-%d')
if not len(tasks) and not len(close_tasks):
break
result.append( (int(time.mktime(time.strptime(date_stop,'%Y-%m-%d'))), 0) )
return result
+11 -25
View File
@@ -25,22 +25,13 @@ import pooler
from report.render import render
from report.interface import report_int
from mx import DateTime
from datetime import datetime
import time
from pychart import *
import pychart.legend
import _burndown
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
class report_tasks(report_int):
def create(self, cr, uid, ids, datas, context=None):
if context is None:
@@ -49,24 +40,19 @@ class report_tasks(report_int):
canv = canvas.init(fname=io, format='pdf')
canv.set_author("OpenERP")
cr.execute('select id,date_start,date_stop from project_scrum_sprint where id=%s', (datas['id'],))
for (id,date_start,date_stop) in cr.fetchall():
cr.execute('select id from project_task where product_backlog_id in(select id from project_scrum_product_backlog where sprint_id=%s)', (id,))
ids = map(lambda x: x[0], cr.fetchall())
datas = _burndown.compute_burndown(cr, uid, ids, date_start, date_stop)
pool = pooler.get_pool(cr.dbname)
sprint_pool = pool.get('project.scrum.sprint')
task_pool = pool.get('project.task')
int_to_date = lambda x: '/a60{}' + datetime(time.localtime(x).tm_year, time.localtime(x).tm_mon, time.localtime(x).tm_mday).strftime('%d %m %Y')
for sprint in sprint_pool.browse(cr, uid, ids, context=context):
task_ids = task_pool.search(cr, uid, [('sprint_id','=',sprint.id)], context=context)
datas = _burndown.compute_burndown(cr, uid, task_ids, sprint.date_start, sprint.date_stop)
max_hour = reduce(lambda x,y: max(y[1],x), datas, 0)
date_to_int = lambda x: int(x.ticks())
int_to_date = lambda x: '/a60{}'+DateTime.localtime(x).strftime('%d %m %Y')
def _interval_get(*args):
result = []
for i in range(20):
d = DateTime.localtime(datas[0][0] + (((datas[-1][0]-datas[0][0])/20)*(i+1)))
res = DateTime.DateTime(d.year, d.month, d.day).ticks()
d = time.localtime(datas[0][0] + (((datas[-1][0]-datas[0][0])/20)*(i+1)))
res = time.mktime(d)
if (not result) or result[-1]<>res:
result.append(res)
return result
@@ -92,7 +78,7 @@ class report_tasks(report_int):
ar.draw(canv)
canv.close()
self.obj = external_pdf(io.getvalue())
self.obj = _burndown.external_pdf(io.getvalue())
self.obj.render()
return (self.obj.pdf, 'pdf')
report_tasks('report.scrum.sprint.burndown')
+5 -49
View File
@@ -20,53 +20,14 @@
##############################################################################
import StringIO
from report.render import render
from report.interface import report_int
from mx import DateTime
from datetime import datetime
import time
from pychart import *
import pychart.legend
import _burndown
class external_pdf(render):
def __init__(self, pdf):
render.__init__(self)
self.pdf = pdf
self.output_type='pdf'
def _render(self):
return self.pdf
def burndown_chart(cr, uid, tasks_id, date_start, date_stop):
latest = False
cr.execute('select id,date_start,state,planned_hours from project_task where id IN %s order by date_start'(tuple(tasks_id),))
tasks = cr.fetchall()
cr.execute('select id,date_end,state,planned_hours*progress/100 from project_task where id IN %s and state in (%s,%s) order by date_end', (tuple(tasks_id),'progress','done',))
tasks2 = cr.fetchall()
current_date = date_start
total = 0
done = 0
result = []
while current_date<=date_stop:
while len(tasks) and tasks[0][1] and tasks[0][1][:10]<=current_date:
total += tasks.pop(0)[3]
while len(tasks2) and tasks2[0][1] and tasks2[0][1][:10]<=current_date:
t2 = tasks2.pop(0)
if t2[2]<>'cancel':
done += t2[3]
else:
total -= t2[3]
result.append( (int(time.mktime(time.strptime(current_date,'%Y-%m-%d'))), total-done) )
current_date = (DateTime.strptime(current_date, '%Y-%m-%d') + DateTime.RelativeDateTime(days=1)).strftime('%Y-%m-%d')
if not len(tasks) and not len(tasks2):
break
result.append( (int(time.mktime(time.strptime(date_stop,'%Y-%m-%d'))), 0) )
return result
class report_tasks(report_int):
def create(self, cr, uid, ids, datas, context=None):
if context is None:
@@ -87,24 +48,19 @@ class report_tasks(report_int):
if res[1] and datas['date_stop']<res[1]:
datas['date_stop'] = res[1][:10]
date_to_int = lambda x: int(x.ticks())
int_to_date = lambda x: '/a60{}'+DateTime.localtime(x).strftime('%d/%m/%Y')
datas = _burndown.compute_burndown(cr, uid, ids, datas['date_start'], datas['date_stop'])
canv = canvas.init(fname=io, format='pdf')
canv.set_author("OpenERP")
max_hour = reduce(lambda x,y: max(y[1],x), datas, 0)
date_to_int = lambda x: int(x.ticks())
int_to_date = lambda x: '/a60{}'+DateTime.localtime(x).strftime('%d %m %Y')
int_to_date = lambda x: '/a60{}' + datetime(time.localtime(x).tm_year, time.localtime(x).tm_mon, time.localtime(x).tm_mday).strftime('%d %m %Y')
def _interval_get(*args):
result = set()
for i in range(20):
d = DateTime.localtime(datas[0][0] + (((datas[-1][0]-datas[0][0])/20)*(i+1)))
res = DateTime.DateTime(d.year, d.month, d.day).ticks()
d = time.localtime(datas[0][0] + (((datas[-1][0]-datas[0][0])/20)*(i+1)))
res = time.mktime(d)
result.add(res)
return list(result)
@@ -126,7 +82,7 @@ class report_tasks(report_int):
ar.draw(canv)
canv.close()
self.obj = external_pdf(io.getvalue())
self.obj = _burndown.external_pdf(io.getvalue())
self.obj.render()
return (self.obj.pdf,'pdf')
report_tasks('report.project.tasks.burndown')
@@ -2,11 +2,14 @@
"access_scrum_sprint","project_scrum.sprint","model_project_scrum_sprint","project.group_project_user",1,1,1,0
"access_scrum_product_backlog","project_scrum.product.backlog","model_project_scrum_product_backlog","project.group_project_user",1,1,1,0
"access_scrum_meeting","project_scrum.meeting","model_project_scrum_meeting","project.group_project_user",1,1,1,0
"access_scrum_meeting_manager","project_scrum.meeting.manager","model_project_scrum_meeting","project.group_project_manager",1,0,0,0
"access_scrum_sprint_manager","project_scrum.sprint.manager","model_project_scrum_sprint","project.group_project_manager",1,0,0,0
"access_scrum_product_backlog_manager","project_scrum.product.backlog manager","model_project_scrum_product_backlog","project.group_project_manager",1,0,0,0
"access_scrum_meeting_manager","project_scrum.meeting.manager","model_project_scrum_meeting","project.group_project_manager",1,1,1,1
"access_scrum_sprint_manager","project_scrum.sprint.manager","model_project_scrum_sprint","project.group_project_manager",1,1,1,1
"access_scrum_product_backlog_manager","project_scrum.product.backlog manager","model_project_scrum_product_backlog","project.group_project_manager",1,1,1,1
"access_product_uom_project_manager","product.uom project manager","product.model_product_uom","project.group_project_manager",1,1,1,1
"access_product_uom_project_user","product.uom project user","product.model_product_uom","project.group_project_user",1,0,0,0
"access_scrum_sprint_system","project_scrum.sprint system","model_project_scrum_sprint","base.group_system",1,0,0,0
"access_scrum_product_backlog_system","project_scrum.product.backlog system","model_project_scrum_product_backlog","base.group_system",1,0,0,0
"access_scrum_meeting_system","project_scrum.meeting system","model_project_scrum_meeting","base.group_system",1,0,0,0
"access_project_scrum_backlog_financial_user","project_scrum.product.backlog.financial.user","model_project_scrum_product_backlog","project.group_project_finance_user",1,0,0,0
"access_project_scrum_sprint_financial_user","project_scrum.sprint.financial.user","model_project_scrum_sprint","project.group_project_finance_user",1,0,0,0
"access_scrum_meeting_financial_user","project_scrum.meeting.financial.user","model_project_scrum_meeting","project.group_project_finance_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
2 access_scrum_sprint project_scrum.sprint model_project_scrum_sprint project.group_project_user 1 1 1 0
3 access_scrum_product_backlog project_scrum.product.backlog model_project_scrum_product_backlog project.group_project_user 1 1 1 0
4 access_scrum_meeting project_scrum.meeting model_project_scrum_meeting project.group_project_user 1 1 1 0
5 access_scrum_meeting_manager project_scrum.meeting.manager model_project_scrum_meeting project.group_project_manager 1 0 1 0 1 0 1
6 access_scrum_sprint_manager project_scrum.sprint.manager model_project_scrum_sprint project.group_project_manager 1 0 1 0 1 0 1
7 access_scrum_product_backlog_manager project_scrum.product.backlog manager model_project_scrum_product_backlog project.group_project_manager 1 0 1 0 1 0 1
8 access_product_uom_project_manager product.uom project manager product.model_product_uom project.group_project_manager 1 1 1 1
9 access_product_uom_project_user product.uom project user product.model_product_uom project.group_project_user 1 0 0 0
10 access_scrum_sprint_system project_scrum.sprint system model_project_scrum_sprint base.group_system 1 0 0 0
11 access_scrum_product_backlog_system project_scrum.product.backlog system model_project_scrum_product_backlog base.group_system 1 0 0 0
12 access_scrum_meeting_system project_scrum.meeting system model_project_scrum_meeting base.group_system 1 0 0 0
13 access_project_scrum_backlog_financial_user project_scrum.product.backlog.financial.user model_project_scrum_product_backlog project.group_project_finance_user 1 0 0 0
14 access_project_scrum_sprint_financial_user project_scrum.sprint.financial.user model_project_scrum_sprint project.group_project_finance_user 1 0 0 0
15 access_scrum_meeting_financial_user project_scrum.meeting.financial.user model_project_scrum_meeting project.group_project_finance_user 1 0 0 0
+1 -1
View File
@@ -33,7 +33,7 @@
'depends': ['project', 'hr_timesheet_sheet', 'hr_timesheet_invoice'],
'init_xml': [],
'update_xml': ["security/ir.model.access.csv","process/project_timesheet_process.xml", "report/task_report_view.xml", "project_timesheet_view.xml"],
'demo_xml': [],
'demo_xml': ["project_timesheet_demo.xml"],
'test': [
'test/worktask_entry_to_timesheetline_entry.yml',
],
@@ -0,0 +1,60 @@
<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data noupdate="1">
<!-- Example employee -->
<record id="hr.employee2" model="hr.employee">
<field name="user_id" ref="project.res_users_technical_leader"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee3" model="hr.employee">
<field name="user_id" ref="project.res_users_project_manager"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee4" model="hr.employee">
<field name="name">Phuong</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="user_id" ref="project.res_users_analyst"/>
<field name="category_ids" eval="[(6, 0, [ref('hr.category_employee')])]"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee5" model="hr.employee">
<field name="name">Francois</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="user_id" ref="project.res_users_developer"/>
<field name="category_ids" eval="[(6, 0, [ref('hr.category_employee')])]"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee6" model="hr.employee">
<field name="name">Julien</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="user_id" ref="project.res_users_designer"/>
<field name="category_ids" eval="[(6, 0, [ref('hr.category_employee')])]"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee7" model="hr.employee">
<field name="name">Alien</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="user_id" ref="project.res_users_tester"/>
<field name="category_ids" eval="[(6, 0, [ref('hr.category_employee')])]"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
<record id="hr.employee8" model="hr.employee">
<field name="name">Fabian</field>
<field name="calendar_id" ref="resource.timesheet_group1"/>
<field name="user_id" ref="project.res_users_finacial_manager"/>
<field name="category_ids" eval="[(6, 0, [ref('hr.category_employee')])]"/>
<field name="product_id" ref="hr_timesheet.product_consultant"/>
<field name="journal_id" ref="hr_timesheet.analytic_journal"/>
</record>
</data>
</openerp>
@@ -36,5 +36,7 @@
parent="base.menu_main_pm" sequence="5"/>
<menuitem id="menu_project_billing_line" name="Bill Tasks Work"
parent="menu_project_billing" action="hr_timesheet_invoice.action_hr_analytic_timesheet_open_tree"/>
<menuitem id="base.menu_project_management_time_tracking" name="Time Tracking"
parent="base.menu_main_pm" sequence="5" groups="project.group_project_finance_user"/>
</data>
</openerp>
@@ -4,3 +4,5 @@
"access_hr_timesheet_sheet_sheet_user","hr.timesheet.sheet.sheet.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
"access_hr_analytic_timesheet_system","hr.analytic.timesheet.system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,1,1,1
"access_hr_timesheet_sheet_sheet_system","hr.timesheet.sheet.sheet.system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,1,1,1
"access_project_timesheet_project_financial_user","hr_timesheet_sheet.sheet.project.financial.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_finance_user",1,1,1,0
"access_report_timesheet_task_user_financial_user","report.timesheet.task.user.financial.user","model_report_timesheet_task_user","project.group_project_finance_user",1,0,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
4 access_hr_timesheet_sheet_sheet_user hr.timesheet.sheet.sheet.user hr_timesheet_sheet.model_hr_timesheet_sheet_sheet project.group_project_user 1 1 1 0
5 access_hr_analytic_timesheet_system hr.analytic.timesheet.system hr_timesheet_sheet.model_hr_analytic_timesheet base.group_system 1 1 1 1
6 access_hr_timesheet_sheet_sheet_system hr.timesheet.sheet.sheet.system hr_timesheet_sheet.model_hr_timesheet_sheet_sheet base.group_system 1 1 1 1
7 access_project_timesheet_project_financial_user hr_timesheet_sheet.sheet.project.financial.user hr_timesheet_sheet.model_hr_timesheet_sheet_sheet project.group_project_finance_user 1 1 1 0
8 access_report_timesheet_task_user_financial_user report.timesheet.task.user.financial.user model_report_timesheet_task_user project.group_project_finance_user 1 0 0 0