diff --git a/addons/hr_timesheet/__init__.py b/addons/hr_timesheet/__init__.py
index 0fa9235b104..ea15e1da791 100644
--- a/addons/hr_timesheet/__init__.py
+++ b/addons/hr_timesheet/__init__.py
@@ -19,20 +19,7 @@ def create_internal_project(cr, registry):
admin = env.ref('base.user_admin', raise_if_not_found=False)
if not admin:
return
- project_vals = []
- for company in env['res.company'].search([]):
- company = company.with_company(company)
- project_vals += [{
- 'name': _('Internal'),
- 'allow_timesheets': True,
- 'company_id': company.id,
- 'task_ids': [(0, 0, {
- 'name': name,
- 'company_id': company.id,
- }) for name in [_('Training'), _('Meeting')]]
- }]
- project_ids = env['project.project'].create(project_vals)
-
+ project_ids = env['res.company'].search([])._create_internal_project_task()
env['account.analytic.line'].create([{
'name': _("Analysis"),
'user_id': admin.id,
diff --git a/addons/hr_timesheet/data/hr_timesheet_data.xml b/addons/hr_timesheet/data/hr_timesheet_data.xml
index fb2d8e194df..a8ee4d0ab55 100644
--- a/addons/hr_timesheet/data/hr_timesheet_data.xml
+++ b/addons/hr_timesheet/data/hr_timesheet_data.xml
@@ -24,4 +24,9 @@
15
+
+ 1
+ Internal
+
+
diff --git a/addons/hr_timesheet/models/res_company.py b/addons/hr_timesheet/models/res_company.py
index 429799ec54e..f22d7f9d60f 100644
--- a/addons/hr_timesheet/models/res_company.py
+++ b/addons/hr_timesheet/models/res_company.py
@@ -48,22 +48,18 @@ class ResCompany(models.Model):
def _create_internal_project_task(self):
results = []
+ type_ids = [(4, self.env.ref('hr_timesheet.internal_project_default_stage').id)]
for company in self:
company = company.with_company(company)
- internal_project = company.env['project.project'].sudo().create({
+ results += [{
'name': _('Internal'),
'allow_timesheets': True,
'company_id': company.id,
- })
-
- company.env['project.task'].sudo().create([{
- 'name': _('Training'),
- 'project_id': internal_project.id,
- 'company_id': company.id,
- }, {
- 'name': _('Meeting'),
- 'project_id': internal_project.id,
- 'company_id': company.id,
- }])
- results.append(internal_project)
- return results
+ 'type_ids': type_ids,
+ 'task_ids': [(0, 0, {
+ 'name': name,
+ 'company_id': company.id,
+ }) for name in [_('Training'), _('Meeting')]]
+ }]
+ project_ids = self.env['project.project'].create(results)
+ return project_ids
diff --git a/addons/project/models/project.py b/addons/project/models/project.py
index f8076869dd2..ca53912c012 100644
--- a/addons/project/models/project.py
+++ b/addons/project/models/project.py
@@ -774,7 +774,8 @@ class Task(models.Model):
self.recurrence_message = False
for task in self.filtered(lambda t: t.recurring_task and t._is_recurrence_valid()):
date = fields.Date.today()
- number_occurrences = min(5, task.repeat_number if task.repeat_type == 'after' else 5)
+ recurrence_left = task.recurrence_id.recurrence_left if task.recurrence_id else task.repeat_number
+ number_occurrences = min(5, recurrence_left if task.repeat_type == 'after' else 5)
delta = task.repeat_interval if task.repeat_unit == 'day' else 1
recurring_dates = self.env['project.task.recurrence']._get_next_recurring_dates(
date + timedelta(days=delta),
@@ -790,10 +791,13 @@ class Task(models.Model):
task.repeat_month,
count=number_occurrences)
date_format = self.env['res.lang']._lang_get(self.env.user.lang).date_format
- task.recurrence_message = '
'
- for date in recurring_dates[:5]:
- task.recurrence_message += '- %s
' % date.strftime(date_format)
- if task.repeat_type == 'after' and task.repeat_number > 5 or task.repeat_type == 'forever' or len(recurring_dates) > 5:
+ if recurrence_left == 0:
+ recurrence_title = _('There are no more occurrences.')
+ else:
+ recurrence_title = _('Next Occurrences:')
+ task.recurrence_message = ' %s
' % recurrence_title
+ task.recurrence_message += ''.join(['- %s
' % date.strftime(date_format) for date in recurring_dates[:5]])
+ if task.repeat_type == 'after' and recurrence_left > 5 or task.repeat_type == 'forever' or len(recurring_dates) > 5:
task.recurrence_message += '- ...
'
task.recurrence_message += '
'
if task.repeat_type == 'until':
diff --git a/addons/project/models/project_task_recurrence.py b/addons/project/models/project_task_recurrence.py
index 94095cdadde..17cb4da0722 100644
--- a/addons/project/models/project_task_recurrence.py
+++ b/addons/project/models/project_task_recurrence.py
@@ -214,7 +214,7 @@ class ProjectTaskRecurrence(models.Model):
def _create_next_task(self):
for recurrence in self:
- task = self.sudo().task_ids[-1]
+ task = recurrence.sudo().task_ids[-1]
create_values = recurrence._new_task_values(task)
new_task = self.env['project.task'].sudo().create(create_values)
if not new_task.parent_id and task.child_ids:
diff --git a/addons/project/views/project_views.xml b/addons/project/views/project_views.xml
index f2ba62fa288..c92a0725cdc 100644
--- a/addons/project/views/project_views.xml
+++ b/addons/project/views/project_views.xml
@@ -445,6 +445,37 @@
+
+ project.project.kanban
+ project.project
+
+
+
+
+
+
+
+
+
+
+
+
project.project.view.form.simplified
project.project
@@ -731,7 +762,6 @@
diff --git a/addons/project_timesheet_holidays/models/res_company.py b/addons/project_timesheet_holidays/models/res_company.py
index bd50f4a0864..292df9dae60 100644
--- a/addons/project_timesheet_holidays/models/res_company.py
+++ b/addons/project_timesheet_holidays/models/res_company.py
@@ -23,6 +23,7 @@ class Company(models.Model):
raise ValidationError(_('The Internal Project of a company should be in that company.'))
def init(self):
+ type_ids = [(4, self.env.ref('hr_timesheet.internal_project_default_stage').id)]
for company in self.search([('leave_timesheet_project_id', '=', False)]):
company = company.with_company(company)
project = company.env['project.project'].search([
@@ -35,6 +36,7 @@ class Company(models.Model):
'name': _('Internal'),
'allow_timesheets': True,
'company_id': company.id,
+ 'type_ids': type_ids,
})
company.write({
'leave_timesheet_project_id': project.id,
@@ -43,7 +45,7 @@ class Company(models.Model):
task = company.env['project.task'].create({
'name': _('Time Off'),
'project_id': company.leave_timesheet_project_id.id,
- 'active': False,
+ 'active': True,
'company_id': company.id,
})
company.write({
@@ -63,7 +65,7 @@ class Company(models.Model):
task = company.env['project.task'].sudo().create({
'name': _('Time Off'),
'project_id': company.leave_timesheet_project_id.id,
- 'active': False,
+ 'active': True,
'company_id': company.id,
})
company.write({