	<?php
	// Gibt den Datums Teil für den WHERE string von auswertungen zurück
	// $tableCol .... das feld welches datum geprüft werden soll
	function get_where_string_report_datum($tableCol, $startDate=false, $startTime=false, $endDate=false, $endTime=false)
	{
		$startTime = '00:00'; $endTime='23:59:59';
		if ($startTime==false)
		{			
			if(isset($_POST['startTime']) && $_POST['startTime'] != "00:00")	
			{			
				$startTx=$_POST['startTime'];
				if(preg_match('/^(([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)$/', $startTx)) $startTime=$startTx;
				else $startTime='00:00:00';
			}
		}
		if ($endTime==false)
		{
			if(isset($_POST['endTime']))	
			{
				$endTx=$_POST['endTime'];
				if($endTx == '23:59' ) $endTx = '23:59:59';
				if(preg_match('/^(([0-1][0-9]|2[0-3]):[0-5][0-9](:[0-5][0-9])?)$/', $endTx)) $endTime=$endTx;
				else $endTime='23:59:59';
			}
		}
		if ($startDate==false)
		{
			if(isset($_POST['startDate']) && $_POST['startDate'] != "")	{
				$startDate=$_POST['startDate'];	
				$startDatePost=true;
				
						#    scheint zwingend   " checkdate ( int $month , int $day , int $year ) "  in dieser reihenfolge zu sein !!!
				if(checkdate(date('m', strtotime($startDate)),date('d', strtotime($startDate)),date('Y', strtotime($startDate)))==true) $checkStartDate=true;
				else  	$checkStartDate=false;
			}
			else { $startDate=false; $checkStartDate=false;	}
		} else $checkStartDate=true;
		
		
		if ($endDate==false)
		{
			if(isset($_POST['endDate']) && $_POST['endDate'] != "")	
			{
				$endDate=$_POST['endDate'];
				$endDatePost=true;
				if(checkdate(date('m', strtotime($endDate)),date('d', strtotime($endDate)),date('Y', strtotime($endDate)))==true) $checkEndDate=true;
				else 	$checkEndDate=false;
			}
			else { $endDate=false; $checkEndDate=false;	}
		} else $checkEndDate=true;
		
		// weder start noch enddate gesetzt
		if($checkStartDate==false && $checkEndDate==false){
			$dateWhere="";
			$whereInfo="<span >Kein Datum gesetzt</span >";
		}
		//  start datum gesetzt end datum nicht -> select das Start datum als einen tag
		else if($checkStartDate==true && $checkEndDate==false){
			$dateWhere=" ".$tableCol." >= '".$startDate." ".$startTime."' AND  ".$tableCol." < '".$startDate." ".$endTime."'";
			$dDate = strtotime( $startDate." ".$startTime );
			$infoD = date( 'j.n.Y H:i', $dDate );
			$whereInfo="<span >Vom: <b>".$infoD."</span>";
		}
		//  start und end datum gestzt -> select between start und end datum 
		else if($checkStartDate==true && $checkEndDate==true){
			$dateWhere = " ".$tableCol." >= '".$startDate." ".$startTime."' AND ".$tableCol." < '".$endDate." ".$endTime."'";
			$dDateSt = strtotime( $startDate." ".$startTime  );
			$infoDst = date( 'j.n.Y H:i', $dDateSt );
			$dDateEnd = strtotime( $endDate." ".$endTime  );
			$infoDend = date( 'j.n.Y H:i', $dDateEnd );
			$whereInfo="<span >Von: <b>".$infoDst."</b> bis: <b>".$infoDend."</b></span>";
		}
		//  start nicht gesetzt end datum schon gestzt -> kein datums select, output ohne datums einschränkung
		else if($checkStartDate==false && $checkEndDate==true){
			$dateWhere="";
			$whereInfo="<span >Kein Datum gesetzt</span >";
		}
		#writeLog(basename( __FILE__)." ". __LINE__ . "report date Where -> ".$dateWhere." -->>>> ".$startTime." / ".$endTime);
		
		$resultArray=array($dateWhere, $whereInfo);
		
		return $resultArray;
	}
	
	//Baut die Parameter für den where string zusammen - bei Auswertungen verwendet
	// Input Parameter:   
	//					$zahlungsart .... 			nur für diese Zahlungsart
	//					$kassabuch_wirksam ....		nur für Zahlungsarten, die Kassabuch wirksam sind
	//					$kassenabschluss_id ...		nur für Buchungen mit dieser Kassenabschluss ID
	// Output Parameter:
	//					$string ....				string der für WHERE mysql query verwendet werden kann.
	function get_where_string($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		// Hier das where zusammenstellen
		$where=" ";
		$whereInfo="";
		$where_kassa_abschluss="";
		if ($kassenabschluss_id!==false)
		{
			$where_kassa_abschluss=" kassa_abschluss_id=$kassenabschluss_id ";
			$whereInfo="Kassenabshluss ID ist $kassenabschluss_id";
		}
		
		$where_zahlungsart="";
		if ($zahlungsart!==false)
		{
			$where_zahlungsart=" abgeschlossener_bon_zahlung.Name='$zahlungsart' ";
		}
		$where_kassabuch_wirksam="";
		if ($kassabuch_wirksam==true)
		{
			$where_kassabuch_wirksam=" kassabuch_wirksam <> 0 ";
		}
		
		// mache den Where string für das Datum - Datum kann auch im $_POST stehen
		$tableCol="abgeschlossener_bon.bon_erstellt_datum";
		$sqlDateWhere=get_where_string_report_datum($tableCol, $dateFrom, $timeFrom, $dateTo, $timeTo);
		//print_r($sqlDateWhere);
		$where_datum=$sqlDateWhere[0];		
		$whereInfo.=$sqlDateWhere[1];	
		
		$where=implode(' AND ', array_filter(array($where_kassa_abschluss, $where_zahlungsart, $where_datum, $where_kassabuch_wirksam) ));
		if (!empty ($where)) $where="WHERE ". $where;
		// Ende where String
		
		return($where);
	}
	
	// report nach categorie nach zahlungsart und kassenabschluss
	function report_categorie($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		if(!isset($_SESSION)){session_start();}
		
		$where=get_where_string($zahlungsart, $kassabuch_wirksam, $kassenabschluss_id, $dateFrom, $timeFrom, $dateTo, $timeTo);
		
		$output['header']= array(array('', ''),
							array("Auswertung nach Warengruppen"),
							array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
							array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
							array('', '', '', AUSRUCK_KOPFZEILE_4),
							array('', '', '', AUSRUCK_KOPFZEILE_5),
							array('', '', '', ),
							array('Warengruppe', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
				);
		
		$sql="SELECT categories.NAME, SUM(stueck) as anzahl, SUM(PRICESELL*stueck) as gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) as gesamtpreis, 
								abgeschlossener_bon_produkte.CATEGORY AS categorieId
						FROM abgeschlossener_bon_produkte 
						LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
						LEFT JOIN taxes ON taxes.ID=taxcat
						LEFT JOIN categories on categories.id=CATEGORY
						LEFT JOIN abgeschlossener_bon_zahlung ON abgeschlossener_bon_zahlung.bon_id=abgeschlossener_bon.bon_id
						LEFT JOIN zahlungsart ON zahlungsart.Name = abgeschlossener_bon_zahlung.Name
						".$where." AND CATEGORY <> 9999
						GROUP by categories.id";
		$xQl=mysql_query($sql);
		if (!$xQl)
		{
			echo "Fehlerbeim query $sql ".mysql_error();
		}
		$output['body']=array();
		
		$sumNett=0;
		$sumBrutt=0;
		$sumQty=0;
		
		while($xrQl=mysql_fetch_array($xQl))
		{
			if($xrQl['categorieId'] == 0) $xrQl['NAME'] = "Rabatte";
				$nName=$xrQl['NAME'];
				$steuer=$xrQl['gesamtpreis']-$xrQl['gesamt_netto'];
				$tmpArray=array($nName, $xrQl['anzahl'], $xrQl['gesamt_netto'], $steuer, $xrQl['gesamtpreis']);
				
				array_push($output['body'], $tmpArray);
				//print_r($tmpArray);
				$tmpArray=array();
			 
			$sumQty+=$xrQl['anzahl'];
			$sumNett+=$xrQl['gesamt_netto'];	
			$sumBrutt+=$xrQl['gesamtpreis'];
		}

		$sumQty=number_format($sumQty, 1, ",", ".");
		$sumNett=number_format($sumNett, 2, ",", ".");
		$sumBrutt=number_format($sumBrutt, 2, ",", ".");
		
		$tmpArray=array('Gesamt',$sumQty,$sumNett,$sumBrutt);
		$output['summe']=array();
		array_push($output['summe'], $tmpArray);
		$output['footer']=array();
		
		return ($output);
	}
	
	function report_steuer($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		if(!isset($_SESSION)){session_start();}
		
		$where=get_where_string($zahlungsart, $kassabuch_wirksam, $kassenabschluss_id, $dateFrom, $timeFrom, $dateTo, $timeTo);
		
		$output['header']= array(array('', ''),
							array("Auswertung nach Warengruppen"),
							array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
							array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
							array('', '', '', AUSRUCK_KOPFZEILE_4),
							array('', '', '', AUSRUCK_KOPFZEILE_5),
							array('', '', '', ),
							array('Warengruppe', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
				);

		$sql="SELECT taxes.NAME as steuer_name, tax_rate, SUM(gesamt_betrag) AS betrag 
						FROM abgeschlossener_bon_steuern
						LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_steuern.bon_id=abgeschlossener_bon.bon_id
						LEFT JOIN abgeschlossener_bon_zahlung ON abgeschlossener_bon_zahlung.bon_id=abgeschlossener_bon.bon_id
						LEFT JOIN zahlungsart ON zahlungsart.Name = abgeschlossener_bon_zahlung.Name
						LEFT JOIN taxes ON taxes.RATE=abgeschlossener_bon_steuern.tax_rate
						".$where." GROUP BY tax_rate";
		$xQl=mysql_query($sql);
		if (!$xQl)
		{
			echo "Fehlerbeim query $sql ".mysql_error();
		}
		$output['body']=array();
		
		$sumNett=0;
		$sumBrutt=0;
		$sumQty=0;
		
		while($xrQl=mysql_fetch_array($xQl))
		{
			$steuer_name=$xrQl['steuer_name'];
			$netto=$xrQl['betrag'];
			$steuer=$xrQl['tax_rate'];
			$brutto=$netto*(1+$steuer);
				$tmpArray=array($steuer_name, $steuer, $netto, $brutto);
				
				array_push($output['body'], $tmpArray);
				//print_r($tmpArray);
				$tmpArray=array();
			 
			$sumNett+=$netto;	
			$sumBrutt+=$brutto;	
		}

		$sumQty=number_format($sumQty, 1, ",", ".");
		$sumNett=number_format($sumNett, 2, ",", ".");
		$sumBrutt=number_format($sumBrutt, 2, ",", ".");
		
		$tmpArray=array('Gesamt',$sumQty,$sumNett,$sumBrutt);
		$output['summe']=array();
		array_push($output['summe'], $tmpArray);
		$output['footer']=array();
		
		return ($output);
	}
	
	// Benutzer Auswertung
	function report_benutzer($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		if(!isset($_SESSION)){session_start();}
		
		$where=get_where_string($zahlungsart, $kassabuch_wirksam, $kassenabschluss_id, $dateFrom, $timeFrom, $dateTo, $timeTo);
		
		$output['header']= array(array('', ''),
							array("Auswertung nach Benutzer"),
							array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
							array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
							array('', '', '', AUSRUCK_KOPFZEILE_4),
							array('', '', '', AUSRUCK_KOPFZEILE_5),
							array('', '', '', ),
							array('Benutzer', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
				);
		$sql="SELECT abgeschlossener_bon.verkaufer_id, benutzer.name as benutzer_name, SUM(stueck) AS anzahl, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) AS gesamtpreis 
								FROM abgeschlossener_bon_produkte 
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
								LEFT JOIN taxes ON taxes.ID=taxcat
								LEFT JOIN benutzer on benutzer.id=verkaufer_id
								".$where."
								GROUP by verkaufer_id";
								
		$xQl=mysql_query($sql);
		if (!$xQl)
		{
			echo "Fehlerbeim query $sql ".mysql_error();
		}
		$output['body']=array();
		
		$sumNett=0;
		$sumBrutt=0;
		$sumQty=0;
		
		while($xrQl=mysql_fetch_array($xQl))
		{
			$steuer_name=$xrQl['benutzer_name'];
			$stueck=$xrQl['anzahl'];
			$netto=$xrQl['gesamt_netto'];
			$brutto=$xrQl['gesamtpreis'];
			$steuer=$brutto-$netto;
				$tmpArray=array($steuer_name, $stueck, $netto, $steuer, $brutto);
				
				array_push($output['body'], $tmpArray);
				//print_r($tmpArray);
				$tmpArray=array();
			 
			$sumNett+=$netto;	
			$sumBrutt+=$brutto;	
		}

		$sumQty=number_format($sumQty, 1, ",", ".");
		$sumNett=number_format($sumNett, 2, ",", ".");
		$sumBrutt=number_format($sumBrutt, 2, ",", ".");
		
		$tmpArray=array('Gesamt',$sumQty,$sumNett,$sumBrutt);
		$output['summe']=array();
		array_push($output['summe'], $tmpArray);
		$output['footer']=array();
		
		return ($output);
	}
	
	// Zahlungsarten Auswertung
	function report_zahlungsart($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		if(!isset($_SESSION)){session_start();}
		
		$where=get_where_string($zahlungsart, $kassabuch_wirksam, $kassenabschluss_id, $dateFrom, $timeFrom, $dateTo, $timeTo);
		
		$output['header']= array(array('', ''),
							array("Auswertung nach Benutzer"),
							array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
							array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
							array('', '', '', AUSRUCK_KOPFZEILE_4),
							array('', '', '', AUSRUCK_KOPFZEILE_5),
							array('', '', '', ),
							array('Produkte', 'Stückzahl', 'Gesamt Netto', 'Gesamt Brutto')
				);
		$sql="select abgeschlossener_bon_zahlung.name as name, SUM(zahlbetrag) as betrag, kassastand_wirksam, einnahmen_wirksam 
						FROM abgeschlossener_bon_zahlung
						LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_zahlung.bon_id=abgeschlossener_bon.bon_id
						LEFT JOIN zahlungsart ON abgeschlossener_bon_zahlung.name=zahlungsart.name
						".$where." GROUP BY name";
								
		$xQl=mysql_query($sql);
		if (!$xQl)
		{
			echo "Fehlerbeim query $sql ".mysql_error();
		}
		$output['body']=array();
		
		$sumbetrag=0;
		
		while($xrQl=mysql_fetch_array($xQl))
		{
			$zahlungsart=$xrQl['name'];
			$betrag=$xrQl['betrag'];
			$kassastand_wirksam=$xrQl['kassastand_wirksam'];
			$einnahmen_wirksam=$xrQl['einnahmen_wirksam'];

			$tmpArray=array($zahlungsart, $betrag, $kassastand_wirksam, $einnahmen_wirksam);
				
			array_push($output['body'], $tmpArray);
			//print_r($tmpArray);
			$tmpArray=array();
			 
			$sumbetrag+=$betrag;	
		}

		$sumbetrag=number_format($sumbetrag, 2, ",", ".");
		
		$tmpArray=array('Gesamt',$sumbetrag);
		$output['summe']=array();
		array_push($output['summe'], $tmpArray);
		$output['footer']=array();
		return ($output);
	}
	
						
	// Benutzer Auswertung
	function report_produkte($zahlungsart=false, $kassabuch_wirksam=false, $kassenabschluss_id=false, $dateFrom=false, $timeFrom=false, $dateTo=false, $timeTo=false)
	{
		if(!isset($_SESSION)){session_start();}
		
		$where=get_where_string($zahlungsart, $kassabuch_wirksam, $kassenabschluss_id, $dateFrom, $timeFrom, $dateTo, $timeTo);
		
		$output['header']= array(array('', ''),
							array("Auswertung nach Produkte"),
							array('Erstellt am: ', date('d m Y H:i'), '', AUSRUCK_KOPFZEILE_1),
							array('Erstellt von:', $_SESSION["userName"], '', AUSRUCK_KOPFZEILE_2),
							array('', '', '', AUSRUCK_KOPFZEILE_4),
							array('', '', '', AUSRUCK_KOPFZEILE_5),
							array('', '', '', ),
							array('Produkte', 'Stückzahl', 'Gesamt Netto', 'Steuer', 'Gesamt Brutto')
				);
		$sql="SELECT IF(LENGTH(abgeschlossener_bon_produkte.PRINTNAME)>0, abgeschlossener_bon_produkte.PRINTNAME, abgeschlossener_bon_produkte.NAME) AS reportName,
								abgeschlossener_bon_produkte.CATEGORY AS warengr, SUM(stueck) as anzahl, SUM(PRICESELL*stueck) AS gesamt_netto, SUM(PRICESELL*(1+tax_rate)*stueck) AS gesamtpreis 
								FROM abgeschlossener_bon_produkte 
								LEFT JOIN abgeschlossener_bon ON abgeschlossener_bon_produkte.bon_id=abgeschlossener_bon.bon_id 
								LEFT JOIN taxes ON taxes.ID=taxcat
								".$where."
								GROUP by reportName";
								
		$xQl=mysql_query($sql);
		if (!$xQl)
		{
			echo "Fehlerbeim query $sql ".mysql_error();
		}
		$output['body']=array();
		
		$sumNett=0;
		$sumBrutt=0;
		$sumQty=0;
		
		while($xrQl=mysql_fetch_array($xQl))
		{
			$produkt=$xrQl['reportName'];
			$stueck=$xrQl['anzahl'];
			$netto=$xrQl['gesamt_netto'];
			$brutto=$xrQl['gesamtpreis'];
			$steuer=$brutto-$netto;
			$tmpArray=array($produkt, $stueck, $netto, $steuer, $brutto);
			array_push($output['body'], $tmpArray);
			//print_r($tmpArray);
			$tmpArray=array();
			 
			$sumNett+=$netto;	
			$sumBrutt+=$brutto;	
		}

		$sumQty=number_format($sumQty, 1, ",", ".");
		$sumNett=number_format($sumNett, 2, ",", ".");
		$sumBrutt=number_format($sumBrutt, 2, ",", ".");
		
		$tmpArray=array('Gesamt',$sumQty,$sumNett,$sumBrutt);
		$output['summe']=array();
		array_push($output['summe'], $tmpArray);
		$output['footer']=array();
		
		return ($output);
	}
	
	?>