<?php

require_once("global_functions.php");
require_once("config/connect.php");
require_once("api/telefon/telefon_funktionen.php");

check_login('', '', 'standardUser');

if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
	require_once("global_functions_gastro.php");
}


if (is_mobile()) {
	$mobile_input = "onfocus='blur();'";
} else $mobile_input = "";

if (isset($_SESSION['requested_resolution']) && ($_SESSION['requested_resolution'] == 'handy' || $_SESSION['requested_resolution'] == 'tablet')) {
	preg_match('/\d+px/', SCHRIFT_DEFAULT, $match);
	if ($match[0] == true) {
		$fontS = preg_replace('/\D+/', '', $match[0]);
		if ($fontS > 16 && $fontS <= 20) {
			$menuH = "7%";
			$bonContHeaderD = "22px";
		} else if ($fontS > 20 && $fontS <= 26) {
			$menuH = "8%";
			$bonContHeaderD = "26px";
		} else if ($fontS > 26) {
			$menuH = "14%";
			$bonContHeaderD = "26px";
		} else {
			$menuH = "";
			$wrapper_2Top = "";
			$bonContHeaderD = "20px";
		}
	}
?>

	<script>
		MobileDeviceIndicator = true;
	</script>

<?php
} else {
	$menuH = "";
	$wrapper_2Top = "";
	$bonContHeaderD = "20px";
?>

	<script>
		MobileDeviceIndicator = false;
	</script>

<?php
}



?>

<!DOCTYPE html>
<html>

