Validation de jours de congés via plusieurs tables
Salut tout le monde !
Je souhaiterai avoir vos avis et/ou idées svp concernant un dossier sur lequel je travaille, et plus particulièrement une étape sur laquelle je bloque depuis... lundi déjà !! Désolé, je ne sais pas trop comment vous le présenter, alors je vais essayer de le résumer de façon synthétique (essayer je dis bien :oops:)
Contexte :
- Je dois gérer un planning d'absences,
- Chaque type d'absence peut générer un calcul en jour entier ou en demi-journée,
- Chaque absence est rattachée à un salarié,
- Un salarié peut travailler ou non le samedi, le dimanche, et avoir pour chaque jour des horaires spécifiques le matin et l'après-midi,
- Il y aura également une gestion des jours fériés et d'éventuelles demi-journées non travaillées.
Au final j'ai 5 tables :
- Absences : chaque absence a un début, une fin, un type
- Types d'absence : où on indique si le calcul est en demi-journée ou en journée complète
- Salariés : où sont notamment stocké la valeur du travail du samedi et/ou du dimanche,
- Horaires : où sont stockés les horaires de l'employé (jour/matinDébut/matinFin/apresMidiDebut/apresMidiFin)
- Non travaillés : où on indique les demi-journées non travaillées (jour/heureDebut/heureFin)
Là où c'est complexe, c'est le cas typique que j'aurai forcément :
- Un salarié est absent du 04/05 au 08/05,
- Il ne travaille pas les après-midi du 06 et du 08/05,
- Son absence court à compter du lundi 4/05 à 14h (donc travail le matin).
Il me faut parcourir dans une boucle chaque jour qui compose le congés, et chercher dans les tables "Horaires" et "Non travaillés" les infos dont j'ai besoin pour pouvoir calculer le nombre de jours ou de demi-journées d'absence réelles.
Et le tout en SQL (procédure stockée) car j'aurai besoin de faire des statistiques par la suite...
Auriez-vous des conseils pour avoir de bonnes performances ? Je pensais stocker les enregistrements de "Horaires" et "Non travaillés" du salarié en question dans une table en début de procédure. Judicieux ou pas ?
Merci pour vos retours, avis et/ou suggestions.