<?php
//  Copyright (c) 2004-2005 randshop
//  http://www.randshop.com
//
//  Unter Lizenz von randshop
//	
//	Letzte Bearbeitung: 14.01.2005

define('STATUSAKTION_VERSANDDATUM_SETZEN', 1);
define('STATUSAKTION_BEZAHLDATUM_SETZEN', 2);
define('STATUSAKTION_VERSANDMAIL_SENDEN', 3);
define('STATUSAKTION_VERSANDMAIL_MIT_RECHNUNG_SENDEN', 4);
define('STATUSAKTION_RECHNUNG_ERSTELLEN', 5);
define('STATUSAKTION_STORNIEREN', 6);
define('STATUSAKTION_MAHNUNG_SENDEN', 7);
define('STATUSAKTION_ANGEBOT_VERSANDDATUM_SETZEN', 8);
define('STATUSAKTION_ANGEBOT_ERSTELLEN', 9);
define('STATUSAKTION_ANGEBOT_ANNAHMEDATUM_SETZEN', 10);
define('STATUSAKTION_ANGEBOT_ABLEHNUNGSDATUM_SETZEN', 11);
define('STATUSAKTION_BESTELLUNG_ERSTELLEN', 12);
define('STATUSAKTION_BESTELLLAGERBESTAND_REDUZIERN', 13);
define('STATUSAKTION_LAGERBESTAND_REDUZIERN', 14);


define('BESTELLSTATUS_EINGEGANGEN', 1);
define('BESTELLSTATUS_BEZAHLT', 2);
define('BESTELLSTATUS_UNBESTAETIGT', 9);

define('BESTELLQUELLE_SHOP', 0);
define('BESTELLQUELLE_ADMIN', 1);
define('BESTELLQUELLE_KASSE', 2);
define('BESTELLQUELLE_EBAY', 3);

define('DOCUMENT_ID_BESTELLUNG', 0);
define('DOCUMENT_ID_ANGEBOT', 1);


include_once(DATEIPFAD . "includes/functions.warenkorb.inc.php");
include_once(DATEIPFAD . "includes/functions.waehrung.inc.php");
include_once(DATEIPFAD . "includes/functions.kunden.inc.php");
include_once(DATEIPFAD . "includes/functions.statistik.inc.php");


function SetStatus($BestellID, $Status) {

	$SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
	$SQLString .= TABLE_BESTELLEN . ".status = ".$Status." WHERE ";
	$SQLString .= TABLE_BESTELLEN . ".id = ".$BestellID;
	//echo $SQLString;
	$MySQLQuery = errorlogged_mysql_query($SQLString);
}

function SetBezahlDaten($BestellID) {
		
	// Bestellung aktualisieren
	$SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
	$SQLString .= TABLE_BESTELLEN . ".bezahldatum = NOW(), ";
	$SQLString .= TABLE_BESTELLEN . ".bezahlt = '1'";
	$SQLString .= " WHERE id = '" . $BestellID . "'";
	$SQLString .= " AND bezahlt <> '1'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	//Partnerprogramm
	if(PARTNERPROGRAMM) {
		$SQLString = "UPDATE " . TABLE_PROVISIONEN . " SET ";
		$SQLString .= TABLE_PROVISIONEN . ".provision_aktiv = '1' ";
		$SQLString .= "WHERE bestell_id = '" . $BestellID . "'";
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);		
	}
	
	$SQLString = "SELECT kunden_id ";
 	$SQLString .=  "FROM " . TABLE_BESTELLEN . " ";
	$SQLString .= "WHERE id = '" . $BestellID . "'";
	$KundenObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
	
	// Kundendatenaktualisieren
	$SQLString = "UPDATE " . TABLE_KUNDEN . " SET ";
    $SQLString .= TABLE_KUNDEN . ".bestellungen = (";
    $SQLString .= 'SELECT count(*) from ' . TABLE_BESTELLEN . ' WHERE ' . TABLE_BESTELLEN . '.kunden_id = \'' . $KundenObject->kunden_id . '\' AND ' . TABLE_BESTELLEN . '.bezahlt = 1 AND ' . TABLE_BESTELLEN . '.stornierdatum = 0) ';
	$SQLString .= "WHERE id = '" . $KundenObject->kunden_id . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
}


function DeleteBestellung($BestellID, $DeleteWarenkorb = true) {

	// Bestellung einlesen
	$BestellObject = GetBestellenDetail($BestellID);
	
	// Lagerbestand und Bestellmenge anpassen
	if ($BestellObject->warenkorbdataarray["warenkorbarray"]) {
		foreach ($BestellObject->warenkorbdataarray["warenkorbarray"] as $WarenkorbData) {

            StorniereWarenbestand($WarenkorbData['id'], false);

//			$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET ";
//			$SQLString .= TABLE_ARTIKEL . ".lager = (" . TABLE_ARTIKEL . ".lager + '" . $WarenkorbData["menge"] . "'), ";
//			$SQLString .= TABLE_ARTIKEL . ".wie_oft_bestellt = (" . TABLE_ARTIKEL . ".wie_oft_bestellt - '" . $WarenkorbData["menge"] . "') ";
//			$SQLString .= "WHERE " . TABLE_ARTIKEL . ".id = '" . $WarenkorbData["artikel_id"] . "'";
			
			
			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
			
		}
	}
	
	// Warenkorbeintr�ge l�schen
	if ($DeleteWarenkorb) {

		$SQLString = "DELETE FROM " . TABLE_WARENKORB . " WHERE ";
		$SQLString .= TABLE_WARENKORB . ".session = '" . $BestellObject->session . "'";

		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	}
	
		
	// Bestellung loeschen
	$SQLString = "DELETE FROM " . TABLE_BESTELLEN . " WHERE ";
	$SQLString .= TABLE_BESTELLEN . ".id = '" . $BestellID . "'";
	
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	if(PARTNERPROGRAMM) {
		include_once(DATEIPFAD . "includes/functions.mod.partner.inc.php");
		DeleteProvision('', $BestellID);
	}
	
	if (GUTSCHEINAKTIONEN) {

		$SQLString = "UPDATE " . TABLE_GUTSCHEIN . " SET ";
		$SQLString .= TABLE_GUTSCHEIN . ".bestell_id = 0 "; 
		$SQLString .= "WHERE ";
		$SQLString .= TABLE_GUTSCHEIN . ".bestell_id = '" . $BestellID . "' "; 
		
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	
	}

}


function RechnungErstellen(&$BestellObject, $BestellID, $CreatePDF)
{
    if (!$BestellObject->rechnungsnummer) {

        // Rechnungsdaten setzen
        SetRechnungsDaten($BestellID);

        // Rechnungs erzeugen
        if ($CreatePDF) {
            $ShopeinstellungObject = GetShopeinstellungDetail();

            //var_dump($BestellObject);
            createPDFDokument($BestellObject, $ShopeinstellungObject, PDF_TEMPLATE_RECHNUNG);
        }

        $BestellObject = GetBestellenDetail($BestellID);
    }
}


