Skip to content

Instantly share code, notes, and snippets.

@sixtyfive
Created September 17, 2011 08:26
Show Gist options
  • Save sixtyfive/1223757 to your computer and use it in GitHub Desktop.
Save sixtyfive/1223757 to your computer and use it in GitHub Desktop.
funktion sollstunden_pro_tag {
mitarbeiter.sollstunden_pro_woche / 5
}
funktion berechne_dauer(tätigkeit, datum_oder_beginn = nüscht, ende = nüscht) {
if tätigkeit.dauer {
tätigkeit.dauer;
} else {
if ende {
tätigkeit.dauer_für_zeitraum(datum_oder_beginn, ende);
} else {
tätigkeit.dauer_für_tag(datum_oder_beginn);
}
}
}
funktion berechne_überstunden(gearbeitete_stunden, beginn = nüscht, ende = nüscht) {
if beginn && ende {
aktuelles_datum = beginn;
sollstunden = 0;
do {
if !ist_wochenende_oder_ferientag(aktuelles_datum) {
sollstunden += sollstunden_pro_tag
}
aktuelles_datum += 1 tag;
} while aktuelles_datum <= ende;
} else {
sollstunden = sollstunden_pro_tag;
}
sollstunden - gearbeitete_stunden;
}
funktion zeige_jahr_an(datum) {
summe_jahr = 0;
tätigkeiten = finde_tätigkeiten_von(datum.jahresbeginn, datum.jahresende)
for tätigkeit in tätigkeiten {
summe_jahr += berechne_dauer(tätigkeit, datum.jahresbeginn, datum.jahresende)
}
überstunden = berechne_überstunden(summe_jahr, datum.jahresbeginn, datum.jahresende);
print "#{jahr(datum)}: #{summe_jahr} Std. gearbeitet (+/-#{überstunden} Std.)"
}
funktion zeige_monat_an(datum) {
summe_monat = 0;
tätigkeiten = finde_tätigkeiten_von(datum.monatsbeginn, datum.monatsende)
for tätigkeit in tätigkeiten {
summe_monat += berechne_dauer(tätigkeit, datum.monatsbeginn, datum.monatsende)
}
überstunden = berechne_überstunden(summe_monat, datum.monatsbeginn, datum.monatsende);
print "#{monat(datum)}: #{summe_monat} Std. gearbeitet (+/-#{überstunden} Std.)"
}
funktion zeige_woche_an(datum) {
summe_woche = 0;
tätigkeiten = finde_tätigkeiten_von(datum.wochenbeginn, datum.wochenende)
for tätigkeit in tätigkeiten {
summe_woche += berechne_dauer(tätigkeit, datum.wochenbeginn, datum.wochenende)
}
überstunden = berechne_überstunden(summe_woche, datum.wochenbeginn, datum.wochenende);
print "#{kalenderwoche(datum)}: #{summe_woche} Std. gearbeitet (+/-#{überstunden} Std.)"
}
funktion zeige_tag_an(datum, tätigkeiten) {
summe_tag = 0;
for tätigkeit in tätigkeiten {
summe_tag += berechne_dauer(tätigkeit, datum)
}
überstunden = berechne_überstunden(summe_tag);
print "#{wochentag(datum)}, #{datum(datum)}: #{summe_tag} Std. gearbeitet (+/-#{überstunden} Std.)"
}
funktion zeige_tätigkeit_an(tätigkeit) {
print "#{berechne_dauer(tätigkeit, datum)} #{tätigkeit.art_der_tätigkeit} (#{tätigkeit.beschreibung})"
}
read gewünschtes_startdatum;
read gewünschtes_enddatum;
aktuelles_datum = gewünschtes_enddatum;
do {
if aktuelles_datum == gewünschtes_enddatum
|| aktuelles_datum == letzter_tag_im_jahr(aktuelles_datum) {
zeige_jahr_an(aktuelles_datum);
}
if aktuelles_datum == gewünschtes_enddatum
|| aktuelles_datum == letzter_tag_im_monat(aktuelles_datum) {
zeige_monat_an(aktuelles_datum);
}
if aktuelles_datum == gewünschtes_enddatum
|| aktuelles_datum == letzter_tag_in_der_woche(aktuelles_datum) {
zeige_woche_an(aktuelles_datum):
}
tätigkeiten = finde_tätigkeiten_von(aktuelles_datum.tagesbeginn, aktuelles_datum.tagesende)
zeige_tag_an(aktuelles_datum, tätigkeiten)
for tätigkeit in tätigkeiten {
zeige_tätigkeit_an(tätigkeit)
}
aktuelles_datum -= 1 tag;
} while aktuelles_datum >= gewünschtes_enddatum;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment