<?php
	// Wenn es einen eintrag in konfiguration_sitpos gibt, dann mache ein update
	// ansonsten mache ein insert
	function insert_into_konfiguration($name, $wert, $beschreibung="", $sitpos_config=true, $konfigtitel="")
	{
		$value_string="";
		if ($sitpos_config) $table="konfiguration_sitpos";
		else 
		{
			$table="konfiguration";
			$value_string=", beschreibung='".$beschreibung."', konfigtitel='".$konfigtitel."' ";
		}
		
		$sql =false;
		$restult = false;
		
		$sql = "SELECT wert from $table where name='".$name."'";
		$result = mysql_query($sql);
		if(mysql_num_rows($result) > 0)
		{
			#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."  -> ".$table." UG** to 306 -> Name -> ".$name." sql res->  ".$result[0]." rum Rows -> ".mysql_num_rows($result)." \n", FILE_APPEND);
			$string="check Konfig´-> ".$name." exists->".mysql_num_rows($result)."-";
			
			log_to_file($string, false, false);
			$finalMsg="Konfig Name ".$name." bereits vorhanden";
			
			#Jan 2020 KPE in abstimmung mit RFR geändert !!
			#$sql="UPDATE $table SET wert = '".$wert."'".$value_string." WHERE name = '".$name."'";
			//echo $sql ."\n";
			#$insVersion=mysql_query($sql); 
			#	if(!$insVersion) $finalMsg="Konfiguration konnte nicht upgedated werden. ".mysql_error()."";
			#	else $finalMsg="Name ".$name." in Konfiguration upgedated\n";	
		}
		else
		{
			$insVersion=mysql_query("INSERT into $table SET wert = '".$wert."'".$value_string.", name = '".$name."'\n"); 
				if(!$insVersion) $finalMsg="Konfiguration konnte nicht eingefuegt werden. ".mysql_error()."";
				else $finalMsg="Name ".$name." in Konfiguration eingefuegt\n";
				
			#file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ." UG to 306 -> Name -> ".$name."  Wert -> ".$wert." table -> ".$table." \n", FILE_APPEND);
			$string="Upgrade Konfig, name-> ".$name." Wert-> ".$wert." table-> ".$table;
			log_to_file($string, false, false);
		}
		return($finalMsg);
	}
	
	function checkQtyLimit($kundeToBon, $produkt_id, $prodQty, $currentBon){
		
			# qty stimmt noch nicht (schon im Bon fehlt noch) !!!!
			# was ist wenn es keinen Kunden gibt ???
			
		if($kundeToBon > 0 && (defined('KAUFBESCHRAENKUNG_QTYONTIME_DISABLED') && strtolower(KAUFBESCHRAENKUNG_QTYONTIME_DISABLED) == 'nein')){
			$qtyLimit=mysql_fetch_array(mysql_query("SELECT produkt_verkaufslimit_id, offener_bon.kunden_id, offener_bon.produkt_id, 
									SUM(KAUFEBESCHRAENKUNG_X_PRODUKTE_IN_Y_TAGEN_X-
										(CASE WHEN verkaufte_stueck > 0 THEN verkaufte_stueck + offener_bon.stueck ELSE offener_bon.stueck END)) AS checkQty
								FROM offener_bon								
                                LEFT JOIN products ON products.ID = offener_bon.produkt_id								
                                LEFT JOIN kunden_produkte_verkaufslimit ON  kunden_produkte_verkaufslimit.produkt_id = products.ID 
                                WHERE kunden_produkte_verkaufslimit.kunden_id = '".$kundeToBon."' AND offener_bon.bon_id = '".$currentBon."' AND offener_bon.produkt_id = '".$produkt_id."' LIMIT 1"));
									
			if($qtyLimit['checkQty'] == false){
				$returnQtyResult = false;
				#writeLog(basename( __FILE__)." ". __LINE__ , " FALSE kd-> ".$kundeToBon." prod-> ".$produkt_id." qty-> ".$prodQty." bon-> ".$currentBon." -->>>>>>>>>>> ".$qtyLimit['checkQty']);
				
			}
			else if($qtyLimit['checkQty'] == true){
				$returnQtyResult = $qtyLimit['checkQty'];
				#writeLog(basename( __FILE__)." ". __LINE__ , " kd-> ".$kundeToBon." prod-> ".$produkt_id." qty-> ".$prodQty." bon-> ".$currentBon." -->>>>>>>>>>> ".$qtyLimit['checkQty']);				
			}						

									
			return array($kundeToBon, $produkt_id, $prodQty, $returnQtyResult);
		}
		
		else{
			return array($kundeToBon, $produkt_id, $prodQty, false);	
		}
			
	}
	
	
	function preisgruppenKundenInfo($kundenId){
		
		#writeLog(basename( __FILE__)." ". __LINE__ , " preisgruppenKundenInfo aufgerufen kd-> : ".$kundenId);
		
		
		$custCardNo=$kundenId;
		$getCustDetails=mysql_fetch_array(mysql_query("SELECT id, kundennummer, loyality_card, adressnummer, Firma, anrede, titel, vorname, nachname, sachbearbeiter, strasse1, 
												strasse2, plz, Ort, Land, telefon1, telefon2, mobil, email, fax, geburtstag, foto, zweitberechtigter_foto, foto_mimetype,
												zweitberechtigter_foto_mimetype, einkaufskarte_gesperrt,  einkaufskarte_ausstellungsdatum,  einkaufskarte_ablaufdatum,
												 DATEDIFF( einkaufskarte_ablaufdatum, NOW()) AS restZeit, kunden_attribute.einkaufslimit_bisher_eingekauft AS usedLimit, einkaufslimit, 
												kunden.create_ts AS createTS, kunden.update_ts AS updateTS, anmerkung 												
												FROM kunden 
												LEFT JOIN kunden_attribute ON kunden_id = id
												WHERE id=  '".$custCardNo."' AND geloescht = 0 LIMIT 1"));
										
		if(!$getCustDetails){
			writeLog(basename( __FILE__)." ". __LINE__ , " Datenbank Error: ".mysql_error());
			
			return array(false, false);
			
		}
		
					# prüfen ob schon was im Warenkorb liegt und even schon ein kunde angelegt wurde aktuellen Warenkorb
					
			$currBon=$_SESSION['aktuellerWarenkorb'];
			$checkOpenBon=mysql_fetch_array(mysql_query("SELECT SUM((PRICESELL*stueck) * (1+tax_rate)) AS sumPr, kunden_id FROM offener_bon WHERE bon_id = '".$currBon."' LIMIT 1"));

			$overLimit='';
			$overLimitQty='';
			
			if($checkOpenBon['sumPr'] >0 ){
					# calculat Customer current limit ( € betrag )
				//$inklOffenerBon=$getCustDetails['einkaufslimit']-$getCustDetails['usedLimit']-$checkOpenBon['sumPr'];
				
					# calculat Customer current limit ( limitierte Artikel )
				$custId=$getCustDetails['id'];
				$checkOffenerBonDetail=mysql_query("SELECT produkt_id, stueck FROM offener_bon WHERE bon_id = '".$currBon."' ");
				
				while($openBonDetail=mysql_fetch_array($checkOffenerBonDetail)){
					$qtyLimit=checkQtyLimit($custId, $openBonDetail['produkt_id'], $openBonDetail['stueck'], $currBon);
					
					writeLog(basename( __FILE__)." ". __LINE__ , "returnResult-> ".$qtyLimit[0]." - ".$qtyLimit[1]." - ".$qtyLimit[2]." -> ".$qtyLimit[3]);
				}
				/*
				if($inklOffenerBon < 0 ){
					$overLimit="<p style='color:#f00; font-weight:bold;'	>Inkl. Warenkorb Limit überschritten: ".number_format($inklOffenerBon, 2, ',', '') ."</p>";
					
				}
				*/
			}
			else if(!$checkOpenBon['sumPr']){
				writeLog(basename( __FILE__)." ". __LINE__ , "offener_bon Check ".$checkOpenBon['sumPr']);
			}
			$backgroundcolor = "#88ca5e";
					if($getCustDetails['einkaufskarte_gesperrt'] > 0 || $getCustDetails['restZeit'] < 1){
								$backgroundcolor = "#FF4C4C";	
								}
												
		$persStrg="<div style='margin: auto;padding: 10px;background-color:".$backgroundcolor.";line-height:1.2em; height:55%; width:100%; padding-bottom:3%; border-bottom:1px solid #ccc; box-shadow:0 5px 8px -5px #555;' >";
								$kdKarteSperre=false;
								$restZeitStyle="";
								
								
								$persStrg.=$overLimit;
								
								if($getCustDetails['restZeit'] < 15 && $getCustDetails['restZeit'] > 0) $restZeitStyle="style='color:#c70'";
								
																#"".date('d.m.Y', strtotime( $getCustDetails['einkaufskarte_ablaufdatum']))."<br>";
								$persStrg.="<b>Kundennummer: ".$custCardNo."</b><br>";
								if(strlen($getCustDetails['einkaufskarte_ablaufdatum']) > 0 && $kdKarteSperre == false)
										$persStrg.="Gültig Bis: <b ".$restZeitStyle." >".date('d.m.Y', strtotime( $getCustDetails['einkaufskarte_ablaufdatum']))."</b><br>";
								
								/* SOMA wunsch, nicht anzeigen
								if(strlen($getCustDetails['einkaufskarte_ausstellungsdatum']) > 0)
										$persStrg.="Augestellt: ".date('d.m.Y', strtotime( $getCustDetails['einkaufskarte_ausstellungsdatum']))."<br>";
								if(strlen($getCustDetails['einkaufskarte_ablaufdatum']) > 0 && $kdKarteSperre == false)
										$persStrg.="Gültig Bis: <b ".$restZeitStyle." >".date('d.m.Y', strtotime( $getCustDetails['einkaufskarte_ablaufdatum']))."</b><br>";

								if(strlen($getCustDetails['usedLimit']) > 0 && strlen($getCustDetails['einkaufslimit']) > 0){
										$limitCalc=number_format($getCustDetails['einkaufslimit']-$getCustDetails['usedLimit'], 2, ',', '');
										$limitWo=number_format($getCustDetails['einkaufslimit'], 2, ',', '');
										$persStrg.="Einkaufslimit Woche: € ".$limitWo."<br>";
										$persStrg.="Einkaufslimit aktuell: € ".$limitCalc."<br>";
								}
								*/
								$persStrg.="<div style='position:relative; width:97%; line-height:1.2em; height:5%; margin-top:1%;' ></div>";	
								
								//if(strlen($getCustDetails['anrede']) > 0)$persStrg.=$getCustDetails['anrede']." ";
								//if(strlen($getCustDetails['titel']) > 0)$persStrg.=$getCustDetails['titel']." ";
								//if(strlen($getCustDetails['vorname']) > 0)$persStrg.=$getCustDetails['vorname']." ";
								//if(strlen($getCustDetails['nachname']) > 0)$persStrg.=$getCustDetails['nachname']."<br>";
								#if(strlen($getCustDetails['strasse1']) > 0)$persStrg.=$getCustDetails['strasse1']."<br>";
								#if(strlen($getCustDetails['strasse2']) > 0)$persStrg.=$getCustDetails['strasse2']."<br>";
								#if(strlen($getCustDetails['plz']) > 0)$persStrg.=$getCustDetails['plz']." ";
								#if(strlen($getCustDetails['Ort']) > 0)$persStrg.=$getCustDetails['Ort']."<br>";
								$persStrg.="</div>";
								
								
								if($getCustDetails['einkaufskarte_gesperrt'] > 0){
										$persStrg.="<br><span style='margin:20px;align:center'><b style='color:#c00'>Karte Gesperrt !</b></span><br>";
										$kdKarteSperre=1;
								}
								else if($getCustDetails['restZeit'] < 1)
									$persStrg.="<p style='color:#c00'>Karte Abgelaufen !</p>";
								//if(strlen($getCustDetails['anmerkung']) > 0)
								//	$persStrg.="<div style='position:relative; width:97%; height:35%; margin-top:1%; font-size:.8em; 
								//			border:solid 1px #000; overflow:auto;'  >".$getCustDetails['anmerkung']."</div>";
								
								$custImg="";
								if(strlen($getCustDetails['foto']) > 0){
										$custImg="<img src='data:".$getCustDetails['foto_mimetype']."; charset=utf8; base64, ".base64_encode($getCustDetails['foto'])."' 
													onclick='swappCustImg(this.id)'
													id='preisGruppenFotoA' style='object-fit:contain; height:90%;' />";
								}
								$secFoto="";
								if(strlen($getCustDetails['zweitberechtigter_foto']) > 0){
										$secFoto="<img src='data:".$getCustDetails['zweitberechtigter_foto_mimetype']."; charset=utf8; base64, ".base64_encode($getCustDetails['zweitberechtigter_foto'])."' 
													onclick='swappCustImg(this.id)'
													id='preisGruppenFotoB' style='object-fit:contain; height:90%;' />";
										
										
								}
				# hier basteln wir ein html
					$returnHtml="<div style='position:relative; float:left; width:49%; height:95%;  overflow:auto;'>
										<div style=''>".$persStrg."</div>
								</div>
								<div style='position:relative; float:left; width:50%; height:95%; border:solid 2px transparent; border-radius:5px;  overflow:hidden;'>
								".$custImg.$secFoto."
								</div>

								<div class='cclear'></div>";
								#	<div style='position:relative; float:left; width:2%; height:5%;  border:darkblue solid 1px; overflow:hidden;'>	</div>
								
				return array($returnHtml, $kdKarteSperre);
		
	}
	
	
	function preisgruppenQtyLimit(){
		
		
		
	}
	
	
	function getKassaPriceCat(){
			# am ende der Konstante steht eine Zahl, außer bei standard, die Zahl wird als Preislevel zurückgegeben
			# wenn keine Pries Category gesetzt ist return False;
		if(preg_match('/(\d)$/', SONDERPREIS_KATEGORIE, $matches)){
				# matches [1] Zahl 2-5 
			return $matches[1];
		}
		else return false;

	}
	
	function getStorePrice($produkt_id){
		$priceCategory=getKassaPriceCat();
									
		if(is_numeric(trim($priceCategory)) && $priceCategory > 0){
			
			#SELECT (case when pricesell_2 = 0 then pricesell  end) AS pricesell_x FROM products WHERE ID = 6475 
			#	SELECT (case when pricesell_2 = 0 then pricesell end) AS pricesell_x FROM products WHERE ID = 6475 
			
			$pricesell=false;
			#$soMaPr=mysql_fetch_array(mysql_query("SELECT pricesell_".$priceCategory." FROM products WHERE ID = '".$produkt_id."' "));
			$soMaPr=mysql_fetch_array(mysql_query("SELECT (CASE WHEN pricesell_".$priceCategory." = 0 OR pricesell_".$priceCategory." IS NULL THEN pricesell 
									ELSE pricesell_".$priceCategory." END) AS pricesell_x FROM products WHERE ID = '".$produkt_id."' "));
			 
			$pricesell=$soMaPr[0];
				#writeLog(basename( __FILE__)." ". __LINE__ , " priceCat: ".$priceCategory." storePr##: ".$pricesell." prodId: ".$produkt_id." db error: ".mysql_error());
			return $pricesell;
		}
		else{
			return false;
		}
	}
	
	function moveSomaDiscountedLine($openBonLineId){
			# stellt eine Produkt Zeile im offenen Bon ganz nach unten, damit die eingefügte Discount zusatzZeile als nächstes steht
		
		$mId=mysql_fetch_array(mysql_query("SELECT MAX(ID) AS maxId FROM offener_bon "));
		$maxId = $mId['maxId']+1;
		
		$orderOffenenBon=mysql_query("UPDATE offener_bon SET ID = ".$maxId." WHERE ID = ".$somaProd['lineId']."");
			if(!$orderOffenenBon) log_to_file(basename( __FILE__)." ". __LINE__ . " Datenbank Error ".mysql_error() ." ", false, false);
						
		$setAutoincrem=mysql_query("ALTER TABLE offener_bon AUTO_INCREMENT = 1 ");
			if(!$setAutoincrem) log_to_file(basename( __FILE__)." ". __LINE__ . " Datenbank Error ".mysql_error() ." ", false, false);
		
		return $maxId;
		
	}
	
	function checkOnSomDiscount($prodArray=false, $prodId=false, $qty=false){
		
		if($prodArray !== false && is_array($prodArray) == true){
			
			$msgX="";
			$kzx=false; $kzy=false; $prozx=false; $prozy=false; $fixx=false; $fixy=false;
			$kzxVal=false; $kzyVal=false; $prozxVal=false; $prozyVal=false; $fixxVal=false; $fixyVal=false;

			$kassaCat=getKassaPriceCat();
			#for($i=0; $i=<sizeof($prodArray); $i++){	
			foreach ($prodArray as $col => $prodData) {
				#echo "$value <br>";
				
				
				$kzProdId=false; $prozProdId=false; $fixProdId=false;
						#	if($col == 'prodId'	){	$prodId=$prodData;	$msgX.=$col." - ".$prodData."\n";				}
				
				if($col == 'kzx'.$kassaCat && $prodData != ''){ $kzx=true; $kzxVal=$prodData; 					}
				else if($col == 'kzy'.$kassaCat && $prodData != ''){ $kzy=true; $kzyVal=$prodData;	}
				else if($col == 'prozx'.$kassaCat && $prodData != ''){ $prozx=true; $prozxVal=$prodData;		}
				else if($col == 'prozy'.$kassaCat && $prodData != ''){ $prozy=true; $prozyVal=$prodData;							}
				
				else if($col == 'fixx'.$kassaCat && $prodData != ''){ $fixx=true; $fixxVal=$prodData;	}
				else if($col == 'fixy'.$kassaCat && $prodData != ''){ $fixy=true; $fixyVal=$prodData;	}
				
				else continue;
			
				$msgX.="gesetzter store Category: ".$kassaCat." - colName".$col." colVal".$prodData." -> ";
			}
			$discountRelevant='nein';
			if($kzx==true && $kzy==true){ 
					$checkOffenenBonPrice=false;
					$checkOffenenBon=mysql_fetch_array(mysql_query("SELECT bon_id, stueck, pricesell, tax_rate  FROM offener_bon WHERE produkt_id=".$prodId." LIMIT 1"));
					$checkOffenenBonQty=$checkOffenenBon['stueck'];
					$checkOffenenBonPrice=$checkOffenenBon['pricesell'];
					$checkOffenenBonId=$checkOffenenBon['bon_id'];
					$taxRate=$checkOffenenBon['tax_rate'];
					if($checkOffenenBonQty < $kzxVal){
						$discountRelevant='nein';
						$msgX.=" unterm Limit: ".$checkOffenenBonQty."/".$kzxVal;
					}
					else if($checkOffenenBonQty >= $kzxVal){
						$diff=$kzxVal-$kzyVal;
							# wie oft kommt der discount zum tragen, beispiel 4/2 wenn 4 erreicht 2 minus, wenn 8, 4 minus, dazwischen immer der
							#	niedrigere Wert, deswegen auf Integer abrunden !
						$multipler=floor($checkOffenenBonQty/$kzxVal);

						$msgX.=" Über Limit->Aktion diff: ".$diff." Multipler: ".$multipler."/ ";
						$discountRelevant='ja';
					}
						#writeLog(basename( __FILE__)." ". __LINE__ , "kaufXzahlY - ".$discountRelevant." - ".$prodId." - ".$checkOffenenBonPrice." - ".$checkOffenenBonQty.				"\n");
					return array("kaufXzahlY", $discountRelevant, $prodId, $checkOffenenBonPrice, $taxRate, $checkOffenenBonQty, $checkOffenenBonId, $msgX);
			}
			
			if($prozx==true && $prozy==true){ 
					$msgX.=" id: ".$prodId." Get ".$prozxVal." % ab ".$prozyVal." stk erkannt."; 
					return array("prozentDiscountWenn", $discountRelevant, $prodId, $checkOffenenBonPrice, $checkOffenenBonQty, $msgX);								}
			if($fixx==true && $fixy==true){ 
					$msgX.=" id: ".$prodId." Get ".$fixxVal." € ab ".$fixyVal." stk erkannt.";
					return array("fixDiscountWenn", $discountRelevant, $prodId, $checkOffenenBonPrice, $checkOffenenBonQty, $msgX);									}

			else{
					return array('kein Discount relevant', 'nein',  false, false, false, false );
			}
		}
		else return array("Funktion fehlgeschlagen", 'nein', false, false, false, ", event übergebene Parameter unzulässig");
		
	}
	

	
		# aufgerufen ajax_funktionen.php zeile 420 
	function recalcOffenerBon($currentBon){
			# offener Bon auslesen where bon id ..
			#writeLog(basename( __FILE__)." ". __LINE__ , "vergleich storePrice -> ".$currBonData['PRICESELL_'.$priceCat]." / ".$currBonData['openBonPrice']."   priceCat -> ".$priceCat." - ".$currBonData['prodName']."\n");
		$zuluData="";
		
		$priceCat=false;
		$storePrice=false;
		$prodN="";
		$updQl=false;
		$refresh=false;
		$msgX="";
		$priceCat=getKassaPriceCat();

		$msgX.="priceCat-> ".$priceCat;
		
 		if($priceCat > 0){
			$msgX.=" (". __LINE__ .") priceCat erkannt -> ".$priceCat;	
				#writeLog(basename( __FILE__)." ". __LINE__ , "z-Y Price Cat !!! -> bon nr-> ".$priceCat."\n");
				$bonData=mysql_query("SELECT offener_bon.ID AS openBonId, offener_bon.name AS prodName, offener_bon.PRICESELL AS openBonPrice, offener_bon.bon_id, 
											offener_bon.stueck, products.PRICESELL_2, products.PRICESELL_3, products.PRICESELL_4, products.PRICESELL_5, 
											offener_bon.produkt_id AS prodId
										From offener_bon
										INNER join products ON offener_bon.produkt_id = products.ID
										WHERE offener_bon.bon_id = ".$currentBon." ");
					$msgX.=" (". __LINE__ .") numRows: ".	mysql_num_rows($bonData);
					
					while($currBonData=mysql_fetch_array($bonData)){
						# Price Category vergleichen
					$msgX.=" ##################catPrice: ".$currBonData['PRICESELL_'.$priceCat]." standPrice: ".$currBonData['openBonPrice'];
								$prodN.=$currBonData['prodName'].", ";
								$storePrice=$currBonData['PRICESELL_'.$priceCat];
								if($storePrice > 0 || $storePrice < 0 ){
									$openBonId=$currBonData['openBonId'];
									if($storePrice != $currBonData['openBonPrice']){ 
										$updQl=mysql_query("UPDATE offener_bon SET PRICESELL = '".$storePrice."' WHERE ID = ".$openBonId."");
										#writeLog(basename( __FILE__)." ". __LINE__ , " im update if update sql result -> ".$updQl."\n");
										$refresh=true;
									}
								}								
						
					}
				
		}
		return array($currentBon, $storePrice, $updQl, $refresh, false, $prodN);
		
	}
	
	
			#KPE Feb 2021
	function seiteDrucken($pPrinter=false, $outputTarget=false, $printFunction=false){
		file_put_contents('kpcheckit.Beim Abuchen vom Gutschein mit der', "\n".basename( __FILE__)." / ". __LINE__ ."  seiteDrucken: aufgerufen\t".$pPrinter."\t".$outputTarget."\t".$printFunction , FILE_APPEND);
		
		if(defined('PRINTER_ANSTEUERUNG') && PRINTER_ANSTEUERUNG == 'foxit'){
			$command='"C:\sitpos\FoxitReaderPortable\App\Foxit Reader\foxitreader.exe" /t "'.$outputTarget.'" "'.$pPrinter.'" ';
			file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."   seiteDrucken ansteuerung Foxit: ".PRINTER_ANSTEUERUNG."\n".$command, FILE_APPEND);
		}
		else{
			$command="C:\sitpos\pdfxchange\App\PDFV_Portable\PDFXCview.exe /print:printer=\"$pPrinter\" \"$outputTarget\" ";	
			file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."   seiteDrucken ansteuerung else=xchange: ".PRINTER_ANSTEUERUNG."\n".$command, FILE_APPEND);
		}
		
		exec($command, $output, $error_code);
			//file_put_contents('kpcheckit.txt', "\n".basename( __FILE__)." / ". __LINE__ ."  Foxit:\n\t".$command."\n".$printFunction, FILE_APPEND);
		return $error_code;

	}
	
		function licenseRewriteOnLicCheck($dDirection=false, $licData=false){
			// lic naming konfiguration_sitpos
		$licRewriteMsg="";	
		if(strtolower($dDirection) == 'ddelete'	){
			$licenseDelMsg="";
			$delLicense=mysql_query("DELETE FROM license_encrypted");
			if(!$delLicense){
				$licRewriteMsg .= "Datenbank Fehler beim Löschen vom Lizenz Table.\t";
			}
			else{
				$licRewriteMsg .= "Datenbank Lizenz Einträge aus Lizenz Table gelöscht.\t";
			}
			$delLicSetsKonfig=mysql_query("DELETE FROM konfiguration_sitpos WHERE name = 'BASIS_LIZENZ_VORHANDEN' OR name = 'BASIS_LIGHT_LIZENZ_VORHANDEN'
						OR name = 'LIZENZ_VERSION' OR name = 'ANZAHL_USER_LIZENZEN' OR name = 'ABHOL_LIZENZ' OR name = 'GUTSCHEIN_LIZENZ' 
						OR name = 'KASSABUCH_LIZENZ' OR name = 'LIEFERSCHEIN_LIZENZ' OR name = 'ECKARTE_LIZENZ' OR name = 'LIZENZ_TELEFON'
										 OR name = 'KUECHENMON_LIZENZ'	");
						
			if(!$delLicSetsKonfig){
				$licRewriteMsg .= "Datenbank Fehler beim Löschen vom Lizenz Einträge in Konfiguration.\t";
			}
			else{
				$licRewriteMsg .= "Datenbank Lizenz Einträge aus Konfiguration gelöscht.\t";
			}
			
				$countInsLics=0;
		}
		else if(strtolower($dDirection) == 'writein' && is_array($licData)	){
			
			$licenseWriteMsg="";
			$kKey=array();
			$countError=0;
			$countInsLics=0;
			for($i=0; $i < sizeof($licData); $i++){
				$kKey=$licData[$i]['licKey'];
				$gtig=sitPosEncrypt($licData[$i]['gueltig'], SITPOS_CRYPT) ;				

				$insQl=mysql_query("INSERT INTO license_encrypted SET license = '".$kKey."', lastverify = NOW(), gueltig = '".$gtig."' ");

				if(!$insQl){
					$licRewriteMsg.="DB Error -> ".mysql_error();
					$countError++;
				}
				else{	$countInsLics++;							}
				
			}
			if($countError == 0){
				$retVal_sITposKonf=updateKonfigSitposOnLicCheck();
				$licRewriteMsg.=" Update KonfigSitpos: ".$retVal_sITposKonf."\nAnz Datensätze: ".$countInsLics;
			}
			
		}
		
		return array($countInsLics, $licRewriteMsg);
		
	}
	
	function checkLicOnKassaOeffnen(){
		require_once("synchronize/sync_license.php");
		
			// check ob lizenzen in der DB sind, wenn ja wird diese als HostId für die Abfrage am Portal verwendet
			//	steht nichts in der DB, weil neue Kassa, oder abgelaufen, oder ... wird die erste Mac Adresse genommen
		$getHostIdFromLicKey=mysql_fetch_array(mysql_query("SELECT license FROM license_encrypted LIMIT 1"));
		if($getHostIdFromLicKey != false){
				$lizC=sitPosDecrypt($getHostIdFromLicKey['license'], SITPOS_CRYPT);
				$lizArray=explode("-", $lizC);
				$hostid=strtoupper($lizArray[4]);
		}
		else{
				$macAddr=getMacAddresses();				
						//$hostid="F894C2167268"; KPE rechner
				$hostid=strtoupper($macAddr[0]);
		}
			# fake id for test only !!!!
			#$hostid="F394C2167268";
		$checkLicOnKassaOeffnen=transfer_lizenz_get_data($hostid);
		
		//var_dump($checkLicOnKassaOeffnen);

		//var_dump($checkLicOnKassaOeffnen);
		file_put_contents("../kpcheckit.txt",basename( __FILE__) ." ". __LINE__ ." ".date('Y-m-d H:i:s')."\t lic trtansfer resp -> ".sizeof($checkLicOnKassaOeffnen)."\n ", FILE_APPEND );
		
		
		$licConnection=false;
		
		if(is_array($checkLicOnKassaOeffnen) && isset($checkLicOnKassaOeffnen[0]) &&  strpos(strtolower($checkLicOnKassaOeffnen[0]), 'error') !== false    ){
	
			return array(strtolower($checkLicOnKassaOeffnen[0]), $checkLicOnKassaOeffnen[1]);
		}
		else if(is_array($checkLicOnKassaOeffnen[1]) && isset($checkLicOnKassaOeffnen[1]['gesperrt']) &&  strpos(strtolower($checkLicOnKassaOeffnen[0]), 'xmlsuccess') !== false){
			
			$gesperrt=$checkLicOnKassaOeffnen[1]['gesperrt'];			
			$licConnection=true;
			//$checkLicOnKassaOeffnen[1]['upgradelink']
			//download_remote_file(urldecode($checkLicOnKassaOeffnen[1]['upgradelink']), realpath("C:\Daten\sITpos"));
			
			if ( isset($checkLicOnKassaOeffnen[1]['upgradelink']) && !empty($checkLicOnKassaOeffnen[1]['upgradelink'])&& $_SESSION['userLevel'] >= ENABLERKEY_INSTALL_NEW_VERSION)
			{
				echo '<div style="width:61.5%;text-align: center;">';
				echo '<p>Neue <span  style="color:red;font-weight:bold">sITpos Version</span> verfügbar</p>';
				echo '<center><a style="text-decoration: none;" href="'.urldecode($checkLicOnKassaOeffnen[1]["upgradelink"]).'" download><button class="button_none_float button_gross orange kassaOeffnenBut">Download</button></a></center>';
				echo '</div>';
			}
		}
		
			// $checkLicOnKassaOeffnen['gesperrt']  "0" als NICHT gesperrt !!!		
			// simuliert gesperrt aus Lic Portal !!!
			//$checkLicOnKassaOeffnen[1]['gesperrt']=1;
	
		$rewriteLicArray=array();
		$licResult="";
		$licCheckMsg="";
		

		
		if( sizeof($checkLicOnKassaOeffnen[1]['licenses']) > 0 && $licConnection==true	){	
			
			$checkLicOnKassaOeffnen=$checkLicOnKassaOeffnen[1];
			
			if (isset($checkLicOnKassaOeffnen['licenses']['license'][0]))
			{
				for($i=0; $i < sizeof($checkLicOnKassaOeffnen['licenses']['license']); $i++)
				{
					/*echo "<p>Lic Name-> ".$checkLicOnKassaOeffnen['licenses']['license'][$i]['name']
								." Lic Key-> ".$checkLicOnKassaOeffnen['licenses']['license'][$i]['key']
								."<br>Lic Laufzeit-> ".$checkLicOnKassaOeffnen['licenses']['license'][$i]['gueltig']
								." Lic Laufzeit Coded-> ".sitPosEncrypt($checkLicOnKassaOeffnen['licenses']['license'][$i]['gueltig'], SITPOS_CRYPT)
								." Lic Laufzeit Decoded-> ".sitPosDecrypt(sitPosEncrypt($checkLicOnKassaOeffnen['licenses']['license'][$i]['gueltig'], SITPOS_CRYPT), SITPOS_CRYPT).
							"</p>";	*/
					$rewriteLicArray[$i] = array("name"=>urldecode($checkLicOnKassaOeffnen['licenses']['license'][$i]['name']), 
												"licKey"=>urldecode($checkLicOnKassaOeffnen['licenses']['license'][$i]['key']),
												"gueltig"=>urldecode($checkLicOnKassaOeffnen['licenses']['license'][$i]['gueltig']));
				}
			}
			else 
			{
				$rewriteLicArray[0] = array("name"=>urldecode($checkLicOnKassaOeffnen['licenses']['license']['name']), 
												"licKey"=>urldecode($checkLicOnKassaOeffnen['licenses']['license']['key']),
												"gueltig"=>urldecode($checkLicOnKassaOeffnen['licenses']['license']['gueltig']));
			}
			

			$resultLicDel=licenseRewriteOnLicCheck('dDelete', false);
			
			$licCheckMsg.= $resultLicDel[1]."<br>";
			
			if($checkLicOnKassaOeffnen['gesperrt'] == 0){
				$resultLicWrite=licenseRewriteOnLicCheck('writeIn', $rewriteLicArray);
				
				$licCheckMsg.= $resultLicWrite[1]."<br>";
				
				$licResult='xmlSuccess';
			}
			else{
				$licResult='licGesperrt';
				
			}
		}
		else{
			$resultLicDel=licenseRewriteOnLicCheck('dDelete', false);
		}
		
		$xml=info_von_kasse_fuer_server_auslesen();
		$resultFromKassa=xml_zu_lizenzserver_transferieren($xml, $hostid);	
		return array($licResult, $licCheckMsg);
	}
	function download_remote_file($file_url, $save_to)
	{
		$content = file_get_contents($file_url);
		file_put_contents($save_to, $content,FILE_APPEND);
	}
	function download_remote_file_with_curl($file_url, $save_to)
	{
		$ch = curl_init();
		curl_setopt($ch, CURLOPT_POST, 0);
		curl_setopt($ch,CURLOPT_URL,$file_url);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		$file_content = curl_exec($ch);
		curl_close($ch);
		$downloaded_file = fopen($save_to, 'w');
		fwrite($downloaded_file, $file_content);
		fclose($downloaded_file);
	}
	function download_remote_file_with_fopen($file_url, $save_to)
	{
		$in=    fopen($file_url, "rb");
		$out=   fopen($save_to, "wb");
 
		while ($chunk = fread($in,8192))
		{
			fwrite($out, $chunk, 8192);
		}
 
		fclose($in);
		fclose($out);
	}

	function updateKonfigSitposOnLicCheck(){
		
		$kpMsg="";
		
		$countError=0;

		mysql_query("START TRANSACTION");
		$delLics=mysql_query("DELETE FROM konfiguration_sitpos WHERE LOWER(name) = 'basis_lizenz_vorhanden' OR LOWER(name) = 'basis_light_lizenz_vorhanden'
									OR LOWER(name) = 'anzahl_user_lizenzen' OR LOWER(name) = 'lieferschein_lizenz' OR LOWER(name) = 'lizenz_version'
									OR LOWER(name) = 'gutschein_lizenz' OR LOWER(name) = 'kassabuch_lizenz'  OR LOWER(name) = 'eckarte_lizenz' 
									OR LOWER(name) = 'lizenz_telefon' OR LOWER(name) = 'kuechenmon_lizenz'");
									
		$checkLics=mysql_query("SELECT license FROM  license_encrypted");

		while($checkLicRow=mysql_fetch_array($checkLics)){
			$nNat=explode("-", sitPosDecrypt($checkLicRow['license'], SITPOS_CRYPT));
			
			if(strtolower($nNat[0]) == 'basis' || strtolower($nNat[0]) == 'basis light' || strtolower($nNat[0]) == 'basis start')
			{
				if(strtolower($nNat[0]) == 'basis') 
				{
					$nName = 'BASIS_LIZENZ_VORHANDEN';
					$insQl_f=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('KUECHENMON_LIZENZ', 'ja') ");
					if(!$insQl_f){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++; 		}
					$insQl_d=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('GUTSCHEIN_LIZENZ', 'ja') ");
					if(!$insQl_d){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
					$insQl_f=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('LIEFERSCHEIN_LIZENZ', 'ja') ");
					if(!$insQl_f){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++; 		}
					$insQl_e=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('KASSABUCH_LIZENZ', 'ja') ");
					if(!$insQl_e){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				}
				else if(strtolower($nNat[0]) == 'basis light') //ab 4.0 kein Unterschied zu Pro, nur weniger Module
				{
					$nName = 'BASIS_LIZENZ_VORHANDEN'; // bei 4.0 gibt es nur mehr Pro
					$insQl_f=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('LIEFERSCHEIN_LIZENZ', 'ja') ");
					if(!$insQl_f){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++; 		}
				}
				else if(strtolower($nNat[0]) == 'basis start') $nName = 'BASIS_LIGHT_LIZENZ_VORHANDEN';
				//else if(strtolower($nNat[0]) == 'basis light') $nName = 'BASIS_LIGHT_LIZENZ_VORHANDEN';
					// KPE Feb 2021 -> noch unklar ob vom Lic Server Version 4 im Key kommt 
				$nNat[1] += 1;
				$insQl_a=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('".$nName."', 'ja'), ('LIZENZ_VERSION', '".$nNat[1]."') ");
				if(!$insQl_a) {	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;					}
				$delLicVioBasic=mysql_query("DELETE FROM license_violation WHERE type = 'BASIS_LIZENZ' OR type = 'USERS_LIZENZ' ");
				if(!$delLicVioBasic){	 $kpMsg.="DB Error. ".mysql_error()." / "; $countError++;			}
				
				$countUser=mysql_query("SELECT wert FROM konfiguration_sitpos WHERE name = 'ANZAHL_USER_LIZENZEN' ");
				if(mysql_num_rows($countUser) == 0){
					$insQl_b=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('ANZAHL_USER_LIZENZEN', '1') ");
					if(!$insQl_b){	 $kpMsg.="DB Error. ".mysql_error()." / "; $countError++;				}
				}
				else{
					$updQl_a=mysql_query("UPDATE konfiguration_sitpos SET wert = wert + 1 WHERE name = 'ANZAHL_USER_LIZENZEN' ");
					if(!$updQl_a){	 $kpMsg.="DB Error. ".mysql_error()." / "; $countError++;			}
					$delLicVioUser_a=mysql_query("DELETE FROM license_violation WHERE type = 'USERS_LIZENZ' ");
					if(!$delLicVioUser_a){	 $kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				}
				
			}

			else if(strtolower($nNat[0]) == 'user'){
				$countUser=mysql_query("SELECT wert FROM konfiguration_sitpos WHERE name = 'ANZAHL_USER_LIZENZEN' ");
				if(mysql_num_rows($countUser) == 0){
					$insQl_c=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('ANZAHL_USER_LIZENZEN', '1') ");
					if(!$insQl_c){	 $kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				}
				else{
					$updQl_b=mysql_query("UPDATE konfiguration_sitpos SET wert = wert + ".$nNat[2]." WHERE name = 'ANZAHL_USER_LIZENZEN' ");
					if(!$updQl_b) {	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				}
					$delLicVioUser_b=mysql_query("DELETE FROM license_violation WHERE type = 'USERS_LIZENZ' ");
					if(!$delLicVioUser_b){	 $kpMsg.="DB Error. ".mysql_error()." / ";		}
			
			}
			else if(strtolower($nNat[0]) == 'telefon'){
				$insQl_f=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('LIZENZ_TELEFON', 'ja') ");
				if(!$insQl_f){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++; 		}
			}
			else if(strtolower($nNat[0]) == 'eckarte'){
					# prüfen gibts so eine lizenz schon, wenn nicht -> insert, wenn schon update anzahl_user_lizenzen
				$checkEc=mysql_fetch_array(mysql_query("SELECT * FROM konfiguration_sitpos WHERE name = 'ECKARTE_LIZENZ'"));
				if($checkEc === false){
					# wird ein insert
					$insQl_ce=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES ('ECKARTE_LIZENZ', '1') ");
					if(!$insQl_ce){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++; 		}
				}
				else if($checkEc['wert'] > 0){
						# gibts schon eine wird ein update -> hinzuzählen
					$anzahlLic=$nNat[2];
					if($anzahlLic==0)$anzahlLic=1;
					$updQl_ec_upd=mysql_query("UPDATE konfiguration_sitpos SET wert = wert + ".$anzahlLic." WHERE name = 'ECKARTE_LIZENZ' ");
					if(!$updQl_ec_upd) {	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				}
				
			}
			else{ 
				// Lizenz Key ist nicht bekannt, tu gar nix
				/*
				$kpMsg.="TEST -> warum sind wier hier im else ???  / ".$nNat[0]; 
				//$countError++; RFR: kein Error - weil wenn eine Lizenz nicht bekannt ist, kann das vorkommne
								 // das war z.b. bei FILIAL Lizenz so!
				$insQl_g=mysql_query("INSERT INTO konfiguration_sitpos (name, wert) VALUES (UPPER('".$nNat[0]."'), 'ja') ");
				if(!$insQl_g){	$kpMsg.="DB Error. ".mysql_error()." / "; $countError++;		}
				*/
			}
		
		}
		if($countError==0){
			mysql_query("COMMIT");
			$kpMsg="Konfig sITpos update erfolgt. ";
			return $kpMsg;
		}
		else {
			mysql_query("ROLLBACK");
			file_put_contents("../kpcheckit.txt",basename( __FILE__) ." ". __LINE__ ." ".date('Y-m-d H:i:s')."\n key -> ".$kpMsg."\n ", FILE_APPEND );
			return $kpMsg;
		}
		mysql_query("set autocommit=1");
	
	}
	
	function checkLicenseLastVerify($callFrom=false, $callTarget=false){
		
		$kassaOffnenVal="";
		$indexPageVal="";
		$checkDaysArray=array();
		$lastV=array();
		$checkEmpty=false;
		$licDataQl=mysql_query("SELECT license, erstellt, lastverify, gueltig FROM license_encrypted");	
		if (!$licDataQl) return; // RFR: wenn das upgrade noch nicht durchgelaufen ist kommt sonst ein Fehler
		if (mysql_num_rows($licDataQl)==0) { $checkEmpty=true; } 
		
		while($licData=mysql_fetch_array($licDataQl)){
			$nativGueltig=sitPosDecrypt($licData['gueltig'], SITPOS_CRYPT);

				// bis wann (datum) ist die jeweilige Lic noch gültig
			$endGueltig=date('Y-m-d', strtotime($licData['lastverify']. " + ".$nativGueltig ." days"));
			$currDate=date("Y-m-d");
			$d_diff =strtotime($endGueltig)-strtotime($currDate);
			$dayDiff=floor($d_diff/(60*60*24));
			
			array_push($checkDaysArray, $dayDiff);
			array_push($lastV, $licData['lastverify']);

		}

		
		$abgelaufen=false;
		
		sort($checkDaysArray);
		sort($lastV);
		//var_dump($checkDaysArray);
		//var_dump($lastV);

		
			
		if((isset($checkDaysArray[0]) && $checkDaysArray[0] < 0 ) || $checkEmpty==true ){
				if($checkEmpty==true){
					$kassaOffnenVal="<br><b style=' font-size:1.5em; font-weight:bold; color:#b00;' >Fehlende Lizenz Einträge!</b><br>";
					$indexPageVal="<br><b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Fehlende Lizenz Einträge!</b><br>";
					$configGuiVal="<b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Fehlende Lizenz Einträge!</b>";
				}
				else{
					$abgelaufen=true;
					$kassaOffnenVal="<br><b style=' font-size:1.5em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit ".abs($checkDaysArray[0])." Tagen abgelaufen.</b><br>";
					$indexPageVal="<br><b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit ".abs($checkDaysArray[0])." Tagen abgelaufen</b><br>";
					$configGuiVal="<b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit ".abs($checkDaysArray[0])." Tagen abgelaufen</b>";
				}
		}
		else if($checkDaysArray[0] == 0 ){
				$abgelaufen=true;
				$kassaOffnenVal="<br><b style=' font-size:1.5em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit heute abgelaufen.</b><br>";
				$indexPageVal="<br><b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit heute abgelaufen</b><br>";
				$configGuiVal="<b style=' font-size:1.3em; font-weight:bold; color:#b00;' >Lizenz Bestätigung seit heute abgelaufen</b>";
		}
		else if($checkDaysArray[0] == 1 ){
				$abgelaufen=false;
				$kassaOffnenVal="<br><b style=' font-size:1.3em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tag) ab.</b><br>";
				$indexPageVal="<br><b style=' font-size:1.1em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tag) ab</b><br>";
				$configGuiVal= "<b style=' font-size:1.1em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tag) ab</b>";
		}
		else if($checkDaysArray[0] < 14 ){
				$abgelaufen=false;
				$kassaOffnenVal="<br><b style=' font-size:1.3em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tagen) ab.</b><br>";
				$indexPageVal="<br><b style=' font-size:1.1em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tagen) ab</b><br>";
				$configGuiVal= "<b style=' font-size:1.1em; font-weight:bold; color:#d80;' >Lizenz Bestätigung läuft demnächst (".$checkDaysArray[0]." Tagen) ab</b>";
		}
		else{
			$abgelaufen=false;
			$kassaOffnenVal="Zuletzt gültige Lizenz Bestätigung: ".date("d.m.Y", strtotime($lastV[0]))."<br>Laufzeit Tage: $checkDaysArray[0]";
				//$indexPageVal = "Zuletzt gültige Lizenz Bestätigung: ".$lastV[0]."<br>";
			$indexPageVal="";
			$configGuiVal="Lizenzierung am ".date("d.m.Y", strtotime($lastV[0]))." zuletzt bestätigt.";
		}
		
		if($abgelaufen===true){
			$delLicTable=mysql_query("DELETE FROM license_encrypted");
			if(!$delLicTable){	writeSitposLog(basename( __FILE__)." ". __LINE__ . "Delete Lic Table Error: ".mysql_error()); }
			
			$delLicTable=updateKonfigSitposOnLicCheck();	
		}
		

		return array($kassaOffnenVal, $indexPageVal, $configGuiVal, $abgelaufen); 

	}
	
	
	function sitpos_welt_anzeigen($display_string)
	{
		//sitpos_welt_ausblenden();
		//echo '<div id="sit_world"><img id="sit_world_gif" src="images/sIT_world.gif" /> <br> '.$display_string.' </div>';
		echo "<script>
				sitpos_welt_anzeigen('".$display_string."');
			 </script>";
		ob_flush();
		flush();
	}
	
	function sitpos_welt_ausblenden()
	{
		echo "<script>
				sitpos_welt_ausblenden();
			  </script>";
	}
	
	function starte_transaktion()
	{
		mysql_query("ALTER TABLE abgeschlossener_bon AUTO_INCREMENT = 1");
		mysql_query("ALTER TABLE dep AUTO_INCREMENT = 1");
		//RFR - V2.03 - das kann meiner Meinung nach nur Probleme machen
		//mysql_query("set autocommit=0");  
		mysql_query("SET TRANSACTION ISOLATION LEVEL READ COMMITTED");
		mysql_query("START TRANSACTION");
	}
	
?>