So, at work we use flexitime (flex hours, flexi hours…) which is nice but can be hard to keep track of. I’m currently using org-mode to keep track of my hours (org-clock-(out|in)) but I’d like to extend that to automagically calculate if I’ve worked more than 8 hours (surplus time should be added to my flexitime ‘account’) or less (depending on how long lunch break I took etc), the balance on my flexitime ‘account’ and such.
Does anyone else use Emacs for this?
I’m currently using a very basic setup to track my time:
(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)))
Assuming that I understood your problem correctly, I hacked together a quick solution. First, you should ensure that you create only one outline entry per day, if you are checking in and out multiple times. Define the following function that’ll compute the overtime for a given day.
Then, use this in a clock table formula in the file
whatnot.Hit C-c C-c when you are on the clock table to regenerate it.
You can get the total overtime by summing the overtimes using another formula. But, I haven’t worked that out.