diff --git a/addons/hr_contract/models/hr_contract.py b/addons/hr_contract/models/hr_contract.py index 345fb5fe016..5f5509ccfc5 100644 --- a/addons/hr_contract/models/hr_contract.py +++ b/addons/hr_contract/models/hr_contract.py @@ -80,7 +80,7 @@ class Contract(models.Model): @api.constrains('employee_id', 'state', 'kanban_state', 'date_start', 'date_end') def _check_current_contract(self): """ Two contracts in state [incoming | open | close] cannot overlap """ - for contract in self.filtered(lambda c: c.state not in ['draft', 'cancel'] or c.state == 'draft' and c.kanban_state == 'done'): + for contract in self.filtered(lambda c: (c.state not in ['draft', 'cancel'] or c.state == 'draft' and c.kanban_state == 'done') and c.employee_id): domain = [ ('id', '!=', contract.id), ('employee_id', '=', contract.employee_id.id), @@ -190,7 +190,7 @@ class Contract(models.Model): contracts._assign_open_contract() open_contracts = contracts.filtered(lambda c: c.state == 'open' or c.state == 'draft' and c.kanban_state == 'done') # sync contract calendar -> calendar employee - for contract in open_contracts.filtered(lambda c: c.resource_calendar_id): + for contract in open_contracts.filtered(lambda c: c.employee_id and c.resource_calendar_id): contract.employee_id.resource_calendar_id = contract.resource_calendar_id return contracts diff --git a/addons/hr_holidays/models/hr_leave.py b/addons/hr_holidays/models/hr_leave.py index 637aababa62..fd8e337621d 100644 --- a/addons/hr_holidays/models/hr_leave.py +++ b/addons/hr_holidays/models/hr_leave.py @@ -528,7 +528,7 @@ class HolidaysRequest(models.Model): @api.constrains('date_from', 'date_to', 'state', 'employee_id') def _check_date(self): - for holiday in self: + for holiday in self.filtered('employee_id'): domain = [ ('date_from', '<', holiday.date_to), ('date_to', '>', holiday.date_from),