[MERGE]: Merge with lp:openobject-trunk-dev-addons2
bzr revid: ksa@tinyerp.co.in-20101018051015-b8x186t2bm12tvm8
This commit is contained in:
@@ -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
|
||||
-->
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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\'.'),
|
||||
|
||||
@@ -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
|
||||
-->
|
||||
|
||||
@@ -305,13 +305,15 @@
|
||||
<field eval="2" name="priority"/>
|
||||
<field name="arch" type="xml">
|
||||
<tree colors="grey:state in ('cancelled','done');blue:remaining_hours<0 and state in ('pending');red:date_deadline and (date_deadline<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">
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -56,7 +56,7 @@
|
||||
<group col="16" colspan="8">
|
||||
<filter string="Year" icon="terp-go-year" help="Current Year"
|
||||
domain="[('create_date','<=', time.strftime('%%Y-%%m-%%d')),('create_date','>=',time.strftime('%%Y-01-01'))]"
|
||||
/>
|
||||
/>
|
||||
|
||||
<filter string="Month" icon="terp-go-month" name="This Month"
|
||||
domain="[('create_date','<=',(datetime.date.today()+relativedelta(day=31)).strftime('%%Y-%%m-%%d')),('create_date','>=',(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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
||||
-
|
||||
|
||||
@@ -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
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
@@ -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')
|
||||
|
||||
@@ -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
|
||||
|
||||
|
@@ -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
|
||||
|
||||
|
Reference in New Issue
Block a user