<head>
	<meta charset="UTF-8">

	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
	<?php
	if (is_mobile()) echo "<meta content='width=732, user-scalable=0' name='viewport' />";
	?>
	<title>SITPOS Kassa</title>
	<?php echo PAGE_CACHE_OFF; ?>
	<!--link rel="stylesheet" type="text/css" href="include/menue.css" -->
	<link rel="stylesheet" type="text/css" href="jquery/jquery-ui.css">
	<script type="text/javascript" logout_time=<?php echo AUTOMATIC_LOGOUT_SEC; ?> logout=<?php echo AUTOMATIC_LOGOUT; ?> src="logout.js"></script>

	<style>
		::-moz-placeholder {
			font-size: 50%;
		}

		:-moz-placeholder {
			font-size: 50%;
		}

		::-webkit-input-placeholder {
			font-size: 50%;
		}
	</style>
	<style type="text/css">
		<?php include 'include/main.css'; ?><?php
											include 'include/menue.css';
											if (isset($_SESSION['requested_resolution']) && ($_SESSION['requested_resolution'] == 'handy' || $_SESSION['requested_resolution'] == 'tablet')) {
												include 'include/mobile.css';

												if (defined('FUNKTION_BUTTON_ZIFFERNFELD_ANZEIGEN') && strtolower(FUNKTION_BUTTON_ZIFFERNFELD_ANZEIGEN) == 'ja') {
													/* ab Version 1.63 Ziffernblock in Mobile Version default ausgeblendet*/
											?>.ziffernblock,
		#steuereungContent,
		#steuerung {
			display: none;
		}

		#ziffernblock_reduziert {
			display: block;
			height: 5%
		}

		#bon {
			height: 31%;
		}

		#produkte {
			height: 54%;
		}

		<?php
												}
											}

											$priceBeilagenCalc = false;

											if (
												defined('BEILAGEN_PREIS_BERECHNEN') && strtolower(BEILAGEN_PREIS_BERECHNEN) == 'ja'
												&& defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja'
											) {

												$priceBeilagenCalc = true;
		?>.beilagenKalkulationInfoDiv {
			visibility: visible;
		}



		<?php
											}


		?>#gutscheinKarteKommentar {
			width: 60% !important;
			text-align: left !important;
			padding-left: 1%;
		}
	</style>


	<?php
	
	if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
	?>
		<script>
			var BEILAGEN_MINUS_NUR_BEI_BASISPREISAENDERUNG = '<?php echo BEILAGEN_MINUS_NUR_BEI_BASISPREISAENDERUNG ?>';

			//alert(BEILAGEN_MINUS_NUR_BEI_BASISPREISAENDERUNG);
		</script>
		<script src="include/global_gastro_functions.js"></script> <?php

																}
																	?>
	<script src="jquery/jquery-2.1.1.min.js"></script>
	<script src="jquery/jquery-ui1.11.4.js"></script>
	<script src="jquery/datepicker-de.js"></script>
	<script src="jquery/numeral.min.js"></script>
	<script src="jquery/jquery.number.min.js"></script>
	<script src="include/global_js_functions.js"></script>
	<script src="include/bonSplitten.js"></script>


	<?php require_once("include/global_js_functions_php.php"); ?>

	<script>
		// Preisgruppen, Sondermarkt, Sozialmarkt, ... Funktion relevant   --------> wurde verworfen, die funktion gibts aber noch, event doch verwenden
		//      derzeit wird zahlung ohne Kunden zugeordnet in der funktion zahlungabgschlossen am anfang abgefangen !  KPE nov 2020
		//hidePaymentButtons('none');

		function sync_Kunden_Filialsystem() {
			var checkProd = "<?php if (FILIALSYSTEM_IST_FILIALSYSTEM == "ja" && FILIALSYSTEM_SYNCHRONISATION_KUNDEN_BON == "ja") echo FILIALSYSTEM_SYNCHRONISATION_KUNDEN_BON; ?>";
			if (checkProd !== "") {
				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",

					data: {
						funktion: "syncKunden",
						incremental: "true"
					},


					async: true,
					success: function(html) {
						//console.log("sync successful");
						console.log(html);
					}
				});
			}
		}

		function sync_Produkte_Filialsystem() {
			var checkProd = "<?php if (FILIALSYSTEM_IST_FILIALSYSTEM == "ja" && FILIALSYSTEM_SYNCHRONISATION_PRODUKTE_BON == "ja") echo FILIALSYSTEM_SYNCHRONISATION_PRODUKTE_BON; ?>";
			if (checkProd !== "") {
				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",


					data: {
						funktion: "syncProducts",
						incremental: "true" /*, origin: "abg_bon"*/
					},

					async: true,
					success: function(html) {
						console.log(html);
					}
				});
			}
		}


		function set_warenkorbid_display(warenkorbid) {

			$.ajax({
				type: "POST",
				url: "ajax_funktionen.php",
				dataType: "html",
				data: {
					funktion: "setwarenkorbid",
					warenkorbid: warenkorbid
				},
				async: true,
				success: function(html) {
					console.log(html);
				}
			});

		}


		function warenkorb_waehlen(warenkorb) {

			if (warenkorb == "add") {
				max = document.getElementById("max_warenkorb").value;
				max++;
				document.getElementById("aktueller_bon").value = max;
				setSession(max);
				document.getElementById("error_message").innerHTML = "Neuer Warenkorb " + max + " erstellt";
				warenkoerbe_anzeigen();
				$("#warenkorb" + max).removeClass("line_unselected").addClass("warenkorb_selected");
			} else {
				document.getElementById("aktueller_bon").value = warenkorb.value;

				// set a session variable for current warenkorb id
				setSession(warenkorb.value); // function -> global_js_functions.js -> ajax_funktionen_kp.php

				tischid = warenkorb.value;


				$('[id^=warenkorb]').each(function() {
					$(this).removeClass("warenkorb_selected");
					$(this).addClass("line_unselected");
				});

				$('#warenkorb' + warenkorb.value).each(function() {

					$(this).removeClass("line_unselected");
					$(this).addClass("warenkorb_selected");
				});
			}


			set_focus();
			bon_anzeigen("");
			
			set_warenkorbid_display(tischid);

		}


		function warenkoerbe_anzeigen_kp() {
			xmlhttp = GetXmlHttpObject();
			xmlhttp.open("POST", "ajax_funktionen_kp.php", false);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
			sendCont = "functionKey=warenkoerbe_anzeigen";

			xmlhttp.send(sendCont);
			resp = xmlhttp.responseText;
			if (resp.toLowerCase().indexOf('error') !== -1) alert(resp);
			else {
				$('#menue_warenkoerbe').html(resp);

			}
		}


		function warenkoerbe_anzeigen() {
			$.ajax({
				type: "POST",
				url: "ajax_funktionen.php",
				dataType: "html",

				data: {
					funktion: "warenkoerbe_anzeigen"
				},

				async: true,
				success: function(html) {
					$("#menue_warenkoerbe").html(html);

				}
			})
		}

		function check_ean(event, ean, eanVal) {
			//console.log("EVENT-witch: "+event.which+", EVENT keyCode: "+event.key+" //"+ean+" --- ean.value aus obj: "+ean.value+", eanVal(Ueberg): "+eanVal);
			var code = (event.keyCode ? event.keyCode : event.which);
			var ref1 = /^[-]?\d+(\.\d{3})(,)$/;
			//ref1 = /^[-]?\d+(\.\d{3})(,\d{1,})$/;
			// vorzeichen od nicht, min 1 Zahl, punkt mit genau 3 zahlen, komma und mind 1 zahl
			var ref2 = /^[-]?\d+(\,\d+)$|\.|-/;
			// zahl, komma, zahl
			
			// 13 digits, all Numeric,   beginnt mit 2 dann numeric 12 stellen lang = 13 in summe !!		2300103006595
			var refEan13 = /<?php echo EAN_GEWICHT_PREIS_CHECK_REGEX?>/;
			//var refEan13 = /^2[1-9][0-9]{11}$/;
			//var refEan13 = /^2[1,3-9][0-9]{11}$/;
			console.log(refEan13);
			console.log("event: " + event);
			if (event == 'enterKey') {
				console.log("eventKey");
				// wenn ein Ziffernblock Enter kommt ist das immer Bar Eingabe bestätigen, also bonieren
				if (ean.value) {
					// wurde vom ziffernblock Enter key aufgerufen
					produkt_bonieren(ean.value, true);
					// sobald der ean code aus dem Preisfeld als parm übergeben wurde, das preis/ean eingabefeld frei machen.
					$("#preis").val('');
				} else return false;
			} else if (code == 13) { //Enter keycode kommt von einem barcode scanner der enter mitschickt

				if (ean.value) {
					console.log('EAN ERKANNT 13 STELLIG');

					if (Boolean(ean.value.match(ref1)) == true) {
						//echo("************************************************************************");
						pPrice = parseFloat(ean.value.replace(/\./g, "").replace(",", "."));
						$("#preis").val(pPrice);
						
					}
					//  Sep 2020 für den EAN 13 Code 
					else if (ean.value.length == 13 && Boolean(ean.value.match(refEan13)) == true) {
						console.log("gewicht preis");
						//https://stackoverflow.com/questions/13605340/how-to-validate-a-ean-gtin-barcode-in-javascript/18762640
						//  wäre noch was zum checksum checken !!!
						// 4 untersch EAN13 Varianten -> Präf 22 & 23 Preis(2Komma) N8-N12, Präf 27 & 28 Gewicht (3Komma) N8-N12
						// die 4 Varianten werden in der Ajax Funktion aufgelöst


						$('#preis').val('');
						produkt_ean13_bonieren(eanVal);

						return false;
					} else {
						console.log("boniere, enter gekommen, feld nicht leer, germanische Zahl nicht erkannt");
						// sobald der ean code aus dem Preisfeld als parm übergeben wurde, das preis/ean eingabefeld frei machen.
						$("#preis").val('');
						
						produkt_bonieren(eanVal, true);


						return false;
					}
				} else return false;
			} else if (Boolean(ean.value.match(ref1)) == true) {
				// scanner könnte enter bzw charcode 13 abgedreht haben
				//pPrice=parseFloat(ean.value.replace(/\./g, "").replace(",", "."));
				pPrice = ean.value.replace(/\./g, "").replace(",", ".");
				$("#preis").val(pPrice);
			}
			/*	else if(Boolean(ean.value.match(ref2)) == true ){
						//	|| Boolean(ean.value.match(/,/))
						if(Boolean(ean.value.match(/(\..*){2,}/))== true){
							$("#preis").val('');
							$('#error_message').html("Ungültiger Wert im Preisfeld");
							return false;
						}
						pPrice=ean.value.replace(",", ".");
						$("#preis").val(pPrice);
						console.log("ref 2 ist true");
						//console.log("zahl komma zahl oder komma");
				}
			*/
			else if (ean.value.match(/.*,$/)) {
				eanVal = $("#preis").val();
				// console.log(eanVal+"letzte eingabe komma erster Punkt");
				if (eanVal.indexOf('.') !== -1) {
					eanVal = eanVal.replace(",", "");
					$("#preis").val(eanVal);
				} else {
					eanVal = eanVal.replace(",", ".");
					$("#preis").val(eanVal);
				}
			} else if (ean.value.match(/.*\*$/)) {
				$("#toggle").val = "stueck";
				$("#stueck").focus();
				eanVal = $("#preis").val().replace("*", "");
				$("#preis").val(eanVal);
			}
			// trifft das alles nicht zu ist es ein ean !!

		}
		// Funktion markiert eine Zeile am bon
		function select_bon_line(bon_id) {
			//console.log("kassieren: 320 -> ******");	
			$('#bonContent .line_selected, #splitBonContainer .line_selected, #moveBonContainer .line_selected').each(function() {
				$(this).removeClass("line_selected");
				$(this).addClass("line_unselected");
			});

			$('#' + bon_id).removeClass("line_unselected");
			$('#' + bon_id).addClass("line_selected");

			// august 2020 Speiseart setzen in Verkaufsmaske KPE !!!

			// vorhandene Speiseart Button in der VK Maske suchen
			/*	var idsArray = $('#speiseartContainerVerkaufsMaske .editierenArtikelArtSelButVk, .editierenArtikelArtSelButVk_selected').map(function(){
										return $(this).attr('id');
						  }).get();
				
					//    alle Button's by Id zurücksetzen
					
				console.log("speiseart array -> "+idsArray);	
					console.log("speiseart array -> "+idsArray);
				for(i=0; i< idsArray.length; i++){
					$('#'+idsArray[i]).removeClass("editierenArtikelArtSelButVk_selected schrift").addClass( "editierenArtikelArtSelButVk" );
	
				}
			*/
			// rest die Button im edit modal
			$("#artikelArtSelectDiv > button").removeClass('editierenArtikelArtSelBut_selected').addClass('editierenArtikelArtSelBut');
			// rest die Button in der Verkaufsmaske
			$("#speiseartContainerVerkaufsMaske > button").removeClass('editierenArtikelArtSelButVk_selected').addClass('editierenArtikelArtSelButVk');

			lineId = bon_id.match(/[0-9]+/g);
			if ($('#hiddenArtikelArtField' + lineId).val() > 0) {
				// wenn in der offenen Bon Line eine Speiseart hinterlegt ist, wird der Button gesetzt
				speiseArtId = $('#hiddenArtikelArtField' + lineId).val();
				//console.log("sind im if 416 -> speiseart id "+speiseArtId);

				$('#artikelArtSelButVk' + speiseArtId).removeClass("editierenArtikelArtSelButVk").addClass("editierenArtikelArtSelButVk_selected");
				$('#artikelArtSelBut' + speiseArtId).removeClass("editierenArtikelArtSelBut").addClass("editierenArtikelArtSelBut_selected");


			}

			set_focus(); // setzt den focus auf das Preis Feld

			// Wenn der Artikel Child hat, dann das splitten abdrehen!
			/*
			if( $("#bonSplitModal").css("display")=="block" && $("#"+bon_id).hasClass('elemHasChildes') == true ){
				$(".split_but_down").attr("disabled", true).removeClass('orange').addClass('gGray');		
			}
			else if( $("#bonSplitModal").css("display")=="block" && $("#"+bon_id).hasClass('elemHasChildes') == false ){
				$(".split_but_down").attr("disabled", false).removeClass('gGray').addClass('orange');
			}
			*/
		}

		// Funktion fügt ein Produkt auf den aktuellen bon hinzu
		function produkt_bonieren(produkt_id, ean = false) {

			if (ean == true) {
				var preis = '';
				preis = produkt_id;

			} else {
				preis = document.getElementById("preis").value;
			}
			stueck = document.getElementById("stueck").value;
			aktueller_bon = document.getElementById("aktueller_bon").value;
			konfigAutoEditVar = "<?php echo strtolower(FUNKTION_BONIEREN_AUTOMATISCH_EDITIEREN); ?>";

			// Wenn stueck leer ist, preis befuellt ist aber toggle auf stueck steht, dann wurde z.b. 3* eingegeben, dann auch als Stueck behandeln!!!
			element = document.getElementById("toggle").value;

			scrollPos = 0;
			if (!stueck && element == "stueck") {
				stueck = preis;
				preis = "";

			}
			if (ean == true && element == 'stueck' && preis == '') {
				// das ist relevant wenn im Preisfeld nichts steht, und der barcode ins stueckfeld gescannt wird
				preis = stueck;
				stueck = 1;
			}
			
			
			
			$.ajax({
				type: "POST",
				url: "kassieren_bon_anzeigen.php",
				dataType: "html",
				data: {
					produkt_id: produkt_id,
					stueck: stueck,
					preis: preis,
					aktueller_bon: aktueller_bon,
					ean: ean
				},
				async: true,
				success: function(response) {

					if (checkJson(response) == true) {
						respArray = JSON.parse(response);
console.log(respArray);
						if (respArray[1] > 0 && respArray[2] == 0) lineToSelect = respArray[1];
						else if (respArray[1] == 0 && respArray[2] > 0) lineToSelect = respArray[2];
						else lineToSelect = 0;

						if (respArray[4][6] !== false) lineToSelect = respArray[4][6];
						// so früh wie möglich, könnte schon die nächste Eingabe zb Barcodescanner erfolgen.
						// allerdings nur wenn nicht ean bonieren !!!
						if (!respArray[6] || respArray[6] != 'eanBonieren') {
							// wenn ean boniert wird wird das feld in check_ean geleert !!!
							eingabefelder_loeschen(produkt_id, ean);
						} else {
							// Hier wurde der EAN gefunden - entweder biepen oder halt nicht biepen
							if (respArray[0] == "erfolgreich") {
								playSoundOKVar = "<?php echo strtolower(EAN_GEFUNDEN_BEEP); ?>";
								if (playSoundOKVar == 'ja') {
									playSoundOK();
									//alert("gefunden");
								}
							} else {
								playSoundErrorVar = "<?php echo strtolower(EAN_NICHT_GEFUNDEN_BEEP); ?>";
								if (playSoundErrorVar == 'ja') {
									playSoundError();
									//alert("nicht gefunden");
								}
							}
							$("#stueck").val("");
							$("#toggle").val("preis");
						}

						$("#error_message").html(respArray[0]);
						openToEdit = false;
						if (konfigAutoEditVar == 'ja') {
							openToEdit = 'openToEdit';
						}

						if (respArray[4] !== undefined) {
							//alert(respArray[4][0]);
							$("#bonContent").html(respArray[4][0]);
							
							//console.log(respArray[4][5]);
							$("#bon_sum_field").html(respArray[4][5]); // urspr auf respArray[4][2] gewesen jetzt wird ein eigener display wert ...

							let help = document.getElementById("bon_stk_field");
							$("#bon_stk_field").html(+help.innerHTML+1);
							$("#menue_warenkoerbe").html(respArray[4][1]);

							// gesamt Betrag in Summen Feld eingeben
							$('#bon_sum_div_customer_name, #kundenNameFeld').html(respArray[4][3]);
							// Warenkorb selektieren und kennzeichnen
							$('#warenkorb' + respArray[4][4]).each(function() {
								$(this).removeClass('line_unselected');
								$(this).addClass('line_selected');
							});
							// Artikel selektieren
							cCountArtLines = $("#bonContent > .line_unselected").length + $("#bonContent > .line_selected").length;
							if ((lineToSelect == false || lineToSelect == '') && cCountArtLines > 0) {
								lineToSelect = $("#bonContent > .line_unselected").last().prop('id').replace("line", "");
							}
							if (konfigAutoSelectVar == 'ja') {
								select_bon_line("line" + lineToSelect);
							}
							
							if (cCountArtLines > 3) { // ist vor allem wenn kein artikel im container ist, kommt error weil es keine markierte id gibt						
								$("#bonContent").scrollTop(0);
								parentInnerH = $("#bonContent").innerHeight(); // wie hoch ist das bon content Element
								elemOutherH = $("#line" + lineToSelect).outerHeight(true); // wie hoch ist die Artikel Zeile
								elemOffset = $("#line" + lineToSelect).offset().top - $("#bonContent").offset().top; // wo steht das markirte element im container, bei scroll null
								// werte werden relative to doc ermittelt 
								//      da kommt der bon_anzeigen Fehler wenn eine discount Zeile eingefügt wird
								if (elemOffset > (parentInnerH - elemOutherH)) { // element pos is ausserhalb vom bon container
									xOf = (elemOffset + (elemOutherH * 2)) - parentInnerH;
									$("#bonContent").scrollTop(xOf);
								} else {
									$("#bonContent").scrollTop(0);
								} // element steht inerhalb vom bon container

							}

							if (respArray[5] !== undefined && respArray[5] == 'openToEdit') { // wenn automatisch editieren in Konfig gesetzt ist
								$("#editieren_button_id").click();
								$("#editieren_produktname").focus();
								tmpTx = $("#editieren_produktname").val(); // stellt den Cursor immer nach Hinten
								$("#editieren_produktname").val('');
								$("#editieren_produktname").val(tmpTx);

								if (editModalFocus == 'produktname') $("#activeEditField").val('editieren_produktname');
								else if (editModalFocus == 'preis') $("#activeEditField").val('editieren_brutto');
							}
							if (typeof respArray[7] != 'undefined' && isArray(respArray[7])) {
								if (respArray[7][1] == 'ja') {
									// return val von checkOnSomDiscount() aus global_function_2 
									// kaufXzahlY,ja,6475,4.54545455,0.1000,txt ->    type, relevant, prodId, price, taxRate     ?? stueck ?
									//console.log("kassieren.php 566   array erkannt relevant-JA-> "+respArray[7]);
									soMaDiscountLine(respArray[7]);
									//console.log("kassieren.php 565   array erkannt relevant-JA-> "+respArray[7]);
								} else {
									//console.log("kassieren.php 569   array erkannt, relevant-NEIN-> "+ respArray[7]);
								}

							}
						
							if (typeof respArray[8] != 'undefined' && isNaN(respArray[8]) === false) {

								if (respArray[8] < 0) {
									//console.log("EK Limit ÜBERSCHRITTEN -> "+respArray[8]);
									openGeneralDialog('einkaufsLimitDialog', 'Einkaufslimit Stückzahl Überschritten', 'Das Stückzahl Einkaufslimit ist bereits überschritten. (' + respArray[8] + ' )', 'wrapper');
								}

							}
							// event ein if Soma Funktion
							//bon_anzeigen(lineToSelect, openToEdit);  --- RFR 06.02.21 wird ja schon in Zeile 459 gemacht									
						} else {
							bon_anzeigen(lineToSelect, openToEdit);
						}
						//  änderung jan 2017, kein extra ajax request, wird in global_function in der Funktion offener_bon_anzeigen aufgerufen und der Inhalt für den
						//  warenkorb Container gemeinsam mit dem offenen_bon Inhalt zurückgegeben.
						//warenkoerbe_anzeigen();
					} else {
						console.log(response);
					}
				},
				error: function(response) {
					console.log(response);
				}
			})



		}


		// Ajax um die Produkte einer Kategorie anzuzeigen
		function produkte_anzeigen(id, favorit = false, katid = null) {
			$.ajax({
				type: "POST",
				url: "kassieren_produkte.php",
				dataType: "html",
				data: {
					id: id,
					katid: katid,
					favorit: favorit
				},



				async: true,
				success: function(html) {
					$("#produkte").html(html);
				}
			})
			set_focus();
		}

		// js variablen aus php Konstanten steht sonst ab Zeile 1600 aufwärts, das wäre im Ablauf zu weit hinten !
		sonderPreisgruppenEnabled = "<?php echo strtolower(SONDERPREIS_ENABLED); ?>";
		bezahlenNurWennKundeAufgerufen = "<?php echo strtolower(BEZAHLEN_IF_KUNDE_AUFGERUFEN); ?>";
		kundenAuswahlToInfo = "<?php echo strtolower(KUNDENAUSWAHL_INFO_DIALOG); ?>";

		einzelFixRabatt_1 = "<?php echo FUNKTION_BUTTON_EINZELFIXRABATT_1_VALUE; ?>";
		einzelFixRabatt_2 = "<?php echo FUNKTION_BUTTON_EINZELFIXRABATT_2_VALUE; ?>";
		restgeldBerechnungZwingend = "<?php echo RESTGELD_BERECHNUNG_ZWINGEND; ?>";




		// Funktion zeigt den Bon am Bildschirm an
		function bon_anzeigen(markierte_id = false, openToEdit = false, kp = false) {
			// Preisgruppen Funktion Sondermarkt (soMa) Kalkulation aufrufen !!!
			// return value -> wenn offener_bon LIne nach hinten geschoben wird, brauchen wir das !
			//console.log("kassieren.php zeile 582 -> "+markierte_id+" -/toEdit-> "+openToEdit+" -/->>> "+kp);
			var lineToLock = false;
			var lineToSelect = false;

			if (markierte_id !== false) {
				//markierte_id=(markierte_id*1)+1;
			}



			//brauchen das ausserhalb vom Konfig IF, sonst gibts am ende der funktion einen Error !
			/*
			if(	typeof sonderPreisgruppenEnabled !== 'undefined' && sonderPreisgruppenEnabled == 'ja' ){
					
					
					lineToSelect=openBonSomaCalc();
					
					if(lineToSelect[0]*1 >0){ 	markierte_id=lineToSelect[0];			}
						// ist ein array, für mehrere Zeilen
					if(lineToSelect[1].length >0){ lineToLock=lineToSelect[1];				}
			}
			*/

			aktueller_bon = document.getElementById("aktueller_bon").value;

			// ursprüngliche (Reinhold) Version, not use for this, aktueller_bon (id) is set as session, will read in funtion bon_anzeigen
			objDiv = document.getElementById("bonContent");

			$.ajax({
				type: "POST",
				url: "ajax_funktionen.php",
				dataType: "html",
				data: {
					funktion: "bon_anzeigen",
					id: aktueller_bon
				},



				async: true,
				success: function(response) {
					
					// änderung jan 2017, um offenen bon und warenkörbe aus einen einzelnen request zu bekommen, wird das in ein json array zurückgegeben
					// im file global_functions ca 770, und dann hier aufgesplitet 
					if (checkJson(response) == true) {
						respArray = JSON.parse(response);
						html = respArray[0];
						$("#bonContent").html(html);
						$("#menue_warenkoerbe").html(respArray[1]);
						$("#bonZusatzTxtDiv").html(respArray[2]);

						if (typeof respArray[3] !== 'undefined' && isNaN(respArray[3]) !== true && respArray[3] * 1 < 0) {
							formatedNo = Math.abs(respArray[3]).toFixed(2) + '';
							formatedNo = formatedNo.replace(".", ",");
							headerInfo = ((respArray[3] * 1).toFixed(2) + '').replace(".", ",");

							if ($("#bon_nameHeader").html() == "&nbsp;Name") {
								// dieser Aufruf funktioniert, wurde auf Kundenwunsch abgedreht. Wenn in Funktion wird eine Dialog Box
								// beim überschreiten des Wochenlimits (Soma) 1x ausgelöst.
								//openGeneralDialog('einkaufsLimitDialog', 'Einkaufslimit Überschritten', 'Das Einkaufslimit ist bereits um € '+formatedNo+' überschritten.', 'wrapper');
								$("#bon_nameHeader").html("<div style='float:left; padding-left:3px;' >Limit: </div><div id='overLimitCell' style='float:left; padding-left:10px;'>" + headerInfo + "</div>");
								$("#bon_nameHeader").css({
									'background': '#333',
									'color': '#f00'
								});



							} else {
								$("#bon_nameHeader").css({
									'background-color': '#334',
									'color': '#f00'
								});



								$("#bon_nameHeader").html("<div style='float:left; padding-left:3px;' >Limit: </div><div id='overLimitCell' style='float:left; padding-left:10px;'>" + headerInfo + "</div>");
							}

						} else if (typeof respArray[3] !== 'undefined' && isNaN(respArray[3]) !== true && respArray[3] * 1 >= 0) {
							$("#bon_nameHeader").css({
								'background-color': '#666',
								'color': '#fff'
							});



							$("#bon_nameHeader").html("&nbsp;Name");

						} else console.log("array Elem 3 > 0 -> " + respArray[3]);



					} else {
						console.log("json array  NICHT detected");
						$("#bonContent").html(response);
					}

					bonSumme = $("#hiddenSumField").val();
					bonStk = $("#hiddenStkField").val();
					bonSummeDisplay = $("#hiddenSumDisplayField").val();
					bonStkDisplay = $("#hiddenStkDisplayField").val();
					$("#bon_sum_field").html(bonSummeDisplay);
					$("#bon_stk_field").html(bonStkDisplay);
					// reduziert die breite vom bon Container Breite wenn der container in scroll mode kommt.
					if ($("#bonContent").get(0).scrollHeight > $("#bonContent").innerHeight()) {
						$("#bon_content_header_div, #bon_content_sum_div").css({
							"width": $('#bonContent').prop("scrollWidth")
						});


					} else $("#bon_content_header_div, #bon_content_sum_div").css({
						"width": "100%"
					});


					cCountArtLines = $("#bonContent > .line_unselected").length + $("#bonContent > .line_selected").length;
					// ermittelt wie viele Artikel im bon container sind, wichtig wenn keiner drinnen ist gibts keine markierte id						

					if ((markierte_id == false || markierte_id == '') && cCountArtLines > 0) {
						markierte_id = $("#bonContent > .line_unselected").last().prop('id').replace("line", "");
					}

					if (konfigAutoSelectVar == 'ja') {
						select_bon_line("line" + markierte_id);
					}

					if (respArray[6] > 0) {
						select_bon_line("line" + respArray[6]);
					}

					if (cCountArtLines > 3) { // ist vor allem wenn kein artikel im container ist, kommt error weil es keine markierte id gibt						
						$("#bonContent").scrollTop(0);
						parentInnerH = $("#bonContent").innerHeight(); // wie hoch ist das bon content Element
						elemOutherH = $("#line" + markierte_id).outerHeight(true); // wie hoch ist die Artikel Zeile
						elemOffset = $("#line" + markierte_id).offset().top - $("#bonContent").offset().top; // wo steht das markirte element im container, bei scroll null

						// werte werden relative to doc ermittelt 
						if (elemOffset > (parentInnerH - elemOutherH)) { // element pos is ausserhalb vom bon container
							xOf = (elemOffset + (elemOutherH * 2)) - parentInnerH;
							$("#bonContent").scrollTop(xOf);
						} else {
							$("#bonContent").scrollTop(0);
						} // element steht inerhalb vom bon container


					}

					if (openToEdit == 'openToEdit') { // wenn automatisch editieren in Konfig gesetzt ist
						$("#editieren_button_id").click();
						$("#editieren_produktname").focus();
						tmpTx = $("#editieren_produktname").val(); // stellt den Cursor immer nach Hinten
						$("#editieren_produktname").val('');
						$("#editieren_produktname").val(tmpTx);

						if (editModalFocus == 'produktname') $("#activeEditField").val('editieren_produktname');
						else if (editModalFocus == 'preis') $("#activeEditField").val('editieren_brutto');
					}

					zahlung_gedrueckt();
					set_focus();
					if (lineToLock.length > 0) {
						for (i = 0; i < lineToLock.length; i++) {
							//$("#bon_name"+lineToLock[i]).css({'color':'#f90'	}).addClass("discountZeile");
							$("#line" + lineToLock[i]).attr("onclick", "").unbind("click");
						}

					}
				}
			})
		}


		// Löscht alle eingabefelder
		function eingabefelder_loeschen() {
			document.getElementById("preis").value = "";
			document.getElementById("stueck").value = "";
			document.getElementById("toggle").value = "preis";
			$("#preis").focus();
		}


		function finde_selektierte_bon_linie() {
			id = 0;
			$('.line_selected').each(function() {
				name = $(this).attr("id");
				if (name.indexOf("line") > -1) {
					//die ersten Ziffern wegschneiden(bon_name)
					id = name.substr(4);
				}
			});
			return (id);
		}

		function funktionstaste_gedrueckt_movebon(funktion) {
			selLineId = false;
			if (funktion == 'All') {
				if ($("#moveBonOriginContent > [id^='move_line']").hasClass("line_unselected")) {
					$("#moveBonOriginContent > [id^='move_line']").each(function() {
						$(this).removeClass("line_unselected");
						$(this).addClass("line_selected");
					})
				} else {
					$("#moveBonOriginContent > [id^='move_line']").each(function() {
						$(this).removeClass("line_selected");
						$(this).addClass("line_unselected");
					})
				}
			}

		}

		function funktionstaste_gedrueckt_splitbon(funktion) {
			selLineId = false;

			$('#splitBonContainer .line_selected').each(function() {
				selLineId = $(this).attr("id");
			});


			if (funktion == 'Del') {
				addToSendContent = "operateFunction=DeleteSplitBonLine";
			} else if (funktion == '+') {
				addToSendContent = "operateFunction=plus";
			} else if (funktion == '-') {
				addToSendContent = "operateFunction=minus";
			}


			xmlhttp = GetXmlHttpObject();
			xmlhttp.open("POST", "include/ajax_functions_splitbon.php", false);
			xmlhttp.setRequestHeader("Content-type", "application/x-www-form-urlencoded; charset=UTF-8");
			sendCont = "functionKey=operateRegisterFunction&selectedLineId=" + selLineId + "&" + addToSendContent;

			xmlhttp.send(sendCont);
			resp = xmlhttp.responseText;
			loadBonForSplit();
		}



		function funktionstaste_gedrueckt(funktion) {

			if (funktion === "GR") {
				preis = document.getElementById("preis").value;
				if (preis < 100) {
					aktueller_bon = document.getElementById("aktueller_bon").value;
					$.ajax({
						type: "POST",
						url: "ajax_funktionen.php",
						dataType: "html",
						data: {
							funktion: "gesamtrabatt",
							bon_id: aktueller_bon,
							prozent: preis
						},




						async: false,
						success: function(html) {
							$("#error_message").html(html);
							eingabefelder_loeschen();
							bon_anzeigen("");
						}
					})
				} else $("#error_message").html("Mehr als 100% Rabatt sind nicht erlaubt");
			}

			//  Finde heraus, welche Zeile markiert ist
			id = finde_selektierte_bon_linie();
			// Wenn nichts ausgewäht wurde, dann beenden
			if (!id) {
				document.getElementById("error_message").innerHTML = "Kein Produkt selektiert";
				return;
			}
			if (funktion === "+") {
				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",
					data: {
						funktion: "anzahl_erhoehen",
						id: id
					},





					async: true,
					success: function(ajaxResponse) {
						if (checkJson(ajaxResponse) == true) {
							respArray = JSON.parse(ajaxResponse);
							$("#error_message").html(respArray[0]);
							if (respArray[1] < 0) {
								//console.log("LIMIT -> "+respArray[1]);
								openGeneralDialog('einkaufsLimitDialog', 'Einkaufslimit Stückzahl Überschritten', 'Das Stückzahl Einkaufslimit ist bereits überschritten. (' + respArray[1] + ')', 'wrapper');
							}
						} else $("#error_message").html(ajaxResponse);
						bon_anzeigen(id);
					}

				})


			}

			if (funktion === "-") {
				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",
					data: {
						funktion: "anzahl_verringern",
						id: id
					},



					async: true,
					success: function(html) {
						$("#error_message").html(html);
						bon_anzeigen(id);
					}
				})
			}

			if (funktion === "Del") {
				if ((currentUserLevel < bonLineDelUserLevel && gastroVersion != 'ja') ||
					(currentUserLevel < bonLineDelUserLevel && gastroVersion == 'ja' && bonLineDelUserLevelOnPrinted != 'ja')) {
					$("#error_message").html("Fehlende Berechtigung, Bonzeile Löschen");
					return false;
				}

				// wenn nicht gastro oder gastro und kriterium ausgedruckt  nicht gesetzt ist wird hier abgebrochen  
				// ansonsten wird in der ajax funktion auf gedruckt geprüft


				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",
					data: {
						funktion: "zeile_loeschen",
						id: id
					},



					async: true,
					success: function(html) {
						$("#error_message").html(html);
						if ($("#bonContent > .line_unselected").length) {
							first_id = $("#bonContent > .line_unselected").first().prop('id').replace("line", "");
							// löschen der Beilagen und Basispreis Felder in der Editiermaske
							$("#beilagenProdInitialPreis, #basisPrGeaendertField, #basisPrGeaendertAmount").val(0);

							bon_anzeigen(first_id);
							// nach dem löschen gibts die markierte id nicht mehr, nehmen die erste im bon container am leichtesten zu finden
							// funktioniert solange es den ersten gibt, zumindest einen artikel im bon container gibt
						} else bon_anzeigen(); // wenn der letzte artikel gelöscht wurde
						warenkoerbe_anzeigen(); // nach dem loeschen koennte ein Warenkorb leer sein
					}
				});
			}


			// Einzelrabatt und Einzel Fix Rabatte KPE Dez 2020 ER-1 bzw ER-2
			if (funktion === "ER" || funktion === "ER-1" || funktion === "ER-2") {
				if (funktion === "ER") preis = document.getElementById("preis").value;
				else if (funktion === "ER-1") preis = einzelFixRabatt_1;
				else if (funktion === "ER-2") preis = einzelFixRabatt_2;


				if (preis < 100) {
					$.ajax({
						type: "POST",
						url: "ajax_funktionen.php",
						dataType: "html",
						data: {
							funktion: "zeile_einzelrabatt",
							id: id,
							prozent: preis
						},




						async: true,
						success: function(ajaxResponse) {
							if (checkJson(ajaxResponse) == true) {
								respArray = JSON.parse(ajaxResponse);

								if (respArray[0] == 'success') {
									$("#error_message").html(respArray[1]);
									eingabefelder_loeschen();
									bon_anzeigen(id);
								}
							} else {
								$("#error_message").html(ajaxResponse);
								$("#preis").focus();
							}
						}
					});
				} else $("#error_message").html("Mehr als 100% Rabatt sind nicht erlaubt");
			}
		}

		// ***************************************************************************
		// Modal modal_produkt_editieren:   Funtionen für das editieren eines Produktes
		function editieren_abbrechen() {

			$("#editieren_menge, #editieren_netto, #editieren_brutto, #editieren_gesamtpreis").val('');
			$("#editieren_produktname").val('').removeAttr('style');

			$("#activeEditField, #gastroBeilagenoperationsStatus, #beilagenTxtFieldMinus, #beilagenTxtFieldPlus, #editierenTxareaStatus ").val("");
			$("#zahlen_mitte_edit").css({
				"display": "block"
			});


			$("#beilagen_container").css({
				"height": "32%"
			});


			$("#gastroBeilagenStrechStatus").val('nNormal');
			$(".beilagenEditBut").css({
				"background": "#bbb"
			});


			$("#artikelArtSelectDiv > button").removeClass('editierenArtikelArtSelBut_selected').addClass('editierenArtikelArtSelBut');
			$("#artSelectedVal").val(0);
			$("#editieren_brutto").prop("disabled", false);
			$("#beilagenSum").val(0);
			$("#editierenMsgField").val('');
			$("#beilagenSumBrutto, #BeilagenSumBruttoDisplay, #beilagenProdInitialPreis, #basisPrGeaendertField, #basisPrGeaendertAmount").val(0);
			// setzt das Beilagen Fenster aus Status Seite laden, Category Group oberste ebene
			if (gastroVersion == 'ja') getBeilagenSubGroup('root');
			modal_produkt_editieren.style.display = "none";
			$("#editieren_brutto, #beilagenEditButMinus, #beilagenEditButPlus").prop('disabled', false).removeAttr('style');

			set_focus();
		}

		function editieren_brutto_berechnen(elem) {
			netto = elem.value;
			netto = netto.replace(/,/g, '.');

			stueck = document.getElementById("editieren_menge").value;
			stueck = stueck.replace(/,/g, '.');
			stueck = stueck * 1;
			steuer = document.getElementById("editieren_steuer").value;
			steuer = steuer * 1;
			brutto = netto * (1 + (steuer / 100));
			gesamt = brutto * stueck;

			brutto = brutto.toFixed(8);
			gesamt = gesamt.toFixed(8);

			document.getElementById("editieren_brutto").value = brutto;
			document.getElementById("editieren_gesamtpreis").value = gesamt;

		}

		function editieren_netto_berechnen(elem) {
			brutto = elem.value;
			brutto = brutto.replace(/,/g, '.');

			stueck = document.getElementById("editieren_menge").value;
			stueck = stueck.replace(/,/g, '.');
			stueck = stueck * 1;
			steuer = document.getElementById("editieren_steuer").value;
			steuer = steuer * 1;
			netto = brutto / (1 + (steuer / 100));
			gesamt = brutto * stueck;
			netto = netto.toFixed(8);
			gesamt = gesamt.toFixed(8);

			document.getElementById("editieren_netto").value = netto;
			document.getElementById("editieren_gesamtpreis").value = gesamt;

		}

		function editieren_stk_angeklickt(elem) {
			stueck = elem.value;
			stueck = stueck.replace(/,/g, '.');
			stueck = stueck * 1;

			steuer = document.getElementById("editieren_steuer").value;
			netto = document.getElementById("editieren_netto").value;
			steuer = steuer * 1;
			netto = netto * 1;
			brutto = netto * (1 + (steuer / 100));
			gesamt = brutto * stueck;

			netto = netto.toFixed(8);
			brutto = brutto.toFixed(8);
			gesamt = gesamt.toFixed(8);

			document.getElementById("editieren_brutto").value = brutto;

			document.getElementById("editieren_gesamtpreis").value = gesamt;
		}

		function update_produkt_editieren(string) {
			elem = document.getElementById(string);
			if (string == 'editieren_menge') editieren_stk_angeklickt(elem);
			if (string == 'editieren_brutto') editieren_netto_berechnen(elem);
			if (string == 'editieren_netto') editieren_brutto_berechnen(elem);
		}

		// Hier wurde am Editierfeld OK gedrückt, jetzt Änderungen speichern
		function editieren_abgeschlossen() {
			id = finde_selektierte_bon_linie();

			name = document.getElementById("editieren_produktname").value;
			stueck = document.getElementById("editieren_menge").value;

			netto = document.getElementById("editieren_netto").value;
			brutto = document.getElementById("editieren_brutto").value;
			gesamt = document.getElementById("editieren_gesamtpreis").value;
			aktueller_bon = document.getElementById("aktueller_bon").value;
			textBeilagenMinus = $("#beilagenTxtFieldMinus").val();
			textBeilagenPlus = $("#beilagenTxtFieldPlus").val();
			artikelArtId = $("#artSelectedVal").val();
			basisPrGeaendertAmount = $("#basisPrGeaendertAmount").val();

			beilagenSumNetto = $("#beilagenSum").val();
			beilagenSumBrutto = $("#beilagenSumBrutto").val();
			// das ist der Initialpreis der in der maske steht -> wirtd an ajax_funktionen übergeben und da in die DB geschrieben, wenn relevant
			beilagenProdInitialPr = $("#beilagenProdInitialPreis").val();
			beilagenBasispreisGeaendertKey = $("#basisPrGeaendertField").val();

			//console.log("netto: "+beilagenSumNetto+", brutto: "+beilagenSumBrutto+", initial: "+beilagenProdInitialPr+" ####****geaendert Key: "+beilagenBasispreisGeaendertKey);


			// brauchen wir für Beilagen rechnen, damit wir unterscheiden können ob der geänderte Preis aus dem brutto edit Field
			// oder vom Beilagen ändern kommt
			dbPrice = $("#bon_einzelpreis_anzeige" + id).html().replace(',', '.');
			editedBrutto = $("#editieren_brutto").val().replace(',', '.');


			disableMinusQty = "<?php echo strtolower(DISABLE_BON_MINUS_ANZAHL); ?>";
			if (disableMinusQty == 'ja' && stueck.replace(',', '.') * 1 < 0) {
				stueck = 0;
			}

			$.ajax({
				type: "POST",
				url: "ajax_funktionen.php",
				dataType: "html",
				data: {
					funktion: "editieren_abgeschlossen",
					name: name,
					stueck: stueck,
					aktueller_bon: aktueller_bon,
					netto: netto,
					offener_bon_id: id,
					beilagenMinus: textBeilagenMinus,
					beilagenPlus: textBeilagenPlus,
					artikelArtId: artikelArtId,
					beilagenSumNetto: beilagenSumNetto,
					beilagenSumBrutto: beilagenSumBrutto,
					beilagenProdInitialPr: beilagenProdInitialPr,
					beilagenBasispreisGeaendertKey: beilagenBasispreisGeaendertKey,
					basisPrGeaendertAmount: basisPrGeaendertAmount
				},












				async: false,
				success: function(html) {
					var match = html.substr(html.indexOf(' new Product Line')).match(/Product Line(\d+)/); // wenn eine neue Product Line angelegt wird, wird diese selectiert
					if (match != null && match[1] * 1 > 0) {
						id = match[1];
					}
					bon_anzeigen(id);
					$("#activeEditField, #gastroBeilagenoperationsStatus, #beilagenTxtFieldMinus, #beilagenTxtFieldPlus ").val("");
					$("#beilagenSum, #beilagenSumBrutto").val();
					$("#beilagenProdInitialPreis, #basisPrGeaendertField, #basisPrGeaendertAmount").val(0);
					$("#artikelArtSelectDiv > button").removeClass('editierenArtikelArtSelBut_selected').addClass('editierenArtikelArtSelBut');
					$("#zahlen_mitte_edit").css({
						"display": "block"
					});


					$("#beilagen_container").css({
						"height": "32%"
					});


					$("#gastroBeilagenStrechStatus").val('nNormal');
					$(".beilagenEditBut").css({
						"background": "#bbb"
					});


					$("#editieren_brutto").prop("disabled", false);
					// setzt das Beilagen Fenster aus Status Seite laden, Category Group oberste ebene
					if (gastroVersion == 'ja') getBeilagenSubGroup('root');
					modal_produkt_editieren.style.display = "none";
					$("#editieren_produktname").css({
						"width": "30%",
						"height": "100%"
					});



					$("#editieren_brutto, #beilagenEditButPlus, #beilagenEditButMinus").prop('disabled', false).removeAttr('style');

				}
			})

		}
		//*************************************************************

		// Zahlen Aufgerufen (Modal geht auf)
		function zahlung_gedrueckt() {

			summe = 0;
			$('[id^=zahlungsart]').each(function() {
				betrag = $(this).val();
				//alert(betrag);
				betrag = betrag.replace(/,/g, ".");
				$(this).val(betrag);
				summe = summe + ($(this).val() * 1);
			});

			summe_zahlungsart = summe.toFixed(8);
			summe_zahlungsart = summe_zahlungsart.replace(".", ",");
			$('#summe_zahlungsart').val(summe_zahlungsart);
			summe_zahlungsartDisplay = summe.toFixed(2).replace(".", ",");
			$('#summe_zahlungsartDisplay').val(summe_zahlungsartDisplay);
			//	document.getElementById("summe_zahlungsart").value=summe.toFixed(2);		// Gesamtsumme gegeben

			//	document.getElementById("rueck_zahlungsart").value=summe.toFixed(2);
			//gesamtsumme=document.getElementById("summe_zahlungsart").value;

			gesamt_zahlbetrag = document.getElementById("zahlbetrag").value; // Das ist zu zahlen

			// gesamtbetrag von Deutsch display auf englisches Format umrechnen
			gesamt_zahlbetrag = gesamt_zahlbetrag.replace(".", "");
			gesamt_zahlbetrag = gesamt_zahlbetrag.replace(",", ".");

			//alert(gesamt_zahlbetrag);
			float_gesamt_zahlbetrag = parseFloat(gesamt_zahlbetrag).toFixed(8);
			rueckgeld = summe - float_gesamt_zahlbetrag;
			if (rueckgeld < 0) {

				rueckgeld = "----";
				offener_betrag = float_gesamt_zahlbetrag - summe;
				offener_betragDisplay = offener_betrag;
				//  KPE 2017 10 20  offener_betrag=offener_betrag.toFixed(2); 
				offener_betrag = offener_betrag.toFixed(8);
			} else {
				offener_betrag = "0.00";
				rueckgeld = rueckgeld * 1;
				rueckgeld = rueckgeld.toFixed(2);
				rueckgeld = rueckgeld.replace(".", ",");
				offener_betragDisplay = offener_betrag;
			}

			$('#rueck_zahlungsart').val(rueckgeld);

			offener_betrag = (offener_betrag * 1);
			//  KPE 2017 10 20   
			offener_betrag = offener_betrag.toFixed(8);

			offener_betrag = offener_betrag.replace(".", ",");
			$('#offener_betrag').val(offener_betrag);
			offener_betragDisplay *= 1;
			offener_betragDisplay = offener_betragDisplay.toFixed(2).replace(".", ",");
			$('#offener_betragDisplay').val(offener_betragDisplay);

			$("#toggle").value = "preis";

			// soma bzw retourgeld berechnung zwingend
			if (restgeldBerechnungZwingend.toLowerCase() == 'ja') {
				retoutGeldCalc = calcRetourGeld();
				//console.log("zahlung_gedrueckt -> zwingend !!! -> "+retoutGeldCalc);
			}


		}

		// **************************************************************************
		// Eine Zahlung wurde angeklickt - jetzt ín das toggle Feld schreiben
		function zahlung_angeklickt(feld) {
			//alert(feld.id);
			document.getElementById("aktive_zahlungsart").value = feld.id;
		}

		function setActiveEditField(fieldId) {
			$("#activeEditField").val(fieldId);
			if (fieldId == 'editieren_brutto' && beilagenKalkulation == 'ja') {
				$("#beilagenEditButMinus, #beilagenEditButPlus").prop('disabled', true).css({
					"color": "#888"
				});


			}
		}


		// **************************************************************************
		// Es wurde ein bezahlart angeklickt, wo kein Betrag eingegeben werden kann (z.b. Bankomat oder Bank)
		function restzahlung_angeklickt(zahlungsart, terminalIndicator = false) {

			var offener_betragDisplay = false;


			// der Teil kommt weg ???
			/*
			var zahlungsartBankVal=$("#zahlungsartBank").val();
			var zahlungsartBankomatVal=$("#zahlungsartBankomat").val();
			if(zahlungsart=="Bank" && zahlungsartBankVal != ''){
				//$("#zahlungsartBank").val('');
					//$("#offener_betrag").val(0);
			}
			if(zahlungsart=="Bankomat" && zahlungsartBankomatVal != ''){
				//$("#zahlungsartBankomat").val('');
				 //$("#offener_betrag").val(0);
			}	*/




			offener_betrag = document.getElementById("offener_betrag").value;
			zahlbetrag = document.getElementById("zahlbetragDisplay").value;
			//offener_betrag=offener_betrag.replace(".", "");
			offener_betrag = offener_betrag.replace(",", ".");
			offener_betrag *= 1;
			zahlbetrag = zahlbetrag.replace(",", ".");
			zahlbetrag *= 1;

			// Wenn der Zahlbetrag negativ ist, dann mach eine Gutschrift, schreibe also -xxxx als Zahlung rein
			// Das ist eigentlich für Bankomat Zahlung storno
			// macht noch Fehler, wenn jeztt bar und Bankomat eingegeben wurde.
			if (offener_betrag == 0 && zahlbetrag < 0) {
				offener_betrag = zahlbetrag;
			}

			offener_betragDis = offener_betrag.toFixed(2) + "";
			offener_betragDisplay = offener_betragDis.replace(".", ",");
			//document.getElementById("zahlungsart"+zahlungsart).value=offener_betrag;
			// geändert um zahlungsarten mit space, das dann diese id hat adressieren zu können !!

			$("[id='zahlungsart" + zahlungsart + "']").val(offener_betrag);
			$("[id='zahlart" + zahlungsart + "Display']").val(offener_betragDisplay);
			//$("#zahlart"+zahlungsart+"Display").val(offener_betragDisplay);

			if (terminalIndicator == 1) {
				//if($("#zahlungsTerminalAbfrageIndic").val() == 0){
				if (offener_betrag != 0) {
					$("#zahlungsTerminalAbfrageIndic").val(1);
					ceBetrag = offener_betragDisplay;

					$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen_ec('', '" + zahlungsart + "', '" + ceBetrag + "')");
					$("#a4PrintButton").attr("onclick", "zahlung_abgeschlossen_ec('a4_ausdruck', '" + zahlungsart + "', '" + ceBetrag + "')");
				} else // Wenn beim Terminal Button eine 0 geklickt wird, dann keine Terminal Zahlung machen !!
				{
					$("#zahlungsTerminalAbfrageIndic").val(0);
					$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen('')");
					$("#a4PrintButton").attr("onclick", "zahlung_abgeschlossen('a4_ausdruck')");
				}
			} else {
				if (offener_betrag > 0) {
					$("#zahlungsTerminalAbfrageIndic").val(0);
					$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen('')");
					$("#a4PrintButton").attr("onclick", "zahlung_abgeschlossen('a4_ausdruck')");
				}
				//}
			}



			zahlung_gedrueckt();
		}

		function restzahlung_frei(zahlungsart) {
			var gesamtBetr = ($("#zahlbetrag").val().replace(".", ""));
			gesamtBetr = gesamtBetr.replace(",", ".");
			var offenBetr = ($("#offener_betrag").val().replace(".", ""));
			offenBetr = offenBetr.replace(",", ".");
			var freiBetr = ($("#zahlung_frei_betrag").val().replace(".", ""));
			freiBetr = freiBetr.replace(",", ".");

			if ($("#a4PrintButton").length) {
				$("#a4PrintButton").attr("disabled", true).css({
					"visibility": "hidden"
				});


			}

			if (offenBetr != '' && (gesamtBetr == offenBetr) && (freiBetr == '' || freiBetr == 0)) {
				$("#zahlung_frei_betrag").val(Number(offenBetr).toFixed(2));
				$("#offener_betrag").val((0).toFixed(2));
				$("input[id^='zahlungsartGutschein'], #zahlungsartBar, .zahlenLineButDis").prop('disabled', true);

			} else if (offenBetr <= 0 && freiBetr > 0) {
				$("#offener_betrag").val(($("#zahlung_frei_betrag").val() * 1).toFixed(2));
				$("#zahlung_frei_betrag").val((0).toFixed(2));
				$("input[id^='zahlungsartGutschein'], #zahlungsartBar, .zahlenLineButDis").prop('disabled', false);
			}


		}


		function zahlung_abbrechen() {

			$('[id^=zahlungsart], [id^=zahlart]').each(function() {
				//alert($(this).val());
				$(this).val("");
				//summe=summe+($(this).val()*1);
			});
			modal.style.display = "none";
			$("#summe_zahlungsart, #summe_zahlungsartDisplay, #gsZahlungDisplay, #rueck_zahlungsart, #offener_betrag, #zahlung_frei_betrag").val("");
			$("#zahlungsTerminalAbfrageIndic").val('0');
			$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen('')");
			$("#a4PrintButton").attr("onclick", "zahlung_abgeschlossen('a4_ausdruck')");
			$("#payTerminalMsgDiv").html('');
			$("input[id^='zahlungsartGutschein'], #zahlungsartBar, .zahlenLineButDis").prop('disabled', false);
			// für die guntschein karten funktion ist das immer disabled, das andere ist wenn es als zahlungsart angelegt ist ohne gs funktion
			if (gutscheinModulAktiv == 'ja' && $("#gutschein_nr_ip").prev().length) $("#gutschein_nr_ip").prev().prop('disabled', true);

			if ($('#gsCardMultiBookCounter').length > 0) clearGutscheinkartenFields();
			if ($("#a4PrintButton").length > 0) {
				$("#a4PrintButton").attr("disabled", false).css({
					"visibility": "visible"
				});


			}

			$("#loadKarte").attr('src', '');


			setTimeout(function() {
				$("#loadKarte").attr('src', 'include/cardPayment/function_taskstop.php?kassaIp=' + kassaIp);
			}, 300);

			set_focus(); // V2.03 RFR  weil nach abbrechen vom zahlungs modal war der focus nicht auf preis gesetzt
			zahlung_gedrueckt();
		}

		function delay(n) {
			return new Promise(function(resolve) {
				setTimeout(resolve, n * 1000);
			});
		}
		/*
		async function delay(delayInms) {
		      return new Promise(resolve  => {
		        setTimeout(() => {
		          resolve(2);
		        }, delayInms);
		      });
		    }
		    async function sample(iIndicator,ceZahlart,ceBetrag) {
		      console.log('a');
		      console.log('waiting...')
		      let delayres = await delay(10000);
		      console.log('waiting end');
			  zahlung_abgeschlossen_ec(iIndicator,ceZahlart,ceBetrag);
		    }

			function zahlung_abgeschlossen_ec2(iIndicator, ceZahlart, ceBetrag)
			{
				sample(iIndicator,ceZahlart,ceBetrag);
				//zahlung_abgeschlossen_ec(iIndicator,ceZahlart,ceBetrag);
			}
			*/

		function zahlung_abgeschlossen_ec(iIndicator, ceZahlart, ceBetrag, express = false) {
			// diese Funktion/Schritt gibts nochmal für nicht Express zahlen (Modal öffnen) kassieren ca. zeile 2866 normal zahlen zeile 2860

			if (bezahlenNurWennKundeAufgerufen.toLowerCase() == 'ja') {
				if ($("#bon_sum_div_customer_name").html().length == 0) {
					dialogContent = "<p>Zahlungsabschluss erfordert einen gültigen, aufgerufen und der Bezahlung zugegeordneten Kunden.</p>";
					openGeneralDialog('preisgruppenCustCheck', 'Kundenzuordnung fehlt', dialogContent, 'wrapper', false);
					// function abbrechen
					return false;

				}
			}

			if (!$("#zahlterminalModal").is(':visible')) {

				$("#zahlterminalModal").css({
					'display': 'block'
				});

				$("#payTerminalModalBetrag").val(ceBetrag);
				$("#payTerminalModalZahlart").val(ceZahlart);

				if (iIndicator == 'a4_ausdruck') a4_string = "true";
				else a4_string = "false";
				zahlMsg = "";

				restBetrag = ($("#offener_betragDisplay").val().replace(",", ".")) * 1;

				if (restBetrag != 0) {
					restBetrag = restBetrag.toFixed(2) + "";
					//restBetrag=restBetrag+"";
					restBetrag = restBetrag.replace('.', ',');
					zahlMsg += " Offener Restbetrag, <span style='color:#a00; font-weight:bold; font-size:1.5em;' >" + restBetrag + " !</span> <br /> ";
				}

				//zahlungsTerminalData -> wird in global_function.php (getZahlungsTermId() ca 3100) erzeugt und in kassieren in js string ( zahlungsTerminalData) geschrieben
				zahlungsTermData = zahlungsTerminalData.split(';');
				zahlungsTerminalId = zahlungsTermData[0];
				zahlungsTerminalType = zahlungsTermData[1];

				if (zahlungsTerminalType != 'undefined' && zahlungsTerminalId != 'undefined') {


					elem = window.parent.document.getElementById('ec_abbruch');
					elem.style.display = 'none';
					var abc = document.getElementById("payTerminalMsgDiv");
					abc.innerHTML = '';
					//$("#payTerminalMsgDiv").innerHTML('<br><p>'+zahlMsg + 'Verbindung mit EC-Terminal-' + zahlungsTerminalType + '/' + zahlungsTerminalId + ' wurde aufgebaut.</p><p>Bitte warten Sie auf die Rückmeldung des Terminals.</p>');
					abc.innerHTML += '<br><p>' + zahlMsg + 'Verbindung mit EC-Terminal-' + zahlungsTerminalType + '/' + zahlungsTerminalId + ' wurde aufgebaut.</p><p>Bitte warten Sie auf die Rückmeldung des Terminals.</p>';

					var interval = null;
					var loading = '<img id="loading_ec" style="display: none; margin: 0 auto;" alt="loading" src="data:image/gif;base64,R0lGODlhEAAQAPIAAP///zqHrc/h6mylwjqHrYW0zJ7D1qrL2yH+GkNyZWF0ZWQgd2l0aCBhamF4bG9hZC5pbmZvACH5BAAKAAAAIf8LTkVUU0NBUEUyLjADAQAAACwAAAAAEAAQAAADMwi63P4wyklrE2MIOggZnAdOmGYJRbExwroUmcG2LmDEwnHQLVsYOd2mBzkYDAdKa+dIAAAh+QQACgABACwAAAAAEAAQAAADNAi63P5OjCEgG4QMu7DmikRxQlFUYDEZIGBMRVsaqHwctXXf7WEYB4Ag1xjihkMZsiUkKhIAIfkEAAoAAgAsAAAAABAAEAAAAzYIujIjK8pByJDMlFYvBoVjHA70GU7xSUJhmKtwHPAKzLO9HMaoKwJZ7Rf8AYPDDzKpZBqfvwQAIfkEAAoAAwAsAAAAABAAEAAAAzMIumIlK8oyhpHsnFZfhYumCYUhDAQxRIdhHBGqRoKw0R8DYlJd8z0fMDgsGo/IpHI5TAAAIfkEAAoABAAsAAAAABAAEAAAAzIIunInK0rnZBTwGPNMgQwmdsNgXGJUlIWEuR5oWUIpz8pAEAMe6TwfwyYsGo/IpFKSAAAh+QQACgAFACwAAAAAEAAQAAADMwi6IMKQORfjdOe82p4wGccc4CEuQradylesojEMBgsUc2G7sDX3lQGBMLAJibufbSlKAAAh+QQACgAGACwAAAAAEAAQAAADMgi63P7wCRHZnFVdmgHu2nFwlWCI3WGc3TSWhUFGxTAUkGCbtgENBMJAEJsxgMLWzpEAACH5BAAKAAcALAAAAAAQABAAAAMyCLrc/jDKSatlQtScKdceCAjDII7HcQ4EMTCpyrCuUBjCYRgHVtqlAiB1YhiCnlsRkAAAOwAAAAAAAAAAAA==" />';
					var pay = $("#payTerminalMsgDiv").html();
					//$("#payTerminalMsgDiv").innerHTML(pay + loading);

					abc.innerHTML = pay + loading;

					$.ajax({
						type: "POST",
						url: "include/cardPayment/function_karte.php",
						dataType: "text",
						data: {
							funktion: "transaktion",
							terminalId: zahlungsTerminalId,
							terminalType: zahlungsTerminalType,
							zahlbetrag: ceBetrag,
							zahlartName: ceZahlart,
							a4_beleg: a4_string
						},
						async: false,
						beforeSend: function() {
							//var pay = $("#payTerminalMsgDiv").html();
							$("#loading_ec").css("display", "block");
							//$valid.html(pay + "<p>"+loading + "</p>");
						},
						success: function(output) {

							try {

								if (/Commit\scompleted/.test(output)) {

									var pay = $("#payTerminalMsgDiv").html();

									$("#payTerminalMsgDiv").html(pay + '<p>EC-Terminal Bestätigung, Zahlung wird abgeschlossen.</p>');

									pay = $("#payTerminalMsgDiv").html();

									if (a4_string == "a4=true") zahlung_abgeschlossen('a4_ausdruck', false, output);
									else {
										var zahlartbankomant = 'expressZahlart';
										if (!express)
											zahlartbankomant = '';
										
										zahlung_abgeschlossen(zahlartbankomant, false, output);
									}
									pay = $("#payTerminalMsgDiv").html();
									$("#payTerminalMsgDiv").html(pay + '<p>Bon wurde erstellt.</p>');
									pay = $("#payTerminalMsgDiv").html();
									$("#payTerminalMsgDiv").html(pay + '<p>Bon wird zum Drucker gesendet.</p>');


									setTimeout(function() {
										$("#zahlungsTerminalAbfrageIndic").val(0);
										terminalZahlungAbbrechen("commit");
										$("#zahlterminalReConnect").css({
											'display': 'none'
										});
										//parent.sixTerminalResponse(a4=a4_string, output, output);
									}, 3000);

									$("#loading_ec").css("display", "none");
									clearInterval(interval);

									elem = window.parent.document.getElementById('ec_abbruch');
									elem.innerText = 'Fertig';
									elem.style.display = '';

									//elem=window.parent.document.getElementById('ec_abbruch');
									//elem.style.display='';

								} else if (/Zahlung\sfehlgeschlagen/.test(output)) {
									var pay = $("#payTerminalMsgDiv").html();
									$("#payTerminalMsgDiv").html(pay + '<p><span style="color:red;font-weight: bold;">Zahlung fehlgeschlagen' + output + '</span></p>');

									elem = window.parent.document.getElementById('ec_abbruch');
									elem.innerText = 'Abbrechen';
									elem.style.display = '';
								} else {
									var pay = $("#payTerminalMsgDiv").html();
									$("#payTerminalMsgDiv").html(pay + '<p><span style="color:red;font-weight: bold;">Zahlung fehlgeschlagen</span></p><span style="color:red;font-weight: bold;">' + output + '</span>');
									elem = window.parent.document.getElementById('ec_abbruch');
									elem.innerText = 'Abbrechen';
									elem.style.display = '';
								}

							} catch (error) {
								console.error(error);
								elem = window.parent.document.getElementById('ec_abbruch');
								elem.innerText = 'Abbrechen';
								elem.style.display = '';
							} finally {
								$("#loading_ec").css("display", "none");
								clearInterval(interval);
							}

						}
					});
				} else {
					$("#payTerminalMsgDiv").html('Verbindung mit EC-Terminal abgebrochen, <b>fehlende Terminal Id od Terminal Type.</b>');
				}


				var checkVar = "<?php if (FILIALSYSTEM_IST_FILIALSYSTEM == "ja" && FILIALSYSTEM_SYNCHRONISATION_BON == "ja") echo FILIALSYSTEM_SYNCHRONISATION_BON; ?>";
				if (checkVar !== "") {
					$.ajax({
						type: "POST",
						url: "ajax_funktionen.php",
						dataType: "html",
						data: {
							funktion: "upsync_abgeschlossener_bon",
							selVal: "incr"
						},
						async: true,
						success: function(testhtml) {
							//console.log("sync successful");
							//$("#payTerminalMsgDiv").html(testhtml);
							console.log(testhtml);
						}
					});

				}
				//   kp -> let auf var geändert !!!

				var checkProd = "<?php if (FILIALSYSTEM_IST_FILIALSYSTEM == "ja" && FILIALSYSTEM_SYNCHRONISATION_PRODUKTE_BON == "ja") echo FILIALSYSTEM_SYNCHRONISATION_PRODUKTE_BON; ?>";
				if (checkProd !== "") {
					$.ajax({
						type: "POST",
						url: "ajax_funktionen.php",
						dataType: "html",
						data: {
							funktion: "syncProducts",
							incremental: "true"
						},
						async: true,
						success: function(html) {
							//console.log("sync successful");
							console.log(html);
						}
					});

				}

			}

		}


		// Einen Tisch loeschen, wenn er temporaer war
		function temporaeren_tisch_loeschen(tisch_id) {
			var temp_tisch_loeschen = "<?php echo strtolower(TEMPORAERE_TISCHE_NACH_KASSIEREN_LOESCHEN); ?>";
			//console.log("Tisch löschen gestartet");
			if (temp_tisch_loeschen == 'ja') {
				//console.log("Tisch id "+tisch_id+" wird gelöscht");
				$.ajax({
					type: "POST",
					url: "api/telefon/telefon_globale_funktionen.php",
					dataType: "html",

					data: {
						funktion: 'loesche_temporaeren_tisch',
						tisch_id: tisch_id
					},


					async: false,
					success: function(response) {
						//console.log(response);
						//$('#loginInfoDiv').html(response);
					}
				});
			}
		}



		// Hier wurde am Bezahlfeld OK oder Express Zahlung gedrückt, jetzt Zahlung speichern und abschließen
		// z.b. zahlung_abgeschlossen('A4_ausdruck')
		function zahlung_abgeschlossen(printTarget, abholscheinDialog = false, zahlTerminalData = false) {

			// preigruppen. sondermarkt, soma ... relevant
			//Zahlungen sperren wenn kein Kunde aufgerufen / dem Bon Zugeordnet wurde !!!!   KPE Nov2020
			// für nicht Express, Modal öffnen gibts 

			// diese Funktion/Schritt gibts nochmal für nicht Express zahlen (Modal öffnen) kassieren ca. zeile 2866 und express nach Zahlart ca. 1311
			if (bezahlenNurWennKundeAufgerufen.toLowerCase() == 'ja') {
				if ($("#bon_sum_div_customer_name").html().length == 0) {
					dialogContent = "<p>Zahlungsabschluss erfordert einen gültigen, aufgerufen und der Bezahlung zugegeordneten Kunden.</p>";
					openGeneralDialog('preisgruppenCustCheck', 'Kundenzuordnung fehlt', dialogContent, 'wrapper', false);

					// zahlung abbrechen
					return false;
				}
			}


			//var t0 = performance.now();
			// während dem Zahlungsvorgang sind die Bezahlbutton disabled !!!
			//		$("#zahlungAbgeschlBut, #zahlungAbegschlExprBut, #a4PrintButton").prop('disabled', true);
			// deckt alle funktions Button in der Verkaufsmaske ab, wenn Zahlung ausgeführt wird, kein zweiter click möglich
			$("#zahlungDisableImg").css({
				"display": "block"
			});



			var auftragsscheinBeiRechnung = "<?php echo strtolower(LIEFERSCHEINDRUCK_BEI_RECHNUNG); ?>";
			var currentOpenBon = $("#aktueller_bon").val();
			var lieferscheinPrintDisable = "<?php if (isset($_SESSION['lieferschein_print_disable']) && $_SESSION['lieferschein_print_disable'] > 0) {
												echo $_SESSION['lieferschein_print_disable'];
											} else echo false;
											?>";
			var openAbholDialog = true;
			if (lieferscheinPrintDisable == currentOpenBon) openAbholDialog = false;
			// wenn der offene bon aus lieferschein to open Bon kommt, wird nicht mehr ausgedruckt
			// auftragsLieferterminDrucken ist in global_functions ca 140 definiert
			//console.log(auftragsLieferterminDrucken+"\n"+auftragsscheinBeiRechnung+"\n"+abholscheinDialog+"\n"+openAbholDialog);
			if (auftragsLieferterminDrucken == 'ja' && auftragsscheinBeiRechnung == 'ja' && abholscheinDialog == false && openAbholDialog !== false) {
				openGeneralDialog('setLieferDatum', 'Liefer Datum für Auftragsschein eingeben' + printTarget, 'auftragsschein-§-' + printTarget, 'wrapper');
				return false;
				// wenn auftragsschein bei rech u liefertermin auf auftragsschein gesetzt ist wird der dialog aufgemacht und diese
				// funktion mit return gestopt, wird dann nach setzen von datum und ausdrucken diese funktion nochmals aufgerufen, dann mit
				// abholscheinDialog = true, somit geht es da drüber und der dialog bleibt geschlossen !!!			
			}

			if ($('#lieferDatumIpField').length > 0 && $('#disableRreferenceBonPrint').length > 0) {
				auftrDateToPrint = $('#lieferDatumIpField').val();
				if ($("#disableRreferenceBonPrint").prop("checked") == true) disableAuftrPrint = false;
				else disableAuftrPrint = true;
			} else {
				auftrDateToPrint = false;
				disableAuftrPrint = false;
			}

			gutscheinKarte = false;
			gutscheinKartenNr = false;
			gutscheinBetragAbbuchen = false;
			gutscheinKarteKundenId = false;
			gsArray = false;
			if ($("#gutscheinKarteIndicator").length > 0 && $("#gutscheinKarteIndicator").val() == '1' && $("#gutschein_nr_ip").val().length > 1) {
				gutscheinKarte = "1";
				gutscheinKartenNr = $("#gutschein_nr_ip").val();
				gutscheinBetragAbbuchen = $("#gutschein_nr_ip").prev().val();
				if ($("#gsCardMultiBookCounter").val() > 0) var gsArray = addNextCardNo('getArrayData', '', '');
				gutscheinKarteKundenId = $("#gutscheinKarteKundenIp").val();
			}

			var zahlungsArtFrei = false;
			var summeZahlungsart = $("#summe_zahlungsart").val().replace(",", ".") * 1;
			if ($("#zahlung_frei_betrag").length) {
				zahlungFreiBetrag = $("#zahlung_frei_betrag").val();
			} else zahlungFreiBetrag = 0;

			if ($('#bonContent .bon_steuer').length <= 0) {
				openGeneralDialog('zahlungAbgeschlBonLeer', 'Zahlung Abschließen Fehler', '<p>Offener Bon ist leer</p>', 'wrapper');
				return false;

			}


			if (isNaN(summeZahlungsart) == true) {
				openGeneralDialog('zahlungsabschluss', '', 'Zahlenformat Fehler !', 'wrapper');
				return false;
			}



			aktueller_bon = document.getElementById("aktueller_bon").value;

			var zahlungsart_name = new Array();
			var zahlungsart_value = new Array();
			var zahlungsart_id = new Array();

			$('[id^=zahlungsart]').each(function() {
				zahlungsart_name.push($(this).attr('id'));
				zahlungsart_value.push($(this).val());
				zahlungsart_id.push($(this).attr('name')); // im attribute name steht die zahlungsart Id aus der db, attribute id ist schon für die bezeichn verwendet
			});



			offenerBetrag = $("#offener_betrag").val();
			retourGeld = $("#rueck_zahlungsart").val();

			var printCustomerId = $('#printCustomerId').val();

			if (summeZahlungsart == 0 && zahlungFreiBetrag > 0) { // wenn zahlungsart FREI wird eine andere ajax funktion aufgerufen !!!!
				zahlungsArtFrei = true;
			}

			splitModeset = false;
			if (zahlungsArtFrei == true) {

				if ($("#bonSplitModal").css("display") == "block") {
					zahlungs_funktion_target = "zahlung_abgeschlossen_zahlungfrei";
					splitModeset = "active";


				} else {
					zahlungs_funktion_target = "zahlung_abgeschlossen_zahlungfrei";
				}

				$("#error_message").html("Zahlung(frei) ausführen");
			} else if ($("#bonSplitModal").css("display") == "block") {
				zahlungs_funktion_target = "zahlung_abgeschlossen_splitbon";
				$("#error_message").html("Zahlung ausführen");
			} else {
				zahlungs_funktion_target = "zahlung_abgeschlossen";
				$("#error_message").html("Zahlung ausführen");
			}

			modal.style.display = "none";
			zahlung_gedrueckt();

			//console.log("\nkassieren 1197 !zahlung abgeschl... js ajax function \n"+zahlTerminalData);
			// 2018-05-29 RFR: Falls gesetzt, dann vorher die Kassenlade öffnen
			
