<?php 
	require_once("config/connect.php");
	require_once("config/pageConfig.php");
	require_once("global_functions.php");

	check_login('', '', 'ENABLERKEY_BENUTZER_MONATSBELEG');
	
	$tOp="";
	
	$kassa_offen_id=ist_kassa_offen();
	
	$kassaOffenMsg=false;
	if($kassa_offen_id > 0)$kassaOffenMsg="<h2 class='kassaoffenMsg'>Kassa ist geöffnet.<br />
								Schließen Sie die Kassa und rufen Sie die Funktion erneut auf.</h2>
								<p style='text-align:center;' ><button class='button_none_float orange' onclick=\"location.href='kassenabschluss.php'\">Zum Kassenabschluss</button></p>";

	$printerN=mysql_fetch_array(mysql_query("SELECT funktion FROM drucker WHERE LOWER(ist_rechnungsdrucker) = 'ja' LIMIT 1"));
	
	if(strlen($printerN[0]) > 1) $printerName=$printerN[0];
	else $printerName=false;
	
		# auslesen Sig Einheit, wenn nicht verfügbar werden Null Belegs Button ausgeblendet.
		$getSerNo=false;
		$sigCard = new COM('ATrustRegistrierkasseCom.Registrierkasse');
			$initCard=$sigCard->Initialize;
			$loadInfo=$sigCard->LoadInfo;
			$getSerNo=$sigCard->CertificateSerial;
			
		# abfragen von signatur Konstanten, wenn es die nicht gibt wurde sig Einheit nicht aktiviert
		$getSigKonstanten=false;
		if(defined('ZERTIFIKATS_NR') && ZERTIFIKATS_NR > 100 && defined('ZDA_ID') && ZDA_ID == 'AT1'){
			$getSigKonstanten=true;
		}
		
	
