<?php
#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");



global $isAlreadyIncluded;				# braucht hier ein global weil das ganze file in einer funktion included ist !!!!!	
$isAlreadyIncluded = false;

$included_files = get_included_files();

foreach ($included_files as $filename) {		#  das ist um das ajax file in global funktionen; zahlung_abgeschlossen() included machen zu können,
	if (preg_match('/ajax_funktionen.php/', $filename)) $isAlreadyIncluded = true;
	#	file_put_contents('../kpcheckit.txt', "\n Supply Print ". basename(__FILE__)." line-> ". __LINE__ ." -- incl ?".$filename."\n", FILE_APPEND);
}

if ($isAlreadyIncluded == true) {
	require_once("global_functions_gastro.php");	# ansonsten bringt das weitere include hier einen error, falscher pfad.
	$functionKey = "noAjaxFunctionRequired";			# rausfiltern ob ajax_functions_gastro schon included ist od nicht (wird für das supply Print bei bezahlen in ajax_funktionen inkludiert
	require_once("include/ajax_functions_gastro_global.php");
} else {
	if(file_exists(stream_resolve_include_path("../global_functions_gastro.php"))){
		require_once("../global_functions_gastro.php");
	}
	else
	{
		require_once("global_functions_gastro.php");
	}
	
	require_once("ajax_functions_gastro_global.php");
}



if (isset($_POST['functionKey']) && $_POST['functionKey'] != '') $functionKey = $_POST['functionKey'];


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

# function -> tische_anzeigen liegt in global_functions_gastro.php
switch ($functionKey) {

	case "tische_anzeigen":
		tische_anzeigen($raum_id, false, $no_link);
		break;
	case "addToMoveArray":
		addToMoveArray();
		break;
	case "moveTotalTable":
		moveTotalTable();
		break;
	case "moveToTableDetail":
		moveToTableDetail();
		break;
	case "printGastroSupply":
		printGastroSupply();
		break;
	case "saveConfigGastroPrinter":
		saveConfigGastroPrinter();
		break;
	case "beilagenAendern":
		beilagenAendern();
		break;
	case "noAjaxFunctionRequired":
		break;		# funktion printGastroSupply wird von ajax_funktionen (bereitstellungsdruck bei bezahlen) included, deswegen keine ajax funktion !!!
	case "getBeilagenSubGroup":
		getBeilagenSubGroup();
		break;
	case "getBeilagenGroup":
		getBeilagenGroup();
		break;
	case "moveUserTable":
		moveUserTable();
		break;
	case "beilage_zu_kombiprodukt_hinzufuegen":
		beilage_zu_kombiprodukt_hinzufuegen();
		break;
	case "artikelArt_save_kombi":
		artikelArt_save_kombi();
		break;
	case "saveSpeiseartAusVkMaske":
		saveSpeiseartAusVkMaske();
		break;
	//default:
	//	echo "Error !!! Falscher Aufruf von ajax_funktionen, Funktion nicht bekannt";
}


// Speichert die gewählte Artikel Art (Vorspeise, Hauptspeise, ...)
// wird nur für Kombiprodukte automatisch gespeichert!!!
function artikelArt_save_kombi()
{
	$artikelArtId = $_POST['artikelArtId'];
	$offener_bon_parentID = $_POST['offener_bon_parentID'];

	//echo "Füge Produkt $beilagen_produkt_id zu Kombi Produkt $parent_produkt_id hinzu";

	$sql = "UPDATE offener_bon SET
									article_art_id=$artikelArtId
									WHERE ID = " . $offener_bon_parentID . " ";
	$Q2 = mysql_query($sql);
	if (!$Q2) echo mysql_error();
}

function saveSpeiseartAusVkMaske()
{
	if (isset($_POST['artikelArtId'])) $artikelArtId = $_POST['artikelArtId'];
	if (isset($_POST['buttonId'])) $buttonId = $_POST['buttonId'];
	if (isset($_POST['selectedLineId'])) $selectedLineId = $_POST['selectedLineId'];

	$selectedLineId = str_replace("line", "", $selectedLineId);

	$updateArticleArt = mysql_query("UPDATE offener_bon SET article_art_id=" . $artikelArtId . " WHERE ID = " . $selectedLineId . " ");
	if (!$updateArticleArt) echo mysql_error();
	else echo "Speise Art im offenen Bon geändert.";
}