if (printTarget != 'expressZahlart')
{
			if (<?php if (defined('KASSENLADE_VORHER_OEFFNEN') && strtolower(KASSENLADE_VORHER_OEFFNEN) == 'ja') echo "true";
				else echo "false" ?>) {


				$.ajax({
					type: "POST",
					url: "display/open_drawer.php",
					dataType: "html",
					data: {
						funktion: zahlungs_funktion_target,
						zahlungsart_id: zahlungsart_id,
						zahlungsart_name: zahlungsart_name,
						zahlungsart_value: zahlungsart_value,
						aktueller_bon: aktueller_bon,
						printCustomerId: printCustomerId,
						splitMode: splitModeset,
						printTarget: printTarget,
						summeZahlungsart: summeZahlungsart,
						offenerBetrag: offenerBetrag,
						retourGeld: retourGeld,
						auftrDateToPrint: auftrDateToPrint,
						disableAuftrPrint: disableAuftrPrint,
						gutscheinKarte: gutscheinKarte,
						gutscheinKartenNr: gutscheinKartenNr,
						gutscheinBetragAbbuchen: gutscheinBetragAbbuchen,
						gsArray: gsArray,
						gutscheinKarteKundenId: gutscheinKarteKundenId,
						zahlTerminalData: zahlTerminalData
					},
					async: false,
					success: function(html) {


					}
				});


				//kassenladeOeffnen(zahlungsart_name,zahlungsart_id,zahlungsart_value);
				//if (zahlTerminalData==false) kassenladeOeffnen();
				//alert("Öffne Kassenlade");
				//kassenladeOeffnen();
			}
}
			$.ajax({
				type: "POST",
				url: "ajax_funktionen.php",
				dataType: "html",
				data: {
					funktion: zahlungs_funktion_target,
					zahlungsart_id: zahlungsart_id,
					zahlungsart_name: zahlungsart_name,
					zahlungsart_value: zahlungsart_value,
					aktueller_bon: aktueller_bon,
					printCustomerId: printCustomerId,
					splitMode: splitModeset,
					printTarget: printTarget,
					summeZahlungsart: summeZahlungsart,
					offenerBetrag: offenerBetrag,
					retourGeld: retourGeld,
					auftrDateToPrint: auftrDateToPrint,
					disableAuftrPrint: disableAuftrPrint,
					gutscheinKarte: gutscheinKarte,
					gutscheinKartenNr: gutscheinKartenNr,
					gutscheinBetragAbbuchen: gutscheinBetragAbbuchen,
					gsArray: gsArray,
					gutscheinKarteKundenId: gutscheinKarteKundenId,
					zahlTerminalData: zahlTerminalData
				},
				async: true,
				success: function(html) {

					$("#ausdruck").html(html);

					var printIndicator = document.getElementById("ausdruck").getElementsByTagName("printToBrowser");
					//	wenn a4 print to browser gesetzt ist kommt im ajax response ein "printToBrowser" mit dem inhalt der pdf filelinke zurück
					//   wird urspürünglich in der a4 pdf funktion (datenbank gespeichert) ausgelöst und in ajax_funktionen ca 100 gesetzt
					a4PrintToBrowser = false;
					if (printIndicator.length > 0) {
						a4PrintToBrowser = true;
						browserPrintTarget = printIndicator[0].childNodes[0].nodeValue;
					}

					stayOnPageKassieren = false;
					if (/depWriteToDatabaseError|Erfassungsprotokoll Fehler/.test(html)) {
						stayOnPageKassieren = true;
					}

					var abgeschlBonId = $("#abgeschlBonIdToPrint").val(); // leicht russischer ansatz, in der funktion bon ausdrucken, ajax_funktionen wird ein hidden feld angehängt.

					var printTargetPdf = "<?php echo strtolower(AUSDRUCK_RECHNUNGSBON_PDF); ?>";
					var printBonDisabled = "<?php echo strtolower(AUSDRUCK_RECHNUNGSBON_UNTERDRUECKEN); ?>";


					// hier werden die zahlung abschließen Button wieder enabled'
					//$("#zahlungAbgeschlBut, #zahlungAbgeschlExprBut, #a4PrintButton").prop('disabled', false);
					// funktions Button Abdeckung wegnehmen
					$("#zahlungDisableImg").css({
						"display": "none"
					});



					//			if(zahlungs_funktion_target != "zahlung_abgeschlossen_zahlungfrei" && printTargetPdf != 'ja' && printTarget != 'a4_ausdruck' && printBonDisabled != 'ja')


					if (printTargetPdf != 'ja' && printTarget != 'a4_ausdruck' && printBonDisabled != 'ja') {

						seite_drucken('invoicePrint', abgeschlBonId); // bon-pdf drucken wird in ajax funktion aufgerufen
					}

					if ($("#bonSplitModal").css("display") == "block") {
						loadBonForSplit();
						if ($("#splitBonOriginContent").html() == "") {
							openSplitBon(); // splitbon wird geschlossen wenn im original Bon leer gesplittet wurde und bon_anzeigen aufgerufen
							//bon_anzeigen();			// bon wir neu geladen, in diesem fall kommt dann der leere aktuelle warenkorb -> openSplitBon 
							if (autoLogoutNachBezahlen == 'ja' && retourgeldPopUp != 'ja') {
								window.location.href = 'user_logoff.php';
							} else if (stayOnPageKassieren == false && gastroVersion == 'ja' && retourgeldPopUp != 'ja' && moveToTische == 'ja') {
								window.location.href = 'tische.php';
								$("#customerOnBonModalField").css({
									"display": "none"
								});


								// das eventuell beim splitten abgedrehte kunden search div, wieder einblenden wenn splitten vorbei ist	
							}
						}
					} else {
						temporaeren_tisch_loeschen(aktueller_bon);
						$("#bonContent").html("");
						if (autoLogoutNachBezahlen == 'ja' && retourgeldPopUp != 'ja') {
							window.location.href = 'user_logoff.php';
						} else if (stayOnPageKassieren == false && gastroVersion == 'ja' && retourgeldPopUp != 'ja' && moveToTische == 'ja') {
							window.location.href = 'tische.php';
						} else {
							bon_anzeigen();
						}

					}
					$('[id^=zahlungsart]').each(function() {
						$(this).val("");
					});
					$('[id^=zahlart]').each(function() {
						$(this).val("");
					});




					$("#summe_zahlungsart, #summe_zahlungsartDisplay, #rueck_zahlungsart, #offener_betrag, #offener_betragDisplay, #zahlung_frei_betrag").val("");
					$("input[id^='zahlungsartGutschein'], #zahlungsartBar, .zahlenLineButDis").prop('disabled', false);
					// wenn gutschein modul aktive, bleibt gs preisfeld disabled
					if (gutscheinModulAktiv == 'ja' && $("#gutschein_nr_ip").prev().length) $("#gutschein_nr_ip").prev().prop('disabled', true);

					$("#a4PrintButton").css({
						"visibility": "visible"
					});



					if ($('#gsCardMultiBookCounter').length > 0) clearGutscheinkartenFields();
					if (a4PrintToBrowser == true) {
						window.open(browserPrintTarget, '_blank');
					}

					//var t1 = performance.now();
					//console.log("Call Zahlung abgeschlossen " + (t1 - t0)/1000 + " seconds.");
					//   kp -> let auf var geändert !!!

					// Synchronisieren nur wenn zurück zu Tische deaktiviert ist, ansonsten wird im tische.php synchronisiert!

					var checkVar = "<?php if (GASTRO_VERSION == "ja") echo GASTRO_VERSION; ?>";
					if (checkVar == "ja") {
						var checkVar = "<?php if (FUNKTION_GASTRO_MOVETO_TISCHE == "nein") echo FUNKTION_GASTRO_MOVETO_TISCHE; ?>";
						if (checkVar == "nein") {
							filialsystem_synchronisieren();
						}
					} else filialsystem_synchronisieren(); // Wenn Gastro deaktiviert, synchen
				}
			})
		}

		var gastroVersion; // initialisiere js variable für gastro

		$(document).ready(function() {
			$("#stueck").click(function() {
				document.getElementById("toggle").value = "stueck";
			});

			$("#preis").click(function() {
				document.getElementById("toggle").value = "preis";
			});

			// write Benutzer als "User Name" angemeldet in infomation field 
			//<span style='cursor:pointer; font-size:10px; font-weight:bold;' onclick='checkPrintSession()'>Check-X</span>

			//		$("#loginInfoDiv").html("Als: <span class='loginInfoUserTxt' ><?php echo $_SESSION['userName']; ?></span> angemeldet. <a class='logOffButton' href='user_logoff.php' > Abmelden </a>");
			$("#stueck").on("keypress", function(e) {
				if (e.which == 13) {
					sStueck = $("#preis").val();
					pPreis = $("#stueck").val();
					$("#preis").val(pPreis);
					$("#stueck").val(sStueck);
					// felder werden umgedreht preis<->stueck und ean ausgabe ausgelöst.
					eElem = document.getElementById("preis");
					check_ean('enterKey', eElem);
				}
			});
			$("#gutschein_nr_ip").on("keypress", function(e) {
				if (e.which == 13) {
					getCreditOfCardNo();

				}
			});
			$("#gutscheinKarteModalIp").on("keypress", function(e) {
				if (e.which == 13) {
					getGutscheincardDataAufladen($(this).val());
				}
			});


			// stelle gastro konstanten für javascript zur verfügung funktioniert im connect und global_functions.php nicht weil das xml (konfig gui mit dem echo davor nicht umgehen kann
			gastroVersion = "<?php echo strtolower(GASTRO_VERSION); ?>";
			warenkorbAblageVersion = "<?php echo strtolower(WARENKOERBE_ABLEGEN); ?>";
			beilagenKalkulation = "<?php echo strtolower(BEILAGEN_PREIS_BERECHNEN); ?>";
			moveToTische = "<?php echo strtolower(FUNKTION_GASTRO_MOVETO_TISCHE); ?>";
			invoicebonPdfPrint = "<?php echo strtolower(AUSDRUCK_RECHNUNGSBON_PDF); ?>";
			invoice_a4_PdfPrint = "<?php echo strtolower(AUSDRUCK_RECHNUNG_A4); ?>";
			supplyPdfPrint = "<?php echo strtolower(AUSDRUCK_BEREITSTELLUNGSBON_PDF); ?>";
			konfigAutoSelectVar = "<?php echo strtolower(FUNKTION_BONIEREN_AUTOMATISCH_SELEKTIEREN); ?>";
			numPadConfigHeight = "<?php echo ZIFFERN_CONTAINER_HOEHE; ?>";
			bonContainerConfigHeight = "<?php echo BON_CONTAINER_HOEHE; ?>";
			productContainerConfigHeight = "<?php echo PRODUKT_CONTAINER_HOEHE; ?>";
			steuerungConfigHeight = "<?php echo STEUERUNG_CONTAINER_HOEHE; ?>";
			ausdruckA4Download = "<?php echo strtolower(AUSDRUCK_A4_DOWNLOAD); ?>";
			gutscheinNrFocus = "<?php echo strtolower(GUTSCHEIN_NR_FOCUS); ?>";
			gutscheinPrefix = "<?php echo GS_PREFIX; ?>";
			gutscheinModulAktiv = "<?php echo strtolower(GUTSCHEIN_KARTE_FUNKTION); ?>";
			gutscheinLizenz = "<?php if (defined('GUTSCHEIN_LIZENZ') && strtolower(GUTSCHEIN_LIZENZ) == 'ja') echo strtolower(GUTSCHEIN_LIZENZ);
								else echo '';		?>";

			editModalFocus = "<?php echo strtolower(EDITMODAL_FOCUS); ?>";
			invoiceMultiPrint = "<?php echo strtolower(ANZAHL_BON_PRINTS); ?>";
			einzelpreisImBon = "<?php echo strtolower(EINZELPREIS_IM_BON_BRUTTO); ?>";
			retourgeldPopUp = "<?php echo strtolower(RETOURGELD_POPUP_ANZEIGEN); ?>";
			buttonColor = "<?php echo BUTTON_FARBE; ?>";
			bonLineDelUserLevel = "<?php echo strtolower(ENABLERKEY_BONZEILE_LOESCHEN); ?>";
			currentUserLevel = "<?php echo $_SESSION['userLevel']; ?>";
			bonLineDelUserLevelOnPrinted = "<?php echo strtolower(BONZEILE_LOESCHEN_ON_PRINTED); ?>";
			autoLogoutNachBezahlen = "<?php echo strtolower(LOGOUT_NACH_BEZAHLEN); ?>";
			enablerKeyBonSumme = "<?php echo ENABLERKEY_NEG_BONSUMME; ?>";


			// sonderpreis_en .. sonderPreisgruppenEnabled wurde weiter oben, ca Zeile 600 definiert, hier wären wir zu weit hinten  KPE Nov 2020

			kassaIp = "<?php echo getUserIp(); ?>";
			//zahlungsTerminalId="<?php //echo ZAHLUNGSTERM_ID; 
									?>";

			// getZahlungsTermId gibt einen string mit der term id und dem terminal Type zurück

			zahlungsTerminalData = "<?php echo get_my_bankomat_terminal_id(true); ?>";

			//console.log("zahlungs Terminal Id, kommt als Array -> "+zahlungsTerminalData);

		});
	</script>

	<?php


	if (!isset($_SESSION)) {
		session_start();
	}			# wenn kellnerschloss abgezogen wird wird AUCH eine session gesetzt, wenn der logout auf kassieren 
	# nicht mehr ausgeführt wird weil tische schon geladen dann löst die session das logout hier aus, gleiche funktion auch auf kassieren
	if (isset($_SESSION['autologout']) && $_SESSION['autologout'] == true) {
	?> <script>
			setTimeout(checkPendingRequest, 500);
		</script> <?php


				}
					?>


