Arbeitszeiterfassung und Rapport mit Tasker

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);

?>