diff options
| author | Alexey Pelykh <alexey@brainbeanapps.com> | 2019-02-06 09:44:43 +0000 |
|---|---|---|
| committer | jem-odoo <jem@openerp.com> | 2019-10-07 15:32:10 +0000 |
| commit | 089755c1fa34a6d861e55130bbda3cfc2a3121fc (patch) | |
| tree | 8915ef4fa28155021783f152f6be0b2d2cfc0021 /addons/project_timesheet_holidays/models | |
| parent | 9a787b985e471febaaf0997fe1af999e4851d678 (diff) | |
[REF] project_timesheet_holidays: provide hooks
This commit provides some hook to extend values when a leaves
generates timesheets. It also use dates directly, rather than
converting them to string.
Closes #30867
Closes #30872
Diffstat (limited to 'addons/project_timesheet_holidays/models')
| -rw-r--r-- | addons/project_timesheet_holidays/models/hr_holidays.py | 47 |
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() |
