Arbeitszeiterfassung per BMAS-App – Auswertung und Archivierung

Das Bundesministerium für Arbeit (BMAS) bietet eine kosten­lose App („einfach erfasst“) zur Er­fassung und Über­mittlung von Arbeitszeiten.
Mit der App erfasst der Arbeit­nehmer seine Arbeits­zeiten. Die Daten werden auf seinem Smart­phone gespeichert und monatlich an eine in der App eingetragene Mail­adresse des Arbeitgebers versendet.

 

Was macht der Arbeitgeber mit den Daten, die er per E-Mail erhält?

Auf der Webseite des BMAS steht dazu: „Über gesetzte Sortierregeln im E-Mail-Programm kann der Arbeitgeber eine einfache und schnelle Ablage der E-Mails für seine Beschäftigten organisieren.“

Diese Empfehlung dürfte vielen Arbeitgebern nicht ausreichen. Häufig führen Arbeitgeber Excel-Tabellen, in die die Arbeitsstunden mühsam per Hand eingetragen werden. Dadurch hat man alle Daten in einem Dokument und kann zum Beispiel zusammenrechnen, wieviel Stunden im Jahr zusammen gekommen sind.

Mein bereits vorgestelltes Programm „Stunden- und Tagerechner“ verfügt ab Version 1.7 über eine Importfunktion für die BMAS-App-Mails. Die Daten lassen sich kumulativ erfassten, zum Beispiel für ein ganzes Jahr. Eine Nachbearbeitung ist leicht möglich und auch ein Export nach Excel. Damit bietet sich das Programm als Analyse und Archivierungstool für die mit der BMAS-App „einfach erfasst“ gesammelten Daten an.

Das Programm kann von der Webseite des Heise-Zeitschriftenverlags (c’t) oder von der Microsoft-Projektseite (Codeproject) heruntergeladen werden und kommt ohne Installation aus.

Zeiterfassungssoftware – einfach, intelligent, open-source

Die Erfassung von Arbeitszeiten ist ein Thema, mit dem praktisch jeder in Berührung kommt, sei es um eigene Arbeitszeit zu erfassen oder um zum Beispiel eine Haushaltshilfe zu entlohnen. Weil ich kein einfach zu bedienendes Programm gefunden habe, das meinen Vorstellungen entspricht, habe ich selbst eines geschrieben.

Arbeitsstunden innerhalb einer Woche, Überstunden in einem Monat und andere Zeitspannen lassen sich mit diesem Programm mühelos zusammenrechnen – sogar für mehrere Personen.

Die Software funktioniert wie eine für die Zeiterfassung optimierte Tabellenkalkulation. Sie ist auf maximale Bedienungsfreundlichkeit getrimmt. Zum Beispiel können Daten verkürzt eingegeben oder durch Drücken der Plus- bzw. Minustaste verändert werden.

Die Tabelle kann gespeichert werden. Durch Anlegen einer entsprechenden Verknüpfung ist es auch möglich, das Programm mit gespeicherten Werten zu starten und diese fortzuschreiben. Dazu kann aus dem Programm heraus eine Desktopverknüpfung angelegt werden.

Das Programm kann für die Aufzeichnungspflicht nach dem Mindestlohn-Gesetz (MiLoG) verwendet werden. Das Gesetzt verlangt für geringfügig Beschäftigte (Ausnahme: Minijobber im privaten Bereich), dass Beginn und Ende sowie Dauer der Arbeitszeit erfasst werden.

Sie können die Open-Source-Software von Microsofts Hosting-Website für quelloffene Programme herunterladen: http://timetool.codeplex.com.

Das Programm setzt das Microsoft .NET Framework ≥ 2.0 voraus, das standardmäßig auf jedem Windows-PC vorhanden ist.

Um das Programm auszuprobieren, ist keine Installation erforderlich. Kopieren Sie das Programm einfach in irgendeinen Ordner (zum Beispiel C:\Tools).

Damit Sie neu angelegten Dateien wiederfinden und weiter bearbeiten können, fragt das Programm beim ersten Speichern, ob es eine Desktop-Verknüpfung anlegen soll.

NetRadio – Radiohören am PC

