<?php

/**
 * 
 * Copyright (C) Die Randgruppe GmbH
 * 
 * http://www.randshop.com
 * http://www.dierandgruppe.com
 * 
 * Unter der Lizenz von Die Randgruppe GmbH:
 * http://www.randshop.com/Lizenz
 *  
 * $Author$
 * $Date$
 * $Revision$
 * 
 */

if(RECHNUNGSWESEN) {
    include_once(DATEIPFAD . "includes/functions.mod.bestellungen.inc.php");
}

define('VERWEIS_QUELLE_UNBEKANNT', 0);
define('VERWEIS_QUELLE_KATEGORIE', 1);
define('VERWEIS_QUELLE_ANGEBOT', 2);
define('VERWEIS_QUELLE_HERSTELLER', 3);
define('VERWEIS_QUELLE_BANNER', 4);
define('VERWEIS_QUELLE_SUCHE', 5);
define('VERWEIS_QUELLE_NEWSLETTER', 6);
define('VERWEIS_QUELLE_ARTIKEL', 7);
define('VERWEIS_QUELLE_STARTSEITE_NEUHEITEN', 8);
define('VERWEIS_QUELLE_STARTSEITE_ANGEBOTE', 9);
define('VERWEIS_QUELLE_STARTSEITE_BESTSELLER', 10);
define('VERWEIS_QUELLE_WUNSCHZETTEL', 11);
define('VERWEIS_QUELLE_WARENKORB', 12);
define('VERWEIS_QUELLE_EXTERN', 13);
define('VERWEIS_QUELLE_KASSE', 14);
define('VERWEIS_QUELLE_GIVEAWAY', 15);
define('VERWEIS_QUELLE_AJAXSUCHE', 16);
define('VERWEIS_QUELLE_ADMIN', 17);
define('VERWEIS_QUELLE_KATEGORIE_FACEBOOK', 18);
define('VERWEIS_QUELLE_STARTSEITE_NEUHEITEN_FACEBOOK', 19);
define('VERWEIS_QUELLE_STARTSEITE_ANGEBOTE_FACEBOOK', 20);
define('VERWEIS_QUELLE_ARTIKEL_FACEBOOK', 21);
define('VERWEIS_QUELLE_SUCHE_FACEBOOK', 22);
define('VERWEIS_QUELLE_WARENKORB_FACEBOOK', 23);



// Holt den allgemeinen Umsatz aus den Bestellungen
function GetUmsatz($bisDatum,$vonDatum) {
	
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLEN.".id, ";
	$SQLString .= 'IF(' . TABLE_BESTELLEN . '.kundengruppentype = 3, ' . TABLE_BESTELLEN . '.gesamtsumme_netto, ' . TABLE_BESTELLEN.".gesamtsumme_brutto) as gesamtsumme_brutto, ";
	$SQLString .= TABLE_BESTELLEN.".gesamtsumme_netto, ";
	$SQLString .= TABLE_BESTELLEN.".rechnungsnummer, ";
	$SQLString .= TABLE_BESTELLEN.".bezahldatum ";
	$SQLString .= "FROM " . TABLE_BESTELLEN . " ";
	$SQLString .= "WHERE bezahldatum <= '". $bisDatum . " 23:59:59' ";
	$SQLString .= "AND bezahldatum >= '" . $vonDatum ." 00:00:00' ";
	$SQLString .= "AND stornierdatum = '0000-00-00 00:00:00' ";
	$SQLString .= "ORDER by bezahldatum DESC"; 
	
	//echo $SQLString;
	
	$QuerryReferenz = errorlogged_mysql_query($SQLString);
	
	$Counter = 0;
	
	// Alle Daten in ein Array legen	
	while ($QuerryResult = mysql_fetch_array($QuerryReferenz, MYSQL_ASSOC)) {
		$ResultDataArray[$Counter]["id"] = $QuerryResult["id"];
		$ResultDataArray[$Counter]["gesamtpreis"] = $QuerryResult["gesamtsumme_brutto"];
		$ResultDataArray[$Counter]["netto"] = $QuerryResult["gesamtsumme_netto"];
		$ResultDataArray[$Counter]["belegnr"] = $QuerryResult["rechnungsnummer"];
		$ResultDataArray[$Counter]["bezahl_datum"] = $QuerryResult["bezahldatum"];
		
		$Counter++;
	}
	return $ResultDataArray;
}


