<?php 

	require_once("config/connect.php");
	require_once("global_functions.php");

	#$getData=mysql_fetch_array(mysql_query("SELECT MAX(bon_id) AS lastBonnr, dep_id, MAX(beleg_nr) AS lastDep FROM abgeschlossener_bon
	#										LEFT JOIN dep ON abgeschlossener_bon.bon_id = dep.beleg_nr"));
	# ist zu langsam wenn es sehr viele Einträge gibt
	$getData=array();										
	$bonX=mysql_fetch_array(mysql_query("SELECT MAX(bon_id) AS lastBonnr FROM abgeschlossener_bon"));
	$depX=mysql_fetch_array(mysql_query("SELECT MAX(beleg_nr) AS lastDep FROM dep"));
	$getData['lastBonnr']=$bonX['lastBonnr'];
	$getData['lastDep']=$depX['lastDep'];
	
	
	if(isset($_POST['abgeschlBonsPruefen']) && $_POST['abgeschlBonsPruefen'] > 1){
		$startCheck=$bonX['lastBonnr']-$_POST['abgeschlBonsPruefen'];
		$sollWert=$_POST['abgeschlBonsPruefen'];
		if($startCheck < 1){
			$startCheck=1;
			$sollWert=$bonX['lastBonnr'];
		}
		
	}
	else {
		# wenn nichts im Feld eingetragen ist, default wert 100    das kommt beim ersten aufruf der seite, gibts noch keinen Form Wert
		if($bonX['lastBonnr'] >= 100){
			$startCheck=$bonX['lastBonnr']-100;
			$sollWert=100;
		}
		else {
			$startCheck=1;
			$sollWert=$bonX['lastBonnr'];		
		}
	
	}
	

	$checkC=mysql_query("SELECT bon_id FROM abgeschlossener_bon WHERE bon_id > ".$startCheck."  ORDER BY bon_id ASC");
	
	$refCeck=$startCheck;
	$checkContResult=array();
	

	if(mysql_num_rows($checkC) != $sollWert){
		$countMiss=$sollWert-mysql_num_rows($checkC);
		for($i=0; $i < $sollWert; $i++){
			$searchBon=$startCheck+$i;
			$getBon=mysql_fetch_array(mysql_query("SELECT bon_id FROM abgeschlossener_bon WHERE bon_id = ".$searchBon.""));
			if(!$getBon['bon_id']){
				array_push($checkContResult, $searchBon);
			}
		}
		#echo "<br />Fehlende bons / ".$sollWert-mysql_num_rows($checkC);
	}
	
	if(isset($_POST['clearTxtArea']) && $_POST['clearTxtArea'] =='reloadPage'){
		# wenn seite neu geladen wird, lösche gefundenen Bon Nummern
		$checkContResult=array();
	}
	
	$bonCheckOp=false;
	if(count($checkContResult) > 0){
		$bonCheckOp="Fehlende Bons gefunden (".count($checkContResult).").";
	}

	$curData=array($getData['lastBonnr'], $getData['lastDep']);

	$sigcardData = new COM('ATrustRegistrierkasseCom.Registrierkasse');

	$iInit=$sigcardData->Initialize;
			$iInfo=$sigcardData->LoadInfo;
			$cCard=$sigcardData->CheckCard;
			
			if($iInfo != 0 || $cCard != 0){
				$fFin=$sigcardData->Finalize;
				$iInit=$sigcardData->Initialize;
				$iInfo=$sigcardData->LoadInfo;
				$cCard=$sigcardData->CheckCard;
			}
			
			$zdaId=false;
			$serialNo=false;

			$outputZda=$sigcardData->ZdaId;
			$outputSer=$sigcardData->CertificateSerial;
			
			$error_codeZda=true;
			$error_codeSer=true;
			$serNrHex=false;
			
			if(strlen($outputZda) > 2)$error_codeZda=false;
			
			if($outputSer > 1000){
				$error_codeSer=false;
				$serNrHex=dechex($outputSer);
			}
			
	if($error_codeSer === false && $error_codeZda === false){
		$checkCardRes="<p><div style='position:relative; float:left; width:41%; line-height:1.3em; '>Signaturkarte Serien Nr.: ".$outputSer." </div>
					<form action='__bonNachziehenNachsignieren.php' method='post' >
					<input type='hidden' name='abgeschlBonsPruefen' value='100' />
					<input type='hidden' name='clearTxtArea' value='reloadPage' />
					<button type='submit' class='button_none_float orange' style='position:relative; float:left; width:18%;' >Seite Laden</button>
					</form>
					<div style='position:relative; float:left; width:41%; text-align:right; line-height:1.3em; '>".date('Y-m-d h:i')."</div><div style='clear:both;'></div></p>
					<hr />";
		$cardCheck=true;
	}
	
	else{
		$checkCardRes="<p>Fehler beim Lesen der Signaturkarte !!!!!!!!!!!!</p>";
		$cardCheck=false;
	}
	
	
	$nachsignierenMsg="";
	
	if(isset($_POST['abgeschlBonNachziehen']) && $_POST['abgeschlBonNachziehen'] == 'bonNachziehen'){
		
		if(isset($_POST['abgeschlBonsNachz']) && strlen($_POST['abgeschlBonsNachz']) > 1 ){
			$nachzRes="";
			$nachzBons=explode(";", $_POST['abgeschlBonsNachz']);
			$sqErrorCount=0;
			$sqErrorMsg="";
			
			mysql_query("START TRANSACTION");
			for($i=0; $i < count($nachzBons); $i++){
				$insQlB=false;  $insQlP=false; $insQlZ=false; $insQlS=false; $insQlA=false;
				$xBon=$nachzBons[$i]-1; 
				$bonBefData=mysql_fetch_array(mysql_query("SELECT * FROM abgeschlossener_bon WHERE bon_id = ".$xBon." "));

				$kassaAbschlId=$bonBefData['kassa_abschluss_id'];
				$verkauferId=$bonBefData['verkaufer_id'];
				$erstDate=$bonBefData['bon_erstellt_datum'];
				
				$insQlB=mysql_query("INSERT INTO abgeschlossener_bon  SET bon_id = '".$nachzBons[$i]."', kassa_abschluss_id = '".$kassaAbschlId."',
						kunden_id = 0, verkaufer_id = '".$verkauferId."', gesamt_summe = 0, retourgeld = 0, bon_erstellt_datum = '".$erstDate."',
						storno_grund = '',  storno_bemerkung = '', aktiv_user = 1, dep_nullbeleg = 2 ");
				if(!$insQlB){ $sqErrorMsg.="DB Error, ".mysql_error(); $sqErrorCount++;				}
				$insQlP=mysql_query("INSERT INTO abgeschlossener_bon_produkte  SET bon_id = ".$nachzBons[$i]." ");
				if(!$insQlP){ $sqErrorMsg.="DB Error, ".mysql_error(); $sqErrorCount++;				}
				$insQlZ=mysql_query("INSERT INTO abgeschlossener_bon_zahlung  SET bon_id = ".$nachzBons[$i].", Name = 'Bar',  
										zahlbetrag = 0.0, zahlbetrag_tatsaechlich =0.0 ");
				if(!$insQlZ){ $sqErrorMsg.="DB Error, ".mysql_error(); $sqErrorCount++;				}
				$insQlS=mysql_query("INSERT INTO abgeschlossener_bon_steuern  SET bon_id = ".$nachzBons[$i].", tax_rate = '0.0', gesamt_betrag = '0.0' ");
				if(!$insQlS){ $sqErrorMsg.="DB Error, ".mysql_error(); $sqErrorCount++;				}
				$insQlA=mysql_query("INSERT INTO abschluss_belege  SET beleg_kennung = 'sitPOS_Nullbeleg', bon_id = ".$nachzBons[$i]." ");
				if(!$insQlA){ $sqErrorMsg.="DB Error, ".mysql_error(); $sqErrorCount++;				}
				$nachzRes.=" # ".$nachzBons[$i];
			
			}
			
			if($sqErrorCount == 0){
				mysql_query("COMMIT");
				header("Location: ".$_SERVER["PHP_SELF"]);

			}
			else{
				mysql_query("ROLLBACK");
			}
			mysql_query("set autocommit=1");
		}
	}
	
	if(isset($_POST['nachsignierenBonNrStart']) && is_numeric($_POST['nachsignierenBonNrStart'])){
		if(isset($_POST['setRuntimeLimit']) && is_numeric($_POST['setRuntimeLimit'])){
			$nachsignierenMsg.="runtime Limit erkannt<br />";
			set_time_limit ( $_POST['setRuntimeLimit'] );
		}
		
		$nachsiegnierenStart=$_POST['nachsignierenBonNrStart'];
		$checkStartBeleg=mysql_fetch_array(mysql_query("SELECT * FROM abschluss_belege WHERE bon_id= ".$nachsiegnierenStart." "));
		$getStartBelegNr=mysql_fetch_array(mysql_query("SELECT * FROM abschluss_belege WHERE beleg_kennung= 'signatur_start_beleg' "));
		mysql_query("START TRANSACTION");
		$delDep=mysql_query("DELETE FROM DEP WHERE beleg_nr >= ".$nachsiegnierenStart." ");
		$nachsignierenMsg.= "Anzahl gelöschter DEP Einträge: ".mysql_affected_rows();
		
		$maxBonNr=mysql_fetch_array(mysql_query("SELECT MAX(bon_id) AS maxBonNr FROM abgeschlossener_bon"));
		$nachsignierenMsg.= ", höchste Bon Nr: ".$maxBonNr['maxBonNr']."<br /><br />";
		$errorMsg="";
		$sigResult="";
		$errorCount=0;

			for($i=$nachsiegnierenStart; $i<= $maxBonNr['maxBonNr']; $i++){
				if($i == $getStartBelegNr['bon_id']){
					$callFromParam='startbeleg';
				}
				else $callFromParam='';
				$reSig=dep_table_schreiben($i, $callFromParam);
				if($reSig[0] != true){
					$errorMsg.= "Bon Nr. ".$i." ".$reSig[1]."<br />";
					$errorCount++;
				}
				if($i == $getStartBelegNr['bon_id'] && $reSig[0] == true){
					$sigResult.="Startbeleg ".$i." ins Dep geschrieben<br />";
				}
			}

			$sigResult.="Belege ".$nachsiegnierenStart." bis ".($i-1) ." ins Dep geschrieben.";

		
		if($errorCount==0){
			mysql_query("COMMIT");
			$nachsignierenMsg.=$sigResult;
			header("Location: ".$_SERVER["PHP_SELF"]);
		}
		else{
			mysql_query("ROLLBACK");
			$nachsignierenMsg="Fehler beim nachsignieren, Prozess nicht durchgeführt.";
		}
		mysql_query("set autocommit=1");
	}
	
	else if(isset($_POST['nachsignierenBonNrStart']) && is_numeric($_POST['nachsignierenBonNrStart']) == false){
		$nachsignierenMsg="Bon Nr. fehlt oder ungültig.";
	}
	
	if($curData[0] != $curData[1]){
		$firstBackSigBonNr=$curData[1]+1;
	}
	else $firstBackSigBonNr = '';
	
	set_time_limit ( 30 );
	
	$formContent="";
	$bonFormContent="";

	if($cardCheck==true){
		if(count($checkContResult) == 0)$nachziehenButTxt="Abgeschl Bons durchsuchen";
		else $nachziehenButTxt="Bon's nachziehen ausführen";
		
		
		#if($bonCheckOp != false){
			$bonFormContent.="<form action='__bonNachziehenNachsignieren.php' method='post'>";
			$bonFormContent.="<p>".$bonCheckOp."</p>
				<p><label  class='ipLabel' for='abgeschlBonsPruefen'>Anzahl Bon's Prüfen (vom letzten ..)</label>
				<input class='bonNrStartIp' id='abgeschlBonsPruefen' type='text' name='abgeschlBonsPruefen' value='".$sollWert."' /></p>
				
				<input  type='hidden' name='abgeschlBonNachziehen'  value='bonNachziehen' />
				
				<p><label style='position:relative; float:left' class='ipLabel' for='xTextArea'>Bon's nachziehen (abgeschl Bon's):<br />Mit ; trennen</label>
				<p><textarea id='xTextArea' name='abgeschlBonsNachz'  >".implode(";", $checkContResult)."</textarea></p>
				<div style='clear:both;'></div>
				
				<button class='nachziehBut button_none_float orange' type='submit' >".$nachziehenButTxt."</button>";
			
			$bonFormContent.="</form>
					<hr />";
			
	#	}
		
		
		$formContent .="<p class='infoTx'>Sollte das gesetzte Zeitlimit nicht ausreichen kann es hier für diese Funktion erhöht werden. Das Limit wir hinterher automatisch auf 30 sekunden zurückgesetzt.</p><hr />
			<p class='infoTx'>Letzte Bon Nr: ".$curData[0]."</p>
			<p class='infoTx'>Letzte Dep Eintrag: ".$curData[1]."</p>
			<p><label class='ipLabel' for='setRuntimeLimit'>PHP Runtime Limit setzen:</label>
			<input class='bonNrStartIp' type='text' name='setRuntimeLimit' id='setRuntimeLimit' value='' /></p>
			<p><label  class='ipLabel' for='nachsignierenBonNrStart'>Nachsignieren von Bon Nr. beginnend:</label>
			<input class='bonNrStartIp' type='text' name='nachsignierenBonNrStart' id='nachsignierenBonNrStart' value='".$firstBackSigBonNr."' /></p>
			<button class='nachziehBut button_none_float orange' type='submit' >Nachsignieren ausführen</button>";
	}
	else $formContent="<button class='nachigBut button_none_float orange' type='submit' >Seite neu Laden</button>";
	

?>
	<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    <title>SITPOS Intern</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">
	<style type="text/css">
	<?php include 'include/main.css'; ?>
		body * {font-size:16px !important; }
		#wrapContent {width:96%; height:96%; margin:1%; padding:1%; background:#eee; overflow:auto;}
		.bonNrStartIp {margin:0 0 0 10px;}
		.ipLabel {display:inline-block; width:380px; font-size:1em; font-weight:bold; }
		.nachziehBut { padding:2px 5px; width:30%; margin:15px 0 15px 35%; cursor:pointer; }
		.infoTx { font-size:.9em; font-weight:normal;}
		.bonNrnNachziehen{ width:50%;			}
		#xTextArea{ position:relative; float:left; width:55%; margin-left:10px;					}
	</style>


	<!--<script src="include/global_js_functions.js"></script>-->

	<script>
	
	
	</script>
	

		
</head> 
<body> 
	<div id="wrapper" class="wrapper">
		<div id="wrapContent">
		<h2 style="color:#c00; font-size:1.2em !important; font-weight:bold; text-align:center;">Bevor die Funktionen ausgeführt werden unbedingt ein Backup/Datensicherung erstellen.</h2>
		<?php echo $checkCardRes ?>
		<?php echo $bonFormContent ?>
		<form action="__bonNachziehenNachsignieren.php" method="post">
		<?php echo $formContent; ?>

		</form>

		<hr />
		<?php 
			echo $nachsignierenMsg;
		?>

		</div>
	</div>
</body>
</html>























































