<?php
require_once("config/connect.php");

	// Schaut ob eine Zahlungsart eine EC Zahlungsart ist
	function ist_zahlungsart_ec_terminal_enabled($zahlungsart)
	{
		$qL=mysql_query("SELECT Name, karten_terminal FROM zahlungsart 
									WHERE Name = '".$zahlungsart."'");
		while($rowZ=mysql_fetch_array($qL))
		{				
			// Wenn es ein Terminal ist, dann gebe das zurück, ist sowieso schon true oder false
			if ($rowZ['karten_terminal']) 
			{
				return($rowZ['karten_terminal']);
			}
		}
		// Wenn keine Zahlugnsart gefunden wurde, dann kann es nur falsch sein
		return(false);
	}

	// Bankomat Zahlung rückgänig machen
	// wenn $ec_gutschrift dann wird kein Storno gemacht, sondern eine gutschrift
	function storniere_bankomat($neue_bon_id, $bon_id, $ec_gutschrift=false )
	{
		$qL=mysql_query("SELECT ce_zahlung_data FROM abgeschlossener_bon WHERE bon_id = $bon_id");
			while($rowZ=mysql_fetch_array($qL))
			{
				$zahlung_data=$rowZ['ce_zahlung_data'];
				$qL1=mysql_query("SELECT gesamt_summe FROM abgeschlossener_bon WHERE bon_id = $neue_bon_id");
				$rowZ1=mysql_fetch_array($qL1);
				$zahlbetrag=$rowZ1['gesamt_summe'];
				$xml=simplexml_load_string($zahlung_data);;
				if(isset($xml->TransSeq)) $TransSeq=$xml->TransSeq;
				else
				{
					echo "STORNO: Transseq ID des ursprünglichen Bons kann nicht gefunden werden";
					writeLog(basename( __FILE__)." ". __LINE__ , "STORNO: Transseq ID des ursprünglichen Bons kann nicht gefunden werden\n");
					mysql_query("ROLLBACK");
					mysql_query("ALTER TABLE abgeschlossener_bon AUTO_INCREMENT = 1");
					mysql_query("ALTER TABLE dep AUTO_INCREMENT = 1");
					mysql_query("set autocommit=1");
					exit (1);
				}
				writeLog(basename( __FILE__)." ". __LINE__ , "STORNO: Storniere Bankomat Bon $bon_id mit Transseq $TransSeq \n");
				list($zahlTerminalId, $zahlTerminalType)=get_my_bankomat_terminal_id();
				$exe_command=get_command_line_for_ce_terminal($zahlTerminalType, $zahlTerminalId);
				// der zahlbetrag für Storno scheint egal zu sein, muss aber mitangegeben werden. zumindest bei six Terminal ist das so.
				if ($ec_gutschrift)
				{
					$command=' C:\\sitpos\\bankomat\\'.$zahlTerminalType.'\\'.$exe_command.' transaktion '.$zahlTerminalId.' '.$zahlbetrag;
				}
				else
				$command=' C:\\sitpos\\bankomat\\'.$zahlTerminalType.'\\'.$exe_command.' storno '.$zahlTerminalId.' 0 '.$TransSeq;
				// Zum testen von einem output
				//$command=' C:\\sitpos\\bankomat\\hobex\\hobex_term\\hobex_zahlen.bat';
				writeLog(basename( __FILE__)." ". __LINE__ , "STORNO: Führe Kommando aus: $command \n");
				$resp=shell_exec($command);
				$pos=strpos($resp, 'Commit completed');
				if ($pos!==false)
				{
					$pos=strpos($resp, '<SITPOSBANKOMAT>');
					if ($pos!==false)
					{
						$resp=substr($resp,$pos);
					}
					//echo $resp;
					$resp=iconv('cp1252', 'utf-8//IGNORE',$resp);
					//echo "\n\n nixinixnix \n\n";
					echo $resp;
					$xml = simplexml_load_string($resp);
					$ergebnis=$xml->ERGEBNIS->asXml();
					$kundenbeleg=$xml->KUNDENBELEG;
					mysql_query("set autocommit=1");
					$query="UPDATE abgeschlossener_bon SET ce_zahlung_data='".$ergebnis."', ce_kunden_beleg='".$kundenbeleg."' WHERE bon_id = '".$neue_bon_id."'";
					$result=mysql_query($query);
					if (! $result)
					{
						echo "SQL Fehler: " . mysql_error();
						echo "<pre> Query: ".$query."</pre>";
						exit(1);
					}
					// else echo "success".$query;
					writeLog(basename( __FILE__)." ". __LINE__ , "STORNO: Query: $query \n");
					return (true);
				}
				else
				{
					echo "$TransSeq Storno fehlgeschlagen $resp \n";
					echo "$command";
					writeLog(basename( __FILE__)." ". __LINE__ , "STORNO: Fehler: $resp \n");
					//Zahlung ist fehlgeschlagen
					return (false);
				}
			}
	}

?>