<?php
// ALA geändert am 08.09.2023 		Gutschein kaufen mit Bankomatzahlung, abfrage ob Terminal existiert.
 
header('Content-Type: text/html; charset=utf-8');
header("Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, max-age=0, post-check=0");

require_once("global_functions.php");
require_once("edi_import_files.php");

$functionKey = false;
if (isset($_REQUEST['functionKey']) && $_REQUEST['functionKey'] != '') $functionKey = $_REQUEST['functionKey'];
else if (isset($ajaxFileKennung) && $ajaxFileKennung == 'callFromCommandlineFile') $functionKey = 'callFromCommandlineFile';
else if (isset($callFromPhpFile) && $callFromPhpFile == 'depExportFromBackupFunction') $functionKey = 'depExportFromBackupFunction';

//echo "Funkkey :".$functionKey;

switch ($functionKey) {
	case "setSession":
		setSession();
		break;
	case "getSession":
		getSession();
		break;
	case "checkSession":
		checkSession();
		break;
	case "setSessionLogout":
		setSessionLogout();
		break;
	case "getSessionByName":
		getSessionByName();
		break;
	case "deleteOpenBon":
		deleteOpenBon();
		break;
	case "deleteBonZusatztext":
		deleteBonZusatztext();
		break;
	case "loadCart":
		loadCart();
		break;
	case "searchCustomer":
		searchCustomer();
		break;
	case "bonToScreenTestPrint":
		bonToScreenTestPrint();
		break;
	case "writeCustomerToDb":
		writeCustomerToDb();
		break;
	case "clearSelectedCustomer":
		clearSelectedCustomer();
		break;
	case "getReprintContent":
		getReprintContent();
		break;
	case "getLastClosedBon":
		getLastClosedBon();
		break;
	case "checkPaymentTypeStorno":
		checkPaymentTypeStorno();
		break;
	case "functionAdditionalFooterTx":
		functionAdditionalFooterTx();
		break;
	case "ean13_bonieren":
		ean13_bonieren();
		break;
	case "getReportCategorie":
		getReportCategorie();
		break;
	case "getReportProducts":
		getReportProducts();
		break;
	case "getReportTables":
		getReportTables();
		break;
	case "getReportCustomer":
		getReportCustomer();
		break;
	case "getReportSeller":
		getReportSeller();
		break;
	case "getReportSellerPayment":
		getReportSellerPayment();
		break;
	case "getReportTotalRev":
		getReportTotalRev();
		break;
	case "getReportTotalRevPayment":
		getReportTotalRev("", "inclPayment");
		break;
	case "getReportTotalUserPayment":
		getReportTotalUserPayment();
		break;
	case "getReportTotalUserPaymentCategories":
		getReportTotalUserPaymentCategories();
		break;
	case "getReportFreeRev":
		getReportFreeRev();
		break;
	case "getReportCashbook":
		getReportCashbook_switch();
		break;
	case "getCashbookDetail":
		getCashbookDetail();
		break;
	case "getReportWorkingHour":
		getReportWorkingHour();
		break;
	case "cashbookCloseWriteDb":
		cashbookCloseWriteDb();
		break;
	case "getReportProductNameEnd":
		getReportProductNameEnd();
		break;
	case "getReportDataOffeneLieferscheine":
		getReportDataOffeneLieferscheine();
		break;
	case "getReportCustomerData":
		getReportCustomerData();
		break;
	case "getReportDataExportProtocol":
		getReportDataExportProtocol();
		break;
	case "getReportGutscheine":
		getReportGutscheine();
		break;
	case "getReportGutscheineShort":
		getReportGutscheineShort();
		break;
	case "getReportAuditing":
		getReportAuditing();
		break;
	case "getReportGDPdU":
		getReportGDPdU();
		break;
	case "getLastAbschlId":
		getLastAbschlId();
		break;
	case "gutscheineAdmin":
		gutscheineAdmin();
		break;
	case "getGutscheineDetail":
		getGutscheineDetail();
		break;
	case "testKassabuch":
		testKassabuch();
		break;
	case "saveConfiguration":
		saveConfiguration();
		break;
	case "bon_ausdrucken_pdf":
		bon_ausdrucken_pdf();
		break;
	case "sendEmail":
		sendEmail();
		break;
	case "depStartbelegErstellen":
		depStartbelegErstellen();
		break;
	case "loadLieferscheine":
		loadLieferscheine();
		break;
	case "loadLieferschByCust":
		loadLieferschByCust();
		break;
	case "lieferscheineVerrechnen":
		lieferscheineVerrechnen();
		break;
	case "lieferscheineVerrechnenA4Print":
		lieferscheineVerrechnenA4Print();
		break;
	case "displayLieferschein":
		displayLieferschein();
		break;
	case "bonAusLieferschein":
		bonAusLieferschein();
		break;
	case "resetLieferscheinAuftragsnummer":
		resetLieferscheinAuftragsnummer();
		break;
	case "searchProductData":
		searchProductData();
		break;
	case "deleteChildFromCombiartikel":
		deleteChildFromCombiartikel();
		break;
	case "addChildToParent":
		addChildToParent();
		break;
	case "setChildFromCombiartikelOption":
		setChildFromCombiartikelOption();
		break;
	case "getCardCredit":
		getCardCredit();
		break;
		#case "getGutscheincardDataAufladen": getGutscheincardDataAufladen(); break;
	case "gutscheinKarteUpdate":
		gutscheinKarteUpdate();
		break;
	case "gutscheinKarteCreateNo":
		gutscheinKarteCreateNo();
		break;
	case "lizenzKeySpeichdern":
		lizenzKeySpeichdern();
		break;
	case "activateSignatureUnit":
		activateSignatureUnit();
		break;
	case "newSignatureCartEnable":
		newSignatureCartEnable();
		break;
	case "printSignatureData":
		printSignatureData();
		break;
	case "enablerStartBelegPrint":
		startBelegDrucken(false, false, false, false);
		break;
	case "abschlussNullBelegErstellen":
		abschlussNullBelegErstellen();
		break;
	case "setDisplayDepSignError":
		setDisplayDepSignError();
		break;
	case "directChangeUser":
		directChangeUser();
		break;
	case "checkSessionRuntime":
		checkSessionRuntime();
		break;
	case "testDelImgs":
		testDelImgs();
		break;
	case "testBarcodePrint":
		testBarcodePrint();
		break;
	case "bonZusatzTxtAdd":
		bonZusatzTxtAdd();
		break;
	case "stopSixTask":
		stopSixTask();
		break;
	case "saveA4Templ":
		saveA4Templ();
		break;
	case "ediAusFileImport":
		ediAusFileImport();
		break;
	case "get_leeren_warenkorb":
		get_leeren_warenkorb();
		break;
	case "moveEdiFileToArchive":
		moveEdiFileToArchive();
		break;
	case "soMaDiscountLine":
		soMaDiscountLine();
		break;
	case "kpAjaxTest":
		kpAjaxTest();
		break;
	case "kpTestDestroySession":
		kpTestDestroySession();
		break;
	case "manualGestartetAutoBackup":
		manualGestartetAutoBackup();
		break;
	case "openBonSomaCalc":
		openBonSomaCalc();
		break;
	case "kdInfoPreisgrAnzeigen";
		kdInfoPreisgrAnzeigen();
		break;
	case "reloadCustMonitor";
		reloadCustMonitor();
		break;
	case "autoDepExportManuell":
		autoDepExportManuell();
		break;
	case "callFromCommandlineFile":
		break;		# die funktion wird direkt aufgerufen
	case "depExportFromBackupFunction":
		break;	# die funktion wird direkt aufgerufen
	default:
		log_to_file("Error !-!-! Falscher Aufruf von ajax_funktionen, Funktion nicht bekannt" . $functionKey, false, false);
	//	echo "Error !-!-! Falscher Aufruf von ajax_funktionen, Funktion nicht bekannt" . $functionKey;
}

function reloadCustMonitor()
{

	if (file_exists('display//tisch_id_anzeigen.txt'))
	{
		$curTischId=file_get_contents('display//tisch_id_anzeigen.txt');
		
	}
	else if (isset($_POST['curTischId']) && $_POST['curTischId'] > 0) 
	{
		$curTischId = $_POST['curTischId'];
	}
	
	else
	{
		$sql = mysql_fetch_array(mysql_query("SELECT * FROM offener_bon ORDER BY update_ts DESC LIMIT 1;"));
		
		if (!$sql) echo mysql_error();
		if(isset($sql['bon_id']))
		{
			$curTischId = $sql['bon_id'];
		}
	}

	# extract CSS 
	preg_match('/\s([0-9]{1,3})px/', KUNDENMONITOR_FONT_BASIC, $fontSize);
	preg_match('/\/(.*?)[0-9]{1,3}[a-zA-Z%]{1,3}\s{1}/', KUNDENMONITOR_FONT_BASIC, $elemHeight);

	preg_match('/bold/', strtolower(KUNDENMONITOR_FONT_BASIC), $fontWeight);

	$pat = array('/\//', '/%/', '/px/');
	$elementHeight = preg_replace($pat, '', $elemHeight[0]);
	$fontSize = preg_replace('/px/', '', $fontSize[0]);
	$fontSize = ceil($fontSize / 1.25) . 'px';		# für Artikel Zeile
	$elementHeight = ceil($elementHeight / 1.25) . 'px';

	if ($fontWeight[0] == 'bold') {
		$fontWeight = 'font-weight:bold;';
	} else $fontWeight = 'font-weight:normal;';

	$htmlOutput = "";
	$sql = mysql_query("SELECT * FROM offener_bon WHERE bon_id=" . $curTischId . " ORDER by ID ASC");

	# äusseres div
	$htmlOutput .= '<div class="" style="position:relative; width:98%; height:95%; margin:2% auto 0; " >';
	# header Zeile
	$htmlOutput .= '<div class="orange" style="position:relative; width:100%; height:60px;" >
					<div class="rowSum kdMonFontBasicHeadElem kundenMonitorHeadFooter" >Summe</div>
					<div id="bon_stk" class="rowQty kdMonFontBasicHeadElem kundenMonitorHeadFooter" >Stk</div>
					<div id="bon_einzelpreis" class="rowPrice kdMonFontBasicHeadElem kundenMonitorHeadFooter" >Einzel</div>
					<div id="bon_name"  class="rowName kdMonFontBasicHeadElem kundenMonitorHeadFooter" >Name</div>
					<div class="cclear"></div>
				
				</div>';	# header Zeile Ende 

	#  Artikel Zeilen 
	$htmlOutput .= '<div id="artikelContainer" class="chromeScrollbarHide" style="position:relative; width:100%; height:calc(100% - 120px);  overflow-y:auto; overflow: -moz-scrollbars-none;"     >';
	$summe = 0;
	if (!$sql) echo mysql_error();
	while ($row = mysql_fetch_assoc($sql)) {
		$stueck = $row['stueck'];
		$netto = $row['PRICESELL'];
		$steuersatz = $row['tax_rate'];
		$brutto = $netto * (1 + $steuersatz);
		$brutto_gesamt = $brutto * $stueck;
		$brutto_anz = number_format($brutto, 2, ",", ".");
		$brutto_gesamt_anz = number_format($brutto_gesamt, 2, ",", ".");
		$stueck_anz = number_format($stueck, 1, ",", ".");
		$summe += $brutto_gesamt;

		if (strlen($row['printname']) >= 1) $bonName = $row['printname'];
		else $bonName = $row['name'];

		$htmlOutput .= '<div class="artikelLine" style=""	>
								<div class="cclear"></div>
								<div id="bon_summe" class="rowSum kdMonFontBasicArtikel" 
										style="font-size:' . $fontSize . '; line-height:' . $elementHeight . '; ' . $fontWeight . '" >' . $brutto_gesamt_anz . '</div>
								<div id="bon_stk" class="rowQty kdMonFontBasicArtikel" 
										style="font-size:' . $fontSize . ';  line-height:' . $elementHeight . '; ' . $fontWeight . '" >' . $stueck_anz . '</div>
								<div id="bon_einzelpreis" class="rowPrice kdMonFontBasicArtikel" 
										style="font-size:' . $fontSize . ';  line-height:' . $elementHeight . '; ' . $fontWeight . '" >' . $brutto_anz . '</div>
								<div id="bon_name" class="rowName kdMonFontBasicArtikel" 
										style="font-size:' . $fontSize . '; line-height:' . $elementHeight . '; ' . $fontWeight . '" >' . $bonName . '</div>												
						</div>';
	}

	$htmlOutput .= '</div>';

	$summe_anz = number_format($summe, 2, ",", ".");


	# Summen Zeile			
	$htmlOutput .= '<div id="" class="orange" style="position:relative; width:100%; height:60px;" >
					<div id="bon_summe" class="rowTotalSum kundenMonitorHeadFooter" style="" >' . $summe_anz . '</div>
					<div id="" class="kdMonFontBasicHeadElem kundenMonitorHeadFooter" >Gesamt:</div>
					<div class="cclear"></div>
				</div>';	# Summen Zeile Ende


	# äusseres div ende
	$htmlOutput .= '</div>';
#
	$retVal = array(0 => $curTischId, 1 => $htmlOutput);
	
	
	echo json_encode($retVal,true);
}



function soMaDiscountLine()
{
	#INSERT INTO offener_bon SET name='".$name."', pricesell=".$preis.", tax_rate='".$tax_rate."', printname='".$name."', 
	#						reference=' ', code='', pricebuy='0', category='0', taxcat='".$combiArtEinzelRab['taxcat']."', 
	#						varprice=false, bon_id='".$row_produkt['bon_id']."', stueck='1'
	# functionKey:'soMaDiscountLine', prodId:prodId, stueck: stueck, preis: preis, aktuellerBon: aktuellerBon, ean: ean, discountType:discountType 

	if (isset($_POST['prodId']) && $_POST['prodId'] > 0) $prodId = $_POST['prodId'];
	else $prodId = false;
	if (isset($_POST['stueck']) && $_POST['stueck'] > 0) $stueck = $_POST['stueck'];
	else $stueck = 0;
	if (isset($_POST['preis']) && is_numeric($_POST['preis']) == true) $preis = $_POST['preis'];
	else $preis = 0;
	if (isset($_POST['taxRate']) && is_numeric($_POST['taxRate']) == true) $taxRate = $_POST['taxRate'];
	else $taxRate = 0;

	if (isset($_POST['aktuellerBon']) && is_numeric($_POST['aktuellerBon']) == true) $aktuellerBon = $_POST['aktuellerBon'];
	else $aktuellerBon = 0;
	if (isset($_POST['discountType']) && strlen($_POST['discountType']) > 3) $discountType = $_POST['discountType'];


	if ($prodId != false) {

		$inQl = mysql_query("INSERT INTO offener_bon SET name='Aktion Zeile !!!', pricesell=-" . $preis . ", tax_rate='" . $taxRate . "', printname='" . $discountType . " Super Aktion', 
								reference='', code='', pricebuy='0', category='0', varprice=false, bon_id='" . $aktuellerBon . "', stueck='" . $stueck . "' ");

		if (!$inQl) {
			echo json_encode(array("error", " DB Insert Eror: " . mysql_error(), "xx", "yy"));
		} else echo json_encode(array("success", $prodId . " eingefügt", "xx", "yy"));
	} else {
		echo json_encode(array("error", "undefinierter Fehler ajax_f..kp.. 406", $_POST['prodId'], "yy"));
	}
}

function kdInfoPreisgrAnzeigen()
{
	# das js hat die kd nr nicht. wird als erstes ausgelesen
	$currentCart = $_SESSION['aktuellerWarenkorb'];

	$kdNo = mysql_fetch_array(mysql_query("SELECT kunden_id FROM offener_bon WHERE bon_id = " . $currentCart . " LIMIT 1 "));
	$kpMsg = "";
	if ($kdNo['kunden_id'] > 0) {
		$kdId = $kdNo['kunden_id'];
	} else if (isset($_SESSION['customerToEmptyBon']) && $_SESSION['customerToEmptyBon'] > 0) {
		$kdId = $_SESSION['customerToEmptyBon'];
	}

	if ($kdId > 0) {
		# die function wird auch beim aufruf mit kundenkarte ean13 verwendet
		$kdInfo = preisgruppenKundenInfo($kdId);
		# returnVal -> array($returnHtml, $kdKarteSperre);
		$kdPersonendaten = $kdInfo[0];
		$kdKarteSperre = $kdInfo[1];

		echo json_encode(array("success", $kdPersonendaten, $kdKarteSperre, " kdId-> " . $kdId . " - " . $kpMsg, " curCart-> " . $currentCart));
	} else {
		echo json_encode(array("error", " Kunden Id konnte nicht ausgelesen werden", " ", "", ""));
	}
}

function ediAusFileImport()
{
	require_once("edi_import_files.php");
	$curUser = $_SESSION['userId'];
	$curCart = $_SESSION['aktuellerWarenkorb'];
	$articleQty = 1;
	$ediError = false;
	$ediErrorMsg = '';

	/*
		$checkWarenkorb=mysql_fetch_array(mysql_query("SELECT bon_id FROM offener_bon WHERE bon_id = ".$curCart." LIMIT 1"));
				
		if($checkWarenkorb[0] != 0){
				# Wenn im Warernkorb schon was drinnen ist lassen wir kein Edi Import zu. zurück zum ajax call, da wird
				#     ein neuer warenkorb geöfnet und der import neu aufgerufen. deswegn hier aussteigen, mein neu aufruf kommen wir da nicht mehr
				#     herein
			echo json_encode(array("addNewCart", "Neuer Warenkorb wird geladen"));
			exit;
		}*/

	# dir *.edi auslesen
	$ediFiles = glob('C:\sitpos\import\*.[tT][xX][tT]');

	# älterste zuerst, wird von hinten abgearbeitet, "File Created" 
	if (sizeof($ediFiles) == 0) {
		echo json_encode(array("Error", "EDI Import Fehler, Datei nicht gefunden !", "", ""));
		exit;
	}

	array_multisort(array_map('filectime', $ediFiles), SORT_NUMERIC, SORT_ASC, $ediFiles);
	$checkFile = false;
	//echo "ABC";
	$warenkorb_id = get_leeren_warenkorb();
	import_edi_file($ediFiles[0], $warenkorb_id);
	exit;
	$ediData = file_get_contents($ediFiles[0]);
	# read data from file and validate
	# vor dem check die zeilenumbrüche wegnehmen, sonst funktioniert das regex (beginnt UNA ende UNZ ) nicht 
	$ediDataStr = preg_replace("/[\n\r]/", "", $ediData);
	$checkFile = preg_match("/^UNA(.*)UNZ'$/", $ediDataStr);

	if ($checkFile === 0) {
		# Datein die nicht mit UNA beginnen und UNZ endet -> ungültig. mit fehler im namen  ins archiv copiert und im imput gelöscht
		$xTime = date('dm_His');
		$ediFileArchiveName = 'C:\sitpos\import\archive\\importFehler' . $xTime . '.txt';
		$copyToArchive = copy($ediFiles[0], $ediFileArchiveName);
		$delIpFile = unlink($ediFiles[0]);
		log_to_file(" EDI Import, Ungültige Datei oder Dateiinhalt.", false, false);
		echo json_encode(array('Error', 'Datei oder Dateiinhalt ungültig !', '', ''));
		exit;
	}
}

function stopSixTask()
{
	$cmd = 'start /B TASKKILL /F /IM six_zahlen.exe';

	$killer = shell_exec($cmd);

	echo "ajax resp from stop six task: " . $killer;
}

function ceTerminalCopyCfg($termType = false, $configContent = false, $termId = false)
{
	$writeTmp = false;
	$xCopy = false;
	if (strlen($configContent) > 11) {
		#file_put_contents("c:\tmp\zuz.cfg", $configContent);
		$targetPath = false;
		if (strtolower($termType) == 'six') {
			$filePath = "include\cardPayment\sixTmp.cfg";
			$targetPath = "c:\sitpos\bankomat\six\TimApi.cfg";
		} else if (strtolower($termType) == 'zvt') {
			$filePath = "include\cardPayment\zvtTmp.cfg";
			$checkCmd = "start /B dir C:\sitpos\bankomat\zvt\\" . $termId;
			$checkZft = shell_exec($checkCmd);
			if (preg_match('/' . $termId . '/i', $checkZft)) {
				$targetPath = "c:\sitpos\bankomat\zvt\\" . $termId . "\\easybpi.cfg";
				#$xx="start /B dir ".$targetPath;
				#$zz=shell_exec($xx);
				#writeLog(basename( __FILE__)." ". __LINE__ , "check dir  is dodannnnnnn ".$checkCmd."  term id -> ".$termId." -> : ".$checkZft."\n");
				#writeLog(basename( __FILE__)." ". __LINE__ , "check dir  is dodannnnnnn ".$targetPath." -> ".$zz."\n");
				#$targetPath="c:\sitpos\bankomat\zvt\zulu\easybpi.cfg";
			} else {
				$mkDirCmd = "start /B mkdir C:\sitpos\bankomat\zvt\\" . $termId;
				$mkDir = shell_exec($mkDirCmd);
				$targetPath = "c:\sitpos\bankomat\zvt\\" . $termId . "\\easybpi.cfg";
				writeLog(basename(__FILE__) . " " . __LINE__, "check dir  worr NED do " . $checkCmd . "  term id -> " . $termId . " -> : " . $mkDir . " ---> " . $targetPath . "\n");
			}
		}

		$writeTmp = file_put_contents($filePath, $configContent);
		writeLog(basename(__FILE__) . " " . __LINE__, "tmp file write -> : " . $writeTmp . "\n");
		if ($writeTmp !== false) {
			#$shellCmd="start /B copy ".$filePath." ".$targetPath;
			$shellCmd = "start /B copy " . $filePath . " " . $targetPath;
			$xCopy = shell_exec($shellCmd);

			writeLog(basename(__FILE__) . " " . __LINE__, "copy file  -> : " . $xCopy . "\n");
		}


		/*	
				if($writeTmp !== false){
					
					$shellCmd="start /B copy include\cardPayment\zuzTmp.cfg c:\sitpos\bankomat\zuz.cfg";
					$xCopy=shell_exec($shellCmd);

				}
				else $writeTmp.="schlecht";
			*/
		#writeLog(basename( __FILE__)." ". __LINE__ , "file -> : ".$writeTmp."\n");
	} else {
		$writeTmp = "config leer od ungültig (min 11 Zeichen lang)";
	}

	return $writeTmp . " / " . $termType . " / " . $xCopy;
}

function saveA4Templ()
{
	if (isset($_POST['a4Target']) && strlen($_POST['a4Target']) > 2) $a4Target = $_POST['a4Target'];
	else $a4Target = false;
	if (isset($_POST['templateData']) && strlen($_POST['templateData']) > 22) $templateData = $_POST['templateData'];
	else $templateData = false;
	if (isset($_POST['dDirection']) && strlen($_POST['dDirection']) > 2) $dDirection = $_POST['dDirection'];
	else $dDirection = false;




	if ($dDirection == 'loadTemplate' && $a4Target == 'rechnung') {
		$templD = mysql_fetch_array(mysql_query("SELECT a4_template FROM pdf_a4_rechnung WHERE name = 'rechnungs_template_a4'		"));
		if (!$templD) echo json_encode(array("Error", "Fehler beim lesen des Datensatzes " . mysql_error()));
		else echo json_encode(array("Success", "A4 Rechnungs Template geladen. ", $a4Target, $templD['a4_template']));
	} else if ($dDirection == 'loadTemplate' && $a4Target == 'lieferschein') {
		#file_put_contents('kpcheckit.txt', "\n " .basename(__FILE__) . " ". __LINE__ ."load Lieferschein !!!  \n ", FILE_APPEND);

		$templD = mysql_fetch_array(mysql_query("SELECT a4_template FROM pdf_a4_rechnung WHERE name = 'lieferschein_template_a4'	"));
		if (!$templD) echo json_encode(array("Error", "Fehler beim lesen des Datensatzes " . mysql_error()));
		else echo json_encode(array("Success", "A4 Lieferschein Template geladen. ", $a4Target, $templD['a4_template']));
	} else if ($dDirection == 'saveTemplate' && $a4Target == 'rechnung') {
		if ($templateData == false) {
			echo json_encode(array("Error", "Ungültiges Template, event. zu Kurz (22) od leer.", "rechnung"));
		} else {
			#file_put_contents('kpcheckit.txt', "\n " .basename(__FILE__) . " ". __LINE__ ."a4 Template target-> ".$a4Target."  templData-> ".$templateData." direction-> ".$dDirection." \n ", FILE_APPEND);
			$checkDb = mysql_fetch_array(mysql_query("SELECT * FROM pdf_a4_rechnung WHERE name = 'rechnungs_template_a4' LIMIT 1"));
			if ($checkDb['name'] != 'rechnungs_template_a4') {
				# Datensatz nicht angelegt -> insert!
				$insertA4 = mysql_query("INSERT INTO pdf_a4_rechnung SET name = 'rechnungs_template_a4', a4_template='" . mysql_real_escape_string($templateData) . "'			");
				if (!$insertA4) {
					echo json_encode(array("Error", "Template konnte nicht eingefügt werden", "rechnung"));
					exit;
				} else {
					echo json_encode(array("Success", "A4 Rechnungs Template gespeichert (insert).", "rechnung"));
				}
			} else {
				# Datensatz angelegt -> update !					
				$templD = mysql_query("UPDATE pdf_a4_rechnung SET a4_template = '" . mysql_real_escape_string($templateData) . "' WHERE name = 'rechnungs_template_a4'				");
				if (!$templD) echo json_encode(array("Error", "Fehler beim schreiben in die DB " . mysql_error(), "rechnung"));
				else echo json_encode(array("Success", "A4 Rechnung Template gespeichert (update).", "rechnung"));
			}
		}
	} else if ($dDirection == 'saveTemplate' && $a4Target == 'liefersch') {
		if ($templateData == false) {
			echo json_encode(array("Error", "Ungültiges Template, event. zu Kurz (22) od leer.", "lieferschein"));
		} else {

			$checkDb = mysql_fetch_array(mysql_query("SELECT * FROM pdf_a4_rechnung WHERE name = 'lieferschein_template_a4' LIMIT 1"));
			if ($checkDb['name'] != 'lieferschein_template_a4') {
				# Datensatz nicht angelegt -> insert!
				$insertA4 = mysql_query("INSERT INTO pdf_a4_rechnung SET name = 'lieferschein_template_a4', a4_template='" . mysql_real_escape_string($templateData) . "'			");
				if (!$insertA4) {
					echo json_encode(array("Error", "Template konnte nicht eingefügt werden", "liefersch"));
					exit;
				} else {
					echo json_encode(array("Success", "A4 Lieferschein Template gespeichert (insert).", "liefersch"));
				}
			} else {
				# Datensatz angelegt -> update !					
				$templD = mysql_query("UPDATE pdf_a4_rechnung SET a4_template = '" . mysql_real_escape_string($templateData) . "' WHERE name = 'lieferschein_template_a4'				");
				if (!$templD) echo json_encode(array("Error", "Fehler beim schreiben in die DB " . mysql_error(), "liefersch"));
				else echo json_encode(array("Success", "A4 Lieferschein Template gespeichert (update).", "liefersch"));
			}
		}
	}
}


function saveConfiguration()
{
	$zuz = "";
	$cc = 0;
	foreach ($_POST as $key => $value) {
		if ($key == 'functionKey') continue;
		$updQl = mysql_query("UPDATE konfiguration SET wert = '$value' WHERE name= '$key'");
		if (!$updQl) $zuz .= "Error " . mysql_error();
		$zuz .= $key . " /";
		$cc++;
	}

	echo $zuz . " - " . $cc;
}

function cashbookCloseWriteDb()
{
	if (isset($_POST['lastAbschlId']) && $_POST['lastAbschlId'] > 0) $lastAbschlId = $_POST['lastAbschlId'];
	if (isset($_POST['closeNote'])) $cashbookCloseNote = $_POST['closeNote'];
	else $cashbookCloseNote = '';
	if (isset($_POST['firstCashbookStartId']) && $_POST['firstCashbookStartId'] > 0 && isset($_POST['firstCashbookEndeId']) && $_POST['firstCashbookEndeId'] > 0) {
		# es gibt noch keinen Kassabuchabschluss -> erstellen vom ersten
		$abschlStartId = $_POST['firstCashbookStartId'];
		$lastAbschlId = $_POST['firstCashbookEndeId'];
		if (isset($_POST['firstCashbookSaldo']) && ($_POST['firstCashbookSaldo'] > 0 || $_POST['firstCashbookSaldo'] == 'wechselgeld')) {
			if ($_POST['firstCashbookSaldo'] == 'wechselgeld') {
				$lSaldo = mysql_fetch_array(mysql_query("SELECT wechselgeld FROM kassa_abschluesse WHERE id = " . $abschlStartId . " "));
				$lastSaldo = $lSaldo['wechselgeld'];
			} else $lastSaldo = $_POST['firstCashbookSaldo'];
		} else $lastSaldo = 0;
		#		writeLog(basename( __FILE__)." ". __LINE__ , "start id: ".$abschlStartId." ende Id: ".$lastAbschlId."\n");

	} else {
		# auslesen der höchsten Id letzt erstellter kassenbuch Abschlus un den Saldo aus diesem
		$startId = mysql_fetch_array(mysql_query("SELECT kassenabschl_endeId, abschluss_saldo FROM kassenbuch_abschluesse ORDER BY id DESC LIMIT 1"));
		$cashBookStartId = $startId['kassenabschl_endeId'] + 1;
		$lastSaldo = $startId['abschluss_saldo'];

		# prüfen ob es einen Kassenabschluss der noch nicht im Kassenbuchabschluss vorkommt gibt
		$checkAbschlStartId = mysql_fetch_array(mysql_query("SELECT id FROM kassa_abschluesse WHERE id = " . $cashBookStartId . " AND kassa_offen = 0 "));
		$abschlStartId = $checkAbschlStartId['id'];
	}
	if ($abschlStartId > 0) {
		# errechnen der Werte für den kassenbuchabschluss
		$cashbookResultArray = calculateCasbook($abschlStartId, $lastAbschlId);

		if ($cashbookResultArray[0] != 'Error') {
			$tmpCalc = 0;
			# beginnen hier mit 1, weil im Array Index 0 die steuer summen drinnen stehen
			for ($i = 1; $i < count($cashbookResultArray); $i++) {
				$tmpCalc += $cashbookResultArray[$i]['betrag'];
			}

			$saldo = $tmpCalc + $lastSaldo;

			#			writeLog(basename( __FILE__)." ". __LINE__ , "Return val from calc: ".$tmpCalc." / ".$lastSaldo."\n");

			if (is_numeric($saldo)) {
				if (!isset($_SESSION)) {
					session_start();
				}
				$userId = $_SESSION['userId'];
				$writeDb = mysql_query("INSERT INTO kassenbuch_abschluesse SET kassenabschl_startId = " . $abschlStartId . ",
									kassenabschl_endeId = " . $lastAbschlId . ", uebertrag_saldo = " . $lastSaldo . ", abschluss_saldo = " . $saldo . ", 
									erstellt_datum = NOW(), erstellt_von = " . $userId . ", bemerkung = '" . $cashbookCloseNote . "'			");
				if (!$writeDb) {
					json_encode(array("Error", mysql_error()));
				} else {
					$insertedAbschlId = mysql_insert_id();
					echo json_encode(array("Success", "Kassenbuch Abschluss " . $insertedAbschlId . " erstellt"));
				}
			} else echo json_encode(array("Error", "Kassenbuch Saldo konnte nicht berechnet werden"));
		}
	} else {
		writeLog(basename(__FILE__) . " " . __LINE__, "kassabuch angekommen -> im ELSE : \n");
		json_encode(array("DB Fehler beim schreiben von Kassabuch Abschluss", $lastAbschlId));
	}
}

function compare($a, $b)
{
	#$c = $a['titel'] - $b['titel'];
	$c = strtotime($a['datum']) - strtotime($b['datum']);
	$c .= $b['titel'] - $a['titel'];
	return $c;
}

function getCashbookDetail()
{

	if (
		isset($_POST['cashbookId']) && $_POST['cashbookId'] > 0 && isset($_POST['kassabschlStartId']) && $_POST['kassabschlStartId'] > 0
		&& isset($_POST['kassabschlEndeId']) && $_POST['kassabschlEndeId'] > 0
	) {
		$kassabuchId = $_POST['cashbookId'];
		$kassenabschlStartId = $_POST['kassabschlStartId'];
		$kassenabschlEndeId = $_POST['kassabschlEndeId'];
		$saldoUebertrag = number_format($_POST['saldoUebertrag'], 2, ",", ".");
		$saldoAbschluss = number_format($_POST['kassabuchAbschlSaldo'], 2, ",", ".");
		$kassabuchBetrag = number_format($_POST['kassabuchBetrag'], 2, ",", ".");
		$kassabuchUser = $_POST['cashBookUser'];
		$kassabuchErstelltDate = $_POST['erstelltDate'];
		# wird in der Funktion gerechnet weil diese auch zum kassabuch erstellen verwendet wird
		$cashbookResultArray = calculateCasbook($kassenabschlStartId, $kassenabschlEndeId);
		# lese das erste Array Elemnt aus, Summe Ust und Summe Vorsteuer
		$taxSumData = $cashbookResultArray[0];
		if (isset($taxSumData['elemA']) && $taxSumData['elemA'] == 'metaArray') {
			unset($cashbookResultArray[0]);
			array_slice($cashbookResultArray, 0);
		}

		#writeLog(basename( __FILE__)." ". __LINE__ , "cashbook calc Array count: ".count($cashbookResultArray)."\n");	

		$cashBookHeadElem = "<div class='cbHtmlHeaderP' ><div class='cbDetailHeaderTop' >Erstellt am: " . $kassabuchErstelltDate . ", von: " . $kassabuchUser . "</div></div>
								<div class='cbHtmlHeaderP' ><div class='cbDetailHeaderLeft floatL' >Übertrag: </div>
										<div class='cbDetailHeaderRight floatL' >" . $saldoUebertrag . "</div>
										<div class='cbDetailHeaderLeft cbMl floatL' >Abschluss Betrag: </div>
										<div class='cbDetailHeaderRight floatL' >" . $saldoAbschluss . "</div><div class='cclear'></div></div>
										<div class='cbHtmlHeaderP' ><div class='cbDetailHeaderLeft floatL' >Betrag: </div>
										<div class='cbDetailHeaderRight floatL' >" . $kassabuchBetrag . "</div>
										<div class='cbDetailHeaderLeftB floatL' >Umsatzsteuer: </div>
										<div class='cbDetailHeaderRightB floatL' >" . number_format($taxSumData['ust'], 2, ",", ".") . "</div>
										<div class='cbDetailHeaderLeftB floatL' >Vorsteuer: </div>
										<div class='cbDetailHeaderRightB floatL' >" . number_format($taxSumData['vorst'], 2, ",", ".") . "</div>
										<div class='cclear'></div></div>";

		$cashBookRes = "<div class='cashBookLine cashBookFont' style='background:#555; color:#fff;'>
								<div class='cashBookLine_ColA'>Datum</div><div class='cashBookLine_ColB'>Betrag</div>
								<div class='cashBookLine_ColD'>UmSt.</div>								
								<div class='cashBookLine_ColD'>VorSt.</div>
								<div class='cashBookLine_ColC'>Zahlart</div>
								<div class='cashBookLine_ColE'>&nbsp;</div><div class='cashBookLine_ColF'>Bemerkung</div>
								<div class='cclear'></div>
						</div>";

		usort($cashbookResultArray, "compare");

		$sumBetrag = 0;

		for ($i = 0; $i < count($cashbookResultArray); $i++) {
			$dDate = strtotime($cashbookResultArray[$i]['datum']);

			$formDate = date('j.n.Y', $dDate);

			$bBetrag = $cashbookResultArray[$i]['betrag'];
			$ustBetrag = $cashbookResultArray[$i]['ust'];
			$vorstBetrag = $cashbookResultArray[$i]['vorst'];
			if ($vorstBetrag == 0) $vorstBetrag = "&nbsp;";
			else $vorstBetrag = number_format($vorstBetrag, 2, ",", ".");
			if ($ustBetrag == 0) $ustBetrag = "&nbsp;";
			else $ustBetrag = number_format($ustBetrag, 2, ",", ".");
			if ($cashbookResultArray[$i]['zahlart'] == '') $cashbookResultArray[$i]['zahlart'] = "&nbsp;";
			# steuer lässt sich noch nciht formatieren, wahrscheinlich ist das leer und keine zahl
			$cashBookRes .= "<div class='cashBookLine cashBookFont'><div class='cashBookLine_ColA'>" . $formDate . "</div>
												<div class='cashBookLine_ColB'>" . number_format($bBetrag, 2, ",", ".") . "</div>												
												<div class='cashBookLine_ColD'>" . $ustBetrag . "</div>
												<div class='cashBookLine_ColD'>" . $vorstBetrag . "</div>
												<div class='cashBookLine_ColC'>" . $cashbookResultArray[$i]['zahlart'] . "</div>
												<div class='cashBookLine_ColE'>" . $cashbookResultArray[$i]['titel'] . "</div>
												<div class='cashBookLine_ColF'>" . $cashbookResultArray[$i]['bemerkung'] . "</div>
												<div class='cclear'></div>
										</div>";
			$sumBetrag += $cashbookResultArray[$i]['betrag'];
		}

		if ($sumBetrag == 0) $sumBetrag = "&nbsp;";
		else $sumBetrag = number_format($sumBetrag, 2, ",", ".");





		$cashBookRes .= "";

		echo json_encode(array("Success cashbookDetail", $cashBookHeadElem . $cashBookRes));
	} else json_encode(array("Fehler beim Kassenbuch auslesen", $kassabuchId));
}

function getReportCashbook_switch()
{
	if (defined('KASSABUCH_LIZENZ') && strtolower(KASSABUCH_LIZENZ) == 'ja') getReportCashbookLicense();
	else getReportCashbookLight();
}

function getReportCashbookLicense()
{

	#writeLog(basename( __FILE__)." ". __LINE__ , "getReportCashbook 2.00 Lizenz: \n");

	if (isset($_POST['reportTarget']) && strlen($_POST['reportTarget']) > 2) $reportTarget = $_POST['reportTarget'];
	if ($reportTarget == 'exportPDF' || $reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
		if (isset($_POST['cashBookId']) && $_POST['cashBookId'] > 0) {
			$cashBookId = $_POST['cashBookId'];

			$abschlDetails = mysql_fetch_array(mysql_query("SELECT kassenabschl_startId, kassenabschl_endeId, erstellt_datum, benutzer.name AS benutzer_name,
										abschluss_saldo, uebertrag_saldo
									FROM kassenbuch_abschluesse 
									LEFT JOIN benutzer ON benutzer.id = erstellt_von
									WHERE kassenbuch_abschluesse.id = " . $cashBookId . " LIMIT 1"));

			$dDate = strtotime($abschlDetails['erstellt_datum']);
			$erstelltDate = date('j.n.Y', $dDate);

			$kassenabschlStartId = $abschlDetails['kassenabschl_startId'];
			$kassenabschlEndeId = $abschlDetails['kassenabschl_endeId'];
			$kassabuchBetrag = $abschlDetails['abschluss_saldo'] - $abschlDetails['uebertrag_saldo'];
			$reportUser = $abschlDetails['benutzer_name'];

			$pdfData = calculateCasbook($kassenabschlStartId, $kassenabschlEndeId, $reportTarget);



			$taxSumData = array();
			$taxSumData = $pdfData[0];
			if (isset($taxSumData['elemA']) && $taxSumData['elemA'] == 'metaArray') {
				unset($pdfData[0]);
				$pdfData = array_slice($pdfData, 0);
			}
			usort($pdfData, "compare");

			$bonHeight = false;
			$csvHeader = array(
				array('', ''),
				array('Kassabuch', '', '', '',  '', '',  '', ''),
				array('Erstellt am: ', $erstelltDate, '',  '', '',  '', AUSRUCK_KOPFZEILE_1),
				array('von: ', $reportUser, '',  '', '', '', AUSRUCK_KOPFZEILE_2),
				array('Übertrag: ', number_format($abschlDetails['uebertrag_saldo'], 2, ",", "."), '', '',  '', '', AUSRUCK_KOPFZEILE_4),
				array('Abschluss Betrag: ', number_format($abschlDetails['abschluss_saldo'], 2, ",", "."), '', '',  '', '', AUSRUCK_KOPFZEILE_5),
				array(
					'Betrag: ', number_format($kassabuchBetrag, 2, ",", "."), 'Umsatzsteuer',
					number_format($taxSumData['ust'], 2, ",", "."), 'Vorsteuer', number_format($taxSumData['vorst'], 2, ",", ".")
				),
				array('Datum', 'Betrag', 'Ust', 'Vorst', 'Zahlart', 'Buchung', 'Bemerkung'),
				array('Datum', 'Betrag', 'Ust', 'Vorst', 'Zahlart', 'Buchung', 'Bemerkung')		# für pdf, enger gehalten
			);

			$pdfHeader = $csvHeader;



			if ($reportTarget == 'exportPDF') {
				require_once('dopdf.php');

				$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

				$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $taxSumData);

				$saveTheFileTo = "docs/reports/sIT_Report_kassabuch" . date('Ymdhi') . ".pdf";
				$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'kassabuchReport2.0', $bonHeight);
				echo "<a href='" . $returedTarget . "'>Download</a><br/>";
				echo "<input type='hidden' value=' " . $reportTarget . " success' />
							<div id='reportPdfDiv' ><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
			} else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
				$fileUrl = 'docs/reports/kassabuch.csv';
				#	writeLog(basename( __FILE__)." ". __LINE__ , "kassabuch export csv aufgerufen: \n");
				$xHead = array();
				$opCheck = "";
				if ($reportTarget == 'exportExcelCSV') {
					for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
						for ($j = 0; $j < sizeof($csvHeader[$i]); $j++) {
							$opCheck .= $csvHeader[$i][$j] . " - ";
							if (preg_match('/[0-9]+\.[0-9]{3},/', $csvHeader[$i][$j])) {
								$csvHeader[$i][$j] = preg_replace('/\./', '', $csvHeader[$i][$j]);
							}
							$csvHeader[$i][$j] = strip_tags(mb_convert_encoding($csvHeader[$i][$j], 'UTF-16LE', 'UTF-8'));
						}
						array_push($xHead, $csvHeader[$i]);
					}
				} else for ($j = 0; $j < sizeof($csvHeader) - 1; $j++) {
					array_push($xHead, $csvHeader[$j]);
				}

				writeLog(basename(__FILE__) . " " . __LINE__, "header ausgabe check: " . $opCheck . "\n");

				$fp = fopen($fileUrl, 'w');
				//$abschluss_ausgabe_array=$csvHeader;

				$abschluss_ausgabe_array = $pdfData;
				for ($i = 0; $i < count($pdfData); $i++) {
					$pdfData[$i]['betrag'] = number_format($pdfData[$i]['betrag'], 2, ",", "");
					$pdfData[$i]['ust'] = number_format($pdfData[$i]['ust'], 2, ",", "");
					$pdfData[$i]['vorst'] = number_format($pdfData[$i]['vorst'], 2, ",", "");
				}

				$abschluss_ausgabe_array_1 = $xHead;
				$abschluss_ausgabe_array_1 = array_merge($abschluss_ausgabe_array_1, $pdfData);
				foreach ($abschluss_ausgabe_array_1 as $fields) {
					fputcsv($fp, $fields, ";", chr(0));
				}	// we have semicol as seperator and no enclosere, would be last parameter !!
				fclose($fp);

				echo "ExportCSV Success -#-" . $fileUrl;
			}
		}
		return false;
	}
	if (!isset($_SESSION)) {
		session_start();
	}
	#auslesen der kassabuch Abschlüsse offen
	# letzte kassa Abschluss Id in geschlossenen Kassenbuch
	$offeneAbschlOp = "<div class='cashbookHeaderDiv'>";
	$cashBookOp = "";


	$lastAbschl = mysql_fetch_array(mysql_query("SELECT MAX(kassenabschl_endeId) FROM kassenbuch_abschluesse"));


	if ($lastAbschl[0] > 0) {
		$xx = $lastAbschl[0] + 1;
		$abschlStartId = mysql_fetch_array(mysql_query("SELECT id, datum_start, datum_ende FROM kassa_abschluesse WHERE id = " . $xx . ""));
		$stDate = strtotime($abschlStartId['datum_start']);
		$stFormDate = date('j.n.Y H:i', $stDate);
		$endDate = strtotime($abschlStartId['datum_ende']);
		$endFormDate = date('j.n.Y H:i', $endDate);
		$startTxt = "<input class='cashbookStartIpField' type='text' disabled value='Id: " . $abschlStartId['id'] . " " . $stFormDate . " - " . $endFormDate . "' />";
		$openKa = mysql_query("SELECT kassa_abschluesse.id, datum_start, datum_ende FROM kassa_abschluesse
									WHERE kassa_offen = 0 AND id > " . $lastAbschl[0] . "");
		if (mysql_num_rows($openKa) > 0) {

			$offeneAbschlOp .= $startTxt . "<select id='cashbookEndeSelect' class='orange'>
					<option id='selectHeader' class=''>Kassenabschluss wählen</option>";

			while ($offeneAbschluesse = mysql_fetch_array($openKa)) {
				$kassaAbschlId = $offeneAbschluesse['id'];
				$stDate = strtotime($offeneAbschluesse['datum_start']);
				$abschlStartDatum = date('j.n.Y H:i', $stDate);
				$endDate = strtotime($offeneAbschluesse['datum_ende']);
				$abschlEndeDatum = date('j.n.Y H:i', $endDate);
				$offeneAbschlOp .= "<option id='" . $kassaAbschlId . "' >Id: " . $kassaAbschlId . " von: " . $abschlStartDatum . " bis: " . $abschlEndeDatum . "</option>";
			}
			$offeneAbschlOp .= "</select>
				<button class='cashbookCloseBut button_none_float orange' onclick=\"cashbookClose()\">Kassabuch abschließen</button>
				<label for='cashbookCloseNote'>Bemerkung: </label><input type='text' id='cashbookCloseNote' />";
		} else {
			$offeneAbschlOp .= "<p>Keine Kassenabschlüsse für Kassenbuch Abschluss gefunden. </p>";
		}
	} else {
		# es gibt noch keinen kassabuch Abschluss, der ERSTE wir erstellt
		$offeneAbschlStartOp = "";
		$offeneAbschlEndeOp = "";
		$offeneAbschlOp .= "<p>Kein Kassabuch Abschluss gefunden.</p>";
		$startSaldoTxt = "<p><label for='anfangsSaldoKassabuch'>Ausgangs Saldo: </label>
									<input id='anfangsSaldoKassabuch' type='text' disabled value='' />
									<label for='anfangsSaldoKassabuchWechselgeld'>Saldo ist Wechselgeld: </label>
									<input id='anfangsSaldoKassabuchWechselgeld' type='checkbox' checked onchange='setSaldoField(this)' /></p>";
		$openKa = mysql_query("SELECT kassa_abschluesse.id, datum_start, datum_ende FROM kassa_abschluesse WHERE kassa_offen = 0 ");
		if (mysql_num_rows($openKa) > 0) {
			$offeneAbschlStartOp .= "<p><select id='cashbookFirstStartSelect'>
					<optgroup style='max-height:100px;' class='cashbookOptionHightLimit'>
					<option id='selectHeaderStart' class=''>Start Kassenabschluss wählen</option>";


			$offeneAbschlEndeOp .= "<p><select id='cashbookFirstEndeSelect'>
					<optgroup class='cashbookOptionHightLimit'>
					<option id='selectHeaderEnde' class=''>Ende Kassenabschluss wählen</option>";

			while ($offeneAbschluesse = mysql_fetch_array($openKa)) {
				$kassaAbschlId = $offeneAbschluesse['id'];
				$stDate = strtotime($offeneAbschluesse['datum_start']);
				$abschlStartDatum = date('j.n.Y H:i', $stDate);
				$endDate = strtotime($offeneAbschluesse['datum_ende']);
				$abschlEndeDatum = date('j.n.Y H:i', $endDate);
				$offeneAbschlStartOp .= "<option id='" . $kassaAbschlId . "' class=''>Abschl. Id: " . $kassaAbschlId . " " . $abschlStartDatum . " - " . $abschlEndeDatum . "</option>";
				$offeneAbschlEndeOp .= "<option id='" . $kassaAbschlId . "' class=''>Abschl. Id: " . $kassaAbschlId . " " . $abschlStartDatum . " - " . $abschlEndeDatum . "</option>";
			}
			$offeneAbschlStartOp .= "</optgroup></select><p>";
			$offeneAbschlEndeOp .= "</optgroup></select><p>";
			$offeneAbschlOp .= $offeneAbschlStartOp . $offeneAbschlEndeOp . $startSaldoTxt .
				"<label for='cashbookCloseNote'>Bemerkung: </label><input type='text' id='cashbookCloseNote' /><br />
				<button class='cashbookCloseBut button_none_float orange' onclick=\"cashbookClose('firstClose')\">Kassabuch abschließen</button>";
		}
	}
	$offeneAbschlOp .= "</div>";

	$cashBookOp .= $offeneAbschlOp;

	#auslesen der kassabuch Abschlüsse abgeschlossen

	$cashbQl = mysql_query("SELECT kassenbuch_abschluesse.id AS kassabuchId, kassenabschl_startid, kassenabschl_endeid, abschluss_saldo,
									uebertrag_saldo, erstellt_datum, kassa_abschluesse.datum_ende, kassenbuch_abschluesse.bemerkung AS bemerkung, 
									benutzer.name AS user
								FROM kassenbuch_abschluesse
								LEFT JOIN kassa_abschluesse ON kassenabschl_endeid = kassa_abschluesse.id
								LEFT JOIN benutzer ON erstellt_von = benutzer.id");
	$cashBookOp .= "<div class='cB_headRow'><div class='cB_RowA'>Selekt</div><div class='cB_RowA alignC'>Detail</div><div class='cB_RowB'>Erstellt</div>
							<div class='cB_RowC'>Bemerkung</div><div class='cclear'></div></div>";
	while ($cashbRow = mysql_fetch_array($cashbQl)) {
		$cashBookId = $cashbRow['kassabuchId'];
		$kassaAbschlStartId = $cashbRow['kassenabschl_startid'];
		$kassaAbschlEndeId = $cashbRow['kassenabschl_endeid'];
		$kassabschlSaldo = $cashbRow['abschluss_saldo'];
		$uebertragSaldo = $cashbRow['uebertrag_saldo'];
		$cashBookSum = $cashbRow['abschluss_saldo'] - $cashbRow['uebertrag_saldo'];
		$erstDate = strtotime($cashbRow['erstellt_datum']);
		$cbErstDate = date('j.n.Y H:i', $erstDate);
		$cashBookUser = $cashbRow['user'];
		$cashBookNote = $cashbRow['bemerkung'];
		$cashBookOp .= "<div class='cB_dataRow'>
				<div class='cB_RowA'><input type='radio' id='" . $cashBookId . "' name='cashbookCb' class='showCashBookCb' value='cashBookId" . $cashBookId . "' /></div>
				<div class='cB_RowA'>					
					<button class='showCashBookBut' onclick=\"getCashbookDetail(" . $cashBookId . ", " . $kassaAbschlStartId . ", " . $kassaAbschlEndeId . ", " . $kassabschlSaldo . ", " . $uebertragSaldo . ", " . $cashBookSum . ", '" . $cashBookUser . "', '" . $cbErstDate . "')\">
					</button></div><div class='cB_RowB'>" . $cbErstDate . "</div><div class='cB_RowC'>" . $cashBookNote . "</div>
					<div class='cclear'></div>
				</div>";
		#$cashBookOp.="<p>".$cashbRow['erstellt_datum']."</p>";

	}

	if (!$cashbQl) {
		echo "<input type='hidden' value=' display error '/><p>Kassenbuch auslesen Fehler</p>" . mysql_error();
	} else echo "<input type='hidden' value=' display success '/>" . $cashBookOp;

	$zahlungsartenQ = mysql_query("SELECT DISTINCT name from abgeschlossener_bon_zahlung");
	$tResp = "";
	$zahlungsarten_array_summen = array();
	$ein_summe = 0;
	$aus_summe = 0;

	$ueberschrift_array = array();
	$ueberschrift_array_Pdf = array();

	if (!$zahlungsartenQ) $tResp .= "DB Error -> " . mysql_error();
	while ($zahlungsartenR = mysql_fetch_array($zahlungsartenQ)) {
		$za_name = $zahlungsartenR['name'];
		$pdfName = preg_replace(array("/Gutschein /", "/Einlösung/", "/Ausgabe/"), array("GS-", "Einl.", "Ausg."), $zahlungsartenR['name']);
		array_push($ueberschrift_array, $zahlungsartenR['name']);
		array_push($ueberschrift_array_Pdf, $pdfName);
		//echo "ZA=".$zahlungsartenR['name'];
		$zahlungsarten_array_summen[$za_name] = "0";
	}


	#echo "<input type='hidden' value=' display success '/>trallalaaaaaaaaaaaaaaaaa";

}


function getReportCashbookLight()
{

	if (!isset($_SESSION)) {
		session_start();
	}

	writeLog(basename(__FILE__) . " " . __LINE__, "getReportCashbook none Lizenz: \n");
	// Datum von bis rauslesen (wurde eigentlich an das Programm als Post mitgegeben)
	$tableCol = "kassa_abschluesse.datum_start";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];  	// das ist der SQL where string
	$whereInfo = $sqlDateWhere[1];	// Das ist ein String, den man ausgeben kann für den Benutzer

	$tableColEA = "ein_aus_zahlungen.zahlung_erfolgt_datum";
	$sqlDateWhereEA = getReportDateWhere($tableColEA, 'reports');
	$dateWhereEA = $sqlDateWhereEA[0];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;


	$csvHeader = array(
		array('', ''),
		array("Kassabuch "),
		array('Erstellt am: ', date('d m Y H:i'), '', '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
	);
	$ueberschrift_array = array('Abschluß ID', 'Datum', 'Beleg Nr', 'Anmerkung', 'Einzahlung', 'Auszahlung');
	$ueberschrift_array_Pdf = array('Id', 'Datum', 'B-Nr', 'Anmerkung', 'Einzahl.', 'Auszahl.');


	// Zuerst alle verwendeten Zahlungsarten heraussuchen; Hier werden dann gleich die Summen für jede Zahlart summiert
	$zahlungsartenQ = mysql_query("SELECT DISTINCT name from abgeschlossener_bon_zahlung");
	$tResp = "";
	$zahlungsarten_array_summen = array();
	$ein_summe = 0;
	$aus_summe = 0;

	if (!$zahlungsartenQ) $tResp .= "DB Error -> " . mysql_error();
	while ($zahlungsartenR = mysql_fetch_array($zahlungsartenQ)) {
		$za_name = $zahlungsartenR['name'];
		$pdfName = preg_replace(array("/Gutschein /", "/Einlösung/", "/Ausgabe/"), array("GS-", "Einl.", "Ausg."), $zahlungsartenR['name']);
		array_push($ueberschrift_array, $zahlungsartenR['name']);
		array_push($ueberschrift_array_Pdf, $pdfName);
		//echo "ZA=".$zahlungsartenR['name'];
		$zahlungsarten_array_summen[$za_name] = "0";
	}

	array_push($csvHeader, $ueberschrift_array);
	array_push($csvHeader, $ueberschrift_array_Pdf);


	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}
	$pdfHeader = $csvHeader;
	$abschluss_ausgabe_array = array();

	//print_r($zahlungsarten_array_summen);

	// Lege ein Multidemensionales array an, erster Index ist die Abschluss ID und das zweite ist dann die Bezahlart
	// Array ( [1] => Array ( [Bank] => 2.0000 [Bar] => 338.0000 [Gutschein Einlösung] => 184.5000 ) [2] => Array ( [Bar] => 12.0000 ) ) 
	$abschluss_array = array();

	$getZaAbschl = mysql_fetch_array(mysql_query("SELECT MIN(id) AS minId, MAX(id) AS maxId FROM kassa_abschluesse " . $dateWhere . " "));
//echo ("SELECT MIN(id) AS minId, MAX(id) AS maxId FROM kassa_abschluesse " . $dateWhere . " ");
	if (!$getZaAbschl['minId'] > 0) {
		echo "<h3 class=''>Kein Kassenabschluss im selektierten Zeitraum gefunden.</h3>";
		echo "<input type='hidden' value=' display success '/>";
		return false;
	}
	$abschlussQ = mysql_query("SELECT kassa_abschluss_id, bon_erstellt_datum, abgeschlossener_bon_zahlung.name as name, SUM(zahlbetrag) as betrag, kassastand_wirksam, einnahmen_wirksam 
						FROM abgeschlossener_bon_zahlung
						LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_zahlung.bon_id=abgeschlossener_bon.bon_id
						LEFT JOIN zahlungsart ON abgeschlossener_bon_zahlung.name=zahlungsart.name
						WHERE abgeschlossener_bon.kassa_abschluss_id >= " . $getZaAbschl['minId'] . " AND abgeschlossener_bon.kassa_abschluss_id <= " . $getZaAbschl['maxId'] . "
						GROUP BY abgeschlossener_bon.kassa_abschluss_id, name ORDER BY kassa_abschluss_id ASC, name ASC ");
	$checkAbschlId = array();
	while ($abschlussR = mysql_fetch_array($abschlussQ)) {
		$abschluss_array[$abschlussR['kassa_abschluss_id']][$abschlussR['name']] = $abschlussR['betrag'];
		$abschluss_array[$abschlussR['kassa_abschluss_id']]['datum'] = $abschlussR['bon_erstellt_datum'];
	}

	foreach ($abschluss_array as $abschluss_id => $abschluss_zeile) {
		$tmpArray = array($abschluss_id, substr($abschluss_array[$abschluss_id]['datum'], 0, 10), "", "Tageslosung", "", "");

		foreach ($zahlungsarten_array_summen as $zahlart_name => $zahlart_summe) {
			if (isset($abschluss_zeile[$zahlart_name])) {
				array_push($tmpArray, number_format($abschluss_zeile[$zahlart_name], 2, ",", "."));
				$zahlungsarten_array_summen[$zahlart_name] += $abschluss_zeile[$zahlart_name];   // zur jeweiligen Summe dazuzählen
			} else array_push($tmpArray, '');	 # muss ein array eintrag (leer) erfolgen sonst sind die Spalten verschoben.
		}
		array_push($abschluss_ausgabe_array, $tmpArray);
		array_push($checkAbschlId, $abschluss_id);
		$tmpArray = array();
	}
	// Jetzt alle Ein- und Auszahlungen mit diesen Kassaen ID's suchen
	$eaQ = mysql_query("SELECT id, kassa_abschluss_id, zahlung_erfolgt_datum, gesamt_betrag, typ, bemerkung
						FROM ein_aus_zahlungen
						" . $dateWhereEA . " ");
	if (!$eaQ) $tResp .= "DB Error -> " . mysql_error();

	while ($eaR = mysql_fetch_array($eaQ)) {
		$ein = 0;
		$aus = 0;
		if ($eaR['typ'] == 'ein') {
			$ein = $eaR['gesamt_betrag'];
			$ein_summe += $ein;
		} else {
			$aus = $eaR['gesamt_betrag'];
			$aus_summe += $aus;
		}

		if ($reportTarget == 'exportExcelCSV')	$bemerkung = mb_convert_encoding($eaR['bemerkung'], 'UTF-16LE', 'UTF-8');
		else $bemerkung = $eaR['bemerkung'];

		if ($ein != 0) $displayEin = number_format($ein, 2, ",", ".");
		else $displayEin = "";
		if ($aus != 0) $displayAus = number_format($aus, 2, ",", ".");
		else $displayAus = "";

		$tmpArray = array($eaR['kassa_abschluss_id'], substr($eaR['zahlung_erfolgt_datum'], 0, 10), $eaR['id'], $bemerkung, $displayEin, $displayAus);
		foreach ($zahlungsarten_array_summen as $zahlart_name => $zahlart_summe) {
			array_push($tmpArray, "");
		}
		array_push($abschluss_ausgabe_array, $tmpArray);
		$tmpArray = array();

		//$zahlungsarten_array_summen[$za_name]="0";
	}

	function doSort($a, $b)
	{
		if ($a[0] == $b[0]) {
			return $a[2] - $b[2];
		}
		return strnatcmp($a[0], $b[0]);
	}

	usort($abschluss_ausgabe_array, "doSort");

	// ************ Ende Ein- und Auszahlungen

	$footer_array = array("Gesamt", "", "", "", number_format($ein_summe, 2, ",", "."), number_format($aus_summe, 2, ",", "."));
	foreach ($zahlungsarten_array_summen as $zahlart_name => $zahlart_summe) {
		//echo "<div class='repCash_ColG'>".number_format($zahlart_summe,2,",",".")."</div>";
		array_push($footer_array, number_format($zahlart_summe, 2, ",", "."));
	}

	if ($reportTarget == 'screen') {
		// Hier den Header ausgeben 

		echo "<div class='reportHeaderDiv cashBookFont bbold'><h3>Kassabuch" . $whereInfo . "</h3><div class='cclear' ></div></div>
				<div class='bgHead repCashHeadDiv cashBookFont bbold' >";
		echo "<div class='repCash_ColA floatL cashBookFont bbold'>Nr:</div><div class='repCash_ColB_header floatL cashBookFont bbold'>Datum</div>
								<div class='repCash_ColC floatL cashBookFont bbold'>Bel Nr</div><div class='repCash_ColD floatL cashBookFont bbold'>Anmerkung</div>
								<div class='repCash_ColE floatL cashBookFont bbold' style='text-align:justify' >Ein Zahlung</div>
								<div class='repCash_ColF floatL cashBookFont bbold' style='text-align:justify'  >Aus Zahlung</div>
						";

		foreach ($zahlungsarten_array_summen as $zahlart_name => $zahlart_summe) {
			echo "<div class='repCash_ColG floatL cashBookFont bbold'>" . $zahlart_name . "</div>";
		}

		echo "<div class='cclear'></div>";
		echo	"</div>";
		// Header Ende #################

		echo "<input type='hidden' value=' display success '/>"; //.$repOp;	

		// Die einzelnen Zeilen ausgeben
		$cc = 0;
		foreach ($abschluss_ausgabe_array as $line) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			if (!empty($line[3])) $bemerkung = $line[3];
			else $bemerkung = "&nbsp;";
			echo "<div class='repCashLineDiv " . $bg . "' > <div class='repCash_ColA  floatL cashBookFont'>" . $line[0] . "</div>
								<div class='repCash_ColB  floatL cashBookFont'>" . $line[1] . "</div><div class='repCash_ColC  floatL cashBookFont'>&nbsp;" . $line[2] . "</div>
								<div class='repCash_ColD  floatL cashBookFont'>" . $bemerkung . "</div><div class='repCash_ColE  floatL cashBookFont'>&nbsp;" . $line[4] . "</div>
								<div class='repCash_ColF  floatL cashBookFont'>&nbsp;" . $line[5] . "</div>";

			for ($i = 6; $i < count($line); $i++) {
				echo "<div class='repCash_ColG  floatL cashBookFont'>";
				if (empty($line[$i])) echo "&nbsp;";
				else echo $line[$i];
				echo "</div>";
			}
			echo "<div class='cclear'></div>
				</div>";
			$cc++;
		}

		// Ende Zeilen

		// Beginn Footer
		echo "<div class='bgHead repCashFooterDiv'  >";
		echo "<div class='repCash_ColA   floatL cashBookFont bbold'>" . $footer_array[0] . "</div><div class='repCash_ColB   floatL cashBookFont bbold'>" . $footer_array[1] . "&nbsp;</div>
								<div class='repCash_ColC   floatL cashBookFont '>" . $footer_array[2] . "&nbsp;</div>
								<div class='repCash_ColD   floatL cashBookFont bbold'>" . $footer_array[3] . "&nbsp;</div>
								<div class='repCash_ColE   floatL cashBookFont bbold'>" . number_format($ein_summe, 2, ",", ".") . "</div>
									<div class='repCash_ColF   floatL cashBookFont bbold'>" . number_format($aus_summe, 2, ",", ".") . "</div>";
		for ($i = 6; $i < count($footer_array); $i++) {
			echo "<div class='repCash_ColG   floatL cashBookFont bbold'>";
			if (empty($footer_array[$i])) echo "&nbsp;";
			else echo $footer_array[$i];
			echo "</div>";
		}

		echo "<div class='cclear'></div>
				</div>";
		// Ende Footer
	} else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
		$fileUrl = 'docs/reports/kassenbuch.csv';
		$fp = fopen($fileUrl, 'w');
		//$abschluss_ausgabe_array=$csvHeader;

		$abschluss_ausgabe_array_1 = $csvHeader;
		$abschluss_ausgabe_array_1 = array_merge($abschluss_ausgabe_array_1, $abschluss_ausgabe_array);
		foreach ($abschluss_ausgabe_array_1 as $fields) {
			fputcsv($fp, $fields, ";");
		}	// we have semicol as seperator and no enclosere, would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');
		$pdfData = $abschluss_ausgabe_array;
		$pdfFooter = $footer_array;
		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, '');
		//$pdfContent=array( $pdfHeader, $pdfData, $pdfFooter);

		$saveTheFileTo = "docs/reports/sIT_Report_Kassabuch.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'kassabuchReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
					<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%' width=''></div>";
	}
}

function getReportCustomerData()
{

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$repOp = "";
	$customerList = array();

	$listHeader = array(
		"Kundennummer", "Adressnummer", "Firma", "Anrede", "Titel", "Vorname", "Nachname", "Sachbearbeiter", "Strasse 1", "Strasse 2", "Plz",
		"Ort", "Land", "Telefon1", "Telefon2", "email", "Telefax", "Geburtstag"
	);

	array_push($customerList, $listHeader);

	#id kundennummer adressnummer Firma anrede titel vorname nachname sachbearbeiter strasse1 strasse2 plz Ort Land telefon1 telefon2 fax geburtstag	

	$getCustD = mysql_query("SELECT * FROM kunden");
	while ($getCustData = mysql_fetch_array($getCustD)) {
		if (strlen($getCustData['Firma']) > 0) $fa = $getCustData['Firma'] . ", ";
		else $fa = "";
		$repOp .= $fa . $getCustData['vorname'] . " " . $getCustData['nachname'] . " " . $getCustData['strasse1'] . " " . $getCustData['strasse2'] . " 
					" . $getCustData['plz'] . " " . $getCustData['Ort'] . "<br />";

		if ($reportTarget == 'exportExcelCSV') {
			$cData = array(
				$getCustData['kundennummer'], $getCustData['adressnummer'], mb_convert_encoding($getCustData['Firma'], 'UTF-16LE', 'UTF-8'),
				mb_convert_encoding($getCustData['anrede'], 'UTF-16LE', 'UTF-8'), mb_convert_encoding($getCustData['titel'], 'UTF-16LE', 'UTF-8'),
				mb_convert_encoding($getCustData['vorname'], 'UTF-16LE', 'UTF-8'), mb_convert_encoding($getCustData['nachname'], 'UTF-16LE', 'UTF-8'),
				mb_convert_encoding($getCustData['sachbearbeiter'], 'UTF-16LE', 'UTF-8'),  mb_convert_encoding($getCustData['strasse1'], 'UTF-16LE', 'UTF-8'),
				mb_convert_encoding($getCustData['strasse2'], 'UTF-16LE', 'UTF-8'), $getCustData['plz'], mb_convert_encoding($getCustData['Ort'], 'UTF-16LE', 'UTF-8'),
				mb_convert_encoding($getCustData['Land'], 'UTF-16LE', 'UTF-8'), $getCustData['telefon1'], $getCustData['telefon2'],  $getCustData['email'],
				$getCustData['fax'], $getCustData['geburtstag']
			);
		} else {
			$cData = array(
				$getCustData['kundennummer'], $getCustData['adressnummer'], $getCustData['Firma'], $getCustData['anrede'], $getCustData['titel'],
				$getCustData['vorname'], $getCustData['nachname'], $getCustData['sachbearbeiter'], $getCustData['strasse1'], $getCustData['strasse2'],
				$getCustData['plz'], $getCustData['Ort'], $getCustData['Land'], $getCustData['telefon1'], $getCustData['telefon2'],  $getCustData['email'],
				$getCustData['fax'], $getCustData['geburtstag']
			);
		}
		array_push($customerList, $cData);
	}



	if ($reportTarget == 'screen') echo "<input type='hidden' value='display success' />" . $repOp;

	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {


		$fileUrl = 'docs/reports/report_kundendaten.csv';

		$fp = fopen($fileUrl, 'w');

		foreach ($customerList as $fields) {
			fputcsv($fp, $fields, ";");
		}	// we have semicol as seperator and no enclosere, would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	} else echo "<input type='hidden' value='display success' /><p>Ausgabe Target nicht definiert.</p>";
}

function getReportDataOffeneLieferscheine()
{

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$tableCol = "lieferschein_referenz.lieferschein_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if ($dateWhere != "") $dateWhere = str_replace("WHERE", "AND", $dateWhere);

	$csvHeader = array(
		array('', ''),
		array('Lieferscheine offen'),
		array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '',),
		array('Datum', 'A/L Nr', 'Kunde', 'xx')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		#	if($reportTarget== 'exportExcelCSV')	$tmp=mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;
	preg_match('/\d+px | \d+pt/', SCHRIFT_AUSDRUCK_PDF, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0];
	$lineSpace = $pdfFontSize * .5;

	$repOp = "<div class='lsBgHead'>
						<div class='reportLsHeadCol_A'  >Datum</div>
						<div class='reportLsHeadCol_B' >Auftr/Ls Nr:</div>
						<div class='reportLsHeadCol_C' ></div>
						<div class='reportLsHeadCol_D' ></div>
						<div class='reportLsHeadCol_E' >Kunde</div>
						<div class='cclear'></div>
					</div> ";

	$totalLsValue = 0;
	$pdfData = array();
	$bonHeight = 0;
	$xQl = mysql_query("SELECT lieferschein_id, auftrags_nr, kunden_id, lieferschein_erstellt_datum
							FROM lieferschein_referenz 
							WHERE geloescht <> 1
							" . $dateWhere . "
							ORDER BY lieferschein_id ASC");

	while ($lsRow = mysql_fetch_array($xQl)) {
		$bonHeight += 10;    # höhe für jeden Lieferscheinheader
		$lsRefId = $lsRow['lieferschein_id'];
		if ($lsRow['kunden_id'] > 0) {
			$kdData = mysql_fetch_array(mysql_query("SELECT Firma, vorname, nachname FROM kunden WHERE id = " . $lsRow['kunden_id'] . " "));

			if (strlen($kdData['vorname']) > 0 && strlen($kdData['nachname']) > 0) $kdName = $kdData['vorname'] . " " . $kdData['nachname'];
			else if (strlen($kdData['nachname']) > 0 && (strlen($kdData['vorname']) == 0 || $kdData['vorname'] == false)) $kdName = $kdData['nachname'];
			else if (strlen($kdData['vorname']) > 0 && (strlen($kdData['nachname']) == 0 || $kdData['nachname'] == false)) $kdName = $kdData['vorname'];
			else $kdName = "";

			if (strlen($kdData[0]) > 0 && strlen($kdName) > 0) {
				$displKd = "<div class='reportLsHeadCol_E' >" . $kdData[0] . ", " . $kdName . "</div>";
				$displKdPdf = $kdData[0] . ", " . $kdName;
			} else if (strlen($kdData[0]) > 0 && strlen($kdName) == 0) {
				$displKd = "<div class='reportLsHeadCol_E' >" . $displKd = $kdData[0] . "</div>";
				$displKdPdf = $kdData[0];
			} else if (strlen($kdData[0]) == 0 && strlen($kdName) > 0) {
				$displKd = "<div class='reportLsHeadCol_E' >" . $displKd = $kdName . "</div>";
				$displKdPdf = $kdName;
			} else {
				$displKd = "<div class='reportLsHeadCol_E' ></div>";
				$displKdPdf = "";
			}
		} else {
			$displKd = "<div class='reportLsHeadCol_D' ></div>";
			$displKdPdf = "";
		}
		$lsProd = "";
		$lsTmpVal = 0;
		$pdfProdData = array();

		$lsData = mysql_query("SELECT PRICESELL, tax_rate, stueck, printname FROM lieferschein WHERE lieferschein_id = " . $lsRefId . " ");

		while ($lsDataR = mysql_fetch_array($lsData)) {
			#	$xOp.="<p>Lieferschein Summe: ".number_format($lsDataR['lsValue'], 2, ",", ".")." </p>";
			$bonHeight += $lineSpace;				# höhe für jede Lieferschein produkt Zeile
			$prodLineVal = ($lsDataR['PRICESELL'] * (1 + $lsDataR['tax_rate'])) * $lsDataR['stueck'];		# Brutto Summe auf Artikel Zeile
			$lsTmpVal += $prodLineVal;


			$lsProd .= "<div class='reportLsCol_A' >" . number_format($lsDataR['stueck'], 1, ",", ".") . "</div>
							<div class='reportLsCol_B' >" . $lsDataR['printname'] . "</div>
								<div class='reportLsCol_C' >" . number_format($prodLineVal, 2, ",", ".") . "</div><div class='cclear'></div>";

			#    pdf Product data --------------------------------------------
			$pdfTmpPrData = array(number_format($lsDataR['stueck'], 1, ",", "."), $lsDataR['printname'], number_format($prodLineVal, 2, ",", "."));
			array_push($pdfProdData, $pdfTmpPrData);
			$pdfTmpPrData = array();
			#    pdf Product data END --------------------------------------------
		}
		#	$lsVal=number_format($lsTmpVal, 2, ",", ".");			# Lieferschein Summe Brutto
		$lsProd .= "<div class='reportLsCol_B_2' >Lieferschein " . $lsRow['lieferschein_id'] . " Summe: </div>
								<div class='reportLsCol_C_2' >" . number_format($lsTmpVal, 2, ",", ".") . "</div><div class='cclear'></div>";


		$totalLsValue += $lsTmpVal;								# summieren der Lieeferschein Summen 
		$repOp .= "<div class='reportLsHeadDiv'>
						<div class='reportLsHeadCol_A' >" . date('Y-m-d', strtotime($lsRow['lieferschein_erstellt_datum'])) . "</div>
						<div class='reportLsHeadCol_B' >" . $lsRow['auftrags_nr'] . " / " . $lsRow['lieferschein_id'] . "</div>
						<div class='reportLsHeadCol_C' ></div>
						<div class='reportLsHeadCol_D' ></div>
							" . $displKd . "<div class='cclear'></div>
					</div> " . $lsProd;
		#    pdf data --------------------------------------------

		$pdfTmpData = array(
			date('Y-m-d', strtotime($lsRow['lieferschein_erstellt_datum'])), $lsRow['auftrags_nr'] . " / " . $lsRow['lieferschein_id'],
			$displKdPdf, $pdfProdData, number_format($lsTmpVal, 2, ",", ".")
		);
		array_push($pdfData, $pdfTmpData);
		$pdfTmpData = array();
		#	pdf data end -----------------------------------------


	}

	$repOp .= "<div class='lsBgHead'><div class='reportLsHeadColSum_A' >Summe Lieferscheine</div>
										<div class='reportLsHeadCol_D' >" . number_format($totalLsValue, 2, ",", ".") . " </div><div class='cclear' ></div>
				</div>";

	$sumArray = array(number_format($totalLsValue, 2, ",", "."));
	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.


	if ($reportTarget == 'screen') echo "<input type='hidden' value='display success' />" . $repOp;

	else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Lieferscheine.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'lieferscheineReport', $bonHeight);
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
					<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}

function getReportWorkingHour()
{


	$tableCol = "arbeitszeit_schreiben.datum";
	$sqlDateWhere = getReportWorkDateWhere($tableCol, 'reports');

	$dateWhere = "";
	$whereInfo = "";
	if (isset($sqlDateWhere))
	{
		$dateWhere = $sqlDateWhere[0];
		$whereInfo = $sqlDateWhere[1];
	}

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$userid = 0;
	if (isset($_POST['userID']) && $_POST['userID']) 
		$userid = $_POST['userID'];
	
	$repOp = "<div class='reportHeaderDiv'><h3>Auswertung Arbeitszeiten</h3><div class='cclear' ></div></div>
						<div class='bgHead repCatLineDiv' >
							<div class='repX_ColA'>Benutzer</div>
							<div class='repX_ColA'>Datum</div>
							<div class='repX_ColA'>Von</div>
							<div class='repX_ColA'>Bis</div>
							<div class='repX_ColA'>Von</div>
							<div class='repX_ColA'>Bis</div>
								<div class='cclear'></div>
						</div>";

	$csvHeader = array(
		array('', ''),
		array('Arbeitszeiten', '',  '', "Auswertung Arbeitszeiten", '', '',  '',   ''),
		array('Datum: ', date('Y-m-d'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array(' ', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '',),
		array('Benutzer', 'Absenz', 'Datum', 'Von', 'Bis', 'Von', 'Bis')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	if ( $userid == 0)
	{
			
			$repOp .= "<div>Bitte einen Benutzer auswählen.</div>";
			
	}

	$repQl = mysql_query("SELECT absenz_name,benutzer.name as benutzer,datum,az_beginn,az_ende,az_beginn2,az_ende2
								FROM arbeitszeit_schreiben
								LEFT JOIN benutzer ON arbeitszeit_schreiben.benutzer_id=benutzer.id
								$dateWhere AND benutzer.id = ".$userid."
								GROUP BY absenz_name,datum, benutzer, name
								");

	
	$sumCash = 0;
	$pdfData = array();
	$absenz_name = null;
	$sumString = 0;
	while ($repQl != null && $dataQl = mysql_fetch_array($repQl)) {
		
		$sumUserTime = false;
		if (is_null($absenz_name) or ($absenz_name != $dataQl['absenz_name']))
		{
			if (!is_null($absenz_name))
			{
				$repOp .= "<div class='repCustLineDiv repSumLine'>
						<div class='repX_ColA'>Gesamt ".$absenz_name." </div>
						<div class='repX_ColA'>".number_format($sumCash, 2 , ",", ".")." Stunden</div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='cclear'></div>
					</div>";
					$sumString += $sumCash;
					$sumCash = 0;
			}

			$bg = 'bgB';
			$absenz_name = $dataQl['absenz_name'];
			$repOp .= "<div class='" . $bg . " repTotalLineDiv' >
							<div class='classReportUsers'>" . $dataQl['absenz_name'] . "</div>			
							<div class='cclear'></div>
						</div>";

		}
		$bg = 'bgA';
		$repOp .= "<div class='" . $bg . " repTotalLineDiv' >
								<div class='repX_ColA'>" . $dataQl['benutzer'] . "</div>
								<div class='repX_ColA'>" . $dataQl['datum'] . "</div>
								<div class='repX_ColA'>" . $dataQl['az_beginn'] . "</div>
								<div class='repX_ColA'>" . $dataQl['az_ende'] . "</div>
								<div class='repX_ColA'>" . $dataQl['az_beginn2'] . "</div>
								<div class='repX_ColA'>" . $dataQl['az_ende2'] . "</div>
								<div class='cclear'></div>
						</div>";

		$beginn = strtotime($dataQl['az_beginn']);
		$ende = strtotime($dataQl['az_ende']);

		$beginn2 = strtotime($dataQl['az_beginn2']);
		$ende2 = strtotime($dataQl['az_ende2']);
		$sumCash += ($ende - $beginn)/60/60;
		$sumCash += ($ende2 - $beginn2)/60/60;

		
			
		$pdfTmpData = array($dataQl['benutzer'], $absenz_name, $dataQl['datum'], $dataQl['az_beginn'],$dataQl['az_ende'],$dataQl['az_beginn2'],$dataQl['az_ende2']);
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		
	}
	
	if ($sumCash > 0)
			{
				$repOp .= "<div class='repCustLineDiv repSumLine'>
						<div class='repX_ColA'>Gesamt ".$absenz_name."</div>
						<div class='repX_ColA'>".number_format($sumCash, 2 , ",", ".")." Stunden</div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='repX_ColA'></div>
						<div class='cclear'></div>
					</div>";
					$sumString += $sumCash;
					$sumCash = 0;
					
			}
			$sumString += $sumCash;

	$sumArray = array($sumString);

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp ;

	else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');
		
		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Arbeitszeiten.pdf";
		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'workingHourReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='pdfFuzzi'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}

}
function getReportSellerPayment()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	if (isset($_POST['abschlId']) && $_POST['abschlId'] > 0) $abschlId = $_POST['abschlId'];
	else {
		echo "<input type='hidden' value=' display success />Abschluss Id nicht erkannt. ";
		return false;
	}

	$repOp = "<div class='reportHeaderDiv'><h3>Auswertung Kassenabschluss, Verkäufer und Zahlungsarten</h3><div class='cclear' ></div></div>
						<div class='bgHead repCatLineDiv' >
							<div class='repSelPaym_ColA'>Verkäufer</div>
							<div class='repSelPaym_ColB'>Zahlungsarten</div>
							<div class='repSelPaym_ColC'>Betrag</div>
							<div class='repSelPaym_ColD'>Zahlung</div>
							
								<div class='cclear'></div>
						</div>";

	$csvHeader = array(
		array('', ''),
		array('Report Umsatz Benutzer Zahlung', '',  '', "Auswertung Kassenabschluss, Verkäufer und Zahlungsarten", '', '',  '',   ''),
		array('Erstellt am: ', date('Y-m-d H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array('Kassenabschluss Id: ' . $abschlId, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '',),
		array('Verkäufer', 'Zahlungsarten', 'Betrag', '', '', '', '', '', '')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;


	$repQl = mysql_query("SELECT benutzer.name as benutzer, abgeschlossener_bon_zahlung.name as name, SUM(zahlbetrag) as betrag
								FROM abgeschlossener_bon_zahlung
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_zahlung.bon_id=abgeschlossener_bon.bon_id
								LEFT JOIN benutzer ON abgeschlossener_bon.verkaufer_id=benutzer.id
								WHERE kassa_abschluss_id=" . $abschlId . " GROUP BY benutzer, name
								");


	$cc = 0;
	$sumCash = 0;
	$pdfData = array();
	while ($dataQl = mysql_fetch_array($repQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$repOp .= "<div class='" . $bg . " repTotalLineDiv' >
								<div class='repSelPaym_ColA'>" . $dataQl['benutzer'] . "</div>
								<div class='repSelPaym_ColB'>" . $dataQl['name'] . "</div>
								<div class='repSelPaym_ColC'>" . number_format($dataQl['betrag'], 2, ",", ".") . "</div>
								
								<div class='cclear'></div>
						</div>";

		#    pdf data --------------------------------------------
		#	$pdfBen=$dataQl['benutzer']; 
		#	$pdfName=$dataQl['name']; 
		$pdfTmpData = array($dataQl['benutzer'], $dataQl['name'], number_format($dataQl['betrag'], 2, ",", "."),);
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	

		$cc++;
		$sumCash += $dataQl['betrag'];
	}

	$sumArray = array($sumCash);

	$sumLine = "<div class='repSumLine repCatLineDiv' >
							<div class='repSelPaym_ColA'>Gesamt</div>
							<div class='repSelPaym_ColB'></div>
							<div class='repSelPaym_ColC'>" . number_format($sumCash, 2, ",", ".") . "</div>
							<div class='repSelPaym_ColD'></div>
							
								<div class='cclear'></div>
						</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;

	else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');
		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Verkaeufer_zahlung.pdf";
		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'sellerReportPayment');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='pdfFuzzi'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}



function getReportSeller()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	#	excludeSorno

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	if (isset($_POST['excludeSorno']) && $_POST['excludeSorno'] == "exclude") {
		$excludeSornoStrg = "storno=0";
		$outputTarget = "report_seller_excl_storno";
	} else {
		$excludeSornoStrg = "";
		$outputTarget = "report_seller";
	}

	if (strlen($dateWhere) > 5 && strlen($excludeSornoStrg) > 5) {
		$whereClause = $dateWhere . " AND " . $excludeSornoStrg;
		$reportSellerHead = "Umsatz je Verkäufer ";
	} else if (strlen($dateWhere) > 5 && strlen($excludeSornoStrg) < 2) {
		$whereClause = $dateWhere;
		$reportSellerHead = "Umsatz je Verkäufer – Stornobuchungen unberücksichtigt ";
	} else if (strlen($dateWhere) < 2 && strlen($excludeSornoStrg) > 5) {
		$whereClause = "WHERE " . $excludeSornoStrg;
		$reportSellerHead = "Umsatz je Verkäufer ";
	} else {
		$whereClause = "";
		$reportSellerHead = "Umsatz je Verkäufer – Stornobuchungen unberücksichtigt ";
	}



	$repOp = "<div class='reportHeaderDiv'><h3>" . $reportSellerHead . $whereInfo . "</h3><div class='cclear' ></div><div class='cclear' ></div></div>
						<div class='bgHead repCustLineDiv' ><div class='repCust_ColA'>Firma / Name</div><div class='repCust_ColC'>Anzahl</div>
								<div class='repCust_ColD'>Gesamt Netto</div><div class='repCust_ColD'>Gesamt Brutto</div><div class='cclear'></div>
						</div>";
	$csvHeader = array(
		array('', ''),
		array($reportSellerHead),
		array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '',),
		array('Name Verkäufer', 'Anzahl Rechungen', 'Gesamt Netto', 'Gesamt Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$xQl = mysql_query("SELECT abgeschlossener_bon.verkaufer_id, benutzer.name, SUM(stueck) AS anzahl, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) AS gesamtpreis 
								FROM abgeschlossener_bon_produkte 
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
								LEFT JOIN taxes ON taxes.ID=taxcat
								LEFT JOIN benutzer on benutzer.id=verkaufer_id
								" . $whereClause . "
								GROUP by verkaufer_id");

	$sellerList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($sellerList, $csvHeader[$i]);
	}

	$pdfData = array();
	$cc = 0;
	$sumQty = 0;
	$sumNett = 0;
	$sumBrutt = 0;

	while ($xrQl = mysql_fetch_array($xQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';

		$teilB = mysql_fetch_array(mysql_query("SELECT * FROM abgeschlossener_bon_zahlung "));

		if ($xrQl['verkaufer_id'] == 0) $xrQl['name'] = "Rechnungen nicht zugeordnet";
		$repOp .= "<div class='repCustLineDiv " . $bg . "'><div class='repCust_ColA'>" . $xrQl['name'] . "</div><div class='repCust_ColC'>" . number_format($xrQl['anzahl'], 0, ",", ".") . "</div>
									<div class='repCust_ColD'>" . number_format($xrQl['gesamt_netto'], 2, ",", ".") . "</div>
									<div class='repCust_ColD'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div><div class='cclear'></div>
						</div>";
		$nName = strip_tags(mb_convert_encoding($xrQl['name'], 'UTF-16LE', 'UTF-8'));
		$tmpArray = array($nName, number_format($xrQl['anzahl'], 0, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));

		array_push($sellerList, $tmpArray);
		$tmpArray = array();
		#    pdf data --------------------------------------------
		$pdfName = $xrQl['name'];
		$pdfTmpData = array($pdfName, number_format($xrQl['anzahl'], 0, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------

		$cc++;
		$sumQty += $xrQl['anzahl'];
		$sumNett += $xrQl['gesamt_netto'];
		$sumBrutt += $xrQl['gesamtpreis'];
	}

	$sumQty = number_format($sumQty, 1, ",", "");
	$sumNett = number_format($sumNett, 2, ",", ".");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");

	$sumArray = array($sumQty, $sumNett, $sumBrutt);

	$sumLine = "<div class='repCustLineDiv repSumLine'><div class='repCust_ColA'>Gesamt</div>
								<div class='repCust_ColC'>" . $sumQty . "</div><div class='repCust_ColD'>" . $sumNett . "</div>
								<div class='repCust_ColD'>" . $sumBrutt . "</div><div class='cclear'></div>
						</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;

	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($sellerList, array('', '', '', ''));
		array_push($sellerList, array('Gesamt', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/report_nach_kunde.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($sellerList as $fields) {
			fputcsv($fp, $fields, ";");
		}	// we have semicol as seperator and no enclosere, would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');
		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Verkaeufer.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'sellerReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}



// Alle hergeschenkten Artikel
function getReportFreeRev()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon_frei.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];


	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$repOp = "<div class='reportHeaderDiv'><h3>Auswertung Freie Artikel" . $whereInfo . "</h3><div class='cclear' ></div></div>
						<div class='bgHead repCustLineDiv' ><div class='repTotal_ColA cashbookFontSize'>Bon</div><div class='repTotal_ColB'>Ab.</div>
								<div class='repTotal_ColC'>Datum</div><div class='repFree_ColC'>Artikel</div><div class='repTotal_ColCt'>Tisch</div>
								<div class='repFree_ColD'>Stk.</div>
								<div class='repFree_ColE'>Netto</div>
								<div class='repFree_ColE'>Steuer</div><div class='repFree_ColE'>Brutto</div><div class='repTotal_ColG'>Summe</div>
								<div class='cclear'></div>
						</div>";

	$csvHeader = array(
		array('', ''),
		array('', '',  '', "Auswertung Freie Artikel", '', '',  '',   ''),
		array('', '',  '', 'Erstellt am: ' . date('j.m.Y H:i'), '',  '', '', AUSRUCK_KOPFZEILE_1),
		array('', '',  '', 'Erstellt von:' . $_SESSION["userName"],  '', '', '', AUSRUCK_KOPFZEILE_2),
		array('', '', '', $whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', '', '',  '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		array('Bon Nr.', 'Abschl.', 'Datum', 'Artikel', 'Tisch', 'Stückzahl', 'Netto Preis', 'Steuer', 'Brutto Preis', 'Summe'),
		array('Bon', 'Abs.', 'Datum', '*Artikel - Tisch', 'Stk.', 'Netto', 'MwSt', 'Brutto', 'Summe')		# für pdf, enger gehalten
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;


	$xQl = mysql_query("SELECT abgeschlossener_bon_frei.bon_id AS tickets_id, abgeschlossener_bon_frei.bon_erstellt_datum AS datum, 
								abgeschlossener_bon_produkte_frei.PRINTNAME AS produkt_name, abgeschlossener_bon_frei.kassa_abschluss_id, stueck, PRICESELL, 
								taxes.RATE AS tax_rate, PRICESELL*(1+tax_rate) AS brutto, PRICESELL*(1+tax_rate)*stueck AS gesamtpreis, tischName 
								FROM abgeschlossener_bon_produkte_frei 
								LEFT JOIN abgeschlossener_bon_frei ON abgeschlossener_bon_produkte_frei.bon_id=abgeschlossener_bon_frei.bon_id
								LEFT JOIN tische ON abgeschlossener_bon_frei.gastro_tisch_id = tische.id 
								LEFT JOIN taxes ON taxes.ID=taxcat " . $dateWhere . "");

	$revenueList = array();
	#  letztes Header Array wird für PDF verwendet, deshalb hier für csv Export ausgelassen "-1"
	for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
		array_push($revenueList, $csvHeader[$i]);
	}

	$pdfData = array();
	$cc = 0;
	$sumQty = 0;
	$sumBrutt = 0;

	while ($xrQl = mysql_fetch_array($xQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		if ($xrQl['tax_rate'] > 0) $tax = $xrQl['tax_rate'] * 100 . "%";
		else $tax = number_format($xrQl['tax_rate'], 0, "", "") . "&nbsp;";
		#	$dDate=date("Ymd-H:i", strtotime($xrQl['datum']) );
		$dDate = date("Y-m-d H:i", strtotime($xrQl['datum']));
		$dDateHtml = date("Y-m-d", strtotime($xrQl['datum']));
		if (count($xrQl['tischName']) > 0) $tischN = $xrQl['tischName'];
		else $tischN = "&nbsp;";
		$repOp .= "<div class='repTotalLineDiv " . $bg . "'><div class='repTotal_ColA'>" . $xrQl['tickets_id'] . "</div>
											<div class='repTotal_ColB'>" . $xrQl['kassa_abschluss_id'] . "</div>
											<div class='repTotal_ColC'>" . $dDateHtml . "</div>
											<div class='repFree_ColC'>" . $xrQl['produkt_name'] . "</div>
											<div class='repTotal_ColCt'>" . $tischN . "</div>	
											<div class='repFree_ColD'>" . number_format($xrQl['stueck'], 1, ",", ".") . "</div>
											<div class='repFree_ColE'>" . number_format($xrQl['PRICESELL'], 2, ",", ".") . "</div>
											<div class='repFree_ColE'>" . $tax . "</div>
											<div class='repFree_ColE'>" . number_format($xrQl['brutto'], 2, ",", ".") . "</div>
											<div class='repTotal_ColH'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div>
									<div class='cclear'></div>
						</div>";
		if ($reportTarget == 'exportExcelCSV') {
			$prodName = strip_tags(mb_convert_encoding($xrQl['produkt_name'], 'UTF-16LE', 'UTF-8'));
			$tischName = strip_tags(mb_convert_encoding($xrQl['tischName'], 'UTF-16LE', 'UTF-8'));
		} else {
			$prodName = $xrQl['produkt_name'];
			$tischName = $xrQl['tischName'];
		}
		$tmpArray = array(
			$xrQl['tickets_id'], $xrQl['kassa_abschluss_id'], $dDate,  $prodName, $tischName, number_format($xrQl['stueck'], 1, ",", "."),
			number_format($xrQl['PRICESELL'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", ".")
		);
		array_push($revenueList, $tmpArray);
		$tmpArray = array();
		#    pdf data --------------------------------------------
		#	$pdfFirma=iconv('UTF-8', 'ASCII//TRANSLIT', $xrQl['firma']); 
		$pdfprodName = $xrQl['produkt_name'];

		$pdfTmpData = array(
			$xrQl['tickets_id'], $xrQl['kassa_abschluss_id'], $dDate,  $pdfprodName, number_format($xrQl['stueck'], 1, ",", "."),
			number_format($xrQl['PRICESELL'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
			number_format($xrQl['gesamtpreis'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tischN)
		);

		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();

		#	pdf data end -----------------------------------------

		$cc++;
		$sumQty += $xrQl['stueck'];
		$sumBrutt += $xrQl['gesamtpreis'];
	}

	$sumQty = number_format($sumQty, 1, ",", "");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");
	$sumArray = array($sumQty, "", $sumBrutt);

	$sumLine = "<div class='repCustLineDiv repSumLine' ><div class='repTotal_ColA cashbookFontSize'>Gesamt</div><div class='repTotal_ColB'>&nbsp;</div>
								<div class='repTotal_ColC'>&nbsp;</div><div class='repFree_ColC'>&nbsp;</div><div class='repTotal_ColCt'>&nbsp;</div>
								<div class='repFree_ColD'>" . $sumQty . "</div><div class='repFree_ColE'>&nbsp;</div>
								<div class='repFree_ColE'>&nbsp;</div><div class='repFree_ColE'>&nbsp;</div><div class='repTotal_ColH'>" . $sumBrutt . "</div>
								<div class='cclear'></div>
						</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;
	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($revenueList, array('', '', '', '', '', '', ''));
		array_push($revenueList, array('', 'Gesamt', '', '', '', $sumQty, '', '', $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/report_total.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($revenueList as $fields) {
			fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
		}

		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kunden.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'totalReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}


function getReportTotalUserPayment()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$userid = 0;
	$userNamePost = '';
	if (isset($_POST['userID'])) $userid = $_POST['userID'];
	if (isset($_POST['userName'])) $userNamePost = $_POST['userName'];

	$dateWhere = "";
	$whereInfo = "";
	if ( isset($sqlDateWhere[0]))
		$dateWhere .= $sqlDateWhere[0];
	if( isset($sqlDateWhere[0]) && $sqlDateWhere[0] == "")
		$dateWhere .= "WHERE 1=1";

	if ( isset($sqlDateWhere[1]))
		$whereInfo .= $sqlDateWhere[1];

	if($userid != 'all')
		$dateWhere .= " AND abgeschlossener_bon_produkte.verkaeufer_id = ".$userid;

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	
	$reportUser = $_SESSION["userName"];
	

	
		$addHeader = "";
		$repColCc = "repTotal_ColCc";
		$repColD = "repTotal_ColD";
		$csvHead = array('Bon Nr.', 'Abschl.', 'Datum', 'Artikel', 'Stückzahl', 'Netto Preis', 'Steuer', 'Brutto Preis', 'Summe', 'Verkäufer');
	

	$repOp = "<div class='reportLDiv'><h3>Auswertung Produkte von Benutzer ".$userNamePost." " . $whereInfo . "</h3><div class='cclear' ></div></div>
						<div class='bgHead repCustLineDiv' ><div class='repTotal_ColA'>Bon</div><div class='repTotal_ColB'>Ab.</div>
								<div class='repTotal_ColC'>Datum</div>
								<div class='repTotal_ColC'>Verkäufer</div>
								<div class='" . $repColCc . "'>Artikel</div>
								<div class='" . $repColD . "'>Menge</div>
								<div class='repTotal_ColE'>Netto</div>
								<div class='repTotal_ColF'>Steuer</div><div class='repTotal_ColG'>Brutto</div><div class='repTotal_ColG'>Summe</div>
								" . $addHeader . "
								<div class='cclear'></div>
						</div>";


	$csvHeader = array(
		array('', ''),
		array('', '',  '', "Auswertung Produkte von Benutzer '.$userNamePost.'", '', '',  '',   ''),
		array('', '',  '', 'Erstellt am: ' . date('j.n.Y H:i'), '',  '', '', AUSRUCK_KOPFZEILE_1),
		array('', '',  '', 'Erstellt von: ' . $reportUser,  '', '', '', AUSRUCK_KOPFZEILE_2),
		array('', '', '', $whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', '', '',  '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		$csvHead,
		array('Bon', 'Abs.', 'Datum', 'Artikel', 'Stk.', 'Netto', 'MwSt', 'Brutto', 'Summe')		# für pdf, enger gehalten
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	preg_match('/\d+px | \d+pt/', SCHRIFT_AUSDRUCK_PDF, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0];
	$lineSpace = $pdfFontSize * .5;

		$xQl = mysql_query("SELECT abgeschlossener_bon.bon_id AS bon_nr, abgeschlossener_bon.bon_erstellt_datum AS datum, 
                                         abgeschlossener_bon_produkte.PRINTNAME AS produkt_print_name, abgeschlossener_bon.kassa_abschluss_id, 
										 stueck, PRICESELL AS netto, taxes.RATE AS tax_rate, PRICESELL*(1+tax_rate) AS brutto, 
										 PRICESELL*(1+tax_rate)*stueck AS gesamtpreis, benutzer.name AS verkaufer, 
										 GROUP_CONCAT(abgeschlossener_bon_zahlung.Name) AS zahlart 
                                         FROM abgeschlossener_bon_produkte 
                                         LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
                                         LEFT JOIN taxes ON taxes.ID=taxcat 
                                         LEFT JOIN benutzer ON  abgeschlossener_bon_produkte.verkaeufer_id = benutzer.id 
                                         LEFT JOIN abgeschlossener_bon_zahlung ON abgeschlossener_bon_produkte.bon_id = abgeschlossener_bon_zahlung.bon_id
										" . $dateWhere . "
										GROUP by abgeschlossener_bon_produkte.ID ");

		$revenueList = array();
		#  letztes Header Array wird für PDF verwendet, deshalb hier für csv Export ausgelassen "-1"
		for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
			array_push($revenueList, $csvHeader[$i]);
		}

		$pdfData = array();
		$cc = 0;
		$sumQty = 0;
		$sumBruttSum = 0;
		$sumNett = 0;
		$bonHeight = 0;


		while ($xrQl = mysql_fetch_array($xQl)) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			if ($xrQl['tax_rate'] > 0) $tax = $xrQl['tax_rate'] * 100 . "%";
			else $tax = number_format($xrQl['tax_rate'], 0, "", "") . "&nbsp;";
			$dDate = date("Y-m-d H:i", strtotime($xrQl['datum']));
			$dDateHtml = date("Y-m-d", strtotime($xrQl['datum']));
			$zaCol = "";
			
			$repOp .= "<div class='repTotalLineDiv " . $bg . "'><div class='repTotal_ColA'>" . $xrQl['bon_nr'] . "</div>
												<div class='repTotal_ColB'>" . $xrQl['kassa_abschluss_id'] . "</div>
												<div class='repTotal_ColC'>" . $dDateHtml . "</div>
												<div class='repTotal_ColC'>" . $xrQl['verkaufer'] . "</div>
												<div class='" . $repColCc . "'>" . $xrQl['produkt_print_name'] . "</div>												
												<div class='" . $repColD . "'>" . number_format($xrQl['stueck'], 1, ",", ".") . "</div>
												<div class='repTotal_ColE'>" . number_format($xrQl['netto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColF'>" . $tax . "</div>
												<div class='repTotal_ColG'>" . number_format($xrQl['brutto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColH'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div>
												" . $zaCol . "
										<div class='cclear'></div>
							</div>";
			if ($reportTarget == 'exportExcelCSV') {
				$prodName = strip_tags(mb_convert_encoding($xrQl['produkt_print_name'], 'UTF-16LE', 'UTF-8'));
				$verkaufer = strip_tags(mb_convert_encoding($xrQl['verkaufer'], 'UTF-16LE', 'UTF-8'));
				$zahlArt = strip_tags(mb_convert_encoding($xrQl['zahlart'], 'UTF-16LE', 'UTF-8'));
			} else {
				$prodName = $xrQl['produkt_print_name'];
				$verkaufer = $xrQl['verkaufer'];
				$zahlArt = $xrQl['zahlart'];
			}


			$tmpArray = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $prodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $verkaufer
			);


			array_push($revenueList, $tmpArray);
			$tmpArray = array();

			#    pdf data --------------------------------------------
			#	$pdfFirma=iconv('UTF-8', 'ASCII//TRANSLIT', $xrQl['firma']); 
			$pdfprodName = $xrQl['produkt_print_name'];

			$pdfTmpData = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $pdfprodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $verkaufer
			);

			array_push($pdfData, $pdfTmpData);
			$pdfTmpDat = array();

			$bonHeight += $lineSpace;

			#	pdf data end -----------------------------------------

			$cc++;
			$sumQty += $xrQl['stueck'];
			$sumBruttSum += $xrQl['gesamtpreis'];
			$sumNett += $xrQl['netto'];
	
		}

		$sumQty = number_format($sumQty, 1, ",", "");
		$sumBruttSum = number_format($sumBruttSum, 2, ",", ".");
		$sumNett = number_format($sumNett, 2, ",", ".");
		$sumArray = array($sumQty, '', $sumBruttSum);

		$sumLine = "<div class='repSumLine repCustLineDiv' ><div class='repTotal_ColA'>Gesamt</div><div class='repTotal_ColB'>&nbsp;</div>
								<div class='repTotal_ColC'>&nbsp;</div><div class='" . $repColCc . "'>&nbsp;</div><div class='" . $repColD . "'>" . $sumQty . "</div>
								<div class='repTotal_ColE'>&nbsp;</div>
								<div class='repTotal_ColF'>&nbsp;</div><div class='repTotal_ColG'>&nbsp;</div>
								<div class='repTotal_ColG'>" . $sumBruttSum . "</div>
								<div class='cclear'></div>
						</div>";

		$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.
		if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;
		else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
			array_push($revenueList, array('', '', '', '', '', '', '', ''));
			array_push($revenueList, array('Gesamt', '', '', '', $sumQty, '', '', $sumNett, $sumBruttSum));

			$fileUrl = 'docs/reports/report_total.csv';

			$fp = fopen($fileUrl, 'w');
			foreach ($revenueList as $fields) {
				fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
			}

			fclose($fp);

			echo "ExportCSV Success -#-" . $fileUrl;
		} else if ($reportTarget == 'exportPDF') {
			require_once('dopdf.php');
			$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

			$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kunden.pdf";
			if (strtolower(REPORT_GESAMTREV_BONDRUCKER) == 'ja') $bonHeight = $bonHeight;
			else $bonHeight = false;
			$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'totalReport', $bonHeight);
			echo "<a href='" . $returedTarget . "'>Download</a><br/>";
			echo "<input type='hidden' value=' " . $reportTarget . " success' />
						<div id='reportPdfDiv' ><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
		}
	
}
function getReportTotalUserPaymentCategories()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$userid = 0;
	if (isset($_POST['userID'])) $userid = $_POST['userID'];
	if (isset($_POST['userName'])) $userNamePost = $_POST['userName'];

	$dateWhere = "";
	$whereInfo = "";
	if ( isset($sqlDateWhere[0]))
		$dateWhere .= $sqlDateWhere[0];
	if( isset($sqlDateWhere[0]) && $sqlDateWhere[0] == "")
		$dateWhere .= "WHERE 1=1";

	if ( isset($sqlDateWhere[1]))
		$whereInfo .= $sqlDateWhere[1];

	$dateWhere .= " AND abgeschlossener_bon_produkte.verkaeufer_id = ".$userid;

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	
	$reportUser = $_SESSION["userName"];
	

	
		$addHeader = "";
		$repColCc = "repTotal_ColCc";
		$repColD = "repTotal_ColD";
		$csvHead = array('Bon Nr.', 'Abschl.', 'Datum', 'Warengruppe', 'Stückzahl', 'Netto Preis', 'Steuer', 'Brutto Preis', 'Summe', 'Verkäufer');
	

	$repOp = "<div class='reportLDiv'><h3>Auswertung Warengruppe von Benutzer ".$userNamePost." " . $whereInfo . "</h3><div class='cclear' ></div></div>
						<div class='bgHead repCustLineDiv' ><div class='repTotal_ColA'>Bon</div><div class='repTotal_ColB'>Ab.</div>
								<div class='repTotal_ColC'>Datum</div><div class='" . $repColCc . "'>Warengruppe</div><div class='" . $repColD . "'>Menge</div>
								<div class='repTotal_ColE'>Netto</div>
								<div class='repTotal_ColF'>Steuer</div><div class='repTotal_ColG'>Brutto</div><div class='repTotal_ColG'>Summe</div>
								" . $addHeader . "
								<div class='cclear'></div>
						</div>";


	$csvHeader = array(
		array('', ''),
		array('', '',  '', "Auswertung Warengruppe von Benutzer ".$userNamePost."", '', '',  '',   ''),
		array('', '',  '', 'Erstellt am: ' . date('j.n.Y H:i'), '',  '', '', AUSRUCK_KOPFZEILE_1),
		array('', '',  '', 'Erstellt von: ' . $reportUser,  '', '', '', AUSRUCK_KOPFZEILE_2),
		array('', '', '', $whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', '', '',  '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		$csvHead,
		array('Bon', 'Abs.', 'Datum', 'Warengruppe', 'Stk.', 'Netto', 'MwSt', 'Brutto', 'Summe')		# für pdf, enger gehalten
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	preg_match('/\d+px | \d+pt/', SCHRIFT_AUSDRUCK_PDF, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0];
	$lineSpace = $pdfFontSize * .5;

		$xQl = mysql_query("SELECT abgeschlossener_bon.bon_id AS bon_nr, 
abgeschlossener_bon.bon_erstellt_datum AS datum, 
categories.NAME AS produkt_print_name,
abgeschlossener_bon.kassa_abschluss_id, stueck, PRICESELL AS netto, 
taxes.RATE AS tax_rate, PRICESELL*(1+tax_rate) AS brutto, PRICESELL*(1+tax_rate)*stueck AS gesamtpreis, benutzer.name AS verkaufer, GROUp_CONCAT(abgeschlossener_bon_zahlung.Name) AS zahlart 
FROM abgeschlossener_bon_produkte 
LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
LEFT JOIN taxes ON taxes.ID=taxcat 
LEFT JOIN benutzer ON verkaufer_id = benutzer.id
LEFT JOIN abgeschlossener_bon_zahlung ON abgeschlossener_bon_produkte.bon_id = abgeschlossener_bon_zahlung.bon_id 
LEFT JOIN categories ON categories.ID = abgeschlossener_bon_produkte.CATEGORY
										" . $dateWhere . "
										GROUP by abgeschlossener_bon_produkte.bon_id ,abgeschlossener_bon_produkte.CATEGORY ");
										
									

		$revenueList = array();
		#  letztes Header Array wird für PDF verwendet, deshalb hier für csv Export ausgelassen "-1"
		for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
			array_push($revenueList, $csvHeader[$i]);
		}

		$pdfData = array();
		$cc = 0;
		$sumQty = 0;
		$sumBruttSum = 0;
		$sumNett = 0;
		$bonHeight = 0;


		while ($xrQl = mysql_fetch_array($xQl)) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			if ($xrQl['tax_rate'] > 0) $tax = $xrQl['tax_rate'] * 100 . "%";
			else $tax = number_format($xrQl['tax_rate'], 0, "", "") . "&nbsp;";
			$dDate = date("Y-m-d H:i", strtotime($xrQl['datum']));
			$dDateHtml = date("Y-m-d", strtotime($xrQl['datum']));
			$zaCol = "";
			
			$repOp .= "<div class='repTotalLineDiv " . $bg . "'><div class='repTotal_ColA'>" . $xrQl['bon_nr'] . "</div>
												<div class='repTotal_ColB'>" . $xrQl['kassa_abschluss_id'] . "</div>
												<div class='repTotal_ColC'>" . $dDateHtml . "</div>
												<div class='" . $repColCc . "'>" . $xrQl['produkt_print_name'] . "</div>												
												<div class='" . $repColD . "'>" . number_format($xrQl['stueck'], 1, ",", ".") . "</div>
												<div class='repTotal_ColE'>" . number_format($xrQl['netto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColF'>" . $tax . "</div>
												<div class='repTotal_ColG'>" . number_format($xrQl['brutto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColH'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div>
												" . $zaCol . "
										<div class='cclear'></div>
							</div>";
			if ($reportTarget == 'exportExcelCSV') {
				$prodName = strip_tags(mb_convert_encoding($xrQl['produkt_print_name'], 'UTF-16LE', 'UTF-8'));
				$verkaufer = strip_tags(mb_convert_encoding($xrQl['verkaufer'], 'UTF-16LE', 'UTF-8'));
				$zahlArt = strip_tags(mb_convert_encoding($xrQl['zahlart'], 'UTF-16LE', 'UTF-8'));
			} else {
				$prodName = $xrQl['produkt_print_name'];
				$verkaufer = $xrQl['verkaufer'];
				$zahlArt = $xrQl['zahlart'];
			}


			$tmpArray = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $prodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $verkaufer
			);


			array_push($revenueList, $tmpArray);
			$tmpArray = array();

			#    pdf data --------------------------------------------
			#	$pdfFirma=iconv('UTF-8', 'ASCII//TRANSLIT', $xrQl['firma']); 
			$pdfprodName = $xrQl['produkt_print_name'];

			$pdfTmpData = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $pdfprodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $verkaufer
			);

			array_push($pdfData, $pdfTmpData);
			$pdfTmpDat = array();

			$bonHeight += $lineSpace;

			#	pdf data end -----------------------------------------

			$cc++;
			$sumQty += $xrQl['stueck'];
			$sumBruttSum += $xrQl['gesamtpreis'];
			$sumNett += $xrQl['netto'];
	
		}

		$sumQty = number_format($sumQty, 1, ",", "");
		$sumBruttSum = number_format($sumBruttSum, 2, ",", ".");
		$sumNett = number_format($sumNett, 2, ",", ".");
		$sumArray = array($sumQty, '', $sumBruttSum);

		$sumLine = "<div class='repSumLine repCustLineDiv' ><div class='repTotal_ColA'>Gesamt</div><div class='repTotal_ColB'>&nbsp;</div>
								<div class='repTotal_ColC'>&nbsp;</div><div class='" . $repColCc . "'>&nbsp;</div><div class='" . $repColD . "'>" . $sumQty . "</div>
								<div class='repTotal_ColE'>&nbsp;</div>
								<div class='repTotal_ColF'>&nbsp;</div><div class='repTotal_ColG'>&nbsp;</div>
								<div class='repTotal_ColG'>" . $sumBruttSum . "</div>
								<div class='cclear'></div>
						</div>";

		$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.
		if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;
		else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
			array_push($revenueList, array('', '', '', '', '', '', '', ''));
			array_push($revenueList, array('Gesamt', '', '', '', $sumQty, '', '', $sumNett, $sumBruttSum));

			$fileUrl = 'docs/reports/report_total.csv';

			$fp = fopen($fileUrl, 'w');
			foreach ($revenueList as $fields) {
				fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
			}

			fclose($fp);

			echo "ExportCSV Success -#-" . $fileUrl;
		} else if ($reportTarget == 'exportPDF') {
			require_once('dopdf.php');
			$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

			$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kunden.pdf";
			if (strtolower(REPORT_GESAMTREV_BONDRUCKER) == 'ja') $bonHeight = $bonHeight;
			else $bonHeight = false;
			$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'totalReport', $bonHeight);
			echo "<a href='" . $returedTarget . "'>Download</a><br/>";
			echo "<input type='hidden' value=' " . $reportTarget . " success' />
						<div id='reportPdfDiv' ><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
		}
	
}

function getReportTotalRev($commantLineParam = false, $addFeatures = false)
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else if ($commantLineParam[0] == 'totalRevFromCommandLine') $reportTarget = $commantLineParam[0];
	else $reportTarget = false;

	if (isset($_POST['selCategorieId']) && $_POST['selCategorieId'] > 0) {
		if (strlen($dateWhere) > 5 && strpos($dateWhere, 'WHERE') !== false) {
		    $catWhere = " AND abgeschlossener_bon.kunden_id = " . $_POST['selCategorieId'];
		} else $catWhere = " WHERE abgeschlossener_bon.kunden_id = " . $_POST['selCategorieId'];
	    } else $catWhere = "";
	

	if ($reportTarget == 'totalRevFromCommandLine') {
		$dateWhere = $commantLineParam[1];	# die Where Clause wird im commandline File erstellt
		$reportUser = 'commandline Report';
		$startDate = $commantLineParam[2];
		$endDate = $commantLineParam[3];
	} else {
		$reportUser = $_SESSION["userName"];
	}

	if ($addFeatures == 'inclPayment') {
		$addHeader = "<div class='repTotal_ColI'>Zahlung</div>";
		$repColCc = "repTotal_ColCc2";
		$repColD = "repTotal_ColD2";
		$csvHead = array('Bon Nr.', 'Abschl.', 'Datum', 'Artikel', 'Stückzahl', 'Netto Preis', 'Steuer', 'Brutto Preis', 'Summe', 'Verkäufer', 'Zahlung', 'Kunde');
	} else {
		$addHeader = "";
		$repColCc = "repTotal_ColCc";
		$repColD = "repTotal_ColD";
		$csvHead = array('Bon Nr.', 'Abschl.', 'Datum', 'Artikel', 'Stückzahl', 'Netto Preis', 'Steuer', 'Brutto Preis', 'Summe', 'Verkäufer', 'Kunde');
	}

	$repOp = "<div class='reportLDiv'><h3>Auswertung Umsatz Gesamt" . $whereInfo . "</h3><div class='cclear' ></div></div>
						<div class=' row bgHead repCustLineDiv' ><div class='repTotal_ColA'>Bon</div><div class='repTotal_ColB'>Ab.</div>
								<div class='repTotal_ColI'>Datum</div><div class='repTotal_ColD'>Artikel</div><div class='" . $repColD . "'>Menge</div>
								<div class='repTotal_ColF'>Netto</div>
								<div class='repTotal_ColF'>Steuer</div><div class='repTotal_ColG'>Brutto</div><div class='repTotal_ColG'>Summe</div>
								" . $addHeader . "
								<div class='repTotal_ColI'>Kunde</div>
								<div class='cclear'></div>
								</div>";

	$csvHeader = array(
		array('', ''),
		array('', '',  '', "Auswertung Gesamt Umsatz", '', '',  '',   ''),
		array('', '',  '', 'Erstellt am: ' . date('j.n.Y H:i'), '',  '', '', AUSRUCK_KOPFZEILE_1),
		array('', '',  '', 'Erstellt von: ' . $reportUser,  '', '', '', AUSRUCK_KOPFZEILE_2),
		array('', '', '', $whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', '', '',  '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		$csvHead,
		array('Bon', 'Abs.', 'Datum', 'Artikel', 'Stk.', 'Netto', 'MwSt', 'Brutto', 'Summe', 'Kunde')		# für pdf, enger gehalten
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	preg_match('/\d+px | \d+pt/', SCHRIFT_AUSDRUCK_PDF, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0];
	$lineSpace = $pdfFontSize * .5;

	if ($reportTarget == 'totalRevFromCommandLine') {
		$xQl = mysql_query("SELECT abgeschlossener_bon.bon_id AS bon_nr, abgeschlossener_bon.bon_erstellt_datum AS datum, 
								abgeschlossener_bon.kassa_abschluss_id, kunden_id, verkaufer_id, gesamt_summe AS gesamt_netto, retourgeld, 
								gastro_tisch_id AS tisch_warenkorb_id, storno, storno_person_id, storno_datum, storno_grund, storno_bemerkung, aktiv_user,
								dep_nullbeleg
								FROM abgeschlossener_bon " . $dateWhere . $catWhere . "");

		$XMLDoc = new SimpleXMLElement("<?xml version='1.0' encoding='UTF-8' standalone='yes'?><gesamtUmsatz></gesamtUmsatz>");
		$xmlData = $XMLDoc->addChild("reportData");
		$creD = "reportErstellt";
		$stD = "datumStart";
		$endD = "datumEnde";
		$xmlData->$creD = date('Y-m-d H:i');
		$xmlData->$stD = $startDate;
		$xmlData->$endD = $endDate;


		while ($xrQl = mysql_fetch_object($xQl)) {

			$xmlrow = $XMLDoc->addChild("bon");
			foreach ($xrQl as $spalte => $wert) {
				if ($spalte == 'gesamtpreis' || $spalte == 'netto' || $spalte == 'brutto') $wert = number_format($wert, 8, ".", "");
				if ($wert == '') $wert = ' ';
				$xmlrow->$spalte = $wert;
			}

			$bonId = $xrQl->bon_nr;
			$profDataQl = mysql_query("SELECT abgeschlossener_bon_produkte.NAME AS produkt_name, abgeschlossener_bon_produkte.printname AS print_name,
											stueck, PRICESELL AS netto, taxes.RATE AS tax_rate, PRICESELL*(1+tax_rate) AS brutto, 
											PRICESELL*(1+tax_rate)*stueck AS gesamtpreis, REFERENCE AS reference_nr, CODE AS ean_code, PRICEBUY AS ek_preis, 
											CATEGORY AS warengruppe_id, DISPLAY AS anzeigen, VARPRICE AS variabler_preis, NEGATIVEPRICE AS negativ_preis, 
											SICHTBAR AS sichtbar, isparent_id	AS combiartikel_parent, has_childs AS combiartikel_has_childs, 
											parent_id AS combiartikel_parent_id, childPrint AS combiartikel_child_drucken, kunden.nachname as kunde											 
											FROM abgeschlossener_bon_produkte 
											LEFT JOIN taxes ON taxes.ID=taxcat
											LEFT JOIN kunden ON kunden.id = abgeschlossener_bon.kunden_id
											WHERE bon_id = '" . $bonId . "' ");

			$xmlProducts = $xmlrow->addChild("produkte");
			while ($profDataRow = mysql_fetch_object($profDataQl)) {
				$xmlPr = $xmlProducts->addChild("produktData");
				foreach ($profDataRow as $cCol => $vVal) {
					if ($cCol == 'netto' || $cCol == 'brutto' || $cCol == 'gesamtpreis') $vVal = number_format($vVal, 8, ".", "");
					if (($cCol == 'reference_nr' || $cCol == 'ean_code' || $cCol == 'anzeigen') && $vVal == '') $vVal = ' ';
					$xmlPr->$cCol = $vVal;
				}
			}
		}

		$fName = "docs/reports/kpreport.xml";
		$reportToFile = file_put_contents($fName, $XMLDoc->asXML());
		if ($reportToFile == false) return "Error, Report erstellen fehlgeschlagen.";
		else return array('success', $XMLDoc->asXML());
	} else {

		$xQl = mysql_query("SELECT abgeschlossener_bon.bon_id AS bon_nr, abgeschlossener_bon.bon_erstellt_datum AS datum, 
                                         abgeschlossener_bon_produkte.PRINTNAME AS produkt_print_name, abgeschlossener_bon.kassa_abschluss_id, 
										 stueck, PRICESELL AS netto, taxes.RATE AS tax_rate, PRICESELL*(1+tax_rate) AS brutto, 
										 PRICESELL*(1+tax_rate)*stueck AS gesamtpreis, benutzer.name AS verkaufer, 
										 GROUp_CONCAT(abgeschlossener_bon_zahlung.Name) AS zahlart, kunden.nachname as kunde
                                         FROM abgeschlossener_bon_produkte 
                                         LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
                                         LEFT JOIN taxes ON taxes.ID=taxcat 
                                         LEFT JOIN benutzer ON  verkaufer_id = benutzer.id 
                                         LEFT JOIN abgeschlossener_bon_zahlung ON abgeschlossener_bon_produkte.bon_id = abgeschlossener_bon_zahlung.bon_id
										 LEFT JOIN kunden ON kunden.id = abgeschlossener_bon.kunden_id
										" . $dateWhere .  $catWhere . "
										GROUP by abgeschlossener_bon_produkte.ID ");

		$revenueList = array();
		#  letztes Header Array wird für PDF verwendet, deshalb hier für csv Export ausgelassen "-1"
		for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
			array_push($revenueList, $csvHeader[$i]);
		}

		$pdfData = array();
		$cc = 0;
		$sumQty = 0;
		$sumBruttSum = 0;
		$bonHeight = 0;


		while ($xrQl = mysql_fetch_array($xQl)) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			if ($xrQl['tax_rate'] > 0) $tax = $xrQl['tax_rate'] * 100 . "%";
			else $tax = number_format($xrQl['tax_rate'], 0, "", "") . "&nbsp;";
			$dDate = date("Y-m-d H:i", strtotime($xrQl['datum']));
			$dDateHtml = date("Y-m-d", strtotime($xrQl['datum']));
			$zaCol = "";
			if ($addFeatures == 'inclPayment') {
				$zaCol = "<div class='repTotal_ColI'>" . $xrQl['zahlart'] . "</div>";
			}
			$repOp .= "<div class='repTotalLineDiv " . $bg . "'><div class='repTotal_ColA'>" . $xrQl['bon_nr'] . "</div>
												<div class='repTotal_ColB'>" . $xrQl['kassa_abschluss_id'] . "</div>
												<div class='repTotal_ColI'>" . $dDateHtml . "</div>
												<div class='repTotal_ColD'>" . $xrQl['produkt_print_name'] . "</div>												
												<div class='" . $repColD . "'>" . number_format($xrQl['stueck'], 1, ",", ".") . "</div>
												<div class='repTotal_ColF'>" . number_format($xrQl['netto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColF'>" . $tax . "</div>
												<div class='repTotal_ColG'>" . number_format($xrQl['brutto'], 2, ",", ".") . "</div>
												<div class='repTotal_ColH'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div>
												" . $zaCol . "
												<div class='repTotal_ColI'>" . $xrQl['kunde'] . "</div>
										<div class='cclear'></div>
							</div>";
			if ($reportTarget == 'exportExcelCSV') {
				$prodName = strip_tags(mb_convert_encoding($xrQl['produkt_print_name'], 'UTF-16LE', 'UTF-8'));
				$verkaufer = strip_tags(mb_convert_encoding($xrQl['verkaufer'], 'UTF-16LE', 'UTF-8'));
				$zahlArt = strip_tags(mb_convert_encoding($xrQl['zahlart'], 'UTF-16LE', 'UTF-8'));
			} else {
				$prodName = $xrQl['produkt_print_name'];
				$verkaufer = $xrQl['verkaufer'];
				$zahlArt = $xrQl['zahlart'];
			}


			$tmpArray = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $prodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $xrQl['kunde'], $verkaufer
			);

			if ($addFeatures == 'inclPayment') {
				array_push($tmpArray, $zahlArt);
			}

			array_push($revenueList, $tmpArray);
			$tmpArray = array();

			#    pdf data --------------------------------------------
			#	$pdfFirma=iconv('UTF-8', 'ASCII//TRANSLIT', $xrQl['firma']); 
			$pdfprodName = $xrQl['produkt_print_name'];

			$pdfTmpData = array(
				$xrQl['bon_nr'], $xrQl['kassa_abschluss_id'], $dDate,  $pdfprodName, number_format($xrQl['stueck'], 1, ",", "."),
				number_format($xrQl['netto'], 2, ",", "."), preg_replace("/&nbsp;/", "", $tax), number_format($xrQl['brutto'], 2, ",", "."),
				number_format($xrQl['gesamtpreis'], 2, ",", "."), $verkaufer
			);

			if ($addFeatures == 'inclPayment') {
				array_push($pdfTmpData, $xrQl['zahlart']);
			}

			array_push($pdfData, $pdfTmpData);
			$pdfTmpDat = array();

			$bonHeight += $lineSpace;

			#	pdf data end -----------------------------------------

			$cc++;
			$sumQty += $xrQl['stueck'];
			$sumBruttSum += $xrQl['gesamtpreis'];
		}

		$sumQty = number_format($sumQty, 1, ",", "");
		$sumBruttSum = number_format($sumBruttSum, 2, ",", ".");

		$sumArray = array($sumQty, '', $sumBruttSum);

		$sumLine = "<div class='repSumLine repCustLineDiv' ><div class='repTotal_ColA'>Gesamt</div><div class='repTotal_ColB'>&nbsp;</div>
								<div class='repTotal_ColI'>&nbsp;</div><div class='repTotal_ColD'>&nbsp;</div><div class='" . $repColD . "'>" . $sumQty . "</div>
								<div class='repTotal_ColF'>&nbsp;</div>
								<div class='repTotal_ColF'>&nbsp;</div><div class='repTotal_ColG'>&nbsp;</div>
								<div class='repTotal_ColG'>" . $sumBruttSum . "</div>
								<div class='repTotal_ColG'>&nbsp;</div>
								<div class='cclear'></div>
								<div class='repTotal_ColG'>&nbsp;</div>
						</div>";

		$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

		if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;
		else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

			array_push($revenueList, array('', '', '', '', '', '', '', '', ''));
			array_push($revenueList, array('Gesamt', '', '', '', $sumQty, '', '', $sumNett, $sumBruttSum, ''));

			$fileUrl = 'docs/reports/report_total.csv';

			$fp = fopen($fileUrl, 'w');
			foreach ($revenueList as $fields) {
				fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
			}

			fclose($fp);

			echo "ExportCSV Success -#-" . $fileUrl;
		} else if ($reportTarget == 'exportPDF') {
			require_once('dopdf.php');

			$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

			$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kunden.pdf";
			if (strtolower(REPORT_GESAMTREV_BONDRUCKER) == 'ja') $bonHeight = $bonHeight;
			else $bonHeight = false;
			$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'totalReport', $bonHeight);
			echo "<a href='" . $returedTarget . "'>Download</a><br/>";
			echo "<input type='hidden' value=' " . $reportTarget . " success' />
						<div id='reportPdfDiv' ><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
		}
	}
}





function getReportCustomer()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];


	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$repOp = "<div class='reportHeaderDiv'><h3>Auswertung nach Kunden" . $whereInfo . "</h3><div class='cclear' ></div></div>
						<div class='bgHead repCustLineDiv' ><div class='repCust_ColA'>Firma / Name</div><div class='repCust_ColC'>Anzahl</div>
								<div class='repCust_ColD'>Ges. Netto</div><div class='repCust_ColD'>Ges. Brutto</div><div class='cclear'></div>
						</div>";

	$csvHeader = array(
		array('', ''),
		array("Auswertung nach Kunden"),
		array('Erstellt am: ', date('d m Y H:i'), '', '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		array('Name Firma', 'Name Person', 'Anzahl Rechungen', 'Gesamt Netto', 'Gesamt Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV')	$tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$xQl = mysql_query("SELECT kunden.firma, kunden.vorname, kunden.nachname, SUM(stueck) AS anz, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) 
				AS gesamtpreis, abgeschlossener_bon.kunden_id AS cust_id FROM abgeschlossener_bon_produkte 
				LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
				LEFT JOIN taxes ON taxes.ID=taxcat
				LEFT JOIN kunden on kunden.id=kunden_id
				" . $dateWhere . "
				GROUP by kunden.id");

	$customerList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($customerList, $csvHeader[$i]);
	}

	$pdfData = array();
	$cc = 0;
	$sumQty = 0;
	$sumNett = 0;
	$sumBrutt = 0;

	while ($xrQl = mysql_fetch_array($xQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		if (strlen($xrQl['vorname']) > 0 && strlen($xrQl['nachname']) > 0) $kdName = $xrQl['vorname'] . " " . $xrQl['nachname'];
		else if (strlen($xrQl['nachname']) > 0 && (strlen($xrQl['vorname']) == 0 || $xrQl['vorname'] == false)) $kdName = $xrQl['nachname'];
		else if (strlen($xrQl['vorname']) > 0 && (strlen($xrQl['nachname']) == 0 || $xrQl['nachname'] == false)) $kdName = $xrQl['vorname'];
		else $kdName = "";

		if ($xrQl['cust_id'] == 0) $xrQl['firma'] = "Rechnungen nicht zugeordnet";
		$repOp .= "<div class='repCustLineDiv " . $bg . "'><div class='repCust_ColA'>" . $xrQl['firma'] . " " . $kdName . "</div>
								<div class='repCust_ColC'>" . number_format($xrQl['anz'], 1, ",", ".") . "</div><div class='repCust_ColD'>" . number_format($xrQl['gesamt_netto'], 2, ",", ".") . "</div>
								<div class='repCust_ColD'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div><div class='cclear'></div>
						</div>";
		if ($reportTarget == 'exportExcelCSV') {
			$fFirma = strip_tags(mb_convert_encoding($xrQl['firma'], 'UTF-16LE', 'UTF-8'));
			$nName = strip_tags(mb_convert_encoding($kdName, 'UTF-16LE', 'UTF-8'));
		} else {
			$fFirma = $xrQl['firma'];
			$nName = $kdName;
		}
		$tmpArray = array($fFirma, $nName, number_format($xrQl['anz'], 1, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));

		array_push($customerList, $tmpArray);
		$tmpArray = array();
		#    pdf data --------------------------------------------
		#	$pdfFirma=iconv('UTF-8', 'ASCII//TRANSLIT', $xrQl['firma']); 
		$pdfFirma = $xrQl['firma'];
		$pdfName = $kdName;
		if (strlen($pdfFirma) > 0 && strlen($pdfName) > 0) $spacer = ", ";
		else $spacer = "";
		$pdfTmpData = array($pdfFirma . $spacer . $pdfName, number_format($xrQl['anz'], 1, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------

		$cc++;
		$sumQty += $xrQl['anz'];
		$sumNett += $xrQl['gesamt_netto'];
		$sumBrutt += $xrQl['gesamtpreis'];
	}

	$sumQty = number_format($sumQty, 1, ",", "");
	$sumNett = number_format($sumNett, 2, ",", ".");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");


	$sumArray = array($sumQty, $sumNett, $sumBrutt);

	$sumLine = "<div class='repCustLineDiv repSumLine'><div class='repCust_ColA'>Gesamt</div>
								<div class='repCust_ColC'>" . $sumQty . "</div><div class='repCust_ColD'>" . $sumNett . "</div>
								<div class='repCust_ColD'>" . $sumBrutt . "</div><div class='cclear'></div>
						</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success />" . $repOp . $sumLine;
	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($customerList, array('', '', '', '', ''));
		array_push($customerList, array('Gesamt', '', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/report_nach_kunde.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($customerList as $fields) {
			fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
		}

		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');
		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kunden.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'customerReport');

		#	$fileUrl='docs/reports/report_umsatz_kunden.pdf';
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}


function getReportCategorie()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$repOp = "	<div class='reportHeaderDiv'><h3>Auswertung nach Warengruppen" . $whereInfo . "</h3><div class='cclear' ></div></div>
				<div class='bgHead' ><div class='repCat_ColA'>Warengruppe</div>
					<div class='repCat_ColB'>Stückzahl</div><div class='repCat_ColC'>Gesamt Netto</div>
				<div class='repCat_ColD'>Gesamt Brutto</div><div class='cclear'></div>
			</div>";

	$csvHeader = array(
		array('', ''),
		array("Auswertung nach Warengruppen"),
		array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		array('Warengruppe', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV') $tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;



	$xQl = mysql_query("SELECT categories.NAME, SUM(stueck) as anzahl, SUM(PRICESELL*stueck) as gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) as gesamtpreis, 
								abgeschlossener_bon_produkte.CATEGORY AS categorieId
						FROM abgeschlossener_bon_produkte 
						LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
						LEFT JOIN taxes ON taxes.ID=taxcat
						LEFT JOIN categories on categories.id=CATEGORY
						" . $dateWhere . " AND CATEGORY <> 9999
						GROUP by categories.id");

	$categorieList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($categorieList, $csvHeader[$i]);
	}

	$pdfData = array();

	$cc = 0;

	$sumNett = 0;
	$sumBrutt = 0;
	$sumQty = 0;

	while ($xrQl = mysql_fetch_array($xQl)) {

		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		if ($xrQl['categorieId'] == 0) $xrQl['NAME'] = "Rabatte";
		$repOp .= "<div class='repCatLineDiv " . $bg . "'><div class='repCat_ColA'>" . $xrQl['NAME'] . "</div><div class='repCat_ColB'>" . number_format($xrQl['anzahl'], 1, ",", ".") . "</div>
					<div class='repCat_ColC'>" . number_format($xrQl['gesamt_netto'], 2, ",", ".") . "</div><div class='repCat_ColD'>" . number_format($xrQl['gesamtpreis'], 2, ",", ".") . "</div>
						<div class='cclear'></div>
					</div>";
		# convertierung für Excel 

		if ($reportTarget == 'exportExcelCSV') {
			$nName = strip_tags(mb_convert_encoding($xrQl['NAME'], 'UTF-16LE', 'UTF-8'));
		} else {
			$nName = $xrQl['NAME'];
		}

		$tmpArray = array($nName, number_format($xrQl['anzahl'], 1, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));

		array_push($categorieList, $tmpArray);
		$tmpArray = array();

		$mpArray = array();
		#    pdf data --------------------------------------------
		$nName = $xrQl['NAME'];
		$pdfTmpData = array($nName, number_format($xrQl['anzahl'], 1, ",", "."), number_format($xrQl['gesamt_netto'], 2, ",", "."), number_format($xrQl['gesamtpreis'], 2, ",", "."));
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------
		$sumQty += $xrQl['anzahl'];
		$sumNett += $xrQl['gesamt_netto'];
		$sumBrutt += $xrQl['gesamtpreis'];
		$cc++;
	}



	$sumQty = number_format($sumQty, 1, ",", ".");
	$sumNett = number_format($sumNett, 2, ",", ".");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");


	$sumArray = array($sumQty, $sumNett, $sumBrutt);
	$sumLine = "<div class='repCatLineDiv  repSumLine'><div class='repCat_ColA'>Gesamt </div><div class='repCat_ColB'>" . $sumQty . "</div>
					<div class='repCat_ColC'>" . $sumNett . "</div><div class='repCat_ColD'>" . $sumBrutt . "</div>
						<div class='cclear'></div>
					</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp . $sumLine;
	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {
		array_push($categorieList, array('', '', '', '',));
		array_push($categorieList, array('Gesamt', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/report_warengruppen.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($categorieList as $fields) {
			fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
		}

		fclose($fp);

		echo "ExportCSV Success  " . $dateWhere . "-#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Warengruppen.pdf";

		$returnedTarget = createPdf($saveTheFileTo, $pdfContent, 'categorieReport');
		echo "<a href='" . $returnedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returnedTarget . "' height='98%'></div>";
	}
}

function getReportProducts()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	if (isset($_POST['selCategorieId']) && $_POST['selCategorieId'] > 0) {
		if (strlen($dateWhere) > 5 && strpos($dateWhere, 'WHERE') !== false) {
			$catWhere = " AND abgeschlossener_bon_produkte.CATEGORY = " . $_POST['selCategorieId'];
		} else $catWhere = " WHERE abgeschlossener_bon_produkte.CATEGORY = " . $_POST['selCategorieId'];
	} else $catWhere = "";

	$repOp = "	<div class='reportHeaderDiv'><h3>Auswertung nach Produkten" . $whereInfo . "</h3><div class='cclear' ></div></div>
				<div class='bgHead' ><div class='repCat_ColA'>Produktname</div><div class='repCat_ColB'>Stückzahl</div><div class='repCat_ColC'>Gesamt Netto</div>
				<div class='repCat_ColD'>Gesamt Brutto</div><div class='cclear'></div>
			</div>";

	$csvHeader = array(
		array('', ''),
		array("Auswertung nach Produkten"),
		array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		array('Produktname', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV') $tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$prQl = mysql_query("SELECT IF(LENGTH(abgeschlossener_bon_produkte.PRINTNAME)>0, abgeschlossener_bon_produkte.PRINTNAME, abgeschlossener_bon_produkte.NAME) AS reportName,
								abgeschlossener_bon_produkte.CATEGORY AS warengr, SUM(stueck) as anzahl, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) AS gesamtpreis 
								FROM abgeschlossener_bon_produkte 
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
								LEFT JOIN taxes ON taxes.ID=taxcat
								" . $dateWhere . $catWhere . "
								GROUP by reportName");


	$productList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($productList, $csvHeader[$i]);
	}

	$pdfData = array();

	$cc = 0;
	$sumNett = 0;
	$sumBrutt = 0;
	$sumQty = 0;

	while ($rowPr = mysql_fetch_array($prQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$repOp .= "<div class='repCatLineDiv " . $bg . "'><div class='repCat_ColA'>" . $rowPr['reportName'] . "</div><div class='repCat_ColB'>" . number_format($rowPr['anzahl'], 2, ",", ".") . "</div>
					<div class='repCat_ColC'>" . number_format($rowPr['gesamt_netto'], 2, ",", ".") . "</div><div class='repCat_ColD'>" . number_format($rowPr['gesamtpreis'], 2, ",", ".") . "</div>
						<div class='cclear'></div>
					</div>";

		# convertierung für Excel 
		if ($reportTarget == 'exportExcelCSV') {
			$nName = strip_tags(mb_convert_encoding($rowPr['reportName'], 'UTF-16LE', 'UTF-8'));
		} else {
			$nName = $rowPr['reportName'];
		}


		$tmpArray = array($nName, number_format($rowPr['anzahl'], 2, ",", "."), number_format($rowPr['gesamt_netto'], 2, ",", "."), number_format($rowPr['gesamtpreis'], 2, ",", "."));

		array_push($productList, $tmpArray);
		$tmpArray = array();

		$mpArray = array();
		#    pdf data --------------------------------------------
		$pdfTmpData = array($nName, number_format($rowPr['anzahl'], 1, ",", "."), number_format($rowPr['gesamt_netto'], 2, ",", "."), number_format($rowPr['gesamtpreis'], 2, ",", "."));
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------
		$sumQty += $rowPr['anzahl'];
		$sumNett += $rowPr['gesamt_netto'];
		$sumBrutt += $rowPr['gesamtpreis'];
		$cc++;
	}

	$sumQty = number_format($sumQty, 1, ",", ".");
	$sumNett = number_format($sumNett, 2, ",", ".");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");

	$sumArray = array($sumQty, $sumNett, $sumBrutt);
	$sumLine = "<div class='repCatLineDiv  repSumLine'><div class='repCat_ColA'>Gesamt </div><div class='repCat_ColB'>" . $sumQty . "</div>
					<div class='repCat_ColC'>" . $sumNett . "</div><div class='repCat_ColD'>" . $sumBrutt . "</div>
						<div class='cclear'></div>
					</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.




	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp . $sumLine;

	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($productList, array('', '', '', '',));
		array_push($productList, array('Gesamt', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/sIT_Report_Umsatz_Produkte.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($productList as $fields) {
			fputcsv($fp, $fields, ";");
		}

		fclose($fp);

		echo "ExportCSV Success  " . $dateWhere . "-#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Produkte.pdf";

		if (strtolower(AUSDRUCK_AUSWERTUNG_PROTUKTE_BONDRUCKER) == 'ja') {
			$bonLength = $cc * 6;
			$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'productReportBonPrint', $bonLength);
		} else $returedTarget = createPdf($saveTheFileTo, $pdfContent, 'productReport', false);
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'>
						<embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'>
						</div>";
	}
}

function getReportTables()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	if (isset($_POST['selCategorieId']) && $_POST['selCategorieId'] > 0) {
		if (strlen($dateWhere) > 5 && strpos($dateWhere, 'WHERE') !== false) {
			$catWhere = " AND tische.id = " . $_POST['selCategorieId'];
		} else $catWhere = " WHERE tische.id = " . $_POST['selCategorieId'];
	} else $catWhere = "";

	$repOp = "	<div class='reportHeaderDiv'><h3>Auswertung nach Tischen" . $whereInfo . "</h3><div class='cclear' ></div></div>
				<div class='bgHead' ><div class='repCat_ColB'>Tischname</div><div class='repCat_ColC'>Produktname</div><div class='repCat_ColB'>Stückzahl</div><div class='repCat_ColC'>Gesamt Netto</div>
				<div class='repCat_ColD'>Gesamt Brutto</div><div class='cclear'></div>
			</div>";

	$csvHeader = array(
		array('', ''),
		array("Auswertung nach Tischen"),
		array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
		array($whereInfo, '', '', AUSRUCK_KOPFZEILE_4),
		array('', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '',),
		array('Tischname', 'Produktname', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV') $tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$prQl = mysql_query("SELECT tischName, IF(LENGTH(abgeschlossener_bon_produkte.PRINTNAME)>0, abgeschlossener_bon_produkte.PRINTNAME, abgeschlossener_bon_produkte.NAME) AS reportName,  
								abgeschlossener_bon_produkte.CATEGORY AS warengr, SUM(stueck) as anzahl, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) AS gesamtpreis 
								FROM abgeschlossener_bon_produkte 
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
								LEFT JOIN taxes ON taxes.ID=taxcat
								LEFT JOIN tische ON abgeschlossener_bon.gastro_tisch_id = tische.id
								" . $dateWhere . $catWhere . " 
								GROUP by reportName, tischName
								order by tischName, reportName");


	$productList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($productList, $csvHeader[$i]);
	}

	$pdfData = array();

	$cc = 0;
	$sumNett = 0;
	$sumBrutt = 0;
	$sumQty = 0;

	while ($rowPr = mysql_fetch_array($prQl)) {
		if($rowPr['gesamtpreis'] != 0 && $rowPr['tischName']){
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$repOp .= "<div class='repCatLineDiv " . $bg . "'><div class='repCat_ColB'>" . $rowPr['tischName'] . "</div><div class='repCat_ColC'>" . $rowPr['reportName'] . "</div><div class='repCat_ColB'>" . number_format($rowPr['anzahl'], 2, ",", ".") . "</div>
					<div class='repCat_ColC'>" . number_format($rowPr['gesamt_netto'], 2, ",", ".") . "</div><div class='repCat_ColD'>" . number_format($rowPr['gesamtpreis'], 2, ",", ".") . "</div>
						<div class='cclear'></div>
					</div>";

		# convertierung für Excel 
		if ($reportTarget == 'exportExcelCSV') {
			$nName = strip_tags(mb_convert_encoding($rowPr['reportName'], 'UTF-16LE', 'UTF-8'));
		} else {
			$nName = $rowPr['reportName'];
		}


		$tmpArray = array($rowPr['tischName'], $nName, number_format($rowPr['anzahl'], 2, ",", "."), number_format($rowPr['gesamt_netto'], 2, ",", "."), number_format($rowPr['gesamtpreis'], 2, ",", "."));

		array_push($productList, $tmpArray);
		$tmpArray = array();

		$mpArray = array();
		#    pdf data --------------------------------------------
		$pdfTmpData = array($rowPr['tischName'], $nName, number_format($rowPr['anzahl'], 1, ",", "."), number_format($rowPr['gesamt_netto'], 2, ",", "."), number_format($rowPr['gesamtpreis'], 2, ",", "."));
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------
		$sumQty += $rowPr['anzahl'];
		$sumNett += $rowPr['gesamt_netto'];
		$sumBrutt += $rowPr['gesamtpreis'];
		$cc++;
		}
	}

	$sumQty = number_format($sumQty, 1, ",", ".");
	$sumNett = number_format($sumNett, 2, ",", ".");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");

	$sumArray = array($sumQty, $sumNett, $sumBrutt);
	$sumLine = "<div class='repCatLineDiv  repSumLine'><div class='repCat_ColA'>Gesamt </div><div class='repCat_ColB'>" . $sumQty . "</div>
					<div class='repCat_ColC'>" . $sumNett . "</div><div class='repCat_ColD'>" . $sumBrutt . "</div>
						<div class='cclear'></div>
					</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.




	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp . $sumLine;

	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($productList, array('', '', '', '',));
		array_push($productList, array('Gesamt', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/sIT_Report_Umsatz_Produkte.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($productList as $fields) {
			fputcsv($fp, $fields, ";");
		}

		fclose($fp);

		echo "ExportCSV Success  " . $dateWhere . "-#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Produkte.pdf";

		if (strtolower(AUSDRUCK_AUSWERTUNG_PROTUKTE_BONDRUCKER) == 'ja') {
			$bonLength = $cc * 6;
			$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'productReportBonPrint', $bonLength);
		} else $returedTarget = createPdf($saveTheFileTo, $pdfContent, 'productReport', false);
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'>
						<embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'>
						</div>";
	}
}


function getReportProductNameEnd()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	$tableCol = "abgeschlossener_bon.bon_erstellt_datum";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$repOp = "	<div class='reportHeaderDiv'><h3>Auswertung nach Produktname Kundenkennung" . $whereInfo . "</h3><div class='cclear' ></div></div>
				<div class='bgHead' ><div class='repX_ColA'>Kundenkennung</div><div class='repX_ColB'>Bezeichnung</div><div class='repX_ColC'>Anzahl</div>
							<div class='repX_ColD'>Einz. Netto</div><div class='repX_ColD'>Ges. Brutto</div><div class='cclear'></div>
			</div>";

	$csvHeader = array(
		array('', ''),
		array("Auswertung nach Produktname Kundenkennung", '', '', '', AUSRUCK_KOPFZEILE_1),
		array('Erstellt am: ' . date('Y-m-d H:i'), '', '', '', AUSRUCK_KOPFZEILE_2),
		array('Erstellt von: ' . $_SESSION["userName"], '', '', '', AUSRUCK_KOPFZEILE_4),
		array($whereInfo, '', '', '', AUSRUCK_KOPFZEILE_5),
		array('', '', '', '', '',),
		array('Kenn', 'Bezeichnung', 'Anz', 'Net', 'Brut'),
		array('Kd. Kennung', 'Bezeichnung', 'An#zahl', 'Einz. Netto', 'Ges. Brutto')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		if ($reportTarget == 'exportExcelCSV') $tmp = mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$cc = 0;
	$sumQty = 0;
	$sumBrutt = 0;
	$pdfData = array();
	$prodCustCodeList = array();
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		array_push($prodCustCodeList, $csvHeader[$i]);
	}

	$prQl = mysql_query("SELECT SUBSTRING_INDEX(PRINTNAME, ' ', -1) AS artikelCodeName, PRINTNAME, stueck, PRICESELL, (PRICESELL*stueck)*(1+tax_rate) AS summeVK 
										FROM abgeschlossener_bon_produkte
										LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id
										" . $dateWhere . "
										ORDER BY artikelCodeName ASC");
	while ($rowPr = mysql_fetch_array($prQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$repOp .= "<div class='repCatLineDiv " . $bg . "'><div class='repX_ColA'>" . $rowPr['artikelCodeName'] . "</div><div class='repX_ColB'>" . $rowPr['PRINTNAME'] . "</div>
														<div class='repX_ColC'>" . number_format($rowPr['stueck'], 2, ",", ".") . "</div>
															<div class='repX_ColD'>" . number_format($rowPr['PRICESELL'], 2, ",", ".") . "</div>
														<div class='repX_ColD'>" . number_format($rowPr['summeVK'], 2, ",", ".") . "</div>
						<div class='cclear'></div>
					</div>";

		#    csv data --------------------------------------------

		# convertierung für Excel 
		if ($reportTarget == 'exportExcelCSV') {
			$custCode = strip_tags(mb_convert_encoding($rowPr['artikelCodeName'], 'UTF-16LE', 'UTF-8'));
			$nName = strip_tags(mb_convert_encoding($rowPr['PRINTNAME'], 'UTF-16LE', 'UTF-8'));
		} else {
			$custCode = $rowPr['artikelCodeName'];
			$nName = $rowPr['PRINTNAME'];
		}
		$tmpArray = array(
			$custCode, $nName, number_format($rowPr['stueck'], 1, ",", "."), number_format($rowPr['PRICESELL'], 2, ",", "."),
			number_format($rowPr['summeVK'], 2, ",", ".")
		);

		array_push($prodCustCodeList, $tmpArray);
		$tmpArray = array();
		#    csv data end --------------------------------------------
		#    pdf data --------------------------------------------
		$pdfTmpData = array(
			$rowPr['artikelCodeName'], $rowPr['PRINTNAME'], number_format($rowPr['stueck'], 1, ",", "."),
			number_format($rowPr['PRICESELL'], 2, ",", "."), number_format($rowPr['summeVK'], 2, ",", ".")
		);
		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();
		#	pdf data end -----------------------------------------

		$cc++;
		$sumQty += $rowPr['stueck'];
		$sumBrutt += $rowPr['summeVK'];
	}

	$sumQty = number_format($sumQty, 1, ",", "");
	$sumBrutt = number_format($sumBrutt, 2, ",", ".");
	$sumArray = array($sumQty, "", $sumBrutt);

	$sumLine = "<div class='repCatLineDiv  repSumLine' ><div class='repX_ColA'>Gesamt</div><div class='repX_ColB'></div><div class='repX_ColC'>" . $sumQty . "</div>
							<div class='repX_ColD'></div><div class='repX_ColD'>" . $sumBrutt . "</div><div class='cclear'></div>
			</div>";

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp . $sumLine;
	else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		array_push($prodCustCodeList, array('', '', '', '', ''));
		array_push($prodCustCodeList, array('Gesamt', '', $sumQty, $sumNett, $sumBrutt));

		$fileUrl = 'docs/reports/report_kundenkennung_report.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($prodCustCodeList as $fields) {
			fputcsv($fp, $fields, ";");		// we have semicol as seperator and no enclosere, would be last parameter !!
		}

		fclose($fp);

		echo "ExportCSV Success  " . $dateWhere . "-#-" . $fileUrl;
	} else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Kundenkennung.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'customerCodeReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	}
}

function ean13_bonieren()
{
	# wenn im kassieren.php, check_ean ein ean 13 erkannt wird, wird dieser abgefangen und hier
	# 		direkt in den offenen Bon geschrieben 
	if (isset($_POST['ean13Val']) && strlen($_POST['ean13Val']) == 13) $ean13 = $_POST['ean13Val'];
	else {
		$ean13 = false;
		echo json_encode(array("Error", "ungültiger EAN 13 Code, bonieren abgebrochen!"));
		return false;
	}
	# das ist ein Kundenkarten ean13 z.B -> soMa
	if ($ean13 && preg_match("/^241234[0-9]{7}$/", $ean13)) {

		$custCardNo = preg_replace('/^241234/', '', $ean13);	# Präfix rauslöschen	#preg_replace('/X$/', 'Y', $old_str);
		$custCardNo = preg_replace('/[0-9]$/', '', $custCardNo);	# letzte stelle (check-Sum) rauslöschen	#substr_replace($string, "", -1)
		$custCardNo += 0;		# führende 00.... löschen

		$kdInfo = preisgruppenKundenInfo($custCardNo);

		#writeLog(basename( __FILE__)." ". __LINE__ . "ean13 bonieren, Kd Call abfangen: ".$kdInfo[0]." -- ".$kdInfo[0]."\n");


		$returnHtml = $kdInfo[0];
		$kartenSperre = $kdInfo[1];

		if ($returnHtml == false && $kartenSperre == false) {
			echo json_encode(array("kundeFailed", $returnHtml, $kartenSperre, $custCardNo));
			return false;
		}

		echo json_encode(array("kundenKarte", $returnHtml, $kartenSperre, $custCardNo));
		return false;
	}



	# zwei Kalulationen: entweder wird im ean Code der Preis übergeben, der dann ein Brutto Preis ist -> netto errechnen u.
	#		mit Menge eins in den offenen Bon schreiben (artikel kann ohne Preis (variabler Preis Artik) angelegt werden    
	#		ODER 
	#		Gewicht wird übergeben, das Gewicht wird als Stückzahl verwendet. Artikel (Product) muss mit Preis -> Kg/Preis angelegt sein
	#		daraus wird der Stückpreis mal Gewicht zB    txt: TULUMBA TATLISI 8,20€/kg - 1,06kg		Einzelpr: 8,20    Menge: 1,06     summe 8,71

	# default Val = 1, used for Präfix 22&23
	$articleQty = 1;

	if ($ean13) {
		$weightCalc = false;
		if (preg_match("/^22[0-9]{11}$/", $ean13) || preg_match("/^23[0-9]{11}$/", $ean13)) {
				#Präfix 22 u. 23 sind Preis (N8-N12  2 Kommast) Codes Preis im EAN enthalten, Stück wird als 1 in den offener_bon geschr
				#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."  ean13 -->    22 od 23 PREIS \n", FILE_APPEND);
				# trennen von Artikel Nr, Preis im EAN, Komma 2 Stellen von Hinten !!!
				# dritte stelle beginnend, fünf stellen lang !!! = 7

				$prodNo = substr($ean13, 2, 5);
				$prodPr = substr($ean13, 7, 5);
				$prodPrice = substr_replace($prodPr, '.', -2, 0);
		} 
		else
		if (preg_match("/^270[0-9]{10}$/", $ean13) || preg_match("/^280[0-9]{10}$/", $ean13) || preg_match("/^210[0-9]{10}$/", $ean13)) 
		{
			# Okt 2020 Präf-> 210, 4stellen Artikel Nr,
			# die andern von 27 28 auf 3stellig geändert  270, 280
			# urspr, glaub das ist näher einem Standard, falls es so was gibt
			#Präfix 27 u. 28 sind Gewicht (N8-N12  3 Kommast) Codes    max 99.999 ! Gewicht im EAN, Preis kommt aus der produkt DB
			

			$weightCalc = true;
			# 3. Stelle beginnend, 4 Stellen lang
			$prodNo = substr($ean13, 3, 4);
			# 7. Stelle beginnend, 5 Stellen lang
			$prodGew = substr($ean13, 7, 5);
			# Komma an entsprechende stelle setzen
			$prodGewicht = substr_replace($prodGew, '.', -3, 0);

			$prodKgPr = mysql_fetch_array(mysql_query("SELECT PRICESELL, PRINTNAME FROM products WHERE REFERENCE = '" . $prodNo . "' AND geloescht = '0' LIMIT 1"));

			# Der angelegt Prod Price ist der Kilo Preis !!!

			#$prodPrice=$prodKgPr['PRICESELL']*$prodGewicht;
			$prodPrice = $prodKgPr['PRICESELL'];
			$articleQty = $prodGewicht;
			#$printN=$prodKgPr['PRINTNAME']." ".$prodGewicht."kg ".$prodKgPr['PRICESELL']."€/kg"; 

		}
		if ( isset($prodNo ))
			$prodData = mysql_fetch_array(mysql_query("SELECT * FROM products WHERE REFERENCE = '" . $prodNo . "' AND geloescht = '0' LIMIT 1 "));
				
		if (isset($prodData) && $prodData['REFERENCE'] == $prodNo) {
			
			$bonId = $_SESSION['aktuellerWarenkorb'];
			$userId = $_SESSION['userId'];
			$custId = false;

			$customer = mysql_query("SELECT kunden_id FROM offener_bon WHERE bon_id = '" . $bonId . "'         ");
			while ($custNo = mysql_fetch_array($customer)) {
				# ohne && $custId == false oder 0 würde es in der letzten loop überschrieben werden wenn die wieder 0 ist. 
				if ($custNo['kunden_id'] > 0 && $custId === false) {
					$custId = $custNo['kunden_id'];
				} else if ($custNo['kunden_id'] == 0 && $custId == 0) $custId = false;
			}

			$taxR = mysql_fetch_array(mysql_query("SELECT RATE FROM taxes WHERE ID = '" . $prodData['TAXCAT'] . "' LIMIT 1		"));
			$taxRate = $taxR['RATE'];

			$prodPriceNetto = $prodPrice / ($taxRate + 1);
			$prodPriceNetto = number_format($prodPriceNetto, 8, ".", "");

			if ($prodData['PRINTNAME'] == '') $printName = $prodData['NAME'];
			else $printName = $prodData['PRINTNAME'];

			if ($weightCalc === true) {
				# Gewicht/Preis in den Artikel Txt schreiben 
				$prodGewichtDispl = number_format($prodGewicht, 2, ',', '');
				# stückzahl = gewicht, in produkts ist pricesell der Kg Preis
				#function berechne_bruttopreis($netto_preis, $tax_rate, $stueck)
				$priceS = berechne_bruttopreis($prodPrice, $taxRate, $prodGewicht);
				#return(array($brutto_einzel, $brutto_summe, $steuer, $steuer_summe));

				$prodPriceNetto = $prodPrice;
				$prodData['PRINTNAME'] .= "\n" . number_format($priceS[0], 2, ',', '') . "€/kg - " . $prodGewichtDispl . "kg";
			}

			$insQl = mysql_query("INSERT INTO offener_bon SET bon_id = '" . $bonId . "', produkt_id = '" . $prodData['ID'] . "', REFERENCE = '" . $prodData['REFERENCE'] . "', 
												CODE = '" . $prodData['CODE'] . "', NAME = '" . $prodData['NAME'] . "', PRICEBUY = '" . $prodData['PRICEBUY'] . "', PRICESELL = " . $prodPriceNetto . ", 
												CATEGORY = '" . $prodData['CATEGORY'] . "', TAXCAT = '" . $prodData['TAXCAT'] . "', IMAGE = NULL, 
												DISPLAY = '" . $prodData['DISPLAY'] . "', VARPRICE = '" . $prodData['VARPRICE'] . "', printname = '" . $printName . "', 
												NEGATIVEPRICE = '" . $prodData['NEGATIVEPRICE'] . "', PRODUKTORDER = '" . $prodData['PRODUKTORDER'] . "', SICHTBAR = '" . $prodData['SICHTBAR'] . "', 
												supplyprint = '" . $prodData['supplyprint'] . "', articlePrinted = 0, stueck = " . $articleQty . ", tax_rate = '" . $taxRate . "', aus_ls_nr = Null, 
												article_art_id = 0, beilagen_aenderung_minus = '', beilagen_aenderung_plus = '', kunden_id = '" . $custId . "', beilagen_prod_orig_preis='" . $prodPriceNetto . "',
												beilagen_sum_netto = '0', beilagen_sum_brutto = '0', beilagen_basispreis_key='0', benutzer_id = '" . $userId . "', 
												parent_id = '0',   has_childs = '0', has_parent = '0', childPrint = '0', abholschein_nr = NULL");


			if (!$insQl) {
				writeSitposLog(basename(__FILE__) . "*+* " . __LINE__, "Datenbank Error: " . mysql_error());
				file_put_contents('kpcheckit.txt', "\n" . basename(__FILE__) . " / " . __LINE__ . " " . mysql_error() . " - \n", FILE_APPEND);
				echo json_encode(array("Error", "Datenbank Fehler."));

				return false;
			} else {

				echo json_encode(array("", "" . $prodData['NAME'] . " boniert"));
			}
		} else {

			echo json_encode(array("Error","Fehler, Artikel Nummer $prodNo unbekannt."));
		}
	}
}

function functionAdditionalFooterTx()
{
	if (isset($_POST['footerTxtAction']) && $_POST['footerTxtAction'] != "")	$aAction = $_POST['footerTxtAction'];
	$bonFotterAddTxt = "AUSRUCK_EXTRA_FUSSZEILEN";
	$bonFotterAddTxtEnable = "AUSRUCK_EXTRA_FUSSZEILEN_FREIGEBEN";
	$bonFooterAddTxtValue = "AUSRUCK_EXTRA_FUSSZEILEN_WERT";
	$lieferschFotterAddTxt = "AUSDRUCK_EXTRA_FUSSZEILE_AUFTRAG_TEXT";
	$lieferschFotterAddEnable = "AUFTRAG_LIEFER_TERMIN_DRUCKEN";
	$productTxtButtonEnabler = "PRODUKT_TXT_BUTTON";


	if ($aAction == 'lLoad') {
		$extraFooterTx = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $bonFotterAddTxt . "' "));
		$extraFooterTxEnable = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $bonFotterAddTxtEnable . "' "));
		$extraFooterTxVal = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $bonFooterAddTxtValue . "' "));

		$extraFooterTxLieferschein = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $lieferschFotterAddTxt . "' "));
		$extraFooterTxEnableLieferschein = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $lieferschFotterAddEnable . "' "));

		$productTxtBut = mysql_fetch_array(mysql_query("SELECT wert FROM konfiguration WHERE name = '" . $productTxtButtonEnabler . "' "));

		$getAddProdTxt = mysql_query("SELECT id, name, content FROM product_add_txt");
		$addTxtCont = "<div id='configAddProdTxtElements'>
							<p class='adminKonfigExtraFooterHeader'>Anlegen von Produkt Text Elementen.</p>";
		while ($prTxtRow = mysql_fetch_array($getAddProdTxt)) {
			$rId = $prTxtRow['id'];
			$rName = $prTxtRow['name'];
			$rCont = $prTxtRow['content'];

			$addTxtCont .= "<p id='" . $rId . "' class='addProdTxtLine'>
								<input class='addProdTxtNameIpField' type='text' name='addTxtName" . $rId . "' value='" . $rName . "' />
								<textarea class='configProductAddTxtCont' name='addTxtCont" . $rId . "' >" . $rCont . "</textarea>				
								<label for'addTxtDel" . $rId . "' class='addProdTxtDelDiv'>Löschen</label>
								<input type='checkbox' id='addTxtDel" . $rId . "' name='addTxtDel" . $rId . "' class='' />
								<div class='cclear'></div></p>";
		}

		$addTxtCont .= "<button onclick='addProdTxtElem()' id='addProdTxtNextElemBut' class='button_none_float orange' >Neues Element hinzufügen</button>
						<p id='addProdTxtLineNext' class='addProdTxtLine'>
						<input id='addProdTxtNewElemName' class='addProdTxtNameIpField' type='text' name='addTxtName' value='' />
						<textarea class='configProductAddTxtCont' name='addTxtCont' ></textarea></p>
						<p class='addProdTxtFotterMarginElem'></p>
					</div>";



		echo $extraFooterTx[0] . "-#-" . $extraFooterTxEnable[0] . "-#-" . $extraFooterTxVal[0] . "-#-" . $extraFooterTxLieferschein[0] . "-#-" . $extraFooterTxEnableLieferschein[0] . "-#-" . $addTxtCont . "-#-" . $productTxtBut[0];
	}

	if ($aAction == 'sSave') {
		if (isset($_POST['prodTxtButEnabler']) && $_POST['prodTxtButEnabler'] != "")	$prodButTxtEn = $_POST['prodTxtButEnabler'];
		else $prodButTxtEn = "nein";
		if (isset($_POST['footerTxt']) && $_POST['footerTxt'] != "")	$footerTxt = $_POST['footerTxt'];
		if (isset($_POST['footerEnabler']))	$footerEnabler = $_POST['footerEnabler'];
		if (isset($_POST['percentVal']))	$percentVal = $_POST['percentVal'];
		if (isset($_POST['addProdTotalStrg']) && strlen($_POST['addProdTotalStrg']) > 0) {
			$addProdTotalStrg = $_POST['addProdTotalStrg'];
			$addTxtArray = explode("eElem:", $addProdTotalStrg);
			# einzelnen text Elemente kommen in eine Array
		}

		if (isset($_POST['addBonTotalStrg']) && strlen($_POST['addBonTotalStrg']) > 0) {
			$addBonTotalStrg = $_POST['addBonTotalStrg'];
			$addBonTxtArray = explode("eElem:", $addBonTotalStrg);
			#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."Zusatz Bon Txt: ".$addBonTotalStrg." \n", FILE_APPEND);
		}


		if (!$footerTxt || !$footerEnabler || !$percentVal) {
			$respMsg = "Daten Error. ";
			return false;
		}

		if (preg_match('/NaN/', $footerTxt)) {
			$footerTxt = preg_replace('/NaN/', number_format(1, 2, ".", ""), $footerTxt);
		}
		$z = "";
		$updQl = mysql_query("UPDATE konfiguration SET wert = '" . $footerTxt . "' WHERE name= '" . $bonFotterAddTxt . "'");
		if (!$updQl) $z .= mysql_error();
		$updQl2 = mysql_query("UPDATE konfiguration SET wert = '" . $footerEnabler . "' WHERE name= '" . $bonFotterAddTxtEnable . "'");
		if (!$updQl2) $z .= mysql_error();
		$updQl3 = mysql_query("UPDATE konfiguration SET wert = '" . $percentVal . "' WHERE name= '" . $bonFooterAddTxtValue . "'");
		if (!$updQl3) $z .= mysql_error();
		$updQl4 = mysql_query("UPDATE konfiguration SET wert = '" . $prodButTxtEn . "' WHERE name= '" . $productTxtButtonEnabler . "'");
		if (!$updQl4) $z .= mysql_error();

		if (!$updQl || !$updQl2 || !$updQl3  || !$updQl4) $respMsg = "Datenbank Update Error " . __LINE__ . ". " . mysql_error() . "\n" . $z;
		else  $respMsg = "Success Datenbank Update";

		if (sizeof($addBonTxtArray) > 0) {
			for ($i = 1; $i < sizeof($addBonTxtArray); $i++) {
				$elemsBonArray = explode("§|§", $addBonTxtArray[$i]);
				$bonDbId = preg_replace("/[^0-9]/", "", $elemsBonArray[0]);
				$dbName = $elemsBonArray[1];
				$dbCont = $elemsBonArray[2];
				$timeCalcElem = false;

				if (isset($elemsBonArray[4]) && is_numeric($elemsBonArray[4]) && $elemsBonArray[4] > 0) {
					$timeCalcElem = $elemsBonArray[4];
				}

				$x = strpos($dbCont, "\n");
				if (strpos($dbCont, "\n") == 0) $dbCont = preg_replace("/\\n/", "\x20\n", $dbCont, 1);
				$dbBonDel = $elemsBonArray[3];
				if ($dbBonDel == 'dDelete') $deleteBonElem = true;
				else $deleteBonElem = false;

				$checkExistBon = mysql_fetch_array(mysql_query("SELECT name FROM bon_add_fixtxt WHERE id = " . $bonDbId . " "));
				if ($checkExistBon == true) $zuz = "datensatz " . $bonDbId . " / " . $checkExistBon[0] . " exist";
				else $zuz = "datensatz nicht erkannt ! -> content aus DB: " . $checkExistBon[0] . " content aus ajax: " . $elemsBonArray[1] . "";

				#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."db Id: ".$bonDbId." -- checkExist: ".$zuz." \n", FILE_APPEND);

				if ($checkExistBon == true && $deleteBonElem == false) {
					$updDb = mysql_query("UPDATE bon_add_fixtxt SET name= '" . $dbName . "', content = '" . mysql_real_escape_string($dbCont) . "',
								 plus_minuten = '" . $timeCalcElem . "'	WHERE id = " . $bonDbId . "");
					if (!$updDb) writeLog(basename(__FILE__) . " " . __LINE__, "\nmy sql error: " . mysql_error() . "\n");
				} else if ($checkExistBon == true && $deleteBonElem == true) {
					$delDb = mysql_query("DELETE FROM bon_add_fixtxt WHERE id = " . $bonDbId . "");
					if (!$delDb) writeLog(basename(__FILE__) . " " . __LINE__, "\nmy sql error: " . mysql_error() . "\n");
				} else {
					$insDb = mysql_query("INSERT INTO bon_add_fixtxt SET name= '" . $dbName . "', content = '" . $dbCont . "', plus_minuten = '" . $timeCalcElem . "'   ");
					if (!$insDb) writeLog(basename(__FILE__) . " " . __LINE__, "\nmy sql error: " . mysql_error() . "\n");
				}
			}

			#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."Zusatz Bon Txt Array Size: ".sizeof($addBonTxtArray)." check EXIST: ".$checkExistBon[0]." \n", FILE_APPEND);
		}


		if (sizeof($addTxtArray) > 0) {
			for ($i = 1; $i < sizeof($addTxtArray); $i++) {
				$elemsArray = explode("§|§", $addTxtArray[$i]);
				$dbId = preg_replace("/[^0-9]/", "", $elemsArray[0]);
				$dbName = $elemsArray[1];
				$dbCont = $elemsArray[2];

				$x = strpos($dbCont, "\n");
				if (strpos($dbCont, "\n") == 0) $dbCont = preg_replace("/\\n/", "\x20\n", $dbCont, 1);
				$dbDel = $elemsArray[3];
				if ($dbDel == 'dDelete') $deleteElem = true;
				else $deleteElem = false;

				$checkExist = mysql_fetch_array(mysql_query("SELECT name FROM product_add_txt WHERE id = " . $dbId . " "));

				if ($checkExist == true && $deleteElem == false) {
					$updDb = mysql_query("UPDATE product_add_txt SET name= '" . $dbName . "', content = '" . mysql_real_escape_string($dbCont) . "' 
								WHERE id = " . $dbId . "");
					if (!$updDb) writeLog(basename(__FILE__) . " " . __LINE__, "\nmy sql error: " . mysql_error() . "\n");
				} else if ($checkExist == true && $deleteElem == true) {
					$delDb = mysql_query("DELETE FROM product_add_txt WHERE id = " . $dbId . "");
				} else {
					$insDb = mysql_query("INSERT INTO product_add_txt SET name= '" . $dbName . "', content = '" . $dbCont . "'");
				}
			}
		}

		echo $respMsg;
	}
}

function checkPaymentTypeStorno()
{
	$origBonId = "";
	if (isset($_POST['originalBonId']) && $_POST['originalBonId'] >= 0) {
		$origBonId = $_POST['originalBonId'];
		$checkOp = "";
		$bank = false;
		$cashMachine = false;
		$gutschein = false;
		$stQl = mysql_query("SELECT Name FROM abgeschlossener_bon_zahlung WHERE bon_id = $origBonId");
		while ($stRow = mysql_fetch_array($stQl)) {
			if ($stRow['Name'] == 'Bank') $bank = true;
			if ($stRow['Name'] == 'Bankomat') $cashMachine = true;
			if ($stRow['Name'] == 'Gutschein Einlösung') $gutschein = true;
		}
		if ($bank == true && $cashMachine == false) $checkOp = "Die Original Rechnung enthält Bankzahlung.";
		else if ($bank == false && $cashMachine == true) $checkOp = "Die Original Rechnung enthält Bankomatzahlung.";
		else if ($bank == true && $cashMachine == true) $checkOp = "Die Original Rechnung enthält Bank- und Bankomatzahlung.";
		else if ($gutschein == true) $checkOp = "Die Original Rechnung enthält Gutscheinzahlung.";
		else $checkOp = false;
	}

	echo $checkOp;
}

function getLastClosedBon()
{
	# wird nciht verwendet 
	$lastClosedBon = mysql_fetch_array(mysql_query("SELECT MAX(bon_id) FROM abgeschlossener_bon"));

	echo $lastClosedBon[0];
}

function getReprintContent()
{
	if (isset($_POST['reprintListLenght']) && $_POST['reprintListLenght'] != "") $reprintListLenght = $_POST['reprintListLenght'];
	$respOp = "<ul class='reprintDialogList schrift'>";
	$sQ = mysql_query("SELECT bon_id, bon_erstellt_datum FROM abgeschlossener_bon ORDER BY bon_id DESC LIMIT $reprintListLenght");
	while ($listRow = mysql_fetch_array($sQ)) {
		$respOp .= "<li id='" . $listRow['bon_id'] . "reprintElem' onclick=sselctBonToReprint(this.id) >" . $listRow['bon_id'] . " -- " . $listRow['bon_erstellt_datum'] . "</li>";
	}

	$respOp .= "</ul>";

	echo $respOp;
}


// TODO Alex Send Mail
function loadLieferscheine()
{

	if (isset($_POST['lieferschId']) && isset($_POST['auftragsNr'])) {
		$lsId = $_POST['lieferschId'];
		$auftrNr = $_POST['auftragsNr'];
	}

	if (($lsId <= 0 || $lsId == '') && ($auftrNr <= 0  || $auftrNr == '')) $whereClaus = "";
	else if ($lsId > 0 && ($auftrNr <= 0  || $auftrNr == '')) $whereClaus = " AND lieferschein_referenz.lieferschein_id = " . $lsId . "  ";
	else if (($lsId <= 0  || $lsId == '') && $auftrNr > 0) $whereClaus = " AND lieferschein_referenz.auftrags_nr = " . $auftrNr . "  ";
	else if ($lsId > 0 && $auftrNr > 0) $whereClaus = " AND lieferschein_referenz.auftrags_nr = " . $auftrNr . " AND lieferschein_referenz.lieferschein_id = " . $lsId . "  ";

	$outputLs = "<table class='tableLieferscheine'>
					<tr><th ></th><th ><input id='lsSearchLsId' class='lieferscheinSerchField' type='text' /></th>
								<th ><input id='lsSearchAuftrNr' class='lieferscheinSerchField' type='text' /></th>
								<th colspan='3'><button class='button orange loadLsButton' onclick='loadLieferscheine()' >Anzeigen</button>
								<button class='button orange loadLsButton' onclick='clearAndLoadLieferscheine()' >Auswahl zurücksetzen</button></th><tr>
					<tr>
					<th>Funktionen</th><th class='lsTable_B'>Ls-Nr:</th><th class='lsTable_B'>Auftr:</th><th  class='lsTable_C' >Datum</th>
							<th  class='lsTable_D' >Artikel</th><th class='lsTable_E' >Kunde</th>
					</tr>";

	$countR = 0;
	$xQl = mysql_query("SELECT lieferschein_referenz.lieferschein_id, lieferschein_referenz.auftrags_nr, lieferschein_referenz.kunden_id, 
									PRICESELL, printname, lieferschein_referenz.lieferschein_erstellt_datum, ref_id, lieferschein_referenz.lieferschein_id AS lsNr
							FROM lieferschein_referenz 
							LEFT JOIN lieferschein ON lieferschein_referenz.id = lieferschein.ref_id
							WHERE geloescht <> 1 " . $whereClaus . "
							GROUP BY lieferschein_referenz.id
							ORDER BY lieferschein_referenz.id ASC, lieferschein.id ASC");

	while ($xRow = mysql_fetch_array($xQl)) {
		$lsDate = strtotime($xRow['lieferschein_erstellt_datum']);
		if ($xRow['kunden_id'] > 0) {
			$kdData = mysql_fetch_assoc(mysql_query("SELECT Firma, vorname, nachname FROM kunden WHERE id = " . $xRow['kunden_id'] . " "));
			$printKd = $kdData['Firma'] . " " . $kdData['vorname'] . " " . $kdData['nachname'];
		} else $printKd = "";
		if ($countR % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$outputLs .= "<tr class='" . $bg . "'>
						<td class='lsTable_A' >
							<button class='lieferscheinViewBut' onclick=\"displayLieferschein('" . $xRow['ref_id'] . "')\" ></button>
							<button class='lieferscheinBonBut' onclick=\"bon_aus_lieferschein('" . $xRow['ref_id'] . "')\" ></button>
							<button class='lieferscheinPrintBut' onclick=\"print_lieferschein('" . $xRow['ref_id'] . "', '" . $xRow['lsNr'] . "')\" ></button>
						</td>
						<td class='lsTable_B' >" . $xRow['lieferschein_id'] . "</td><td class='lsTable_B_2' >" . $xRow['auftrags_nr'] . "</td>
							<td class='lsTable_C' >" . date('Y-m-d', $lsDate) . "</td>
							<td class='lsTable_D' ><div class='lieferscheinTableFieldDiv'>" . $xRow['printname'] . "</div></td>
							<td class='lsTable_E' ><div class='lieferscheinTableFieldDiv'>" . $printKd . "</div></td>
				</tr>";

		$lsId = $xRow['ref_id'];

		$countR++;
	}

	$hiddenMsg = "<input  id='displayMsg' value='" . $lsId . "' type='hidden' />";

	$outputLs .= "</table >" . $hiddenMsg;



	echo $outputLs;
}

function displayLieferschein()
{
	if (isset($_POST['lieferschein_id'])) $lieferscheinId = $_POST['lieferschein_id'];
	else {
		echo "Lieferschein Id nicht verfügbar.";
		return false;
	}

	$displayData = "<table class='displayLieferscheinTable'>
						<tr><th>Art.</th><th>Pr.</th><th>Stk.</th><th>Sum.</th></tr>";


	$xQl = mysql_query("SELECT lieferschein.ID, PRICESELL, tax_rate, stueck, printname, lieferschein_referenz.kunden_id, 
									lieferschein_referenz.lieferschein_erstellt_datum AS lsDate, lieferschein_referenz.lieferschein_id, has_childs, has_parent, disable_refbon_print
								FROM lieferschein_referenz
								LEFT JOIN lieferschein ON lieferschein_referenz.id = lieferschein.ref_id
								WHERE lieferschein_referenz.id = " . $lieferscheinId . " AND lieferschein_referenz.geloescht <> 1 ");
	while ($xRow = mysql_fetch_array($xQl)) {

		if ($xRow['has_childs'] == 1) {
			if (EINZELPREIS_IM_BON_BRUTTO == strtolower('ja')) {
				$findChilds = mysql_fetch_array(mysql_query("SELECT SUM(PRICESELL* (1 + tax_rate)) AS combiEinzelPr FROM lieferschein 
											WHERE parent_id = " . $xRow['ID'] . " "));
			} else {
				$findChilds = mysql_fetch_array(mysql_query("SELECT SUM(PRICESELL) AS combiEinzelPr FROM lieferschein 
											WHERE parent_id = " . $xRow['ID'] . " "));
			}

			$displayData .= "<tr>
											<td class='displayLieferscheinTd_A' >" . $xRow['printname'] . "</td>
											<td class='displayLieferscheinTd_B' >" . number_format($findChilds['combiEinzelPr'], 2, ",", ".") . "</td>
											<td class='displayLieferscheinTd_C' >" . number_format($xRow['stueck'], 1, ",", "") . "</td>
											<td class='displayLieferscheinTd_D' >" . number_format($findChilds['combiEinzelPr'] * $xRow['stueck'], 2, ",", ".") . "</td>
						
							</tr>";
		} else if ($xRow['has_parent'] > 0) {
			continue;			# hier werden die Inhalte (Teilartikel) zum Combiartikel übersprungen, nicht angezeigt
		} else {

			if (EINZELPREIS_IM_BON_BRUTTO == strtolower('ja')) {
				$vk_preis_anzeige = $xRow['PRICESELL'] * (1 + $xRow['tax_rate']);
			} else {
				$vk_preis_anzeige = $xRow['PRICESELL'];
			}

			$vk_preis_anzeige = number_format($vk_preis_anzeige, 2, ",", ".");
			$qTy = number_format($xRow['stueck'], 1, ",", "");
			$vk_summe_anzeige = number_format(($xRow['PRICESELL'] * (1 + $xRow['tax_rate'])) * $xRow['stueck'], 2, ",", ".");


			$displayData .= "<tr><td class='displayLieferscheinTd_A' >" . $xRow['printname'] . "</td><td class='displayLieferscheinTd_B' >" . $vk_preis_anzeige . "</td>
										<td class='displayLieferscheinTd_C' >" . $qTy . "</td><td class='displayLieferscheinTd_D' >" . $vk_summe_anzeige . "</td>
									</tr>";
		}
		$kdId = $xRow['kunden_id'];
		$datum = $xRow['lsDate'];
		$refPrindDisable = $xRow['disable_refbon_print'];
		$lieferschNr = $xRow['lieferschein_id'];
	}
	$displayData .= "</table>";

	if (mysql_num_rows($xQl) > 0) {
		$displayHead = "";
		if (defined('AUFTRAG_REFERENZBON_DRUCKEN') && strtolower(AUFTRAG_REFERENZBON_DRUCKEN) == 'ja') {
			if ($refPrindDisable == 1) $refBonPrintNote = "Nein";
			else  $refBonPrintNote = "Ja";
			$displayHead .= "<div class='liefersch_head_txt'><span style='font-size:.9em'>Ref. Bon Druck: </span>" . $refBonPrintNote . "</div><hr />";
		}
		$displayHead .= "<div class='liefersch_head_txt'>Lieferschein Nr: " . $lieferschNr . "</div>";
		$displayHead .= "<div class='liefersch_head_txt'>Datum: " . $datum . "</div>";

		$displayHead .= "<hr />";
		if ($kdId > 0) {
			$displayKdData = "";
			$kundenDetails = mysql_fetch_array(mysql_query("SELECT * FROM kunden WHERE id = " . $kdId . " "));
			if ($kundenDetails['Firma'] != '') $displayHead .= "<div class='liefersch_date_txt'>" . $kundenDetails['Firma'] . "</div>";

			if (strlen($kundenDetails['anrede']) > 0) $cAnr = $kundenDetails['anrede'] . " ";
			else $cAnr = "";
			if (strlen($kundenDetails['titel']) > 0) $cTitel = $kundenDetails['titel'] . " ";
			else $cTitel = "";

			if (isset($kundenDetails['vorname']) && (strlen($kundenDetails['vorname']) > 0 || strlen($kundenDetails['nachname']) > 0)) {
				if (isset($kundenDetails['vorname']) && strlen($kundenDetails['vorname']) > 0 && strlen($kundenDetails['nachname']) > 0) $printN = $kundenDetails['vorname'] . " " . $kundenDetails['nachname'];
				else if (isset($kundenDetails['vorname']) && strlen($kundenDetails['vorname']) == 0 && strlen($kundenDetails['nachname']) > 0) $printN =  $kundenDetails['nachname'];
				else if (isset($kundenDetails['vorname']) && strlen($kundenDetails['vorname']) > 0 && strlen($kundenDetails['nachname']) == 0) $printN =  $kundenDetails['vorname'];

				$displayHead .= "<div class='liefersch_date_txt'>" . $cAnr . $cTitel . $printN . "</div>";
			}

			if ($kundenDetails['strasse1'] != false) $displayHead .= "<div class='liefersch_date_txt'>" . $kundenDetails['strasse1'] . "</div>";
			if ($kundenDetails['strasse2'] != false) $displayHead .= "<div class='liefersch_date_txt'>" . $kundenDetails['strasse2'] . "</div>";
			if ($kundenDetails['plz'] != false || $kundenDetails['Ort'] != false)
				$displayHead .= "<div class='liefersch_date_txt'>" . $kundenDetails['plz'] . " " . $kundenDetails['Ort'] . "</div>";

			$displayHead .= "<hr />";
		}

		echo $displayHead . $displayData;
	}
}

function bonAusLieferschein()
{
	$errorMsg = "";
	if (isset($_POST['lieferschein_id'])) $lieferscheinId = $_POST['lieferschein_id'];
	else {
		echo "Lieferschein Id nicht verfügbar.";
		return false;
	}
	if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
		$currentCart = $_SESSION['gastroTisch'];
		$checkEmpty = mysql_query("SELECT ID FROM offener_bon WHERE bon_id = " . $currentCart . " ");
		if (mysql_num_rows($checkEmpty) > 0) {
			echo "cartNotEmpty";
			writeLog(basename(__FILE__) . " " . __LINE__, "tisch nicht leer ???? ");
			return false;
		} else {
			$newWarenkId = $currentCart;
		}
	} else if (defined('WARENKOERBE_ABLEGEN') && strtolower(WARENKOERBE_ABLEGEN) == 'ja') {
		$currentCart = $_SESSION['ablageWarenkorb'];
		$checkEmpty = mysql_query("SELECT ID FROM offener_bon WHERE bon_id = " . $currentCart . " ");
		if (mysql_num_rows($checkEmpty) > 0) {
			echo "cartNotEmpty";
			return false;
		} else {
			$newWarenkId = $currentCart;
		}
	} else {
		$warkId = mysql_fetch_array(mysql_query("SELECT MAX(bon_id) FROM offener_bon"));
		if ($warkId[0] == NULL) $newWarenkId = 1;
		else $newWarenkId = $warkId[0] + 1;
	}

	$copyQl = mysql_query("INSERT INTO offener_bon
						(bon_id, produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, 
						NEGATIVEPRICE, PRODUKTORDER, SICHTBAR,  supplyprint, articlePrinted, stueck, tax_rate, kunden_id, parent_id, has_childs, 
						has_parent, childPrint, aus_ls_nr)
						SELECT " . $newWarenkId . ", produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, 
						NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, NOW(), articlePrinted, stueck, tax_rate, lieferschein_referenz.kunden_id, 
							parent_id, has_childs, has_parent, childPrint, lieferschein_referenz.lieferschein_id 
						FROM lieferschein_referenz
						LEFT JOIN lieferschein ON lieferschein_referenz.id = lieferschein.ref_id
						WHERE lieferschein_referenz.id = " . $lieferscheinId . "  ");


	if (!$copyQl) $errorMsg .= "Datenbank Bon aus Lieferschein erstellen Error. " . mysql_error();

	else {
		#$updQl=mysql_query("UPDATE lieferschein_referenz SET geloescht = 1 WHERE id = ".$lieferscheinId." ");			
		#if(!$updQl) $errorMsg.="Datenbank Lieferschein Referenz update (löschen) Error. ".mysql_error();
		# lieferschein wird ab version 1.65 erst nach bon abschluss gelöscht
		$_SESSION['lieferschein_print_disable'] = $newWarenkId;
	}

	if (strtolower(GASTRO_VERSION) != 'ja' && strtolower(WARENKOERBE_ABLEGEN) != 'ja') {
		# wenn gastro od warenkorb version wurde der tisch bzw warenkorb vor dem lieferschein to bon definiert ??
		$_SESSION['aktuellerWarenkorb'] = $newWarenkId;
	}

	echo "Offenen Bon aus Lieferschein Id " . $lieferscheinId . " erstellt. \n" . $errorMsg;
}

function loadLieferschByCust()
{

	$getLs = mysql_query("SELECT lieferschein_referenz.id AS dbId, lieferschein_referenz.lieferschein_id AS lsNr, 
								lieferschein_referenz.lieferschein_erstellt_datum AS lsDate, lieferschein_referenz.kunden_id AS kdId, 
								NAME, printname, kundennummer, Firma, vorname, nachname, CATEGORY, PRICESELL,
								tax_rate, stueck, ref_id
								FROM lieferschein_referenz 
								LEFT JOIN lieferschein ON lieferschein_referenz.id = lieferschein.ref_id
								LEFT JOIN kunden ON kunden.id = lieferschein_referenz.kunden_id
								WHERE lieferschein_referenz.kunden_id > 0 AND lieferschein_referenz.geloescht = 0 AND has_parent = 0 AND verrechnet_bon_nr = 0
								ORDER BY lieferschein_referenz.kunden_id, lieferschein_referenz.lieferschein_erstellt_datum");
	$lsOp = "";
	$lsGroup = false;
	$lsCount = 0;

	$lsVerArray = array();
	while ($getLsR = mysql_fetch_array($getLs)) {
		if ($lsGroup != $getLsR['lsNr']) {
			if (strlen($getLsR['kundennummer']) > 0) $kdNr = $getLsR['kundennummer'];
			else $kdNr = "&nbsp;";
			if (strlen($getLsR['Firma']) > 0) $kdFa = $getLsR['Firma'] . " ";
			else $kdFa = "";
			if (strlen($getLsR['vorname']) > 0) $kdVn = $getLsR['vorname'] . " ";
			else $kdVn = "";
			if (strlen($getLsR['nachname']) > 0) $kdNn = $getLsR['nachname'];
			else $kdNn = "";
			$kdData = $kdFa . $kdVn . $kdNn;

			$dDate = strtotime($getLsR['lsDate']);
			$dateTime = date('j.n.Y H:i', $dDate);
			$lsRef = $getLsR['ref_id'];
			if ($lsCount % 2 == 0) $bg = 'bgA';
			else $bg = '';

			/*
				$lsOp.="<div class='lsVerrHead_A ".$bg."'>&nbsp;<label class='cbLarge'><input type='checkbox' name='dbId".$getLsR['dbId']."' class='lsVerrCb cbLarge' ><span></span></label></div>
				*/

			$lsSum = mysql_fetch_array(mysql_query("SELECT SUM((PRICESELL*stueck)*(1+tax_rate)) AS lsSum FROM lieferschein 
										WHERE ref_id = '" . $lsRef . "' AND has_childs = 0 "));
			
			// TODO Alex send Mail
			$lsOp .= "<div class='lsVerrHead_A " . $bg . "'>&nbsp;<label class='cbLarge'><input type='checkbox' name='dbId" . $getLsR['dbId'] . "' class='lsVerrCb cbLarge' style='visibility:hidden;' />
								<span style='position:absolute; top:0;' ></span></label></div>
							
							<div class='lsVerrHead_B " . $bg . "'>" . $getLsR['lsNr'] . "</div>
							<div class='lsVerrHead_C " . $bg . "'>" . $kdData . "</div>
							<div class='lsVerrHead_C_2 " . $bg . "'>" . $kdNr . "</div>
							<div class='lsVerrHead_D " . $bg . "'>" . $dateTime . "</div>
							<div class='lsVerrHead_E " . $bg . "'>" . number_format($lsSum['lsSum'], 2, ",", ".") . "</div>
							<div class='lsVerrHead_F'><button class='lsVerrDisplBut' onclick=\"displayVerrLs('" . $getLsR['lsNr'] . "')\" ></button></div>
							<div class='cclear'></div>
						
						<div class='lsVerrDetailHead" . $getLsR['lsNr'] . " lsVerrHead' >
							<div class='lsVerrCol_A'>Artikel</div><div class='lsVerrCol_B'>Preis</div><div class='lsVerrCol_C'>Stueck</div>
							<div class='lsVerrCol_D'>Summe</div>
						<div class='cclear'></div></div>";
			$lsCount++;
			$lsSumme = 0;
		}
		$lsOp .= "<div class='lsVerrDetail" . $getLsR['lsNr'] . " lsVerrDetails' >";
		if (strlen($getLsR['printname']) > 0) $prodN = $getLsR['printname'];
		else $prodN = $getLsR['NAME'];
		$sumPr = ($getLsR['PRICESELL'] * (1 + $getLsR['tax_rate'])) * $getLsR['stueck'];
		$lsOp .= "<div class='lsVerrCol_A'>" . $prodN . "</div>
								<div class='lsVerrCol_B'>" . number_format($getLsR['PRICESELL'] * (1 + $getLsR['tax_rate']), 2, ",", ".") . "</div>
								<div class='lsVerrCol_C'>" . number_format($getLsR['stueck'], 1, ",", ".") . "</div>
								<div class='lsVerrCol_D'>" . number_format($sumPr, 2, ",", ".") . "</div>
								<div class='cclear'></div>";
		$lsOp .= "</div>";
		$lsSumme += $sumPr;

		$lsGroup = $getLsR['lsNr'];
	}
	if ($lsCount == 0) $lsOp .= "<p>Kein offener Lieferschein der einem Kunden zugeordnet ist gefunden.</p>";
	echo json_encode(array($lsOp, "Ajax Funktion load ls"));
}



function lieferscheineVerrechnen()
{
	if (isset($_POST['lsData'])) {
		$lsListArray = json_decode(stripslashes($_POST['lsData']), true);
		$respOp = "";

		$lsVerrechnungsError = false;
		$zahlungsSelIx = false;
		$zahlungName = false;
		if (isset($_POST['zahlungsSelIx']) && is_numeric($_POST['zahlungsSelIx'])) $zahlungsSelIx = $_POST['zahlungsSelIx'];
		if (isset($_POST['zahlungsName']) && strlen($_POST['zahlungsName']) > 0) $zahlungName = $_POST['zahlungsName'];

		if (isset($_POST['a4Ausgabe']) && strtolower($_POST['a4Ausgabe']) == 'a4ausgabe') $printTargetA4 = true;
		else $printTargetA4 = false;

		if ($printTargetA4 == true) {
			$getPDF_A4_rechung = mysql_fetch_array(mysql_query("SELECT * FROM pdf_a4_rechnung WHERE name = 'rechnungs_template_a4'"));
			eval($getPDF_A4_rechung['a4_template']);

			#require_once("a4_rechnung_erstellen.php");						
		}

		$kassaAbschlId = ist_kassa_offen();
		if ($kassaAbschlId == false || $zahlungName == false || $zahlungsSelIx == false) {
			$lsVerrechnungsError = true;
			echo json_encode(array("Error", "Fehler, Prüfen Sie ob die Kassa eröffnet ist und eine gültige Zahlungsform gewählt wurde."));
			return false;
		}

		if (count($lsListArray) > 0) {
			$xIds = join("','", $lsListArray);
			$getKdNr = mysql_query("SELECT DISTINCT(kunden_id) FROM lieferschein_referenz
											WHERE id IN ('" . $xIds . "') ");
			$anzahlInvoice = mysql_num_rows($getKdNr);
			if ($anzahlInvoice > 3) set_time_limit($anzahlInvoice * 15);


			$vkId = $_SESSION["userId"];
			$printArray = array();
			while ($getCust = mysql_fetch_array($getKdNr)) {
				$invSum = 0;
				$invSumTax = 0;
				# transaction je kunde 
				//mysql_query("START TRANSACTION");
				starte_transaktion();
				$lsCust = $getCust['kunden_id'];
				$getLs = mysql_query("SELECT lieferschein_referenz.lieferschein_id AS lsNr, lieferschein_referenz.lieferschein_erstellt_datum AS lsDate, 
									lieferschein_referenz.kunden_id AS kdId, NAME, printname, kundennummer, Firma, vorname, nachname, CATEGORY, PRICESELL,
									tax_rate, TAXCAT, stueck, produkt_id, has_parent, has_childs, parent_id, childPrint, lieferschein_referenz.id AS lsId
									FROM lieferschein_referenz 
									LEFT JOIN lieferschein ON lieferschein_referenz.id = lieferschein.ref_id
									LEFT JOIN kunden ON kunden.id = lieferschein_referenz.kunden_id
									WHERE lieferschein_referenz.kunden_id = '" . $lsCust . "' AND lieferschein_referenz.id IN ('" . $xIds . "')
									AND lieferschein_referenz.geloescht = 0");
				$insQl = mysql_query("INSERT INTO abgeschlossener_bon SET kassa_abschluss_id = '" . $kassaAbschlId . "', 
												kunden_id = '" . $lsCust . "', verkaufer_id = '" . $vkId . "',
												bon_erstellt_datum = NOW(), gastro_tisch_id = '0'	");
				$insBonId = mysql_insert_id();
				if (!$insQl) {
					$lsVerrechnungsError = true;
				}

				while ($getLsR = mysql_fetch_array($getLs)) {

					$prodId = $getLsR['produkt_id'];
					$prodName = $getLsR['NAME'];
					$prodPrintName = $getLsR['printname'];
					$prodCat = $getLsR['CATEGORY'];
					$prodTaxcat = $getLsR['TAXCAT'];
					$prodTaxrate = $getLsR['tax_rate'];
					$prodQty = $getLsR['stueck'];
					$prodHasParent = $getLsR['has_parent'];
					$prodHasChild = $getLsR['has_childs'];
					$prodParentId = $getLsR['parent_id'];
					$prodChildPrint = $getLsR['childPrint'];
					$prodLsSource = $getLsR['lsId'];

					$hasP = $getLsR['has_parent'];
					if ($hasP > 0) $parentId = $getLsR['has_parent'];
					else $parentId = 0;

					if ($getLsR['parent_id'] > 0 && $getLsR['has_childs'] == 1) {
						$isParentId = $getLsR['parent_id'];
						$getLsR["PRICESELL"] = 0;
					} else $isParentId = 0;

					$invSum += $getLsR['PRICESELL'] * $getLsR['stueck'];
					$invSumTax += ($getLsR['PRICESELL'] * $getLsR['stueck']) * (1 + $getLsR['tax_rate']);
					$prodPricesell = $getLsR['PRICESELL'];

					list($einzel_brutto, $gesamt_brutto, $steuer_einzel, $steuer_gesamt) = berechne_bruttopreis($prodPricesell, $prodTaxrate, $prodQty);

					$insPrQl = mysql_query("INSERT INTO abgeschlossener_bon_produkte SET bon_id= '" . $insBonId . "', produkt_id = '" . $prodId . "',
												PRICESELL = '" . $prodPricesell . "', 
												PRICESELL_brutto='" . $einzel_brutto . "',
												PRICESELL_brutto_gesamt='" . $gesamt_brutto . "',
												tax='" . $steuer_einzel . "',
												tax_gesamt='" . $steuer_gesamt . "',
												NAME = '" . $prodName . "', printname = '" . $prodPrintName . "', 
												CATEGORY = '" . $prodCat . "', TAXCAT = '" . $prodTaxcat . "', tax_rate = '" . $prodTaxrate . "', stueck = '" . $prodQty . "', 
												has_childs = '" . $prodHasChild . "', parent_id = '" . $prodHasParent . "', childPrint = '" . $prodChildPrint . "', 
												isparent_id='" . $isParentId . "', lsSource = '" . $prodLsSource . "'
												");
					if (!$insPrQl) {
						$lsVerrechnungsError = true;
						writeLog(basename(__FILE__) . " " . __LINE__, "ins Prod error: " . mysql_error());
					}
				}

				# COMBI ARTIKEL !!!!!
				# Parents suchen und duchlaufen, updaten schaffen die Verbindung der childs zu den Parents nach DB id 				
				$searchParents = mysql_query("SELECT ID, bon_id, parent_id, isparent_id FROM abgeschlossener_bon_produkte WHERE has_childs = 1 AND bon_id = " . $insBonId . "");
				while ($searchParentRow = mysql_fetch_array($searchParents)) {
					$updateChilds = mysql_query("UPDATE abgeschlossener_bon_produkte SET parent_id = " . $searchParentRow['ID'] . " 
											WHERE parent_id = " . $searchParentRow['isparent_id'] . " AND bon_id = " . $insBonId . "  ");
					$updateParent = mysql_query("UPDATE abgeschlossener_bon_produkte SET isparent_id = " . $searchParentRow['ID'] . "
											WHERE ID = " . $searchParentRow['ID'] . " AND bon_id = " . $insBonId . "  ");

					if (!$updateChilds || !$updateParent) $lsVerrechnungsError = true;
				}



				$updBon = mysql_query("UPDATE abgeschlossener_bon SET gesamt_summe = '" . $invSumTax . "' WHERE bon_id = " . $insBonId . " ");
				if (!$updBon) {
					$lsVerrechnungsError = true;
				}

				# steuern rechnen und einfügen -> funktion steuern_berechnen holt daten aus dem offener_bon, nicht wirklich geeignet !						
				$taxQl = mysql_query("SELECT SUM(pricesell*stueck) AS gesamtpreis, taxcat, tax_rate 
									FROM abgeschlossener_bon_produkte 
									WHERE bon_id='" . $insBonId . "' AND has_childs <> 1 GROUP BY tax_rate");
				if (!$taxQl) {
					writeLog(basename(__FILE__) . " " . __LINE__, "ins zahlung error: " . mysql_error());
					$lsVerrechnungsError = true;
				} else {
					while ($taxRow = mysql_fetch_array($taxQl)) {
						$taxRate = $taxRow['tax_rate'];
						$gesamtpreis = $taxRow['gesamtpreis'];
						$taxIns = mysql_query("INSERT INTO abgeschlossener_bon_steuern SET bon_id = '" . $insBonId . "', gesamt_betrag='" . $gesamtpreis . "',
											tax_rate = '" . $taxRate . "' 	");
					}
				}
				$insZaQl = mysql_query("INSERT INTO abgeschlossener_bon_zahlung SET bon_id = " . $insBonId . ", 
										Name='" . $zahlungName . "', zahlbetrag='" . $invSumTax . "', zahlbetrag_tatsaechlich='" . $invSumTax . "' ");
				if (!$insZaQl) {
					writeLog(basename(__FILE__) . " " . __LINE__, "ins zahlung error: " . mysql_error());
					$lsVerrechnungsError = true;
				}

				# wenn kunde inserted, rech summe auf null setzen
				$invSum = 0;

				$dep_table_write_result = dep_table_schreiben($insBonId, false);

				$updLs = mysql_query("UPDATE lieferschein_referenz SET geloescht = 1, verrechnet_bon_nr = '" . $insBonId . "'
											WHERE kunden_id = '" . $lsCust . "' AND id IN ('" . $xIds . "') ");
				if (!$updLs) {
					writeLog(basename(__FILE__) . " " . __LINE__, "ls update Error: " . mysql_error());
					$lsVerrechnungsError = true;
				}

				if ($lsVerrechnungsError == false) {
					mysql_query("COMMIT");
					array_push($printArray, $insBonId);
				} else {
					mysql_query("ROLLBACK");
					$lsVerrechnungsError = false;
				}
				mysql_query("set autocommit=1");
			}
			$respOp .= "\n";

			$sourceParam = "PrintBankdata";

			$a4PrintArray = array();
			for ($i = 0; $i < count($printArray); $i++) {
				if (defined('AUSDRUCK_RECHNUNGSBON_PDF') && strtolower(AUSDRUCK_RECHNUNGSBON_PDF) == 'ja' && $printTargetA4 == false) {
					$printRes = false;
					bon_ausdrucken_pdf($printArray[$i], 150, "lieferscheineVerrechnung", false, false, false);
				} else if ($printTargetA4 == true) {
					# funktion deklaration mit eval vor der loop, sonst wird es mehrfach deklariert -> error
					#$printResult=a4pdf_DB($printArray[$i], false, false, '');
					array_push($a4PrintArray, $printArray[$i]);
				}
			}
			$respOp .= "<p>" . count($printArray) . " Rechnungen Erstellt.</p>";
			$out1 = ob_get_contents();

			set_time_limit(30);
			echo json_encode(array($respOp, "Verrechnung Ls", $out1, json_encode($a4PrintArray)));
		} else echo json_encode(array("Error", "Fehler, Prüfen Sie ob mindestens ein Lieferschein ausgewählt wurde."));
	} else echo "lieferschein Daten nicht gefunden";
}


function lieferscheineVerrechnenA4Print()
{
	if (isset($_POST['bonNo']) && $_POST['bonNo'] > 0) $bonToPrint = $_POST['bonNo'];
	else {
		echo "Fehler leine Bon Nr ...";
		return false;
	}

	$getPDF_A4_rechung = mysql_fetch_array(mysql_query("SELECT * FROM pdf_a4_rechnung WHERE name = 'rechnungs_template_a4'"));
	eval($getPDF_A4_rechung['a4_template']);

	$printResult = a4pdf_DB($bonToPrint, false, false, '');

	// schau nach, ob der Druck im Browser passieren soll
	if ($printResult[1] == 'browserPrint') {
		$filename = $printResult[2];
		//window.open(browserPrintTarget, '_blank');
		echo json_encode(array("filename" => $filename));
	}
	//print_r($printResult);
	//echo "lieferscheineVerrechnenA4Print  fertig $bonToPrint";


}


function clearSelectedCustomer()
{
	if (session_status() !== PHP_SESSION_ACTIVE)
		session_start();

	
	$currentCart = $_SESSION['aktuellerWarenkorb'];
	echo "Bon ID: ".$currentCart."<br>";
	if (isset($_SESSION['customerToEmptyBon'])) {
		unset($_SESSION['customerToEmptyBon']);
	}

	$resetQl = mysql_query("UPDATE offener_bon SET kunden_id= 0 WHERE bon_id = $currentCart ");
	if (!$resetQl) {
		echo "ERROR, Kunde konnte nicht aus dem Datensatz gelöscht werden. " . mysql_error();
		die();
	} else {
		echo "Success, Kunde aus dem offenen Bon gelöscht.";
	}
}


function writeCustomerToDb()
{

	$customerId = false;
	$callSource = false;
	if (isset($_POST['customerId']) && $_POST['customerId'] > 0) $customerId = $_POST['customerId'];
	if (isset($_POST['callSource']) && strlen($_POST['callSource']) > 1) $callSource = $_POST['callSource'];
	$xMsg = "";
	# ean13call ist Preisgruppen, soma call von kundenkarte
	if ($callSource == 'rechnungsModal' || $callSource == 'bonDialog' || $callSource == 'ediImport' || $callSource == 'ean13call') {
		#writeLog(basename( __FILE__)." ". __LINE__ , "function -> writeCustomerToDb -> ".KUNDENAUSWAHL_INFO_DIALOG." callSource-> ".$callSource."		\n");	

		if (session_status() == 0) {
			session_start();
		}

		if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') $currentCart = $_SESSION['gastroTisch'];
		else if (defined('WARENKOERBE_ABLEGEN') && strtolower(WARENKOERBE_ABLEGEN) == 'ja') $currentCart = $_SESSION['ablageWarenkorb'];
		else $currentCart = $_SESSION['aktuellerWarenkorb'];

		$checkOpenCart = mysql_fetch_array(mysql_query("SELECT ID, kunden_id FROM offener_bon WHERE bon_id = $currentCart"));

		if (isset($_SESSION["customerToEmptyBon"])) $checkCustToEmptyBon = $_SESSION["customerToEmptyBon"];
		else $checkCustToEmptyBon = 0;

		if ($callSource == 'bonDialog' && strtolower(KUNDENAUSWAHL_INFO_DIALOG) == 'ja' && ($checkOpenCart['kunden_id'] > 0 || $checkCustToEmptyBon > 0)) {
		}

		if (!$checkOpenCart && mysql_error() == false) {

			$_SESSION["customerToEmptyBon"] = $customerId;
			$custData = mysql_fetch_array(mysql_query("SELECT Firma, vorname, nachname, plz, Ort, zone,id,kundennummer  FROM kunden WHERE id='" . $customerId . "' AND geloescht = 0 LIMIT 1"));

			if (defined('KUNDENANZEIGE_VERKAUFSMASKE') && strlen(KUNDENANZEIGE_VERKAUFSMASKE) > 1) {

				$samplStrCut = preg_replace('/[^FAVNNNPZOTIDKN;]/', '', strtoupper(KUNDENANZEIGE_VERKAUFSMASKE));
				
				$custAr = explode(";", $samplStrCut);
				
				for ($i = 0; $i < sizeof($custAr); $i++) {
					
					if ($custAr[$i] == 'FA') $custAr[$i] = $custData['Firma'];
					else if ($custAr[$i] == 'VN') $custAr[$i] = $custData['vorname'];
					else if ($custAr[$i] == 'NN') $custAr[$i] = $custData['nachname'];
					else if ($custAr[$i] == 'PZ') $custAr[$i] = $custData['plz'];
					else if ($custAr[$i] == 'OT') $custAr[$i] = $custData['Ort'];
					else if ($custAr[$i] == 'ZO') $custAr[$i] = $custData['zone'];
					else if ($custAr[$i] == 'ID') $custAr[$i] = $custData['id'];
					else if ($custAr[$i] == 'KN') $custAr[$i] = $custData['kundenummer'];
					else $custAr[$i] = "";
				}

				$customerData = implode(" ", $custAr);
			} else $customerData = $cFirma . $cName;

			$xMsg .= "Kein offener Bon, " . $customerData;
		} else if (!$checkOpenCart && mysql_error() == true) $xMsg = "Datenbank Error, " . mysql_error();
		else if ($checkOpenCart[0] > 0) {
			if (isset($_SESSION["customerToEmptyBon"])) unset($_SESSION['customerToEmptyBon']);
			$updQl = mysql_query("UPDATE offener_bon SET kunden_id = $customerId WHERE bon_id = $currentCart");
			$xMsg .= "Kunden dem offen Bon " . $checkOpenCart[0] . " zugeordnet";
		} else {
			$xMsg .= "Error / Fehler -> Kunde konnte weder einen Bon zugeordnet, noch konnte eine Session gestzt werden.";
		}
	} else if ($callSource == 'gutscheinModal' || $callSource == 'gutscheinAdminModal') {
		$getCustData = mysql_fetch_array(mysql_query("SELECT Firma, vorname, nachname, strasse1, strasse2, plz, Ort, zone,id FROM kunden WHERE id = " . $customerId . " AND geloescht = 0 "));
		
		$fa = "";
		if (strlen($getCustData['Firma']) > 0) $fa = $getCustData['Firma'] . " ";
		
		$vn = "";
		if (strlen($getCustData['vorname']) > 0) $vn = $getCustData['vorname'] . " ";
		
		$nn = "";
		if (strlen($getCustData['nachname']) > 0) $nn = $getCustData['nachname'] . " ";
		
		$st = "";
		if (strlen($getCustData['strasse1']) > 0) $st = $getCustData['strasse1'] . " ";
		
		$pl = "";
		if (strlen($getCustData['plz']) > 0) $pl = $getCustData['plz'] . " ";
		
		$ot = "";
		if (strlen($getCustData['Ort']) > 0) $ot = $getCustData['Ort'] . " ";
		
		$zo = "";
		if (strlen($getCustData['zone']) > 0) $zo = $getCustData['zone'] . " ";
		
		$id = "";
		if (strlen($getCustData['id']) > 0) $id = $getCustData['id'] . " ";

		$xMsg = $zo . $fa . $nn . $vn . $st . $pl . $ot . $id ;
	}

	#writeLog(basename( __FILE__)." ". __LINE__ , "call -> ".$callSource." cust Id -> ".$customerId."  cust ----> ".$customerData. " ---   # ".$xMsg."\n");

	echo $xMsg;
}


function searchCustomer()
{
	
	$searchString = false;
	if (isset($_POST['callSource']) && $_POST['callSource'] != "") $callSource = $_POST['callSource'];
	if ($callSource == 'bonDialog') {
		$whereClause = '';

		$closeButStrg = "";
		$joinStr = "";
		
	} else if ($callSource == 'rechnungsModal' || $callSource == 'gutscheinModal' || $callSource == 'gutscheinAdminModal') {

		if ($callSource == 'gutscheinModal' || $callSource == 'gutscheinAdminModal') {
			$joinStr = "LEFT JOIN gutscheine ON kunden.id = gutscheine.kunden_id";
		} else $joinStr = "";
		if (isset($_POST['searchStrg']) && $_POST['searchStrg'] != "") $searchString = $_POST['searchStrg'];
		else {
			$searchString = false;
			echo "-#-";
			die();
		}
		$whereClause = "WHERE (Firma LIKE LOWER('%" . $searchString . "%') OR nachname LIKE LOWER('%" . $searchString . "%') OR vorname LIKE LOWER('%" . $searchString . "%') 
					OR kundennummer LIKE LOWER('%" . $searchString . "%'))  AND geloescht = 0";
		$closeButStrg = "<div class='searchModalCloseDiv' onclick=\"clearSelectedCustomer('" . $callSource . "', '')\" >Dialog schließen</div>";
	}

	if ($searchString == true || $callSource == 'bonDialog') {

		if (isset($_POST['searchStrg']) && $_POST['searchStrg'] != "") {
			$searchString = $_POST['searchStrg'];
			$whereClause = "WHERE (Firma LIKE LOWER('%" . $searchString . "%') OR nachname LIKE LOWER('%" . $searchString . "%') OR vorname LIKE LOWER('%" . $searchString . "%')  
							OR kundennummer LIKE LOWER('%" . $searchString . "%') OR id LIKE '%" . $searchString . "%') AND geloescht = 0 ";
		} else {
			$whereClause = "WHERE geloescht = 0";
		}

		$serResult = "<ul class='searchUlSel schrift kpSelect' >" . $closeButStrg;

		// Die zu suchenden Felder stehen ab V2.03 in der Konfiguration
		$felder = explode(";", KUNDENSUCHE_FELDER_IN_ANZEIGE);

		$searQl = mysql_query("SELECT * FROM kunden " . $joinStr . " " . $whereClause . " ORDER BY nachname ASC, Firma ASC, vorname ASC  ");
		while ($searchRow = mysql_fetch_array($searQl)) {
			$searchstring = "";
			foreach ($felder as $feld) {
				$searchstring = $searchstring . $searchRow[$feld] . " ";
			}
			$custId = $searchRow['id'];
			if ($callSource == 'gutscheinModal' || $callSource == 'gutscheinAdminModal') {
				if ($searchRow['kunden_id'] > 0) $addStr = "(" . $searchRow['gutschein_nr'] . ") ";
				else $addStr = "";
				//$serResult.="<li onclick=\"sselectCust('".$custId."', '".$callSource."')\" >".$addStr.$searchRow['Firma']." ".$searchRow['nachname']." 
				//".$searchRow['vorname']."</li>";
				$serResult .= "<li onclick=\"sselectCust('" . $custId . "', '" . $callSource . "')\" >" . $addStr . $searchstring . "</li>";
			} else {
				//$serResult.="<li onclick=\"sselectCust('".$custId."', '".$callSource."')\" >".$searchRow['Firma']." ".$searchRow['nachname']." 
				//".$searchRow['vorname']."</li>";
				$serResult .= "<li onclick=\"sselectCust('" . $custId . "', '" . $callSource . "')\" >" . $searchstring . "</li>";
			}
		}
		if (mysql_affected_rows() == 0) $serResult .= "Suchergebnis 0";
		$serResult .= "</ul>";
		echo $serResult;
	}
}


function loadCart()
{
	//	$max_warenkorb=1;
	//	$sql="select DISTINCT bon_id FROM offener_bon ORDER BY bon_id";
	$sql_produkte = mysql_query("SELECT DISTINCT bon_id FROM offener_bon ORDER BY bon_id");
	if (!$sql_produkte) {
		echo "Error, Warenkorb abfrage Fehler";
		die();
	} else {
		if (mysql_num_rows($sql_produkte) == 0) {
			$carts = "<input type='button'  class='warenkorb_button' id='warenkorb1' value='1' onclick='warenkorb_waehlen(this)'/>";
			$max_warenkorb = 1;
		} else {
			$carts = "";
			while ($row_produkt = mysql_fetch_assoc($sql_produkte)) {
				$bon_id = $row_produkt['bon_id'];
				if (isset($_SESSION['aktuellerWarenkorb'])) $currentCart = $_SESSION['aktuellerWarenkorb'];
				else $currentCart = 1;
				if ($bon_id == $currentCart) $extraClass = " line_selected";
				else  $extraClass = "";
				$carts .= "<input type='button'  class='warenkorb_button" . $extraClass . "' id='warenkorb" . $bon_id . "' value='" . $bon_id . "kp' onclick='warenkorb_waehlen(this)'/>";
				$max_warenkorb = $bon_id;
			}
			$carts .= "<input type='button'  class='warenkorb_button' value='+' onclick='warenkorb_waehlen(\"add\")'/>";
		}
		echo $carts;
	}

	//	echo "werde dann die warenkörebe ladennnnnn -> ".mysql_num_rows($sql_produkte);

}


function depStartbelegErstellen()
{		## derzeit nicht verwendet !!!!!!!!!!!!    juni 2016

	if (isset($_POST['requestBelegNr'])) {
		$requestBelegNr = $_POST['requestBelegNr'];
	}
	if ($requestBelegNr == "") {		# für testzweke wird die höchste bon nr genommen
		$maxBonNr = mysql_fetch_assoc(mysql_query("SELECT max(bon_id) AS maxBon FROM abgeschlossener_bon"));
		$requestBelegNr = $maxBonNr['maxBon'];
	}

	$testZert = md5(date("Y-m-d H:i"));

	$insQl = mysql_query("INSERT INTO dep SET kassen_id='" . KASSA_ID . "', beleg_nr = " . $requestBelegNr . ",  datum_zeit=NOW(), betr_satz_norm = '0,00',
														betr_satz_erm_1 = '0,00', betr_satz_erm_2 = '0,00', betr_satz_null = '0,00', betr_satz_besonder = '0,00',
														umsatz_zaehler = 0, zertif_nr = '" . $testZert . "' ");

	if (!$insQl) echo "Datenbank Fehler, beim anlegen des Stratbeleges. " . mysql_error();

	else echo "Success";
}

function gutscheineAdmin($callFrom = false, $outputTarget = false)
{
	//require_once("ajax_funktionen.php");
	//sync_von_Zentralsystem();

	if (isset($_POST['gsFunction']) && strlen($_POST['gsFunction']) > 0) $gsAdminFunction = $_POST['gsFunction'];
	else $gsAdminFunction = false;

	if (isset($_POST['gutschNr']) && strlen($_POST['gutschNr']) > 0) $gutscheinNr = $_POST['gutschNr'];
	else $gutscheinNr = false;
	if (isset($_POST['gutscheinId']) && is_numeric($_POST['gutscheinId'])) $gutscheinId = $_POST['gutscheinId'];
	else $gutscheinId = false;

	if ($callFrom == 'reportGutscheinShort') $tableCol = "gutschein_buchungen.datum_buchung";
	else $tableCol = "gutscheine.gutschein_erstellt";

	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	$gsOp = "";

	

	if ($gutscheinNr != false) {
		$dateWhere = str_replace("WHERE", "AND", $dateWhere);
		$whereClaus = "WHERE gutschein_nr like '%" . $gutscheinNr . "%'";
		$infoTxt = " Nr.: " . $gutscheinNr . " ";
	}else {
		$whereClaus = $dateWhere;
	} 

	// neue Gutscheine anzeigen
	if(isset($_POST['newGS']) && $_POST['newGS'] == "true")
	{
		$whereClaus = "WHERE (gutscheine.gutschein_aufgeladen= '0000-00-00 00:00:00' AND gutscheine.create_ts<>'0000-00-00 00:00:00')";
	}
	

	$deleteSuccess = false;
	if ($gsAdminFunction == 'gsDelete') {
		$deleteOption = false;
		if (isset($_POST['deleteOption']) && strlen($_POST['deleteOption']) > 0) $deleteOption = $_POST['deleteOption'];
		$restBetr = mysql_fetch_array(mysql_query("SELECT gs_id, betrag FROM gutscheine WHERE gutschein_nr = '" . $gutscheinNr . "' "));
		if ($deleteOption == 'gutschDelRestValNull' || $deleteOption == 'gutschDelIgnor') {

			$restBetrag = number_format($restBetr['betrag'], 2, ",", ".");
			mysql_query("START TRANSACTION");
			$delGs = mysql_query("DELETE FROM gutscheine WHERE gutschein_nr = '" . $gutscheinNr . "' ");
			$userN = $_SESSION["userName"];
			if ($deleteOption == 'gutschDelRestValNull') {
				$delInfo = "Gutschein Nr " . $gutscheinNr . " mit Rest Betrag Null gelöscht";
				$restValPrintCode = 0;
			} else if ($deleteOption == 'gutschDelIgnor') {
				$delInfo = "Gutschein Nr " . $gutscheinNr . " mit Rest Betrag (" . $restBetrag . ") ignorieren gelöscht";
				$restValPrintCode = 1;
			}
			$insAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $userN . "', konfigtitel = 'Gutschein gelöscht', ausgangswert = '" . $delInfo . "', datumzeit = NOW() ");
			if (!$delGs || !$insAudit) {
				$gsOp .= "<p>Datenbank Fehler. Gutschein, Nr. " . $gutscheinNr . ", NICHT gelöscht.</p>";
				mysql_query("ROLLBACK");
			} else {
				mysql_query("COMMIT");

				$deletePrint = printGutscheinBon($gutscheinNr, 'kartedelete', 140, $restBetrag, $restValPrintCode, false, false, false);
				# params  nr, funktion beim drucken, bon höhe, delete restbetrag, code 0 = kein restbetrag, 1 = ignorieren, 
				if ($deletePrint == $gutscheinNr) $printMsg = " und ausgedruckt";
				else $printMsg = "";
				$gsOp .= "<p>Gutschein, Nr. " . $gutscheinNr . ", gelöscht" . $printMsg . ".</p>";
			}
			mysql_query("set autocommit=1");
		} else if ($deleteOption == 'gutschDelKassaausgang') {
			$kassenabschluss_id = ist_kassa_offen();
			if ($kassenabschluss_id == false) {
				echo "<p>Kassa ist nicht geöffnet, Gutschein Löschen mit Bar Auszahlung konnte nicht durchgeführt werden.</p>";
				return false;
			}
			mysql_query("START TRANSACTION");
			$restBetrag = -$restBetr['betrag'];
			$gsId = $restBetr['gs_id'];
			$userId = $_SESSION['userId'];
			$userN = $_SESSION['userName'];
			$displRestBetrag = number_format(-$restBetrag, 2, ",", ".");
			$delInfo = "Gutschein Nr " . $gutscheinNr . " mit Rest Betrag (" . $displRestBetrag . ") minus Buchung gelöscht";
			$restValPrintCode = 2;
			$insGsBook = mysql_query("INSERT INTO gutschein_buchungen SET gs_id = " . $gsId . ", kassa_abschluss_id = " . $kassenabschluss_id . ",
									verkaufer_id = " . $userId . ", betrag_geladen = '" . $restBetrag . "', datum_buchung = NOW() ");
			$delGs = mysql_query("DELETE FROM gutscheine WHERE gutschein_nr = '" . $gutscheinNr . "' ");
			$insAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $userN . "', konfigtitel = 'Gutschein gelöscht', 
										ausgangswert = '" . $delInfo . "', datumzeit = NOW() ");

			if (!$insGsBook || !$delGs || !$insAudit) {

				echo $gsOp .= "<p>Gutschein '" . $gutscheinNr . "' löschen fehlgeschlagen. Rest Wert: " . $displRestBetrag . "</p>";
				mysql_query("ROLLBACK");
			} else {
				mysql_query("COMMIT");
				$deletePrint = printGutscheinBon($gutscheinNr, 'kartedelete', 140, $displRestBetrag, $restValPrintCode, false, false, false); #
				# params  nr, funktion beim drucken, bon höhe, delete restbetrag, code 2 = minus buchung,
				if ($deletePrint == $gutscheinNr) $printMsg = " und ausgedruckt";
				else $printMsg = "";
				$gsOp .= "<p>Gutschein mit der Nr. " . $gutscheinNr . ", gelöscht.</p>
												<p>Rest Wert: " . $displRestBetrag . " als minus Aufladung verbucht" . $printMsg . ".</p>";
			}
			mysql_query("set autocommit=1");
		} else {

			$gsOp .= "<p>Aufruf der Funktion Gutschein löschen fehlgeschlagen.</p>";
		}
	} else if ($gsAdminFunction == 'gsView') {

		$innerContentMaxH = 78;
		$gsBookingQl = mysql_query("SELECT gutschein_nr, bon_id, gutschein_erstellt, betrag, rechnung_betrag, betrag_geladen, verkaufer_id, comment,
											datum_buchung, kassa_abschluss_id, verkaufsart, tax, taxes.NAME AS taxN, kunden.id AS kdId, Firma, vorname, nachname
										FROM gutscheine
										LEFT JOIN gutschein_buchungen ON gutscheine.gs_id = gutschein_buchungen.gs_id
										LEFT JOIN kunden ON kunden.id = gutscheine.kunden_id
										LEFT JOIN taxes ON taxes.RATE = gutscheine.tax
										WHERE gutscheine.gs_id = " . $gutscheinId . " ORDER BY datum_buchung ASC ");

		$gsList = mysql_fetch_array($gsBookingQl);
		mysql_data_seek($gsBookingQl, 0); 		# damit mysql_query zweimal verwendet werden kann, schein so was wie ein initialisierung zu sein
		# user "foreach" instead of "while" sollte auch funktionieren 
		if ($gsList['kdId'] > 0) {
			if (strlen($gsList['Firma']) > 0) $fa = $gsList['Firma'];
			else $fa = "";
			if (strlen($gsList['vorname']) > 0) $vn = " " . $gsList['vorname'];
			else $vn = "";
			if (strlen($gsList['nachname']) > 0) $nn = " " . $gsList['nachname'];
			else $nn = "";
			$customer = ", Kunde: " . $fa . $vn . $nn;
		} else $customer = "";

		if ($gsList['tax'] != 0) $displTax = "<span class='gsDisplTax'>Steuersatz: " . preg_replace('/mwst\s/i', '', $gsList['taxN']) . "</span>";
		else $displTax = "";

		$displComment = "";
		if (isset($gsList['comment']) && strlen($gsList['comment']) > 0)
			$displComment = ", Kommentar: " . $gsList['comment'];


		$gsHead = "<div class='gsInfoHead'>
						<p>Gutschein Nr: " . $gsList['gutschein_nr'] . " " . $customer . $displComment . "</p>
						<p>Derzeitiger Kontostand: " . number_format($gsList['betrag'], 2, ",", ".") . " " . $displTax . "</p>
						
				</div>			
				<div class='gsAdminListRow gsAdminHeader'>
						<div class='gsAdminColD'>Datum</div><div class='gsAdminColC'>Betrag</div>
						<div class='gsAdminColF'>Art</div><div class='gsAdminColD'></div>
				</div>";

		$gsOp .= $gsHead . "<div class='gutscheinAdminInnerContent'  style='max-height:" . $innerContentMaxH . "%' >";
		$cc = 0;

		while ($gsBookingRow = mysql_fetch_array($gsBookingQl)) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			$dDate = strtotime($gsBookingRow['datum_buchung']);
			$datetime = date('j.n.Y', $dDate);
			$benId = $gsBookingRow['verkaufer_id'];
			if (strtolower($gsBookingRow['verkaufsart']) == 'gsverkauf') $verkaufsart = "Verkauft";
			else if (strtolower($gsBookingRow['verkaufsart']) == 'gskostenlos') $verkaufsart = "Kostenlos";
			else $verkaufsart = "&nbsp;";
			$bookVal = 0;
			$bookType = "&nbsp;";
			$erstelltIndic = false;

			if ($gsBookingRow['gutschein_erstellt'] == $gsBookingRow['datum_buchung']) $erstelltIndic = true;
			if ($gsBookingRow['rechnung_betrag'] == 0 && $gsBookingRow['betrag_geladen'] != 0) {
				$bookVal = $gsBookingRow['betrag_geladen'];
				if ($erstelltIndic == true) $bookType = "Austellung Gs";
				else $bookType = "Aufladung";
			} else if ($gsBookingRow['rechnung_betrag'] != 0 && $gsBookingRow['betrag_geladen'] == 0) {
				$bookVal = $gsBookingRow['rechnung_betrag'];
				$bookType = "Zahlung: Rg. Nr. " . $gsBookingRow['bon_id'];
			}

			$gsOp .= "<div class='gsAdminListRow " . $bg . "'>
							<div class='gsAdminColD'>" . $datetime . "</div>
							<div class='gsAdminColC'>" . number_format($bookVal, 2, ",", ".") . "</div>
							<div class='gsAdminColF'>" . $bookType . "</div>
							<div class='gsAdminColD'>" . $verkaufsart . "</div>							
							<div class='cclear'></div></div>";
			$cc++;
		}
	} else {
		$gsT = mysql_fetch_array(mysql_query("SELECT SUM(betrag) AS gsTotalOpen FROM gutscheine"));
		$gsTotalOpen = $gsT['gsTotalOpen'];

		if ($callFrom == 'reportGutscheinShort') {
			$gsQl = mysql_query("SELECT DISTINCT gutscheine.gs_id, gutschein_nr, gutschein_erstellt, gutschein_aufgeladen, betrag, tax, kunden_id, gesperrt,
									Firma, vorname, nachname, comment
								FROM gutscheine
								LEFT JOIN gutschein_buchungen ON gutschein_buchungen.gs_id = gutscheine.gs_id
								LEFT JOIN kunden ON gutscheine.kunden_id = kunden.id
								" . $whereClaus . " ORDER BY gutschein_erstellt ASC");

			$gsHead = "<div class='gsAdminListRow gsAdminHeader'>
							<div class='gsAdminColA2'>Gs-Nr</div><div class='gsAdminColB'>Bet Init</div>
							<div class='gsAdminColC'>Betrag</div><div class='gsAdminColD'>Ausgestellt</div>
							<div class='gsAdminColE2'>Kunde</div><div class='gsAdminColF'>Kommentar</div>
					<div class='cclear'></div></div>";
		} else {
			$gsQl = mysql_query("SELECT gutscheine.gs_id, gutschein_nr, gutschein_erstellt, gutschein_aufgeladen, betrag, tax, kunden_id, gesperrt,
									Firma, vorname, nachname, comment
								FROM gutscheine
								LEFT JOIN kunden ON gutscheine.kunden_id = kunden.id
								" . $whereClaus . " ORDER BY gutschein_erstellt ASC");

			$gsHead = "<div class='gsAdminWrappDiv'>
						<div class='gsAdminListRow gsAdminHeader'>
						<div class='gsAdminFunctionCol2'></div><div class='gsAdminCol_A'>Gutschein Nr.</div>
						<div class='gsAdminCol_B'>Betrag<br />Initial</div><div class='gsAdminCol_C'>Betrag verbleibend</div>
						<div class='gsAdminCol_D'>Ausgestellt</div><div class='gsAdminCol_E'>Kunde</div>
						<div class='gsAdminCol_F'>Kommentar</div>
					<div class='cclear'></div></div>";
		}


		$gsOp .= $gsHead . "<div class='gutscheinAdminInnerContent' >";
		$cc = 0;
		$revenueCounter = 0;
		$revInitialCounter = 0;
		$csvData = array();
		$pdfData = array();

		while ($gsList = mysql_fetch_array($gsQl)) {
			if ($cc % 2 == 0) $bg = 'bgA';
			else $bg = 'bgB';
			$dDate = strtotime($gsList['gutschein_erstellt']);
			$datetime = date('j.n.Y', $dDate);

			if (strlen($gsList['Firma']) > 0) $fa = $gsList['Firma'] . " ";
			else $fa = "";
			if (strlen($gsList['vorname']) > 0) $vn = $gsList['vorname'] . " ";
			else $vn = "";
			if (strlen($gsList['nachname']) > 0) $nn = $gsList['nachname'] . " ";
			else $nn = "";
			$customer = $fa . $vn . $nn;
			if ($customer == '') $customer = "&nbsp;";

			$gsId = $gsList['gs_id'];
			$gsNr = $gsList['gutschein_nr'];
			$gsGuthaben = $gsList['betrag'];

			$inVal = mysql_fetch_array(mysql_query("SELECT betrag_geladen, datum_buchung FROM gutschein_buchungen 
							WHERE gs_id= " . $gsId . " ORDER BY id ASC LIMIT 1 "));
							
			$initialVal = $inVal['betrag_geladen'];
			$initialDate = $inVal['datum_buchung'];

			if ($callFrom == 'reportGutscheinShort') {
				$gsOp .= "<div class='gsAdminListRow " . $bg . "'>
								<div class='gsAdminColA2'>" . $gsList['gutschein_nr'] . "</div>
								<div class='gsAdminColB'>" . number_format($initialVal, 2, ",", ".") . "</div>
								<div class='gsAdminColC'>" . number_format($gsList['betrag'], 2, ",", ".") . "</div>
								<div class='gsAdminColD'>" . $datetime . "</div>
								<div class='gsAdminColE2'>" . $customer . "</div>
								<div class='gsAdminColF'>" . $gsList['comment'] . "</div>
								<div class='cclear'></div>
							</div>";
				#   csv data --------------------------------------------	

				if ($outputTarget == 'exportDosCSV' || $outputTarget == 'exportExcelCSV') {
					if ($customer == '&nbsp;') $customer = "";
					$gsList['gutschein_nr'] = "'" . $gsList['gutschein_nr'];
					$initialDate = "'" . $initialDate;

					if ($outputTarget == 'exportExcelCSV') {
						$gsList['comment'] = preg_replace('/€/', 'EUR', $gsList['comment']);
						$customer = strip_tags(mb_convert_encoding($customer, 'UTF-16LE', 'UTF-8'));
						$gsList['comment'] = strip_tags(mb_convert_encoding($gsList['comment'], 'UTF-16LE', 'UTF-8'));
					}
				}

				$tmpArray = array(
					$gsList['gutschein_nr'], number_format($initialVal, 2, ",", "."), number_format($gsList['betrag'], 2, ",", "."),
					$initialDate, $customer, $gsList['comment']
				);
				array_push($csvData, $tmpArray);
				$tmpArray = array();
				#	csv data end -----------------------------------------

				#    pdf data --------------------------------------------
				$pdfTmpData = array($gsList['gutschein_nr'], $initialVal, $gsList['betrag'], $initialDate,  $customer, $gsList['comment']);

				array_push($pdfData, $pdfTmpData);
				$pdfTmpDat = array();

				#	pdf data end -----------------------------------------
			} else {

				//<button onclick=\"gsKarteDelete('" . $gsId . "', '" . $gsNr . "', '" . $gsGuthaben . "')\" class='gsAdminFunctionBut'>
				//<image src='images/delete.png' /></button>
				$gsOp .= "<div class='gsAdminListRow " . $bg . "'>
					<div class='gsAdminFunctionCol2'>
						
						<button onclick=\"displayAnlegenModal('" . $gsNr . "')\" class='gsAdminFunctionBut'>
							<image src='images/editieren.png' /></button>
						<button onclick=\"getGutscheinContent('gsView', '" . $gsId . "', '" . $gsNr . "')\" class='gsAdminFunctionBut'>
							<image src='images/view.png' /></button>
					</div>
					<div class='gsAdminCol_A'>" . $gsList['gutschein_nr'] . "</div>
					<div class='gsAdminCol_B'>" . number_format($initialVal, 2, ",", ".") . "</div>
					<div class='gsAdminCol_C'>" . number_format($gsList['betrag'], 2, ",", ".") . "</div>
					<div class='gsAdminCol_D'>" . $datetime . "</div>
					<div class='gsAdminCol_E'>" . $customer . "</div>
					<div class='gsAdminCol_F'>" . $gsList['comment'] . "</div>
					<div class='cclear'></div></div>";
			}
			$cc++;
			$revenueCounter += $gsList['betrag'];
			$revInitialCounter += $initialVal;
		}

		if ($callFrom == 'reportGutscheinShort') {
			$gsOp .= "<div class='gsAdminListRow gsAdminSumRow'>
					<div class='gsAdminColA2'>&nbsp;</div>
					<div class='gsAdminColB'>" . number_format($revInitialCounter, 2, ",", ".") . "</div>
					<div class='gsAdminColC'>" . number_format($revenueCounter, 2, ",", ".") . "</div>
					<div class='gsAdminColD'>&nbsp;</div>						
					<div class='gsAdminColE'> Gesamt Gs offen: " . number_format($gsTotalOpen, 2, ",", ".") . "</div>
				<div class='cclear'></div></div>";

			$pdfSumData = array($revInitialCounter, $revenueCounter, $gsTotalOpen);
		} else {
			$gsOp .= "<div class='gsAdminListRow gsAdminSumRow'>
						<div class='gsAdminFunctionCol2'>&nbsp;</div><div class='gsAdminCol_A'>&nbsp;</div>
						<div class='gsAdminCol_B'>" . number_format($revInitialCounter, 2, ",", ".") . "</div>
						<div class='gsAdminCol_C'>" . number_format($revenueCounter, 2, ",", ".") . "</div>
						<div class='gsAdminCol_D'>&nbsp;</div>						
						<div class='gsAdminCol_E'> Gesamt Gs offen: " . number_format($gsTotalOpen, 2, ",", ".") . "</div>
					<div class='cclear'></div></div>
					</div>";
		}
	}


	if ($callFrom == 'reportGutscheinShort') return (array($whereInfo, $whereClaus, $gsOp, $pdfData, $pdfSumData, $csvData));

	else echo $gsOp;
}

function getReportAuditing()
{
	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$tableCol = "auditing.datumzeit";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	$csvHeader = array(
		array('', ''),
		array('Auditing Report', '', ''),
		array('Erstellt am: ', date('d m Y H:i'),  strip_tags(AUSRUCK_KOPFZEILE_1)),
		array('Erstellt von:', $_SESSION["userName"],  strip_tags(AUSRUCK_KOPFZEILE_2)),
		array($whereInfo, '', strip_tags(AUSRUCK_KOPFZEILE_4)),
		array('', '', strip_tags(AUSRUCK_KOPFZEILE_5)),
		array('', '',),
		array('Datum', 'Benutzer', 'Inhalt')
	);
	for ($i = 0; $i < sizeof($csvHeader); $i++) {
		$tmp = implode(";", $csvHeader[$i]);
		$tmp = strip_tags($tmp);
		#	if($reportTarget== 'exportExcelCSV')	$tmp=mb_convert_encoding($tmp, 'UTF-16LE', 'UTF-8');
		$csvHeader[$i] = explode(";", $tmp);
	}

	$pdfHeader = $csvHeader;

	$repOp = "<div class='repAuditHeadDiv'>
						<div class='repAudit_ColA'  >Datum</div>
						<div class='repAudit_ColB' >Benutzer</div>
						<div class='repAudit_ColWide' >Inhalt</div>
						<div class='cclear'></div>
					</div> ";

	$auQl = mysql_query("SELECT benutzer, konfigtitel, funktion, ausgangswert, geaentertaufwert, datumzeit
							FROM auditing " . $dateWhere . " ORDER BY datumzeit ");
	$cc = 0;
	$pdfAuditData = array();
	$auditData = array();

	for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
		array_push($auditData, $csvHeader[$i]);
	}

	while ($auRow = mysql_fetch_array($auQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$dDate = strtotime($auRow['datumzeit']);
		$datetime = date('j.n.y H:i', $dDate);
		if ($auRow['benutzer'] == '') $auRow['benutzer'] = "&nbsp;";
		if ($auRow['konfigtitel'] == '') $auRow['konfigtitel'] = "&nbsp;";
		if (preg_match('/gelöscht/', $auRow['konfigtitel'])) {
			if (preg_match('/gesamter offen Bon/', $auRow['konfigtitel'])) {
				$cCols = "<div class='repAudit_ColWide'>" . $auRow['konfigtitel'] . ": " . $auRow['funktion'] . ": " . $auRow['ausgangswert'] . "</div>";
				$pdfCol = $auRow['konfigtitel'] . ": " . $auRow['funktion'] . ": " . $auRow['ausgangswert'];
			} else if (preg_match('/Gutschein gelöscht/', $auRow['konfigtitel'])) {
				$cCols = "<div class='repAudit_ColWide'>" . $auRow['konfigtitel'] . ": " . $auRow['ausgangswert'] . "</div>";
				$pdfCol = $auRow['konfigtitel'] . ": " . $auRow['funktion'];
			} else {
				$cCols = "<div class='repAudit_ColWide'>" . $auRow['konfigtitel'] . ", " . $auRow['funktion'] . ", " . $auRow['ausgangswert'] . ", " . $auRow['geaentertaufwert'] . "</div>";
				$pdfCol = $auRow['konfigtitel'] . ", " . $auRow['funktion'] . ", " . $auRow['ausgangswert'] . ", " . $auRow['geaentertaufwert'];
			}
		} else {
			$cCols = "<div class='repAudit_ColWide'>" . $auRow['konfigtitel'] . " geändert, von " . strip_tags($auRow['ausgangswert']) . " auf " . strip_tags($auRow['geaentertaufwert']) . "</div>";
			$pdfCol = $auRow['konfigtitel'] . " geändert, von " . $auRow['ausgangswert'] . " auf " . $auRow['geaentertaufwert'];
		}
		$repOp .= "<div class='repAuditLineDiv " . $bg . "'><div class='repAudit_ColA'>" . $datetime . "</div><div class='repAudit_ColB'>" . $auRow['benutzer'] . "</div>
							" . $cCols . "
							
							<div class='cclear'></div>
						</div>";
		#####   pdf #########
		$pdfTmpData = array($datetime, $auRow['benutzer'], strip_tags($cCols));
		array_push($pdfAuditData, $pdfTmpData);
		$pdfTmpData = array();
		###### csv #####
		if ($reportTarget == 'exportExcelCSV') {
			$uUser = strip_tags(mb_convert_encoding($auRow['benutzer'], 'UTF-16LE', 'UTF-8'));
			$cContent = strip_tags(mb_convert_encoding($pdfCol, 'UTF-16LE', 'UTF-8'));
		} else {
			$uUser = $auRow['benutzer'];
			$cContent = $pdfCol;
		}

		$tmpArray = array($datetime, $uUser, $cContent);
		array_push($auditData, $tmpArray);
		$tmpArray = array();

		$cc++;
	}



	$repOp .= "<br />" . $whereInfo;

	$sumArray = array(mysql_num_rows($auQl));

	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp;

	else if ($reportTarget == 'exportPDF') {
		$bonLength = ($sumArray[0] * 6) * 2.5;
		require_once('dopdf.php');
		$pdfContent = array($pdfHeader, $pdfAuditData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Report_Umsatz_Verkaeufer_zahlung.pdf";
		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'auditingReport', $bonLength);
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success />
						<div id='pdfFuzzi'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	} else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		$fileUrl = 'docs/reports/report_gutscheine.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($auditData as $fields) {
			fputcsv($fp, $fields, ";");
		}	// we have semicol as seperator and no enclosere, would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	}
}

function getReportGutscheine()
{
	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	if (isset($_POST['gutschNr']) && strlen($_POST['gutschNr']) > 0) $gutscheinNr = $_POST['gutschNr'];
	else $gutscheinNr = false;


	$tableCol = "gutschein_buchungen.datum_buchung";
	$sqlDateWhere = getReportDateWhere($tableCol, 'reports');

	$dateWhere = $sqlDateWhere[0];
	$whereInfo = $sqlDateWhere[1];

	#	if($dateWhere != "") $dateWhere=str_replace("WHERE", "AND", $dateWhere);		
	# wird verwendet wenn es vor dem date where schon ein where gibt

	if ($gutscheinNr != false) {
		$dateWhere = str_replace("WHERE", "AND", $dateWhere);
		$whereClaus = "AND gutschein_nr = '" . $gutscheinNr . "' " . $dateWhere;
		$infoTxt = " Nr.: " . $gutscheinNr . " " . $whereInfo;
	} else {
		$whereClaus = $dateWhere;
		$infoTxt = $whereInfo;
	}

	$csvHeader = array(
		array('', ''),
		array('Auswertung Gutscheine', '',  '', '', '', '', ''),
		array('Erstellt am: ' . date('j.n.Y H:i'), '',  '', '', '', strip_tags(AUSRUCK_KOPFZEILE_1)),
		array('Erstellt von: ' . $_SESSION["userName"], '',  '', '', '', strip_tags(AUSRUCK_KOPFZEILE_2)),
		array(strip_tags($infoTxt), '', '', '', '', strip_tags(AUSRUCK_KOPFZEILE_4)),
		array('', '', '', '', '', strip_tags(AUSRUCK_KOPFZEILE_5)),
		array('', '', '',),
		array('B-Nr.', 'Gutsch Nr.', 'Abschl', 'Betrag', 'Datum', 'Kunde', 'Kommentar', '', '', ''),
		array('B-Nr.', 'Gutsch Nr.', 'Abschl Nr.', 'Betrag', 'Datum', 'Kunde', 'Kommentar', '', '')		# für pdf, enger gehalten wenn erforderlich
	);


	$pdfHeader = $csvHeader;

	$sumQl = mysql_fetch_array(mysql_query("SELECT SUM(betrag) AS sumOffeneGs FROM gutscheine"));

	$xQl = mysql_query("SELECT gutschein_buchungen.id AS id, gutscheine.gs_id, gutschein_nr, bon_id, kassa_abschluss_id, verkaufsart, 
							verkaufer_id, rechnung_betrag, betrag_geladen, datum_buchung, Firma, vorname, nachname, comment
							FROM gutschein_buchungen
							LEFT JOIN gutscheine ON gutscheine.gs_id = gutschein_buchungen.gs_id
							LEFT JOIN kunden ON gutscheine.kunden_id = kunden.id
							" . $whereClaus . " ORDER BY datum_buchung ASC");
	$cc = 0;
	$repSum = 0;
	$ladungSumFrei = 0;
	$ladungSumVerkauft = 0;
	$pdfData = array();
	$gsList = array();

	for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
		array_push($gsList, $csvHeader[$i]);
	}

	$repOp = "<div class='reportHeaderDiv'><h3>Auswertung Gutscheine" . $infoTxt . "</h3><div class='cclear' ></div></div>";
	#	$repOp.="<div id='gsReportInfoDiv'></div>"; # dedacht für ein info feld das gutschein details nach click auf die gutschein zeile hier anzeigt
	#	die funktion gibts schon, inhalte noch unfertig
	$repOp .= "<div class='bgHead gsRepHeader'><div class='gsRep_colA floatL'>B-Nr.</div><div class='gsRep_colB floatL'>Gs Nr.</div>
						<div class='gsRep_colC floatL'>Abschl</div><div class='gsRep_colD floatL'>Betrag</div>
						<div class='gsRep_colE floatL'>Datum</div><div class='gsRep_colF floatL'>Kunde</div>
						<div class='gsRep_colG floatL'>Kommentar</div><div class='cclear'></div></div>";
	$repOp .= "<div class='gsRepContentDiv' >";
	while ($gsRow = mysql_fetch_array($xQl)) {
		if ($cc % 2 == 0) $bg = 'bgA';
		else $bg = 'bgB';
		$gsBookingId = $gsRow['id'];
		$gsId = $gsRow['gs_id'];
		$dDate = strtotime($gsRow['datum_buchung']);
		$datetime = date('j.n.Y H:i:s', $dDate);
		$repSum += $gsRow['rechnung_betrag'];

		$cust = $gsRow['Firma'] . " " . $gsRow['vorname'] . " " . $gsRow['nachname'];

		if ($gsRow['bon_id'] > 0) {
			$betrag = $gsRow['rechnung_betrag'];
			$csvVkTxt = "";
		} else if ($gsRow['bon_id'] == 0) {
			$betrag = $gsRow['betrag_geladen'];
			if (strtolower($gsRow['verkaufsart']) == 'gskostenlos') {
				$ladungSumFrei += $gsRow['betrag_geladen'];
				$csvVkTxt = "kostenfrei";
			} else {
				$ladungSumVerkauft += $gsRow['betrag_geladen'];
				$csvVkTxt = "verkauft";
			}
		}

		if ($gsRow['gutschein_nr'] != false) $gutschNo = $gsRow['gutschein_nr'];
		else $gutschNo = "<span style='font-size:.85em; font-weight:bold; color:#c00;'>gelöscht</span>";

		if (strlen($gsRow['comment']) > 0) {
			$displComment = "<div class='gsRep_colC_line2 floatR'>" . $gsRow['comment'] . "</div><div class='cclear' ></div>";
		} else $displComment = "";

		$repOp .= "<div id='gsBookingLine" . $gsBookingId . "' class='" . $bg . " gsRepLine' onclick=\"displayGsInfo('" . $gsId . "', '" . $gsBookingId . "')\"  >
				<div class='gsRep_colA floatL'>" . $gsRow['bon_id'] . "</div><div class='gsRep_colB floatL'>" . $gutschNo . "</div>
						<div class='gsRep_colC floatL'>" . $gsRow['kassa_abschluss_id'] . "</div>
						<div class='gsRep_colD floatL'>" . number_format($betrag, 2, ",", ".") . "</div>
						<div class='gsRep_colE floatL'>" . $datetime . "</div><div class='gsRep_colF floatL'>" . $cust . "</div>
						<div class='gsRep_colG floatL'>" . $gsRow['comment'] . "</div>
						<div class='cclear gsX'></div>

						</div>";
		if ($gsRow['bon_id'] > 0) $betrag = $gsRow['rechnung_betrag'];
		else $betrag = $gsRow['betrag_geladen'];

		if ($reportTarget == 'exportExcelCSV') {
			$custTxt = strip_tags(mb_convert_encoding($cust, 'UTF-16LE', 'UTF-8'));
			$commentTxt = strip_tags(mb_convert_encoding($gsRow['comment'], 'UTF-16LE', 'UTF-8'));
		} else {
			$custTxt = $cust;
			$commentTxt = $gsRow['comment'];
		}

		$tmpArray = array(
			$gsRow['bon_id'], $gsRow['gutschein_nr'], $gsRow['kassa_abschluss_id'], number_format($betrag, 2, ",", "."),
			$csvVkTxt, $datetime, $custTxt, $commentTxt
		);
		array_push($gsList, $tmpArray);
		$tmpArray = array();

		#    pdf data --------------------------------------------

		$pdfTmpData = array(
			$gsRow['bon_id'], $gsRow['gutschein_nr'], $gsRow['kassa_abschluss_id'],
			number_format($betrag, 2, ",", "."), $datetime, $cust, $commentTxt
		);

		array_push($pdfData, $pdfTmpData);
		$pdfTmpDat = array();

		#	pdf data end -----------------------------------------

		$cc++;
	}

	$repOp .= "</div>";

	$sumLine = "<div class='gsSumDiv'>
				<div class='gsSumLineDiv' >
					<div class='gsSumDiv_A floatL'>Summe Einlösen:</div>
					<div class='gsSumDiv_B floatL'>" . number_format($repSum, 2, ",", ".") . "</div>
					<div class='floatR' style='width:10px;'>&nbsp;</div>				
					<div class='gsSumDiv_B floatR'>" . number_format($sumQl['sumOffeneGs'], 2, ",", ".") . "</div>
					<div class='gsSumDiv_A floatR'>Gesamt Summe Gutscheine offen:</div>
					<div class='cclear'></div>					
					<div class='cclear'></div>
				</div>
				<div class='gsSpacer'></div>
				<div class='gsSumLineDiv'  >
					<div class='gsSumDiv_A floatL'>Summe Aufladen verkauft:</div>
					<div class='gsSumDiv_B floatL'>" . number_format($ladungSumVerkauft, 2, ",", ".") . "</div>
					<div class='floatR' style='width:10px;'>&nbsp;</div>	
					<div class='gsSumDiv_B floatR'>" . number_format($ladungSumFrei, 2, ",", ".") . "</div>
					<div class='gsSumDiv_A floatR'>Summe Aufladen frei:</div>
					<div class='cclear'></div>
				</div>
				</div>";


	# sumArray ist für den pdf print			
	$sumArray = array(
		"Summe Einlösen:", number_format($repSum, 2, ",", "."),
		"Summe Gutscheine offen:", number_format($sumQl['sumOffeneGs'], 2, ",", "."),
		"Summe Aufladen verkauft:", number_format($ladungSumVerkauft, 2, ",", "."),
		"Summe Aufladen frei:", number_format($ladungSumFrei, 2, ",", ".")
	);



	$pdfFooter = array(); 	# hier noch nicht defiend -> wid in der pdf funktion gernerriert.

	if ($reportTarget == 'screen') echo "<input type='hidden' value=' display success' />" . $repOp . $sumLine;

	else if ($reportTarget == 'exportPDF') {
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Gutscheine.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'gutscheinReport');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success' />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	} else if ($reportTarget == 'exportExcelCSV' || $reportTarget == 'exportDosCSV') {

		$fileUrl = 'docs/reports/report_gutscheine.csv';

		$fp = fopen($fileUrl, 'w');
		foreach ($gsList as $fields) {
			fputcsv($fp, $fields, ";");
		}	// we have semicol as seperator and no enclosere, would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	}
}

function getReportGutscheineShort()
{


	if (isset($_POST['reportTarget']) && $_POST['reportTarget'] != "")	$reportTarget = $_POST['reportTarget'];
	else $reportTarget = false;

	$gsReport = gutscheineAdmin('reportGutscheinShort', $reportTarget);

	$whereInfo = $gsReport[0];
	$pdfData = $gsReport[3];

	$csvHeader = array(
		array('', ''),
		array('Auswertung Gutscheine Übersicht', '',  '', '', '', '', ''),
		array('Erstellt am: ' . date('j.n.Y H:i'), '',  '', '', '', strip_tags(AUSRUCK_KOPFZEILE_1)),
		array('Erstellt von: ' . $_SESSION["userName"], '',  '', '', '', strip_tags(AUSRUCK_KOPFZEILE_2)),
		array(strip_tags($whereInfo), '', '', '', '', strip_tags(AUSRUCK_KOPFZEILE_4)),
		array('', '', '', '', '', strip_tags(AUSRUCK_KOPFZEILE_5)),
		array('', '', '',),
		array('Gutsch Nr.', 'Betr. Initial', 'Betrag akt.', 'Ausgestellt', 'Kunde', 'Kommentar', '', ''),
		array('Gutsch Nr.', 'Betr Initial', 'Betrag akt.', 'Ausgestellt', 'Kunde', 'Kommentar', '', '')	# für pdf
	);


	$pdfHeader = $csvHeader;

	if ($reportTarget == 'screen') {
		#echo "<input type='hidden' value=' display success' /><p>".$reportTarget."</p>".$gsReport[2];
		echo "<input type='hidden' value=' display success' />" . $gsReport[2];
	} else if ($reportTarget == 'exportPDF') {
		$pdfFooter = array();
		$sumArray = array();
		$sumArray = $gsReport[4];
		require_once('dopdf.php');

		$pdfContent = array($pdfHeader, $pdfData, $pdfFooter, $sumArray);

		$saveTheFileTo = "docs/reports/sIT_Gutscheine.pdf";

		$returedTarget = createPdf($saveTheFileTo, $pdfContent, 'gutscheinReportShort');
		echo "<a href='" . $returedTarget . "'>Download</a><br/>";
		echo "<input type='hidden' value=' " . $reportTarget . " success' />
						<div id='reportPdfDiv'><embed id=reportPdfEmbedTag src='" . $returedTarget . "' height='98%'></div>";
	} else if ($reportTarget == 'exportDosCSV' || $reportTarget == 'exportExcelCSV') {
		$fileUrl = 'docs/reports/report_gutscheine.csv';
		#$csvHeader[$i]=strip_tags(mb_convert_encoding($csvHeader[$i], 'UTF-16LE', 'UTF-8'));
		$xHead = array();
		if ($reportTarget == 'exportExcelCSV') {
			for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
				for ($j = 0; $j < sizeof($csvHeader[$i]); $j++) {
					$csvHeader[$i][$j] = strip_tags(mb_convert_encoding($csvHeader[$i][$j], 'UTF-16LE', 'UTF-8'));
				}
				array_push($xHead, $csvHeader[$i]);
			}
		} else for ($i = 0; $i < sizeof($csvHeader) - 1; $i++) {
			array_push($xHead, $csvHeader[$i]);
		}

		$csvArray = $xHead + $gsReport[5];
		$csvArray = array_merge($xHead, $gsReport[5]);
		#writeLog(basename( __FILE__)." ". __LINE__ , "array lenghts: ".count($xHead)." / ".count($gsReport[5])." / ".count($csvArray));

		$fp = fopen($fileUrl, 'w');
		foreach ($csvArray as $fields) {
			fputcsv($fp, $fields, ";", chr(0));
		}	// we have semicol as seperator and no enclosere, las param to avoid enclose would be last parameter !!
		fclose($fp);

		echo "ExportCSV Success -#-" . $fileUrl;
	}
}

function getGutscheineDetail()
{
	$gutscheinId = false;
	$gsBookingId = false;
	if (isset($_POST['gutschId']) && $_POST['gutschId'] != "")	$gutscheinId = $_POST['gutschId'];
	if (isset($_POST['gsBookingId']) && $_POST['gsBookingId'] != "")	$gsBookingId = $_POST['gsBookingId'];

	$leftCol = "";
	$bkQl = mysql_query("SELECT gutschein_buchungen.bon_id, kassa_abschluss_id, verkaufer_id, rechnung_betrag, betrag_geladen, datum_buchung,
								benutzer.name AS verkName, abgeschlossener_bon_produkte.NAME AS artikelName, 
								abgeschlossener_bon_produkte.PRINTNAME AS artikelPrintname, PRICESELL, stueck
								FROM gutschein_buchungen
								LEFT JOIN benutzer ON benutzer.id = gutschein_buchungen.verkaufer_id
								LEFT JOIN abgeschlossener_bon_produkte ON abgeschlossener_bon_produkte.bon_id = gutschein_buchungen.bon_id
								WHERE gutschein_buchungen.id = " . $gsBookingId . "");
	
	$prodF = "";
	while ($bkRow = mysql_fetch_array($bkQl)) {
		$bkBonNr = $bkRow['bon_id'];
		$bkSell = $bkRow['rechnung_betrag'];
		$bkLoad = $bkRow['betrag_geladen'];
		$bkDate = $bkRow['datum_buchung'];
		$bkVk = $bkRow['verkName'];
		$bkAbschl = $bkRow['kassa_abschluss_id'];
		if ($bkRow['artikelPrintname'] == true && strlen($bkRow['artikelPrintname']) > 1 && $bkBonNr > 0) {
			$prodF .= "<div class='gsDetailRightColElemL'>" . $bkRow['artikelPrintname'] . "</div>
					<div class='gsDetailProdColElemL_B'>" . number_format($bkRow['stueck'], 1, ",", ".") . "</div>
					<div class='gsDetailProdColElemL_A'>" . number_format($bkRow['PRICESELL'], 2, ",", ".") . "</div><div class='cclear'></div>";
		} else if ($bkRow['artikelName'] == true && strlen($bkRow['artikelName']) > 1 && $bkBonNr > 0) {
			$prodF .= "<div class='gsDetailRightColElemL'>" . $bkRow['artikelName'] . "</div>
					<div class='gsDetailProdColElemL_B'>" . number_format($bkRow['stueck'], 1, ",", ".") . "</div>
					<div class='gsDetailProdColElemL_A'>" . number_format($bkRow['PRICESELL'], 2, ",", ".") . "</div><div class='cclear'></div>";
		}
	}

	if ($bkBonNr > 0 && $bkLoad == 0) {
		$bkType = "Gutschein Einlösung";
		$bkAmount = number_format($bkSell, 2, ",", ".");
		$bkBon = "<div class='gsDetailRightColElemL'>Bon Nummer:</div>
					<div class='gsDetailRightColElemR'>" . $bkBonNr . "</div>
					<div class='cclear'></div>";
	} else if ($bkBonNr == 0 && $bkSell == 0) {
		$bkType = "Gutschein Aufladung";
		$bkAmount = number_format($bkLoad, 2, ",", ".");
		$bkBon = "";
	} else {
		$bkType = "";
		$bkAmount = "";
		$bkBon = "";
	}

	if (strlen($prodF) > 0) $prodF = "<div class=' gsBearbeitModalSpacer'></div><div class='gsDetailProdDiv'>" . $prodF . "</div>";

	$dDate = strtotime($bkDate);
	$bookingDate = date('j.n.Y H:i:s', $dDate);

	$leftCol .= "<div class='gsDetailRightColElemL'>Buchungsart:</div><div class='gsDetailRightColElemR'>" . $bkType . "</div><div class='cclear'></div>
					<div class='gsDetailRightColElemL'>Betrag:</div><div class='gsDetailRightColElemR'>" . $bkAmount . "</div><div class='cclear'></div>
					" . $bkBon . "
					<div class='gsDetailRightColElemL'>Datum:</div><div class='gsDetailRightColElemR'>" . $bookingDate . "</div><div class='cclear'></div>
					<div class='gsDetailRightColElemL'>Verkäufer:</div><div class='gsDetailRightColElemR'>" . $bkVk . "</div><div class='cclear'></div>
					<div class='gsDetailRightColElemL'>Kassenabschluss Id:</div><div class='gsDetailRightColElemR'>" . $bkAbschl . "</div><div class='cclear'></div>
					" . $prodF;

	$cardQl = mysql_fetch_array(mysql_query("SELECT MAX(datum_buchung) AS lastBooking FROM gutschein_buchungen WHERE gs_id = '" . $gutscheinId . "' LIMIT 1"));
	$dDate = strtotime($cardQl['lastBooking']);
	$lastBookingDate = date('j.n.Y H:i:s', $dDate);


	if ($gutscheinId > 0) {
		$gsQl = mysql_query("SELECT gutschein_buchungen.id AS id, gutscheine.gs_id AS gutschId, gutschein_nr, bon_id, kassa_abschluss_id, 
							gutschein_erstellt, betrag, gesperrt, verkaufer_id, rechnung_betrag, betrag_geladen, datum_buchung, Firma, vorname, nachname,
							plz, ort
							FROM gutschein_buchungen
							LEFT JOIN gutscheine ON gutscheine.gs_id = gutschein_buchungen.gs_id
							LEFT JOIN kunden ON gutscheine.kunden_id = kunden.id
							WHERE gutscheine.gs_id = " . $gutscheinId . " ORDER BY datum_buchung ASC");
	} else {
		$gsQl = mysql_query("SELECT gutschein_buchungen.id AS id, '' AS gutschId, 'nicht verfügbar' AS gutschein_nr, bon_id, kassa_abschluss_id, 
							'gs erstellt' AS gutschein_erstellt, 0 AS betrag, 'deleted' AS gesperrt, verkaufer_id, rechnung_betrag, betrag_geladen, datum_buchung, '' AS Firma, '' AS vorname, '' AS nachname,
							'' AS plz, '' AS ort
							FROM gutschein_buchungen

							WHERE gutschein_buchungen.id = 77 ");
	}
	$rightCol = "";
	while ($gsRow = mysql_fetch_array($gsQl)) {


		if ($gsRow['gesperrt'] == 1) $gsStatus = "Gutschein gesperrt";
		else $gsStatus = "nicht gesperrt";

		$dDate = strtotime($gsRow['gutschein_erstellt']);
		$createDate = date('j.n.Y H:i:s', $dDate);

		$rightCol = "<div class='gsDetailRightColElemL'>Gutschein Nummer:</div>
						<div class='gsDetailRightColElemR'>" . $gsRow['gutschein_nr'] . "</div>
						<div class='cclear'></div>
						<div class='gsDetailRightColElemL'>Gutschein ausgestellt:</div>
						<div class='gsDetailRightColElemR'>" . $createDate . "</div>
						<div class='cclear'></div>
						<div class='gsDetailRightColElemL'>Gutschein Status:</div>
						<div class='gsDetailRightColElemR'>" . $gsStatus . "</div>
						<div class='cclear'></div>
						<div class='gsDetailRightColElemL'>Letzte Buchung:</div>
						<div class='gsDetailRightColElemR'>" . $lastBookingDate . "</div>
						<div class='cclear'></div>
						<div class='gsDetailRightColElemL'>Restbetrag:</div>
						<div class='gsDetailRightColElemR'>" . number_format($gsRow['betrag'], 2, ",", ".") . "</div>
						<div class='cclear'></div><div class=' gsBearbeitModalSpacer'></div>						
						<div class='gsDetailRightColElemW'>" . $gsRow['Firma'] . "</div>
						<div class='gsDetailRightColElemW'>" . $gsRow['vorname'] . " " . $gsRow['nachname'] . "</div>
						<div class='gsDetailRightColElemW'>" . $gsRow['plz'] . " " . $gsRow['ort'] . "</div>
						";
		if ($gsRow['gutschId'] == '') {
			$rightCol = "<div class='gsDetailRightColElemL'>Gutschein Status:</div>
								<div class='gsDetailRightColElemR'>gelöscht</div>
						<div class='cclear'></div>";
		}
	}

	echo json_encode(array($leftCol, $rightCol));
}


function getLastAbschlId()
{
	$getId = mysql_fetch_array(mysql_query("SELECT MAX(id) FROM kassa_abschluesse"));

	echo $getId[0];
}

function deleteOpenBon()
{
	
	log_to_file("------------> Function: deleteOpenBon <--------------");
	$openBonRes = "";
	$openB = "";
	$wkName = "";
	if (!isset($_SESSION)) {
		session_start();
	}
	if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
		$currentCart = $_SESSION['gastroTisch'];
		$tischName = mysql_fetch_array(mysql_query("SELECT tischName FROM tische WHERE id = '" . $currentCart . "'"));
		$wkName = $tischName['tischName'];
	} else if (defined('WARENKOERBE_ABLEGEN') && strtolower(WARENKOERBE_ABLEGEN) == 'ja') {
		$currentCart = $_SESSION['ablageWarenkorb'];
		$wkN = mysql_fetch_array(mysql_query("SELECT warenkorbName FROM warenkoerbe WHERE id = '" . $currentCart . "'"));
		$wkName = $wkN['warenkorbName'];
	} else {
		$currentCart = $_SESSION['aktuellerWarenkorb'];
	}

	#	if(isset($_SESSION['aktuellerWarenkorb']) && $_SESSION['aktuellerWarenkorb'] != ""){ $warenkorbId=$_SESSION['aktuellerWarenkorb']; }
	if ($currentCart > 0) $warenkorbId = $currentCart;
	else {
		$warenkorbId = false;
		echo "Error !!! Fehlende Warenkorb Id.";
		die();
	}
	if (defined('PRODUCT_DELETE_WRITE_AUDIT') && strtolower(PRODUCT_DELETE_WRITE_AUDIT) == 'ja') {
		$sumStk = 0;
		$sumPrice = 0;
		$sumProd = "";
		$getOpenBonCont = mysql_query("SELECT NAME, printname, stueck, PRICESELL, tax_rate FROM offener_bon WHERE bon_id=" . $warenkorbId . " ");
		while ($getBonCont = mysql_fetch_array($getOpenBonCont)) {
			$sumStk += $getBonCont['stueck'];
			$sumPrice += $getBonCont['stueck'] * ($getBonCont['PRICESELL'] * (1 + ($getBonCont['tax_rate'])));
			if (isset($getBonCont['printname']) && strlen($getBonCont['printname']) > 1) $prName = number_format($getBonCont['stueck'], 1, ",", ".") . "/" . $getBonCont['printname'];
			else $prName = number_format($getBonCont['stueck'], 1, ",", ".") . "/" . $getBonCont['NAME'];
			$sumProd .= $prName . ", ";
		}

		$delMsg = "Ges. Stk: " . $sumStk . ", Ges. Preis: " . number_format($sumPrice, 2, ",", ".") . " gelöscht. ";
		$user = $_SESSION["userName"];
		$insQl = mysql_query("INSERT INTO auditing SET benutzer = '" . $user . "', konfigtitel = 'gesamter offen Bon " . $wkName . " gelöscht',
									funktion = '" . $delMsg . "', ausgangswert = '" . $sumProd . "', datumzeit = NOW()     ");
		#writeLog(basename( __FILE__)." ". __LINE__ , "del msg: ".$delMsg.", ".mysql_error());
		
	}
	
	if(WEBSHOP_TYPE == "WooCommerce")
	{
		require_once("/api/woocommerce/woocommerce.php");
		woocommerce_sync_db_delete_offener_bon($warenkorbId);
	}
	if (strtolower(AUSDRUCK_BEREITSTELLUNGSBON_BEZAHLEN_PDF) == 'ja' && strtolower(AUSDRUCK_BEREITSTELLUNGSBON_PDF) == 'ja'  && strtolower(GASTRO_VERSION) == 'ja') {
		require_once("include/ajax_functions_gastro.php");
		$printSupplay2 = printGastroSupply("paymentFinish", false, true);
	}
	
	if ($warenkorbId) {
		$offenerBonDelMsg = false;
		$getBonData = mysql_fetch_array(mysql_query("SELECT kunden_id, offenerbon_id FROM offener_bon 
														LEFT JOIN bon_add_text ON offener_bon.bon_id = bon_add_text.offenerbon_id 
														WHERE bon_id = $warenkorbId LIMIT 1 "));
		if (!$getBonData)  $offenerBonDelMsg .= "Error, Datenbankfehler " . mysql_error();
		$getLsNr = mysql_fetch_array(mysql_query("SELECT aus_ls_nr FROM offener_bon WHERE bon_id = $warenkorbId AND aus_ls_nr >0 LIMIT 1 "));
		$liefNr = $getLsNr['aus_ls_nr'];

		$delOpenBon = mysql_query("DELETE FROM offener_bon WHERE bon_id=$warenkorbId ");
		$DelRows = mysql_affected_rows();
		if ($liefNr > 0) {
			$delLs = mysql_query("UPDATE lieferschein_referenz SET geloescht = 1 WHERE lieferschein_id = " . $liefNr . " ");

			if (!$delLs)  $offenerBonDelMsg .= "Error, Datenbankfehler " . mysql_error();
			else $offenerBonDelMsg .= "offener Bon und Lieferschein " . $liefNr . " gelöscht.";
		}
		if (defined('EDI_INTO_OFFENERBON_BUTTON') && EDI_INTO_OFFENERBON_BUTTON == 'ja') {
			$openBonId = $getBonData['offenerbon_id'];
			$delAddTxt = mysql_query("DELETE FROM bon_add_text WHERE offenerbon_id = '" . $openBonId . "' ");

			#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."del offen Bon, del resp-> ".$delAddTxt." sqlError-> ".mysql_error()." \n", FILE_APPEND);

			if (!$delAddTxt) {
				$offenerBonDelMsg .= "Fehler beim löschen vom Zusatztext. " . mysql_error();
			}
		} else if ($getBonData['offenerbon_id'] > 0) {
			
			//$delAddTxt=mysql_query("DELETE FROM bon_add_text WHERE offenerbon_id = ".$getBonData['offenerbon_id']." ");
			if (!$delAddTxt) {
				$offenerBonDelMsg .= "Fehler beim löschen vom Zusatztext. " . mysql_error();
			}
		}
		echo $offenerBonDelMsg;
	}
	if (!$delOpenBon) echo "Error, Bon konnte nicht aus der Datenbank entfernt werden";
	else {
		// Wenn die Gastro Version aktiviert ist, dann bleibe am aktuellen Warenkorb
		// Weil ansosnten wird auf den ersten Warenkorb boniert nach dem löschen, oder auf den größten verfügbaren
		if (strtolower(GASTRO_VERSION) != 'ja' && strtolower(WARENKOERBE_ABLEGEN) != 'ja') {
			$openB = mysql_fetch_array(mysql_query("select MAX(bon_id) FROM offener_bon"));
			if ($openB[0] > 0) {
				echo "h1";
				$_SESSION['aktuellerWarenkorb'] = $openB[0];
			} else {
				echo "h2";
				$_SESSION['aktuellerWarenkorb'] = 1;
			}
		}

		if (isset($_SESSION['userId']) && $_SESSION['userId'] != "") {
			$currentUserId = $_SESSION['userId'];
		}
		// die idee wäre den höchsten od niedrigsten offenen bon des aktuellen Benutzer zu finden und diesen dann zu laden
		// dazu wäre eine Benutzer id im table offener_bon aber erforderlich
		// ansonsten die Bon Buttons auslesen ????
		echo "Success Es wurde " . $DelRows . " Datensatz mit der Id " . $warenkorbId . " gelöscht !";
	}
	
	//var_dump($_SESSION);
}
function deleteBonZusatztext()
{

	if (isset($_SESSION["customerToEmptyBon"]) && $_SESSION["customerToEmptyBon"] > 0) {
		$_SESSION["customerToEmptyBon"] = "";
	}
	$currentCart = $_SESSION['aktuellerWarenkorb'];

	if ($currentCart > 0) {
		$delTxtCol = mysql_query("delete FROM bon_add_text WHERE offenerbon_id = " . $currentCart . " ");
		if (!$delTxtCol) {
			writeLog(basename(__FILE__) . " " . __LINE__, "Fehler beim löschen Bon Zusatz Text. " . mysql_error());
			echo json_encode(array("error", "Fehler beim löschen Bon Zusatz Text. " . mysql_error()));
		} else echo json_encode(array("success", "Bon Zusatz Text Gelöscht."));
	}
}

function setSession()
{
	
	if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
		if (isset($_POST['tableId']) && $_POST['tableId'] > 0) {
			if (!isset($_SESSION)) {
				session_start();
			}
			$tischübernameError = false;
			if (isset($_POST['addedFunction']) && $_POST['addedFunction'] == 'confirmTischUebernehmen') {
				$tableId = $_POST['tableId'];
				$userId = $_SESSION['userId'];
				$moveQl = mysql_query("UPDATE offener_bon SET benutzer_id = " . $userId . " WHERE bon_id = " . $tableId . "  ");
				if (!$moveQl) {
					$tischübernameError = true;
					writeLog(basename(__FILE__) . " " . __LINE__, "tisch übernehmen error: " . mysql_error());
				}
			}

			$_SESSION['gastroTisch'] = $_POST['tableId'];
			$_SESSION['aktuellerWarenkorb'] = $_POST['tableId'];
			if (!$tableId) $tableId = $_POST['tableId'];

			$updUser = mysql_query("UPDATE benutzer SET aktuellerRaum =(SELECT raum FROM tische WHERE id = " . $tableId . ") WHERE id = " . $_SESSION['userId'] . "");

			if ($tischübernameError == false) {
				echo "Success, gestetzte Session (gastro): " . $_SESSION['gastroTisch'];
			} else {
				echo "Error, Tisch übernehmen fehlgeschlagen: " . $_SESSION['gastroTisch'];
			}
		} else if (isset($_POST['selectMobilePrinter']) && $_POST['selectMobilePrinter'] == true && isset($_POST['mobilePrinterId']) && $_POST['mobilePrinterId'] > 0) {
			if (!isset($_SESSION)) {
				session_start();
			}
			$_SESSION['selectedMobilPrinterId'] = $_POST['mobilePrinterId'];

			echo "Success, mobile Printer Session gesetzt: " . $_POST['selectMobilePrinter'] . " pr id: " . $_POST['mobilePrinterId'];
		}
	}
	#	else if(isset($_POST['posVersion']) && $_POST['posVersion'] == "warenkorbAblage"){
	else if (defined('WARENKOERBE_ABLEGEN') && strtolower(WARENKOERBE_ABLEGEN) == 'ja') {
		if (isset($_POST['warenkorbId']) && $_POST['warenkorbId'] > 0) {
			if (!isset($_SESSION)) {
				session_start();
			}
			$_SESSION['ablageWarenkorb'] = $_POST['warenkorbId'];
			$_SESSION['aktuellerWarenkorb'] = $_SESSION['ablageWarenkorb'];
			if (isset($_SESSION['gastroTisch'])) unset($_SESSION['gastroTisch']);
			echo "Success, gestetzte Session (warenkorb ablage): " . $_SESSION['ablageWarenkorb'];
		} else if (
			isset($_POST['selectMobilePrinter']) && $_POST['selectMobilePrinter'] == true
			&& isset($_POST['mobilePrinterId']) && $_POST['mobilePrinterId'] > 0
		) {
			if (!isset($_SESSION)) {
				session_start();
			}
			$_SESSION['selectedMobilPrinterId'] = $_POST['mobilePrinterId'];

			echo "Success, mobile Printer Session gesetzt: " . $_POST['selectMobilePrinter'] . " pr id: " . $_POST['mobilePrinterId'];
		}
	} else {
		if (isset($_POST['warenkorbId']) && $_POST['warenkorbId'] != "") {
			$warenkorbId = $_POST['warenkorbId'];
		} else {
			echo "Error !!! Warenkorb Session konnte nicht gestzt werden.";
			die();
		}

		if ($warenkorbId < 1 || $warenkorbId == false) $warenkorbId = 1;
		if (!isset($_SESSION)) {
			session_start();
		}
		$_SESSION['aktuellerWarenkorb'] = $warenkorbId;
	}
	if (isset($_POST['kunden_id']) && $_POST['kunden_id'] > 0) {
		$_SESSION['customerToEmptyBon'] = $_POST['kunden_id'];

		$_SESSION['customerToEmptyBonOnBon'] = array($_POST['warenkorbId'], $_POST['kunden_id']);

		writeLog(basename(__FILE__) . " " . __LINE__, " kunden Session setzen !!!!: ");
	}
	else
	{
		unset($_SESSION['customerToEmptyBon']);

		unset($_SESSION['customerToEmptyBonOnBon'] );
		writeLog(basename(__FILE__) . " " . __LINE__, " kunden UNSET Session setzen !!!!: ");
	}
}

function checkSession()
{

	echo json_encode(array('success', "", "", "grrrrrrrrrr"));
}

function setSessionLogout()
{
	if (!isset($_SESSION)) {
		session_start();
	}

	if (isset($_POST['sessionValue']) && $_POST['sessionValue'] == true) $_SESSION['autologout'] = $_POST['sessionValue'];
	else if (isset($_POST['sessionValue']) && $_POST['sessionValue'] == false) unset($_SESSION['autologout']);
	else  unset($_SESSION['autologout']);
}

function getSession()
{
	if (isset($_POST['sessionName']) && $_POST['sessionName'] != "") {
		$sessionName = $_POST['sessionName'];
	} else {
		echo "Z";
		die();
	}
	session_start();
	if (isset($_SESSION['aktuellerWarenkorb'])) echo $_SESSION[$sessionName];
	else echo "x";
}

function getSessionByName()
{
	if (isset($_POST['sessionName']) && $_POST['sessionName'] != "") {
		$sessionName = $_POST['sessionName'];
		session_start();
		echo $_SESSION[$sessionName];
	} else return false;
}


function bonToScreenTestPrint()
{
	if (isset($_POST['fakeBonId'])) $fakeBonId = $_POST['fakeBonId'];
	$bon_id = $fakeBonId;
	$sql = "select produkt_id, tax_rate, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, tax_rate, DISPLAY, VARPRICE, PRINTNAME, NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, stueck from abgeschlossener_bon_produkte WHERE bon_id='" . $bon_id . "'";
	$sql_produkte = mysql_query($sql);
	if (!$sql_produkte) {
		echo "SQL Fehler: " . mysql_error();
		exit(1);
	}

	$response = "";

	while ($row_produkt = mysql_fetch_assoc($sql_produkte)) {

		$einzel_preis = $row_produkt["PRICESELL"];
		$einzel_preis = $einzel_preis * (1 + $row_produkt["tax_rate"]);
		$summe = $einzel_preis * $row_produkt["stueck"];
		$einzel_preis = number_format($einzel_preis, 2, ",", ".");
		$stueck = $row_produkt["stueck"];
		if ((int) $stueck == $stueck) {
			$stueck_anzeige = number_format($stueck, 0, "", ".");
		} else $stueck_anzeige = number_format($stueck, 2, ",", ".");

		$summe = number_format($summe, 2, ",", ".");
		$printname = $row_produkt["PRINTNAME"];
		$response .= "<div class='ausdruck_ganze_zeile'>";
		$response .= "<div class='ausdruck_bon_stk'> " . $stueck_anzeige . "</div>";
		if ((AUSDRUCK_BON_ZWEIZEILIG > 0) && (strlen($printname) > AUSDRUCK_BON_ZWEIZEILIG)) {
			$response .= "<div class='ausdruck_bon_name_zweizeilig'> " . $printname . "</div> ";
			$response .= "<div class='ausdruck_ganze_zeile'></div>";
		} else {
			$response .= "<div class='ausdruck_bon_name'> " . $printname . "</div> ";
		}
		$response .= "<div class='ausdruck_bon_summe'>" . $summe . "</div><div class='ausdruck_bon_einzelpreis'>" . $einzel_preis . "</div>  <br />";
		$response .= "</div>";
	}
	echo $response;
}

function sendEmail()
{
	if (isset($_POST['empfAdress']) && $_POST['empfAdress'] != "") $empfAdresse = $_POST['empfAdress'];
	if (isset($_POST['modus']) && $_POST['modus'] != "") $modus = $_POST['modus'];
	else $modus = false;
	if (isset($_POST['mailcontent']) && $_POST['mailcontent'] != "") $mailContent = $_POST['mailcontent'];
	else $mailContent = false;
	if (isset($_POST['backupFileLink']) && $_POST['backupFileLink'] != false) $backupFileLink = $_POST['backupFileLink'];
	else $backupFileLink = false;



	$mailQl = mysql_query("SELECT wert FROM konfiguration 
								WHERE name IN ('EMAIL_SMTP_SERVER', 'EMAIL_SMTP_ABSENDER','EMAIL_SMTP_ABSENDER_ANZEIGE', 'EMAIL_SMTP_PORT', 'EMAIL_SUBJECT', 
												'EMAIL_SMTP_ABSENDER_PASSWORT', 'EMAIL_SMTP_VERSCHLUESSELUNG', 'EMAIL_SMTP_AUTH', 'EMAIL_EMPFAENGER')
								ORDER BY FIELD(name, 'EMAIL_SMTP_SERVER', 'EMAIL_SMTP_ABSENDER', 'EMAIL_SMTP_ABSENDER_ANZEIGE', 'EMAIL_SMTP_PORT', 'EMAIL_SUBJECT',
												'EMAIL_SMTP_ABSENDER_PASSWORT', 'EMAIL_SMTP_VERSCHLUESSELUNG', 'EMAIL_SMTP_AUTH', 'EMAIL_EMPFAENGER')");

	$mailData = array();
	while ($dbData = mysql_fetch_array($mailQl)) {
		$mailData[] = $dbData['wert'];
	}

	$smtpServer = $mailData[0];
	$smtpUser = $mailData[1];
	$smtpAnz = $mailData[2];
	$smtpPort = $mailData[3];
	$mailSubject = $mailData[4];
	$smtpPassw = sitPosDecrypt($mailData[5], SITPOS_CRYPT);
	$smtpSeure = $mailData[6];
	$smtpAuth = $mailData[7];
	$mailEmpf = $mailData[8];

	require_once("include/phpMailer/PHPMailerAutoload.php");

	$mail = new PHPMailer;
	$mail->CharSet = 'utf-8';
	$mail->Mailer   = "smtp";
	$mail->Host = $smtpServer;
	$mail->Username   = $smtpUser;
	$mail->Password   = $smtpPassw;
	$mail->Port = $smtpPort;

	if (isset($smtpSeure) && $smtpSeure != "") $mail->SMTPSecure = $smtpSeure;
	if (defined($smtpAuth) && $smtpAuth != "") $mail->SMTPAuth = $smtpAuth;

	$mail->setFrom($smtpUser, $smtpAnz);

	$empfaenger_array = explode(";", $mailEmpf);
	foreach ($empfaenger_array as $empf) {
		$mail->addAddress($empf);
	}

	$mail->Subject = KASSA_ID . " " . $mailSubject . " - " . $modus;

	if ($modus == "testmail") $mailContent = "Testmail, aus Konfigurations Seite versendet.";
	else if ($modus == 'kassenabschluss' && $backupFileLink != false) {
		set_time_limit(300);
		$mail->AddAttachment($mailContent);
		$mail->AddAttachment($backupFileLink);
		$mailContent = KASSA_ID . " Kassenabschluss und Datensicherung im Anhang.";
	} else if ($modus == 'kassenabschluss' && $backupFileLink == false) {
		writeLog(basename(__FILE__) . " " . __LINE__, " mail senden, kassenabschl modus: " . $modus . " content/ abschl link: " . $mailContent);
		$mail->AddAttachment($mailContent);
		$mailContent = KASSA_ID . " Kassenabschluss im Anhang.";
	} else if ($modus == 'autoBackup') {
		writeLog(basename(__FILE__) . " " . __LINE__, " mail senden, backup modus: " . $modus . " content/backup link: " . $mailContent . ", runtimelimit: " . SEND_AUTOBACKUP_RUNTIMELIMIT * 60);
		set_time_limit(300);
		$mail->AddAttachment($mailContent);
		$mailContent = KASSA_ID . " Kassa Backup im Anhang.";
	} else if ($modus == "configUpdate") {
		$mailString = "";
		$confQl = mysql_query("SELECT * from auditing WHERE mailsend = 0");
		while ($confRow = mysql_fetch_assoc($confQl)) {
			$id = $confRow['id'];
			$mailString .= $confRow['datumzeit'] . " Benutzer: " . $confRow['benutzer'] . " Einstellung: " . $confRow['konfigtitel'] . " von: " . $confRow['ausgangswert'] . " 
								auf: " . $confRow['geaentertaufwert'] . " geändert.<br />";

			$updQl = mysql_query("UPDATE auditing SET mailsend = 1 WHERE id = " . $id . " ");
		}

		$mailContent = $mailString;
	}

	$mail->msgHTML($mailContent);
	$mail->SMTPDebug  = 2;

	$errorMsg = "";
	if (!$mail->send()) {
		$errorMsg = "<br />Error sending mail :" . $mail->ErrorInfo . "<br />" . $mailContent;
	} else writeLog(basename(__FILE__) . " " . __LINE__, " mail " . $mail->ErrorInfo);

	//set_time_limit(60);
	echo $errorMsg;
}


function resetLieferscheinAuftragsnummer()
{

	$resetAuftrNr = mysql_query("INSERT INTO lieferschein_referenz SET auftrags_nr = 0, lieferschein_id = 0, lieferschein_erstellt_datum = NOW(), geloescht = 1");
	if (!$resetAuftrNr) echo "Datenbank Error, Fehler beim rücksetzen der Auftrags Nummer";
	else echo "Die Auftrags Nummer wurde erfolgreich zurückgesetzt.";
}

function searchProductData()
{

	if (isset($_POST['searchkey'])) {
		$searchKey = $_POST['searchkey'];
	} else return false;

	$searchResult = "";

	if (isset($_POST['functionTarget']) && $_POST['functionTarget'] == 'searchParent') {


		$serQl = mysql_query("SELECT products.ID AS iD, products.NAME, PRINTNAME, PRICESELL, categories.NAME AS catName, RATE FROM products
									LEFT JOIN taxes ON taxes.ID = TAXCAT
									LEFT JOIN categories ON categories.ID  = products.CATEGORY
									WHERE (products.NAME LIKE '%" . $searchKey . "%' OR products.PRINTNAME LIKE '%" . $searchKey . "%')
									AND products.ID NOT IN (SELECT productid FROM combiartikel) ");
		while ($searchRow = mysql_fetch_array($serQl)) {
			if (strlen($searchRow['PRINTNAME']) > 3) $resultName = $searchRow['PRINTNAME'];
			else $resultName = $searchRow['NAME'];

			#	$price=$searchRow['PRICESELL']*(1+$searchRow['Rate']);
			$catName = $searchRow['catName'];

			$searchResult .= "<div id='" . $searchRow['iD'] . "' class='searchResultLine' 
					onclick=\"selectSearchResult('" . $searchRow['iD'] . "')\">" . $resultName . " - " . $catName . "</div>";
		}
	} else if (isset($_POST['functionTarget']) && $_POST['functionTarget'] == 'searchChild') {

		$serChildQl = mysql_query("SELECT combiartikel.id AS childId, productid, childvon, products.ID AS prodId, products.NAME AS prodName, 
										PRINTNAME, PRICESELL, categories.NAME AS catName, taxes.RATE AS taxRate, print, variableAufteilung  
									FROM combiartikel
									LEFT JOIN products ON productid= products.id
									LEFT JOIN categories ON categories.ID  = products.CATEGORY
									LEFT JOIN taxes ON taxes.ID = TAXCAT
									WHERE childvon = " . $searchKey . " ORDER BY productid ");
		$childSearch = "";
		while ($searchChildRow = mysql_fetch_array($serChildQl)) {
			if (strlen($searchChildRow['PRINTNAME']) > 2) $resultName = $searchChildRow['PRINTNAME'];
			else $resultName = $searchChildRow['prodName'];

			$price = number_format($searchChildRow['PRICESELL'] * (1 + $searchChildRow['taxRate']), 2, ",", ".");

			if ($searchChildRow['print'] == 1) $checkOption = "checked";
			else $checkOption = "";

			$childSearch .= "<div id='" . $searchChildRow['prodId'] . "' class='childResultLine' 
						onclick=\"callChildDeleteDialog('" . $searchChildRow['childId'] . "')\">" . $resultName . " - " . $price . " - " . $searchChildRow['catName'] . "					
						</div><div class='childResultLineCheckbox'>
								<input class='setCombiChildSplitRateCb' id='childPrintCheckbox" . $searchChildRow['childId'] . "' type='checkbox' 
											onchange=\"setCombiChildOptions('printOption', this.id, '" . $searchChildRow['childId'] . "')\"
									" . $checkOption . " value='' />
								<input class='setCombiChildSplitRateField' id='childSplitRate" . $searchChildRow['childId'] . "' type='text' value='" . $searchChildRow['variableAufteilung'] . "'/>
											<button class='setCombiChildSplitRateBut orange'
									onclick=\"setCombiChildOptions('pricesplitOption', 'childSplitRate" . $searchChildRow['childId'] . "', '" . $searchChildRow['childId'] . "')\" >Enter</button>
							</div>
						<div class='cclear'></div>";
		}
		if ($childSearch == "") $childSearch = "<div class='childResultLine' >Kein Teilprodukt zugeordnet.</div>";

		$searchResult .= $childSearch;
	} else if (isset($_POST['functionTarget']) && $_POST['functionTarget'] == 'searchToAddChild') {
		$currentParent = $_POST['currentParent'];
		$searToAddQl = mysql_query("SELECT ID, NAME, PRINTNAME FROM products 
									WHERE (NAME LIKE '%" . $searchKey . "%' OR PRINTNAME LIKE '%" . $searchKey . "%')
									AND ID NOT IN (SELECT childvon FROM combiartikel) AND products.ID <> " . $currentParent . " ");
		while ($searchRow = mysql_fetch_array($searToAddQl)) {
			if (strlen($searchRow['PRINTNAME']) > 2) $resultName = $searchRow['PRINTNAME'];
			else $resultName = $searchRow['NAME'];

			$searchResult .= "<div id='" . $searchRow['ID'] . "' class='searchResultLine' 
					onclick=\"addToParent('" . $searchRow['ID'] . "')\">" . $searchRow['ID'] . " / " . $resultName . "</div>";
		}
	} else if (isset($_POST['functionTarget']) && $_POST['functionTarget'] == 'getCombiartikelTotal') {
		echo "<div class='combiListHeader'>Angelegte Kombinationsartikel</div>";
		$combiList = mysql_query("SELECT products.ID AS iD, products.NAME, products.PRINTNAME, CATEGORY, categories.NAME AS catName
									FROM products 
									LEFT JOIN categories ON categories.ID  = products.CATEGORY
									WHERE products.ID IN (SELECT childvon FROM combiartikel)");
		echo "<div id='combiartikelList' >";
		while ($combiListR = mysql_fetch_array($combiList)) {
			echo "<p id='" . $combiListR['iD'] . "' class='combiList' onclick=\"selectSearchResult('" . $combiListR['iD'] . "')\" >" . $combiListR['NAME'] . " - " . $combiListR['catName'] . "</p>";
		}

		echo "</div>";
	}

	echo $searchResult;
}

function addChildToParent()
{
	if (isset($_POST['childId']) && $_POST['childId'] > 0 && isset($_POST['parrentId']) && $_POST['parrentId'] > 0) {
		$childIdToAdd = $_POST['childId'];
		$parrentIdToAdd = $_POST['parrentId'];
	} else return false;

	$insQl = mysql_query("INSERT INTO combiartikel SET productid = " . $childIdToAdd . ", childvon = " . $parrentIdToAdd . " ");
	if (!$insQl) echo "Datenbank Fehler, Teilartikel konnte nicht hinzugefügt werden. " . mysql_error();
	else echo "Teilartikel Id: " . $childIdToAdd . " dem Combiartikel Id: " . $parrentIdToAdd . " hinzugefügt.";
}

function deleteChildFromCombiartikel()
{
	if (isset($_POST['childId']) && $_POST['childId'] > 0) {
		$combiartikelId = $_POST['childId'];
	} else return false;

	$returnMsg = "";

	$delCombiChild = mysql_query("DELETE FROM combiartikel WHERE id = " . $combiartikelId . " ");
	if (!$delCombiChild) $returnMsg .= "Datenbank Error, löschen von Teilartikel fehlgeschlagen. " . mysql_error();
	else $returnMsg .= "Teilartikel gelöscht.";


	echo $returnMsg . ", delet child responsse    id: " . $combiartikelId;
}

function setChildFromCombiartikelOption()
{
	if (isset($_POST['childDbId']) && $_POST['childDbId'] > 0 && isset($_POST['tTarget'])) {
		$targetDbId = $_POST['childDbId'];
		$setValue = $_POST['setValue'];
		$tTarget = $_POST['tTarget'];
	} else {
		echo "Fehler" . __FILE__ . " / " . __LINE__;
		return false;
	}
	if ($tTarget == 'printOption') {
		$updQl = mysql_query("UPDATE combiartikel SET print = " . $setValue . " WHERE id = " . $targetDbId . " ");

		if (!$updQl) echo "Datenbank Fehler beim setzer der Kombiartikle Print Option. " . mysql_error();
		else echo "Print Option für Kombiteilartikel gesetzt.";
	} else if ($tTarget == 'pricesplitOption') {
		$updQl = mysql_query("UPDATE combiartikel SET variableAufteilung = " . $setValue . " WHERE id = " . $targetDbId . " ");

		if (!$updQl) echo "Datenbank Fehler beim setzer der Kombiartikle Option. " . mysql_error();
		else echo "Preisaufteilungs Option für Kombiteilartikel gesetzt.";
	}
}

function getCardCredit()
{
	$openAmount = false;			#	$openAmount = number_format($_POST['openAmount'], 2, ".", "");
	if (isset($_POST['openAmount']) && strlen($_POST['openAmount']) > 0) $openAmount = str_replace(",", ".", $_POST['openAmount']);
	$cardNo = false;
	if (isset($_POST['gutscheinCardNo']) && strlen($_POST['gutscheinCardNo']) > 0) $cardNo = $_POST['gutscheinCardNo'];


	if ($openAmount !== false && $cardNo !== false) {
		#id gutschein_nr gutschein_erstellt gutschein_aufgeladen betrag kunden_id gesperrt
		$getCardData = mysql_fetch_array(mysql_query("SELECT gutscheine.gs_id AS gs_id, gutschein_nr, gutschein_erstellt, gutschein_aufgeladen, 
											betrag, tax, kunden_id, gesperrt, comment, MIN(gutschein_buchungen.id), verkaufsart
										FROM gutscheine 
										LEFT JOIN gutschein_buchungen ON gutscheine.gs_id = gutschein_buchungen.gs_id
										WHERE gutschein_nr = '" . $cardNo . "' "));
		$kdStrg = false;
		if ($getCardData['kunden_id'] > 0) {
			$getCustData = mysql_fetch_array(mysql_query("SELECT Firma, vorname, nachname, strasse1, strasse2, plz, Ort FROM kunden 
							WHERE id = " . $getCardData['kunden_id'] . " "));
			if (strlen($getCustData['Firma']) > 0) $fa = $getCustData['Firma'] . ", ";
			else $fa = "";
			if (strlen($getCustData['vorname']) > 0) $vn = $getCustData['vorname'] . " ";
			else $vn = "";
			if (strlen($getCustData['nachname']) > 0) $nn = $getCustData['nachname'] . " ";
			else $nn = "";
			if (strlen($getCustData['strasse1']) > 0) $st = $getCustData['strasse1'] . ", ";
			else $st = "";
			if (strlen($getCustData['plz']) > 0) $pl = $getCustData['plz'] . " ";
			else $pl = "";
			if (strlen($getCustData['Ort']) > 0) $ot = $getCustData['Ort'] . " ";
			else $ot = "";
			$kdStrg = $fa . $vn . $nn . $st . $pl . $ot;
		}
		$restBetrag = false;
		if ($getCardData['gs_id'] > 0) {
			if ($getCardData['gesperrt'] >= 1) {
				$restBetrag = number_format($getCardData['betrag'], 2, ",", "");
				echo json_encode(array(
					1, 0, 1, 'Karte gesperrt', $restBetrag, $kdStrg, $getCardData['kunden_id'], $getCardData['gutschein_nr'],
					$getCardData['tax'], $getCardData['comment']
				));
				# karte gefunden, betr 0, gesperrt, text, kartenguthaben, kunden daten
			} else {

				if ($getCardData['betrag'] >= $openAmount) {
					$returnBetrag = $openAmount;
					$restBetrag = number_format($getCardData['betrag'] - $returnBetrag, 2, ",", "");
				} else if ($getCardData['betrag'] < $openAmount) {
					$returnBetrag = $getCardData['betrag'];
					$restBetrag = "0,00";
				}
				echo json_encode(array(1, number_format($returnBetrag, 8, ".", ""), 0, "Karte verfügbar", $restBetrag, $kdStrg, $getCardData['kunden_id'], $getCardData['gutschein_nr'], $getCardData['tax'], $getCardData['comment'], $getCardData['verkaufsart']));
				# karte gefunden, betr aus DB, NICHT gesperrt
			}
		} else {
			echo json_encode(array(
				0, 0, 0, "Nr. Unbekannt", "", $kdStrg, $getCardData['kunden_id'], $getCardData['gutschein_nr'],
				$getCardData['comment']
			));
			return false;
		}
	} else {
		echo "Offener Betrag od karten Nummer nicht angekommen !";
	}
}

function gutscheinKarteUpdate()
{

	$loadFunction = false;
	$gutscheinCardNo = false;
	$loadAmount = false;
	$customerId = false;
	$gsTaxRate = false;
	$gsVerkaufsart = false;
	$gsZahlungsartName = false;
	$gsComment = false;
	if (isset($_POST['loadFunction']) && strlen($_POST['loadFunction']) > 1) $loadFunction = $_POST['loadFunction'];
	if (isset($_POST['gutscheinCardNo']) && strlen($_POST['gutscheinCardNo']) > 1) $gutscheinCardNo = trim($_POST['gutscheinCardNo']);
	if (isset($_POST['loadAmount']) && is_numeric($_POST['loadAmount'])) $loadAmount = $_POST['loadAmount'];
	if (isset($_POST['customerId']) && is_numeric($_POST['customerId'])) $customerId = $_POST['customerId'];
	if (isset($_POST['gsTaxRate']) && is_numeric($_POST['gsTaxRate'])) $gsTaxRate = $_POST['gsTaxRate'];
	if (isset($_POST['gsVerkaufsArt']) && strlen($_POST['gsVerkaufsArt']) > 2) $gsVerkaufsart = $_POST['gsVerkaufsArt'];
	if (isset($_POST['gsZahlungsArt']) && strlen($_POST['gsZahlungsArt']) > 1) $gsZahlungsartName = $_POST['gsZahlungsArt'];
	if (isset($_POST['gsComment'])) $gsComment = $_POST['gsComment'];

	$db_id = $gutscheinCardNo . date('mdYhis', time());
	error_log('$db_id:');
	error_log(print_r($db_id, true));

	$kassenabschluss_id = ist_kassa_offen();
	if ($kassenabschluss_id == false) {
		echo json_encode(array(0, "Kassa ist nicht geöffnet. Gutscheinkarte anlegen abgebrochen"));
		return false;
	}

	// TODO Alex Bankomat
	//if ($gsZahlungsartName == "Bankomat") {
	//	require_once("ajax_funktionen.php");
	//	$retval = gutschein_bankomat_ausfuehren($loadAmount);
	//}

	// mit Bankomaten zahlen oder nicht
	$sql_zahlart_bankomat = "select  karten_terminal AS terminal from zahlungsart WHERE Name ='".$gsZahlungsartName."' and sichtbar=true ORDER by reihenfolge ASC";
	$sql_zahlungsart = mysql_query($sql_zahlart_bankomat);
	if (!$sql_zahlungsart) {
		echo "SQL Fehler: " . mysql_error();
		exit(1);
	}
	
	$row_zahlungsart = mysql_fetch_assoc($sql_zahlungsart);
	$row_bankomat_terminal = $row_zahlungsart['terminal'];

	if ($loadFunction == 'bestehendeAufladen' && $gutscheinCardNo != false && $loadAmount != false) {
		//writeLog(basename( __FILE__)." ". __LINE__ , $gutscheinCardNo." / ".$loadAmount);
		if ($customerId !== false && is_numeric($customerId)) $updateCustId = ", kunden_id = " . $customerId;
		else $updateCustId = "";

		$selQl = mysql_fetch_array(mysql_query("SELECT gutscheine.gs_id, betrag, MIN(gutschein_buchungen.id), verkaufsart 
						FROM gutscheine 
						LEFT JOIN gutschein_buchungen ON gutscheine.gs_id = gutschein_buchungen.gs_id
						WHERE gutschein_nr = '" . $gutscheinCardNo . "' "));
		mysql_query("START TRANSACTION");
		
		if ($gsTaxRate !== false) {
			$updStr = ", tax = " . $gsTaxRate;
		} else $updStr = " ";
		if (strtolower($selQl['verkaufsart']) == 'gskostenlos') $gsZahlungsartName = false;

		$updQ1Str = "UPDATE gutscheine SET update_ts= NOW() , betrag = betrag + " . $loadAmount . ", comment = '" . $gsComment . "', 
									gutschein_aufgeladen = NOW()" . $updateCustId . $updStr . "
								WHERE gutschein_nr = '" . $gutscheinCardNo . "' AND gs_id = " . $selQl['gs_id'] . " ";
		//echo $updQ1Str;
		$updQl = mysql_query($updQ1Str);

	
		$insQlStr = "INSERT INTO gutschein_buchungen SET id = '" . $db_id . "', gs_id = " . $selQl['gs_id'] . ", kassa_abschluss_id = " . $kassenabschluss_id . ",
									verkaufer_id = " . $_SESSION['userId'] . ", betrag_geladen = '" . $loadAmount . "', datum_buchung = NOW(),
									verkaufsart = '" . $gsVerkaufsart . "', zahlungsart_name = '" . $gsZahlungsartName . "' ";
		//echo $insQlStr;
		$insQl = mysql_query($insQlStr);
		$retval = true;
		
		

		if ($row_bankomat_terminal) {
			//echo '<script>zahlung_abgeschlossen_ec("","'.$loadFunction.'",'.-$loadAmount.')</script>';
			$retval = gutschein_bankomat($loadAmount);
		}
		if ($updQl && $insQl && $retval) {
			mysql_query("COMMIT");
			$preLoadVal = $selQl['betrag'];

			//writeLog(basename( __FILE__)." ". __LINE__ , $loadFunction." / ".$preLoadVal." / ".$loadAmount);
			if (preg_match('/^' . GS_PREFIX . '/', $gutscheinCardNo) || strtolower(GUTSCHEIN_PRINT_NONE_PREFIX) == 'ja') {
				# vom System vergebene Karten nr und wenn konfig für andere auch gesetzt wird gedruckt	
				$printGs = printGutscheinBon($gutscheinCardNo, $loadFunction, 140, $preLoadVal, $loadAmount, false, $gsVerkaufsart, $gsZahlungsartName);
			}

			if (defined('GUTSCHEIN_PRINT_PAYMENT_CONFIRM') && strtolower(GUTSCHEIN_PRINT_PAYMENT_CONFIRM) == 'ja') {
				$printGsBest = printGutscheinBon($gutscheinCardNo, $loadFunction, 140, $preLoadVal, $loadAmount, 'zahlungsBestaetigung', $gsVerkaufsart, $gsZahlungsartName);
			}
			if (isset($printGs) && $printGs == $gutscheinCardNo) $prtMsg = " und gedruckt";
			else $prtMsg = "";
			echo json_encode(array(1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", Betrag, " . number_format($loadAmount, 2, ",", "") . " 
					aufgeladen" . $prtMsg . "."));
		} else {
			mysql_query("ROLLBACK");
			echo json_encode(array(0, "Datenbank Fehler beim Aufladen der Gutscheinkarte. " . mysql_error()));
		}
		
	} else if ($loadFunction == 'karteAnlegen' && $gutscheinCardNo != false && $loadAmount != false) {
		if ($customerId == false) $customerId = 0;
		$checkExist = mysql_query("SELECT gutschein_nr FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
		if (mysql_num_rows($checkExist) > 0) {
			echo json_encode(array(0, "Gutscheinkarten Nr. " . $gutscheinCardNo . " existiert bereits. Karte anlegen abgebrochen. "));
			return false;
		}

		$retval = true;
		if ($row_bankomat_terminal) {
			$retval = gutschein_bankomat($loadAmount);
		}
		
		if($retval)
		{
		mysql_query("START TRANSACTION");

		$insQl = mysql_query("INSERT INTO gutscheine SET gutschein_nr = UPPER('" . $gutscheinCardNo . "'), 
						gutschein_erstellt = NOW(), gutschein_aufgeladen = NOW(), betrag = '" . $loadAmount . "', 
						kunden_id = " . $customerId . ", tax = '" . $gsTaxRate . "', gesperrt = 0, comment = '" . $gsComment . "'	");

		$gs_id = mysql_insert_id();
		if ($gsTaxRate != 0) $taxAmount = $loadAmount - ($loadAmount / (1 + $gsTaxRate));
		else $taxAmount = 0;
		$insQlGs = mysql_query("INSERT INTO gutschein_buchungen SET id = '" . $db_id . "', gs_id = " . $gs_id . ", kassa_abschluss_id = " . $kassenabschluss_id . ",
									verkaufer_id = " . $_SESSION['userId'] . ", betrag_geladen = '" . $loadAmount . "', gs_ausstellen_tax = " . $taxAmount . ",
									datum_buchung = NOW(), verkaufsart = '" . $gsVerkaufsart . "', zahlungsart_name = '" . $gsZahlungsartName . "' ");

		if (!$insQl || !$insQlGs) {
			mysql_query("ROLLBACK");
			mysql_query("ALTER TABLE gutscheine auto_increment = 1");
			echo json_encode(array(0, "Datenbank Fehler beim Anlegen der Gutscheinkarte. " . mysql_error()));
			return false;
		} else {
			if ($gsZahlungsartName == "Gutschein Einlösung") {
				gutscheine_bankomat($taxAmount);
			}
			mysql_query("COMMIT");
			if (preg_match('/^' . GS_PREFIX . '/i', $gutscheinCardNo) || strtolower(GUTSCHEIN_PRINT_NONE_PREFIX) == 'ja') {
				# vom System vergebene Karten nr oder wenn drucken nicht disabled ist werden gedruckt
				$printGs = printGutscheinBon($gutscheinCardNo, $loadFunction, 120, false, $loadAmount, false, $gsVerkaufsart, $gsZahlungsartName);
			}
			if (defined('GUTSCHEIN_PRINT_PAYMENT_CONFIRM') && strtolower(GUTSCHEIN_PRINT_PAYMENT_CONFIRM) == 'ja') {
				$printGsBest = printGutscheinBon($gutscheinCardNo, $loadFunction, 140, false, $loadAmount, 'zahlungsBestaetigung', $gsVerkaufsart, $gsZahlungsartName);
			}
			if (isset($printGs) && $printGs == $gutscheinCardNo) $prtMsg = " und gedruckt";
			else $prtMsg = "";

			echo json_encode(array(1, "Gutschein Karte Nr. " . $gutscheinCardNo . ", Betrag, " . number_format($loadAmount, 2, ",", "") . " angelegt" . $prtMsg . "."));
		}
	}
		mysql_query("set autocommit=1");
	} else if ($loadFunction == 'kartePrint' && $gutscheinCardNo != false) {
		$printGs = printGutscheinBon($gutscheinCardNo, $loadFunction, 120, false, false, false, false, false);
		if (isset($printGs) && $printGs == $gutscheinCardNo) {
			echo json_encode(array(1, "Gutschein Karte Nr. " . $gutscheinCardNo . " nachgedruckt."));
		}
	} else if ($loadFunction == 'karteSperren' && $gutscheinCardNo != false) {
		$updQl = mysql_query("UPDATE gutscheine SET gesperrt = 1 WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
		if (!$updQl) echo json_encode(array(0, "Datenbank Fehler beim Sperren der Gutscheinkarte., Nr. " . $gutscheinCardNo . ". " . mysql_error()));
		else echo json_encode(array(1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", gesperrt."));
	} else if ($loadFunction == 'karteEntsperren' && $gutscheinCardNo != false) {
		$updQl = mysql_query("UPDATE gutscheine SET gesperrt = 0 WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
		if (!$updQl) echo json_encode(array(0, "Datenbank Fehler beim Entsperren der Gutscheinkarte, Nr. " . $gutscheinCardNo . ". " . mysql_error()));
		else echo json_encode(array(1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", entsperrt."));
	} else if ($loadFunction == 'dataSaveUpdate' && $gutscheinCardNo != false) {

		$updQl = mysql_query("UPDATE gutscheine SET comment = '" . $gsComment . "', kunden_id = " . $customerId . " 
						WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");

		//debug_to_console("UPDATE gutscheine SET comment = '" . $gsComment . "', kunden_id = " . $customerId . " WHERE gutschein_nr = '" . $gutscheinCardNo . "'");
		//debug_to_console($updQl);
		//debug_to_console($customerId);

		if (!$updQl) {
			echo json_encode(array(0, "Datenbank Fehler beim speichern der Gutschein Daten, Nr. " . $gutscheinCardNo . ". " . mysql_error()));
		} else if ($gsZahlungsartName == "Gutschein Einlösung") {
			gutscheine_bankomat($loadAmount);
		}
		echo json_encode(array(1, "Einträge zu " . $gutscheinCardNo . ", gespeichert."));
	} else if ($loadFunction == 'karteDelete' && $gutscheinCardNo != false) {
		if (isset($_POST['restBetragOption'])) $restBetragOption = $_POST['restBetragOption'];
		if (!$restBetragOption) {
			$checkRest = mysql_fetch_array(mysql_query("SELECT betrag FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "'	"));
			if ($checkRest[0] !== false && $checkRest[0] == 0) {
				mysql_query("START TRANSACTION");
				$delGs = mysql_query("DELETE FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
				$userId = $_SESSION["userName"];
				$delInfo = "Gutschein Nr " . $gutscheinCardNo . " ohne Rest Betrag gelöscht";
				$insAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $userId . "', konfigtitel = 'Gutschein gelöscht', ausgangswert = '" . $delInfo . "', datumzeit = NOW() ");
				if (!$delGs || !$insAudit) {
					echo json_encode(array(1, "Datenbank Fehler. Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", NICHT gelöscht.", "deleteNONESuccess"));
					mysql_query("ROLLBACK");
				} else {
					mysql_query("COMMIT");
					echo json_encode(array(1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", gelöscht.", "deleteSuccess"));
				}
				mysql_query("set autocommit=1");
			} else $checkMsg = "Gutschein ist nicht leer, wurde nicht gelöscht. " . $checkRest[0];
		} else if ($restBetragOption == true) {
			$restBetr = mysql_fetch_array(mysql_query("SELECT gs_id, betrag FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "'   "));
			mysql_query("START TRANSACTION");
			if ($restBetragOption == 'gutschDelIgnor') {
				mysql_query("START TRANSACTION");
				$delGs = mysql_query("DELETE FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
				$userId = $_SESSION["userName"];
				$delInfo = "Gutschein Nr " . $gutscheinCardNo . " mit Rest Betrag (" . $restBetr['betrag'] . ") ignorieren, gelöscht";
				$insAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $userId . "', konfigtitel = 'Gutschein gelöscht', 
										ausgangswert = '" . $delInfo . "', datumzeit = NOW() ");
				if (!$delGs || !$insAudit) {
					echo json_encode(array(1, "Datenbank Fehler. Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", NICHT gelöscht.", "deleteNONESuccess"));
					mysql_query("ROLLBACK");
				} else {
					mysql_query("COMMIT");
					echo json_encode(array(1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", gelöscht. Restbetrag von " . number_format($restBetr['betrag'], 2, ",", ".") . " ignoriert.", "deleteSuccess"));
				}
				mysql_query("set autocommit=1");
			} else if ($restBetragOption == 'gutschDelKassaausgang') {
				mysql_query("START TRANSACTION");
				$restBetrag = -$restBetr['betrag'];
				$gsId = $restBetr['gs_id'];
				$userId = $_SESSION['userId'];
				$delInfo = "Gutschein Nr " . $gutscheinCardNo . " mit Rest Betrag (" . number_format($restBetrag, 2, ",", ".") . ") minus Buchung gelöscht";
				$insGsBook = mysql_query("INSERT INTO gutschein_buchungen SET id = '" . $db_id . "', gs_id = " . $gsId . ", kassa_abschluss_id = " . $kassenabschluss_id . ",
									verkaufer_id = " . $userId . ", betrag_geladen = '" . $restBetrag . "', datum_buchung = NOW(), zahlungsart_name = " . $gsZahlungsartName . "");
				//echo $insGsBook;
				$delGs = mysql_query("DELETE FROM gutscheine WHERE gutschein_nr = '" . $gutscheinCardNo . "' ");
				$insAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $userId . "', konfigtitel = 'Gutschein gelöscht', 
										ausgangswert = '" . $delInfo . "', datumzeit = NOW() ");

				if (!$insGsBook || !$delGs || !$insAudit) {
					echo json_encode(array(1, "Gutschein '" . $gutscheinCardNo . "' löschen fehlgeschlagen. Rest Wert: " . number_format($restBetrag, 2, ",", ".") . "", "deleteNONESuccess"));
					mysql_query("ROLLBACK");
				} else {
					mysql_query("COMMIT");
					echo json_encode(array(
						1, "Gutschein Karte mit der Nr. " . $gutscheinCardNo . ", gelöscht.<br />
												Rest Wert: " . number_format($restBetrag, 2, ",", ".") . " als minus Aufladung verbucht.",
						"deleteSuccess"
					));
				}
				mysql_query("set autocommit=1");
			}
		}
	} else { 
		echo json_encode(array(1, "<span style='color:red'>Fehlende Eingaben, Operation abgebrochen.</span>"));
	}

}

function gutscheinKarteCreateNo()
{

	$getSitposCardNo = mysql_fetch_array(mysql_query("SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(gutschein_nr, '" . GS_PREFIX . "', 2), '" . GS_PREFIX . "', -1) 
						AS sitposNo  FROM gutscheine WHERE gutschein_nr LIKE '" . GS_PREFIX . "%' 
						ORDER BY CAST(sitposNo AS SIGNED INTEGER) DESC LIMIT 1"));

	if (is_numeric($getSitposCardNo['sitposNo'])) $newCardNo = GS_PREFIX . str_pad(((int)$getSitposCardNo['sitposNo']) + 1, 4, '0', STR_PAD_LEFT); # letzte karten nr plus 1
	else if (mysql_errno() == 0 && $getSitposCardNo == false) $newCardNo = GS_PREFIX . str_pad(1, 4, '0', STR_PAD_LEFT); # Abfrage bringt kein ergebnis, erste Karten Nr
	else $newCardNo = "Error";

	echo trim($newCardNo);
}


function printGutscheinBon($gutschNo, $gsType, $bonHeight = false, $preLoadVal = false, $loadVal = false, $zahlungsBest = false, $gsVerkaufsart = false, $gsZahlungsartName = false)
{
	#writeLog(basename( __FILE__)." ". __LINE__ , $gutschNo." ".$gsType." ");
	if ($bonHeight == false) $bonHeight = AUSDRUCK_PDF_GESAMTE_HOEHE;

	$printer = mysql_fetch_array(mysql_query("SELECT win_drucker_name, drucker_margin_pdf, druckbreite, zoom_factor 
											FROM drucker WHERE LOWER(ist_rechnungsdrucker) = 'ja' "));
	if ($printer['druckbreite'] == true && $printer['druckbreite'] > 35) $bonWidth = $printer['druckbreite'];
	else $bonWidth = preg_replace('/[^\d]/', '', AUSDRUCK_GESAMTE_BREITE);

	$gsZahlungungsart = false;
	if ($gsZahlungsartName != false && $gsVerkaufsart != 'gsKostenlos') {
		#$gsZahlungung=mysql_fetch_array(mysql_query("SELECT Name FROM zahlungsart WHERE Name = ".$gsZahlungsartName." "));
		$gsZahlungungsart = $gsZahlungsartName;
	}

	$drucker = $printer[0];

	$margin = $printer[1];
	$margins = explode(",", $margin);
	if ($printer['zoom_factor'] > .4) {
		$zoomF = $printer['zoom_factor'];
	} else $zoomF = 1;



	if (isset($margins[2])) $marginLR = preg_replace('/\D/', '', $margins[2]);
	else $marginLR = 0;
	if (isset($margins[1])) $marginBottom = preg_replace('/\D/', '', $margins[1]);
	else $marginBottom = 0;
	if (isset($margins[0])) $marginTop = preg_replace('/\D/', '', $margins[0]);
	else $marginTop = 0;

	$bonWidth = ($bonWidth * $zoomF) - ($marginLR / 2);

	$bonHeight = $bonHeight + $marginTop + $marginBottom;
	
	require_once('include/barCode39/code39.php');

	$pdf = new PDF_Code39('P', 'mm', array($bonWidth + $marginLR, $bonHeight));
	$pdf->SetMargins($marginLR, $marginTop, 0);			// margin right (optional) set to 0, rest of pager width	
	$pdf->AddPage();

	$fontConfig = SCHRIFT_AUSDRUCK_PDF;

	if (
		strpos(strtolower($fontConfig), 'arial') !== false  || strpos(strtolower($fontConfig), 'helvetica') !== false ||
		strpos(strtolower($fontConfig), 'sans serif') !== false
	) {
		$pdfFont = "Arial";
	} else if (
		strpos(strtolower($fontConfig), 'times') !== false  || strpos(strtolower($fontConfig), 'roman') !== false ||
		(strpos(strtolower($fontConfig), 'serif') !== false &&  strpos(strtolower($fontConfig), 'sans') == false)
	) {
		$pdfFont = "Times";
	} else if (strpos(strtolower($fontConfig), 'courier') !== false) {
		$pdfFont = "Courier";
	} else {
		$pdfFont = "Arial";
	}

	preg_match('/\d+px | \d+pt/', $fontConfig, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0] * $zoomF;

	$lineHeight = $pdfFontSize / 2.5;

	$pdf->SetFont($pdfFont, '', $pdfFontSize);

	if ($marginLR < 1) $marginLR = 5;
	$barCodeWidth = $bonWidth - ($bonWidth * .1);

	#$pdf->Cell($bonWidth, $lineHeight, $barCodeWidth." / ".$bonWidth." / ".$marginTop, 'B', 1, 'C'); 

	$headArray = kopfzeile_ausdrucken('', 'printPdf');
	for ($i = 0; $i < sizeof($headArray); $i++) {
		$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', strip_tags($headArray[$i])), 0, 1, 'C');
	}
	$pdf->Cell(0, 2, "", 'B', 1, 'C'); 	#  trennlinie unterhalb von Fa kopf

	$gsData = mysql_fetch_array(mysql_query("SELECT * FROM gutscheine WHERE gutschein_nr = '" . $gutschNo . "'"));
	
	if ($gsData['kunden_id'] > 0) {
		$kdData = mysql_fetch_array(mysql_query("SELECT * FROM kunden WHERE id = " . $gsData['kunden_id'] . " "));
		$pdf->Cell(0, $lineHeight / 3, "", 0, 1, 'C');
		if ($kdData['Firma'] != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $kdData['Firma']), 0, 1, 'L');
		if ($kdData['anrede'] != "") $anrede = $kdData['anrede'] . " ";
		else $anrede = "";
		if ($kdData['titel'] != "") $titel = $kdData['titel'] . " ";
		else $titel = "";
		if ($kdData['vorname'] != "") $vorN = $kdData['vorname'] . " ";
		else $vorN = "";
		if ($kdData['nachname'] != "") $nachN = $kdData['nachname'];
		else $nachN = "";
		$nName = $anrede . $titel . $vorN . $nachN;
		if ($nName != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $nName), 0, 1, 'L');
		if ($kdData['strasse1'] != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $kdData['strasse1']), 0, 1, 'L');
		if ($kdData['strasse2'] != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $kdData['strasse2']), 0, 1, 'L');
		if ($kdData['plz'] != "") $plz = $kdData['plz'] . " ";
		else $plz = "";
		if ($kdData['Ort'] != "") $ort = $kdData['Ort'];
		else $ort = "";
		$city = $plz . $ort;
		if ($city != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $city), 0, 1, 'L');
		$pdf->Cell(0, $lineHeight / 3, "", "B", 1, 'C');
	}

	$pdf->Cell(0, $lineHeight / 3, "", 0, 1, 'C');
	if ($zahlungsBest != false) {
		$totalStrWidth = $pdf->getstringwidth($gutschNo) + $pdf->getstringwidth(iconv('UTF-8', 'windows-1252', "Zahlungsbestätigung zu Gs: "));
		if ($totalStrWidth > $bonWidth) {
			$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Zahlungsbestätigung zu Gs: "), 0, 1, 'L');
			$pdf->Cell(4, $lineHeight, "", 0, 0, 'L');
			$pdf->Cell($bonWidth - 4, $lineHeight, iconv('UTF-8', 'windows-1252', $gutschNo), 0, 1, 'L');
		} else $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Zahlungsbestätigung zu Gs: " . $gutschNo), 0, 1, 'L');
	} else {
		$totalStrWidth = $pdf->getstringwidth($gutschNo) + $pdf->getstringwidth(iconv('UTF-8', 'windows-1252', "Gutschein Nr: "));
		if ($totalStrWidth > $bonWidth - ($marginLR / 2)) {
			$pdf->Cell($bonWidth - ($marginLR / 2), $lineHeight, "Gutschein Nr: ", 0, 1, 'L');
			$pdf->Cell(4, $lineHeight, "", 0, 0, 'L');
			$pdf->Cell(($bonWidth - ($marginLR / 2)) - 4, $lineHeight, $gutschNo, 0, 1, 'L');
		} else $pdf->Cell($bonWidth - ($marginLR / 2), $lineHeight, "Gutschein Nr: " . $gutschNo, 0, 1, 'L');
	}
	if (defined("VERKAEUFER_AUF_BON_DRUCKEN") && strtolower(VERKAEUFER_AUF_BON_DRUCKEN) == 'ja') {
		# $userQl=mysql_fetch_array(mysql_query("SELECT name FROM benutzer WHERE id = ".$verkauferId." ")); # wird dann verewendet wenn in gs umsätze ein verk steht
		$pdf->Cell($bonWidth - ($marginLR / 2), $lineHeight, AUSDRUCK_VERKAUFER_AUF_BON_TEXT . " " . iconv('UTF-8', 'windows-1252', $_SESSION['userName']), 0, 1, 'L');
	}


	if (strtolower($gsType) == 'kartedelete' || strtolower($gsType) == 'restguthaben') $dDate = strtotime(date('Y-m-d H:i:s'));
	else $dDate = strtotime($gsData['gutschein_aufgeladen']);
	$datetime = date('j.n.Y H:i:s', $dDate);

	$txLineW = preg_replace('/[^\d]/', '', AUSDRUCK_BON_STK_CM) + preg_replace('/[^\d]/', '', AUSDRUCK_BON_NAME_CM) + preg_replace('/[^\d]/', '', AUSDRUCK_BON_EINZELPREIS_CM);
	$pdf->Cell($txLineW, $lineHeight, "Datum: " . $datetime, '', 0, 'L');

	$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, "EUR", '', 1, 'R');

	$pdf->Cell(0, $lineHeight / 2, "", "B", 1, 'C');
	$pdf->Cell(0, $lineHeight / 2, "", 0, 1, 'C');

	if (strtolower($gsType) == 'bestehendeaufladen') {

		if ($zahlungsBest != false) {
			$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
			if ($gsVerkaufsart == 'gsKostenlos') {
				$pdf->Cell(($bonWidth), $lineHeight, "Gutschein Aufladung", 0, 1, 'C');
			} else {
				$pdf->MultiCell(($bonWidth), $lineHeight, iconv('UTF-8', 'windows-1252', "Zahlungsbestätigung\nGutschein aufgeladen"), 0, 'C');
			}

			$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
			$pdf->SetFont($pdfFont, '', $pdfFontSize);

			$pdf->Cell($txLineW, $lineHeight, "Betrag Aufladung", 0, 0, 'L');			#$preLoadVal
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($loadVal, 2, ",", "."), 0, 1, 'R');
			if ($gsVerkaufsart == 'gsKostenlos') $pdf->Cell($bonWidth, $lineHeight, "Gutschein kostenlos aufgeladen", 0, 1, 'L');
			$pdf->Cell($txLineW, $lineHeight, "Gutscheinwert", 0, 0, 'L');
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($preLoadVal + $loadVal, 2, ",", "."), 0, 1, 'R');
			if ($gsZahlungsartName != false && $gsVerkaufsart != 'gsKostenlos') {
				$pdf->Cell($txLineW, $lineHeight, "Gutscheinzahlart", 0, 0, 'L');
				$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, iconv('UTF-8', 'windows-1252', $gsZahlungungsart), 0, 1, 'R');
			}
			$pdf->Cell($bonWidth, 1, "", "B", 1, 'C');
		} else {
			$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
			$pdf->Cell($bonWidth, $lineHeight, "Gutschein aufgeladen", 0, 1, 'C');
			$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
			$pdf->SetFont($pdfFont, '', $pdfFontSize);

			$pdf->Cell($txLineW, $lineHeight, "Gutscheinwert vor Aufladung", 0, 0, 'L');
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($preLoadVal, 2, ",", "."), 0, 1, 'R');
			$pdf->Cell($txLineW, $lineHeight, "Betrag Aufladung", 0, 0, 'L');
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($loadVal, 2, ",", "."), 0, 1, 'R');
			if ($gsZahlungungsart !== false && $gsVerkaufsart != 'gsKostenlos') {
				$pdf->Cell($txLineW, $lineHeight, "Gutschein Zahlart", 0, 0, 'L');
				$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, iconv('UTF-8', 'windows-1252', $gsZahlungungsart), 0, 1, 'R');
			}
			if ($gsVerkaufsart == 'gsKostenlos') $pdf->Cell($bonWidth, $lineHeight, "Gutschein kostenlos\naufgeladen", 0, 1, 'C');
			$pdf->Cell($bonWidth, 1, "", "B", 1, 'C');
			$pdf->Cell($bonWidth, $lineHeight / 3, "", 0, 1, 'C');

			$pdf->Cell($txLineW, $lineHeight, "Gutscheinwert", 0, 0, 'L');
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($gsData['betrag'], 2, ",", "."), 0, 1, 'R');
		}
	} else if (strtolower($gsType) == 'karteanlegen') {
		$pdf->SetFont($pdfFont, 'B', $pdfFontSize);

		if ($zahlungsBest != false) {
			if ($gsVerkaufsart == 'gsKostenlos') {
				$pdf->Cell($bonWidth, $lineHeight, "Gutschein ausgestellt", 0, 1, 'C');
			} else {
				$pdf->MultiCell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Zahlungsbestätigung\nGutschein ausgestellt"), 0, 'C');
			}
		} else {
			$pdf->Cell($bonWidth, $lineHeight, "Gutschein ausgestellt", 0, 1, 'C');
		}
		$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
		$pdf->SetFont($pdfFont, '', $pdfFontSize);

		$pdf->Cell($txLineW, $lineHeight, "Gutschein Ausstellungswert", 0, 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($loadVal, 2, ",", "."), 0, 1, 'R');
		if ($gsZahlungungsart !== false && $gsVerkaufsart != 'gsKostenlos') {
			$pdf->Cell($txLineW, $lineHeight, "Gutschein Zahlart", 0, 0, 'L');
			$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, iconv('UTF-8', 'windows-1252', $gsZahlungungsart), 0, 1, 'R');
		}
		if ($gsVerkaufsart == 'gsKostenlos') $pdf->Cell($bonWidth, $lineHeight, "Gutschein kostenlos ausgestellt", 0, 1, 'L');
	} else if (strtolower($gsType) == 'karteprint') {
		$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, "Gutschein Nachdruck", 0, 1, 'C');
		$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
		$pdf->SetFont($pdfFont, '', $pdfFontSize);
		$pdf->Cell($txLineW, $lineHeight, "Gutscheinwert", 0, 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($gsData['betrag'], 2, ",", "."), 0, 1, 'R');
	} else if (strtolower($gsType) == 'restguthaben') {
		$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, "Gutschein", 0, 1, 'C');
		$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
		$pdf->SetFont($pdfFont, '', $pdfFontSize);
		$pdf->Cell($txLineW, $lineHeight, "Wert", 0, 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, number_format($gsData['betrag'], 2, ",", "."), 0, 1, 'R');
	} else if (strtolower($gsType) == 'kartedelete') {
		#$gutscheinNr, 'kartedelete', 140, $preLoadVal->'restBetrag', $loadVal->'print Code', false
		if ($loadVal == 1) $deleteMsg = " ignoriert.";
		else if ($loadVal == 2) $deleteMsg = " ausbezahlt.";
		else $deleteMsg = "";
		$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Gutschein gelöscht"), 0, 1, 'C');
		$pdf->SetFont($pdfFont, '', $pdfFontSize);
		$pdf->Cell(0, $lineHeight, "", 0, 1, 'C');
		$pdf->Cell($bonWidth, $lineHeight, "Gutschein Restbetrag: " . $preLoadVal . $deleteMsg, 0, 1, 'C');
	}

	if ($zahlungsBest != false || strtolower($gsType) == 'kartedelete') {
		# nur eine leere Cell als Platzhalter
		$pdf->Cell($bonWidth, $lineHeight * 1.5, "", 0, 1, 'C');
	} else {
		#Code39(float x, float y, string code [, boolean ext [, boolean cks [, float w [, float h [, boolean wide]]]]])

		#	x: abscissa	y: ordinate	code: barcode value	ext: indicates if extended mode must be used (true by default)
		#	cks: indicates if a checksum must be appended (false by default) w: width of a narrow bar (0.4 by default)	h: height of bars (20 by default)
		#	wide: indicates if ratio between wide and narrow bars is high; if yes, ratio is 3, if no, it's 2 (true by default)
		#   das letzte param setzt so was wie die strichbreite ud wirkt sich auf die gesamtbreite aus 
		#   0.5 string kann länge bis 5-6, 0.2 

		$barWidth = 0.3 * $zoomF;
		if (strlen($gutschNo) <= 7) $barWidth = 0.4 * $zoomF;
		else if (strlen($gutschNo) > 7 &&  strlen($gutschNo) <= 12) $barWidth = 0.28 * $zoomF;
		else if (strlen($gutschNo) > 12 &&  strlen($gutschNo) <= 17) $barWidth = 0.2 * $zoomF;
		else if (strlen($gutschNo) > 17  &&  strlen($gutschNo) <= 22) $barWidth = 0.16 * $zoomF;
		else if (strlen($gutschNo) > 22) $barWidth = 0.14 * $zoomF;

		$pdf->Cell(0, $lineHeight * 2.5, "", 0, 1, 'C');
		$cPos = $pdf->GetY();
		$pdf->SetFont($pdfFont, '', 3);
		$barcodeH = 20 * $zoomF;
		if ($marginLR == false || $marginLR < 5) $barCodeMarginL = 5;
		else $barCodeMarginL = $marginLR;
		$pdf->Code39($barCodeMarginL, $cPos, $gutschNo, false, false, $barWidth, $barcodeH);

		$pdf->SetY($cPos + (30 * $zoomF));
		$pdf->SetFont($pdfFont, '', $pdfFontSize);
	}

	$fotterSumArray = fusszeile_ausdrucken(false, 'printPdf', false);

	$fotterArray = $fotterSumArray[0];

	for ($i = 0; $i < sizeof($fotterArray); $i++) {
		if ($fotterArray[$i] != "") $pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', strip_tags($fotterArray[$i])), 0, 1, 'C');
	}


	if ($marginBottom > 0) {
		$pdf->SetDrawColor(150);
		$pdf->Cell(($bonWidth / 2) - 2.5, $marginBottom, "", 0, 0, 'R');
		$pdf->Cell(5, $marginBottom, "", "B", 1, 'C');
		$pdf->SetDrawColor(0);
	}


	if ($pdf->PageNo() > 1) {
		printGutscheinBon($gutschNo, $gsType, $bonHeight * $pdf->PageNo(), $preLoadVal, $loadVal, $zahlungsBest, $gsVerkaufsart);

		return false;
	}

	if ($zahlungsBest != false) $gsN = "gs_best_";
	else $gsN = "gutsch_";

	$outputTarget = __DIR__ . "\docs\sIT_" . $gsN . $gutschNo . "_" . date('d_m_H_i') . ".pdf";
	$command = "C:\sitpos\pdfxchange\App\PDFV_Portable\PDFXCview.exe /print:printer=\"$drucker\" \"$outputTarget\" ";

	$writeFile = $pdf->Output($outputTarget, "F");
	#$printLs=pclose(popen($command, "r"));
	$printLs = seiteDrucken($drucker, $outputTarget, "gutscheinPrint");

	if ($printLs == 0) {
		return $gutschNo;
	} else return;
}


function testDelImgs()
{
	$qrImg_temp_dir = 'include/qr_lib/temp/';
	$refDate = date("Y-m-d", strtotime("-1 months"));
	$countX = 0;
	$xFiles = scandir($qrImg_temp_dir);
	foreach ($xFiles as $dFile) {
		$delFile = $qrImg_temp_dir . $dFile;
		$fileDate = date("Y-m-d H:i:s.", filemtime($delFile));
		if (is_file($delFile) && $fileDate <= $refDate) {
			unlink($delFile); // delete file
			$countX++;
		}
	}
	echo $countX . " deleted !!!!";
}


function activateSignatureUnit()
{

	$zdaId = false;
	$serNo = false;
	$kassenId = false;
	$bonStartNumber = false;
	if (isset($_POST['zdaid']) && strlen($_POST['zdaid']) > 1) $zdaId = $_POST['zdaid'];
	if (isset($_POST['cardSerNo']) && $_POST['cardSerNo'] > 1000) $serNo = $_POST['cardSerNo'];
	if (isset($_POST['kassenId']) && strlen($_POST['kassenId']) > 1) $kassenId = $_POST['kassenId'];
	if (isset($_POST['bonStartNumber']) && strlen($_POST['bonStartNumber']) > 1) $bonStartNumber = $_POST['bonStartNumber'];

	if (defined('SIGNATUR_MODUS') && strtolower(SIGNATUR_MODUS) == 'com') {
		$aesClass = new COM('ATrustRegistrierkasseCom.AesIcm');
		$aesKey = "";
		$retAes = $aesClass->GenerateKey($aesKey);
		if (strlen($aesKey) > 3 && $retAes == 0) $error_codeAes = false;
		else $error_codeAes = true;
	}



	if ($zdaId && $serNo && $error_codeAes == false) {

		mysql_query("START TRANSACTION");
		$errorMsg = "";
		$delConfEntrys = mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'KASSA_ID', 'AES_CECKSUM') ");

		if (!$delConfEntrys) {
			$errorMsg .= "Datenbank Delete Error !!! " . mysql_error();
		}


		# Prüfsummen berechnung vom AES Key
		$hashResult = hash('sha256', $aesKey);
		$cH1 = substr($hashResult, 0, 2);
		$cH2 = substr($hashResult, 2, 2);
		$cH3 = substr($hashResult, 4, 2);

		$xStr = chr('0x' . $cH1) . chr('0x' . $cH2) . chr('0x' . $cH3);		# lt AES_Pruefsummenberechnung_200716_3.pdf werden die ersten 3bytes genommen, s		

		$extractedHashBase64 = base64_encode($xStr);
		$valSumCalc = preg_replace('/=/', '', $extractedHashBase64);

		$insArray = array(array('ZERTIFIKATS_NR', $serNo), array('ZDA_ID', $zdaId), array('KASSA_ID', $kassenId), array('AES_KEY', $aesKey), array('AES_CECKSUM', $valSumCalc));

		for ($i = 0; $i < sizeof($insArray); $i++) {
			$insQl = mysql_query("INSERT INTO konfiguration_sitpos SET name = '" . $insArray[$i][0] . "', wert = '" . $insArray[$i][1] . "'  ");
			if (!$insQl) {
				$errorMsg .= "Datenbank Insert Error (" . $insArray[$i][0] . "): " . mysql_error() . " - ";
			}
		}

		if ($errorMsg == "") {
			# falls nicht werden die Sig Card Einträge aus konfiguration_sitpos unten wieder gelöscht
			if (!isset($_SESSION)) session_start();
			$userName = $_SESSION['userName'];
			$userId = $_SESSION['userId'];
			$activateSigError = false;
			$errorMsg = "";



			$insAbsQl = mysql_query("INSERT INTO kassa_abschluesse SET kassen_id = '" . $kassenId . "', verkaufer_id = '" . $userId . "',
										 datum_start = NOW(), wechselgeld = 0.00, kassa_offen = 1 ");
			if (!$insAbsQl) {
				#echo json_encode(array("<h4>Datenbank Error, beim Kassenabschluss schreiben. ".mysql_error()."</h4>", false, false));
				$errorMsg .= "Datenbank Error, beim Kassenabschluss schreiben. " . mysql_error();
				$activateSigError = true;
			}
			$currrentAbschlId = mysql_insert_id();


			$insBonQl = mysql_query("INSERT INTO abgeschlossener_bon SET gesamt_summe= 0.00, verkaufer_id=" . $userId . ", 
						kassa_abschluss_id=" . $currrentAbschlId . ", bon_erstellt_datum = NOW(), dep_nullbeleg = 1 ");
			if (!$insBonQl) {
				$errorMsg .= "Datenbank Error, beim abgeschlossener Bon schreiben. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, schreiben abgeschlossener Bon. ".mysql_error()."</h4>", false, false));
				#$delQl=mysql_query("DELETE FROM kassa_abschluesse  WHERE id = ".$currrentAbschlId." ");
				#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
				#exit(1);
			}
			$currrentBonId = mysql_insert_id();
			$insAbschlQl = mysql_query("INSERT INTO abschluss_belege SET beleg_kennung = 'signatur_start_beleg', bon_id = " . $currrentBonId . ", abschluss_monat = NOW()  ");
			if (!$insAbschlQl) {
				$errorMsg .= "Datenbank Error, beim abschluss Belege schreiben. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, schreiben Abschluss Beleg. ".mysql_error()."</h4>", false, false));
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon  WHERE bon_id = ".$currrentBonId." ");
				#$delQl=mysql_query("DELETE FROM abschluss_belege WHERE bon_id = ".$currrentBonId." ");
				#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
				#exit(1);
			}
			$insBonStQl = mysql_query("INSERT INTO abgeschlossener_bon_steuern SET bon_id = " . $currrentBonId . ", tax_rate = 0.00, gesamt_betrag = 0.00 ");
			if (!$insBonStQl) {
				$errorMsg .= "Datenbank Error, beim abgeschlossener Bon Steuern schreiben. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, schreiben abgeschlossener Bon Steuern. ".mysql_error()."</h4>", false, false));
				#$delQl=mysql_query("DELETE FROM kassa_abschluesse  WHERE id = ".$currrentAbschlId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon  WHERE bon_id = ".$currrentBonId." ");
				#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
				#exit(1);
			}
			$taxId = mysql_fetch_array(mysql_query("SELECT ID FROM taxes WHERE RATE = 0.0000"));
			if ($taxId['ID'] == false || $taxId['ID'] <= 0) $tax_id = 1;
			else  $tax_id = $taxId['ID'];

			$insBonPrQl = mysql_query("INSERT INTO abgeschlossener_bon_produkte SET bon_id = " . $currrentBonId . ", produkt_id = 0, PRICESELL = 0.00,
								PRICESELL_brutto=0, PRICESELL_brutto_gesamt=0, tax=0, tax_gesamt=0, NAME = 'startbeleg', CATEGORY = 9999, TAXCAT = " . $tax_id . ", PRINTNAME = 'startbeleg', tax_rate = 0.00 ");
			if (!$insBonPrQl) {
				$errorMsg .= "Datenbank Error, beim abgeschlossener Bon Steuern schreiben. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, schreiben abgeschlossener Bon Produkte. ".mysql_error()."</h4>", false, false));
				#$delQl=mysql_query("DELETE FROM kassa_abschluesse  WHERE id = ".$currrentAbschlId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon  WHERE bon_id = ".$currrentBonId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon_steuern  WHERE bon_id = ".$currrentBonId." ");
				#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
				#exit(1);
			}
			$za = mysql_query("SELECT Name FROM zahlungsart WHERE standard = 1 ORDER BY reihenfolge DESC");
			while ($zaR = mysql_fetch_array($za)) {
				$zahlung = $zaR['Name'];
			}
			if (!isset($zahlung)) $zahlung = 'undefined';

			$insBonZaQl = mysql_query("INSERT INTO abgeschlossener_bon_zahlung SET bon_id = " . $currrentBonId . ", Name = '" . $zahlung . "', 
									zahlbetrag = 0.00, zahlbetrag_tatsaechlich = 0.00 ");
			if (!$insBonZaQl) {
				$errorMsg .= "Datenbank Error, beim abgeschlossener Bon Zahlung schreiben. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, schreiben abgeschlossener Bon Zahlung. ".mysql_error()."</h4>", false, false));
				#$delQl=mysql_query("DELETE FROM kassa_abschluesse  WHERE id = ".$currrentAbschlId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon  WHERE bon_id = ".$currrentBonId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon_steuern  WHERE bon_id = ".$currrentBonId." ");
				#$delQl=mysql_query("DELETE FROM abgeschlossener_bon_produkte  WHERE bon_id = ".$currrentBonId." ");
				#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
				#exit(1);
			}

			$insAbsQl = mysql_query("UPDATE kassa_abschluesse SET verkaufer_id_abschluss = '" . $userId . "', 
							datum_ende = NOW(), kassa_offen = 0 WHERE id = " . $currrentAbschlId . " ");
			if (!$insAbsQl) {
				$errorMsg .= "Datenbank Error, beim Kassa Abschluesse update. " . mysql_error();
				$activateSigError = true;
				#echo json_encode(array("<h4>Datenbank Error, beim Kassenabschluss schreiben. ".mysql_error()."</h4>", false, false));
				#exit(1);
			}

			$dep_table_write_result = dep_table_schreiben($currrentBonId, 'startbeleg');

			if ($dep_table_write_result[0] == false) {
				$errorMsg .= "Dep Error, beim schreiben vom Signatur aktivieren Startbeleg schreiben";
				$activateSigError = true;
			}

			/*
					if($dep_table_write_result[0] == false){
						echo '<script>
								openGeneralDialog("depWriteToDatabaseError", "Daten Erfassungsprotokoll Fehler", "Beim Schreiben in die Datenbank der Daten Erfassungs Protokoll Daten ist ein Fehler aufgetreten !!!<br />Bon Nr:'.$currrentBonId.'<br />'.$dep_table_write_result[1].'", "wrapper");			
						</script>';	
						
						return false;
					}
					*/

			if ($activateSigError == false) {
				mysql_query("COMMIT");
				$signaturDaten = array('signaturData', $kassenId, $aesKey, $zdaId, $serNo, $valSumCalc);
				$printBeleg = startBelegDrucken($currrentBonId, 75, false, false);		# ausdruck vom Beleg								
				$printBeleg2 = startBelegDrucken($currrentBonId, 75, $signaturDaten, false);	# ausdruck vom Beleg der Signatur Daten

				$butStr = "<p><button class='orange button_none_float' style='width:30%; margin:22px auto;' 
							onclick=\"displayConfigDiv('signatureUnitActivate', 'undefinedTarget')\">Signatur Einheit Funktionen</button></p>";

				if (strpos(strtolower($printBeleg), 'error') !== false || strpos(strtolower($printBeleg2), 'error') !== false) {
					echo "<h4>Fehler beim drucken der Belege.</h4><p>Prüfen Sie ob die Aktivierung trotzdem erfolgt ist.</p>";
				} else echo json_encode(array('<h4>Signatur Einheit wurde aktiviert.</h4>' . $butStr, true, true));
			} else {
				# irgend eine DB Aktion hat einen Error erzeugt
				mysql_query("ROLLBACK");
				mysql_query("ALTER TABLE abgeschlossener_bon AUTO_INCREMENT = 1");
				echo json_encode(array("<p>" . $errorMsg . "</p>", false, false));
			}
		} else {
			# Error im ersten Abschn. konfiguration_sitpos delete/insert
			#$delConfEntrys=mysql_query("DELETE FROM konfiguration_sitpos WHERE name IN ('ZERTIFIKATS_NR', 'ZDA_ID', 'AES_KEY', 'AES_CECKSUM') ");
			mysql_query("ROLLBACK");
			# Table abgeschl Bon wurde hier nicht geschr, deswegen kein autoincrement setzen
			echo json_encode(array('<h4>Fehler beim aktivieren der Signatur Einheit aufgetreten.</h4><br />' . $errorMsg, false, false));
		}
	} else {
		# wenn keine AES Key erstellt werden kann (Sig Karten od Funktion Fehler )
		echo json_encode(array('Fehler beim aktivieren der Signatur Einheit aufgetreten.', '', ''));
	}
	mysql_query("set autocommit=1");
}


function newSignatureCartEnable()
{
	if (defined('SIGNATUR_MODUS') && strtolower(SIGNATUR_MODUS) == 'com') {

		$sigCard = new COM('ATrustRegistrierkasseCom.Registrierkasse');
		$initCard = $sigCard->Initialize;
		$loadInfo = $sigCard->LoadInfo;				# ohne load info kommt keine ser nr !!!!
		$getSerNo = $sigCard->CertificateSerial;

		if ($getSerNo > 1000) {

			$updCardSerNo = mysql_query("UPDATE konfiguration_sitpos SET wert= '" . $getSerNo . "' WHERE name = 'ZERTIFIKATS_NR' ");

			if (!$updCardSerNo) {
				echo "Datenbank Fehler beim schreiben der Signatur Karten Daten." . mysql_error();
			} else {

				$getSigData = mysql_query("SELECT wert, name FROM konfiguration_sitpos");
				while ($getSigDataR = mysql_fetch_assoc($getSigData)) {
					if ($getSigDataR['name'] == 'KASSA_ID') $kassaId = $getSigDataR['wert'];
					else if ($getSigDataR['name'] == 'AES_KEY') $aesKey = $getSigDataR['wert'];
					else if ($getSigDataR['name'] == 'ZDA_ID') $zdaId = $getSigDataR['wert'];
					else if ($getSigDataR['name'] == 'ZERTIFIKATS_NR') $cardSerNo = $getSigDataR['wert'];
					else if ($getSigDataR['name'] == 'AES_CECKSUM') $aesChecksum = $getSigDataR['wert'];
				}
				$signaturDaten = array('signaturData', $kassaId, $aesKey, $zdaId, $cardSerNo, $aesChecksum);
				startBelegDrucken(0, 75, $signaturDaten, false);

				$checkLastUnsig = mysql_fetch_array(mysql_query("SELECT signjws, beleg_nr FROM DEP ORDER BY beleg_nr DESC LIMIT 0, 1 "));
				$sigStrgTmp = explode(".", $checkLastUnsig['signjws']);
				$sigStrgDecoded = base64_decode($sigStrgTmp[2]);


				$responseTxt = "<p>Neue Signaturkarte aktiviert.</p><p>Im nächsten Schritt wird auf zuletzt unsignierte Bons im Daten Export Protokoll geprüft.</p>";
				echo json_encode(array($responseTxt, $aesChecksum));
			}
		} else {
			echo "Die erforderlichen Daten konnten nicht von der Karte gelesen werden.";
		}
	} else {
		echo "Signaturmodus wurde nicht erkannt.";
	}
}



function startBelegDrucken($bon_id, $bonHeight = false, $printTarget = false, $reprintCall = false)
{

	if ((isset($_POST['startbeleg_reprint']) && $_POST['startbeleg_reprint'] == 'reprint_startbeleg' && $bon_id == false) || $reprintCall == true) {
		$stBelQl = mysql_fetch_array(mysql_query("SELECT bon_id FROM abgeschlossener_bon_produkte WHERE NAME = 'startbeleg' order by ID DESC LIMIT 1"));
		$bon_id = $stBelQl['bon_id'];
		$reprintCall = true;
	}

	if ($bonHeight == false) $bonHeight = AUSDRUCK_PDF_GESAMTE_HOEHE;

	require_once('include/fpdf.php');

	$printer = mysql_fetch_array(mysql_query("SELECT win_drucker_name, drucker_margin_pdf, zoom_factor, druckbreite  FROM drucker WHERE LOWER(ist_rechnungsdrucker) = 'ja' "));

	if (!$printer) return "Datenbank Error. " . mysql_error();

	if ($printer['druckbreite'] == true && $printer['druckbreite'] > 35) $bonWidth = $printer['druckbreite'];
	else $bonWidth = preg_replace('/[^\d]/', '', AUSDRUCK_GESAMTE_BREITE);

	$drucker = $printer['win_drucker_name'];
	$margin = $printer['drucker_margin_pdf'];
	$margins = explode(",", $margin);

	if (is_int($printer[2]) || is_float($printer[2])) $zoomF = $printer[2];
	else $zoomF = 1;

	$zoomF = $printer[2];
	$bonWidth *= $zoomF;

	if (isset($margins[2])) $marginLR = preg_replace('/\D/', '', $margins[2]);
	else $marginLR = 0;
	if (isset($margins[1])) $marginBottom = preg_replace('/\D/', '', $margins[1]);
	else $marginBottom = 0;
	if (isset($margins[0])) $marginTop = preg_replace('/\D/', '', $margins[0]);
	else $marginTop = 0;

	$pdf = new FPDF('P', 'mm', array($bonWidth, $bonHeight));
	$pdf->SetMargins($marginLR, $marginTop, 0);
	$pdf->AddPage();

	$fontConfig = SCHRIFT_AUSDRUCK_PDF;

	if (
		strpos(strtolower($fontConfig), 'arial') !== false  || strpos(strtolower($fontConfig), 'helvetica') !== false ||
		strpos(strtolower($fontConfig), 'sans serif') !== false
	) {
		$pdfFont = "Arial";
		$z = "Arial";
	} else if (
		strpos(strtolower($fontConfig), 'times') !== false  || strpos(strtolower($fontConfig), 'roman') !== false ||
		(strpos(strtolower($fontConfig), 'serif') !== false &&  strpos(strtolower($fontConfig), 'sans') == false)
	) {
		$pdfFont = "Times";
		$z = "Times";
	} else if (strpos(strtolower($fontConfig), 'courier') !== false) {
		$pdfFont = "Courier";
		$z = "Courir";
	} else {
		$pdfFont = "Arial";
		$z = "Default";
	}

	preg_match('/\d+px | \d+pt/', $fontConfig, $m);
	preg_match('/\d+/', $m[0], $match);
	$pdfFontSize = $match[0];
	$lineHeight = $pdfFontSize / 2.5;



	$pdf->SetFont($pdfFont, '', $pdfFontSize);
	#	$pdf->Cell(0, 6, $z." / ".$fontConfig." -- ".$pdfFontSize, 'B', 1, 'C');


	$headArray = kopfzeile_ausdrucken('', 'printPdf');
	for ($i = 0; $i < sizeof($headArray); $i++) {
		$pdf->Cell($bonWidth - ($marginLR * 2), $lineHeight, iconv('UTF-8', 'windows-1252', strip_tags($headArray[$i])), 0, 1, 'C');
	}
	$pdf->Cell(0, 2, "", 'B', 1, 'C'); 	#  trennlinie unterhalb von Fa kopf

	//	$pdf->Cell(0, 12, $printTarget[0]."- ".$printTarget[1]."- ".$printTarget[2], 'B', 1, 'C');

	if ($printTarget[0] == 'signaturData') {
		$userName = $_SESSION['userName'];

		$pdf->Cell($bonWidth, 1.5, "", 0, 1, 'C');
		$pdf->Cell($bonWidth, $lineHeight * 1.2, "Signatur aktivieren Daten", 0, 1, 'L');
		$pdf->Cell($bonWidth, $lineHeight, "Erstellt von: " . iconv('UTF-8', 'windows-1252', $userName), 0, 1, 'L');

		$pdf->Cell($bonWidth, $lineHeight, "Datum: " . date('Y-m-d H:i:s'), '', 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, "", '', 1, 'R');
		$pdf->Cell($bonWidth, $lineHeight / 2, "", 'B', 1, 'C');

		$pdf->Cell($bonWidth, 2, "", 0, 1, 'C');

		# der Font wird auf Courier gesetzt damit die Signaturkarte Daten besser lesbar sind, l/I, 0/O usw.
		$pdf->SetFont('Courier', '', $pdfFontSize);

		$pdf->Cell($bonWidth, $lineHeight, "Kassen Id:", 0, 1, 'L');
		$pdf->SetFont('Courier', 'B', $pdfFontSize);
		$pdf->Cell(3, $lineHeight, "", 0, 0, 'C');
		$pdf->Cell($bonWidth - 5, $lineHeight, iconv('UTF-8', 'windows-1252', $printTarget[1]), 0, 1, 'L');
		$pdf->Cell($bonWidth, 1.8, "", 0, 1, 'C');
		$pdf->SetFont('Courier', '', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, "Zda Id:", 0, 1, 'L');
		$pdf->SetFont('Courier', 'B', $pdfFontSize);
		$pdf->Cell(3, $lineHeight, "", 0, 0, 'C');
		$pdf->Cell($bonWidth - 5, $lineHeight, iconv('UTF-8', 'windows-1252', $printTarget[3]), 0, 1, 'L');
		$pdf->Cell($bonWidth, 1.8, "", 0, 1, 'C');
		$pdf->SetFont('Courier', '', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, "Signatur Einheit Serien Nr:", 0, 1, 'L');
		$pdf->SetFont('Courier', 'B', $pdfFontSize);
		$pdf->Cell(3, $lineHeight, "", 0, 0, 'C');
		$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', $printTarget[4]), 0, 1, 'L');
		$pdf->Cell($bonWidth - 5, 1.8, "", 0, 1, 'C');
		$pdf->SetFont('Courier', '', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Aes Schlüssel:"), 0, 1, 'L');
		$pdf->SetFont('Courier', 'B', $pdfFontSize);
		$pdf->Cell(3, $lineHeight, "", 0, 0, 'C');
		$pdf->MultiCell(($bonWidth - 3) * 0.8, $lineHeight, iconv('UTF-8', 'windows-1252', $printTarget[2]), 0, 'L');
		$pdf->Cell($bonWidth, 1.8, "", 0, 1, 'C');
		$pdf->SetFont('Courier', '', $pdfFontSize);
		$pdf->Cell($bonWidth, $lineHeight, iconv('UTF-8', 'windows-1252', "Aes Schlüssel Prüfsummencode:"), 0, 1, 'L');
		$pdf->SetFont('Courier', 'B', $pdfFontSize);
		$pdf->Cell(3, $lineHeight, "", 0, 0, 'C');
		$pdf->MultiCell($bonWidth - 5, $lineHeight, iconv('UTF-8', 'windows-1252', $printTarget[5]), 0, 'L');

		$pdf->SetFont($pdfFont, '', $pdfFontSize);
	} else {

		$userName = $_SESSION['userName'];
		$depData = mysql_fetch_array(mysql_query("SELECT * FROM dep WHERE beleg_nr = " . $bon_id . " "));

		$qr_string = $depData['qr_string'];



		$pdf->Cell(0, 1.5, "", 0, 1, 'C');
		$pdf->Cell(0, $lineHeight * 1.2, BELEG_BENENNUNG . " " . $bon_id, 0, 1, 'L');
		$pdf->Cell(0, $lineHeight, AUSDRUCK_VERKAUFER_AUF_BON_TEXT . " " . iconv('UTF-8', 'windows-1252', $userName), 0, 1, 'L');

		$txLineW = preg_replace('/[^\d]/', '', AUSDRUCK_BON_STK_CM) + preg_replace('/[^\d]/', '', AUSDRUCK_BON_NAME_CM) + preg_replace('/[^\d]/', '', AUSDRUCK_BON_EINZELPREIS_CM);
		$txLineW *= $zoomF;
		$pdf->Cell($txLineW, $lineHeight, "Datum: " . $depData['datum_zeit'], '', 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, "EUR", '', 1, 'R');

		$pdf->Cell(0, $lineHeight / 2, "", "B", 1, 'C');
		$pdf->Cell(0, $lineHeight / 4, "", 0, 1, 'C');

		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_STK_CM) * $zoomF, $lineHeight, 0, 0, 0, 'R');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_NAME_CM) * $zoomF, $lineHeight, 'Startbeleg', 0, 0, 'L');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_EINZELPREIS_CM) * $zoomF, $lineHeight, '0,00', 0, 0, 'R');
		$pdf->Cell(preg_replace('/[^\d]/', '', AUSDRUCK_BON_SUMME_CM) * $zoomF, $lineHeight, '0,00', 0, 1, 'R');

		$qrImgMarginTop = 10;
		$qrImgMarginBottom = 5;
		$qrImgSize = $bonWidth / 1.5;
		$qrImgPosL = (($bonWidth - $qrImgSize) / 2) + ($marginLR / 2);

		$imgY = $pdf->GetY() + $qrImgMarginTop;

		if (strlen($qr_string) > 55) {

			$qrX = explode("_", $qr_string);
			$lastIndex = count($qrX) - 1;
			$sigData = base64_decode($qrX[$lastIndex]);
			if (strtolower($sigData) == 'sicherheitseinrichtung ausgefallen') {
				$pdf->Cell($bonWidth, $lineHeight * 2, "", 0, 1, "C");
				$sigData = str_replace("_", " ", $sigData);
				$pdf->SetFont($pdfFont, 'B', $pdfFontSize);
				$pdf->Cell($bonWidth, $lineHeight, $sigData, 0, 1, "C");
			} else {
				global $errorCorrectionLevel;
				global $matrixPointSize;
				global $qrMargin;
				global $qrImg_temp_dir;

				$qrFilename = $qrImg_temp_dir . $bon_id . ".png";

				QRcode::png($qr_string, $qrFilename, $errorCorrectionLevel, $matrixPointSize, $qrMargin);
				$pdf->Image($qrFilename, $qrImgPosL, $imgY, $qrImgSize, 'PNG');
				unlink($qrFilename);

				$pdf->SetY($imgY + $qrImgSize + $qrImgMarginBottom);
				$pdf->Cell(10, 1, '', 0, 1, 'C');
			}
		}
	}

	# margin bottom Cell
	if ($marginBottom > 0) {
		$pdf->SetDrawColor(150);
		$pdf->Cell((($bonWidth + $marginLR) / 2) - 2, $marginBottom, "", 0, 0, 'R');
		$pdf->Cell(4, $marginBottom, "", "B", 1, 'C');
	}

	if ($pdf->PageNo() > 1) {
		startBelegDrucken($bon_id, $bonHeight * $pdf->PageNo(), $printTarget, $reprintCall);
		return false;
	}
	if ($printTarget == false) $prName = 'startbeleg';
	else $prName = 'sigdata';

	if ($reprintCall == true) $prName = 'startbeleg_reprint';

	$outputTarget = "docs\sIT_" . $prName . ".pdf";
	$command = "C:\sitpos\pdfxchange\App\PDFV_Portable\PDFXCview.exe /print:printer=\"$drucker\" \"$outputTarget\" ";

	$writeFile = $pdf->Output($outputTarget, "F");

	#exec($command, $output, $error_code);
	$error_code = seiteDrucken($drucker, $outputTarget, "signaturData");
}

// Funktion editiert den Zusatztext vom gesamten Bon
// scheint es zu löschen und zu ändern und hinzuzugügen anhand vom Inhalt des Textes
function bonZusatzTxtAdd()
{
	$bonZusatzTx = false;

	if (isset($_POST['zusatzTxt']) && strlen($_POST['zusatzTxt']) > 0) $bonZusatzTx = $_POST['zusatzTxt'];
	if (!isset($_SESSION)) session_start();
	$checkX = "check session: ";
	if (isset($_SESSION['gastroTisch'])) $checkX .= " tisch id: " . $_SESSION['gastroTisch'];
	if (isset($_SESSION['ablageWarenkorb'])) $checkX .= " warenkorb id: " . $_SESSION['ablageWarenkorb'];
	if (isset($_SESSION['aktuellerWarenkorb'])) $checkX .= " normal WK id: " . $_SESSION['aktuellerWarenkorb'];

	file_put_contents('kpcheckit.txt', "\n " . basename(__FILE__) . " " . __LINE__ . " " . $bonZusatzTx . " \n ", FILE_APPEND);


	if (strtolower(GASTRO_VERSION) == 'ja') {
		$currentCart = $_SESSION['gastroTisch'];
	} else if (strtolower(WARENKOERBE_ABLEGEN) == 'ja') {
		$currentCart = $_SESSION['ablageWarenkorb'];
	} else $currentCart = $_SESSION['aktuellerWarenkorb'];

	if ($bonZusatzTx !== false && $currentCart > 0) {
		mysql_query("START TRANSACTION");
		$txtDbError = false;
		$msgArray = array();

		$checkTxt = mysql_fetch_array(mysql_query("SELECT id FROM bon_add_text WHERE offenerbon_id = " . $currentCart . " LIMIT 1 "));
		$txtId = $checkTxt['id'];
		if ($txtId == true && $txtId > 0) {
			$updTxt = mysql_query("UPDATE bon_add_text SET bon_text = '" . $bonZusatzTx . "' WHERE id = " . $txtId . "");
			if (!$updTxt) {
				$msgArray = array("Error", "Datenbank Fehler beim Einfügen Zusatztext. " . mysql_error(), "");
				$txtDbError = true;
			} else {
				$msgArray = array("'" . $txtId . "'", "Zusatztext mit Id " . $txtId . " zu offener Bon Nr. " . $currentCart . " verändert.", $bonZusatzTx);
			}
		} else {
			$insQl = mysql_query("INSERT INTO bon_add_text SET offenerbon_id = " . $currentCart . ", bon_text = '" . $bonZusatzTx . "' ");
			$insertId = mysql_insert_id();
			if (!$insQl) {
				$msgArray = array("Error", "Datenbank Fehler beim Einfügen Zusatztext. " . mysql_error(), "");
				$txtDbError = true;
			} else {
				$msgArray = array("'" . $insertId . "'", "Zusatztext mit Id " . $insertId . " zu offener Bon Nr. " . $currentCart . " eingefügt.", $bonZusatzTx);
			}
		}
		#writeLog(basename( __FILE__)." ". __LINE__ , "ajax zusatz texte: ".$insertId." /// ".mysql_error());
		if ($txtDbError == false) {
			mysql_query("COMMIT");
		} else {
			mysql_query("ROLLBACK");
			mysql_query("ALTER TABLE `bon_add_text` AUTO_INCREMENT =1");
		}
		echo json_encode($msgArray);
	}
	if ($bonZusatzTx == false && $currentCart > 0) {
		# wenn der Txt leer ist löschen wir den datensatz falls vorhanden
		mysql_query("START TRANSACTION");
		$txtDbError = false;
		$msgArray = array();
		$delTxt = mysql_query("DELETE FROM bon_add_text WHERE offenerbon_id = " . $currentCart . " ");
		if (!$delTxt) {
			$msgArray = array("Error", "Datenbank Fehler beim löschen vom Zusatztext. " . mysql_error(), "");
			$txtDbError = true;
		} else {
			$msgArray = array("deleted", "Zusatztext zu offener Bon Nr. " . $currentCart . " gelöscht.", "");
		}
		if ($txtDbError == false) {
			mysql_query("COMMIT");
			mysql_query("ALTER TABLE `bon_add_text` AUTO_INCREMENT =1");
		} else {
			mysql_query("ROLLBACK");
		}
		echo json_encode($msgArray);
		mysql_query("set autocommit=1");
	} else {
		json_encode(array("Error", "Fehler beim Einfügen von Bon Zusatzt Text. Eventuell undefinierter offener Bon od fehlender Text"));
	}
}


function setDisplayDepSignError()
{
	$upD = mysql_query("UPDATE konfiguration SET wert = 'nein' WHERE name = 'DISPLAY_DEP_SIGN_ERROR'");
	if (!$upD) echo "Error beim schreiben von Display Error Funktion. " . mysql_error();
}

function printSignatureData()
{

	if (
		defined('KASSA_ID') && strlen(KASSA_ID) > 1 && defined('AES_KEY') && strlen(AES_KEY) > 1 &&  defined('ZDA_ID')
		&& strlen(ZDA_ID) > 1 && defined('ZERTIFIKATS_NR') && ZERTIFIKATS_NR > 1000
	) {
		$signaturDaten = array('signaturData', KASSA_ID, AES_KEY, ZDA_ID, ZERTIFIKATS_NR, AES_CECKSUM);
		startBelegDrucken(0, 75, $signaturDaten, false);
	}
}

function checkSessionRuntime()
{
	if (!isset($_SESSION)) {
		session_start();
	}
	$diffTime = $_SESSION['tTime'] - time();
	echo date('i:s') . " / " . $diffTime;
}

function directChangeUser()
{
	$changeToUserId = false;
	if (isset($_POST['userId']) && $_POST['userId'] > 0) {
		$changeToUserId = $_POST['userId'];

		$getUser = mysql_fetch_array(mysql_query("SELECT * FROM benutzer WHERE id = " . $changeToUserId . " "));
		if ($getUser['id'] > 0) {
			if (!isset($_SESSION)) {
				session_start();
			}
			$_SESSION['userName'] = $getUser['name'];
			$_SESSION['userId'] = $changeToUserId;
			$_SESSION['userLevel'] = $getUser['ist_admin'];
			$_SESSION['tTime'] = time();
			// TODO Alex Session
			if ($getUser['ist_admin'] >= 2) $_SESSION['ist_admin'] = true;
			else {
				unset($_SESSION["ist_admin"]);
			}


			echo json_encode(array(true, "Benutzerwechsel auf " . $getUser['name'], $changeToUserId));
		} else echo json_encode(array(false, "Fehler beim Benutzerwechsel", ''));
	} else {
		echo json_encode(array(false, "Fehler beim Benutzerwechsel", ''));
	}
}


function getReportGDPdU()
{
	#writeLog(basename( __FILE__)." ". __LINE__ , "getReportGDPdU aufgerufen");
	$reportTarget = false;
	if (isset($_POST['reportTarget'])) {
		$reportTarget = $_POST['reportTarget'];
	}
	if (defined('LAENDERKENNUNG_DE') && LAENDERKENNUNG_DE == 'DE') {
		require_once("global_functions_deutschl.php");
		$reportReturnVal = runGDPdU_export($reportTarget);

		if (is_array($reportReturnVal) && $reportReturnVal[0] == 'downloadReport GDPdU') {
			echo implode("-#-", $reportReturnVal);
		} else {
			echo $reportReturnVal;
		}
	} else echo "display success Die Funktion in dieser Version nicht freigegeben";
}

function kpTestDestroySession()
{
	if (isset($_POST['direction']) && strlen($_POST['direction']) > 0) $direction = $_POST['direction'];
	else $direction = "variable Val nicht angekommen";

	if ($direction == 'get') {
		print_r($_SESSION);
	} else if ($direction == 'unset') {
		session_unset();
		print_r($_SESSION);
	} else if ($direction == 'destroy') {
		session_destroy();
		print_r($_SESSION);
	} else {
		echo " Post as param ('get' od 'destroy') nicht angekommen ajax_kp Zeile 6412" . $direction;
	}

	#file_put_contents('kpcheckit.txt', "\n " .basename(__FILE__) . " ". __LINE__ ."- kpTestDestroySession test dings... \n ", FILE_APPEND);



}

function kpAjaxTest($cart = false, $fromId = false, $sleepT = false)
{
	if (isset($_POST['cart']) && $_POST['cart'] > 0) $cart = $_POST['cart'];
	if (isset($_POST['fromId']) && $_POST['fromId'] > 0) $fromId = $_POST['fromId'];
	if (isset($_POST['sleepT']) && $_POST['sleepT'] > 0) $sleepT = $_POST['sleepT'];

	$successMsg = false;

	ini_set('max_execution_time', $sleepT * 2);

	sleep($sleepT);

	$successMsg = "Blindtext - gesetzte execution time: " . $sleepT;

	/*	writeLog(basename( __FILE__)." ". __LINE__ , "check POST  : ".$fromId." - \n");
		
		if($cart == false) $cart=1;
		if($fromId == false ){
			echo json_encode(array("abgebrochen", "--". mysql_error(), $cart."/".$fromId."/"));
			exit;
		}
		$mId=mysql_fetch_array(mysql_query("SELECT MAX(ID) AS maxId FROM offener_bon "));
		$maxId = $mId['maxId']+1;
		
		$orderOffenenBon=mysql_query("UPDATE offener_bon SET ID = ".$maxId." WHERE ID = ".$fromId."");
		if(mysql_affected_rows() > 0)$successMsg="Success";
		mysql_query("ALTER TABLE offener_bon AUTO_INCREMENT = ".$maxId." ");
	*/

	ini_set('max_execution_time', 120);

	echo json_encode(array('Success', $successMsg, "--"));
}

function autoDepExportManuell()
{
	$xx = getReportDataExportProtocol('backupRunDepToFile');

	echo "das ist der ajax Responst vom auto/man DEP zulu -> " . $xx;
}

function  manualGestartetAutoBackup()
{
	$zulu = run_auto_backup_command();

	echo $zulu;
}
