38 votes

Suivi de l'horaire flexible avec Emacs (et org-mode)

Au travail, nous utilisons des horaires flexibles (flex hours, flexi hours...), ce qui est bien mais peut être difficile à suivre. J'utilise actuellement org-mode pour suivre mes heures ( org-clock-(out|in) ), mais j'aimerais l'étendre pour calculer automatiquement si j'ai travaillé plus de 8 heures (le temps excédentaire devrait être ajouté à mon "compte" d'horaire flexible) ou moins (en fonction de la durée de ma pause déjeuner, etc.), le solde de mon "compte" d'horaire flexible, etc.

Quelqu'un d'autre utilise-t-il Emacs pour cela ?

J'utilise actuellement une configuration très basique pour suivre mon temps :

(defun check-in ()
  (interactive)
  (let (pbuf (current-buffer))
    (find-file (convert-standard-filename "whatnot"))
    (goto-char (point-max))
    (insert "\n")
    (org-insert-heading)
    (org-insert-time-stamp (current-time))
    (org-clock-in)
    (save-buffer)
    (switch-to-buffer pbuf)))

(defun check-out ()
  (interactive)
  (let (pbuf (current-buffer))
    (find-file (convert-standard-filename "whatnot"))
    (goto-char (point-max))
    (org-clock-out)
    (save-buffer)
    (switch-to-buffer pbuf)))

4voto

Praveen Kumar Points 788

En supposant que j'ai bien compris votre problème, j'ai bricolé une solution rapide. Tout d'abord, vous devez vous assurer que vous ne créez qu'une seule entrée de contour par jour, si vous entrez et sortez plusieurs fois. Définissez la fonction suivante qui calculera les heures supplémentaires pour un jour donné.

(defun compute-overtime (duration-string)
  "Computes overtime duration string for the given time DURATION-STRING."
  (let (minutes-in-a-workday
        work-minutes
        overtime-minutes)
    (defconst minutes-in-a-workday 480)
    (setq work-minutes (org-duration-string-to-minutes duration-string)
          overtime-minutes (- work-minutes minutes-in-a-workday))
    (if (< overtime-minutes 0) (setq overtime-minutes 0))
    (org-minutes-to-hh:mm-string overtime-minutes)))

Ensuite, utilisez ceci dans une formule de table d'horloge dans le fichier whatnot .

#+BEGIN: clocktable :maxlevel 1 :emphasize nil :scope file :formula "$3='(compute-overtime $2)::@2$3=string(\"Overtime\")"    
#+END: clocktable

Hit C-c C-c quand vous êtes sur la table d'horloge pour le régénérer.

Vous pouvez obtenir le total des prolongations en additionnant les prolongations à l'aide d'une autre formule. Mais, je n'ai pas encore trouvé la formule.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X