[MERGE]: Merge with lp:openobject-trunk-dev-addons2

bzr revid: ksa@tinyerp.co.in-20101018051015-b8x186t2bm12tvm8
This commit is contained in:
ksa (Open ERP)
2010-10-18 10:40:15 +05:30
31 changed files with 466 additions and 393 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>
@@ -187,6 +187,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
-->
+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
-->
+4 -2
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)"
@@ -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,project.group_project_finance_user"/>
<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">
+1 -5
View File
@@ -5,7 +5,7 @@
"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",0,0,0,0
"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,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
@@ -36,7 +36,3 @@
"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
"access_project_project","project.project","model_project_project","group_project_finance_user",1,0,0,0
"access_project_task","project.task","model_project_task","group_project_finance_user",1,0,0,0
"access_report_project_task_user","report.project.task.user","model_report_project_task_user","group_project_finance_user",1,0,0,0
"access_project_task_type","project.task.type","model_project_task_type","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
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 0 1 0 1 0 1 0 1
9 access_project_task project.task model_project_task project.group_project_user 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
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
access_project_project project.project model_project_project group_project_finance_user 1 0 0 0
access_project_task project.task model_project_task group_project_finance_user 1 0 0 0
access_report_project_task_user report.project.task.user model_report_project_task_user group_project_finance_user 1 0 0 0
access_project_task_type project.task.type model_project_task_type group_project_finance_user 1 0 0 0
@@ -9,5 +9,3 @@
"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
"access_project_gtd_context","project.gtd.context","model_project_gtd_context","project.group_project_finance_user",1,0,0,0
"access_project_gtd_timebox","project.gtd.timebox","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
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
access_project_gtd_context project.gtd.context model_project_gtd_context project.group_project_finance_user 1 0 0 0
access_project_gtd_timebox project.gtd.timebox model_project_gtd_timebox project.group_project_finance_user 1 0 0 0
@@ -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'))]"
@@ -22,10 +22,3 @@
"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
"access_project_issue","project.issue","model_project_issue","project.group_project_finance_user",1,0,0,0
"access_project_issue_report","project.issue.report","model_project_issue_report","project.group_project_finance_user",1,0,0,0
"access_project_issue_version","project.issue.version","model_project_issue_version","project.group_project_finance_user",1,0,0,0
"access_crm_case_categ","crm.case.categ","crm.model_crm_case_categ","project.group_project_finance_user",1,0,0,0
"access_resource_calendar","resource.calendar","resource.model_resource_calendar","project.group_project_finance_user",1,0,0,0
"access_resource_resource","resource.resource","resource.model_resource_resource","project.group_project_manager",1,1,1,1
"access_resource_resource","resource.resource","resource.model_resource_resource","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
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
access_project_issue project.issue model_project_issue project.group_project_finance_user 1 0 0 0
access_project_issue_report project.issue.report model_project_issue_report project.group_project_finance_user 1 0 0 0
access_project_issue_version project.issue.version model_project_issue_version project.group_project_finance_user 1 0 0 0
access_crm_case_categ crm.case.categ crm.model_crm_case_categ project.group_project_finance_user 1 0 0 0
access_resource_calendar resource.calendar resource.model_resource_calendar project.group_project_finance_user 1 0 0 0
access_resource_resource resource.resource resource.model_resource_resource project.group_project_manager 1 1 1 1
access_resource_resource resource.resource resource.model_resource_resource project.group_project_user 1 0 0 0
@@ -20,4 +20,3 @@
"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
"access_hr_analytic_timesheet","hr.analytic.timesheet","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_finance_user",1,1,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
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
access_hr_analytic_timesheet hr.analytic.timesheet hr_timesheet_sheet.model_hr_analytic_timesheet project.group_project_finance_user 1 1 0 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,56 @@
<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">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>
<!-- 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 +60,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 +70,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 +80,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 +90,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 +100,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 +110,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 +162,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>
@@ -373,13 +373,13 @@
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,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"/>
@@ -14,8 +14,3 @@
"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
"access_resource_resource","resource.resource","model_resource_resource","project.group_project_finance_user",1,0,0,0
"access_project_phase","project.phase","model_project_phase","project.group_project_finance_user",1,0,0,0
"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_finance_user",1,0,0,0
"access_resource_calendar","resource.calendar","resource.model_resource_calendar","project.group_project_finance_user",1,0,0,0
"access_resource_calendar_leaves","resource.calendar.leaves","resource.model_resource_calendar_leaves","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
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
access_resource_resource resource.resource model_resource_resource project.group_project_finance_user 1 0 0 0
access_project_phase project.phase model_project_phase project.group_project_finance_user 1 0 0 0
access_project_resource_allocation project.resource.allocation model_project_resource_allocation project.group_project_finance_user 1 0 0 0
access_resource_calendar resource.calendar resource.model_resource_calendar project.group_project_finance_user 1 0 0 0
access_resource_calendar_leaves resource.calendar.leaves resource.model_resource_calendar_leaves project.group_project_finance_user 1 0 0 0
@@ -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,12 +29,12 @@
"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": ["security/ir.model.access.csv",
"project_mailgate_view.xml",
"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
@@ -3,4 +3,3 @@
"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
"access_project_messages","project.messages","model_project_messages","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
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
access_project_messages project.messages model_project_messages project.group_project_finance_user 1 0 0 0
@@ -13,4 +13,3 @@
"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
"access_report_account_analytic_planning","report_account_analytic.planning","model_report_account_analytic_planning","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
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
access_report_account_analytic_planning report_account_analytic.planning model_report_account_analytic_planning 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')
@@ -13,6 +13,3 @@
"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
"access_scrum_product_backlog","project.scrum.product.backlog","model_project_scrum_product_backlog","project.group_project_finance_user",1,0,0,0
"access_scrum_sprint","project.scrum.sprint","model_project_scrum_sprint","project.group_project_finance_user",1,0,0,0
"access_scrum_meeting","project.scrum.meeting","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
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
access_scrum_product_backlog project.scrum.product.backlog model_project_scrum_product_backlog project.group_project_finance_user 1 0 0 0
access_scrum_sprint project.scrum.sprint model_project_scrum_sprint project.group_project_finance_user 1 0 0 0
access_scrum_meeting project.scrum.meeting 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>
@@ -38,5 +38,7 @@
<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>
@@ -6,34 +6,3 @@
"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
"access_hr_analytic_timesheet","hr.analytic.timesheet","hr_timesheet_sheet.model_hr_analytic_timesheet","project.group_project_finance_user",1,1,0,0
"access_account_invoice","account.invoice","account.model_account_invoice","project.group_project_finance_user",1,1,0,0
"access_account_bank_statement","account.bank.statement","account.model_account_bank_statement","project.group_project_finance_user",1,1,0,0
"access_account_move_line","account.move.line","account.model_account_move_line","project.group_project_finance_user",1,1,0,0
"access_account_move","account.move","account.model_account_move","project.group_project_finance_user",1,1,0,0
"access_account_analytic_line","account.analytic.line","account.model_account_analytic_line","project.group_project_finance_user",1,1,1,0
"access_account_move_line","account.move.line","account.model_account_move_line","project.group_project_finance_user",1,1,0,0
"access_account_subscription","account.subscription","account.model_account_subscription","project.group_project_finance_user",1,1,0,0
"access_account_period","account.period","account.model_account_period","project.group_project_finance_user",1,1,0,0
"access_account_analytic_journal","account.analytic.journal","account.model_account_analytic_journal","project.group_project_finance_user",1,1,0,0
"access_account_invoice_report","account.invoice.report","account.model_account_invoice_report","project.group_project_finance_user",1,1,0,0
"access_account_entries_report","account.entries.report","account.model_account_entries_report","project.group_project_finance_user",1,1,0,0
"access_analytic_entries_report","analytic.entries.report","account.model_analytic_entries_report","project.group_project_finance_user",1,1,0,0
"access_account_journal_view","account.journal.view","account.model_account_journal_view","project.group_project_finance_user",1,1,0,0
"access_account_account_type","account.account.type","account.model_account_account_type","project.group_project_finance_user",1,1,0,0
"access_account_tax_code","account.tax.code","account.model_account_tax_code","project.group_project_finance_user",1,1,0,0
"access_account_fiscalyear","account.fiscalyear","account.model_account_fiscalyear","project.group_project_finance_user",1,1,0,0
"access_account_account","account.account","account.model_account_account","project.group_project_finance_user",1,1,0,0
"access_account_journal","account.journal","account.model_account_journal","project.group_project_finance_user",1,1,0,0
"access_account_tax","account.tax","account.model_account_tax","project.group_project_finance_user",1,1,0,0
"access_account_fiscal_position","account.fiscal.position","account.model_account_fiscal_position","project.group_project_finance_user",1,1,0,0
"access_account_chart_template","account.chart.template","account.model_account_chart_template","project.group_project_finance_user",1,1,0,0
"access_account_account_template","account.account.template","account.model_account_account_template","project.group_project_finance_user",1,1,0,0
"access_account_tax_template","account.tax.template","account.model_account_tax_template","project.group_project_finance_user",1,1,0,0
"access_account_tax_code_template","account.tax.code.template","account.model_account_tax_code_template","project.group_project_finance_user",1,1,0,0
"access_account_fiscal_position_template","account.fiscal.position.template","account.model_account_fiscal_position_template","project.group_project_finance_user",1,1,0,0
"access_account_analytic_journal","account.analytic.journal","account.model_account_analytic_journal","project.group_project_finance_user",1,1,0,0
"access_account_model","account.model","account.model_account_model","project.group_project_finance_user",1,1,0,0
"access_account_payment_term","account.payment.term","account.model_account_payment_term","project.group_project_finance_user",1,1,0,0
"access_res_currency","res.currency","base.model_res_currency","project.group_project_finance_user",1,1,0,0
"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_finance_user",1,1,0,0
1 id name model_id:id group_id:id perm_read perm_write perm_create perm_unlink
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
access_hr_analytic_timesheet hr.analytic.timesheet hr_timesheet_sheet.model_hr_analytic_timesheet project.group_project_finance_user 1 1 0 0
access_account_invoice account.invoice account.model_account_invoice project.group_project_finance_user 1 1 0 0
access_account_bank_statement account.bank.statement account.model_account_bank_statement project.group_project_finance_user 1 1 0 0
access_account_move_line account.move.line account.model_account_move_line project.group_project_finance_user 1 1 0 0
access_account_move account.move account.model_account_move project.group_project_finance_user 1 1 0 0
access_account_analytic_line account.analytic.line account.model_account_analytic_line project.group_project_finance_user 1 1 1 0
access_account_move_line account.move.line account.model_account_move_line project.group_project_finance_user 1 1 0 0
access_account_subscription account.subscription account.model_account_subscription project.group_project_finance_user 1 1 0 0
access_account_period account.period account.model_account_period project.group_project_finance_user 1 1 0 0
access_account_analytic_journal account.analytic.journal account.model_account_analytic_journal project.group_project_finance_user 1 1 0 0
access_account_invoice_report account.invoice.report account.model_account_invoice_report project.group_project_finance_user 1 1 0 0
access_account_entries_report account.entries.report account.model_account_entries_report project.group_project_finance_user 1 1 0 0
access_analytic_entries_report analytic.entries.report account.model_analytic_entries_report project.group_project_finance_user 1 1 0 0
access_account_journal_view account.journal.view account.model_account_journal_view project.group_project_finance_user 1 1 0 0
access_account_account_type account.account.type account.model_account_account_type project.group_project_finance_user 1 1 0 0
access_account_tax_code account.tax.code account.model_account_tax_code project.group_project_finance_user 1 1 0 0
access_account_fiscalyear account.fiscalyear account.model_account_fiscalyear project.group_project_finance_user 1 1 0 0
access_account_account account.account account.model_account_account project.group_project_finance_user 1 1 0 0
access_account_journal account.journal account.model_account_journal project.group_project_finance_user 1 1 0 0
access_account_tax account.tax account.model_account_tax project.group_project_finance_user 1 1 0 0
access_account_fiscal_position account.fiscal.position account.model_account_fiscal_position project.group_project_finance_user 1 1 0 0
access_account_chart_template account.chart.template account.model_account_chart_template project.group_project_finance_user 1 1 0 0
access_account_account_template account.account.template account.model_account_account_template project.group_project_finance_user 1 1 0 0
access_account_tax_template account.tax.template account.model_account_tax_template project.group_project_finance_user 1 1 0 0
access_account_tax_code_template account.tax.code.template account.model_account_tax_code_template project.group_project_finance_user 1 1 0 0
access_account_fiscal_position_template account.fiscal.position.template account.model_account_fiscal_position_template project.group_project_finance_user 1 1 0 0
access_account_analytic_journal account.analytic.journal account.model_account_analytic_journal project.group_project_finance_user 1 1 0 0
access_account_model account.model account.model_account_model project.group_project_finance_user 1 1 0 0
access_account_payment_term account.payment.term account.model_account_payment_term project.group_project_finance_user 1 1 0 0
access_res_currency res.currency base.model_res_currency project.group_project_finance_user 1 1 0 0
access_account_analytic_account account.analytic.account analytic.model_account_analytic_account project.group_project_finance_user 1 1 0 0