function GetBestellAnzahl($SearchField, $SearchString, $FilterStatus="", $FilterGesamtSumme = false) {

	// Anzahl der Bestellung einlesen
	$SQLString .= "SELECT COUNT(DISTINCT(" . TABLE_BESTELLEN . ".id)) AS BestellAnzahl, ";
	$SQLString .= "SUM(" . TABLE_BESTELLEN . ".gesamtsumme_netto) AS gesamtsumme_netto ";
	$SQLString .= "FROM " . TABLE_BESTELLEN . " ";
	
	$SQLString .= " WHERE ( ";

	// Suche
	if ($SearchField != "" && $SearchString != "") {
		$SQLString .= "(" . $SearchField . " LIKE '%" . $SearchString . "%')  AND "; 
	}

	// Filter Status
	if($FilterStatus != "") {
		$SQLString .= "(" . TABLE_BESTELLEN . ".status = '" . $FilterStatus . "') AND "; 
	}
		
	$SQLString .= " 1) ";
	
	$BestellAnzahlObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));
	
	if ($FilterGesamtSumme) {
		return $BestellAnzahlObject;
	} else {
		return $BestellAnzahlObject->BestellAnzahl;
	}

}

function GetBestellDataArray($SearchField, $SearchString, $SortField, $SortOrder, $DataOffset = "", $DataCount = "", $FilterStatus = "", $OptionSearchLike = 1, $ArtikelDownload = 0, $LanguageID = 0, $fromDate = 0, $Bezahlt = 0) {

	global $lang_admin_brutto_summe, $lang_admin_netto_summe;

	// Sprache ermitteln
	if (!$LanguageID) {
		$LanguageID = GetDefaultLanguageID();
	}

	// Bestellung einlesen
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLEN . ".id, ";
	$SQLString .= TABLE_BESTELLEN . ".session, ";
	$SQLString .= TABLE_BESTELLEN . ".kunden_id, ";
	$SQLString .= TABLE_BESTELLEN . ".anrede, ";
	$SQLString .= TABLE_BESTELLEN . ".titel, ";
	$SQLString .= TABLE_BESTELLEN . ".vorname, ";
	$SQLString .= TABLE_BESTELLEN . ".nachname, ";
	$SQLString .= TABLE_BESTELLEN . ".firma, ";
	$SQLString .= TABLE_BESTELLEN . ".strasse, ";
	$SQLString .= TABLE_BESTELLEN . ".hausnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".plz, ";
	$SQLString .= TABLE_BESTELLEN . ".ort, ";
	$SQLString .= TABLE_BESTELLEN . ".land, ";
	$SQLString .= TABLE_BESTELLEN . ".land_id, ";
	$SQLString .= TABLE_BESTELLEN . ".email, ";
	$SQLString .= TABLE_BESTELLEN . ".la_anrede, ";
	$SQLString .= TABLE_BESTELLEN . ".la_titel, ";
	$SQLString .= TABLE_BESTELLEN . ".la_vorname, ";
	$SQLString .= TABLE_BESTELLEN . ".la_nachname, ";
	$SQLString .= TABLE_BESTELLEN . ".la_firma, ";
	$SQLString .= TABLE_BESTELLEN . ".la_strasse, ";
	$SQLString .= TABLE_BESTELLEN . ".la_hausnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".la_plz, ";
	$SQLString .= TABLE_BESTELLEN . ".la_ort, ";
	$SQLString .= TABLE_BESTELLEN . ".la_land, ";
	$SQLString .= TABLE_BESTELLEN . ".la_land_id, ";
	$SQLString .= TABLE_BESTELLEN . ".bank, ";
	$SQLString .= TABLE_BESTELLEN . ".blz, ";
	$SQLString .= TABLE_BESTELLEN . ".kto, ";
	$SQLString .= TABLE_BESTELLEN . ".wohin_liefern, ";
	$SQLString .= TABLE_BESTELLEN . ".waehrung, ";
	$SQLString .= TABLE_BESTELLEN . ".paketnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".versand_mwst, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_id, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_name, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_id, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_name, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_id, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_name, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_prozent, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_betrag, ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppentype, ";
	$SQLString .= TABLE_BESTELLEN . ".kundenbemerkung, ";
	$SQLString .= TABLE_BESTELLEN . ".shopbetreiberbemerkung, ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsdatum, ";
	$SQLString .= TABLE_BESTELLEN . ".paketnummer, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".auftragsdatum, '%d.%m.%Y') AS auftragsdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".rechnungsnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".rechnungsdatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".rechnungsdatum, '%d.%m.%Y') AS rechnungsdatum_format, ";
	$SQLString .= TABLE_KUNDEN . ".bestellungen, ";
	$SQLString .= TABLE_KUNDEN . ".moral, ";
	$SQLString .= TABLE_BESTELLEN_STATUS_LANGU . ".name AS statusname ";
	$SQLString .= "FROM " . TABLE_BESTELLEN . " ";
	$SQLString .= "LEFT JOIN " . TABLE_KUNDEN . " ON " . TABLE_BESTELLEN . ".kunden_id = " . TABLE_KUNDEN . ".id ";
	$SQLString .= "LEFT JOIN " . TABLE_BESTELLEN_STATUS . " ON " . TABLE_BESTELLEN . ".status = " . TABLE_BESTELLEN_STATUS . ".id ";
	$SQLString .= "LEFT JOIN " . TABLE_BESTELLEN_STATUS_LANGU . " ON ((" . TABLE_BESTELLEN_STATUS . ".id = " . TABLE_BESTELLEN_STATUS_LANGU . ".bestellen_status_id) AND (" . TABLE_BESTELLEN_STATUS_LANGU . ".language_id = '" . $LanguageID . "')) ";
	
	$SQLString .= " WHERE ( ";

	// Suche
	if ($SearchField != "" && $SearchString != "") {

		if ($OptionSearchLike) {		
			$SQLString .= "(" . $SearchField . " LIKE '%" . $SearchString . "%')  AND "; 
		} else {
			$SQLString .= "(" . $SearchField . " = '" . $SearchString . "')  AND "; 
		}

	}

	// Filter Status
	if ($FilterStatus !="") {
		$SQLString .= "(" . TABLE_BESTELLEN . ".status = '" . $FilterStatus . "') AND "; 
	}	

	// Filter Artikeldownload
	if ($ArtikelDownload) {
		$SQLString .= "(" . TABLE_BESTELLEN . ".artikel_download <> 0) AND ";
	}
	
	// Filter Bezahlt
	if ($Bezahlt) {
		$SQLString .= "(" . TABLE_BESTELLEN . ".bezahlt = 1) AND ";
	}
	
	$SQLString .= " 1) ";

	// Sortierung
	if ($SortField && $SortOrder) {
		$SQLString .= "ORDER BY " . $SortField . " " . $SortOrder . " "; 
	}
		
	// Limit
	if ((string)$DataOffset != "" && (string)$DataCount != "") {
		$SQLString .= "LIMIT " . $DataOffset . ", " . $DataCount . " "; 
	}
	
//	echo '$SQLString: ' . $SQLString . "<br>";
	
	$MySQLQueryReferenz = errorlogged_mysql_query($SQLString);
	
	
	// ********************************************************************************
	// ** die Bestelldaten in ein Array ablegen
	// ********************************************************************************

	$BestellCounter = 0;
	$BestellDataArray = array();

	while ($BestellRowArray = mysql_fetch_array($MySQLQueryReferenz, MYSQL_ASSOC)) {
		
		$BestellDataArray[$BestellCounter]["id"] = $BestellRowArray["id"];
		$BestellDataArray[$BestellCounter]["session"] = $BestellRowArray["session"];
		$BestellDataArray[$BestellCounter]["kunden_id"] = $BestellRowArray["kunden_id"];
		$BestellDataArray[$BestellCounter]["anrede"] = $BestellRowArray["anrede"];
		
		$BestellDataArray[$BestellCounter]["titel"] = $BestellRowArray["titel"];
		
		
		$BestellDataArray[$BestellCounter]["vorname"] = $BestellRowArray["vorname"];
		$BestellDataArray[$BestellCounter]["nachname"] = $BestellRowArray["nachname"];
		$BestellDataArray[$BestellCounter]["firma"] = $BestellRowArray["firma"];
		$BestellDataArray[$BestellCounter]["strasse"] = $BestellRowArray["strasse"];
		$BestellDataArray[$BestellCounter]["hausnummer"] = $BestellRowArray["hausnummer"];
		$BestellDataArray[$BestellCounter]["plz"] = $BestellRowArray["plz"];
		$BestellDataArray[$BestellCounter]["ort"] = $BestellRowArray["ort"];
		$BestellDataArray[$BestellCounter]["land"] = $BestellRowArray["land"];
		$BestellDataArray[$BestellCounter]["email"] = $BestellRowArray["email"];
		$BestellDataArray[$BestellCounter]["la_anrede"] = $BestellRowArray["la_anrede"];
		$BestellDataArray[$BestellCounter]["la_titel"] = $BestellRowArray["la_titel"];
		$BestellDataArray[$BestellCounter]["la_vorname"] = $BestellRowArray["la_vorname"];
		$BestellDataArray[$BestellCounter]["la_nachname"] = $BestellRowArray["la_nachname"];
		$BestellDataArray[$BestellCounter]["la_firma"] = $BestellRowArray["la_firma"];
		$BestellDataArray[$BestellCounter]["la_strasse"] = $BestellRowArray["la_strasse"];
		$BestellDataArray[$BestellCounter]["la_hausnummer"] = $BestellRowArray["la_hausnummer"];
		$BestellDataArray[$BestellCounter]["la_plz"] = $BestellRowArray["la_plz"];
		$BestellDataArray[$BestellCounter]["la_ort"] = $BestellRowArray["la_ort"];
		$BestellDataArray[$BestellCounter]["la_land"] = $BestellRowArray["la_land"];
		$BestellDataArray[$BestellCounter]["moral"] = $BestellRowArray["moral"];
		$BestellDataArray[$BestellCounter]["bestellungen"] = $BestellRowArray["bestellungen"];
		$BestellDataArray[$BestellCounter]["zahlungsart_id"] = $BestellRowArray["zahlungsart_id"];
		$BestellDataArray[$BestellCounter]["zahlungsart_name"] = $BestellRowArray["zahlungsart_name"];
		$BestellDataArray[$BestellCounter]["versandart_id"] = $BestellRowArray["versandart_id"];
		$BestellDataArray[$BestellCounter]["versandart_name"] = $BestellRowArray["versandart_name"];
		$BestellDataArray[$BestellCounter]["gesamtsumme_netto"] = $BestellRowArray["gesamtsumme_netto"];
		$BestellDataArray[$BestellCounter]["gesamtsumme_netto_format"] = number_format($BestellRowArray["gesamtsumme_netto"], 2, ",", ".") . " " . $BestellRowArray["waehrung"];
		$BestellDataArray[$BestellCounter]["gesamtsumme_netto_format_einfach"] = number_format($BestellRowArray["gesamtsumme_netto"], 2, ",", ".");
		$BestellDataArray[$BestellCounter]["gesamtsumme_brutto"] = $BestellRowArray["gesamtsumme_brutto"];
		$BestellDataArray[$BestellCounter]["gesamtsumme_brutto_format"] = number_format($BestellRowArray["gesamtsumme_brutto"], 2, ",", ".") . " " . $BestellRowArray["waehrung"];
		$BestellDataArray[$BestellCounter]["gesamtsumme_brutto_format_einfach"] = number_format($BestellRowArray["gesamtsumme_brutto"], 2, ",", ".");
		$BestellDataArray[$BestellCounter]["auftragsnummer"] = $BestellRowArray["auftragsnummer"];
		$BestellDataArray[$BestellCounter]["auftragsdatum"] = $BestellRowArray["auftragsdatum"];
		$BestellDataArray[$BestellCounter]["auftragsdatum_format"] = $BestellRowArray["auftragsdatum_format"];
		$BestellDataArray[$BestellCounter]["rechnungsnummer"] = $BestellRowArray["rechnungsnummer"];
		$BestellDataArray[$BestellCounter]["rechnungsdatum_format"] = $BestellRowArray["rechnungsdatum_format"];
		$BestellDataArray[$BestellCounter]["rechnungsdatum"] = $BestellRowArray["rechnungsdatum"];
		$BestellDataArray[$BestellCounter]["statusname"] = $BestellRowArray["statusname"];
		$BestellDataArray[$BestellCounter]["waehrung"] = $BestellRowArray["waehrung"];
		$BestellDataArray[$BestellCounter]["paketnummer"] = $BestellRowArray["paketnummer"];
		

		// Gesamtsumme
		if ($BestellRowArray["kundengruppentype"] == 1) {
			$BestellDataArray[$BestellCounter]["gesamtsumme"] = $BestellDataArray[$BestellCounter]["gesamtsumme_brutto"];
			$BestellDataArray[$BestellCounter]["gesamtsumme_format_einfach"] = number_format($BestellDataArray[$BestellCounter]["gesamtsumme_brutto"], 2, ",", ".");
			$BestellDataArray[$BestellCounter]["gesamtsumme_text"] = $lang_admin_brutto_summe;
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ"] = $BestellDataArray[$BestellCounter]["gesamtsumme_netto"];
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_format_einfach"] = number_format($BestellDataArray[$BestellCounter]["gesamtsumme_netto"], 2, ",", ".");
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_text"] = $lang_admin_netto_summe;
		} elseif ($BestellRowArray["kundengruppentype"] == 2) {
			$BestellDataArray[$BestellCounter]["gesamtsumme"] = $BestellDataArray[$BestellCounter]["gesamtsumme_netto"];
			$BestellDataArray[$BestellCounter]["gesamtsumme_format_einfach"] = number_format($BestellDataArray[$BestellCounter]["gesamtsumme_netto"], 2, ",", ".");
			$BestellDataArray[$BestellCounter]["gesamtsumme_text"] = $lang_admin_netto_summe;
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ"] = $BestellDataArray[$BestellCounter]["gesamtsumme_brutto"];
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_format_einfach"] = number_format($BestellDataArray[$BestellCounter]["gesamtsumme_brutto"], 2, ",", ".");
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_text"] = $lang_admin_brutto_summe;
		} else {
			$BestellDataArray[$BestellCounter]["gesamtsumme"] = $BestellDataArray[$BestellCounter]["gesamtsumme_netto"];
			$BestellDataArray[$BestellCounter]["gesamtsumme_format_einfach"] = number_format($BestellDataArray[$BestellCounter]["gesamtsumme_netto"], 2, ",", ".");
			$BestellDataArray[$BestellCounter]["gesamtsumme_text"] = $lang_admin_netto_summe;
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ"] = "";
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_format_einfach"] = "";
			$BestellDataArray[$BestellCounter]["gesamtsumme_alternativ_text"] = "";
		}

		$BestellCounter++;

	}
	
	return $BestellDataArray;

}
function SaveBestellung($Session, $KundenMail, $Bemerkung, $ZahlungsartID = "", $VersandartID = "", $Status = 1, $LanguageID = 0, $AuftragsDatum = NULL, $GutscheinCode = "", $Quelle = BESTELLQUELLE_SHOP, $DocumentID = DOCUMENT_ID_BESTELLUNG, $BestellID = false, $Auftragsnummer = false) {
	
	global $l_giveaway_rechnung;
	
	// Währung einlesen
	$WaehrungObject = GetWaehrungDetail();

	// Warenkorb einlesen
	$WarenkorbDataArray = GetWarenkorbDataArray($Session, $KundenMail, 1, "", $ZahlungsartID, $VersandartID, $LanguageID, "", $GutscheinCode);
	
	// Kundendaten einlesem
	$KundenObject = GetKundenDetail($KundenMail);
	//echo "<br><br>KundenObject->titel: " . $KundenObject->titel; 

	// Kundengruppe abfragen
	$KundengruppenObject = GetKundengruppenDetail("", $KundenMail);

	// Shopeinstellungen einlesen
	$ShopeinstellungenObject = GetShopeinstellungDetail();
	
	$ZahlungsartObject = GetZahlungsartDetail($WarenkorbDataArray["zahlungsart_id"],"","",$LanguageID);

	// Bestellung speichern
	$SQLString = "INSERT INTO " . TABLE_BESTELLEN . " SET ";
    if($BestellID)
        $SQLString .= TABLE_BESTELLEN . ".id = '" . $BestellID . "', ";
	$SQLString .= TABLE_BESTELLEN . ".session = '" . $Session . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kunden_id = '" . $KundenObject->id . "', ";
	$SQLString .= TABLE_BESTELLEN . ".anrede = '" . $KundenObject->anrede . "', ";
	$SQLString .= TABLE_BESTELLEN . ".titel = '" . mysql_real_escape_string($KundenObject->titel) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".anrede_id = '" . $KundenObject->kundenanredeid . "', ";
	$SQLString .= TABLE_BESTELLEN . ".vorname = '" . mysql_real_escape_string($KundenObject->vorname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".nachname = '" . mysql_real_escape_string($KundenObject->nachname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".firma = '" . mysql_real_escape_string($KundenObject->firma) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".strasse = '" . mysql_real_escape_string($KundenObject->strasse) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".hausnummer = '" . mysql_real_escape_string($KundenObject->hausnummer) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".plz = '" . mysql_real_escape_string($KundenObject->plz) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".ort = '" . mysql_real_escape_string($KundenObject->ort) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".land = '" . mysql_real_escape_string($KundenObject->landname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".land_id = '" . $KundenObject->land . "', ";
	$SQLString .= TABLE_BESTELLEN . ".email = '" . mysql_real_escape_string($KundenObject->email) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_anrede = '" . $KundenObject->la_anrede . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_anrede_id = '" . $KundenObject->la_kundenanredeid . "', ";
	
	$SQLString .= TABLE_BESTELLEN . ".la_titel = '" . mysql_real_escape_string($KundenObject->la_titel) . "', ";
	
	
	
	$SQLString .= TABLE_BESTELLEN . ".la_vorname = '" . mysql_real_escape_string($KundenObject->la_vorname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_nachname = '" . mysql_real_escape_string($KundenObject->la_nachname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_firma = '" . mysql_real_escape_string($KundenObject->la_firma) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_strasse = '" . mysql_real_escape_string($KundenObject->la_strasse) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_hausnummer = '" . mysql_real_escape_string($KundenObject->la_hausnummer) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_plz = '" . mysql_real_escape_string($KundenObject->la_plz) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_ort = '" . mysql_real_escape_string($KundenObject->la_ort) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_land = '" . mysql_real_escape_string($KundenObject->la_landname) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".la_land_id = '" . $KundenObject->la_land . "', ";
	$SQLString .= TABLE_BESTELLEN . ".bank = '" . mysql_real_escape_string($KundenObject->bank) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".blz = '" . mysql_real_escape_string($KundenObject->blz) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kto = '" . mysql_real_escape_string($KundenObject->konto_nr) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_typ = '" . mysql_real_escape_string($KundenObject->kreditk_typ) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_nr = '" . mysql_real_escape_string($KundenObject->kreditk_nr) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_gueltig = '" . mysql_real_escape_string($KundenObject->kreditk_gueltdate) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".wohin_liefern = '" . $KundenObject->lieferung . "', ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_netto = '" . $WarenkorbDataArray["warenwert_netto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_brutto = '" . $WarenkorbDataArray["warenwert_brutto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".versand_mwst = '" . $ShopeinstellungenObject->mwst . "', ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_id = '" . $WarenkorbDataArray["zahlungsart_id"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".zahl_beschreibung = '" . mysql_real_escape_string($ZahlungsartObject->mailbeschreibung) . "', ";
	$SQLString .= TABLE_BESTELLEN . ".trustedid = '" . $ZahlungsartObject->trustedid . "', ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_name = '" . $WarenkorbDataArray["zahlungsart_name"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_netto = '" . $WarenkorbDataArray["zahlungsart_preis_netto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_brutto = '" . $WarenkorbDataArray["zahlungsart_preis_brutto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_id = '" . $WarenkorbDataArray["versandart_id"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_name = '" . $WarenkorbDataArray["versandart_name"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_netto = '" . $WarenkorbDataArray["versandart_preis_netto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_brutto = '" . $WarenkorbDataArray["versandart_preis_brutto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_id = '" . $WarenkorbDataArray["rabatt_id"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_name = '" . $WarenkorbDataArray["rabatt_name"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_prozent = '" . $WarenkorbDataArray["rabatt_prozent"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_betrag = '" . $WarenkorbDataArray["rabatt_betrag"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_netto = '" . $WarenkorbDataArray["gesamtsumme_netto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_brutto = '" . $WarenkorbDataArray["gesamtsumme_brutto"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppentype = '" . $KundengruppenObject->type . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppenname = '" . $KundengruppenObject->name . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppenkuerzel = '" . $KundengruppenObject->kuerzel . "', ";
	$SQLString .= TABLE_BESTELLEN . ".waehrung = '" . $WaehrungObject->symbol . "', ";
	$SQLString .= TABLE_BESTELLEN . ".gewicht = '" . $WarenkorbDataArray["gesamtgewicht"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".kundenbemerkung = '" . $Bemerkung . "', ";
	$SQLString .= TABLE_BESTELLEN . ".status = '" . $Status . "', ";
    if($Auftragsnummer)
        $SQLString .= TABLE_BESTELLEN . ".auftragsnummer = '" . $Auftragsnummer . "', ";
    else
	    $SQLString .= TABLE_BESTELLEN . ".auftragsnummer = '" . ($ShopeinstellungenObject->auftragsnummer + 1) . "', ";
	if($AuftragsDatum) {
		$SQLString .= TABLE_BESTELLEN . ".auftragsdatum = '" . date('Y-m-d H:i:s', $AuftragsDatum) . "', ";
	} else {
		$SQLString .= TABLE_BESTELLEN . ".auftragsdatum = NOW(), ";
	}
	$SQLString .= TABLE_BESTELLEN . ".gutscheinaktion_name = '" . $WarenkorbDataArray["gutscheinaktion_name"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".gutscheincode = '" . $WarenkorbDataArray["gutscheincode"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".gutschein_betrag = '" . $WarenkorbDataArray["gutscheinbetrag"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".artikel_download = '" . $WarenkorbDataArray["artikel_download"] . "', ";
	$SQLString .= TABLE_BESTELLEN . ".language_id = '" . $LanguageID . "', ";
	$SQLString .= TABLE_BESTELLEN . ".bestell_quelle = '" . $Quelle . "', ";
    $SQLString .= TABLE_BESTELLEN . ".document_id = '" . $DocumentID . "', ";
    $SQLString .= TABLE_BESTELLEN . ".telefon = '" . mysql_real_escape_string($KundenObject->telefon) . "' ";
    $SQLString .= ", " . TABLE_BESTELLEN . ".zahlungsschnittstelle_id = '" . $ZahlungsartObject->zahlungsschnittstelle_id . "' ";
    $SQLString .= ", " . TABLE_BESTELLEN . ".spedition_preis_netto = '" . $WarenkorbDataArray['spedition_preis_netto'] . "', ";
    $SQLString .= TABLE_BESTELLEN . ".spedition_preis_brutto = '" . $WarenkorbDataArray['spedition_preis_brutto'] . "' ";

//	echo $SQLString;
	
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);

	$BestellID = mysql_insert_id();
	
	
	if ($GutscheinCode) {
        $SQLString = "SELECT ";
        $SQLString .= TABLE_GUTSCHEINAKTION . ".aktionstyp";
        $SQLString .= " FROM " . TABLE_GUTSCHEINAKTION . " INNER JOIN " . TABLE_GUTSCHEIN;
        $SQLString .= " ON " . TABLE_GUTSCHEINAKTION . ".gutscheinaktion_id = " . TABLE_GUTSCHEIN . ".gutscheinaktion_id";
        $SQLString .= " WHERE " . TABLE_GUTSCHEIN . ".gutscheincode = '" . $GutscheinCode . "'";
        
        $GutscheinaktionObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));

        if($GutscheinaktionObject->aktionstyp == 2)
        {
            $SQLString = "UPDATE " . TABLE_GUTSCHEIN . " SET ";
            $SQLString .= TABLE_GUTSCHEIN . ".eingeloest = ";
            $SQLString .= "(SELECT count(*) FROM " . TABLE_BESTELLEN . " WHERE gutscheincode = '" . $GutscheinCode . "')";
            $SQLString .= " WHERE ";
            $SQLString .= TABLE_GUTSCHEIN . ".gutscheincode = '" . $GutscheinCode . "' ";
        }
        else
        {
            $SQLString = "UPDATE " . TABLE_GUTSCHEIN . " SET ";
            $SQLString .= TABLE_GUTSCHEIN . ".bestell_id = '" . $BestellID . "' ";
            $SQLString .= "WHERE ";
            $SQLString .= TABLE_GUTSCHEIN . ".gutscheincode = '" . $GutscheinCode . "' ";
        }        

		$MySQLQueryReference = errorlogged_mysql_query($SQLString);
		
	}
	
	//Loeschen der eingegebenen Kreditkartendaten aus dem Kundenstamm
	$SQLString = "UPDATE " . TABLE_KUNDEN . " SET ";
	$SQLString .= TABLE_KUNDEN . ".kreditk_typ = '', "; 
	$SQLString .= TABLE_KUNDEN . ".kreditk_nr = '', ";
	$SQLString .= TABLE_KUNDEN . ".kreditk_gueltdate = '' ";
	$SQLString .= "WHERE " . TABLE_KUNDEN . ".id = " . $KundenObject->id . " ";
			
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
	//Loeschen ende
	
	// Auftragsnummer erh�hen
    if(!$Auftragsnummer) {
        $SQLString = "UPDATE " . TABLE_ALLGEMEIN . " SET ";
        $SQLString .= TABLE_ALLGEMEIN . ".auftragsnummer = (" . TABLE_ALLGEMEIN . ".auftragsnummer + 1)";

        $MySQLQueryReference = errorlogged_mysql_query($SQLString);
    }

	// Lagerbestand und Bestellmenge anpassen
//	if ($WarenkorbDataArray["warenkorbarray"]) {
//		foreach ($WarenkorbDataArray["warenkorbarray"] as $WarenkorbData) {
//
//			$SQLString = "UPDATE " . TABLE_ARTIKEL . " SET ";
//			$SQLString .= TABLE_ARTIKEL . ".lager = (" . TABLE_ARTIKEL . ".lager - '" . $WarenkorbData["menge"] . "'), ";
//			$SQLString .= TABLE_ARTIKEL . ".wie_oft_bestellt = (" . TABLE_ARTIKEL . ".wie_oft_bestellt + '" . $WarenkorbData["menge"] . "') ";
//			$SQLString .= "WHERE " . TABLE_ARTIKEL . ".id = '" . $WarenkorbData["artikel_id"] . "'";
//
//			$MySQLQueryReference = errorlogged_mysql_query($SQLString);
//
//		}
//	}
	
	// Downloadartikel speichern
	if ($WarenkorbDataArray["artikel_download"]) {
		$BestellObject = GetBestellenDetail($BestellID);
		SaveArtikelDownload($KundenObject, $BestellObject, $WarenkorbDataArray, $ShopeinstellungenObject);
	}

    CopyArtikelLieferstatus($Session);

    return $BestellID;
	
}

function SaveShopBetreiberBemerkung($BestellID, $Shopbetreiberbemerkung) {

    // Admineinstellungen der Bestellung speichern
    $SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
    $SQLString .= TABLE_BESTELLEN . ".shopbetreiberbemerkung = '" . $Shopbetreiberbemerkung . "' ";
    $SQLString .= "WHERE " . TABLE_BESTELLEN . ".id = '" . $BestellID . "'";

    $MySQLQueryReference = errorlogged_mysql_query($SQLString);

}


function GetBestellenDetail($BestellID, $SessionID = "") {

	global $lang_admin_brutto_summe, $lang_admin_netto_summe;
	global $lang_admin_brutto_warenwert, $lang_admin_netto_warenwert;

	// Bestellung einlesen
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLEN . ".id, ";
	$SQLString .= TABLE_BESTELLEN . ".session, ";
	$SQLString .= TABLE_BESTELLEN . ".kunden_id, ";
	$SQLString .= TABLE_BESTELLEN . ".anrede, ";
	$SQLString .= TABLE_BESTELLEN . ".anrede_id, ";
	$SQLString .= TABLE_BESTELLEN . ".titel, ";
	$SQLString .= TABLE_BESTELLEN . ".vorname, ";
	$SQLString .= TABLE_BESTELLEN . ".nachname, ";
	$SQLString .= TABLE_BESTELLEN . ".firma, ";
	$SQLString .= TABLE_BESTELLEN . ".strasse, ";
	$SQLString .= TABLE_BESTELLEN . ".hausnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".plz, ";
	$SQLString .= TABLE_BESTELLEN . ".ort, ";
	$SQLString .= TABLE_BESTELLEN . ".land, ";
	$SQLString .= TABLE_BESTELLEN . ".land_id, ";
	$SQLString .= TABLE_BESTELLEN . ".email, ";
	$SQLString .= TABLE_BESTELLEN . ".la_anrede, ";
	$SQLString .= TABLE_BESTELLEN . ".la_anrede_id, ";
	$SQLString .= TABLE_BESTELLEN . ".la_titel, ";
	$SQLString .= TABLE_BESTELLEN . ".la_vorname, ";
	$SQLString .= TABLE_BESTELLEN . ".la_nachname, ";
	$SQLString .= TABLE_BESTELLEN . ".la_firma, ";
	$SQLString .= TABLE_BESTELLEN . ".la_strasse, ";
	$SQLString .= TABLE_BESTELLEN . ".la_hausnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".la_plz, ";
	$SQLString .= TABLE_BESTELLEN . ".la_ort, ";
	$SQLString .= TABLE_BESTELLEN . ".la_land, ";
	$SQLString .= TABLE_BESTELLEN . ".la_land_id, ";
	$SQLString .= TABLE_BESTELLEN . ".bank, ";
	$SQLString .= TABLE_BESTELLEN . ".blz, ";
	$SQLString .= TABLE_BESTELLEN . ".kto, ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_typ, ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_nr, ";
	$SQLString .= TABLE_BESTELLEN . ".kredit_gueltig, ";
	$SQLString .= TABLE_BESTELLEN . ".wohin_liefern, ";
	$SQLString .= TABLE_BESTELLEN . ".waehrung, ";
	$SQLString .= TABLE_BESTELLEN . ".paketnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".warenwert_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".versand_mwst, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_id, ";
	$SQLString .= TABLE_BESTELLEN . ".zahl_beschreibung, ";
	$SQLString .= TABLE_BESTELLEN . ".trustedid, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_name, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungsart_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_id, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_name, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".versandart_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_id, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_name, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_prozent, ";
	$SQLString .= TABLE_BESTELLEN . ".rabatt_betrag, ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_netto, ";
	$SQLString .= TABLE_BESTELLEN . ".gesamtsumme_brutto, ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppentype, ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppenname, ";
	$SQLString .= TABLE_BESTELLEN . ".kundengruppenkuerzel, ";
	$SQLString .= TABLE_BESTELLEN . ".kundenbemerkung, ";
	$SQLString .= TABLE_BESTELLEN . ".shopbetreiberbemerkung, ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsdatum, ";
	$SQLString .= TABLE_BESTELLEN . ".language_id, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".auftragsdatum, '%d.%m.%Y') AS auftragsdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".rechnungsnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".rechnungsdatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".rechnungsdatum, '%d.%m.%Y') AS rechnungsdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".lieferscheinnummer, ";
	$SQLString .= TABLE_BESTELLEN . ".lieferscheindatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".lieferscheindatum, '%d.%m.%Y') AS lieferscheindatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".faelligkeitsdatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".faelligkeitsdatum, '%d.%m.%Y') AS faelligkeitsdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".versandtdatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".versandtdatum, '%d.%m.%Y') AS versandtdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".bezahldatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".bezahldatum, '%d.%m.%Y') AS bezahldatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".stornierdatum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".stornierdatum, '%d.%m.%Y') AS stornierdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".stornierungstext, ";
	$SQLString .= TABLE_BESTELLEN . ".mahnung1datum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".mahnung1datum, '%d.%m.%Y') AS mahnung1datum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".mahnung2datum, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".mahnung2datum, '%d.%m.%Y') AS mahnung2datum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".mahnung, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".zahlungserinnerungdatum, '%d.%m.%Y') AS zahlungserinnerungdatum_format, ";
	$SQLString .= TABLE_BESTELLEN . ".zahlungserinnerungdatum, ";
	$SQLString .= TABLE_BESTELLEN . ".status, ";
	$SQLString .= TABLE_BESTELLEN_STATUS_LANGU . ".name AS statusname, ";
	$SQLString .= TABLE_BESTELLEN . ".bezahlt, ";	
	$SQLString .= TABLE_BESTELLEN . ".gutscheinaktion_name, ";
	$SQLString .= TABLE_BESTELLEN . ".gutscheincode, ";
	$SQLString .= TABLE_BESTELLEN . ".gutschein_betrag, ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsbestaetigungdatum, ";
	$SQLString .= TABLE_BESTELLEN . ".comments, ";
	$SQLString .= TABLE_BESTELLEN . ".testorder, ";
	$SQLString .= "DATE_FORMAT(" . TABLE_BESTELLEN . ".auftragsbestaetigungdatum, '%d.%m.%Y') AS auftragsbestaetigungdatum_format ";
    $SQLString .= ', ' . TABLE_BESTELLEN . '.zahlungsschnittstelle_id';
    $SQLString .= ', ' . TABLE_BESTELLEN . '.zahlungsschnittstelle_freiesfeld';
    $SQLString .= ', ' . TABLE_BESTELLEN . '.zahlungsschnittstelle_freiesfeldname';
    $SQLString .= ", " . TABLE_BESTELLEN . ".spedition_preis_netto, ";
    $SQLString .= TABLE_BESTELLEN . ".spedition_preis_brutto, ";
    $SQLString .= TABLE_BESTELLEN . ".spedition_preis_storno_netto, ";
    $SQLString .= TABLE_BESTELLEN . ".spedition_preis_storno_brutto ";
    $SQLString .= "FROM " . TABLE_BESTELLEN . " ";
	$SQLString .= "LEFT JOIN " . TABLE_BESTELLEN_STATUS . " ON " . TABLE_BESTELLEN . ".status = " . TABLE_BESTELLEN_STATUS . ".id ";
	$SQLString .= "LEFT JOIN " . TABLE_BESTELLEN_STATUS_LANGU . " ON " . TABLE_BESTELLEN_STATUS . ".id = " . TABLE_BESTELLEN_STATUS_LANGU . ".bestellen_status_id";
	
	if ($BestellID) {
		$SQLString .= " WHERE " . TABLE_BESTELLEN . ".id = '" . $BestellID . "'";
	} else {
		$SQLString .= " WHERE " . TABLE_BESTELLEN . ".session = '" . $SessionID . "'";
	}
	
//	echo '$SQLString: ' . $SQLString . "<br>";
	
	$BestellObject = mysql_fetch_object(errorlogged_mysql_query($SQLString));

    if(!$BestellObject)
        return false;

    // Warenkorb
	$BestellObject->warenkorbdataarray = GetWarenkorbDataArray($BestellObject->session, $BestellObject->email, 1, $BestellObject->kundengruppentype, $BestellObject->zahlungsart_id, $BestellObject->versandart_id, $BestellObject->language_id, $BestellObject, $BestellObject->gutscheincode);
	
	// MwSt f�r Versand
	if (($BestellObject->kundengruppentype == 1) || ($BestellObject->kundengruppentype == 2)) {
		$BestellObject->versand_mwst_format = number_format($BestellObject->versand_mwst, 2, ",", ".");
	} else {
		$BestellObject->versand_mwst_format = "-";
	}
	
	// Auftragsdatum
	$BestellObject->datum_format = date("d.m.Y", $BestellObject->timestamp);

	// Versandkosten und Zahlungsartkosten 
	if ($BestellObject->kundengruppentype == 1) {
        $BestellObject->zahlungsart_preis = $BestellObject->zahlungsart_brutto;
        $BestellObject->versandart_preis = $BestellObject->versandart_brutto;
        $BestellObject->spedition_preis = $BestellObject->spedition_preis_brutto;
        $BestellObject->spedition_preis_storno = $BestellObject->spedition_preis_storno_brutto;
        $BestellObject->zahlungsart_preis_format_einfach = number_format($BestellObject->zahlungsart_brutto, 2, ",", ".");
		$BestellObject->versandart_preis_format_einfach = number_format($BestellObject->versandart_brutto, 2, ",", ".");
        $BestellObject->spedition_preis_format_einfach = number_format($BestellObject->spedition_preis_brutto, 2, ",", ".");
        $BestellObject->spedition_preis_storno_format_einfach = number_format($BestellObject->spedition_preis_storno_brutto, 2, ",", ".");
    } else {
        $BestellObject->zahlungsart_preis = $BestellObject->zahlungsart_netto;
        $BestellObject->versandart_preis = $BestellObject->versandart_netto;
        $BestellObject->spedition_preis = $BestellObject->spedition_preis_netto;
        $BestellObject->spedition_preis_storno = $BestellObject->spedition_preis_storno_netto;
        $BestellObject->zahlungsart_preis_format_einfach = number_format($BestellObject->zahlungsart_netto, 2, ",", ".");
		$BestellObject->versandart_preis_format_einfach = number_format($BestellObject->versandart_netto, 2, ",", ".");
        $BestellObject->spedition_preis_format_einfach = number_format($BestellObject->spedition_preis_netto, 2, ",", ".");
        $BestellObject->spedition_preis_storno_format_einfach = number_format($BestellObject->spedition_preis_storno_netto, 2, ",", ".");
    }
	
	// Rabatt
	$BestellObject->rabatt_betrag_format_einfach = number_format($BestellObject->rabatt_betrag, 2, ",", ".");
	
	// Warenwert
	if ($BestellObject->kundengruppentype == 1) {
		$BestellObject->warenwert = $BestellObject->warenwert_brutto;
		$BestellObject->warenwert_format_einfach = number_format($BestellObject->warenwert_brutto, 2, ",", ".");
		$BestellObject->warenwert_text = $lang_admin_netto_warenwert;
	} else {
		$BestellObject->warenwert = $BestellObject->warenwert_netto;
		$BestellObject->warenwert_format_einfach = number_format($BestellObject->warenwert_netto, 2, ",", ".");
		$BestellObject->warenwert_text = $lang_admin_netto_warenwert;
	}
	
	// Gutschein
	if ($BestellObject->gutscheinaktion_name) {
		$BestellObject->gutschein_betrag = $BestellObject->gutschein_betrag;
		$BestellObject->gutschein_betrag_format_einfach = number_format($BestellObject->gutschein_betrag, 2, ",", ".");
		$BestellObject->gutschein_text = $BestellObject->gutscheinaktion_name . " (" . $BestellObject->gutscheincode . ")";
	}
	
	// Gesamtsumme
	if ($BestellObject->kundengruppentype == 1) {
		$BestellObject->gesamtsumme = $BestellObject->gesamtsumme_brutto;
		$BestellObject->gesamtsumme_format_einfach = number_format($BestellObject->gesamtsumme_brutto, 2, ",", ".");
		$BestellObject->gesamtsumme_text = $lang_admin_brutto_summe;
		$BestellObject->gesamtsumme_alternativ = "";
		$BestellObject->gesamtsumme_alternativ_format_einfach = "";
		$BestellObject->gesamtsumme_alternativ_text = "";
	} elseif ($BestellObject->kundengruppentype == 2) {
		$BestellObject->gesamtsumme = $BestellObject->gesamtsumme_netto;
		$BestellObject->gesamtsumme_format_einfach = number_format($BestellObject->gesamtsumme, 2, ",", ".");
		$BestellObject->gesamtsumme_text = $lang_admin_netto_summe;
		$BestellObject->gesamtsumme_alternativ = $BestellObject->gesamtsumme_brutto;
		$BestellObject->gesamtsumme_alternativ_format_einfach = number_format($BestellObject->gesamtsumme_brutto, 2, ",", ".");
		$BestellObject->gesamtsumme_alternativ_text = $lang_admin_brutto_summe;
	} else {
		$BestellObject->gesamtsumme = $BestellObject->gesamtsumme_netto;
		$BestellObject->gesamtsumme_format_einfach = number_format($BestellObject->gesamtsumme, 2, ",", ".");
		$BestellObject->gesamtsumme_text = $lang_admin_netto_summe;
		$BestellObject->gesamtsumme_alternativ = "";
		$BestellObject->gesamtsumme_alternativ_format_einfach = "";
		$BestellObject->gesamtsumme_alternativ_text = "";
	}
	
	return $BestellObject;

}




function SaveLogFile($BestellObject, $Admin = 0) {
	
	// Log Ordner anlegen
	if(!file_exists(DATEIPFAD . "admin/data/logs")) {
		mkdir(DATEIPFAD . "admin/data/logs", 0755);
		mkdir(DATEIPFAD . "admin/data/logs/bestellungen", 0777);
	}
	
	if(!file_exists(DATEIPFAD . "admin/data/logs/bestellungen/" . date("Y_m").".log")) {
		$handle = fopen(DATEIPFAD . "admin/data/logs/bestellungen/" . date("Y_m").".log",  "a");
		fwrite($handle, "ID;Auftragsnummer;Auftragsdatum;Vorname;Nachname;Kdnr;E-Mail;Gesamtsumme Brutto; Gesamtsumme Netto; Status\n");
	} else {
		$handle = fopen(DATEIPFAD . "admin/data/logs/bestellungen/" . date("Y_m").".log",  "a");
	}
		if($Admin) { $AdminStatus = "Admin"; }
	 fwrite($handle, $BestellObject->id . ";" . $BestellObject->auftragsnummer . ";" . $BestellObject->vorname . ";" . $BestellObject->nachname . ";" . $BestellObject->kunden_id . ";" . $BestellObject->email . ";" . $BestellObject->gesamtsumme_brutto . ";" . $BestellObject->gesamtsumme_netto . ";" . $AdminStatus . "\n");

}

function GetBestellStatusFolgeStatusArray($BestellStatusID, $wenn_bezahlt)
{
	if($BestellStatusID == null)
		return null;
		
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLEN_STATUS_FOLGESTATUS . ".folgestatus ";
	$SQLString .= "FROM " . TABLE_BESTELLEN_STATUS_FOLGESTATUS . " WHERE ";
	$SQLString .= TABLE_BESTELLEN_STATUS_FOLGESTATUS . ".status = '" . $BestellStatusID . "'";
	$SQLString .= " AND " . TABLE_BESTELLEN_STATUS_FOLGESTATUS . ".bezahlt = '" . $wenn_bezahlt . "'";

	$QueryResource = errorlogged_mysql_query($SQLString);
	
	while($folgestatus = mysql_fetch_object($QueryResource))
	{
		$folgestatus_array[$folgestatus->folgestatus] = true;
	}
	return $folgestatus_array;
}

function GetBestellstatusAktionenArray()
{
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLSTATUS_AKTIONEN . ".id, ";
	$SQLString .= TABLE_BESTELLSTATUS_AKTIONEN . ".name ";
	$SQLString .= "FROM " . TABLE_BESTELLSTATUS_AKTIONEN;
	
	$QueryResource = errorlogged_mysql_query($SQLString);
	
	while($bestellen_status_aktion = mysql_fetch_object($QueryResource))
	{
		$aktionen_array[$bestellen_status_aktion->id] = $bestellen_status_aktion->name;
	}
	
	return $aktionen_array;
}

function GetAktionenForBestellstatus($BestellstatusID)
{
	if($BestellstatusID == null)
		return null;
	$SQLString = "SELECT ";
	$SQLString .= TABLE_BESTELLEN_STATUS_AKTIONEN . ".aktion ";
	$SQLString .= "FROM " . TABLE_BESTELLEN_STATUS_AKTIONEN;
	$SQLString .= " WHERE ";
	$SQLString .= TABLE_BESTELLEN_STATUS_AKTIONEN . ".status = '" . $BestellstatusID . "'";
	
	$QueryResource = errorlogged_mysql_query($SQLString);
	
	while($bestellen_status_aktion = mysql_fetch_object($QueryResource))
	{
		$aktionen_array[$bestellen_status_aktion->aktion] = true;
	}
	
	return $aktionen_array;
}

function VersandDatumSetzen(&$BestellObject, $BestellID)
{
	if($BestellObject->versandtdatum == '0000-00-00 00:00:00')
	{
		SetVersandtDaten($BestellID, $BestellObject->kunden_id);
		$BestellObject = GetBestellenDetail($BestellID);
	}
}

function SetVersandtDaten($BestellID, $KundenID) {
		
	// Bestellung aktualisieren
	$SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
	$SQLString .= TABLE_BESTELLEN . ".versandtdatum = NOW() ";
	$SQLString .= "WHERE id = '" . $BestellID . "'";
	$MySQLQueryReference = errorlogged_mysql_query($SQLString);
}

function BestellStatusWechseln($BestellID, $BestellStatusNeu, $ShopeinstellungObject=0, $StornierungsText="") {
        $BestellObject = GetBestellenDetail($BestellID);
        $aktionen_array = GetAktionenForBestellstatus($BestellStatusNeu);
        if($aktionen_array)
        {
            foreach($aktionen_array as $AktionsID=>$dummy)
            {

                switch($AktionsID)
                {
                    case STATUSAKTION_VERSANDDATUM_SETZEN:
                        VersandDatumSetzen($BestellObject, $BestellID);
                        break;
                    case STATUSAKTION_BEZAHLDATUM_SETZEN:
                        SetBezahlDaten($BestellID);
                        break;
                    case STATUSAKTION_BESTELLLAGERBESTAND_REDUZIERN:
                        SetBestellungBestellLager($BestellID);
                        break;
                    case STATUSAKTION_LAGERBESTAND_REDUZIERN:
                        SetBestellungLager($BestellID);
                        break;
                    default:
                        break;

                }
            }
        }


		$SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
		$SQLString .= TABLE_BESTELLEN . ".status = '" . $BestellStatusNeu . "' ";
		$SQLString .= "WHERE id = '" . $BestellID . "'";
		$MySQLQueryReference = errorlogged_mysql_query($SQLString);

}

function SetAuftragsbestaetigungsDatum($bestell_id)
{
	$SQLString = "UPDATE " . TABLE_BESTELLEN . " SET ";
	$SQLString .= TABLE_BESTELLEN . ".auftragsbestaetigungdatum = NOW()";
	$SQLString .= " WHERE " . TABLE_BESTELLEN . ".id = '" . $bestell_id . "'";

	errorlogged_mysql_query($SQLString);
}

function SavePaymentInterfaceFreiesFeld($BestellID, $freiesFeld, $freiesFeldName) {
    $SQLString = 'UPDATE ' . TABLE_BESTELLEN . ' SET ';
    $SQLString .= 'zahlungsschnittstelle_freiesfeld = \'' . $freiesFeld . '\', ';
    $SQLString .= 'zahlungsschnittstelle_freiesfeldname = \'' . $freiesFeldName . '\' ';
    $SQLString .= ' WHERE id = \'' . $BestellID . '\'';
    errorlogged_mysql_query($SQLString);
}

function SavePaymentInterfaceBestellParams($BestellID, $bestellParams) {

    $SQLString = 'INSERT INTO ' . TABLE_ZAHLUNGSSCHNITTSTELLEN_BESTELLPARAMS . ' (bestell_id, param_name, param_value) VALUES ';
    foreach($bestellParams as $param_name => $param_value) {
        $SQLString .= '(\'' . $BestellID . '\', \'' . $param_name . '\', \'' . $param_value . '\'), ';
    }
    $SQLString = substr($SQLString, 0, strlen($SQLString) - 2);
    errorlogged_mysql_query($SQLString);
}

function SavePaymentInterfaceBestellIdentifier($BestellID, $orderIdentifierValue) {
    $SQLString = 'UPDATE ' . TABLE_BESTELLEN . ' SET zahlungsschnittstelle_bestell_id = \'' . $orderIdentifierValue . '\', phpsessid = \'' . session_id() . '\' WHERE id = \'' . $BestellID . '\'';
    errorlogged_mysql_query($SQLString);
}

function LoadPaymentInterfaceBestellParams($BestellID) {
    $SQLString = 'SELECT param_name, param_value FROM ' . TABLE_ZAHLUNGSSCHNITTSTELLEN_BESTELLPARAMS . ' WHERE bestell_id = \'' . $BestellID . '\'';
    $result = errorlogged_mysql_query($SQLString);

    $paramArray = array();
    while($row = mysql_fetch_assoc($result)) {
        $paramArray[$row['param_name']] = $row['param_value'];
    }

    return $paramArray;
}

function CheckPendingPayments() {
    $WaehrungObject = GetWaehrungDetail();
    $einstellungen = GetEinstellungen('', 'zahlungsschnittstellen');
    $bestellungenArray = GetBestellDataArray('status', $einstellungen->zahlungsschnittstellen->status_zahlung_ueberpruefung, '', '');
    foreach($bestellungenArray as $bestellung) {
        if($bestellung['zahlungsschnittstelle_id']) {
            $paymentInterface = getPaymentInterface($bestellung['zahlungsschnittstelle_id']);
            if($paymentInterface->getPluginCaps('checkPending')) {
                $paymentInterface->validateAndSetPaymentChoice(LoadPaymentInterfaceBestellParams($bestellung['id']));
                $BestellObject = GetBestellenDetail($bestellung['id']);
                $KundenObject = GetKundenDetail("",$BestellObject->kunden_id);
                $orderObject = createPaymentInterfaceOrderFromBestellObject($BestellObject, $WaehrungObject, $KundenObject);
                $paymentResult = $paymentInterface->checkPending($orderObject, $BestellObject->zahlungsschnittstelle_freiesfeld);
                switch($paymentResult->result) {
                    case PaymentResult::PAYMENT_COMPLETE:
                        $zahlungsartObj = GetZahlungsartDetail($BestellObject->zahlungsart_id);
                        BestellStatusWechseln($BestellObject->id, $zahlungsartObj->bestellen_status_id);
                        break;
                    case PaymentResult::PAYMENT_FAILED:
                        BestellStatusWechseln($BestellObject->id, $einstellungen->zahlungsschnittstellen->status_zahlung_abgelehnt);
                        break;
                }
            }
        }
    }
}


?>