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

function gutschein_bankomat($gutscheinbetrag)
{

	
	list($zahlTerminalId, $zahlTerminalType) = get_my_bankomat_terminal_id();
	$exe_command = get_command_line_for_ce_terminal($zahlTerminalType, $zahlTerminalId);

	$command = ' C:\\sitpos\\bankomat\\' . $zahlTerminalType . '\\' . $exe_command . ' transaktion ' . $zahlTerminalId . ' ' . $gutscheinbetrag;
	$resp = shell_exec($command);
	if (mb_detect_encoding($resp, 'UTF-8') != 'UTF-8')
			$resp = utf8_encode($resp);
		$resp = str_replace("'", "", $resp);		// ansonsten wir der String abgeschnitten - deswegen alle ' rauslöschen
		$resp = str_replace("&", "&amp;", $resp);
		
	$pos = strpos($resp, 'Commit completed');
	if ($pos !== false) {
		$pos = strpos($resp, '<SITPOSBANKOMAT>');
		log_to_file("pos: ".$pos);
		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;
		//echo "Zahlung mit Bankomat war erfolgreich.";
		return true;
	} else {
		//echo "$command";
		writeLog(basename(__FILE__) . " " . __LINE__, "STORNO: Fehler: $resp \n");
		echo "STORNO: Fehler: $resp \n";

		//Zahlung ist fehlgeschlagen
		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);
		if (mb_detect_encoding($resp, 'UTF-8') != 'UTF-8')
			$resp = utf8_encode($resp);
		$resp = str_replace("'", "", $resp);		// ansonsten wir der String abgeschnitten - deswegen alle ' rauslöschen
		$resp = str_replace("&", "&amp;", $resp);
		$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);
		}
	}
}
function gutscheine_bankomat($zahlbetrag)
{
	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.
	$command = ' C:\\sitpos\\bankomat\\' . $zahlTerminalType . '\\' . $exe_command . ' transaktion ' . $zahlTerminalId . ' ' . $zahlbetrag;
	$resp = shell_exec($command);
	if (mb_detect_encoding($resp, 'UTF-8') != 'UTF-8')
			$resp = utf8_encode($resp);
		$resp = str_replace("'", "", $resp);		// ansonsten wir der String abgeschnitten - deswegen alle ' rauslöschen
		$resp = str_replace("&", "&amp;", $resp);
	$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;
		return (true);
	} else {
		echo "$command";
		writeLog(basename(__FILE__) . " " . __LINE__, "STORNO: Fehler: $resp \n");
		//Zahlung ist fehlgeschlagen
		return (false);
	}
}