?>	
	
	<head>
	<meta charset="utf-8">
	<title>SITPOS Abschlussbelege</title>
		<?php echo META_DATA_ADMIN; ?>

		<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'; ?>
			<?php include 'include/menue.css'; ?>
			
			.abschlBelegContentDiv { position:relative; width:95%; margin:0% auto; height:82%; padding:.5% 2%; overflow:auto; 		}
			.abschlBelegContentDiv hr { width:94%; background:none; border:none; border-bottom:#a5a5a5 solid 1px; height:0px; margin:0 3% 1% 3%;	box-shadow:2px 2px 1px #888;		}
			.abschlBelegContentDiv p { text-align:center; margin:2px 0; padding:2px 0;	}
			.abschlBelegContentDiv button { margin:8px 0 16px 0; 	}
			#abschlBelegInnerContentDiv { position:relative; width:100%; height:auto; text-align:center;			}
			.kassaoffenMsg { font-size:1em; font-weight:bold; text-align:center; line-height:1.5em;	margin:3px 0 2px 0; padding:0; 				}
			#setAbschlMonat { font-weight:bold; text-align:center; line-height:1.5em; width:150px; border:darkblue 2px solid;			}
			.monatsabschlBut { width:50px; line-height:1.5em; margin:0 3px;	font-weight:bold; 			}
			.setAbschlMonatLabel {	 line-height:1.5em;	}
			.disabledButtonClass { cursor:default; color:#ccc;	text-shadow:1px 1px 4px #444; border-color:#c5c5c5;				}
			#ipFieldManuellNullBeleg{ line-height:1.5em; width:250px; border:darkblue 2px solid; margin:8px 0 16px 5px;				}

		</style>
		
	<script>
	

		function monatsbelegErstellen(callFrom, ignoreError=false){
			if(callFrom == 'nullBelegManuell') $("#nullBelegManuellBut").prop( "disabled", true ).css({ "background":"silver", "border":"gray", "cursor":"default"			});
			else $("#abschlussBelegBut").prop( "disabled", true ).css({ "background":"silver", "border":"gray", "cursor":"default"			});

			abschlussMonat=false;
			abschlussMonat=$('#setAbschlMonat').val();
			
			manuellBelegTxt=false;
			manuellBelegTxt=$('#ipFieldManuellNullBeleg').val();
			
			printerName="<?php echo $printerName; ?>";
			$.ajax({
				type: "POST",
				url: "ajax_funktionen_kp.php",
				dataType : "html",
				data: {	functionKey:'abschlussNullBelegErstellen', abschlussMonat:abschlussMonat, manuellBelegTxt:manuellBelegTxt, ignoreError:ignoreError, callFrom:callFrom		},
				async: true,
				success:function(ajaxResponse){
					if (ajaxResponse.indexOf('success') !== -1) {
						// ist besonders weil vom bon_ausdrucken_pdf ein json erray zurückgeschrieben wird
						// splitten und den zweiten Teil am screen ausgeben
						if(callFrom=='nullBelegManuell'){
							successMsg=ajaxResponse.replace(/\[(.+?)\]|success\s?/ig, "");
							$("#nullBelegErstellenDiv").html("<p>"+successMsg+"</p>").css({ "margin":"3px 0 24px 0"				});

						}
						else{							
							successMsg=ajaxResponse.replace(/\[(.+?)\]|success\s?/ig, "");
							successMsg=successMsg.replace("erstellt", " für Monat "+abschlussMonat+" erstellt");
							$("#abschlBelegInnerContentDiv").html("<p>"+successMsg+"</p>");
						}	
					}
					else {
						if (ajaxResponse.toLowerCase().indexOf('dep error') !== -1) {
							openErrorDialog("AbschlussBelegDepError", "Datenerfassungs Protokoll oder Signatur Error", ajaxResponse, "wrapper_bon");
						}
						else if(ajaxResponse.toLowerCase().indexOf('error') !== -1){
							openErrorDialog("AbschlussBelegDepError", "Abschluss Beleg Erstellen Error", ajaxResponse, "wrapper_bon");
						}
					}
				}
			});
		}
		
		
		function monthPlusMinus(dDirection){
			abschlussMonat=$('#setAbschlMonat').val();
			var rRes = abschlussMonat.match(/^\d{4}\-\d{2}/);
			zuz=false;
			if(rRes !== null){
				mTemp=rRes.toString().split("-");
				mData=mTemp[1];
				if(dDirection == 'plus'){
					mData*=1;
					mData++;
					if(mData <= 9 && mData > 0) mData=mTemp[0]+"-0"+mData;
					else if(mData > 9 && mData <=12) mData=mTemp[0]+"-"+mData;
					else if(mData == 13) mData=((mTemp[0]*=1)+1)+"-01";
					else mData = $('#hiddenDateMonthField').val();
				}
				if(dDirection == 'minus'){
					mData*=1;
					mData--;
					if(mData <= 9 && mData > 0) mData=mTemp[0]+"-0"+mData;
					else if(mData > 9 && mData <=12) mData=mTemp[0]+"-"+mData;
					else if(mData == 0) mData=((mTemp[0]*=1)-1)+"-12";
					else mData = $('#hiddenDateMonthField').val();
				}
				$('#setAbschlMonat').val(mData);
			
			}
			else $('#setAbschlMonat').val($('#hiddenDateMonthField').val());
		}
		
		function openErrorDialog(callFrom=false, boxTitle=false, dialogContent=false, wrappEr=false) {
			if(wrappEr == false){ wrappEr='wrapper';   }
			wrapHeight=$("#"+wrappEr).height();	
			dialogCssClass='generalDialogBox';
			buttonTxtLeft="Bestätigen";
			buttonTxtRight="Fenster schließen";
			mminHeight=150;
			wwidth=600;
			
			if(callFrom == 'AbschlussBelegDepError'){
				buttonTxtLeft="Trotzdem durchführen";				
				buttonTxtRight="Dialog schließen";
				wwidth=750;
			}
			
			dialogContent=dialogContent.replace(/dep error: /i, "");
		
			$("#errorDialog").html(dialogContent);
			$("#errorDialog").dialog({
				resizable: false,
				open: function(event, ui) { $(".ui-dialog-titlebar-close", ui.dialog | ui).hide(); 
											$("body").css({ "overflow":"hidden"		});
				},
				beforeClose: function( event, ui ) { $("body").css({ "overflow":"visible"		}); },
				modal: true,
				title: boxTitle,
				height: 'auto',
				minHeight: mminHeight,
				maxHeight: wrapHeight,
				width: wwidth,
				
				position: { my: "center", at: "center", of: "#"+wrappEr },
				dialogClass: dialogCssClass,
				
				buttons:{
					/*"1": { id: 'dialogButL', text: buttonTxtLeft, click: function(){ 
								if(callFrom == 'AbschlussBelegDepError') monatsbelegErstellen('abschlussBeleg', 'ignoreDeppError');;
								$(this).dialog("close"); 
							}, 
								"class":"button button_extra_gross dialog_orange" },
					*/		
					"2": { id: 'dialogButR', text: buttonTxtRight, click: function(){ 
								$(this).dialog("close"); 
								location.reload(); 
								}, "class":"button button_extra_gross dialog_orange" }				
				}
			});	
		
		}
		
		function reactivateSignature(firstParam){
			$("#reactivateSignatureBut").prop( "disabled", true ).removeClass('orange').addClass('gGray disabledButtonClass');		
			$.ajax({
				type: "POST",
				url: "include/global_sig_functions.php",
				dataType : "html",
				data: {	functionKey:'reactivateSignature', firstParam:firstParam	},
				async: true,
				success:function(ajaxResponse){
					if(checkJson(ajaxResponse) == true) {
						respArray=JSON.parse(ajaxResponse);
						if(respArray[0] == 'newSerNo'){
								newCardBut="<button id='newSigCardBut' class='button_none_float orange' onclick='registerNewCard()' >Neue Signaturkarte aktivieren</button>";
								$("#reactivateSignatureDiv").html(respArray[1]+newCardBut);
						}
						else if(respArray[0] == 'unsignedBonsDedected' && checkJson(respArray[1]) == true){
								$("#jsonBonListStringDiv").html(respArray[2]);
								//activateBut='<button id="sammelbelegErstellenBut" class="button_none_float orange" onclick=\'reactivateSignatureSammelbelegErstellen("")\' >Sammelbeleg Erstellen</button>';
								//$("#reactivateSignatureDiv").html(respArray[3]+activateBut);			
								// todo alex signature
								reactivateSignatureSammelbelegErstellen('');	
								$("#reactivateSignatureDiv").html(respArray[3]);								
						}
						else $("#reactivateSignatureDiv").html(respArray.join(" / "));						
					}

					else $("#reactivateSignatureDiv").html("Fehler beim auslesen der Signatureinheit bzw. der unignierten Bons.<br /><a href='abschlussbeleg_erstellen.php'><button class='button_none_float orange'>Seite neu Laden</button></a>");

					$( '.abschlBelegContentDiv' ).scrollTop($('.abschlBelegContentDiv')[0].scrollHeight);
				}
			});
		}
		

		
		function registerNewCard(){
			$("#newSigCardBut").prop( "disabled", true ).removeClass('orange').addClass('gGray disabledButtonClass');
			$.ajax({
				type: "POST",
				url: "ajax_funktionen_kp.php",
				dataType : "html",
				data: {	functionKey:'newSignatureCartEnable'  },
				async: true,
				success:function(ajaxResponse){
					if(checkJson(ajaxResponse) == true) {
						
						respArray=JSON.parse(ajaxResponse);
						if(respArray[1].length == 4){
							activateBut='<button id="reactivateSignatureBut" class="button_none_float orange" onclick=\'reactivateSignature("")\' >Auf unsignierte Bons Prüfen</button>';
							$("#reactivateSignatureDiv").html(respArray[0]+activateBut);
						}
					}
					else{
						$("#reactivateSignatureDiv").html("<p>Fehler beim freischalten der neuen Signaturkarte.</p><p>"+ajaxResponse+"</p><p>Stellen sie sicher das die Karte ordnungsgemäß angeschlossen ist und wiederholen Sie den Vorgang.</p>")
					}
				}
			});
		
		}
		
		
		function reactivateSignatureSammelbelegErstellen(x){
			$("#sammelbelegErstellenBut").prop( "disabled", true ).removeClass('orange').addClass('gGray disabledButtonClass');
			bonListString=$("#jsonBonListStringDiv").html();
			$.ajax({
				type: "POST",
				url: "ajax_funktionen_kp.php",
				dataType : "html",
				data: {	functionKey:'abschlussNullBelegErstellen', functionTarget:'reactivateSammelbelegErstellen', bonListe:bonListString	},
				async: true,
				success:function(ajaxResponse){
					if(checkJson(ajaxResponse) == true) {
						respArray=JSON.parse(ajaxResponse);
						if($.isArray(respArray[1])) {
							$("#reactivateSignatureDiv").html(respArray[2]);
						}

						$("#reactivateSignatureBut").prop( "disabled", false ).removeClass('gGray disabledButtonClass').addClass('orange');
					}

					else {
						displayTxt=ajaxResponse.replace(/\[(.+?)\]|success\s?/ig, "");
						$("#reactivateSignatureDiv").html(displayTxt);
					}
					
					$( '.abschlBelegContentDiv' ).scrollTop($('.abschlBelegContentDiv')[0].scrollHeight);	
				}
			});		
		}
		

	</script>

</head>

<body>
	<div id="errorDialog"></div>
	<div id="jsonBonListStringDiv" style="display:none;" ></div><!-- das json Array lässts ich als parameter nicht übergeben, wird hier hineingeschrieben und dann herausgelesen -->
	<div id="wrapper_bon" class="wrapper_bon">
			<input type="hidden" id="hiddenDateMonthField" value="<?php echo date('Y-m'); ?>" />

			<?php	 menue_anzeigen(true); 
				echo "<div class='abschlBelegContentDiv'>
						<h2 class='kassaoffenMsg' style='font-size:1.2em;' >Monats Null Beleg erstellen.</h2>";
						
				echo "<div id='abschlBelegInnerContentDiv'>";
				
					if($getSerNo > 100 && $getSigKonstanten == true){
						$monatsBut="<button id='abschlussBelegBut' class='button_none_float orange' onclick=\"monatsbelegErstellen('abschlussBeleg', '')\" >
										Monats Null Beleg erstellen</button>";
						$fButton="<button id='nullBelegManuellBut' class='button_none_float orange' onclick=\"monatsbelegErstellen('nullBelegManuell', '')\" >
										Nullbeleg manuell erstellen</button>";
						$ipFieldDisable="";
					}
					else{
						if($getSigKonstanten == false) $sigActiveTxt=", und/oder Sig Einheit wurde nicht aktiviert.";
						else $sigActiveTxt="";
						$monatsBut="Signatureinheit nicht verfügbar".$sigActiveTxt.".";
						$fButton="Signatureinheit nicht verfügbar".$sigActiveTxt.".";
						$ipFieldDisable="disabled style='background:#ccc; color:#888; cursor:default;' ";
					}
				
				
				if($kassaOffenMsg != false){
					echo $kassaOffenMsg;
				}
				else{

					$getLastAbschlBon=mysql_fetch_array(mysql_query("SELECT * FROM abschluss_belege 
													WHERE abschluss_monat > 2015  AND LOWER(beleg_kennung) LIKE 'monats_beleg_%' 
													ORDER BY abschluss_monat DESC LIMIT 1"));
					
					if($getLastAbschlBon['beleg_kennung'] == true && preg_match('/^monats_beleg_/i', $getLastAbschlBon['beleg_kennung']) === 1){
						# wenn ein monatsabschluss Beleg existiert, ist das der letzte weil im Query nach abschluss monat desc sortiert
						$getLastAbschlBon=preg_replace("/monats_beleg_/i", "", $getLastAbschlBon['beleg_kennung']);
						$xTmp=explode("-", $getLastAbschlBon);
						if($xTmp[1] == 12){
							$yTmp=sprintf("%02d", 1);
							$xTmp[0]+=1;
						}
						else $yTmp=sprintf("%02d", $xTmp[1]+1);		#	sprintf("%02d", $num);					
						$abschlBelegVorschl=$xTmp[0]."-".$yTmp;
						
						echo "<p>Letzter Abschlussbeleg: ".$getLastAbschlBon."</p>
								<p><label for='setAbschlMonat' >Abschluss Bon Erstellungs Monat: </label>
									<input id='setAbschlMonat' type='text' class='' ".$ipFieldDisable." value='".$abschlBelegVorschl."' />
										<button onclick=\"monthPlusMinus('plus')\" ".$ipFieldDisable." class='button_none_float orange monatsabschlBut' >+</button>
										<button onclick=\"monthPlusMinus('minus')\" ".$ipFieldDisable." class='button_none_float orange monatsabschlBut' >-</button></p>";
					}
					else {
						# es existiert "noch" kein Monatsabschluss Beleg (Kassa neu)
						if(date("d") > 27)$abschlBelegVorschl=date('Y-m');
						else $abschlBelegVorschl=date("Y-m", mktime(0, 0, 0, date("m")-1, date("d"),   date("Y")));
						
						echo "<p>Letzter Abschlussbeleg nicht gefunden.</p>
								<p><label for='setAbschlMonat' class='setAbschlMonatLabel' >Abschluss Bon erstellen für Monat: </label>
									<input id='setAbschlMonat' type='text' class='' value='".$abschlBelegVorschl."' />
										<button onclick=\"monthPlusMinus('plus')\" class='button_none_float orange monatsabschlBut' >+</button>
										<button onclick=\"monthPlusMinus('minus')\" class='button_none_float orange monatsabschlBut' >-</button></p>";
					}
					
					echo "<p >".$monatsBut."</p>";
				}
				
				echo "<hr />";
				
				
				
				echo "<h2 class='kassaoffenMsg' style='font-size:1.2em;' >Null Beleg manuell erstellen </h2>
								<div id='nullBelegErstellenDiv'><p >
									<label for='ipFieldManuellNullBeleg' >Belegtext Eingabe: </label>
									<input type='test' id='ipFieldManuellNullBeleg' ".$ipFieldDisable." value='Manueller Nullbeleg' />
								</p>
								<p>".$fButton."</p>
								</div>";
				echo "<hr />";
				echo "<h2 class='kassaoffenMsg' style='font-size:1.2em;' >Reaktivieren der Signatureinheit nach Ausfall und oder Kartentausch</h2>";
				
				echo "<div id='reactivateSignatureDiv'";				
					echo "<p>Wurden durch Ausfall der Signatureinheit Bons unsigniert ausgegeben und Signatureinheit wieder funktionsfähig gemacht, kann durch Click auf Signatureinheit aktivieren die Einheit wieder aktiviert werden.</p>
						<p>Nach Aktivierung einer neuen Karte stellen Sie sicher das diese Karte beim Finanzamt registriert ist.</p>
						<p ><button id='reactivateSignatureBut' class='button_none_float orange' onclick=\"reactivateSignature('')\" >Signatureinheit re-aktivieren</button></p>
					</div>";
					
				echo "<div id='testDivX'></div>";
				
				echo "</div>";	# inner content div ende 
					$uLevel=$_SESSION['userLevel'];
					if($uLevel >= ENABLERKEY_SIGNATURDATEN_AUSDRUCK && defined('ZERTIFIKATS_NR') && ZERTIFIKATS_NR > 1000){
					/*
						$scanRes = scandir('docs/', SCANDIR_SORT_DESCENDING);
						$fOp=array();
						for ($i=0; $i < sizeOf($scanRes); $i++){
							if(strpos($scanRes[$i], '_sigdata') === false )continue;
							else array_push($fOp, $scanRes[$i]);
						}
						$printLink=false;
						if(isset($fOp[0])){
							$printLink="<div style='position:absolute; bottom:0; width:100%; padding-bottom:1%; height:auto;'>										
											<p style='text-align:center; margin:0; padding:0;'>	<a href='docs/".$fOp[0]."' target='_blank' >
													<button class='button_none_float orange' style='margin:0 1%;'  >Signaturdaten drucken/speichern</button>
												</a>
											</p>
										</div>";
						}
					*/	
					//	$scanRes = array_diff( scandir("/docs/", SCANDIR_SORT_DESCENDING), array(".", "..") );
						
						
						
						
					#	echo $printLink;
					
					}
			
			?>
	
			
		</div>	<!-- content div ende -->
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	</div>
</body>
</html>