2026-04-30 13:28:57 +02:00
|
|
|
from django.utils import timezone
|
2026-05-07 11:22:14 +00:00
|
|
|
from gestion_employe.models import Contrat, Employe
|
2026-04-30 13:28:57 +02:00
|
|
|
from gestion_conge.models import Conge
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
QUOTA_CONGE_ANNUEL = 30
|
|
|
|
|
NOMBRE_PAGINATION = 8
|
|
|
|
|
DEBUT_RAPPEL = 60
|
|
|
|
|
DUREE_FIN_CONTRAT = 90
|
2026-05-07 11:22:14 +00:00
|
|
|
EMAIL_ASSISTANTE_DE_DIRECTION = list(Employe.objects.filter(fonction="assistant_direction").values_list('user__email', flat=True))
|
2026-04-30 13:28:57 +02:00
|
|
|
|
|
|
|
|
def solde_conge(employe):
|
|
|
|
|
"""Fonction de calcul du solde de congé restant l'employé"""
|
|
|
|
|
contrat = Contrat.objects.filter(employe=employe, statut='actif').order_by('-date_debut').first()
|
|
|
|
|
|
|
|
|
|
if contrat is None or not contrat.date_debut:
|
|
|
|
|
return {
|
|
|
|
|
"success": False,
|
|
|
|
|
"message": "Votre contrat de travail n'a pas été correctement renseigner. Veuillez contacter les ressources humaines."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
conges = Conge.objects.filter(employe=employe, validation_direction=True, date_fin__year = timezone.now().date().year)
|
|
|
|
|
jours_conges_valider = sum([conge.nombre_jours for conge in conges])
|
|
|
|
|
|
|
|
|
|
if jours_conges_valider >= QUOTA_CONGE_ANNUEL:
|
|
|
|
|
return {
|
|
|
|
|
"success": False,
|
|
|
|
|
"message": "Vous avez atteint le nombre maximal de jours de congés. Veuillez contacter l'administration."
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return {
|
|
|
|
|
"success": True,
|
|
|
|
|
"quota_annuel": QUOTA_CONGE_ANNUEL - jours_conges_valider,
|
|
|
|
|
"nombre_jours_valide": jours_conges_valider
|
2026-05-07 11:22:14 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
def envoyer_mail(sujet, message, destinataires):
|
|
|
|
|
"""Fonction d'envoi de mail"""
|
|
|
|
|
from django.core.mail import send_mail
|
|
|
|
|
from django.conf import settings
|
|
|
|
|
|
|
|
|
|
send_mail(
|
|
|
|
|
sujet,
|
|
|
|
|
message,
|
|
|
|
|
settings.EMAIL_HOST_USER,
|
|
|
|
|
destinataires,
|
|
|
|
|
fail_silently=False,
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
def destinataire_mail_demande_conges(employe):
|
|
|
|
|
"""Fonction de récupération des destinataires pour les mails de demande de congés"""
|
|
|
|
|
if employe.chef:
|
|
|
|
|
return EMAIL_ASSISTANTE_DE_DIRECTION
|
|
|
|
|
else:
|
|
|
|
|
if employe.departement:
|
|
|
|
|
chefs_departement = Employe.objects.filter(departement=employe.departement, chef=True)
|
|
|
|
|
return list(chefs_departement.values_list('user__email', flat=True))
|