diff --git a/addons/account/account.py b/addons/account/account.py
index 11f537d68fc..5d4910b11ea 100644
--- a/addons/account/account.py
+++ b/addons/account/account.py
@@ -1576,7 +1576,6 @@ class account_config_wizard(osv.osv_memory):
'date1': lambda *a: time.strftime('%Y-01-01'),
'date2': lambda *a: time.strftime('%Y-12-31'),
'period':lambda *a:'month',
- 'charts': lambda *a: -1,
}
def action_cancel(self,cr,uid,ids,conect=None):
return {
diff --git a/addons/crm/crm.py b/addons/crm/crm.py
index 3cd86c36d25..0dc516b38a9 100644
--- a/addons/crm/crm.py
+++ b/addons/crm/crm.py
@@ -493,7 +493,7 @@ class crm_case(osv.osv):
'case_subject': case.name,
'case_date': case.date,
- 'case_user': case.user_id.name or '/',
+ 'case_user': (case.user_id and case.user_id.name) or '/',
'case_user_email': (case.user_id and case.user_id.address_id and case.user_id.address_id.email) or '/',
'case_user_phone': (case.user_id and case.user_id.address_id and case.user_id.address_id.phone) or '/',
diff --git a/addons/hr_timesheet/hr_timesheet_view.xml b/addons/hr_timesheet/hr_timesheet_view.xml
index 73d6e26e1d5..48f0ad7b400 100644
--- a/addons/hr_timesheet/hr_timesheet_view.xml
+++ b/addons/hr_timesheet/hr_timesheet_view.xml
@@ -48,7 +48,7 @@
form
-
+
My Working Hours
diff --git a/addons/profile_service/__terp__.py b/addons/profile_service/__terp__.py
index 906b583fc66..08021bca61c 100644
--- a/addons/profile_service/__terp__.py
+++ b/addons/profile_service/__terp__.py
@@ -33,7 +33,6 @@
"category":"Profile",
"depends":[
"hr",
- "crm",
"project",
"board_project",
"account_analytic_analysis"
diff --git a/addons/project/project.py b/addons/project/project.py
index 33843b70bbc..3bb08ed8a89 100644
--- a/addons/project/project.py
+++ b/addons/project/project.py
@@ -116,7 +116,7 @@ class project(osv.osv):
'priority': fields.integer('Sequence'),
'manager': fields.many2one('res.users', 'Project Manager'),
'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."),
- 'members': fields.many2many('res.users', 'project_user_rel', 'project_id', 'uid', 'Project Members'),
+ '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."),
'tasks': fields.one2many('project.task', 'project_id', "Project tasks"),
'parent_id': fields.many2one('project.project', 'Parent Project'),
'child_id': fields.one2many('project.project', 'parent_id', 'Subproject'),
@@ -127,10 +127,10 @@ class project(osv.osv):
'date_end': fields.date('Expected End'),
'partner_id': fields.many2one('res.partner', 'Partner'),
'contact_id': fields.many2one('res.partner.address', 'Contact'),
- 'warn_customer': fields.boolean('Warn Partner'),
- 'warn_header': fields.text('Mail header'),
- 'warn_footer': fields.text('Mail footer'),
- 'notes': fields.text('Notes'),
+ 'warn_customer': fields.boolean('Warn Partner', help="If you check this, the user will have a popup when closing a task that propose a message to send by email to the customer."),
+ 'warn_header': fields.text('Mail Header', help="Header added at the beginning of the email for the warning message sent to the customer when a task is closed."),
+ 'warn_footer': fields.text('Mail Footer', help="Footer added at the beginning of the email for the warning message sent to the customer when a task is closed."),
+ 'notes': fields.text('Notes', help="Internal description of the project."),
'timesheet_id': fields.many2one('hr.timesheet.group', 'Working Time', help="Timetable working hours to adjust the gantt diagram report"),
'state': fields.selection([('template', 'Template'), ('open', 'Open'), ('pending', 'Pending'), ('cancelled', 'Cancelled'), ('done', 'Done')], 'State', required=True, readonly=True),
}
diff --git a/addons/project/project_view.xml b/addons/project/project_view.xml
index 45a0256c05a..aae0ba550be 100644
--- a/addons/project/project_view.xml
+++ b/addons/project/project_view.xml
@@ -34,11 +34,12 @@
-
-
-
+
+
+
-
@@ -247,10 +248,10 @@
-
+
-
+
diff --git a/addons/project/wizard/task_delegate.py b/addons/project/wizard/task_delegate.py
index a2f2c3361b0..3f613d515ea 100644
--- a/addons/project/wizard/task_delegate.py
+++ b/addons/project/wizard/task_delegate.py
@@ -46,13 +46,13 @@ ask_form = """
"""
ask_fields = {
- 'name': {'string': 'Title', 'type': 'char', 'required': 'True', 'size':64},
- 'prefix': {'string': 'Prefix of Task', 'type': 'char', 'required': 'True', 'size':64},
- 'user_id': {'string':'Assign To', 'type':'many2one', 'relation': 'res.users', 'required':'True'},
- 'include_info': {'string':'Copy Description', 'type':'boolean'},
- 'planned_hours': {'string':'Planned Hours', 'type':'float', 'widget':'float_time'},
- 'planned_hours_me': {'string':'Hours to Validate', 'type':'float', 'widget':'float_time'},
- 'state': {'string':'Validation State', 'type':'selection', 'selection': [('pending','Pending'),('done','Done')]},
+ 'name': {'string': 'Delegated Title', 'type': 'char', 'required': 'True', 'size':64, 'help':"New title of the task delegated to the user."},
+ 'prefix': {'string': 'Your Task Title', 'type': 'char', 'required': 'True', 'size':64, 'help':"New title of your own task to validate the work done."},
+ 'user_id': {'string':'Assign To', 'type':'many2one', 'relation': 'res.users', 'required':'True', 'help':"User you want to delegate this task to."},
+ 'include_info': {'string':'Copy Description', 'type':'boolean', 'help':"Reinclude the description of the task in the task of the user."},
+ 'planned_hours': {'string':'Planned Hours', 'type':'float', 'widget':'float_time', 'help':"Estimated time to close this task by the delegated user."},
+ 'planned_hours_me': {'string':'Hours to Validate', 'type':'float', 'widget':'float_time', 'help':"Estimated time for you to validate the work done by the user to whom you delegate this task."},
+ 'state': {'string':'Validation State', 'type':'selection', 'selection': [('pending','Pending'),('done','Done')], 'help':"New state of your own task. Pending will be reopened automatically when the delegated task is closed.", 'required':True},
}
class wizard_delegate(wizard.interface):
@@ -60,8 +60,7 @@ class wizard_delegate(wizard.interface):
task_obj = pooler.get_pool(cr.dbname).get('project.task')
task = task_obj.browse(cr, uid, data['id'], context)
newname = task.name
- if not task.name.startswith(data['form']['prefix'] or '++'):
- newname = (data['form']['prefix'] or '')+task.name
+ newname = data['form']['prefix'] or ''
task_obj.copy(cr, uid, data['id'], {
'name': data['form']['name'],
'user_id': data['form']['user_id'],
@@ -70,10 +69,11 @@ class wizard_delegate(wizard.interface):
'parent_id': data['id'],
'state': 'open',
'description': data['form']['include_info'] and task.description or '',
- 'child_ids': []
+ 'child_ids': [],
+ 'work_ids': []
})
task_obj.write(cr, uid, data['id'], {
- 'planned_hours': data['form']['planned_hours_me'],
+ 'remaining_hours': data['form']['planned_hours_me'],
'name': newname
})
if data['form']['state']=='pending':
@@ -88,9 +88,9 @@ class wizard_delegate(wizard.interface):
return {
'name':task.name,
'user_id': False,
- 'planned_hours': task.planned_hours,
- 'planned_hours_me': task.planned_hours / 5.0,
- 'prefix': 'CHECK: ',
+ 'planned_hours': task.remaining_hours,
+ 'planned_hours_me': 1.0,
+ 'prefix': 'CHECK: '+ (task.name or ''),
'state': 'pending'
}
diff --git a/addons/project_gtd/project_gtd_view.xml b/addons/project_gtd/project_gtd_view.xml
index f34b4a4889c..ff6a8d03712 100644
--- a/addons/project_gtd/project_gtd_view.xml
+++ b/addons/project_gtd/project_gtd_view.xml
@@ -1,210 +1,212 @@
-
+
-
- project.gtd.context.tree
- project.gtd.context
- tree
-
-
-
-
-
-
-
-
- project.gtd.context.form
- project.gtd.context
- form
-
-
-
-
-
- Contexts
- project.gtd.context
-
-
- My Contexts
- project.gtd.context
- [('user_id','=',uid)]
-
-
-
-
-
+
+ project.gtd.context.tree
+ project.gtd.context
+ tree
+
+
+
+
+
+
+
+
+ project.gtd.context.form
+ project.gtd.context
+ form
+
+
+
+
+
+ Contexts
+ project.gtd.context
+
+
+ My Contexts
+ project.gtd.context
+ [('user_id','=',uid)]
+
+
+
+
+
-
- project.gtd.timebox.tree
- project.gtd.timebox
- tree
- child_ids
-
-
-
-
-
-
-
-
-
+
+ project.gtd.timebox.tree
+ project.gtd.timebox
+ tree
+ child_ids
+
+
+
+
+
+
+
+
+
-
- project.gtd.timebox.form
- project.gtd.timebox
- form
-
-
-
-
+
+ project.gtd.timebox.form
+ project.gtd.timebox
+ form
+
+
+
+
-
- Timeboxes
- project.gtd.timebox
- tree
- [('parent_id','=',False)]
-
-
- My Timeboxes
- project.gtd.timebox
- [('user_id','=',uid)]
-
-
-
-
+
+ Timeboxes
+ project.gtd.timebox
+ tree
+ [('parent_id','=',False)]
+
+
+ My Timeboxes
+ project.gtd.timebox
+ [('user_id','=',uid)]
+
+
+
+
-
- project.task.gtd.inbox.tree
- project.task
- tree
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Inbox Tasks
- project.task
- [('user_id','=',uid),('timebox_id','=',False),('state','in',('open','draft'))]
- {'gtd_sort':True}
-
-
-
-
-
+
+ project.task.gtd.inbox.tree
+ project.task
+ tree
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Inbox Tasks
+ project.task
+ [('user_id','=',uid),('timebox_id','=',False),('state','in',('open','draft'))]
+ {'gtd_sort':True}
+
+
+
+
+
-
- project.gtd.timebox.treelist
- project.gtd.timebox
- tree
- 50
-
-
-
-
-
-
+
+ project.gtd.timebox.treelist
+ project.gtd.timebox
+ tree
+ 50
+
+
+
+
+
+
-
- My Timeboxes
- project.gtd.timebox
- [('user_id','=',uid)]
- form
-
- {'record_id':False}
-
-
-
+
+ My Timeboxes
+ project.gtd.timebox
+ [('user_id','=',uid)]
+ form
+
+ {'record_id':False}
+
+
+
-
- project.task.form.timebox
- project.task
- form
-
-
-
-
-
-
-
-
-
+
+ project.task.form.timebox
+ project.task
+ form
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
+
-
+
-
+