</head>

<body>
	<?php # print_r($_SESSION); 
	?>


	<div id="wrapper" class="wrapper">
		<div id="dialog-confirm"></div> <!-- Confirm Gesamten Bon Storn Dialog box (jquery ui dialog box)	-->
		<div id="customer-search"></div> <!-- Kunden der Rechnung zuordnen Dialog box (jquery ui dialog box)	-->
		<div id="generalDialog"></div> <!-- mehrfach verwendete Dialog box (jquery ui dialog box)	-->
		<div id="licenseViolationDialog"></div> <!-- Lizenz Verletzungs Dialog box, braucht eine eigene dialog function, sonst von retourgeld abgew (jquery ui dialog box)	-->

		<!--	<div id="lieferDatumDialog"  >
			<p>The textbox below should show the datepicker on focus, except for when the dialog opens.</p>
				Enter date: <input type="text" id="myDate" /></div>		 <!-- 	-->
		<?php ///// Kassierbox 
		?>


		<!-- The Modal -->




		<?php
		menue_anzeigen(true);
		if (defined('UHRZEIT_ANZEIGEN') &&  strtolower(UHRZEIT_ANZEIGEN) == 'ja') {
			// alle 10 sekunden die Zeit aktualisieren
			echo "	<script>
					updateClock( );
					setInterval(function () {
					updateClock( );
						}, 10000);
					</script>";
		}
		if (isset($_POST['targetTableIdField']) && $_POST['targetTableIdField'] > 0) {
			# die Target Id kommt vom form id 'moveTableGetTargetIdForm', aus tische.php 
		?>
			<style>
				.move_bon_modal {
					display: block;
				}
			</style>





			<script>
				$(function() {

					$("#moveTargetTable").val(<?php echo $_POST['targetTableIdField']; ?>);
					loadBonForMove('', <?php echo $_POST['targetTableIdField']; ?>);
				})
			</script>

		<?php
		}
		?>

		<div id="bonMoveModal" class="move_bon_modal">
			<div id="movebonInnerWrap">
				<div class="moveBonCloseDiv" onclick="closeMoveBonModal()">X</div>
				<input type="text" id="moveTargetTable" value="0" />
				<div id="moveBonContainer">
					<div id="moveBonOriginContainer">
						<div id="moveBonOriginHeader">
							<div class="bon_summe">Summe&nbsp;</div>
							<div class="bon_steuer">Steuer</div>


							<div class="bon_stk">Stk</div>
							<div class="bon_einzelpreis">Einzel</div>
							<div class="bon_name">&nbsp;Name</div>
							<div class="cclear"></div>

						</div>
						<div id="moveBonOriginContent">
						</div>
						<div class="splitBonSumDiv">
							<div class="splitBonSumTxt">Originalbon Summe:</div>
							<input id="move_bon_origin_sum_field" class="splitBonSumAmount schrift" type="text" value="0,00" disabled />
							<div class="cclear"></div>
						</div>

					</div>
					<div id="moveBonMoveContainer">
						<div id="moveBonContent">
						</div>
						<div class="moveBonSumDiv">
							<div class="splitBonSumTxt">Splitbon Summe:</div>
							<input id="move_bon_sum_field" class="splitBonSumAmount schrift" type="text" value="0,00" disabled />
						</div>
						<div class="cclear"></div>
					</div>
				</div>
				<div id="moveBonControlContainer">
					<button class="button steuerung_button move_steuerung_but_close orange" onclick="closeMoveBonModal()">X</button>
					<button class="button steuerung_button move_steuerung_but_all orange " onclick="funktionstaste_gedrueckt_movebon('All')">v</button>
					<button class="button steuerung_button split_steuerung_but_plus orange " onclick="funktionstaste_gedrueckt_movebon('+')">+</button>
					<button class="button steuerung_button split_steuerung_but_minus orange" onclick="funktionstaste_gedrueckt_movebon('-')">-</button>
					<button class="button steuerung_button split_steuerung_but orange" onclick="addToMoveBon('up')">&uArr;</button>
					<button class="button steuerung_button split_steuerung_but orange" onclick="addToMoveBon('down')">&dArr;</button>
					<button class="button steuerung_button move_steuerung_but_del orange" onclick="funktionstaste_gedrueckt_movebon('Del')"></button>
				</div>

				<div id="moveBonNumpadContainer" class="ziffernblock_move_modal">
					<?php if (isset($_SESSION['gastroTisch']) && $_SESSION['gastroTisch'] > 0 && isset($_POST['targetTableIdField']) && $_POST['targetTableIdField'] > 0) {
						echo "<h3 class='' >Aufgelistete Positionen von " . get_name_for_room($_SESSION['gastroTisch']) . "  
										auf " . get_name_for_room($_POST['targetTableIdField']) . " verschieben</h3>
										
										<button class='button orange' onclick=\"moveTotalTable(" . $_SESSION['gastroTisch'] . ", " . $_POST['targetTableIdField'] . ")\"   >Verschieben ausführen<button>";
					}
					?>


				</div>




				<div class="cclear"></div>
			</div>
		</div>


		<div id="bonSplitModal" class="split_bon_modal">

			<div id="splitbonInnerWrap">
				<div class="splitBonCloseDiv" onclick="openSplitBon()">X</div>
				<div id="splitBonContainer">
					<div id="splitBonOriginContainer">
						<div id="splitBonOriginHeader">
							<div id="bon_summe" class="bon_summe">Summe&nbsp;</div>
							<div id="bon_steuer" class="bon_steuer">Steuer</div>


							<div id="bon_stk" class="bon_stk">Stk</div>
							<div id="bon_einzelpreis" class="bon_einzelpreis">Einzel</div>
							<div id="bon_name" class="bon_name">&nbsp;Name</div>
							<div class="cclear"></div>
						</div>


						<div id="splitBonOriginContent">
						</div>
						<div class="splitBonSumDiv">
							<div class="splitBonSumTxt">Originalbon Summe:</div>
							<input id="split_bon_origin_sum_field" class="splitBonSumAmount schrift" type="text" value="0,00" disabled />
							<div class="cclear"></div>
						</div>
					</div>
					<div id="splitBonSplitContainer">
						<div id="splitBonContent">
						</div>
						<div class="splitBonSumDiv">
							<div class="splitBonSumTxt">Splitbon Summe:</div>
							<input id="split_bon_sum_field" class="splitBonSumAmount schrift" type="text" value="0,00" disabled />
						</div>
					</div>
				</div>

				<div id="splitBonControlContainer">
					<button class="button steuerung_button split_steuerung_but_close orange" onclick="openSplitBon()">X</button>
					<button class="button steuerung_button split_steuerung_but_plus orange " onclick="funktionstaste_gedrueckt_splitbon('+')">+</button>
					<button class="button steuerung_button split_steuerung_but_minus orange" onclick="funktionstaste_gedrueckt_splitbon('-')">-</button>
					<button id="moveToTableDetailBut" class="button steuerung_button split_steuerung_but_move orange" onclick="moveToTableDetail()"></button>
					<button class="button steuerung_button split_steuerung_but orange" onclick="addToSplitBon('up')">&uArr;</button>
					<button class="button steuerung_button split_steuerung_but split_but_down orange" onclick="addToSplitBon('down')">&dArr;</button>

					<button class="button steuerung_button split_steuerung_but_del orange" onclick="funktionstaste_gedrueckt_splitbon('Del')"></button>
				</div>

				<div id="splitBonNumpadContainer" class="ziffernblock ziffernblock_split_modal">
					<?php
					echo '<input type="text" id="splitbon_stueck" ' . $mobile_input . ' class="schrift" onkeyup="formatNumberKp(this)" />';
					?>
					<?php ziffernblock_anzeigen("ziffer_gedrueckt_splitbon_modal(this.value)");
					if (defined('BEZAHLEN_BUTTON_TEXT') && strlen(BEZAHLEN_BUTTON_TEXT) > 0) {
						$bezTxtSp = BEZAHLEN_BUTTON_TEXT;
					} else $bezTxtSp = '=';
					echo "<input type='button'  id='kassieren_splitbon' class='button ziffernblock_button orange' value='" . $bezTxtSp . "' onclick='splitbon_bezahlen()' />";
					?>
					<div class="cclear"></div>


				</div>


				<input id="splitLastSelectLine" type="hidden" value="" />
				<input id="numPadStatus" type="hidden" value="" />

				<div class="cclear"></div>
				<div id="splitbonMessageDiv"></div>

			</div>
		</div>



		<div id="zahlterminalModal" class="modalTop">
			<?php
			//if (defined('EC_KARTE_ZAHLUNGSABBRUCH_ERLAUBEN') && strtolower(EC_KARTE_ZAHLUNGSABBRUCH_ERLAUBEN) !=="ja" ) 
			//{
			$disabled_ec = "style='display:none;'";
			//}
			//	else $disabled_ec=" ";


			?>
			<!-- Zahlungsterminal Modal content -->
			<div class="modal-content modal-content-zahlung">
				<?php
				echo '<span class="closeModal" ' . $disabled_ec . ' onclick="terminalZahlungAbbrechen(\'modalClose\')" >×</span>';
				?>
				<div class="modal-body">
					<h2 class="schrift" style="font-size:1.3em !important; text-align:center;">Zahlungs Terminal Kommunikation</h2>
					<div class='payTerminalcommunication'>

						<!--<input class="payTerminalBetragField schrift" type="text" id="payTerminalModalBetrag" disabled />
								<label class="payTerminalBetragLabel" for="payTerminalModalBetrag">Betrag:</label>
							<input class="payTerminalZahlartField schrift" type="text" id="payTerminalModalZahlart" disabled />
								<label class="payTerminalBetragLabel" for="payTerminalModalZahlart">Zahlungsart:</label>-->
						<div>
							<label style="width:25%; height:auto; min-height:24px; line-height:1.2em; 
							padding:3px 5px; color:#000; background:transparent; font-weight:bold; border:none;	" class="schrift" for="payTerminalModalZahlart">Zahlungsart:</label>
							<input style=" border:none;width:25%; height:auto; line-height:1.2em; 
							padding:3px 5px; color:#000;font-weight:bold; margin-right:3%;	" class=" schrift" type="text" id="payTerminalModalZahlart" disabled />
						</div>
						<div>
							<label style="width:25%; height:auto; min-height:24px; line-height:1.2em; 
							padding:3px 5px; color:#000; background:transparent; font-weight:bold; border:none;	" class="schrift" for="payTerminalModalBetrag">Betrag:</label>
							<input style=" border:none;width:25%; height:auto; line-height:1.2em; 
							padding:3px 5px; color:#000;font-weight:bold; margin-right:3%;	" class=" schrift" type="text" id="payTerminalModalBetrag" disabled />
						</div>

						<div class="cclear"></div>
						<div id='payTerminalMsgDiv'>&nbsp;</div>
						<div>
							<?php
							echo '<button class="button_none_float_ec button_med_modalR orange" id="ec_abbruch" ' . $disabled_ec . ' onclick="terminalZahlungAbbrechen(\'paymentAbbruch\')" >Abbrechen</button>';
							// raufkopiert: <button class="button_none_float button_med_modalR orange" onclick="terminalZahlungAbbrechen('paymentAbbruch')" >Abbrechen</button>
							?>

							<button id="zahlterminalReConnect" class="button_none_float button_med_modalR orange" style="display:none;" onclick="zahlterminalVerbinden('', '', 'reconnect')">Erneut Verbinden</button>
						</div>
						<div class="cclear"></div>
						<br />




					</div>
					<hr />
					<div class="cclear"></div>
					<iframe id="loadKarte"></iframe>
					<?php // <div id="zahlTermTestMsg">dddddddddd</div> 
					?>



				</div>
			</div>
		</div>

		<div id="kassieren_id" class="modal">

			<!-- Zahlung Modal content -->
			<div class="modal-content modal-content-zahlung">
				<span class="closeModal" id="closePaymentModal" onclick="zahlung_abbrechen()">×</span>
				<div class="modal-body">
					<div id='searchResultDiv'></div>
					<div class='zahlen_top schrift'>
						<div id="customerOnBonModalField" class="customerOnBonModalField">

							<?php

							if (defined('KUNDEN_ZUORDNEN_BEZAHLMODAL') &&  strtolower(KUNDEN_ZUORDNEN_BEZAHLMODAL) == 'ja') {
								echo "	<div class='kundensearch_header schrift'>Kunde auf Rechnung</div>
										<input type='text' class='kundenSearchModalField' id='kundenSearchModalField' 
												onkeyup=\"searchCustomer(this.value, 'rechnungsModal')\" placeholder='Suchbegriff' />
											<input type='button' class='modalClearCustomerBut orange' value='entfernen' onclick=\"clearSelectedCustomer('rechnungsModal', 'dDelete')\" />";
							}
							?>
							<div id="kundenNameFeld" class="cclear"></div>
						</div>


						<div class="zahlenLineDivTop ">


							<div class='zahlungsart_header_top schrift'>
								<div class='zahlungsart_header_top_txt_l schrift'>Zahlbetrag</div>
								<div class='zahlungsart_header_top_txt_r schrift'>EUR</div>
							</div>
							<div class="zahlungsart_header_top_input_div">
								<input style='display:none;' type='text' class='schrift' id='zahlbetrag' value='0' disabled />
								<input type='text' class='schrift' id='zahlbetragDisplay' value='0' disabled />

							</div>
							<div class="cclear"></div>
						</div>

						<div class="zahlenLineDiv">

							<div class='zahlungsart_header_top schrift'>
								<div class='zahlungsart_header_top_txt_l schrift'>Offen</div>
								<div class='zahlungsart_header_top_txt_r schrift'>EUR</div>
							</div>
							<div class="zahlungsart_header_top_input_div">
								<input style='display:none;' type='text' class='schrift' id='offener_betrag' value='0' disabled />
								<input type='text' class='schrift' id='offener_betragDisplay' value='0' disabled />

							</div>
							<div class="cclear"></div>
						</div>
						<hr class="cclear">

					</div>
					<div class='zahlen_mitte schrift'>
						<?php

						echo "<input type='text' hidden id='zahlungsTerminalAbfrageIndic' class='floatR' value='0' />";

						# checken auf Gutschein Zusatzmodul freigegeben
						# die konstante GUTSCHEIN_LIZENZ kommt aus konf..sitpos (Lizenzmodul) GUTSCHEIN_KARTE_FUNKTION wird in Konfig gesetzt
						$gutscheinModul = false;
						if (defined('GUTSCHEIN_LIZENZ') && strtolower(GUTSCHEIN_LIZENZ) == 'ja' && defined('GUTSCHEIN_KARTE_FUNKTION') && strtolower(GUTSCHEIN_KARTE_FUNKTION) == 'ja')
							$gutscheinModul = true;

						$zahlungsartenAnzeigen = "";

						echo "<div class=zahlen_body_zahlungsarten>";
						$sql = "select id, name, standard, preiseingabe, karten_terminal AS terminal, gs_zahlung from zahlungsart WHERE sichtbar=true ORDER by reihenfolge ASC";
						$sql_zahlungsart = mysql_query($sql);
						if (!$sql_zahlungsart) {
							echo "SQL Fehler: " . mysql_error();
							exit(1);
						}
						$zahlArten = array();
						while ($row_zahlungsart = mysql_fetch_assoc($sql_zahlungsart)) {
							# wird für Zahlung ändern verwendet
							array_push($zahlArten, $row_zahlungsart['name']);
							if ($row_zahlungsart['standard']) {
								$focus = " focus_zahlung";
								echo "<input type='text' id='aktive_zahlungsart' hidden disabled value='zahlungsart" . $row_zahlungsart['name'] . "' >";
								// welches Zahlungsart ist gerade aktiv
								echo "<input type='text' id='standard_zahlungsart' hidden disabled value='zahlungsart" . $row_zahlungsart['name'] . "' >";
								// welches Zahlungsart ist die standard Zahlungsart
							} else $focus = "";
							$restzahlung_button = "";
							if ($row_zahlungsart['preiseingabe']) {
								$disabled = "";
								$restZahlungsEingabeModus = true;
							} else {
								$disabled = " disabled ";
								$restZahlungsEingabeModus = false;
								$restzahlung_button = "<input type='button' class='button_zahlen zahlenLineButton orange zahlenLineButDis' value='zahlen' 
									onclick='restzahlung_angeklickt(\"" . $row_zahlungsart['name'] . "\", \"" . $row_zahlungsart['terminal'] . "\")'/>";
							}
							/*
						<input type='text' style='width:75px'  class='zahlungsart_geld schrift".$focus."'  
											id='zahlungsart".$row_zahlungsart['name']."Display' ".$mobile_input." disabled value='' />
						
						*/
							if ($gutscheinModul == true && $row_zahlungsart['gs_zahlung'] == 1) {
								echo "<div class='ganze_zeile'>									
									<div class='zahlungsart_headerGs schrift'>" . $row_zahlungsart['name'] . "</div>
									<div>
										<button class='button_none_float orange addNextCardBut' onclick=\"addNextCardNo('add', '', '')\" >+</button>
										
										<input type='text' id='gsCardMultiBookCounter' disabled value='0' />
										<input type='text'  class='zahlungsart_geld schrift" . $focus . "'  
											id='gsZahlungDisplay' " . $mobile_input . " disabled value='' />
										
										<input type='text'  style='display:none;' class='zahlungsart_geld schrift" . $focus . "'  
											id='zahlungsart" . $row_zahlungsart['name'] . "' " . $mobile_input . " disabled value='' 
											onclick='zahlung_angeklickt(this)' onkeyup='zahlung_gedrueckt(), formatNumberKp(this)' />
										
										<input type='text' id='gutschein_nr_ip' class='schrift' onclick='zahlung_angeklickt(this)' />
										<input type='hidden' id='gutscheinKarteIndicator' value='0' />
										<input type='hidden' id='gutscheinkarteRestbetrag' value='' />
										<input type='hidden' id='gutscheinKarteKundenIp' value='0' />
									</div>
								</div>";
								// focus wird beim "=" click auf daskarten nr Eingabe Feld gesetzt

							} else {

								$restZahStyleDispl = false;
								$restZahStyleField = false;
								if ($restZahlungsEingabeModus == true) {
									$restZahStyleDispl = "style='display:none;'";
									$restZahStyleField = "";
								} else if ($restZahlungsEingabeModus == false) {
									$restZahStyleDispl = "";
									$restZahStyleField = "style='display:none;'";
								}
								# stand im display Field
								#	onclick='zahlung_angeklickt(this)' 
								#	onkeyup='zahlung_eintragen(\"zahlungsart".$row_zahlungsart['name']."\", this.value, this.id), formatNumberKp(this)'

								/*echo ("<div>");
								echo '-->'.$restzahlung_button.'<br>';
								echo '-->'.$restZahStyleDispl.'<br>';
								echo '-->'.$row_zahlungsart['name'].'<br>';
								echo '-->'.$mobile_input.'<br>';
								echo '-->'.$restZahStyleField.'<br>';
								echo ("</div>");*/

								echo "<div class='ganze_zeile'>
							
							<div class='zahlungsart_header schrift'>" . $row_zahlungsart['name'] . "</div>";
								//	if (preg_match('/Gutschein Ein/',$row_zahlungsart['name']))	$row_zahlungsart['name'] = "GutscheinEinloesen";
								echo "<div> " . $restzahlung_button . "
										<input " . $restZahStyleDispl . " type='text' class='zahlungsart_geld schrift" . $focus . "' 
											id='zahlart" . $row_zahlungsart['name'] . "Display' " . $mobile_input . " " . $disabled . " value='' /> 
										<input " . $restZahStyleField . " type='text' class='zahlungsart_geld schrift" . $focus . "' 
											id='zahlungsart" . $row_zahlungsart['name'] . "' " . $mobile_input . " " . $disabled . " value='' 
											onclick='zahlung_angeklickt(this)' onkeyup='zahlung_gedrueckt(), formatNumberKp(this)'
											name='" . $row_zahlungsart['id'] . "' />
										</div>
							</div>";
							}
						}

						if (strtolower(ZAHLUNGSART_FREI) == 'ja') {
							echo "	<div class='ganze_zeile'>
										<div class='zahlungsart_header schrift'>Zahlung Frei</div>
									<div> 
										<input type='button' class='button_zahlen zahlenLineButton orange' value='Frei' onclick='restzahlung_frei(\"zahlungFrei\")'/>
										<input type='text' class='zahlungsart_geld schrift' id='zahlung_frei_betrag' value='' disabled text-align:right;'>
									</div>
								</div>";
						}

						echo "<div class='ganze_zeile'>
						<div class='zahlungsart_header schrift'>Gegeben</div>		
							<div>
								<input style='display:none;' type='text' class='zahlungsart_geld schrift' id='summe_zahlungsart' disabled text-align:right;'>
								<input type='text' class='zahlungsart_geld schrift' id='summe_zahlungsartDisplay' disabled text-align:right;'>
							</div>
						</div>";
						echo "<div class='ganze_zeile'>
						<div class='zahlungsart_header schrift'>R&uuml;ckgeld</div>
						<div> <input type='text' class='zahlungsart_geld schrift' id='rueck_zahlungsart' disabled text-align:right;'></div>
						</div>";

						echo "</div>";

						if ($gutscheinModul == true) $ziffernBlockCall = 'kassierenGutschModul';
						else $ziffernBlockCall = false;

						echo "<div class=zahlen_body_ziffernblock>";
						ziffernblock_anzeigen("zahlung_ziffer_gedrueckt(this.value)", $ziffernBlockCall);
						echo "<div clss='cclear'></div></div>";

						if ((defined('A4_DRUCKER_ID') && A4_DRUCKER_ID > 0 || (defined('AUSDRUCK_A4_DOWNLOAD')
								&& strtolower(AUSDRUCK_A4_DOWNLOAD) == 'ja')) && defined('BASIS_LIZENZ_VORHANDEN')
							&& strtolower(BASIS_LIZENZ_VORHANDEN) == 'ja'
						) {

							$zahlungButton = "<button id='a4PrintButton' type='button'  class='button_none_float button_med_modalR orange' 
												onclick=\"zahlung_abgeschlossen('a4_ausdruck')\">OK A4</button>
									<button id='zahlungAbgeschlBut' type='button'  class='button_none_float button_med_modalR orange' 
												onclick=\"zahlung_abgeschlossen('')\">OK</button>
									<button type='button'  class='button_none_float button_med_modalR orange' 
										onclick='zahlung_abbrechen()' >Abbrechen</button>";
						} else $zahlungButton = "<button id='zahlungAbgeschlBut' type='button'  class='button_none_float button_gross_modalL orange' 
											onclick=\"zahlung_abgeschlossen('')\">OK</button>
									<button type='button'  class='button_none_float button_gross_modalR orange' 
										onclick='zahlung_abbrechen()' >Abbrechen</button>";


						?>
					</div>
					<div class="cclear"></div>
					<div class="zahlen_body_button_div">
						<?php echo $zahlungButton;
						echo "<script> elem=window.parent.document.getElementById('ec_abbruch');
					elem.style.display='none';</script>"; ?>
						<div class="cclear"></div>
						<button id='getCardRestvalBut' class='button_none_float orange getCardRestvalBut' onclick='getKartenGuthaben()' />GS Rest</button>
						<p id="zahlenModalInfoP"></p>
						<div class="cclear"></div>

					</div>
					<div class="cclear"></div>

				</div>

			</div>



		</div>

		<!--   Ende Modal kassieren -->

		<div id="gutscheinkarteModal" class="gutschein_karte_modal">

			<!-- Gutschein bearbeiten Modal content -->
			<div class="modal-content">
				<span class="closeModal" id="closePaymentModalGs" onclick="closeGutscheinModal()">×</span>
				<div class="modal-body">
					<div id='searchResultGutscheinDiv'></div>
					<div class='gutscheinModalTop schrift'>
						<p style="text-align:center; font-size:1.3em; font-weight:bold; padding:.5% 0; margin:0 0 2% 0; ">Gutschein Karten bearbeiten</p>

					</div>
					<div class="gutscheinModalDivLeft">
						<div class="gutscheinModalTxtLeft">Kunden Karte Nr. eingeben: </div>
						<input type="text" id="gutscheinKarteModalIp" onclick="setActiveGutschModalField(this.id)" />
						<br />
						<button class="button_none_float orange" id="cardNoCreateBut" onclick="gsCardNoCreate()">Karten Nr. erstellen</button>
						<div class="cclear"></div>
						<div class="gutscheinModalTxtLeft">Betrag vorhanden: </div><input disabled type="text" id="gutscheinKarteValueExist" />
						<div class="cclear"></div>
						<div class="gutscheinModalTxtLeft">Betrag aufladen: </div>
						<input onkeyup="formatNumberKp(this)" onclick="setActiveGutschModalField(this.id)" type="text" id="gutscheinKarteValueToLoad" />
						<div class="cclear"></div>
						<div class="gutscheinModalTxtLeft2">Kommentar: </div>
						<input onclick="setActiveGutschModalField(this.id)" type="text" id="gutscheinKarteKommentar" />
						<div class="cclear"></div>

						<div class="gutscheinModalOptionLineDiv">
							<div class="gutscheinModalTxtLeft">Ausgabesart: </div>
							<select id="gsVerkaufsArt">
								<option class='' name='gsVerkauf' selected>Gutschein Verkauf</option>
								<option class='' name='gsKostenlos'>Gutschein Spende/kostenlos</option>
							</select>
							<div class="cclear"></div>
						</div>
						<?php while ($row_zahlungsart = mysql_fetch_array($sql_zahlungsart)) {
							#echo "zzz<br />";
						}
						?>
						<div class="gutscheinModalOptionLineDiv">
							<div class="gutscheinModalTxtLeft">Zahlungsart: </div>
							<select id="gsZahlungsArt">
								<?php

								$zZahlungsart = mysql_query("SELECT id, Name, standard, preiseingabe FROM zahlungsart WHERE sichtbar=1 ORDER by reihenfolge ASC");

								while ($gsZahlungsart = mysql_fetch_array($zZahlungsart)) {
									$sSelected = '';
									if ($gsZahlungsart['standard'] == 1) $sSelected = 'selected';
									echo "<option id='" . $gsZahlungsart['Name'] . "' class='' name='gsVerkauf' " . $sSelected . "  >" . $gsZahlungsart['Name'] . "</option>";
								}
								?>
							</select>
							<div class="cclear"></div>
						</div>
						<div class="gutscheinModalTxtLeft">Kunde: </div>
						<div class="cclear"></div>
						<p id="selectedCustGutschModal"></p><input style="width:3%;" type="text" hidden id="gutscheinKarteCustId" />
						<div class="cclear"></div>
						<div class="gutscheinModalTxtLeft">Kunden auswählen:</div>
						<input type='text' class='floatL' id='kundenSearchGutscheinModalField' onkeyup='searchCustomer(this.value, "gutscheinModal")' placeholder='Suchbegriff' />
						<div class="cclear"></div>
					</div>
					<div class="gutscheinModalDivRight">
						<?php ziffernblock_anzeigen("ziffer_gedrueckt_gutscheinmodal(this.value)", "gutscheinModal"); 				?>
						<input type="text" id="gutschModalFocusIndicator" hidden value="" />
					</div>
					<div class="cclear"></div>
					<div class="gutscheinModalDivBottom">
						<button class="button_none_float gutscheinModalBut orange displayNone" id='gsKarteAufladenBut' onclick="loadKundenKarte('bestehendeAufladen')">Karte Aufladen</button>
						<button class="button_none_float gutscheinModalBut orange displayNone" id='gsKarteAnlegenBut' onclick="loadKundenKarte('karteAnlegen')">Karte Anlegen</button>
						<button class="button_none_float gutscheinModalBut orange displayNone" id='gsKartePrintBut' onclick="loadKundenKarte('kartePrint', '')">Karte Drucken</button>
						<button class="button_none_float gutscheinModalBut orange displayNone" id='gsKarteSperrenBut' onclick="loadKundenKarte('karteSperren')">Karte Sperren</button>
						<button class="button_none_float gutscheinModalBut orange displayNone" style="width:auto; padding-left:1%; padding-right:1%;" id='gsKarteEntsperrenBut' onclick="loadKundenKarte('karteEntsperren')">Karten Sperre aufheben</button>
						<button class='button_none_float gutscheinModalBut orange displayNone' id='gsKarteClearCustfieldBut' onclick="clearSelectedCustomer('gutscheinModal', 'deleteCustOnCard')">Kunde entfernen</button>
						<button class='button_none_float gutscheinModalBut orange displayNone' id='gsSaveTotalBut' onclick="loadKundenKarte('dataSaveUpdate', '')">Speichern</button>
						<div class="cclear"></div>
					</div>
					<p id="gutscheinModalResponseTxt"></p>

				</div>
			</div>
		</div>
		<!--   Ende Modal Gutscheine -->
		<!-- Beginn Bon Zusatztxt Modal -->

		<?php

		$bonFixTxtBut = "";
		//	if(defined('BON_ZUSATZ_FIX_TXT_BUTTON') && strtolower(BON_ZUSATZ_FIX_TXT_BUTTON) == 'ja'){

		$butQl = mysql_query("SELECT id, name, content, plus_minuten FROM bon_add_fixtxt ORDER BY name");
		$numBut = mysql_num_rows($butQl);
		$sTyle = "";

		if ($numBut > 10) {
			$sTyle = "style='width:98%'";
		}


		$bonFixTxtBut = "<div id='bonFixTxtButtonDiv' " . $sTyle . ">";

		while ($txtButton = mysql_fetch_array($butQl)) {
			$cContent = $txtButton['content'];
			$tTime = $txtButton['plus_minuten'];

			if ($tTime > 0) {
				#$tTime='Rechnung';
				$tTimeTxt = date("H:i", strtotime("+" . $tTime . " minutes"));
			} else $tTimeTxt = false;

			$bonFixTxtBut .= "<button id='txtButId" . $txtButton['id'] . "' class='button_none_float orange addBonTxtBut' 
							onclick=\"insertBonAddTxt(" . $txtButton['id'] . ", '" . $cContent . "', '" . $tTimeTxt . "')\"    >" . $txtButton['name'] . "/" . $txtButton['plus_minuten'] . " </button>";
		}

		$bonFixTxtBut .= "</div>";
		//	}


		?>



		<div id="bonZusatzTxtModal" class="modal">
			<div class="modal-content">
				<div class="modal-body">
					<span class="close_editieren_gastro" onclick="openAddTxtModal('cClose')">×</span>
					<h2 class='bonZusatzTxtModalH2'>Zusatz Text auf Bon vermerken</h2>
					<div class="bonZusatzTxtModalDiv">
						<textarea id="bonZusatzTxtarea">


					</textarea>
						<div id="bonZusatzTxtDiv" style="border:blue 2px solid;"></div>
						<div style="position:relative; width:75%; margin:0 auto; border:green solid 1px;">
							<button onclick="bonZusatzTxtSet()" style="float:left; margin-left:5%;" class="button button_gross orange zusatztTxtSetBut">Speichern</button>
							<button onclick="bonZusatzTxtSet('dDelete')" style="float:right; margin-right:5%;" class="button button_gross orange zusatztTxtSetBut">Löschen</button>

							<div class="cclear"></div>
						</div>
						<?php echo $bonFixTxtBut; ?>

						<div style="border:silver inset 1px;" id="bonZusatzTxtMsgField"></div>

					</div>

				</div>
			</div>
		</div>
		<!-- Ende Bon Zusatztxt Modal -->
		<!-- Beginn Zahlung ändern Modal -->
		<div id="zahlungAendernModal" class="modal">
			<div class="modal-content">
				<div class="modal-body">
					<span class="close_editieren_gastro" onclick="changePayment('cClose')">×</span>

					<h2 class='bonZusatzTxtModalH2'>Zahlung auf abgeschlossenen Bon ändern</h2>
					<div class="bonZusatzTxtModalDiv">
						<div class='zahlen_top schrift'></div>
						<div class="changeZahlungLinks floatL schrift">
							<input id="zahlungChangeBonId" placeholder="Bon Nr Eingeben" type="text" value="" />
							<br />
							<?php
							$changeZahlOption = "
									<select onchange='changeZahlGutscheinMsg(this.value)' id='changeZahlungSelect' class='changeZahlungSelect'>
									<option >Zahlungsart auswählen</option>";
							for ($i = 0; $i < count($zahlArten); $i++) {
								$changeZahlOption .= "<option value='" . $zahlArten[$i] . "' >" . $zahlArten[$i] . "</option>";
							}
							$changeZahlOption .= "</select>";
							echo $changeZahlOption;
							?>
							<br />
							<button class='button_med_changepay orange button' onclick='setPaymentChange()'>Änderung ausführen</button>
							<div class="cclear"></div>
							<div id="changeZahlungMsgBox"></div>
						</div>
						<div class="zahlen_body_ziffernblock">
							<?php
							ziffernblock_anzeigen("ziffer_gedrueckt_change_modal(this.value)", "zahlungChangeModul");
							?>
							<div class="cclear"></div>
						</div>
						<div class="cclear"></div>

					</div>

				</div>
			</div>
		</div>
		<!-- Ende Zahlung ändern Modal Modal -->


		<div id="produkt_editieren_id" class="modal">
			<!-- Modal editieren content -->
			<div class="modal-content">
				<div class="modal-body" id="modal_body_editieren">

					<?php
					$beilagenFelder = "";
					$beilagenDisplay = false;

					if (
						defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja' && strtolower(PRODUKT_TXT_BUTTON) != 'ja'
						&&  defined('BASIS_LIZENZ_VORHANDEN') && strtolower(BASIS_LIZENZ_VORHANDEN) == 'ja'
					) {

						# funktion liegt in global_functions_gastro.php
						$beilagenDisplay = true;
						$beilagenContent = readBeilagen();

						if ($beilagenContent[0] == true) {

							echo "<span class='close_editieren_gastro' onclick='editieren_abbrechen()'>×</span>
							<input type='hidden' id='gastroBeilagenStrechStatus' value='nNormal' />
							<input type='hidden' id='gastroBeilagenoperationsStatus' value='' />
							<div class='beilagenSteuerung'>
								<button onclick=\"beilagenOperation('minus')\"  id='beilagenEditButMinus' class='beilagenEditBut button'>&#8722;</button>
								<button onclick=\"beilagenOperation('plus')\" id='beilagenEditButPlus' class='beilagenEditBut button'>+</button>
								<button onclick=\"beilagenStrechCont('')\" class='beilagenStrechBut button orange'>&#8743;&#8744;</button>
							</div>
							<div id='beilagen_container' class='schrift'>					
								" . $beilagenContent[1] . "

							</div>
							
						
							<div class='cclear'></div>
							<hr />";

							$ganzeZeileClasse = "ganze_zeile_editmodal_gastro";

							// Beilagen plus und Minus anzeigen *******************************

							$beilagenFelder = "<div class='" . $ganzeZeileClasse . "'>
											<div class='zahlungsart_header schrift'>Beilagen Minus</div>
												<input type='text' class='beilagenAendernTxt schrift' " . $mobile_input . " id='beilagenTxtFieldMinus' 
													value='' onclick='setActiveEditField(this.id)'  /><br />
											</div>
											<div class='" . $ganzeZeileClasse . "'>
											<div class='zahlungsart_header schrift'>Beilagen Plus</div>
												<input type='text' class='beilagenAendernTxt schrift'  " . $mobile_input . " id='beilagenTxtFieldPlus' 
													value='' onclick='setActiveEditField(this.id)'  />
											</div>";
						} else {
							$ganzeZeileClasse = "ganze_zeile";
							$artikelArtenSelect = "";

							echo "<div class='zahlen_top_edith schrift'>
									<span class='close_editieren' onclick='editieren_abbrechen()'    >×</span>
									<br />
									<div class='zahlungsart_header schrift'>
									<div class='" . $ganzeZeileClasse . "' >Produkt editieren</div>
									</div>
								</div>
								<div class='ganze_zeile'><hr /></div>";
						}


						// Vorspeise Hauptspeiche Nachspeise *******************
						$artQl = mysql_query("SELECT * FROM artikel_art");
						$artikelArtSelect = "";
						while ($artRow = mysql_fetch_array($artQl)) {
							$artikelArtSelect .= "<button id=\"artikelArtSelBut" . $artRow['id'] . "\" class='schrift editierenArtikelArtSelBut' onclick='setArtikelArt(" . $artRow['id'] . ", this.id)' >" . $artRow['bezeichnung'] . "</button>";
						}
						$artikelArtSelect .= "<button id='artikelArtSelBut0' class='schrift editierenArtikelArtSelBut' onclick='setArtikelArt(" . 0 . ", this.id)' >-X-</button>";

						$artikelArtenSelect = "<div id='artikelArtSelectDiv'><input type='text' id='artSelectedVal' class='floatL' />" . $artikelArtSelect . "</div>
										<div class='cclear'></div>";
						// Ende Vorspeise Hauptspeiche Nachspeise *******************
					} else if (strtolower(PRODUKT_TXT_BUTTON) == 'ja') {
						$getButQl = mysql_query("SELECT id, name, content FROM product_add_txt");
						$addTxtButtons = "";
						while ($getButRow = mysql_fetch_array($getButQl)) {
							$xContent = $getButRow['content'];
							#	$xContent=urlencode(htmlentities($xContent, ENT_COMPAT, 'UTF-8'));
							$xContent = base64_encode(htmlentities($getButRow['content'], ENT_COMPAT, 'UTF-8'));
							#	writeLog(basename( __FILE__)." ". __LINE__ , $xContent);
							$addTxtButtons .= '<button class="button_none_float orange addProdTxtBut" 
							onclick="addProdTxt(\'' . $xContent . '\')" >' . $getButRow["name"] . '</button>';
						}
						$artikelArtenSelect = "";
						$ganzeZeileClasse = "ganze_zeile";
						echo "<div class='zahlen_top_edith schrift'>
							<span class='close_editieren' onclick='editieren_abbrechen()'    >×</span>
							<br />
							<div class='zahlungsart_header schrift'>
							<div class='" . $ganzeZeileClasse . "' >Produkt editieren</div>
							</div>
						</div>
						<div class='ganze_zeile'><hr />
						" . $addTxtButtons . "
						</div>";
					} else {
						$artikelArtenSelect = "";
						$ganzeZeileClasse = "ganze_zeile";
						echo "<div class='zahlen_top_edith schrift'>
							<span class='close_editieren' onclick='editieren_abbrechen()'    >×</span>
							<br />
							<div class='zahlungsart_header schrift'>
							<div class='" . $ganzeZeileClasse . "' >Produkt editieren</div>
							</div>
						</div>
						<div class='ganze_zeile'><hr /></div>";
					}


					if (defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') {
						$hideLine = 'hidden';		#  noch abhängig von display beilagen container machen

					} else $hideLine = '';

					?>


					<div id='zahlen_mitte_edit' class='zahlen_mitte_edit schrift'>
						<?php
						echo "<div class='zahlen_body_zahlungsarten' id='editierenBodyMitteLeft' >";

						#	echo "<input type='text' id='aktive_zahlungsart' hidden disabled value='zahlungsart".$row_zahlungsart['name']."'>";   // welches Zahlungsart ist gerade aktiv
						#	echo "<input type='text' id='standard_zahlungsart' hidden disabled value='zahlungsart".$row_zahlungsart['name']."'>"; // welches Zahlungsart ist die standard Zahlungsart
						echo "<input type='text' id='activeEditField' hidden disabled value=''>";
						echo $artikelArtenSelect;
						echo $beilagenFelder;
						echo "<div class='" . $ganzeZeileClasse . " editStrechM'>";
						echo "<div class='zahlungsart_header schrift' onclick=\"resizeEditTexarea('bBack')\">Produktname</div>
							<input type='hidden' id='editierenTxareaStatus' value='' />";
						echo "<textarea onclick=\"resizeEditTexarea('uUp')\" rows='4' maxlength='255' id='editieren_produktname' ></textarea>";
						#	echo "<input type='text' class='zahlungsart_geld schrift' id='editieren_produktname' value='' onclick='setActiveEditField(this.id)' />";
						echo "</div>";

						echo "<div class='" . $ganzeZeileClasse . "' " . $hideLine . "  >";
						echo "<div class='zahlungsart_header schrift'>Menge</div>";
						echo "<input type='text' class='zahlungsart_geld schrift selectOnClick' id='editieren_menge' value='' 
									onclick='setActiveEditField(this.id)' onkeyup='editieren_stk_angeklickt(this)'/>";
						echo "</div>";



						echo "<div class='" . $ganzeZeileClasse . "' " . $hideLine . " >";
						echo "<div class='zahlungsart_header schrift'>Steuer</div>";
						echo "<input type='text' class='zahlungsart_geld schrift' id='editieren_steuer' value='' disabled />";
						echo "</div>";
						echo "<div class='" . $ganzeZeileClasse . "' " . $hideLine . " >";
						echo "<div class='zahlungsart_header schrift'>Preis Netto</div>";
						echo "<input type='text' class='zahlungsart_geld schrift selectOnClick'  " . $mobile_input . " id='editieren_netto' value='' onclick='setActiveEditField(this.id)' onkeyup='editieren_brutto_berechnen(this)' />";
						echo "</div>";

						echo "<div class='" . $ganzeZeileClasse . " editStrechM'>";
						echo "<div class='zahlungsart_header schrift'>Preis Brutto</div>";
						echo "<input type='text' class='zahlungsart_geld schrift selectOnClick' " . $mobile_input . " id='editieren_brutto' value='' 
							onclick='setActiveEditField(this.id)' onkeyup='editieren_netto_berechnen(this)' />";
						echo "</div>";
						echo "<div class='" . $ganzeZeileClasse . " editStrechM'>";
						echo "<div class='zahlungsart_header schrift'>Gesamtpreis</div>";
						echo "<input type='text' class='zahlungsart_geld schrift' id='editieren_gesamtpreis' value='' disabled />
							<input id='editierenMsgField' type='text' style='background:none; border:none; font-weight:bold font-size:.9em; color:#f00; 
								width:98%; line-height:1.4em; margin:2% 0 0 0;' value='' disabled	/>";
						echo "</div>";
						echo "</div>";

						# wenn beilagen tauschen preis freigeschalten dann kommen hier die Priesinformationsfelder
						# im style sektor visibility gesetzt
						if ($beilagenDisplay == true) {
							// Alex Beilagen Kalk
							echo "<div class='beilagenKalkulationInfoDiv'>
								<input style='width:5%;' type='hidden' id='beilagenSum' value='0' />
								 <label for='beilagenSumBruttoDisplay'>Beilagen Kalk.: </label>
									<input readonly class='schrift' style='width:15%; margin:0 .5%;'  type='text' id='beilagenSumBruttoDisplay' value='0' />
								<input style='width:5%;' type='hidden' id='beilagenSumBrutto' value='0' />
								<input type='hidden' id='beilagenProdInitialPreis' style='width:25%; border:#000 solid 1px; font-size:.85em;' z-index:9999 value='0' />
								<input type='hidden' id='basisPrGeaendertField' style='width:5%; border:#000 solid 1px; font-size:.85em;' value='0' />
								<input type='hidden' id='basisPrGeaendertAmount' style='width:9%; border:#000 solid 1px; font-size:.85em;' value='0' />
						
							</div>";
						}

						echo "<div class='zahlen_body_ziffernblock  editierenZiffernblock' >";
						ziffernblock_anzeigen("ziffer_gedrueckt_edit_modal(this.value)");
						echo "</div>
							<div class ='modal_editieren_button_div'>
								<button  class='button_none_float button_gross_edit_modalL orange' onclick='editieren_abgeschlossen()'>OK</button>
								<button class='button_none_float button_gross_edit_modalR orange' onclick='editieren_abbrechen()'>Abbrechen</button>
							</div>";

						echo "</div>
						<div class='cclear'></div>";

						?>



					</div>

				</div>

			</div>
			<!--	</div>    -->

			<!--   Ende Modal Produkt editieren ************************* > -->

			<!--   Modal Kombi Produkt editieren ************************* > -->
			<?php

			/*
				function kombi_produkte_beilagen_tauschen($produkt_parent_id=false)
				{
					$beilagenDisplay=false;
					if(defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja' && strtolower(PRODUKT_TXT_BUTTON) != 'ja' 
							&&  defined('BASIS_LIZENZ_VORHANDEN') && strtolower(BASIS_LIZENZ_VORHANDEN) == 'ja')
					{
						# funktion liegt in global_functions_gastro.php
						$beilagenDisplay=true;
						$beilagenContent=readBeilagen(false, false, 1, $produkt_parent_id);

						if($beilagenContent[0] == true){
							echo $beilagenContent[1];
						}
						
					}
				}
				
				function get_artikelarten($produkt_parent_id=false)
				{
					// Vorspeise Hauptspeiche Nachspeise *******************
					$artQl=mysql_query("SELECT * FROM artikel_art");
					$artikelArtSelect="";
					while($artRow=mysql_fetch_array($artQl))
					{
						$artikelArtSelect.="<button id=\"kombi_artikelArtSelBut".$artRow['id']."\" class='schrift editierenArtikelArtSelBut' onclick='setArtikelArt(".$artRow['id'].", this.id)' >".$artRow['bezeichnung']."</button>";
					}
					$artikelArtSelect.="<button id='artikelArtSelBut0' class='schrift editierenArtikelArtSelBut' onclick='setArtikelArt(". 0 .", this.id)' >-X-</button>";

					echo "<input type='text' id='artSelectedVal' class='floatL' />".$artikelArtSelect."";
					// Ende Vorspeise Hauptspeiche Nachspeise *******************
				}
				*/
			?>
			<div id="kombi_produkt_editieren_id" class="modal">
				<!-- Modal editieren content -->
				<div class="modal-content">
					<div class="modal-body" id="modal_body_editieren">
						<span class='close_editieren_gastro' onclick='kombi_produkt_editieren_id.style.display = "none";'>×</span>
						<div id='beilagen_container_kombi' class='schrift'>
							<?php
							//kombi_produkte_beilagen_tauschen();
							?>
						</div>
						<div class='cclear'></div>
						<hr />



						<div class='cclear'></div>
						<div id='zahlen_mitte_edit' class='zahlen_mitte_edit schrift'>
							<?php
							echo "<div class='zahlen_body_zahlungsarten' id='editierenBodyMitteLeft' >";
							// Div zum anzeigen der einzelenen Kombiprodukte
							echo "<div id='aendernKombiProdukt' class='ganze_zeile_editmodal_gastro' hidden></div>";
							echo "</div>";
							?>
							<div class='zahlen_body_ziffernblock  editierenZiffernblock'>
								<div style="height:45%" id='kombi_artikelArtSelectDiv'></div>
							</div>
							<div class='modal_editieren_button_div'>
								<button class='button_none_float button_gross_edit_modalL orange' onclick='kombi_produkt_editieren_id.style.display = "none";'>OK</button>
							</div>

						</div>




					</div>
				</div>
				<div class='cclear'></div>
			</div>

			<!-- </div>
		  </div>
		</div>    -->

			<!--   Ende Modal Kombi Produkt editieren ************************* > -->

			<div id="wrapper_2" class="wrapper_2">
				<?php
				$kassa_offen_id = ist_kassa_offen();
				if ($kassa_offen_id) {
					print_fehler("Kassa ist offen mit Sequenz: $kassa_offen_id");
				} else {
					print_fehler("Kassa ist nicht geöffnet, es kann nicht boniert werden");
					eroeffne_kassa();
					exit;
				}

				?>

				<div id="kategorien">
					<form action="">
						<?php
						# wenn es Product->ist_favorit gibt wird hier eine "wie Warengruppe" gebildet und als erstes angezeigt

						$favCategorie = "";
						$favoritenExists = false;

						$catFav = mysql_query("SELECT ID, name, printname FROM products WHERE ist_favorit = 1");
						if (mysql_num_rows($catFav) > 0) {
							$favoritenExists = true;

							$favCategorie = "<input type='button'  class='button kategorie_button orange' style='font-weight:bold; font-size:1.2em;' 
								value='Favoriten' onclick=\"produkte_anzeigen('0', 'isFavorit')\" />";
						}

						echo $favCategorie;


						$sql = "SELECT id, name, color, text_color FROM categories WHERE anzeigen = 1 AND (PARENTID IS NULL OR PARENTID='0') AND geloescht = 0 
							ORDER by anzeige_reihenfolge, name ASC";
						$sql_kategorien = mysql_query($sql);
						$erste_id_gefunden = false;
						$erste_id = "";
						if (!$sql_kategorien) {
							echo "SQL Fehler: " . mysql_error();
							exit(1);
						}

						if (mysql_num_rows($sql_kategorien) == 0) echo "<p style='width:90%; height:auto; font-size:1.2em; margin:3% auto; text-align:justify; white-space:wrap'	>
							Keine Warengruppen in der Datenbank gefunden.<br><br>Einträge prüfen !</p>";
						// Zeige die Kategorien an
						while ($row_kategorien = mysql_fetch_assoc($sql_kategorien)) {
							if (!$erste_id_gefunden) {
								$erste_id = $row_kategorien['id'];
								$erste_id_gefunden = true;
							}
							//echo mb_detect_encoding($row_kategorien['name']);

							echo "<input type='button'  class='button kategorie_button' 
									style='background-color:" . $row_kategorien['color'] . "; color:" . $row_kategorien['text_color'] . "' 
										value='" . $row_kategorien['name'] . "' onclick='produkte_anzeigen(" . $row_kategorien['id'] . ")'/>";
						}
						?>
					</form>
				</div>

				<?php



				if (isset($_SESSION['requested_resolution']) && ($_SESSION['requested_resolution'] == 'handy' || $_SESSION['requested_resolution'] == 'tablet')) {
					steuerung_anzeigen();
					echo "<div id='ziffernblock_reduziert'>
					<button type='button'  id='kassieren_reduziert_ziffernblock' class='button ziffernblock_button orange' onclick=\"$('#kassieren').click();\" value='=' >Kassieren</button>
				</div>";
				}

				# hier könnte eine steuerung_2_anzeigen() für zb fixbetrags-button herkommen (rechts vom Ziffernblock !!!

				$fixpriceContainer = "";

				if (
					is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_1)) || is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_2)) || is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_3))
					||	is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_4)) ||	is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_5))
				) {


					$fixPriceButtons = true;

					$fixPriceButContainerWidth = ceil((preg_replace('/%/', '', ZIFFERN_CONTAINER_BREITE) / 4) - 1);

					$fixpriceContainer .= "<div style='width:" . $fixPriceButContainerWidth . "%; height:" . ZIFFERN_CONTAINER_HOEHE . "; 
					 padding-top:2px; padding-right:2px; border:1px solid gray; border-right:none; float:right;' >";

					$fixpriceContainer .= "<input type='text' style=' position:relative; width:90%; height:22px; margin:.2% 0; border:inset .13em transparent;'>";
					if (is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_1))) {
						$fixpriceContainer .= "<input type='button'  class='button ziffernblock_button orange floatR' style='width:95%; margin:1px auto;' 
								value='€ " . number_format(FIXPRICE_BUTTON_1, 2, ",", "") . "' onclick='writeFixPrice(" . preg_replace('/,/', '.', FIXPRICE_BUTTON_1) . ")' />";
					}
					if (is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_2))) {
						$fixpriceContainer .= "<input type='button'  class='button ziffernblock_button orange floatR' style='width:95%; margin:1px 0;' 
								value='€ " . number_format(FIXPRICE_BUTTON_2, 2, ",", "") . "' onclick='writeFixPrice(" . preg_replace('/,/', '.', FIXPRICE_BUTTON_2) . ")' />";
					}
					if (is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_3))) {
						$insPrice3 =
							$fixpriceContainer .= "<input type='button'  class='button ziffernblock_button orange floatR' style='width:95%; margin:1px 0;' 
								value='€ " . number_format(FIXPRICE_BUTTON_3, 2, ",", "") . "' onclick='writeFixPrice(" . preg_replace('/,/', '.', FIXPRICE_BUTTON_3) . ")' />";
					}
					if (is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_4))) {
						$fixpriceContainer .= "<input type='button'  class='button ziffernblock_button orange floatR' style='width:95%; margin:1px 0;' 
								value='€ " . number_format(FIXPRICE_BUTTON_4, 2, ",", "") . "' onclick='writeFixPrice(" . preg_replace('/,/', '.', FIXPRICE_BUTTON_4) . ")' />";
					}
					if (is_numeric(preg_replace('/,/', '.', FIXPRICE_BUTTON_5))) {
						$fixpriceContainer .= "<input type='button'  class='button ziffernblock_button orange floatR' style='width:95%; margin:1px 0;' 
								value='€ " . number_format(FIXPRICE_BUTTON_5, 2, ",", "") . "' onclick='writeFixPrice(" . preg_replace('/,/', '.', FIXPRICE_BUTTON_5) . ")' />";
					}

					$fixpriceContainer .= "</div>";

					$fixpriceStyleWidth = ((ceil(ZIFFERN_CONTAINER_BREITE) / 4) * 3) . '%';
					echo $fixpriceContainer;
				} else {
					$fixPriceButtons = false;
					$fixpriceStyleWidth = '';
				}


				echo "<div id='ziffernblock' class='ziffernblock' style='width:" . $fixpriceStyleWidth . "' >";

				echo "<input type='text'  placeholder='EAN/Var. Preis o. Stk' id='preis' $mobile_input class='schrift' autofocus onkeyup='check_ean(event, this, this.value)' >
						<input type='text' placeholder='Stück' id='stueck' $mobile_input class='schrift' onkeyup='formatNumberKp(this, event)' >
							<p class='stueckTxt' ><b>x</b></p>";

				ziffernblock_anzeigen("ziffer_gedrueckt(this.value)", "bonieren");

				if (defined('BEZAHLEN_BUTTON_TEXT') && strlen(BEZAHLEN_BUTTON_TEXT) > 0) {
					$bezTxt = BEZAHLEN_BUTTON_TEXT;
				} else $bezTxt = '=';

				if (strtolower(WARENKOERBE_ABLEGEN) == 'ja') $aktuellerWk = $_SESSION['ablageWarenkorb'];
				else $aktuellerWk = $_SESSION['aktuellerWarenkorb'];

				echo "<input id='toggle' value='preis' type='hidden' disabled/>";
				echo "<input id='aktueller_bon'  value='" . $aktuellerWk . "' type='text' hidden disabled/>";
				echo "<button  id='kassieren' class='button ziffernblock_button orange' value='=' >" . $bezTxt . "</button>";

				echo "<div class='cclear'></div>
			</div>";

				if (!isset($_SESSION['requested_resolution']) || (isset($_SESSION['requested_resolution']) && $_SESSION['requested_resolution'] != 'handy' && $_SESSION['requested_resolution'] != 'tablet')) {
					steuerung_anzeigen();
				}


				?>


				<div id="bon" class="bon">
					<div id="bon_content_header_div">
						<div id="bon_summe" class="bon_summe">Summe&nbsp;</div>
						<div id="bon_steuer" class="bon_steuer">Steuer</div>


						<div id="bon_stk" class="bon_stk">Stk</div>
						<div id="bon_einzelpreis" class="bon_einzelpreis">Einzel</div>

						<div id="bon_nameHeader" style="">&nbsp;Name</div>
						<div class="cclear"></div>

					</div>
					<div id="bonContent">

					</div>
					<div class="cclear"></div>
					<div id="bon_content_sum_div">
						<div id="bon_sum_field" class="bon_summe_gesamtsumme"></div>
						<!--<div id="bon_steuer" class="bon_steuer schrift"></div>	-->
						<div id="bon_name" class="bon_name_gesamtsumme">Summe:</div>
						<div id="bon_sum_div_customer_name" class=""></div>
						<div id="bon_stk_field" class="bon_summe_gesamtsumme"></div>
						<div id="bon_num" class="bon_name_gesamtsumme">Stk:</div>

						<div class="cclear"></div>
					</div>
				</div>
				<script type="text/javascript">
					bon_anzeigen("");
				</script>



				<div id="produkte">

					<?php
					# favoriten erkennen und laden
					if ($favoritenExists == true) zeigeFavoritenProdukte();
					else if ($erste_id == true && $favoritenExists == false) zeige_produkte($erste_id);
					# alle user aus db lesen die schnellen user wechsel bekommen haben
					$userButs = "<a href='user_logoff.php'><button class='directUserChangActiveBut button_none_float orange floatL'>" . $_SESSION['userName'] . "</button></a>";
					$selQl = mysql_query("SELECT * FROM benutzer WHERE direkt_wechsel = 1 ORDER BY id DESC");
					while ($userRow = mysql_fetch_array($selQl)) {
						if ($_SESSION['userId'] == $userRow['id']) continue;
						$userButs .= "<button onclick=\"directChangeUser(" . $userRow['id'] . ")\" class='directUserChangeBut button_none_float orange'>" . $userRow['name'] . "</button>";
					}


					?>

				</div>
				<?php
				if ((defined('GASTRO_VERSION') && strtolower(GASTRO_VERSION) == 'ja') && (defined('SPEISEART_BUTTON_VK_MASKE') && strtolower(SPEISEART_BUTTON_VK_MASKE) == 'ja')) {

					$artQl = mysql_query("SELECT * FROM artikel_art");

					$artikelArtSelectVk = "";
					$numButs = mysql_num_rows($artQl);
					$butHight = 100 / ($numButs + 1);
					$butHight -= 2;   # für die Margin !

					while ($artRow = mysql_fetch_array($artQl)) {
						$artikelArtSelectVk .= "<button id=\"artikelArtSelButVk" . $artRow['id'] . "\" style=' position:relative; height:" . $butHight . "%;' 
										class='schrift editierenArtikelArtSelButVk' onclick='setArtikelArtVk(" . $artRow['id'] . ", this.id)' >" . $artRow['bezeichnung'] . "</button>";
					}

					$artikelArtSelectVk .= "<button id='artikelArtSelButVk0' style='height:" . $butHight . "%;' class='schrift editierenArtikelArtSelButVk' 
											onclick='setArtikelArtVk(0, this.id)' >-X-</button>";

					#	$('#artikelArtSelBut0').click()      die id -> artikelArtSelBut0

					#     $artikelArtSelect.="<button id=\"artikelArtSelBut".$artRow['id']."\" class='schrift editierenArtikelArtSelBut' onclick='setArtikelArt(".$artRow['id'].", this.id)' >".$artRow['bezeichnung']."</button>";


					echo "<div id='speiseartContainerVerkaufsMaske' style=''    >
						" . $artikelArtSelectVk . "
			
			
			
						</div>";
				}
				?>
				<!--<div class="cclear"></div>-->




				<!--   kp august 2020    vor-, haupt-, nach- ... Speisen Button auf verkaufsmaske erster ebene plazieren	-->




				<div id="messageDiv">
					<!--<div id="datetimeDiv" class="datetimeDiv" ><?php #echo $wd.' '.date('d m y - H:i '); 
																	?></div>-->

					<div id="loginInfoDiv" class="loginInfoDiv">
						<?php
						if (defined('TELEFON_ANRUFE_ANZEIGEN') && strtolower(TELEFON_ANRUFE_ANZEIGEN) === 'ja') {
							echo "	<script>
								setInterval(function () 
								{
									zeige_letzte_telefonanrufe_an();
								}, 3000);
								</script>";
							zeige_letzte_telefonanrufe_an();
						} else echo $userButs;

						?>


					</div>
					<div id="error_message" class="error_message"></div>
					<div class='cclear'></div>
				</div>

			</div>
		</div>
		<div id="ausdruck" class="ausdruck"></div>
		<script>
			// Get the modal
			var modal = document.getElementById('kassieren_id');

			// Get the button that opens the modal
			var btn = document.getElementById("kassieren");

			// Get the <span> element that closes the modal
			var span = document.getElementsByClassName("close")[0];

			function splitbon_bezahlen() {
				gesamt_zahlbetrag = $("#split_bon_sum_field").val();

				if (gesamt_zahlbetrag == '0,00') {
					openGeneralDialog('valueNullAlert', 'sITpos Dialog Box', '<p>ACHTUNG: Zahlbetrag ist 0 - mögliche Falschbuchung</p>', 'wrapper');
				} else {
					modal.style.display = "block";
					// Wenn es zum zweiten Mal aufgemacht wurde, könnte hier zahlung_abgeschlossen_ec sein - deswegen setzten!
					$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen('')");

					if (gutscheinNrFocus == 'ja') {
						$("#gutschein_nr_ip").focus();
						$("#aktive_zahlungsart").val('gutschein_nr_ip');
					} else {
						setTimeout(function() {
							$('.focus_zahlung').focus();
							$("#aktive_zahlungsart").val($("#standard_zahlungsart").val());
						}, 100);
					}

					$("#customerOnBonModalField").css({
						"display": "none"
					});


				}

			}
			// When the user clicks the button =     zahlung !!!, open the modal 
			btn.onclick = function() {

				// preigruppen. sondermarkt, soma ... relevant
				// diese Funktion/Schritt gibts nochmal für Express zahlen kassieren ca. zeile 1420
				if (bezahlenNurWennKundeAufgerufen.toLowerCase() == 'ja') {

					if ($("#bon_sum_div_customer_name").html().length == 0) {
						dialogContent = "<p>Zahlungsabschluss erfordert einen gültigen, aufgerufen und der Bezahlung zugegeordneten Kunden.</p>";
						openGeneralDialog('preisgruppenCustCheck', 'Kundenzuordnung fehlt', dialogContent, 'wrapper', false);

						return false;
					}
				}

				// Standardmässig soll nicht ec_karte verwendet werden, erst wenn es gedrückt wurde
				$("#zahlungAbgeschlBut").attr("onclick", "zahlung_abgeschlossen('')");
				$("#a4PrintButton").attr("onclick", "zahlung_abgeschlossen('a4_ausdruck')");
				
				gesamt_zahlbetrag = document.getElementById("zahlbetrag").value;
				//Gute Idee, geht aber nicht, weil eine Rücknahme mit Gutschein auch 0 ergeben könnte

				rr = false;
				if (gesamt_zahlbetrag.replace(",", ".") * 1 == 0) rr = "ist nullll";
				//console.log("bezahlen aufgerufen !! zeile 2864 kassieren.php zahlbetrag -> "+gesamt_zahlbetrag+" -- "+rr);

				//if(gesamt_zahlbetrag=='0,00'){
				if (gesamt_zahlbetrag.replace(",", ".") * 1 == 0) {
					openGeneralDialog('valueNullAlert', 'sITpos Dialog Box', '<p>ACHTUNG: Zahlbetrag ist 0 - mögliche Falschbuchung</p>', 'wrapper');
				} else if ((currentUserLevel < enablerKeyBonSumme) && $("#bon_sum_field").html().replace(",", ".") * 1 < 0) {
					dialogContent = "<p>Unerlaubter Zahlungsabschluss, Minus Bon Summe. </p>";
					openGeneralDialog('minusValueAlert', 'Unerlaubter Minus Betrag bei Zahlungsabschluss', dialogContent, 'wrapper');
				} else {
					modal.style.display = "block";
					if (gutscheinNrFocus == 'ja' && gutscheinModulAktiv == 'ja') {
						//console.log("bezahlen aufgerufen !!  gutschein aktive ");
						$("#gutschein_nr_ip").val('').focus();
						$("#aktive_zahlungsart").val('gutschein_nr_ip');
					} else {
						setTimeout(function() {
							//console.log("bezahlen aufgerufen !!  bezahlen fokus ");
							$('.focus_zahlung').focus();
							$("#aktive_zahlungsart").val($("#standard_zahlungsart").val());
						}, 100);
					}
				}

			}

			// gutscheinkarten funktionen
			function getCreditOfCardNo() {
				$("#zahlenModalInfoP").html("");
				openAmount = $("#offener_betrag").val(); // get open amount from input field
				gutscheinCardNo = $("#gutschein_nr_ip").val() + "";
				$("#gutscheinkarteRestbetrag").val(''); // wird hier auf leer gesetz, lönnte problem machen wenn ohne abbrechen od schließen eine andere karte
				$("#gutscheinKarteIndicator").val("0"); // eingelesen wird.	
				$.ajax({
					type: "POST",
					url: "ajax_funktionen_kp.php",
					dataType: "html",


					data: {
						functionKey: 'getCardCredit',
						gutscheinCardNo: gutscheinCardNo,
						openAmount: openAmount
					},


					async: true,
					success: function(ajaxResponse) {
						if (checkJson(ajaxResponse) == true) {
							respArray = JSON.parse(ajaxResponse); // array index 0 karten id in db gefunden, 1 betrag, 2 gesperrt (0 frei 1 gesp), 3 text 
							if (respArray[0] >= 1 && respArray[2] == 0) {
								bookingCounter = $("#gsCardMultiBookCounter").val();
								if (bookingCounter == 0) {
									$("#gutschein_nr_ip").prev().val(respArray[1]).focus(); // die id vom gutschein bezahlen ip Feld ist konfigurierbar, also nciht eindeutig deswegen -> prev
									isFirstBooking = true;
									varDisplVal = respArray[1] * 1;
									varDisplVal = varDisplVal.toFixed(2).replace(".", ",");
									$("#gsZahlungDisplay").val(varDisplVal);
								} else {
									pushMultiCardArray = addNextCardNo('pushMultibookArray', gutscheinCardNo, respArray[1]);
									if (pushMultiCardArray == true) {
										currValue = $("#gutschein_nr_ip").prev().val();
										sumValue = (currValue *= 1) + (respArray[1] *= 1);
										$("#gutschein_nr_ip").prev().val(sumValue.toFixed(8)).focus();
										$("#gsZahlungDisplay").val(sumValue.toFixed(2).replace(".", ","));
										bookingCounter++;
										$("#gsCardMultiBookCounter").val(bookingCounter);
										isFirstBooking = false;
									} else {
										$("#zahlenModalInfoP").html("Fehler, Karte schon in Verwendung");

										setTimeout(function() {
											$("#zahlenModalInfoP").html("")
										}, 5000);

										return false;
									}
								}
								var ze = jQuery.Event("keyup");
								ze.which = 13;
								$("#gutschein_nr_ip").prev().trigger(ze);
								$("#gutscheinKarteIndicator").val("1");
								$("#gutscheinkarteRestbetrag").val(respArray[4]);
								$("#gutscheinKarteKundenIp").val(respArray[6]);
								if (isFirstBooking == true) $(".getCardRestvalBut").css({
									"display": "block"
								});


								openVal = $("#offener_betrag").val().replace(",", ".");
								openVal *= 1;
								if (openVal > 0) {
									$(".addNextCardBut").css({
										"display": "block"
									});


									$("#gutschein_nr_ip, #offener_betrag").css({
										"color": "#c00",
										"font-weight": "bold"
									})



									$("#gutschein_nr_ip").before().css({
										"color": "#c00",
										"font-weight": "bold"
									});



								} else $(".addNextCardBut").css({
									"display": "none"
								});

								$("#gutschein_nr_ip").prop("disabled", true);
							} else if (respArray[0] >= 1 && respArray[2] == 1) { // karte gesperrt !!
								if ($("#gsCardMultiBookCounter").val() * 1 > 0) { // gesperrte karte wir als nicht erste im multi karten mod aufgerufen
									$("#zahlenModalInfoP").html("Karte gesperrt");

									setTimeout(function() {
										$("#zahlenModalInfoP").html("")
									}, 5000);

									return false;
								} else {
									$("#gutschein_nr_ip").prev().val(0.00);
									var ze = jQuery.Event("keyup");

									ze.which = 13;
									$("#gutschein_nr_ip").prev().trigger(ze);
									$("#gutschein_nr_ip").val("").focus();
									$("#gutscheinKarteIndicator").val("0");
									$("#gutscheinkarteRestbetrag").val(respArray[4]);
									$(".getCardRestvalBut").css({
										"display": "block"
									});


									$(".addNextCardBut").css({
										"display": "none"
									});



									$("#zahlenModalInfoP").html(respArray[3]);

									setTimeout(function() {
										$("#zahlenModalInfoP").html("")
									}, 5000);
								}
							} else if (respArray[0] == 0) {
								$("#gutschein_nr_ip").prev().val(0.00);
								var ze = jQuery.Event("keyup");

								ze.which = 13;
								$("#gutschein_nr_ip").prev().trigger(ze);
								$("#gutschein_nr_ip").val("").focus();
								$("#gutscheinKarteIndicator").val("0");
								$(".addNextCardBut, .getCardRestvalBut").css({
									"display": "none"
								});



								$("#zahlenModalInfoP").html(respArray[3]);

								setTimeout(function() {
									$("#zahlenModalInfoP").html("")
								}, 5000);

							} else {
								$("#gutschein_nr_ip").prev().val(0.00);
								$("#gutschein_nr_ip").val(respArray[3]).focus();
								$("#gutscheinKarteIndicator").val("0");
							}

						} else alert(ajaxResponse);
					}
				});


			}

			function getKartenGuthaben() {
				rVal = $("#gutscheinkarteRestbetrag").val();
				$("#zahlenModalInfoP").html("Restbetrag: " + rVal);
				setTimeout(function() {
					$("#zahlenModalInfoP").html("");
				}, 5000);


			}



			function bezahlenExpress() {
				zz = "";
				targetId = false;
				countMatch = 0;
				$("#kassieren_id .zahlungsart_geld").each(function() { // sucht das eingabefeld für barzahlung, classe im bezahlmodal -> zahlungsart_geld, id muss mit zahlungsart beginnen und bar enthalten
					if ($(this).attr('id').search(/^zahlungsart.*bar/i) !== -1) {
						targetId = $(this).attr('id');
						countMatch++;
						zz += $(this).attr('id') + ", ";
					}
				});

				if (countMatch == 1) {
					$("#" + targetId).val($("#zahlbetrag").val().replace(',', '.') * 1); // kopiere den Zahlbetrag in das Barzahlunsfeld
					zahlung_abgeschlossen("express"); // und löse zahlung abschliessen aus.
				} else {
					alert("Kein eindeutiges Bar Zahlungsfeld verfügbar !!!"); // wenn keine eindeutige id für das barzahlungsfeld gefunden wurde, abhängig vom table zahlungsarten
					return false;
				}




			}

			function kombi_produkte_childs_anzeigen(id) {

				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",
					data: {
						funktion: "kombi_produkte_childs_anzeigen",
						offener_bon_produkt_id: id
					},
					async: true,
					success: function(html) {

						//console.log("sync successful");
						$('#aendernKombiProdukt').html(html);
						//console.log(html);
					}
				});
			}

			function speisen_gaenge_anzeigen(id) {
				//alert(id);
				$.ajax({
					type: "POST",
					url: "ajax_funktionen.php",
					dataType: "html",
					data: {
						funktion: "kombi_produkte_speisen_gaenge_anzeigen",
						offener_bon_produkt_id: id
					},



					async: true,
					success: function(html) {
						$('#kombi_artikelArtSelectDiv').html(html);
						//console.log(html);
					}
				});
			}
			// Modal Produkt editieren ***************************************

			// Get the modal
			var modal_produkt_editieren = document.getElementById('produkt_editieren_id');
			// var span_editieren = document.getElementsByClassName("close_editieren")[0];

			// Get the button that opens the modal
			var btn_editieren = document.getElementById("editieren_button_id");
			if (typeof(btn_editieren) != 'undefined' && btn_editieren != null) {

				btn_editieren.onclick = function() {
					id = finde_selektierte_bon_linie();
					if (id <= 0) {
						$("#error_message").html("Kein Artikel selektiert.");
						return false;
					}
					// Preisänderung wenn ein Kombi Produkt ist
					//alert(id);

					if ($("#line" + id).hasClass('elemHasChildes') == true) {

						var modal_kombi_produkt_editieren = document.getElementById('kombi_produkt_editieren_id');
						modal_kombi_produkt_editieren.style.display = "block";

						if (beilagenKalkulation == 'ja') {

							$('#aendernKombiProdukt').removeAttr('hidden');
							getBeilagenSubGroup('root', false, 1, id);
							kombi_produkte_childs_anzeigen(id);
							speisen_gaenge_anzeigen(id);
						}
						return;
					}

					tmpProdName = $("#bon_name" + id).html();
					editProdName = htmlDecode(tmpProdName);
					$("#editieren_produktname").val(editProdName);
					//document.getElementById("editieren_produktname").value=document.getElementById("bon_name"+id).innerHTML;
					document.getElementById("editieren_menge").value = value = document.getElementById("bon_stk" + id).innerHTML;
					netto = value = document.getElementById("bon_einzelpreis" + id).innerHTML;
					netto = netto.replace(/,/g, '.');
					netto *= 1;
					//	netto=netto.toFixed(2);

					document.getElementById("editieren_netto").value = netto;
					steuer = value = document.getElementById("bon_steuer" + id).innerHTML;
					document.getElementById("editieren_steuer").value = steuer;
					brutto = netto * (1 + (steuer / 100));
					brutto = brutto.toFixed(2);
					document.getElementById("editieren_brutto").value = brutto;
					document.getElementById("editieren_gesamtpreis").value = value = document.getElementById("bon_summe" + id).innerHTML;

					$("#beilagenTxtFieldMinus").val($("#hiddenBeilagenMinusField" + id).val());
					$("#beilagenTxtFieldPlus").val($("#hiddenBeilagenPlusField" + id).val());
					// hier steht ob die beilagenbasispreis funktion angewendet wurde !!!!
					$("#basisPrGeaendertField").val($("#hiddenBeilagenBasispreisKeyField" + id).val());


					$("#beilagenSumBrutto").val($("#hiddenBeilagenBrutSum" + id).val());
					displayPrice = $("#beilagenSumBrutto").val() * 1;
					displayBrutto = displayPrice.toFixed(2).replace('.', ',');
					//displayBrutto=displayBrutto.replace('.', ',');

					$("#beilagenSumBruttoDisplay").val(displayBrutto);
					$("#beilagenSum").val($("#hiddenBeilagenNetSum" + id).val());

					// wird nur beim ersten aufmachen gesetzt, steht schon was drinnen wird das nicht mehr verändert, soll initialPreis bleiben
					// wenn da noch nichts steht wurde der Preis noch nicht verändert, wir nehmen den netto als Initial Preis
					// wird auch für die basisPreisÄnderung gebraucht !!

					// beilagenProdInitialPreis wird bei abbrechen, editieren ausführen, löschen ....    auf null gesetzt
					//		deswegen muss es immer aus $("#hiddenBeilagenOrigPr"+id kommt vom offenen_bon DB, geladen werden. 

					$("#beilagenProdInitialPreis").val($("#hiddenBeilagenOrigPr" + id).val());


					/*	if($("#beilagenProdInitialPreis").val() == 0){	
							console.log("kp zulu 'if 0' -> "+$("#beilagenProdInitialPreis").val());
							$("#beilagenProdInitialPreis").val(netto);
						}
						else{
							console.log("kp zulu 'else' -> "+$("#beilagenProdInitialPreis").val());
							$("#beilagenProdInitialPreis").val($("#hiddenBeilagenOrigPr"+id).val());
						}
					*/
					gastroVersion = "<?php echo strtolower(GASTRO_VERSION); ?>";
					if (gastroVersion == 'ja') {
						resetStrech();
						// default wird 'minus' OperationsStatus gesetzt
						// TODO Alex beilagen
						beilagenOperation('plus');
					}
					$(".editierenArtikelArtSelBut").removeAttr('style').removeClass("editierenArtikelArtSelBut_selected").addClass("editierenArtikelArtSelBut").css({});
					artikelArtVal = $("#hiddenArtikelArtField" + id).val();
					if (artikelArtVal > 0) {
						$("#artikelArtSelBut" + artikelArtVal).addClass("editierenArtikelArtSelBut_selected").css({});
					}

					$("#artSelectedVal").val(artikelArtVal);

					if ($("#parentIdenticator" + id).val() == true) {
						//$("#editieren_brutto, #editieren_netto").prop( "disabled", true );
					}

					modal_produkt_editieren.style.display = "block";
					if (editModalFocus == 'produktname') {

						var existVal = $('#editieren_produktname').val().replace(/\s+$/g, "");;
						existVal += " ";
						$('#editieren_produktname').focus().val(existVal); // um den cursor nach dem vorhandenen txt zu stellen
						setTimeout(function() {
							$("#activeEditField").val('editieren_produktname');
						}, 100);
					} else if (editModalFocus == 'preis') {
						setTimeout(function() {
							$('#editieren_brutto').focus();
							$("#activeEditField").val('editieren_brutto');
						}, 100);
					}
					if (beilagenKalkulation == 'ja' && ($("#beilagenTxtFieldPlus").val() != '' || $("#beilagenTxtFieldPlus").val() != '')) {
						$("#editieren_brutto").prop('disabled', true).css({
							"background": "#aaa",
							"color": "#666"
						});



					}


				} // ENDE function btn_editieren

			} // if btn_editieren
		</script>

		<form id="moveTableSetTargetForm" action="tische.php" method="post">
			<input type="hidden" id="moveTableIndicator" name="moveTableIndicator" value="setByMoveTable" />

		</form>

		<form id="moveTableDetailSetTargetForm" action="tische.php" method="post">
			<input type="hidden" id="moveTableDetailIndicator" name="moveTableDetailIndicator" value="setByMoveTableDetail" />
		</form>


</body>

</html>