function beilage_zu_kombiprodukt_hinzufuegen()
{
	$beilagen_produkt_id = $_POST['beilagen_produkt_id'];
	$parent_produkt_id = $_POST['parent_produkt_id'];

	//echo "Füge Produkt $beilagen_produkt_id zu Kombi Produkt $parent_produkt_id hinzu";

	// Das Child Produkt zum Kombiprodukt hinzüfügen
	$currentUserId = $_SESSION['userId'];
	$Q1 = mysql_query("SELECT * FROM offener_bon WHERE ID='" . $parent_produkt_id . "'");
	$row1 = mysql_fetch_assoc($Q1);
	//var_dump($row1);
	// TODO: Alex

	if ($row1['stueck'] > 1) {
		//echo "Stück ist größer als 1";
		ein_kombiprodukt_wegsplitten($parent_produkt_id);
	} else {
		// update offener bon
		$sql = "UPDATE offener_bon SET PRINTNAME='" . mysql_real_escape_string($row1['NAME'] . " **") . "' WHERE ID = " . $parent_produkt_id . "";
		echo $sql;
		mysql_query($sql);
	}


	$sql = "INSERT INTO offener_bon
									(bon_id, produkt_id, category, reference, code, name, pricebuy, pricesell, beilagen_prod_orig_preis, taxcat, printname,
									negativeprice, benutzer_id, supplyprint, varprice, stueck, PRODUKTORDER, article_art_id, kunden_id, tax_rate, 
									has_childs, has_parent, childPrint, fremd_id)
									SELECT '" . $row1['bon_id'] . "', '" . $beilagen_produkt_id . "', CATEGORY, REFERENCE, CODE, products.NAME, 
									PRICEBUY, pricesell, 0, TAXCAT, (CASE WHEN PRINTNAME = '' THEN products.NAME ELSE PRINTNAME END), 
									NEGATIVEPRICE, '" . $currentUserId . "', supplyprint, VARPRICE, '1', PRODUKTORDER, 
									artikel_art, '" . $row1['kunden_id'] . "', RATE as tax_rate, 0, " . $parent_produkt_id . ",0, fremd_id
									FROM products 
									LEFT JOIN taxes ON taxcat=taxes.ID
									WHERE products.ID = " . $beilagen_produkt_id . " ";
	$Q2 = mysql_query($sql);
	if (!$Q2) echo mysql_error();
}

function saveConfigGastroPrinter()
{
	if (isset($_POST['printersArray'])) $printersArray = $_POST['printersArray'];

	$xop = "";
	for ($i = 0; $i < sizeof($printersArray); $i++) {
		$prId = $printersArray[$i][0];
		$prFunction = $printersArray[$i][1];
		$prName = $printersArray[$i][2];
		$invoicePrinter = $printersArray[$i][3];
		$updQl = mysql_query("UPDATE drucker SET funktion='" . $prFunction . "', win_drucker_name='" . $prName . "', ist_rechnungsdrucker='" . $invoicePrinter . "'  WHERE drucker_id = " . $prId . " ");
		if (!$updQl) $xop .= "Datenbank ..." . mysql_error();

		$xop .= implode(" / ", $printersArray[$i]) . "\n";
	}

	echo "gastro response: " . count($printersArray) . "<hr />\n\n" . $xop;
}

// Funktion schreibt den Küchendruck in den Table für den Küchen Bildschirm
function auf_kuechen_bildschirm_anzeigen($supplyPrint, $bildschirm_kueche)
{
	//print_r($supplyPrint);
	// die komplette Zeile aus dem offenen Bon in die Tabelle kuechenbildschirm_anzeige kopieren und den Bildschirm dazuschreiben
	foreach ($supplyPrint as $supplyPrintLine) {
		$sql = "SELECT articlePrinted, stueck FROM offener_bon WHERE id='" . $supplyPrintLine[4] . "'";
		$sql_q = mysql_query($sql);
		$sql_arr = mysql_fetch_array($sql_q);
		$articlePrinted = $sql_arr['articlePrinted'];
		$stueck = $sql_arr['stueck'];
		$article_to_print = $stueck - $articlePrinted;

		$sql = "INSERT INTO kuechenbildschirm_anzeige 
					(bon_id, produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, 
					 NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, supplyprint, articlePrinted, stueck, tax_rate, aus_ls_nr, article_art_id, 
					 beilagen_aenderung_minus, beilagen_aenderung_plus, beilagen_prod_orig_preis, beilagen_sum_netto, beilagen_sum_brutto, 
					 benutzer_id, kunden_id, parent_id, has_childs, has_parent, childPrint, abholschein_nr, bildschirm_kueche, zeile_selektiert )  
					 (SELECT bon_id, produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, 
					 NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, supplyprint, articlePrinted, stueck, tax_rate, aus_ls_nr, article_art_id, 
					 beilagen_aenderung_minus, beilagen_aenderung_plus, beilagen_prod_orig_preis, beilagen_sum_netto, beilagen_sum_brutto, 
					 benutzer_id, kunden_id, parent_id, has_childs, has_parent, childPrint, abholschein_nr, '" . $bildschirm_kueche . "', '1' 
					 FROM offener_bon WHERE id='" . $supplyPrintLine[4] . "')
					ON DUPLICATE KEY UPDATE kuechenbildschirm_anzeige.stueck=kuechenbildschirm_anzeige.stueck+'" . $article_to_print . "'";
		//echo $sql;
		mysql_query($sql);
	}
}

