From 044654d7b7c05ddbda174bda2ceb1573e14149e2 Mon Sep 17 00:00:00 2001 From: Andrea Date: Wed, 20 Mar 2019 12:31:15 +0100 Subject: [PATCH] [FIX] Fix employee_id related stuff --- .../models/account_analytic_line.py | 4 +-- hr_timesheet_sheet/models/hr_employee.py | 5 ++-- .../models/hr_timesheet_sheet.py | 27 ++++++++++++------- .../tests/test_hr_timesheet_sheet.py | 2 +- .../views/hr_timesheet_sheet_views.xml | 4 +-- 5 files changed, 25 insertions(+), 17 deletions(-) diff --git a/hr_timesheet_sheet/models/account_analytic_line.py b/hr_timesheet_sheet/models/account_analytic_line.py index 979546df7a..7d52f459f5 100644 --- a/hr_timesheet_sheet/models/account_analytic_line.py +++ b/hr_timesheet_sheet/models/account_analytic_line.py @@ -24,7 +24,7 @@ def _compute_sheet(self): ('date_start', '<=', timesheet.date), ('employee_id', '=', timesheet.employee_id.id), ('company_id', 'in', [timesheet.company_id.id, False]), - ('state', '=', 'draft'), + ('state', 'in', ['new', 'draft']), ], limit=1) if timesheet.sheet_id != sheet: timesheet.sheet_id = sheet @@ -81,7 +81,7 @@ def _check_state(self): if self.env.context.get('skip_check_state'): return for line in self: - if line.sheet_id and line.sheet_id.state != 'draft': + if line.sheet_id and line.sheet_id.state not in ['new', 'draft']: raise UserError( _('You cannot modify an entry in a confirmed ' 'timesheet sheet.')) diff --git a/hr_timesheet_sheet/models/hr_employee.py b/hr_timesheet_sheet/models/hr_employee.py index fccc10282b..5ba77c32dc 100644 --- a/hr_timesheet_sheet/models/hr_employee.py +++ b/hr_timesheet_sheet/models/hr_employee.py @@ -16,9 +16,10 @@ class HrEmployee(models.Model): @api.multi def _compute_timesheet_count(self): + Sheet = self.env['hr_timesheet.sheet'] for employee in self: - employee.timesheet_count = employee.env['hr_timesheet.sheet'].\ - search_count([('employee_id', '=', employee.id)]) + employee.timesheet_count = Sheet.search_count([ + ('employee_id', '=', employee.id)]) @api.constrains('company_id') def _check_company_id(self): diff --git a/hr_timesheet_sheet/models/hr_timesheet_sheet.py b/hr_timesheet_sheet/models/hr_timesheet_sheet.py index 5d4b6168b1..3cdcc5d60b 100644 --- a/hr_timesheet_sheet/models/hr_timesheet_sheet.py +++ b/hr_timesheet_sheet/models/hr_timesheet_sheet.py @@ -57,9 +57,12 @@ def _default_date_end(self): return today def _default_employee(self): - emp_ids = self.env['hr.employee'].search( - [('user_id', '=', self.env.uid)]) - return emp_ids and emp_ids[0] or False + company = self.env['res.company']._company_default_get() + employee = self.env['hr.employee'].search([ + ('user_id', '=', self.env.uid), + ('company_id', '=', company.id), + ], limit=1) + return employee name = fields.Char( string="Note", @@ -70,6 +73,8 @@ def _default_employee(self): string='Employee', default=lambda self: self._default_employee(), required=True, + readonly=True, + states={'new': [('readonly', False)]}, ) user_id = fields.Many2one( comodel_name='res.users', @@ -84,7 +89,7 @@ def _default_employee(self): required=True, index=True, readonly=True, - states={'draft': [('readonly', False)]}, + states={'new': [('readonly', False)]}, ) date_end = fields.Date( string='Date To', @@ -92,7 +97,7 @@ def _default_employee(self): required=True, index=True, readonly=True, - states={'draft': [('readonly', False)]}, + states={'new': [('readonly', False)]}, ) timesheet_ids = fields.One2many( comodel_name='account.analytic.line', @@ -100,6 +105,7 @@ def _default_employee(self): string='Timesheets', readonly=True, states={ + 'new': [('readonly', False)], 'draft': [('readonly', False)], } ) @@ -109,14 +115,16 @@ def _default_employee(self): string='Timesheet Sheet Lines', readonly=True, states={ + 'new': [('readonly', False)], 'draft': [('readonly', False)], } ) state = fields.Selection([ + ('new', 'New'), ('draft', 'Open'), ('confirm', 'Waiting Approval'), ('done', 'Approved')], - default='draft', track_visibility='onchange', + default='new', track_visibility='onchange', string='Status', required=True, readonly=True, index=True, ) company_id = fields.Many2one( @@ -235,7 +243,6 @@ def _check_company_id(self): def _onchange_employee_id(self): if self.employee_id: self.department_id = self.employee_id.department_id - self.user_id = self.employee_id.user_id def _get_timesheet_sheet_lines_domain(self): self.ensure_one() @@ -291,7 +298,7 @@ def _create_data_matrix_lines(self, data_matrix): self.clean_timesheets(data_matrix[item]['timesheets']) return lines - @api.onchange('date_start', 'date_end') + @api.onchange('date_start', 'date_end', 'employee_id') def _onchange_dates(self): domain = self._get_timesheet_sheet_lines_domain() timesheets = self.env['account.analytic.line'].search(domain) @@ -415,7 +422,7 @@ def action_timesheet_refuse(self): @api.multi def button_add_line(self): for rec in self: - if rec.state == 'draft': + if rec.state in ['new', 'draft']: rec.add_line() rec.add_line_task_id = False rec.add_line_project_id = False @@ -496,7 +503,7 @@ def add_line(self): def link_timesheets_to_sheet(self, timesheets): self.ensure_one() - if self.id and self.state == 'draft': + if self.id and self.state in ['new', 'draft']: for aal in timesheets.filtered(lambda a: not a.sheet_id): aal.write({'sheet_id': self.id}) diff --git a/hr_timesheet_sheet/tests/test_hr_timesheet_sheet.py b/hr_timesheet_sheet/tests/test_hr_timesheet_sheet.py index cf848fb0b8..2a5128e776 100644 --- a/hr_timesheet_sheet/tests/test_hr_timesheet_sheet.py +++ b/hr_timesheet_sheet/tests/test_hr_timesheet_sheet.py @@ -96,11 +96,11 @@ def setUp(self): def test_1(self): sheet = self.sheet_model.sudo(self.user).create({ - 'employee_id': self.employee.id, 'company_id': self.user.company_id.id, }) self.assertEqual(len(sheet.timesheet_ids), 0) self.assertEqual(len(sheet.line_ids), 0) + self.assertTrue(sheet.employee_id) sheet.add_line_project_id = self.project_1 sheet.onchange_add_project_id() diff --git a/hr_timesheet_sheet/views/hr_timesheet_sheet_views.xml b/hr_timesheet_sheet/views/hr_timesheet_sheet_views.xml index 8c81beb4be..e4efa41c26 100644 --- a/hr_timesheet_sheet/views/hr_timesheet_sheet_views.xml +++ b/hr_timesheet_sheet/views/hr_timesheet_sheet_views.xml @@ -51,7 +51,7 @@ - - +