// Holt die Erloese aus den sonstigen Einnahmen
function GetErloese($bisDatum,$vonDatum) {
	
	$SQLString = "SELECT ";
	$SQLString .= TABLE_KONTO.".kontoid, ";
	$SQLString .= TABLE_KONTO.".kontonr, ";
	$SQLString .= TABLE_KONTO.".kontoname, ";
	$SQLString .= TABLE_ERLOESE.".erloeseid, ";
	$SQLString .= TABLE_ERLOESE.".kontoid as kontid, ";
	$SQLString .= TABLE_ERLOESE.".nettopreis, ";
	$SQLString .= TABLE_ERLOESE.".bruttopreis, ";
	$SQLString .= TABLE_ERLOESE.".sonstiges, ";
	$SQLString .= TABLE_ERLOESE.".rechnr, ";
	$SQLString .= TABLE_ERLOESE.".bezahl_datum ";
	$SQLString .= "FROM " . TABLE_ERLOESE . " ";
	$SQLString .= "LEFT JOIN " . TABLE_KONTO . " ON ";
	$SQLString .= TABLE_ERLOESE.".kontoid = " . TABLE_KONTO.".kontoid ";
	$SQLString .= "WHERE ".TABLE_ERLOESE.".bezahl_datum <= '". $bisDatum . "' ";
	$SQLString .= "AND ".TABLE_ERLOESE.".bezahl_datum >= '" . $vonDatum ."' ";
	$SQLString .= "ORDER by ".TABLE_KONTO.".kontoid desc";

	//echo $SQLString;
	// Alle Daten in ein Array legen	
	$QuerryReferenz = errorlogged_mysql_query($SQLString);
	$Counter =0;
	while ($QuerryResult = mysql_fetch_array($QuerryReferenz, MYSQL_ASSOC)) {
		$ResultDataArray[$Counter]["kontoid"] = $QuerryResult["kontoid"];
		$ResultDataArray[$Counter]["kontonr"] = $QuerryResult["kontonr"];
		$ResultDataArray[$Counter]["kontoname"] = $QuerryResult["kontoname"];
		$ResultDataArray[$Counter]["bruttopreis"] = $QuerryResult["bruttopreis"];
		$ResultDataArray[$Counter]["nettopreis"] = $QuerryResult["nettopreis"];
		$ResultDataArray[$Counter]["rechnr"] = $QuerryResult["rechnr"];
		$ResultDataArray[$Counter]["bezahl_datum"] = $QuerryResult["bezahl_datum"];
		$ResultDataArray[$Counter]["sonstiges"] = $QuerryResult["sonstiges"];
		
		$Counter++;
	}
	//echo "<pre>";
	//var_dump($ResultDataArray);
	//echo "</pre>";
	return $ResultDataArray;

}




// Holt die Ausgaben aus den eingepflegten Betriebsausgaben
function GetAusgaben($bisDatum,$vonDatum) {

    $SQLString = "SELECT * FROM (";
    $SQLString .= "SELECT ";
	$SQLString .= TABLE_KONTO.".kontoid, ";
	$SQLString .= TABLE_KONTO.".kontonr, ";
	$SQLString .= TABLE_KONTO.".kontoname, ";
	$SQLString .= TABLE_AUSGABEN.".ausgabenid, ";
	$SQLString .= TABLE_AUSGABEN.".kontoid as kontid, ";
	$SQLString .= TABLE_AUSGABEN.".sonstiges, ";
	$SQLString .= TABLE_AUSGABEN.".nettopreis, ";
	$SQLString .= TABLE_AUSGABEN.".bruttopreis, ";
	$SQLString .= TABLE_AUSGABEN.".rechnr, ";
	$SQLString .= TABLE_AUSGABEN.".bezahl_datum ";
	$SQLString .= "FROM " . TABLE_AUSGABEN . " ";
	$SQLString .= "LEFT JOIN " . TABLE_KONTO . " ON ";
	$SQLString .= TABLE_AUSGABEN.".kontoid = " . TABLE_KONTO.".kontoid ";
	$SQLString .= "WHERE ".TABLE_AUSGABEN.".bezahl_datum >= '" . $vonDatum ."' ";
	$SQLString .= "AND ".TABLE_AUSGABEN.".bezahl_datum <= '". $bisDatum . "' ";
    if(RECHNUNGSWESEN) {

        $SQLString .= " UNION ";
        $SQLString .= "SELECT 0 as kontoid, ";
        $SQLString .= "'-' as kontonr,";
        $SQLString .= " 'Gutschrift' as kontoname, ";
        $SQLString .= "0 as ausgabenid, ";
        $SQLString .= "0 as kontid, ";
        $SQLString .= "'' as sonstiges, ";
        $SQLString .= TABLE_BESTELLEN . ".gesamtsumme_netto as nettopreis, ";
        $SQLString .= TABLE_BESTELLEN . ".gesamtsumme_brutto as bruttopreis, ";
        $SQLString .= TABLE_BESTELLEN . ".gutschriftnummer as rechnr, ";
        $SQLString .= TABLE_BESTELLEN . ".gutschriftdatum as bezahl_datum ";
        $SQLString .= " FROM " . TABLE_BESTELLEN . " WHERE " . TABLE_BESTELLEN . ".gutschriftdatum >= '" . $vonDatum . "' AND " . TABLE_BESTELLEN . ".gutschriftdatum <= '" . $bisDatum . "' AND " . TABLE_BESTELLEN . ".document_id = '" . DOCUMENT_ID_GUTSCHRIFT . "'";
    }
    $SQLString .= ") query ";
    $SQLString .= "ORDER by query.kontoid desc";

//    echo $SQLString;

	// Alle Daten in ein Array legen
	$QuerryReferenz = errorlogged_mysql_query($SQLString);
	$counter =0;
	while ($QuerryResult = mysql_fetch_array($QuerryReferenz, MYSQL_ASSOC)) {
		$ResultDataArray[$counter]["kontoid"] = $QuerryResult["kontoid"];
		$ResultDataArray[$counter]["kontonr"] = $QuerryResult["kontonr"];
		$ResultDataArray[$counter]["kontoname"] = $QuerryResult["kontoname"];
		$ResultDataArray[$counter]["bruttopreis"] = $QuerryResult["bruttopreis"];
		$ResultDataArray[$counter]["nettopreis"] = $QuerryResult["nettopreis"];
		$ResultDataArray[$counter]["rechnr"] = $QuerryResult["rechnr"];
		$ResultDataArray[$counter]["bezahl_datum"] = $QuerryResult["bezahl_datum"];
		$ResultDataArray[$counter]["sonstiges"] = $QuerryResult["sonstiges"];
		
		$counter++;
	}


	//echo "<pre>";
	//var_dump($ResultDataArray);
	//echo "</pre>";
	return $ResultDataArray;

}

function IpStringToHex($ip_string)
{
	$exploded_ip = explode('.', $ip_string);
	$ipHex = 0;
	foreach($exploded_ip as $ipByteDec)
	{
		$ipHex <<= 8;
		$ipHex |= intval(dechex($ipByteDec), 16);
	}
	return $ipHex;	
}

function ExtractDomain($url)
{
	if(0 == strncmp("http://", $url, 7))
		$domain = substr($url, 7);
	$domain = substr($domain, 0, strpos($domain, '/'));
	return $domain;
}

function SetReferTypeFromHttpReferer(&$verweisQuelle, &$verweisQuelleID)
{
	$referer = $_SERVER['HTTP_REFERER'];
	$domain = ExtractDomain($referer);
	if($domain != '')
	{
		$SQLString = "SELECT id FROM " . TABLE_STATISTIK_REFERERDOMAINS; 
		$SQLString .= " WHERE domain = '" . $domain . "'"; 
		$row = mysql_fetch_row(errorlogged_mysql_query($SQLString));
		if($row)
			$verweisQuelleID = $row[0];
		else
		{
			$SQLString = "INSERT INTO " . TABLE_STATISTIK_REFERERDOMAINS;
			$SQLString .= " SET domain = '" . $domain . "'";
			errorlogged_mysql_query($SQLString);
			$verweisQuelleID = mysql_insert_id();
		}
		$verweisQuelle = VERWEIS_QUELLE_EXTERN;
	}
	else
		$verweisQuelle = VERWEIS_QUELLE_UNBEKANNT;
}

function StatistikEventArtikelView($kundenID, $artikelID, $verweisQuelle, $verweisQuelleID)
{
	
	$ip = $_SERVER['REMOTE_ADDR'];
	
	$SQLString = "INSERT INTO " . TABLE_STATISTIK_ARTIKELVIEW . " SET ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".timestamp = NOW(), ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".kunden_id = '" . $kundenID . "', ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".artikel_id = '" . $artikelID . "', ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".verweis_typ = '" . $verweisQuelle . "', ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".verweis_id = '" . $verweisQuelleID . "', ";
	$SQLString .= TABLE_STATISTIK_ARTIKELVIEW . ".ip = '" . IpStringToHex($ip) . "'";
	
//	echo $SQLString;
	
	$result = errorlogged_mysql_query($SQLString);
//	var_dump($result);
	
}

function StatistikEventSuchAnfrage($kundenID, $sucheAllgemein, $sucheArtikelNr, $sucheArtikelName, $sucheArtikelBeschreibung, $sucheHerstellerID, $sucheKategorieID, $anzahlErgebnisse)
{
	if(!isset($kundenID))
		$kundenID = 0;
	if(!isset($sucheKategorieID))
		$sucheKategorieID = 0;
	if(!isset($sucheHerstellerID))
		$sucheHerstellerID = 0;
	
	$SQLString = "INSERT INTO " . TABLE_STATISTIK_SUCHANFRAGEN . " SET ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".timestamp = NOW(), ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".kunden_id = " . $kundenID . ", ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".suchekategorie_id = " . $sucheKategorieID . ", ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".suchehersteller_id = " . $sucheHerstellerID . ", ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".sucheallgemein = '" . $sucheAllgemein . "', ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".sucheartikelnr = '" . $sucheArtikelNr . "', ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".sucheartikelname = '" . $sucheArtikelName . "', ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".sucheartikelbeschreibung = '" . $sucheArtikelBeschreibung. "', ";
	$SQLString .= TABLE_STATISTIK_SUCHANFRAGEN . ".anzahl_ergebnisse = " . $anzahlErgebnisse;
	
	//echo $SQLString;
	
	$result = errorlogged_mysql_query($SQLString);
	
	return mysql_insert_id();
}

function StatistikEventKategorieView($kundenID, $kategorieID, $seite)
{
	$SQLString = "INSERT INTO " . TABLE_STATISTIK_KATEGORIEVIEW . " SET ";
	$SQLString .= TABLE_STATISTIK_KATEGORIEVIEW . ".timestamp = NOW(), ";
	$SQLString .= TABLE_STATISTIK_KATEGORIEVIEW . ".kunden_id = '" . $kundenID . "', ";
	$SQLString .= TABLE_STATISTIK_KATEGORIEVIEW . ".kategorie_id = '" . $kategorieID . "', ";
	$SQLString .= TABLE_STATISTIK_KATEGORIEVIEW . ".seite = '" . $seite . "' ";
	
//	echo $SQLString;
	
	$result = errorlogged_mysql_query($SQLString);
//	var_dump($result);
	
	
}

