• [^] # Re: Je ne sais pas si c'est la bonne méthode, mais....

    Posté par . En réponse au message champs "durée" et postgres. Évalué à 2.

    En fait, je parlais d'une centaine de personnes gérées par cette appli, pour arrondir, mais dans ma table servant à renseigner les heures de pointage, j'ai décomposé les informations de cette façon :
    - un champ id_pers (int)
    - un champ date de pointage (date)
    - un champ est_matin (booleen)
    - l'heure d'arrivée (char(5))
    - l'heure de départ (char(5))
    - Le temps travaillé dans la demi-journée (char(5))
    - Une observation.
    - Un champ qui indique si cette demi-journée est travaillée ou non (booléen).
    Le booléen sert à différencier le matin de l'après-midi.
    La clef primaire se calcule sur les 3 premiers champs.
    Par ailleurs, j'ai un trigger qui intervient après mise à jour et qui permet de fixer la valeur de la demi-journée à ce que doit (je suis fonctionnaire, et de part les conventions passées entre l'état et les syndicats, il y a certaines règles à appliquer, je ne vais pas rentrer dans le détail).
    Une période de pointage s'étale entre le 01/09 et le 31/08 (année scolaire). Sur cette période, les agents titulaires ont automatiquement une période de travail équivalente, sur laquelle ils ne peuvent intervenir que pour en changer la quotité de travail (personnes à temps partiels). La complexité intervient pour les gens qui sont à temps partiel que par périodes, par ex : 6 mois à 80% et 6 mois à temps plein. Bref. Pour les agents non titulaires, il faut qu'ils entrent les dates de début et de fin de leur contrat, dans une table à part, ainsi que la quotité de travail associée. Chaque contractuel est soumis au régimé des 35H par semaines tantis que les agents titulaires ont 1593 Heures à réaliser sur le total de la période.
    Je n'ai visiblement pas les mêmes soucis que toi, car :
    - Nous ne pointons que sur les heures d'ouverture "standard" régie plus ou moins par des contraintes matérielles : les portes et grilles n'ouvrent qu'à 07H le matin, et nous sommes obligés de partir avant 19H30 à cause des alarmes.
    - De ce fait, et comme nous sommes sur le même site, je n'ai aucunement à gérer les heures d'hiver ou d'été. Chacun renseigne son heure de départ ou d'arrivée à la main.
    - Pour le problème des jours fériés, j'ai conçu une table jour_fériés qui renferme les 11 jours avec leur libellé, car je trouvais ça joli ;-) !
    Cette table est utilisée par un trigger pour calculer la durée attribuée à la journée selon les cas.
    Quoi qu'il en soit, pour me faciliter le travail, lorsqu'un agent se voit attribuer une période de travail, qu'il soit contractuel ou titulaire, les lignes correspondante sont automatiquement ajoutées dans la table de pointage, pour tous les jours concernés, c'est à dire du lundi matin au samedi matin inclus. De cette façon, mon application, développée en php, certes, n'a à gérer que des mises à jour.
    Enfin, j'ai remarqué par expérience que les gens ne pointent pas quand ils devraient, mais quand ils n'ont rien d'autre à faire. Par exemple, Mme Michu, arrivée à 08H03, et partant manger vers 12H07, se rendra compte dans l'après-midi, juste avant de partir, qu'elle a failli oublier cette @!#%! de pointeuse, et elle renseignera allégrement qu'elle est arrivée à 08H00 et est partie manger à 12H10. (ce qui lui fait un bonni de 6 min, bref).
    Enfin, ce n'est pas le propos. J'espère que ce petit débroussaillage te sera utile.
    J'ai mis pas mal de temps pour en arriver à ce système, mais il fonctionne pour nos besoins, à quelques bugs près que je corrigerais fin août.
    Si tu as besoins de plus d'infos, tu sais où me trouver !
    Sur ce, bon courage !