// $_POST wird gesetzt aber meiner Meinung nach nicht verwendet
// Funktion druckt die Küchenbons aus

function printGastroSupply($callSource = false, $async_ajax = false, $delbon = false)
{

	global $isAlreadyIncluded;

	if (isset($_POST['requestId'])) $requestId = $_POST['requestId'];
	else $requestId = false;
	if (isset($_POST['requestFunktion'])) $requestFunktion = $_POST['requestFunktion'];
	else $requestFunktion = false;

	if (isset($_POST['callSource'])) $callSource = $_POST['callSource'];
	else $callSource = false;

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

	$cT = $_SESSION['gastroTisch'];
	//echo "gastroTisch , bonid: ".$_SESSION['gastroTisch'];
	$currT = mysql_fetch_array(mysql_query("SELECT tischName FROM tische WHERE id=$cT "));
	$currentTable = $currT[0];
	if (strpos(strtolower($currentTable), 'tisch') !== false) $currentTable = $currentTable;
	else $currentTable = "Tisch: " . $currentTable;
	$userName = $_SESSION['userName'];

	$supllyPrinter = array();
	$supplPrintSqlError = 0;
	$bonContent = array();	# wird für das update vom offenen bon verwendet
	$i = 0;
	$selPr = mysql_query("SELECT DISTINCT supplyprint, funktion, bildschirm_kueche, abholschein_nr FROM offener_bon 
							LEFT JOIN drucker ON supplyprint = drucker_id
							WHERE bon_id = $cT ");


	while ($rowPr = mysql_fetch_array($selPr)) {

		if ($rowPr['supplyprint'] > 0) {
			$printerId = $rowPr['supplyprint'];

			$supllyPrinter = array();
			$supllyPrinter_woocommerce = Array();
			$printSupplyPdf = false;
			$pdfPrint = false;
			
			
				$sql = ("SELECT offener_bon.ID AS openBonId, produkt_id, offener_bon.name, offener_bon.printname, offener_bon.stueck, offener_bon.supplyprint, offener_bon.articlePrinted as articlePrinted,  offener_bon.PRODUKTORDER, 
									offener_bon.beilagen_aenderung_minus, offener_bon.beilagen_aenderung_plus, offener_bon.article_art_id, bezeichnung, offener_bon.parent_id, offener_bon.has_childs, 
									offener_bon.has_parent, reihung,
									offener_bon.PRICESELL, offener_bon.tax_rate, IF (has_parent=0, parent_id, has_parent) as reihenfolge,offener_bon.CATEGORY as CATEGORY, products.fremd_id as fremd_id
								FROM offener_bon 
								LEFT JOIN artikel_art ON article_art_id = artikel_art.id
								LEFT JOIN products ON offener_bon.produkt_id = products.id
								WHERE bon_id = " . $cT . " AND articlePrinted <> stueck AND offener_bon.supplyprint= " . $printerId . "
								ORDER BY  reihenfolge, offener_bon.has_parent, reihung, offener_bon.ID ");
			
			
			$selQl = mysql_query($sql);
			while ($selRow = mysql_fetch_array($selQl)) {
				
				if ($selRow['has_parent'] > 0) {
					// Wenn es ein child ist, dann auch den Parent drucken
					$sql = "SELECT offener_bon.ID AS openBonId, produkt_id, name, printname, stueck, supplyprint, articlePrinted,  PRODUKTORDER, 
									beilagen_aenderung_minus, beilagen_aenderung_plus, article_art_id, bezeichnung, parent_id, has_childs, has_parent, reihung,
									PRICESELL, tax_rate
								FROM offener_bon 
								LEFT JOIN artikel_art ON article_art_id = artikel_art.id
								WHERE offener_bon.id = " . $selRow['has_parent'] . " AND supplyprint<> " . $printerId . " AND articlePrinted < stueck
								ORDER BY  reihung, offener_bon.ID ";
								//echo $sql;
					$Q1 = mysql_query($sql);
					while ($row1 = mysql_fetch_assoc($Q1)) {
						# check relation articlePrinted / Stück					update offener_bon set articlePrinted = 0	
						#  KPE Sep 2020  - fehler printet den parent und alle child's nach anzahl der child's
						# vor dem array push count plus -> im offener_bon articlePrinted
						#					
						$printedVal = $row1['articlePrinted'] + 1;
						$bonLineId = $row1['openBonId'];
						//echo "****************************************************<br>";
						//echo "-----------------> supplyprint: ".$rowPr['supplyprint']."<------------------------<br>";
						//echo "printerId: ".$printerId."<br>";
						//echo "****************************************************<br>";
						if ( $rowPr['supplyprint'] == $printerId  && $rowPr['articlePrinted'] < $rowPr['stueck'])
							$printedPlus = mysql_query("UPDATE offener_bon SET articlePrinted = " . $printedVal . " WHERE ID = " . $bonLineId . "    ");
						
						//echo "--------------> UPDATE offener_bon SET articlePrinted = " . $printedVal . " WHERE ID = " . $bonLineId . "     <--------------";
						array_push($supllyPrinter, array(
							$row1['produkt_id'], $row1['name'], $row1['printname'], "", $row1['openBonId'],
							$row1['beilagen_aenderung_minus'], $row1['beilagen_aenderung_plus'], $row1['article_art_id'],
							$row1['bezeichnung'], 0, 'offene_bon_id' => $row1['openBonId'], 'has_parent' => $row1['has_parent']
						));
					}
				}
				
				$printSupplyPdf = true;

				$qtyToPrint = $selRow['stueck'] - $selRow['articlePrinted'];
				if( $delbon )
					$qtyToPrint = $qtyToPrint * -1;
				
				$price = false;
				$price = ($selRow['PRICESELL'] * (1 + $selRow['tax_rate'])) * $qtyToPrint;
				
				array_push($supllyPrinter, array(
					$selRow['produkt_id'], $selRow['name'], $selRow['printname'], $qtyToPrint, $selRow['openBonId'],
					$selRow['beilagen_aenderung_minus'], $selRow['beilagen_aenderung_plus'], $selRow['article_art_id'],
					$selRow['bezeichnung'], $price, 'offene_bon_id' => $selRow['openBonId'], 'has_parent' => $selRow['has_parent'], 
					'CATEGORY' => $selRow['CATEGORY'], 'fremd_id' => $selRow['fremd_id']
				));
				
				if(WEBSHOP_TYPE == "WooCommerce")
				{
					array_push($supllyPrinter_woocommerce, array(
						$selRow['produkt_id'], $selRow['name'], $selRow['printname'], $qtyToPrint, $selRow['openBonId'],
						$selRow['beilagen_aenderung_minus'], $selRow['beilagen_aenderung_plus'], $selRow['article_art_id'],
						$selRow['bezeichnung'], $price, $selRow['openBonId'],  $selRow['has_parent'], 
						$selRow['CATEGORY'], $selRow['fremd_id']
				));
				
				}
				$bonContent[$i] = array($selRow['produkt_id'], $selRow['name'], $selRow['printname'], $qtyToPrint, $selRow['openBonId']);
				$i++;
			}
			
			if (!$selQl) {
				writeSitposLog(basename(__FILE__) . " " . __LINE__ . "SQL Error: " . mysql_error());
				$supplPrintSqlError++;
			}
			
			if(WEBSHOP_TYPE == "WooCommerce" && $delbon == false)
			{
				$array_test = json_encode($supllyPrinter_woocommerce);
				$async = 'false';
				if ( $async_ajax == true)
					$async = 'true';
				
				//echo "<br>async: ".$async."<br>";
				echo '<script>
					
					var suppllyPrinter = [];
					suppllyPrinter = '.$array_test.';
					
					var currentTable = "'.$currentTable.'";
					var cT = "'.$cT.'";
					
					$.ajax({
							type: "POST",
							url: "api/woocommerce/woocommerce.php",
							dataType : "html",
							data: {	funktion:"woocommerce_sync_db_offenen_bon_ajax", suppllyPrinter:suppllyPrinter, currentTable:currentTable, cT:cT},
							async: '.$async.',
							success:function(html){	
								
							}
					});

		</script>';
			}
			
			if ($printSupplyPdf == true ) {
			
				if ($requestFunktion != 'moveWithoutPrint' && strtolower(AUSDRUCK_BEREITSTELLUNGSBON_PDF) == 'ja') {
					//file_put_contents('reini.txt', print_r($supllyPrinter), FILE_APPEND);

					//echo "createPdf($printerId, ".print_r($supllyPrinter).", $currentTable, $userName, ".$rowPr['funktion'].")";
					// Küchendruck nur wenn KUECHE_BILDSCHIRM_VORHER_DRUCKEN gesetzt ist
			
					if (defined('KUECHE_BILDSCHIRM_VORHER_DRUCKEN') && strtolower(KUECHE_BILDSCHIRM_VORHER_DRUCKEN) == 'ja') {
						$abholschein_nr = false;
						if (defined('KUECHE_ABHOLSCHEIN_AUF_RECHUNUNG_DRUCKEN') && strtolower(KUECHE_ABHOLSCHEIN_AUF_RECHUNUNG_DRUCKEN) == 'ja' && strtolower(GASTRO_VERSION) == 'ja' && isset($rowPr['abholschein_nr']) && !is_null($rowPr['abholschein_nr']) && !empty($rowPr['abholschein_nr']))
								$abholschein_nr = $rowPr['abholschein_nr'];
						
						$pdfPrint = createPdf($printerId, $supllyPrinter, $currentTable, $userName, $rowPr['funktion'],$abholschein_nr , $cT);
					}

					if (!empty($rowPr['bildschirm_kueche'])) {
						//echo "gebe auf Bildschirm ".$rowPr['bildschirm_kueche']." aus";
						
						auf_kuechen_bildschirm_anzeigen($supllyPrinter, $rowPr['bildschirm_kueche']);
						
					}
				}
				
			}
			
			
		}
		
			

	}
	
	// RFR: Hier wird offenbar nur die Articleprinted erhöht
	
	for ($i = 0; $i < sizeof($bonContent); $i++) {
		
		$getSt = mysql_fetch_assoc(mysql_query("SELECT articlePrinted, stueck FROM offener_bon WHERE ID = " . $bonContent[$i][4] . ""));
		if (!$getSt) {
			writeSitposLog(basename(__FILE__) . " " . __LINE__ . "SQL Error: " . mysql_error());
			$supplPrintSqlError++;
		}
		$updVal = $getSt['articlePrinted'] + $bonContent[$i][3];
		//echo "<br>--- bonContent ".$i." ---<br>";
		$updQl = mysql_query("UPDATE offener_bon SET articlePrinted = " . $updVal . " WHERE ID = " . $bonContent[$i][4] . "  ");
		//echo "UPDATE offener_bon SET articlePrinted = " . $updVal . " WHERE ID = " . $bonContent[$i][4] . "  <br>";
		//echo "--- ENDE bonContent ---<br>";
		if (!$updQl) {
			writeSitposLog(basename(__FILE__) . " " . __LINE__ . "SQL Error: " . mysql_error());
			$supplPrintSqlError++;
		}
	}


	if ($callSource == 'paymentFinish') return "Supply Print done";

	else if ($callSource != 'paymentFinish' && $supplPrintSqlError == 0) {
		if (sizeof($bonContent) > 0) echo "Success Bereitstellungsdruck ausgeführt, (" . sizeof($bonContent) . ").";
		else echo "Success";
	} else if ($callSource != 'paymentFinish' && $supplPrintSqlError > 0)  echo "Datenbank Error aufgetreten.";
	
	
}


function moveTotalTable()
{
	$checkMsg = "";
	if (isset($_POST['currentTableId']) && $_POST['currentTableId'] > 0 && isset($_POST['targetTableId']) && $_POST['targetTableId'] > 0) {
		$currentTableId = $_POST['currentTableId'];
		$targetTableId = $_POST['targetTableId'];

		$moveQl = mysql_query("UPDATE offener_bon SET bon_id = $targetTableId WHERE  bon_id = $currentTableId");
		if (!$moveQl) $checkMsg = "Datenbank Error. " . mysql_error();
		else $checkMsg .= "Success, Tisch verschoben.";

		# check zusatztext
		$addTxt = mysql_fetch_array(mysql_query("SELECT id, offenerbon_id FROM bon_add_text WHERE offenerbon_id = " . $currentTableId . ""));
		$addTxtId = $addTxt['id'];
		if ($addTxtId > 0) {
			$$moveTxQl = mysql_query("UPDATE bon_add_text SET offenerbon_id = " . $targetTableId . " WHERE id = " . $addTxtId . " ");
		}



		echo $currentTableId . " / " . $targetTableId . " -- " . $checkMsg;
	} else {
		echo "Datenübertragungs Error.";
		die();
	}
}

// Verschiebt einen Tisch auf den anderen - habs beim Split gesehen! keine Ahnung ob es beim ganzen verschieben auch aufgerufen wird
// split_line_18 ist die ID im offenen Bon
// array(1) { [0]=> array(3) { [0]=> string(12) "split_line18" [1]=> string(1) "1" [2]=> string(0) "" } } 
function moveToTableDetail()
{
	$kpOp = "";
	if (isset($_POST['targetTable']) && $_POST['targetTable'] > 0) {
		$targetTisch = $_POST['targetTable'];

		if (isset($_SESSION['gastroTisch']) && $_SESSION['gastroTisch'] > 0) $currentGatroTisch = $_SESSION['gastroTisch'];
		if (isset($_SESSION['splitBon' . $currentGatroTisch]) && sizeof($_SESSION['splitBon' . $currentGatroTisch]) > 0) {
			//var_dump($_SESSION['splitBon'.$currentGatroTisch]);

			for ($i = 0; $i < sizeof($_SESSION['splitBon' . $currentGatroTisch]); $i++) {

				$openBonId = preg_replace('/\D/', '', $_SESSION['splitBon' . $currentGatroTisch][$i][0]);
				$qtyToMove = preg_replace('/\D/', '', $_SESSION['splitBon' . $currentGatroTisch][$i][1]);


				$selQl = mysql_fetch_assoc(mysql_query("SELECT ID, REFERENCE, printname, stueck FROM offener_bon WHERE ID = " . $openBonId . " ")); // weg splitten

				$checkTargetTisch = mysql_fetch_array(mysql_query("SELECT ID, REFERENCE, NAME, printname, stueck FROM offener_bon 
												WHERE REFERENCE= " . $selQl['REFERENCE'] . " AND printname = '" . $selQl['printname'] . "' AND bon_id = " . $targetTisch . " "));


				if ($qtyToMove >= $selQl['stueck']) {
					# kann auch über den vorhanden sein, werden die vorhanden verschoben
					// RFR: meiner Meinung nch kann der Code nicht vorkommen - können mehr stück verschoben werden als gebucht wurden?
					if ($qtyToMove > $selQl['stueck'])	$qtyToMove = $selQl['stueck'];
					// ich glaube nicht, dass $checkTargetTisch == true funktioniert, liefert resource zurück, nicht true!
					if ($checkTargetTisch == true && $checkTargetTisch['stueck'] > 0) {	// wenn es dieses prod am zieltisch schon gibt, dazuzählen
						$updQty = mysql_query("UPDATE offener_bon SET stueck = stueck + " . $qtyToMove . ", articlePrinted = articlePrinted + " . $qtyToMove . "  
														WHERE ID = " . $checkTargetTisch['ID'] . " ");
						$delProdLine = mysql_query("DELETE FROM offener_bon WHERE ID = " . $selQl['ID'] . "   ");
						# alle aus dieser line werden verschoben- dann ursprngs line löschen
					} else {
						// Hier werden alle Stück von diesem Produkt auf den neuen Tisch verschoben
						// zuerst child verschieben
						$updTisch = mysql_query("UPDATE offener_bon SET bon_id = " . $targetTisch . " WHERE has_parent = " . $selQl['ID'] . " ");
						// und jetzt das Parent selbst
						$updTisch = mysql_query("UPDATE offener_bon SET bon_id = " . $targetTisch . " WHERE ID = " . $selQl['ID'] . " ");
					}
				} else if ($qtyToMove < $selQl['stueck']) {
					// Hier werden nicht alle Produkte verschoben, sondern nur ein Teil
					$kpOp .= "diff, toMOveQty: " . $qtyToMove . " origQty: " . $selQl['stueck'] . "\n";
					if ($checkTargetTisch == true && $checkTargetTisch['stueck'] > 0) {	// wenn es dieses prod am zieltisch schon gibt, dazuzählen
						$updQtyP = mysql_query("UPDATE offener_bon SET stueck = stueck + " . $qtyToMove . ", 
											articlePrinted = articlePrinted + " . $qtyToMove . "  WHERE ID = " . $checkTargetTisch['ID'] . " "); // am Ziel dazuzählen
						$updQtyM = mysql_query("UPDATE offener_bon SET stueck = stueck - " . $qtyToMove . ",
											articlePrinted = articlePrinted - " . $qtyToMove . " WHERE ID = " . $selQl['ID'] . " ");	// am ursprung wegzählen
						$kpOp .= " Prod am Zieltisch schon vorh !!!\n";
					} else {
						$kpOp .= " Prod am Zieltisch nicht vorhanden !!!\n";
						$insQty = 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, 
																article_art_id, beilagen_aenderung_minus, beilagen_aenderung_plus, parent_id, has_parent, has_childs)
														SELECT
														" . $targetTisch . ", produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, supplyprint, " . $qtyToMove . ", " . $qtyToMove . ", tax_rate, kunden_id, 
															article_art_id, beilagen_aenderung_minus, beilagen_aenderung_plus, parent_id, has_parent, has_childs
														FROM offener_bon WHERE ID = " . $selQl['ID'] . " 
															
												");
						$new_id = 0;
						if (!$insQty) $kpOp .= "DB Error: " . mysql_error() . "\n";
						else {
							$new_id = mysql_insert_id();
							mysql_query("UPDATE offener_bon SET parent_id=ID WHERE ID=$new_id");
						}
						// Childs migrieren
						$child_sql = "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, 
																article_art_id, beilagen_aenderung_minus, beilagen_aenderung_plus, parent_id, has_parent, has_childs,fremd_id)
														SELECT
														" . $targetTisch . ", produkt_id, REFERENCE, CODE, NAME, PRICEBUY, PRICESELL, CATEGORY, TAXCAT, IMAGE, DISPLAY, VARPRICE, printname, NEGATIVEPRICE, PRODUKTORDER, SICHTBAR, supplyprint, " . $qtyToMove . ", " . $qtyToMove . ", tax_rate, kunden_id, 
															article_art_id, beilagen_aenderung_minus, beilagen_aenderung_plus, parent_id, '" . $new_id . "', has_childs, fremd_id
														FROM offener_bon WHERE has_parent = " . $selQl['ID'] . " ";
						$insQty = mysql_query($child_sql);
						if (!$insQty) $kpOp .= "DB Error: " . mysql_error() . "\n" . $child_sql . "\n";

						$updQtyM = mysql_query("UPDATE offener_bon SET stueck = stueck - " . $qtyToMove . ", articlePrinted = articlePrinted - " . $qtyToMove . "
														WHERE ID = " . $selQl['ID'] . " ");	// am ursprung wegzählen
						if (!$updQtyM) $kpOp .= "DB Error: " . mysql_error() . "\n";
						// Childs reduzieren
						$updQtyM = mysql_query("UPDATE offener_bon SET stueck = stueck - " . $qtyToMove . ", articlePrinted = articlePrinted - " . $qtyToMove . "
														WHERE has_parent = " . $selQl['ID'] . " ");	// am ursprung wegzählen
						if (!$updQtyM) $kpOp .= "DB Error: " . mysql_error() . "\n";
					}
				}
			}
		}
		unset($_SESSION['splitBon' . $currentGatroTisch]);
		echo "\n" . $kpOp;
	}
}



function addToMoveArray()
{
	if (isset($_POST['moveIdArray'])) $moveIdArray = $_POST['moveIdArray'];
	$tOp = "";
	if (!isset($_SESSION)) session_start();
	$currentTable = $_SESSION['gastroTisch'];
	unset($_SESSION['splitBon' . $currentTable]); 	#   nur für test 

	if (isset($_SESSION['moveBon' . $currentTable]) == false) {
		$_SESSION['moveBon' . $currentTable] = array();
		for ($i = 0; $i < sizeof($moveIdArray); $i++) {
			$lineId = $moveIdArray[$i][0];
			$lineQty = $moveIdArray[$i][1];
			$linePrice = $moveIdArray[$i][2];
			$lineName = $moveIdArray[$i][3];
			$moveLine = array($lineId, $lineQty, $linePrice, $lineName);
			array_push($_SESSION['moveBon' . $currentTable], $moveLine);
		}
	}



	echo "Success-|-" . $currentTable;
}



function getBeilagenGroup()
{
	$beilagenGroupId = false;
	$kombi = $_POST['kombi'];
	$produkt_parent_id = $_POST['produkt_parent_id'];
	//writeLog(false, "Kombi: $kombi");
	if (isset($_POST['beilagenGroupId']) && ($_POST['beilagenGroupId'] > 0 ||  $_POST['beilagenGroupId'] == 'root')) {

		$beilagenGroupId = $_POST['beilagenGroupId'];
		if ($beilagenGroupId == 'root') {
			# wird so aufgerufen wie in kassieren.php wenn seite geladen wird, mit der ersten ebene von Beilagen group
			$readBlRes = readBeilagen(false, false, $kombi, $produkt_parent_id);
		} else {
			if (isset($_POST['beilagenGroupParentId'])) {
				$beilagenGroupParentId = $_POST['beilagenGroupParentId'];
			} else $beilagenGroupParentId = false;

			$readBlRes = readBeilagen($beilagenGroupId, $beilagenGroupParentId, $kombi, $produkt_parent_id);
		}

		if ($readBlRes[0] === true) {
			echo $readBlRes[1];
		} else echo $readBlRes[1];
	}
}

function moveUserTable()
{
	$moveListArray = false;
	if (isset($_POST['moveList'])) $moveListArray = json_decode(stripslashes($_POST['moveList']), true);
	$targetUserId = false;
	if (isset($_POST['moveTargetId']) && $_POST['moveTargetId'] > 0) $targetUserId = $_POST['moveTargetId'];
	$targetUserName = false;
	if (isset($_POST['moveTargetName'])) $targetUserName = $_POST['moveTargetName'];
	$sourceUserId = false;
	$sourceUserName = false;

	if (!isset($_SESSION)) session_start();
	$sourceUserId = $_SESSION['userId'];
	$sourceUserName = $_SESSION['userName'];
	$resultMsg = "";

	if (count($moveListArray) > 0 && $targetUserId !== false && $sourceUserId !== false) {
		$moveListArray = array_filter($moveListArray);
		$qtyTableToMove = count($moveListArray);
		$tableList = implode(", ", $moveListArray);

		$getTableSum = mysql_fetch_array(mysql_query("SELECT SUM((PRICESELL*stueck)*(1+tax_rate)) AS gesKohle FROM offener_bon
						WHERE bon_id IN (" . $tableList . ") "));
		if (!$getTableSum || $getTableSum['gesKohle'] <= 0) {
			echo json_encode(array("Error", mysql_error(), $getTableSum['gesKohle']));
		} else {
			$updOpenBon = mysql_query("UPDATE offener_bon SET benutzer_id = " . $targetUserId . " WHERE benutzer_id = " . $sourceUserId . "
										AND bon_id IN (" . $tableList . ") ");
			if (!$updOpenBon) {
				echo json_encode(array("Error", mysql_error(), 'von: ' . $sourceUserId . ' to ' . $targetUserId));
			} else {
				# wenn nicht alle verschoben werden wird der rest ausgelsen und als ajax request zurückgegeben
				$userTablesQl = mysql_query("SELECT offener_bon.ID AS openBonId, bon_id, tische.tischName, SUM(((PRICESELL*stueck)*(1+tax_rate))) AS sumBrutto
									FROM offener_bon 
									LEFT JOIN tische ON offener_bon.bon_id = tische.id
									WHERE benutzer_id = " . $sourceUserId . " GROUP BY bon_id ORDER BY tische.tischName");
				$tableUserResult = "";
				$qtyRestTables = mysql_num_rows($userTablesQl);
				while ($userTables = mysql_fetch_array($userTablesQl)) {
					$tableUserResult .= "<p class='moveTableRow'>
								<label class='cbLarge2'>
								<input type='checkbox' class='userTableToMove cbLarge2' id=\"tisch" . $userTables['bon_id'] . "\" 	/>
								<span>&nbsp;</span>
								</label>
								<span class='tischNameSpan'>" . $userTables['tischName'] . "</span>
									<span class='moveTableListBetrag'>" . number_format($userTables['sumBrutto'], 2, ",", ".") . "</span></p>";
				}
				if ($qtyRestTables == 0) $tableUserResult = "<p>Keine weiteren Tische zu übergeben.</p>";
				else $tableUserResult = "<p  class='moveTableRowHeader' style='background:#ccc;  margin:.5% 0 5px 0;'>
											<span style='display:inline-block;' class='userTableToMove'>&nbsp;</span>
											<span class='tischNameSpan'>Tisch Name</span><span class='moveTableListBetrag'>Betrag</span>
								</p>" . $tableUserResult;
				$resultMsg = $qtyTableToMove . " Tische von Benutzer " . $sourceUserName . ", gesamt Wert, 
							" . number_format($getTableSum['gesKohle'], 2, ',', '.') . " auf " . $targetUserName . " verschoben.";
				$writeAudit = mysql_query("INSERT INTO auditing SET benutzer = '" . $sourceUserName . "', konfigtitel = 'Tische auf Benutzer verschoben',
									ausgangswert = '" . $resultMsg . "', datumzeit = NOW()     ");
				echo json_encode(array($tableUserResult, $targetUserId, $resultMsg));
			}
		}
	} else echo "funktion: moveUserTable: Fehlende Daten";
}
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
/*	
	function getBeilagenSubGroup(){
		$beilagenGroupId=false;
		if(isset($_POST['beilagenGroupId']) && $_POST['beilagenGroupId'] > 0){
		
			$beilagenGroupId = $_POST['beilagenGroupId'];
			
			$blQl=mysql_query("SELECT products.NAME AS name, products.PRINTNAME AS printname, taxes.RATE AS taxrate, PRICESELL, COLOR, text_color 
								FROM products
								LEFT JOIN categories ON products.CATEGORY = categories.ID
								LEFT JOIN taxes ON TAXCAT = taxes.ID
								WHERE CATEGORY = ".$beilagenGroupId."");
			$beilagenSubGr="";
			while($blRow=mysql_fetch_array($blQl)){
				if($blRow['printname'] == true && $blRow['printname'] != "") $displayName=$blRow['printname'];
				else $displayName=$blRow['name'];
				$beilagenPreis=$blRow['PRICESELL'];
				$beilagenPreisBrut=$beilagenPreis*(1+$blRow['taxrate']);
				$displayBlPreis=number_format($beilagenPreisBrut, 2, ",", ".")."<br />";
				
				$beilagenSubGr.="<button class='button beilagen_button' style='background-color:".$blRow['COLOR']."; color:".$blRow['text_color']. "' 
									onclick=\"beilagen_aendern('".$displayName."', '".$beilagenPreis."', '".$beilagenPreisBrut."')\"> 
								".$displayBlPreis.$displayName."</button>";

			}
			$ebeneZurueckBut="<button class='button beilagen_button' style='font-size:30px; font-weight:bold;' onclick=\"getBeilagenSubGroup('root')\" >&#8679;</button>";
			
			echo $ebeneZurueckBut.$beilagenSubGr;
		}
		else if(isset($_POST['beilagenGroupId']) && $_POST['beilagenGroupId'] == 'root'){
			$beilagenContent=readBeilagen();
			if($beilagenContent[0] == true){
				echo $beilagenContent[1];
			}
			else echo "Keine Beilagen gefunden";
		}
	
	
	
	}
	
	*/