diff --git a/addons/document/document_view.xml b/addons/document/document_view.xml
index 840c8a4c9e1..e5719705ebe 100644
--- a/addons/document/document_view.xml
+++ b/addons/document/document_view.xml
@@ -277,7 +277,7 @@
-
+
IR Attachment0
ir.attachment
@@ -296,9 +296,9 @@
-
+
IR Attachment2
ir.attachment
search
@@ -307,12 +307,14 @@
+
ir.attachment
ir.attachment
diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml
index d2da8e6ea9e..d7700d16db3 100644
--- a/addons/hr_timesheet/hr_timesheet_view.xml
+++ b/addons/hr_timesheet/hr_timesheet_view.xml
@@ -5,7 +5,6 @@
-
hr.analytic.timesheet.tree
hr.analytic.timesheet
@@ -101,7 +100,6 @@
-
hr.timesheet.employee.extd_form
diff --git a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
index cb034a8659d..f95a2b5aba0 100644
--- a/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
+++ b/addons/hr_timesheet_sheet/hr_timesheet_sheet_view.xml
@@ -186,6 +186,9 @@
+
+
@@ -322,8 +325,8 @@
-
diff --git a/addons/mail_gateway/mail_gateway_view.xml b/addons/mail_gateway/mail_gateway_view.xml
index ab118295db5..f3be1eff422 100644
--- a/addons/mail_gateway/mail_gateway_view.xml
+++ b/addons/mail_gateway/mail_gateway_view.xml
@@ -1,6 +1,10 @@
+
+
+
mailgate.message.form
mailgate.message
@@ -85,6 +89,20 @@
+
+
+
+
+ Message
+ mailgate.message
+ form
+ tree,form
+
+
+
+
+
+
mailgate.thread.form
mailgate.thread
@@ -134,6 +152,9 @@
+
+
+
Mailgateway Threads
@@ -192,5 +213,8 @@
src_model="mailgate.message"
domain="[('res_id', '=', res_id),('res_model','=',model)]"/>
+
+
diff --git a/addons/project/project.py b/addons/project/project.py
index 26f67d706ba..a09855d3bce 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -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\'.'),
diff --git a/addons/project/project_demo.xml b/addons/project/project_demo.xml
index e365d095a20..8d3752c0979 100644
--- a/addons/project/project_demo.xml
+++ b/addons/project/project_demo.xml
@@ -2,6 +2,216 @@
+
+
+
+ Phuong
+
+ phu
+ phu
+
+
+ Anthony
+
+ al
+ al
+
+
+ Quentin
+
+ qdp
+ qdp
+
+
+ Francois
+
+ fpi
+ fpi
+
+
+ Julien
+
+ jth
+ jth
+
+
+ Alien
+
+ apr
+ apr
+
+
+ Fabian
+
+ fbs
+ fbs
+
+
+
+
+
+ open
+ normal
+ Integrate a Sale and Warehouse Management.
+
+
+ Integrate a Sale and Warehouse Management.
+
+
+
+
+
+
+
+ 2
+
+ Prepare Requirements Document
+
+
+
+
+
+ 2
+
+ Make SRS
+
+
+
+
+
+ 2
+
+ Design Use Cases
+
+
+
+
+
+ 2
+
+ Budget Planning
+
+
+
+
+
+ 2
+
+ Quality Planning
+
+
+
+
+
+ 2
+
+ Risk Management Planning
+
+
+
+
+
+ 2
+
+ Create Project Schedules
+
+
+
+
+
+ 2
+
+ Dataflow Design
+
+
+
+
+
+ 2
+
+ User Interface Design
+
+
+
+
+
+ 2
+
+ Develop Module in Sale Management
+
+
+
+
+
+ 2
+
+ Develop module in Warehouse
+
+
+
+
+
+ 2
+
+ Integrate Modules
+
+
+
+
+
+ 2
+
+ Unit Testing
+
+
+
+
+
+ 2
+
+ Regression Test
+
+
+
+
+
+ 2
+
+ Documentation
+
+
+
+
+
+
+ 2
+
+ Performance Tuning
+
+
+
+
+
+ 2
+
+ Deploy and Review on Customer System
+
+
+
+
+
+ 2
+
+ Training and Presentation
+
+
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 3ea6dab6649..3d483658eb0 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -305,13 +305,15 @@
+
-
+
+
-
+
@@ -500,7 +502,7 @@
-
+
-
+
@@ -149,7 +149,7 @@
Get detailed analysis by task
-
+
diff --git a/addons/project/security/ir.model.access.csv b/addons/project/security/ir.model.access.csv
index cdd939c79ec..d842574f5ce 100644
--- a/addons/project/security/ir.model.access.csv
+++ b/addons/project/security/ir.model.access.csv
@@ -1,12 +1,12 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_project_manager","project.project manager","model_project_project","project.group_project_manager",1,1,1,1
-"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,0,0,0
+"access_account_analytic_account_manager","account.analytic.account","analytic.model_account_analytic_account","project.group_project_manager",1,1,1,1
"access_project_project","project.project","model_project_project","project.group_project_user",1,1,1,1
"access_account_analytic_account","account.analytic.account","analytic.model_account_analytic_account","project.group_project_user",1,1,1,1
"access_project_task_type_user","project.task.type user","model_project_task_type","project.group_project_user",1,1,1,1
"access_project_task_type","project.task.type","model_project_task_type","project.group_project_manager",1,1,1,1
"access_project_task_manager","project.task manager","model_project_task","project.group_project_manager",1,1,1,1
-"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,1
+"access_project_task","project.task","model_project_task","project.group_project_user",1,1,1,0
"access_project_task_work","project.task.work","model_project_task_work","project.group_project_user",1,1,1,1
"access_project_task_work_manager","project.task.work.manager","model_project_task_work","project.group_project_manager",1,1,1,1
"access_report_project_task_user","report.project.task.user","model_report_project_task_user","project.group_project_manager",1,1,1,1
@@ -28,3 +28,11 @@
"access_project_vs_hours_system","project.vs.hours.system","model_project_vs_hours","base.group_system",1,0,0,0
"access_project_task_sale_user","project.task salesman","model_project_task","base.group_sale_salesman",1,0,0,0
"access_project_project_sale_user","project.project salesman","model_project_project","base.group_sale_salesman",1,0,0,0
+"access_project_project_project_financial_user","project.project.project.financial.user","model_project_project","group_project_finance_user",1,0,0,0
+"access_project_task_project_financial_user","project.task.project.financial.user","model_project_task","group_project_finance_user",1,0,0,0
+"access_project_task_work_project_financial_user","project.task.work.project.financial.user","model_project_task_work","group_project_finance_user",1,0,0,0
+"access_report_project_task_user_project_financial_user","report.project.task.user.project.financial.user","model_report_project_task_user","group_project_finance_user",1,0,0,0
+"access_project_board_project_financial_user","board.board.project.financial.user","board.model_board_board","group_project_finance_user",1,0,0,0
+"access_account_analytic_account_project_financial_user","account.analytic.account.project.financial.user","analytic.model_account_analytic_account","group_project_finance_user",1,0,0,0
+"access_project_task_type_project_financial_user","project.task.type.project.financial.user","model_project_task_type","group_project_finance_user",1,0,0,0
+"access_project_vs_hours_project_financial_user","project.vs.hours.project.financial.user","model_project_vs_hours","group_project_finance_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/project_gtd/project_gtd_view.xml b/addons/project_gtd/project_gtd_view.xml
index fc05ee00e61..d80dd86a243 100644
--- a/addons/project_gtd/project_gtd_view.xml
+++ b/addons/project_gtd/project_gtd_view.xml
@@ -30,7 +30,7 @@
project.gtd.context
-
diff --git a/addons/project_gtd/security/ir.model.access.csv b/addons/project_gtd/security/ir.model.access.csv
index 210ac9f6c4a..0986ea1570f 100644
--- a/addons/project_gtd/security/ir.model.access.csv
+++ b/addons/project_gtd/security/ir.model.access.csv
@@ -7,3 +7,5 @@
"access_project_gtd_timebox_manager","project.gtd.timebox project manager","model_project_gtd_timebox","project.group_project_manager",1,1,1,1
"access_project_gtd_context_system","project.gtd.context system","model_project_gtd_context","base.group_system",1,1,1,1
"access_project_gtd_timebox_system","project.gtd.timebox system","model_project_gtd_timebox","base.group_system",1,1,1,1
+"access_project_gtd_context_finacial_user","project.gtd.context.financial.user","model_project_gtd_context","project.group_project_finance_user",1,0,0,0
+"access_project_gtd_timebox_finacial_user","project.gtd.timebox.financial.user","model_project_gtd_timebox","project.group_project_finance_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/project_issue/project_issue_view.xml b/addons/project_issue/project_issue_view.xml
index 1298a6f8852..9e79f367ca4 100644
--- a/addons/project_issue/project_issue_view.xml
+++ b/addons/project_issue/project_issue_view.xml
@@ -2,7 +2,7 @@
-
+
Issue Version
diff --git a/addons/project_issue/report/project_issue_report_view.xml b/addons/project_issue/report/project_issue_report_view.xml
index e6fc4cb5a43..dd09592916d 100644
--- a/addons/project_issue/report/project_issue_report_view.xml
+++ b/addons/project_issue/report/project_issue_report_view.xml
@@ -56,7 +56,7 @@
+ />
-
+
diff --git a/addons/project_issue/security/ir.model.access.csv b/addons/project_issue/security/ir.model.access.csv
index ece2be3a784..b113853cbd2 100755
--- a/addons/project_issue/security/ir.model.access.csv
+++ b/addons/project_issue/security/ir.model.access.csv
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_project_issue_all","project.issue","model_project_issue","project.group_project_manager",1,0,0,0
+"access_project_issue_all","project.issue","model_project_issue","project.group_project_manager",1,1,1,1
"access_project_issue_user","project.issue","model_project_issue","project.group_project_user",1,1,1,1
"access_project_issue","project.issue","model_project_issue","project_issue.group_project_supporter",1,1,1,1
"access_project_issue_report_all","project.issue.report","model_project_issue_report","project.group_project_manager",1,1,1,1
@@ -11,4 +11,14 @@
"access_project_issue_system","project.issue system","model_project_issue","base.group_system",1,0,0,0
"access_project_issue_report_system","project.issue.report system","model_project_issue_report","base.group_system",1,0,0,0
"access_crm_case_section_system","crm.case.section system","crm.model_crm_case_section","base.group_system",1,1,1,1
-"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,0,0,0
+"access_project_issue_version_financial_user","project.issue.version.financial.user","model_project_issue_version","project.group_project_finance_user",1,0,0,0
+"access_crm_case_categ_financial_user","crm.case.categ.financial.user","crm.model_crm_case_categ","project.group_project_finance_user",1,0,0,0
+"access_crm_case_stage_financial_user","crm.case.stage.financial.user","crm.model_crm_case_stage","project.group_project_finance_user",1,0,0,0
+"access_project_issue_report_financial_user","project.issue.report.financial.user","model_project_issue_report","project.group_project_finance_user",1,0,0,0
+"access_project_issue_board_project_financial_user","board.board.project.issue.financial.user","board.model_board_board","project.group_project_finance_user",1,0,0,0
+"access_project_issue_project_financial_user","project.issue.financial.user","model_project_issue","project.group_project_finance_user",1,0,0,0
+"access_mailgate_message_project_financial_user","mailgate.message.financial.user","mail_gateway.model_mailgate_message","project.group_project_finance_user",1,0,0,0
+"access_mailgate_message_project_manager","mailgate.message.manager","mail_gateway.model_mailgate_message","project.group_project_manager",1,1,1,1
+"access_resource_calendar_project_manager","resource.calendar.project.manager","resource.model_resource_calendar","project.group_project_manager",1,1,1,1
+"access_project_issue_report_user","project.issue.report user","model_project_issue_report","project.group_project_user",1,1,1,0
+"access_mailgate_message_issue_project_user","project.mailgate.message.issue.user","mail_gateway.model_mailgate_message","project.group_project_user",1,1,1,0
\ No newline at end of file
diff --git a/addons/project_issue_sheet/security/ir.model.access.csv b/addons/project_issue_sheet/security/ir.model.access.csv
index 235bb4d1bfc..25bcbe03ccd 100644
--- a/addons/project_issue_sheet/security/ir.model.access.csv
+++ b/addons/project_issue_sheet/security/ir.model.access.csv
@@ -5,4 +5,18 @@
"access_hr_timesheet_sheet_sheet_project_manager","hr_timesheet_sheet.sheet manager","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_manager",1,0,0,0
"access_hr_analytic_timesheet_system","hr_analytic_timesheet system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,0,0,0
"access_hr_timesheet_sheet_sheet_project_system","hr_timesheet_sheet.sheet system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,0,0,0
-
+"access_hr_analytic_timesheet_project_financial_user","account.analytic.line.timesheet.project.financial.user","account.model_account_analytic_line","project.group_project_finance_user",1,1,1,0
+"access_account_analytic_journal_project_financial_user","account.analytic.journal.project.financial.user","account.model_account_analytic_journal","project.group_project_finance_user",1,1,1,0
+"access_account_fiscalyear_project_financial_user","account.fiscalyear.project.financial.user","account.model_account_fiscalyear","project.group_project_finance_user",1,1,1,0
+"access_hr_timesheet_invoice_factor_project_financial_user","hr_timesheet_invoice.factor.project.financial.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_finance_user",1,1,1,0
+"access_account_invoice_project_financial_user","account.invoice.project.financial.user","account.model_account_invoice","project.group_project_finance_user",1,1,1,0
+"access_hr_analytic_timesheet_project_manager","account.analytic.line.timesheet.project.manager","account.model_account_analytic_line","project.group_project_manager",1,1,1,1
+"access_account_analytic_journal_project_manager","account.analytic.journal.project.manager","account.model_account_analytic_journal","project.group_project_manager",1,1,1,1
+"access_account_fiscalyear_project_manager","account.fiscalyear.project.manager","account.model_account_fiscalyear","project.group_project_manager",1,1,1,1
+"access_hr_timesheet_invoice_factor_project_manager","hr_timesheet_invoice.factor.project.manager","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_manager",1,1,1,1
+"access_account_invoice_project_manager","account.invoice.project.manager","account.model_account_invoice","project.group_project_manager",1,1,1,1
+"access_analytic_account_line_project_user","analytic_account_line_timesheet user","analytic.model_account_analytic_line","project.group_project_user",1,1,1,0
+"access_account_analytic_journal_project_user","account.analytic.journal.project.user","account.model_account_analytic_journal","project.group_project_user",1,1,1,0
+"access_account_fiscalyear_project_user","account.fiscalyear.project.user","account.model_account_fiscalyear","project.group_project_user",1,1,1,0
+"access_hr_timesheet_invoice_factor_project_user","hr_timesheet_invoice.factor.project.user","hr_timesheet_invoice.model_hr_timesheet_invoice_factor","project.group_project_user",1,1,1,0
+"access_account_invoice_project_user","account.invoice.project.user","account.model_account_invoice","project.group_project_user",1,1,1,0
diff --git a/addons/project_long_term/project_long_term.py b/addons/project_long_term/project_long_term.py
index d6d43f83c5d..cfe4ff4f283 100644
--- a/addons/project_long_term/project_long_term.py
+++ b/addons/project_long_term/project_long_term.py
@@ -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),
diff --git a/addons/project_long_term/project_long_term_demo.xml b/addons/project_long_term/project_long_term_demo.xml
index 4730706f758..8a37f4cc444 100644
--- a/addons/project_long_term/project_long_term_demo.xml
+++ b/addons/project_long_term/project_long_term_demo.xml
@@ -2,115 +2,54 @@
-
-
-
- Phuong
-
- phu
- phu
-
-
- Anthony
-
- al
- al
-
-
- Quentin
-
- qdp
- qdp
-
-
- Francois
-
- fpi
- fpi
-
-
- Julien
-
- jth
- jth
-
-
- Aline
-
- apr
- apr
-
-
- Fabian
-
- fbs
- fbs
-
-
-
+
Analyst
-
+
Project Manager
-
+
Technical Leader
-
+
Developer
-
+
Designer
-
+
Tester
-
+
Project Finacial Manager
-
-
-
- open
- normal
- Integrate an Sale and Warehouse Management.
-
-
- Integrate an Sale and Warehouse Management.
-
+
@@ -119,8 +58,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
30
-
-
+
+
@@ -129,8 +68,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
20
-
-
+
+
@@ -139,8 +78,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
20
-
-
+
+
@@ -149,8 +88,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
90
-
-
+
+
@@ -159,8 +98,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
30
-
-
+
+
@@ -169,8 +108,8 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
10
-
-
+
+
@@ -221,173 +160,82 @@ This Demo data file includes Users, Human Resources, Projects and it' members li
-
-
-
- 2
-
- Prepare Requirements Document
+
-
-
-
- 2
-
- Make SRS
+
-
-
-
- 2
-
- Design Use Cases
+
-
-
-
- 2
-
- Budget Planning
+
-
-
-
- 2
-
- Quality Planning
+
-
-
-
- 2
-
- Risk Management Planning
+
-
-
-
- 2
-
- Create Project Schedules
+
-
-
-
- 2
-
- Dataflow Design
+
-
-
-
- 2
-
- User Interface Design
+
-
-
-
- 2
-
- Develop Module in Sale Management
+
-
-
-
- 2
-
- Develop module in Warehouse
+
-
-
-
- 2
-
- Integrate Modules
+
-
-
-
- 2
-
- Unit Testing
+
-
-
-
- 2
-
- Regression Test
+
-
-
-
- 2
-
- Documentation
+
-
-
-
-
- 2
-
- Performance Tuning
+
-
-
-
- 2
-
- Deploy and Review on Customer System
+
-
-
-
- 2
-
- Training and Presentation
+
-
+
-
+
diff --git a/addons/project_long_term/project_long_term_view.xml b/addons/project_long_term/project_long_term_view.xml
index 713322f5f0e..5e6ccebfe75 100644
--- a/addons/project_long_term/project_long_term_view.xml
+++ b/addons/project_long_term/project_long_term_view.xml
@@ -13,9 +13,9 @@
project.resource.allocation
gantt
-
-
-
+
+
+
@@ -369,17 +369,17 @@
# ------------------------------------------------------
+ name="Resource Allocations" parent="base.menu_project_long_term" sequence="2"/>
-
+
diff --git a/addons/project_long_term/security/ir.model.access.csv b/addons/project_long_term/security/ir.model.access.csv
index 7af7984d7e6..08297cee95d 100644
--- a/addons/project_long_term/security/ir.model.access.csv
+++ b/addons/project_long_term/security/ir.model.access.csv
@@ -1,10 +1,16 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_phase","project.phase","model_project_phase","project.group_project_user",1,1,1,0
-"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_user",1,1,1,0
+"access_project_resource_allocation","project.resource.allocation","model_project_resource_allocation","project.group_project_user",1,0,0,0
"access_project_phase_manager","project.phase manager","model_project_phase","project.group_project_manager",1,0,0,0
"access_project_resource_allocation_manager","project.resource.allocation manager","model_project_resource_allocation","project.group_project_manager",1,0,0,0
"access_project_resource_allocation_system","project.resource.allocation system","model_project_resource_allocation","base.group_system",1,0,0,0
"access_project_phase_system","project.phase system","model_project_phase","base.group_system",1,0,0,0
-"access_resource_resource_user","resource.resource user","resource.model_resource_resource","project.group_project_user",1,0,1,1
+"access_resource_resource_user","resource.resource user","resource.model_resource_resource","project.group_project_user",1,0,0,0
"access_resource_calendar_leaves_user","resource.calendar.leaves user","resource.model_resource_calendar_leaves","project.group_project_user",1,1,1,1
"access_resource_resource_manager","resource.resource manager","resource.model_resource_resource","project.group_project_manager",1,1,1,1
+"access_project_resource_allocation_financial_user","project.resource.allocation.financial.user","model_project_resource_allocation","project.group_project_finance_user",1,0,0,0
+"access_project_phase_financial_user","project.phase.financial.user","model_project_phase","project.group_project_finance_user",1,0,0,0
+"access_resource_resource_financial_user","resource.resource.financial.user","model_resource_resource","project.group_project_finance_user",1,0,0,0
+"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar","project.group_project_finance_user",1,0,0,0
+"access_resource_calendar_financial_user","resource.calendar.financial.user","resource.model_resource_calendar_leaves","project.group_project_finance_user",1,0,0,0
+"access_project_resource_allocation_manager","project.resource.allocation.manager","model_project_resource_allocation","project.group_project_manager",1,1,1,1
\ No newline at end of file
diff --git a/addons/project_long_term/test/schedule_phase_tasks.yml b/addons/project_long_term/test/schedule_phase_tasks.yml
index 150d80af822..aa54fa1ac57 100644
--- a/addons/project_long_term/test/schedule_phase_tasks.yml
+++ b/addons/project_long_term/test/schedule_phase_tasks.yml
@@ -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
diff --git a/addons/project_long_term/test/schedule_project_tasks.yml b/addons/project_long_term/test/schedule_project_tasks.yml
index dfc4cf1fc5e..04a05437487 100644
--- a/addons/project_long_term/test/schedule_project_tasks.yml
+++ b/addons/project_long_term/test/schedule_project_tasks.yml
@@ -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
-
diff --git a/addons/project_mailgate/__openerp__.py b/addons/project_mailgate/__openerp__.py
index cd3d0caeaf8..a5e7fd46f4c 100644
--- a/addons/project_mailgate/__openerp__.py
+++ b/addons/project_mailgate/__openerp__.py
@@ -29,11 +29,11 @@
"depends": ["project", "mail_gateway"],
"description": """This module is an interface that synchronises mails with OpenERP Project Task.
-It allows creating tasks as soon as a new mail arrives in our configured mail server.
-Moreover, it keeps track of all further communications and task states.
+It allows creating tasks as soon as a new mail arrives in our configured mail server.
+Moreover, it keeps track of all further communications and task states.
""",
"init_xml": [],
- "update_xml": [
+ "update_xml": ["security/ir.model.access.csv",
"project_mailgate_view.xml",
],
'demo_xml': [
diff --git a/addons/project_mailgate/security/ir.model.access.csv b/addons/project_mailgate/security/ir.model.access.csv
new file mode 100644
index 00000000000..1a840d89e9a
--- /dev/null
+++ b/addons/project_mailgate/security/ir.model.access.csv
@@ -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
diff --git a/addons/project_messages/__openerp__.py b/addons/project_messages/__openerp__.py
index 352fe797f22..97f9c4f2be5 100644
--- a/addons/project_messages/__openerp__.py
+++ b/addons/project_messages/__openerp__.py
@@ -32,7 +32,8 @@
""",
'website': 'http://www.openerp.com',
'init_xml': [],
- 'update_xml': ['project_messages_view.xml'],
+ 'update_xml': ['security/ir.model.access.csv',
+ 'project_messages_view.xml'],
'demo_xml': [],
'installable': True,
'active': False,
diff --git a/addons/project_messages/project_messages_view.xml b/addons/project_messages/project_messages_view.xml
index e270d2d001a..7042ce9d9b2 100644
--- a/addons/project_messages/project_messages_view.xml
+++ b/addons/project_messages/project_messages_view.xml
@@ -109,6 +109,6 @@
tree,form
-
+
diff --git a/addons/project_messages/security/ir.model.access.csv b/addons/project_messages/security/ir.model.access.csv
index fb0b4e8255a..e31ffd860cb 100644
--- a/addons/project_messages/security/ir.model.access.csv
+++ b/addons/project_messages/security/ir.model.access.csv
@@ -1,3 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
"access_project_messages","project.messages","model_project_messages","project.group_project_user",1,1,1,1
"access_project_messages_manager","project.messages manager","model_project_messages","project.group_project_manager",1,1,1,1
+"access_project_messages_financial_user","project.messages.financial.user","model_project_messages","project.group_project_finance_user",1,0,0,0
+"access_project_message_project_user","project.project.user","model_project_project","project.group_project_user",1,0,0,0
diff --git a/addons/project_planning/security/ir.model.access.csv b/addons/project_planning/security/ir.model.access.csv
index 330a25485c7..2c6c92db8ff 100644
--- a/addons/project_planning/security/ir.model.access.csv
+++ b/addons/project_planning/security/ir.model.access.csv
@@ -1,5 +1,5 @@
"id","name","model_id:id","group_id:id","perm_read","perm_write","perm_create","perm_unlink"
-"access_report_account_analytic_planning_project_manager","report_account_analytic.planning manager","model_report_account_analytic_planning","project.group_project_manager",1,0,0,0
+"access_report_account_analytic_planning_project_manager","report_account_analytic.planning manager","model_report_account_analytic_planning","project.group_project_manager",1,1,1,1
"access_report_account_analytic_planning_line_project_manager","report_account_analytic.planning.line manager","model_report_account_analytic_planning_line","project.group_project_manager",1,0,0,0
"access_report_account_analytic_planning_stat_project_manager","report_account_analytic.planning.stat manager","model_report_account_analytic_planning_stat","project.group_project_manager",1,0,0,0
"access_report_account_analytic_planning_stat_project_user","report_account_analytic.planning.stat user","model_report_account_analytic_planning_stat","project.group_project_user",1,1,1,0
@@ -9,3 +9,7 @@
"access_report_account_analytic_planning_line_project_user","report_account_analytic.planning.line user","model_report_account_analytic_planning_line","project.group_project_user",1,1,1,0
"access_report_account_analytic_planning_account_project_user","report_account_analytic.planning.account user","model_report_account_analytic_planning_account","project.group_project_user",1,1,1,0
"access_report_account_analytic_planning_system","report_account_analytic.planning system","model_report_account_analytic_planning","base.group_system",1,0,0,0
+"access_report_account_analytic_planning_financial_user","report_account_analytic.planning.financial.user","model_report_account_analytic_planning","project.group_project_finance_user",1,0,0,0
+"access_report_account_analytic_planning_stat_financial_user","report_account_analytic.planning.stat.financial.user","model_report_account_analytic_planning_stat","project.group_project_finance_user",1,0,0,0
+"access_report_account_analytic_planning__project_manager","report_account_analytic.planning.manager","model_report_account_analytic_planning_user","project.group_project_manager",1,1,1,1
+"access_report_account_analytic_planning__project_finance_user","report_account_analytic.planning.finance.user","model_report_account_analytic_planning_user","project.group_project_finance_user",1,0,0,0
\ No newline at end of file
diff --git a/addons/project_scrum/report/_burndown.py b/addons/project_scrum/report/_burndown.py
index 6f0db24bcb6..b2cedd85881 100644
--- a/addons/project_scrum/report/_burndown.py
+++ b/addons/project_scrum/report/_burndown.py
@@ -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 ires:
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')
diff --git a/addons/project_scrum/report/task_burndown.py b/addons/project_scrum/report/task_burndown.py
index 50a02792ced..14807126503 100644
--- a/addons/project_scrum/report/task_burndown.py
+++ b/addons/project_scrum/report/task_burndown.py
@@ -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']
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Phuong
+
+
+
+
+
+
+
+
+ Francois
+
+
+
+
+
+
+
+ Julien
+
+
+
+
+
+
+
+ Alien
+
+
+
+
+
+
+
+ Fabian
+
+
+
+
+
+
+
+
+
diff --git a/addons/project_timesheet/project_timesheet_view.xml b/addons/project_timesheet/project_timesheet_view.xml
index 61834abbe66..05be6d5466e 100644
--- a/addons/project_timesheet/project_timesheet_view.xml
+++ b/addons/project_timesheet/project_timesheet_view.xml
@@ -36,5 +36,7 @@
parent="base.menu_main_pm" sequence="5"/>
+
diff --git a/addons/project_timesheet/security/ir.model.access.csv b/addons/project_timesheet/security/ir.model.access.csv
index ab1e82cacb6..8f10009fa12 100644
--- a/addons/project_timesheet/security/ir.model.access.csv
+++ b/addons/project_timesheet/security/ir.model.access.csv
@@ -4,3 +4,5 @@
"access_hr_timesheet_sheet_sheet_user","hr.timesheet.sheet.sheet.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_user",1,1,1,0
"access_hr_analytic_timesheet_system","hr.analytic.timesheet.system","hr_timesheet_sheet.model_hr_analytic_timesheet","base.group_system",1,1,1,1
"access_hr_timesheet_sheet_sheet_system","hr.timesheet.sheet.sheet.system","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","base.group_system",1,1,1,1
+"access_project_timesheet_project_financial_user","hr_timesheet_sheet.sheet.project.financial.user","hr_timesheet_sheet.model_hr_timesheet_sheet_sheet","project.group_project_finance_user",1,1,1,0
+"access_report_timesheet_task_user_financial_user","report.timesheet.task.user.financial.user","model_report_timesheet_task_user","project.group_project_finance_user",1,0,0,0