Time Off
diff --git a/addons/hr_timesheet/wizard/__init__.py b/addons/hr_timesheet/wizard/__init__.py
new file mode 100644
index 00000000000..9030e15e6e0
--- /dev/null
+++ b/addons/hr_timesheet/wizard/__init__.py
@@ -0,0 +1,4 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from . import project_task_create_timesheet
diff --git a/addons/hr_timesheet/wizard/project_task_create_timesheet.py b/addons/hr_timesheet/wizard/project_task_create_timesheet.py
new file mode 100644
index 00000000000..dd461c29ea9
--- /dev/null
+++ b/addons/hr_timesheet/wizard/project_task_create_timesheet.py
@@ -0,0 +1,47 @@
+# -*- coding: utf-8 -*-
+# Part of Odoo. See LICENSE file for full copyright and licensing details.
+
+from odoo import api, fields, models, _
+from datetime import datetime
+from odoo.exceptions import UserError
+
+
+class ProjectTaskCreateTimesheet(models.TransientModel):
+ _name = 'project.task.create.timesheet'
+ _description = "Create Timesheet from task"
+
+ _sql_constraints = [('time_positive', 'CHECK(time_spent > 0)', 'The timesheet\'s time must be positive' )]
+
+ @api.model
+ def default_get(self, fields):
+ result = super(ProjectTaskCreateTimesheet, self).default_get(fields)
+ active_model = self._context.get('active_model')
+ if active_model != 'project.task':
+ raise UserError(_("You can only apply this action from a task."))
+
+ active_id = self._context.get('active_id')
+ if 'task_id' in fields and active_id:
+ task_id = self.env['project.task'].browse(active_id)
+ result['task_id'] = active_id
+ result['description'] = task_id.name
+ return result
+
+ time_spent = fields.Float('Time', precision_digits=2)
+ description = fields.Char('Description')
+ task_id = fields.Many2one('project.task', "Task", help="Task for which we are creating a sales order", required=True)
+
+ def save_timesheet(self):
+ values = {
+ 'task_id': self.task_id.id,
+ 'project_id': self.task_id.project_id.id,
+ 'date': datetime.now(),
+ 'name': self.description,
+ 'user_id': self.env.uid,
+ 'unit_amount': self.time_spent,
+ }
+ self.task_id.write({
+ 'timer_start': False,
+ 'timer_pause': False,
+ 'timesheet_timer_last_stop': fields.datetime.now(),
+ })
+ return self.env['account.analytic.line'].create(values)
diff --git a/addons/hr_timesheet/wizard/project_task_create_timesheet_views.xml b/addons/hr_timesheet/wizard/project_task_create_timesheet_views.xml
new file mode 100644
index 00000000000..2b5deaf854a
--- /dev/null
+++ b/addons/hr_timesheet/wizard/project_task_create_timesheet_views.xml
@@ -0,0 +1,28 @@
+
+
+
+
+ project.task.create.timesheet.wizard.form
+ project.task.create.timesheet
+
+
+
+
+
+