function GetSizeStatistikArtikelViewEvents()
{
	$SQLString = "SHOW TABLE STATUS LIKE '" . TABLE_STATISTIK_ARTIKELVIEW . "'";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['Data_length'];
}

function GetSizeStatistikKategorieViewEvents()
{
	$SQLString = "SHOW TABLE STATUS LIKE '" . TABLE_STATISTIK_KATEGORIEVIEW . "'";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['Data_length'];
}

function GetSizeStatistikSucheEvents()
{
	$SQLString = "SHOW TABLE STATUS LIKE '" . TABLE_STATISTIK_SUCHANFRAGEN . "'";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['Data_length'];
}

function GetTimestampOldestArtikelViewEvent()
{
	$SQLString = "SELECT UNIX_TIMESTAMP(timestamp) as timestamp";
	$SQLString .= " FROM " . TABLE_STATISTIK_ARTIKELVIEW;
	$SQLString .= " ORDER BY timestamp";
	$SQLString .= " LIMIT 1,1";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['timestamp'];
}

function GetTimestampOldestKategorieViewEvent()
{
	$SQLString = "SELECT UNIX_TIMESTAMP(timestamp) as timestamp";
	$SQLString .= " FROM " . TABLE_STATISTIK_KATEGORIEVIEW;
	$SQLString .= " ORDER BY timestamp";
	$SQLString .= " LIMIT 1,1";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['timestamp'];
}

function GetTimestampOldestSucheEvent()
{
	$SQLString = "SELECT UNIX_TIMESTAMP(timestamp) as timestamp";
	$SQLString .= " FROM " . TABLE_STATISTIK_SUCHANFRAGEN;
	$SQLString .= " ORDER BY timestamp";
	$SQLString .= " LIMIT 1,1";
	$result = errorlogged_mysql_query($SQLString);
	$row = mysql_fetch_assoc($result);
	return $row['timestamp'];
}

function DeleteStatistikEvents($timestampTo) {
	
	
	$SQLString = "DELETE FROM " . TABLE_STATISTIK_ARTIKELVIEW;
	$SQLString .= " WHERE timestamp <= '" . date('Y-m-d', $timestampTo) . "'";
	errorlogged_mysql_query($SQLString);

	$SQLString = "DELETE FROM " . TABLE_STATISTIK_KATEGORIEVIEW;
	$SQLString .= " WHERE timestamp <= '" . date('Y-m-d', $timestampTo) . "'";
	//echo $SQLString;
	errorlogged_mysql_query($SQLString);

	$SQLString = "DELETE FROM " . TABLE_STATISTIK_SUCHANFRAGEN;
	$SQLString .= " WHERE timestamp <= '" . date('Y-m-d', $timestampTo) . "'";
	errorlogged_mysql_query($SQLString);
}

function GetVerweisTypName($verweis_typ) {
	$namen = array(
		"unbekannt",
		"Kategorie",
		"Angebot",
		"Hersteller",
		"Banner",
		"Suche",
		"Newsletter",
		"Crossselling",
		"Startseite Neuheiten",
		"Startseite Angebote",
		"Startseite Bestseller",
		"Wunschzettel",
		"Warenkorb",
		"extern",
		"Kasse",
		"GiveAway",
		"AJAX Suche",
		"Admin Panel",
		"Facebook Kategorie",
		"Facebook Startseite Neuheiten",
		"Facebook Startseite Angebote", 
		"Facebook Crossselling",
		"Facebook Suche",
		"Facebook Warenkorb"
	);
	return utf8_decode($namen[$verweis_typ]);
}
