kürzlich hab ich mir diese Arbeitszeiterfassung zusammengestellt.
Funktion:
Wenn ich bei meinem Kunden ankomme, drücke ich den Button „Start“. Zeitmessung beginnt. Während des Termins beim Kunden wird der „Terminname“ in eine Tasker-Variable „%TERMIN“ geschrieben.
Dazu hab ich folgendes Profil in Tasker (welches gleichzeitig auf lautlos stellt)
Calender Entry
Variable -> Variable Set
Name: %TERMIN
To: %CALTITLE
Über die Google-Api wird die Distanz und Fahrzeit zu diesem Kunden in IPS geschrieben und zusammen mit der Arbeitszeit hat meine Frau alle benötigten Daten zum Schreiben der Rechnung. Zudem wird ein csv-File abgelegt.
Hier die Datenausgabe:
Kunde:
Bahnhof Huenibach
normale Arbeitszeit
Reisekosten (5.6 Km): Fr. 7.84
Reisezeit (8 Minuten): Fr. 24
Arbeitszeit (5.941 Minuten): Fr. 760.448
Total: Fr. 792.288
die "android.php um folgendes erweitern:
case "zeit":
$zeit=$_GET['tageszeit'];
Setvalue(23138, "$zeit");
break;
eine String-Variable anlegen ($zeit)
Als erstes muss mit der App Zoom das Widget erstellt werden, ich habe es Zeiterfassung genannt. Es werden folgende Elemente benötigt:
1. Button: Name: Button_Start
Label: Start
Click Action: Tasker Task Zeit Ende
2. Button: Name: Button_Pause
Label: Pause
Click Action: Tasker Task Zeit Pause
1. Textfeld: Name: Start
2. Textfeld: Name: Pause
Click Action. Tasker Task Zeit Pause Change
3. Textfeld: Name: Ende
4. Textfeld: Name: Zeit
Click Action: Tasker Task Zeit Summe
Die oben aufgeführten Textfelder sollen nur die Uhrzeiten bzw. Pausen- und Gesamtzeit beinhalten. Die Beschriftungen, als "Start:" "Ende:" etc.
sollten mit weiteren Textfeldern erstellt werden.
Als nächstes müssen die Buttons für das Beenden der Pause und der Zeiterfassung analog zu den ersten beiden Buttons hinzugefügt werden.
Als Name bietet sich "Button_Ende" und "Button_PauseEnde" die verknüpften Tasks sollten "Zeit Ende" & "Zeit Pause Ende" sein.
Task 1: Zeit Start
1. Variable -> Variable Set
Name: %Start
To: %TIMES
2. Zoom -> Element Text
Element: Zeiterfassung.w / Start
Text: %TIME Uhr
3. Variable -> Variable Set
Name: %StartH
To: %TIME
4. Zoom -> Element Text
Element: Zeiterfassung.w / Ende
Text: --
5. Zoom -> Element Text
Element: Zeiterfassung.w / Pause
Text: --
6. Zoom -> Element Text
Element: Zeiterfassung.w / Zeit
Text: --
7. Zoom -> Element Visibility
Element: Zeiterfassung.w / Button_Stop
Set: Yes
Task 2: Zeit Pause:
1. Variable -> Variable Set
Name: %PStart
To: %TIMES
2. Zoom -> Element Visibility
Element: Zeiterfassung.w / Button_PauseEnde
Task 3: Zeit Pause Ende:
1. Variable -> Variable Set
Name: %Pause
To: %TIMES - %PStart + %Pause*60
Do Maths: Yes
2. Variable -> Variable Set
Name: %Pause
To: %Pause * 60
Do Maths: Yes
3. Zoom -> Element Text
Element: Zeiterfassung.w / Pause
Text: %Pause min
4. Zoom -> Element Visibility
Zeiterfassung.w / Button_PauseEnde
Set: No
Task 4: Zeit Ende:
1. Zoom -> Element Text
Element: Zeiterfassung.w / Ende
Text: %TIME Uhr
2. Variable -> Variable Set
Name: %Zeit
To: %TIMES - %Start - %Pause*60
Do Maths: yes
3. Variable -> Variable Set
Name: %Zeit
To: %Zeit/60/60
DoMaths: Yes
4. Zoom -> Element Text
Element: Zeiterfassung.w / Zeit
Text: %Zeit h
5. Variable -> Variable Set
Name: %Pause
To: 0
6. Variable -> Variable Set
Name: %Rapport
To: %DATE: %StartH - %TIME, Pause: %Pause min, Gesamt: %Zeit h
7. Zoom -> Element Visibility
Zeiterfassung.w / Button_Stop
Set: No
8. HTTP Post
Server: IPS mit Port
Path: /android.php
Data/File: type=zeit
arbeitszeit=%RAPPORT
9. Popup Task Buttons
Text: zur Bestätigung dass der Button gedrückt wurde,hab ich hier den Text "Arbeitsende" drin
jetzt noch in IPS folgendes Script und das wars.
<?
//****************************************************************************//
// Betriebskosten //
//****************************************************************************//
$home = "46.717221,7.692451";
$stundensatz = 128; //Betrag in Fr.
$kmkosten = 0.70; //Rappen pro Km. Arbeitszeit
$fahrzeitkosten = 1.5; //Betrag pro Minute Arbeitzeit
//****************************************************************************//
$zeit = GetValue(23138 /*[Handy\Variablen\A-Zeit\zeit]*/);
$daten = explode(",", $zeit);
$kunde = $daten[0];
$datum = $daten[1];
$beginn_ende = $daten[2];
$arbeitszeit = $daten[3];
$pos = $daten[0];
//Fahrzeit berechnen
$api = simplexml_load_file(utf8_encode("http://maps.google.ch/maps/api/directions/xml?origin=$home&destination=$pos&sensor=false"));
$fahrapi = $api->route->leg->duration->text;
$fahrzeit = preg_replace("/ /", "", $fahrapi);
$fahrzeit = preg_replace("/[A-Z,a-z]/", "", $fahrzeit);
$fahrzeit = preg_replace("/[,]/", ":", $fahrzeit);
//Fahrzeit immer in Minuten ausgeben
if (strpos($fahrapi, "Stunde"))
{
$fahrstd = floor($fahrzeit); //Stunde ausfiltern
$fahrmin = ltrim($fahrzeit, "\x30..\x39"); //Stunden wegschneiden
$fahrmin = preg_replace("/:/", "", $fahrmin);
$reisezeit = $fahrstd + $fahrmin;
}
else
{
$reisezeit = $fahrzeit;
}
//Kilometer berechnen
$strecke = $api->route->leg->distance->text;
$strecke = preg_replace("/ /", "", $strecke);
$strecke = preg_replace("/[A-Z,a-z]/", "", $strecke);
//Kosten berechnen
$fahrzeitkosten = $reisezeit *2 *$fahrzeitkosten;
$kmkosten = $strecke *2 * $kmkosten;
$arbeitskosten = $arbeitszeit *$stundensatz;
$total = $fahrzeitkosten + $kmkosten + $arbeitskosten;
$abrechnung = "Kunde:\r$kunde\rReisekosten ($strecke Km): Fr. $kmkosten\rReisezeit ($fahrzeit Minuten): Fr. $fahrzeitkosten\rArbeitszeit ($arbeitszeit Minuten): Fr. $arbeitskosten\rTotal: Fr. $total";
echo $abrechnung;
SMTP_SendMail(19589 /*[EMail\SMTP\E-Mail senden Andrea]*/, "$kunde","$abrechnung");
SMTP_SendMail(22497 /*[EMail\SMTP\E-Mail senden Jürg]*/ , "$kunde","$abrechnung");
//Datei schreiben
$datum = date("d-m-Y");
$rapportzeile = "Datum;Kunde;Strecke;KM-Kosten;Reisezeit;Reisekosten;Arbeitszeit;Arbeitskosten;Total verrechnen
;
$datum;$kunde;$strecke;$kmkosten;$fahrzeit;$fahrzeitkosten;$zeit;$arbeitskosten;$total";
$filename = "$kunde-$datum.csv";
$filename = IPS_GetKernelDir()."\\Rapporte\\$filename";// anpassen
$fileHandle = @fopen($filename, 'a');
@fputs($fileHandle, $rapportzeile);
@fclose($fileHandle);
?>