Als Hobbyprogrammierer wünscht man sich, ein Programm zu schreiben, das eine größere Verbreitung findet. NetRadio ist eine Anwendung, die für jeden Windows-Benutzer interessant sein könnte.

netradio1Das Programm spielt Internet-Live­streams von Radiosendern und bietet eine einfache Verwaltung für bis zu 24 Stationen. Etwas Arbeit macht es, die eignen Lieblingssender ein­zu­pflegen. Aber die Mühe lohnt sich! Die bereits eingetragenen Sender sollen nur die Funktionsfähigkeit des Programms demonstrieren. Ersetzen Sie diese durch Ihre Favoriten!

NetRadio ist nicht nur Freeware son­dern auch Open-Source-Software. Das ausführbare Programm findet sich (neben dem Quellcode) auf CodePlex zum Download. Klicken Sie hier, um die Seite zu besuchen und klicken Sie dort auf den »download«-Button.

Das Programm ist eigentlich selbsterklärend. Trotzdem ist es sinnvoll, die »Documentation« zu lesen. Dort finden sich auch Tipps, wie man an die richtigen Streaming-URLs gelangt.

Viel Spaß!

Fortlaufende Rechnungsnummern in Word-Dokumenten

In der Praxis kommt es oft vor, dass IGeL-Rechnungen mit identischen Beträgen erstellt werden müssen. Da bietet es sich an, eine Word-Vorlage zu erstellen, die nur noch Name und Anschrift automatisiert übernimmt. Allerdings müssen Rechnungen eine fortlaufende Nummer enthalten.
Zu diesem Zweck erhält die Vorlage ein »AutoNew«-Makro, das beim Erstellen eines neuen Dokuments ausgelöst wird. Die aktuelle Rechnungsnummer wird in einer INI-Datei im Vorlagenordner gespeichert, so dass sie bei der nächsten Verwendung der Vorlage (oder einer anderen mit dem selben Makro) ausgelesen werden kann.

