summaryrefslogtreecommitdiff
path: root/addons
diff options
context:
space:
mode:
Diffstat (limited to 'addons')
-rw-r--r--addons/project_timesheet_holidays/models/hr_holidays.py47
1 files changed, 27 insertions, 20 deletions
diff --git a/addons/project_timesheet_holidays/models/hr_holidays.py b/addons/project_timesheet_holidays/models/hr_holidays.py
index e8fa28b1c90..03c061ebbef 100644
--- a/addons/project_timesheet_holidays/models/hr_holidays.py
+++ b/addons/project_timesheet_holidays/models/hr_holidays.py
@@ -65,29 +65,36 @@ class Holidays(models.Model):
lambda request: request.holiday_type == 'employee' and
request.holiday_status_id.timesheet_project_id and
request.holiday_status_id.timesheet_task_id):
- holiday_project = holiday.holiday_status_id.timesheet_project_id
- holiday_task = holiday.holiday_status_id.timesheet_task_id
-
- work_hours_data = holiday.employee_id.list_work_time_per_day(
- fields.Datetime.from_string(holiday.date_from),
- fields.Datetime.from_string(holiday.date_to),
- )
- for index, (day_date, work_hours_count) in enumerate(work_hours_data):
- self.env['account.analytic.line'].sudo().create({
- 'name': "%s (%s/%s)" % (holiday.holiday_status_id.name or '', index + 1, len(work_hours_data)),
- 'project_id': holiday_project.id,
- 'task_id': holiday_task.id,
- 'account_id': holiday_project.analytic_account_id.id,
- 'unit_amount': work_hours_count,
- 'user_id': holiday.employee_id.user_id.id,
- 'date': fields.Date.to_string(day_date),
- 'holiday_id': holiday.id,
- 'employee_id': holiday.employee_id.id,
- 'company_id': holiday_task.company_id.id or holiday_project.company_id.id,
- })
+ holiday._timesheet_create_lines()
return super(Holidays, self)._validate_leave_request()
+ def _timesheet_create_lines(self):
+ self.ensure_one()
+ work_hours_data = self.employee_id.list_work_time_per_day(
+ self.date_from,
+ self.date_to,
+ )
+ timesheets = self.env['account.analytic.line']
+ for index, (day_date, work_hours_count) in enumerate(work_hours_data):
+ timesheets |= self.env['account.analytic.line'].sudo().create(self._timesheet_prepare_line_values(index, work_hours_data, day_date, work_hours_count))
+ return timesheets
+
+ def _timesheet_prepare_line_values(self, index, work_hours_data, day_date, work_hours_count):
+ self.ensure_one()
+ return {
+ 'name': "%s (%s/%s)" % (self.holiday_status_id.name or '', index + 1, len(work_hours_data)),
+ 'project_id': self.holiday_status_id.timesheet_project_id.id,
+ 'task_id': self.holiday_status_id.timesheet_task_id.id,
+ 'account_id': self.holiday_status_id.timesheet_project_id.analytic_account_id.id,
+ 'unit_amount': work_hours_count,
+ 'user_id': self.employee_id.user_id.id,
+ 'date': day_date,
+ 'holiday_id': self.id,
+ 'employee_id': self.employee_id.id,
+ 'company_id': self.holiday_status_id.timesheet_task_id.company_id.id or self.holiday_status_id.timesheet_project_id.company_id.id,
+ }
+
def action_refuse(self):
""" Remove the timesheets linked to the refused holidays """
result = super(Holidays, self).action_refuse()