Ответ 1
Предполагая, что я правильно понял вашу проблему, я быстро взломал решение. Во-первых, вы должны обеспечить, чтобы вы создавали только одну контурную запись в день, если вы проверяете и выходите несколько раз. Определите следующую функцию, которая будет вычислять сверхурочную работу за данный день.
(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)))
Затем используйте это в формуле таблицы часов в файле whatnot
.
#+BEGIN: clocktable :maxlevel 1 :emphasize nil :scope file :formula "$3='(compute-overtime $2)::@2$3=string(\"Overtime\")"
#+END: clocktable
Нажмите C-c C-c, когда вы находитесь на таблице часов, чтобы восстановить его.
Вы можете получить общую сверхурочную работу, суммируя обсётки с использованием другой формулы. Но я не справился с этим.