[WIP]hr_employee_stats_sheet:add domaine on recovery type
This commit is contained in:
@@ -69,7 +69,7 @@ msgstr "Indiquer le coefficient multiplicateur à appliquer sur les heures suppl
|
|||||||
msgid "Choose the recovery type."
|
msgid "Choose the recovery type."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
"Sélectionner le type de congé utilisé pour générer des allocations de "
|
"Sélectionner le type de congé utilisé pour générer des allocations de "
|
||||||
"récupération"
|
"récupération. Le type de congé doit accepter les allocations négatives et être pris à l'heure."
|
||||||
|
|
||||||
#. module: hr_employee_stats_sheet
|
#. module: hr_employee_stats_sheet
|
||||||
#: model_terms:ir.ui.view,arch_db:hr_employee_stats_sheet.res_config_settings_view_form
|
#: model_terms:ir.ui.view,arch_db:hr_employee_stats_sheet.res_config_settings_view_form
|
||||||
|
@@ -190,7 +190,10 @@ class HrTimesheetSheet(models.Model):
|
|||||||
raise UserError(
|
raise UserError(
|
||||||
_("Employe not defined for the timesheet sheet or recovery type not defined in settings")
|
_("Employe not defined for the timesheet sheet or recovery type not defined in settings")
|
||||||
)
|
)
|
||||||
|
if recovery_type_id.request_unit != 'hour' or not recovery_type_id.allows_negative:
|
||||||
|
raise UserError(
|
||||||
|
_("The recovery type must be set to 'Hours' and allow negative leaves in the settings")
|
||||||
|
)
|
||||||
# check if allocation already exists for this timesheet sheet, if yes, refuse it
|
# check if allocation already exists for this timesheet sheet, if yes, refuse it
|
||||||
allocations = (
|
allocations = (
|
||||||
self.env["hr.leave.allocation"]
|
self.env["hr.leave.allocation"]
|
||||||
@@ -217,7 +220,6 @@ class HrTimesheetSheet(models.Model):
|
|||||||
data_days = recovery_type_id.get_employees_days([employee_id.id])[employee_id.id]
|
data_days = recovery_type_id.get_employees_days([employee_id.id])[employee_id.id]
|
||||||
total_recovery_type_leaves = data_days.get(recovery_type_id.id,{})
|
total_recovery_type_leaves = data_days.get(recovery_type_id.id,{})
|
||||||
total_virtual_remaining_recovery_type_leaves = total_recovery_type_leaves.get('virtual_remaining_leaves', 0)
|
total_virtual_remaining_recovery_type_leaves = total_recovery_type_leaves.get('virtual_remaining_leaves', 0)
|
||||||
# TODO vérifier si ça marche avec un recovery type dont l'unité de mesure est le jour
|
|
||||||
# add the recovery hours to the total remaining leaves recovery type, and check if the limit of recovery hours is exceeded
|
# add the recovery hours to the total remaining leaves recovery type, and check if the limit of recovery hours is exceeded
|
||||||
exceeded_hours = total_virtual_remaining_recovery_type_leaves + recovery_hours - max_allowed_recovery_hours
|
exceeded_hours = total_virtual_remaining_recovery_type_leaves + recovery_hours - max_allowed_recovery_hours
|
||||||
# if limit recovery hours is exceeded, don't create a new allocation
|
# if limit recovery hours is exceeded, don't create a new allocation
|
||||||
|
@@ -9,6 +9,7 @@ class ResConfigSettings(models.TransientModel):
|
|||||||
related="company_id.recovery_type_id",
|
related="company_id.recovery_type_id",
|
||||||
string="Leave recovery type",
|
string="Leave recovery type",
|
||||||
readonly=False,
|
readonly=False,
|
||||||
|
domain="[('request_unit', '=', 'hour'), ('allows_negative', '=', True)]",
|
||||||
)
|
)
|
||||||
|
|
||||||
coef = fields.Float(
|
coef = fields.Float(
|
||||||
|
@@ -14,6 +14,7 @@ class TestHrEmployeeStatsRecovery(TransactionCase):
|
|||||||
self.recovery_type = self.env['hr.leave.type'].create({
|
self.recovery_type = self.env['hr.leave.type'].create({
|
||||||
'name': 'Recovery',
|
'name': 'Recovery',
|
||||||
'request_unit': 'hour',
|
'request_unit': 'hour',
|
||||||
|
'allows_negative': True,
|
||||||
})
|
})
|
||||||
self.employee = self.env['hr.employee'].create({
|
self.employee = self.env['hr.employee'].create({
|
||||||
'name': 'Camille',
|
'name': 'Camille',
|
||||||
@@ -63,6 +64,15 @@ class TestHrEmployeeStatsRecovery(TransactionCase):
|
|||||||
stat._compute_hours()
|
stat._compute_hours()
|
||||||
yield stat
|
yield stat
|
||||||
|
|
||||||
|
def test_invalide_recovery_type(self):
|
||||||
|
start_date = date.today() - timedelta(days=date.today().weekday() + 7) # lundi de la semaine dernière
|
||||||
|
self.recovery_type.request_unit = 'day'
|
||||||
|
self.recovery_type.allows_negative = False
|
||||||
|
timesheet_sheet = self._create_timesheet_sheet(start_date)
|
||||||
|
self.env.company.recovery_type_id = self.recovery_type
|
||||||
|
with self.assertRaises(UserError):
|
||||||
|
timesheet_sheet.action_generate_recovery_allocation()
|
||||||
|
|
||||||
def test_no_recovery_hours(self):
|
def test_no_recovery_hours(self):
|
||||||
start_date = date.today() - timedelta(days=date.today().weekday() + 7) # lundi de la semaine dernière
|
start_date = date.today() - timedelta(days=date.today().weekday() + 7) # lundi de la semaine dernière
|
||||||
timesheet_sheet = self._create_timesheet_sheet(start_date)
|
timesheet_sheet = self._create_timesheet_sheet(start_date)
|
||||||
|
Reference in New Issue
Block a user