' Increment Invoice Number to New Form Document
Sub AutoNew()
 
  ' Create variables
  Dim fieldName As String
  Dim invNumber As String
  Dim iniFileName As String
  Dim templatePath As String
 
  fieldName = "InvoiceNumber"
  iniFileName = "Rechnungen.ini"
  templatePath = ActiveDocument.AttachedTemplate.Path
 
  ' Read value from INI-file
  invNumber = System.PrivateProfileString(templatePath & _
    "\" & iniFileName, fieldName, "invNumber")
 
  ' Increment invoice number
  If invNumber = "" Then
    invNumber = 1
  Else
    invNumber = invNumber + 1
  End If
 
  ' Update Invoice Number in active document
  ActiveDocument.FormFields(fieldName).Result = invNumber
 
  ' (Over)Write new value to INI-File
  System.PrivateProfileString(templatePath & "\" & _
    iniFileName, "InvoiceNumber", "invNumber") = invNumber
 
End Sub

Das Makro erwartet in der Vorlagedatei ein Textformularfeld mit folgenden Eigenschaften:

TextFormularFeld

Downloads:

Rechnung_HRT-Unters.dot (in Word <Alt + F11> drücken, um den Code zu sehen)

AutoNew.bas (in Word <Alt + F11> drücken, im VBA-Editor „Datei importieren“ wählen)

Get last active window resp. all windows in the Alt+Tab list

The Windows API does not provide a simple function to create a list of all top-level windows according to the Alt-Tab list. The EnumWindows function provides many more windows, as most programs have multiple windows. But at most one of them belongs in the Alt-Tab list. To find the right one, you have to go down the owner chain for each window until you find the root owner. If the tested window equals the LastActivePopup it additionally must meet certain criteria to be included in the Alt-Tab list. Thus you can create a list of window handles appearing in the Alt-Tab list and sorted by Z-order.

The following code demonstrates the procedure for C-Sharp. In this example the loop breaks as soon as the last active window is found. exclHwnd may be the handle of the form (this.Handle = ActiveHwnd) that uses the code.

private static ArrayList windowHandles = new ArrayList();
 
public static IntPtr GetLastWinHandle(IntPtr exclHwnd)
{
    IntPtr indexHwnd = IntPtr.Zero;
    IntPtr ownerHwnd = IntPtr.Zero;
    IntPtr foundHwnd = IntPtr.Zero;
    windowHandles.Clear();
    EnumWindows(new EnumWindowsCallback(EnumCallback), 0);
    foreach (int i in windowHandles)
    {
        indexHwnd = new IntPtr(i);
        if (IsWindowVisible(indexHwnd) && indexHwnd != exclHwnd)
        {
            ownerHwnd = indexHwnd;
            do
            {
                ownerHwnd = GetWindow(ownerHwnd, GW_OWNER);
            } while (!IntPtr.Zero.Equals(GetWindow(ownerHwnd, GW_OWNER)));
            ownerHwnd = ownerHwnd != IntPtr.Zero ? ownerHwnd : indexHwnd;
            if (GetLastActivePopup(ownerHwnd) == indexHwnd)
            {
                int es = GetWindowLongPtr(indexHwnd, GWL_EXSTYLE);
 if ((!(((es & Win32andMore.WS_EX_TOOLWINDOW) == Win32andMore.WS_EX_TOOLWINDOW) && ((es & Win32andMore.WS_EX_APPWINDOW) != Win32andMore.WS_EX_APPWINDOW))) && !IsInvisibleWin10BackgroundAppWindow(indexHwnd))
                {
                    foundHwnd = indexHwnd;
                    break;
                }
            }
        }
    }
    return foundHwnd;
}
 
private static bool EnumCallback(int hWnd, int lParam)
{
    windowHandles.Add(hWnd);
    return true;
}
 
private bool IsInvisibleWin10BackgroundAppWindow(IntPtr hWindow)
{
    int cloakedVal;
    int hr = Win32andMore.DwmGetWindowAttribute(hWindow, Win32andMore.DWMWA_CLOAKED, out cloakedVal, sizeof(int));
    if (hr != 0) // returns S_OK (which is zero) on success. Otherwise, it returns an HRESULT error code
    {
         cloakedVal = 0;
    }
    return cloakedVal != 0 ? true : false;
}

Downloads

This demo application shows all window titles in a listview and allows to toggle between the last two windows by tapping the Right Windows Key. Read the „WinCycle.Readme.txt“ if you want to use a different key.

License

This article, along with any associated source code and files, is licensed under the BSD License.

MEDISTAR und das Ende des Supports für Windows XP

Wenn auf einem Rechner XP läuft, wird wahrscheinlich auch Windows 7 auf ihm laufen. Außerdem besteht nicht unbedingt die Notwendigkeit in der Praxis Windows XP aufzugeben – trotz des Auslaufens des Microsoft-Supports (April 2014). Wenn die Rechner nicht ans Internet angeschlossen sind und auch sonst niemand irgendetwas neu installiert, werden ja Sicherheits-Updates nicht unbedingt benötigt.
Ganz anders sieht die Sache bei einer Software-Firma wie MEDISTAR aus. Dort können aus hygienischen Gründen keine veralteten Rechner toleriert werden – damit würde man die Kunden gefährden. Logischerweise kann die Firma dann aber auch keine Garantie mehr dafür abgeben, dass ihr Softwareprodukt auf Windows XP läuft, denn sie kann es selbst nicht mehr testen.
Als Anwender braucht man aber keine Angst zu haben, dass das Praxisprogramm in naher Zukunft nicht mehr unter XP laufen würde. Das eigentliche Problem ist nämlich absolut gegensätzlich. Der MEDISTAR-Unterbau, das QT-Framework in der Version 3 hat schon längst das Greisenalter erreicht. Daher besteht vielmehr die Gefahr, dass die Software irgendwann nicht mehr mit neueren Betriebssystemen zusammen arbeitet. Natürlich wird MEDISTAR irgendwann auf QT 4 upgraden. Die aktuelle Version ist aber 5.1. Ein direktes Upgrade auf Version 5 ist aber aus technischen Gründen nicht möglich. Und selbst QT 5 verträgt sich meines Wissens mit XP.
Kurzum: man kann sich entspannt zurück lehnen. MEDISTAR wird noch in etlichen Jahren unter XP laufen. Aber: Garantien dafür gibt es nicht – siehe oben. Wer bereit ist das Risiko einzugehen, macht aus meiner Sicht für die nächsten zwei bis drei Jahre keinen Fehler.
PS: Wenn dann doch ein Upgrade ansteht, sollte man wegen des Support-Zeitraumes das neueste Windows-Betriebssystem wählen. Im Moment ist das nicht Windows 7, sondern Windows 8.1. Aber da geht es schon wieder los: MEDISTAR übernimmt im Moment keine Garantie dafür, dass die Praxissoftware unter 8.1 läuft, weil sie es noch nicht ausreichend getestet haben. Gibt es ja auch erst einer Woche. Also Mut zum Risiko!

Bewegliche Feiertage im Terminkalender

Wer einen elektronischen Terminkalender benutzt, muss in vielen Programmen die Feiertage manuell eintragen. Das ist kein Problem, solange sich der Termin zu einem bestimmten Datum wiederholt (z.B. Weihnachten). Richtig lästig ist es aber bewegliche Feiertage Jahr für Jahr einzutragen (Ostern und andere).

Hier hilft mein C#-Erstlingswerk «Bewegliche Feiertage». Das Programm berechnet die Daten wählbarer beweglicher Festtage für ein oder mehrere Jahre und erstellt auf Wunsch eine iCalendar-Datei. Diese lässt sich in gängige Kalenderprogramme importieren (Outlook, Thunderbird/Lightning, eM Client, EssentialPIM, Windows Live und andere).

Das Programm kann hier heruntergeladen werden.

BFeiertage

Schneller Wechsel zwischen ein- und beidseitigem Drucken

In vielen Praxen steht ein Laserdrucker, der von allen Arbeitsplätzen erreichbar ist (Netzwerkdrucker). Moderne Drucker verfügen über eine Duplexeinheit, d.h. sie können Papier beidseitig bedrucken. Das ist ökologisch.

Um zwischen Duplexfunktion und einfachem Ausdruck schnell wechseln zu können, empfiehlt es sich den Drucker auf allen Arbeitsplätzen zweimal zu installieren. Anschließend wird die Voreinstellung bei einem Drucker auf «Duplex» und bei dem anderen auf «Einfach» gestellt.

foobar2000-Musicplayer einrichten

Wem iTunes zu mächtig und Windows-Mediaplayer zu kompliziert ist, spielt Musik am PC mit foobar2000 ab.

Die folgenden Einstellungen (Preferences) bringen dem Player unter anderem einen komfortablen Umgang mit Bewertungen (Rating) bei. Voraussetzung ist die In­stal­lation der Komponente Quick Tagger. Traytip
Display | Default User Interface • Minimize to notification area
• Show balloon tooltip on song change
Display | Default User Interface: Playback state display formatting Windows title:

[%artist% - ]%title%

StatusBar:

%codec%[-%codec_profile%] | $caps(%channels%) | $insert(%filesize_natural%, ,$sub($len(%filesize_natural%),2)) | %bitrate% kBit/s | $div(%samplerate%,1000)$ifgreater($len(%samplerate%),3,.$substr(%samplerate%,$sub($len(%samplerate%),2),$sub($len(%samplerate%),2)),) kHz [| %playback_time%/%length%] | %path%

Notification area icon tooltip:

[%artist% - ]%title%$crlf()%codec%[-%codec_profile%] | $caps(%channels%) | %bitrate% kBit/s | $div(%samplerate%,1000)$ifgreater($len(%samplerate%),3,.$substr(%samplerate%,$sub($len(%samplerate%),2),$sub($len(%samplerate%),2)),) kHz$crlf()Length: %length% m:s | Rating: $pad($repeat(★,%rating%), 5,✩)
Display | Default User Interface | Playlist View Custom Columns:
$pad($repeat(★,%rating%),5,✩)
Keyboard shortcuts Global Hotkeys einrichten:
Playback / Previous
Playback / Next
Playback / Play or Pause
Playback / Volume Up
Playback / Volume Down
Playback / Volume Mute
Playback / Seek / Back by 5 Seconds
Playback / Seek / Ahead by 5 Seconds
Open Containg Folder
View / Show Now Playing
View / Activate or Hide
Tagging / Quick Tagger / Set <Rating> to /0
Tagging / Quick Tagger / Set <Rating> to /1
Tagging / Quick Tagger / Set <Rating> to /2
Tagging / Quick Tagger / Set <Rating> to /3
Tagging / Quick Tagger / Set <Rating> to /4
Tagging / Quick Tagger / Set <Rating> to /5
File / Exit
Media Library | Library viewer selection playlist • Enabled
• Activate when changed
Media Library | Album list : Views by rating

$pad($repeat(★,%rating%),5,✩)|[%album artist% - ]%album%|[[%discnumber%.]%tracknumber%. ][%track artist% - ]%title%

by path

$directory_path(%path_sort%)|%filename_ext%

by codec

%codec%|[%artist% - ]%title%
Playback • Resume playback after restarting foobar2000
• Cursor Follows Playback
Tools |Tagging | Quick Tagger Fields:
Rating | 0;1;2;3;4;5• Require confirmation before processing more than «1» tracks
Advanced | Display| Properties Dialog |Standard Fields Am Ende der Zeile einfügen: Rating=RATING;

Es ist mit foobar2000 auch möglich, intelligente Wiedergabelisten zu erstellen. Erstellen Sie zum Beispiel in der Album list
View: by rating und Filter: %rating% GREATER 3.
Anschließend wählen sie im Kontextmenü der Album list (rechte Maustaste): «Send to new playlist». Bei späteren Veränderungen der Bewertungen wird diese Wiedergabeliste automatisch aktualisiert.

Falls Audio-CDs zum Beispiel als MP3-Dateien auf dem Computer gespeichert werden (Rip), ist im dafür zuständigen Dialog u.a. folgende Einstellung sinnvoll:
Converter Setup: Output path | Output style and file name formatting | Convert each track to an individual file – Name format:
[%album artist%\]%album%\%tracknumber% %title%

Lightning-Kalenderdateien von FTP-Server lokal sichern

Die Thunderbird-Erweiterung Lightning kann Termine auf einem FTP-Server speichern beziehungsweise als externen Kalender abonnieren.
Das ist sehr praktisch, wenn man von verschiedenen Rechnern auf den Terminkalender zugreifen möchte.

Ich möchte hier ein AutoHotkey-Skript vorstellen, mit dem sich die Kalender­dateien regelmäßig lokal sichern lassen. Es sollte nicht schwer fallen, das Skript an die eigenen Bedürfnisse anzupassen (Pfade, Dateinamen und Passwort).

ScriptTitle = Mozilla Calendar Backup
;» Folgende Zeilen müssen angepasst werden! «
ftpDomain = meineDomain.de
ftpPassWd = meinPasswort
ftpFolder = meinOrdnername
localPath = T:\USBStick\Lightning
;
SplitPath, localPath,,,,, localDrive
If !InStr(FileExist(localDrive), "D")
MsgBox, 48, %ScriptTitle%, «%localDrive%» wurde nicht gefunden!, 2
Else
{
;» Folgende Zeilen müssen angepasst werden! «
CalendarBackup("Kalender.ics")
CalendarBackup("Schulferien.ics")
CalendarBackup("Geburtstage.ics")
CalendarBackup("Feiertage.ics")
}
ExitApp
;
CalendarBackup(sourceFile, destFile = false)
{
Global
destFile := !destFile ? sourceFile : destFile
urlPath = ftp://%ftpDomain%:%ftpPassWd%@www.%ftpDomain%/%ftpFolder%
If not InStr(FileExist(localPath), "D")
FileCreateDir, %localPath%
TrayTip,, % sourceFile " wird nach " localPath " kopiert.",, 17
UrlDownloadToFile, %urlPath%/%sourceFile%, %localPath%\%destFile%
If Errorlevel
{
TrayTip,, %sourceFile% konnte nicht heruntergeladen werden., 5, 19
Sleep, 2000
}
}

Um das Skript ausführen zu können, müssen Sie den Code in eine Textdatei mit der Endung „.ahk“ speichern. Außerdem muss AutoHotkey installiert sein.

Mit Hilfe des Taskplaners oder noch einfacher der Aufgabenfunktion von Analog & Alarm Clock lässt sich das Skript automatisch regelmäßig starten.