Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    //$Id: index.php 3361 2011-02-24 15:34:41Z tiefland $
        
        /**
         * ALTE VERSION NICHT NUTZEN!
         * 
         * NEUE VERSION IST ebay_auktionsimport.php
         */

    /**
     * @author Patirck Lautsch <lautsch@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @package Content-management
     * @version $Rev: 3361 $
     * @license propietary
     * @filesource
     * 
     */

    /**
     * 
     * @author Patirck Lautsch <lautsch@weban.de>
     * @copyright 2009 Webagentur Niewerth
     * @package Content-management
     */

    // Wenn $_GET['shops_id'] nicht gesetzt ist oder leer ist -> Fehlermeldung und die
    if ( empty( $_GET['shops_id'] ) )
    {
        die( "Es wurde vergessen die Shop ID anzugeben!<br />
                  Bitte geben Sie die Datenbank über die Get-Variable \"shops_id\" an." );
    }

    // Wenn $_GET['bestellart_id'] nicht gesetzt ist oder leer ist -> Fehlermeldung und die
    if ( empty( $_GET['bestellart_id'] ) )
    {
        die( "Es wurde vergessen die Bestellart ID anzugeben!<br />
                  Bitte geben Sie die Datenbank über die Get-Variable \"bestellart_id\" an." );
    }

    // connect-Datei einbinden
    require_once "../../Online-Shop/connect2.php";

    // Binde Funktionen ein
    require_once "includes/funktionen.inc.php";

    // hole den Ort der Config-Datei aus 'eBay_settings'
    $sql = "
        SELECT
            Inhalt
        FROM
            eBay_settings
        WHERE
            Typ = 'confDatei'
            AND shops_id = '" . $_GET['shops_id'] . "'
    ";
    $result = mysql_query( $sql ) or die( mail("info@weban.de",
        "eBay-Cronjob Fehler", mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
    $row = mysql_fetch_assoc( $result );

    $confDatei = $row[Inhalt];

    $_GET["confDatei"] = $confDatei;
    
    // hole die XML-Datei in der die Transactions sind
    ob_start();
    require_once  "/web/apache/content-management/cronjobs/ebay/holeXML.php";
    $file = ob_get_contents();
    ob_end_clean();
    
    // Definition welcher Teil der XML-Datei gelesen werden soll
    $start = "&lt;TransactionArray&gt;";
    $ende = "&lt;/TransactionArray&gt;";

    // speichere den XML-Ausschnitt in Treffer
    $treffer = get_string_between( $file, $start, $ende );

    // Sonderzeichen wie spitze Klammern werden in Entities geschrieben,
    // deshalb müssen diese mit html_entity_decode() zurückverwandelt werden
    $treffer = html_entity_decode( $treffer );

    // packe ein Root-Tag um den ausgeschnitten XML-Teil
    $treffer = "<ebay>" . $treffer . "</ebay>";

    // erzeuge ein Objekt aus dem ausgeschnitten XML-Teil
    $xml = simplexml_load_string( $treffer );
    
    // Gehe alle Transactions durch
    foreach ( $xml->Transaction as $ta )
    {
        /**
         * Notiz:
         * When an item is listed as a Chinese auction type ( the default value of the AddItem.Item.ListingType property), the TransactionID
         * always returns a value of '0' as described in the online document :
         * http://developer.ebay.com/DevZone/XML/docs/Reference/eBay/GetItemTransactions.html
        **/ 
        // Wenn das ListingType = "chinese" ist, nehme die ItemID als TransactionID
        if ( "Chinese" == $ta->Item->ListingType )
        {
            $ta->TransactionID = $ta->Item->ItemID;
        }
        
        // Überprüfe ob die Transaction schon in der Datenbank ist
        $sql = "
            SELECT
                TransactionId
            FROM
                eBay_Bestellung
            WHERE
                TransactionId = '" . $ta->TransactionID . "'            
        ";
        $result = mysql_query( $sql ) or die( mail("info@weban.de",
            "eBay-Cronjob Fehler", mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
        $row = mysql_fetch_assoc( $result );

        // Transaction vorhanden?
        if ( NULL == $row[TransactionId] )
        {
            // Transaction nicht vorhanden:
            // Trage Transaction und dazugehörige Daten in die Datenbank

            // Attribut-Inhalt löschen wenn Inhalt gleich "Invalid Request"
            if ( $ta->Buyer->Email == "Invalid Request" )
            {
                $ta->Buyer->Email = "";
            }
            if ( $ta->Buyer->RegistrationAddress->Phone == "Invalid Request" )
            {
                $ta->Buyer->RegistrationAddress->Phone = "";
            }
            if ( $ta->Buyer->BuyerInfo->ShippingAddress->Phone == "Invalid Request" )
            {
                $ta->Buyer->BuyerInfo->ShippingAddress->Phone = "";
            }

            // ME: bei Usern aus dem Ausland wird die Rechnungsadresse nicht korrekt gefüllt
            // das muss hier behoben werden:
            // wenn keine Rechnungsadresse eingetragen ist, wird die Rechnungsadresse mit den Daten der
            // Lieferadresse gefüllt
            unset($RegistrationAddress_Name);
                        if ( strlen($ta->Buyer->RegistrationAddress->Name) == 0 )
            {
                $RegistrationAddress_Name = $ta->Buyer->BuyerInfo->ShippingAddress->Name;
            }
            
            unset($RegistrationAddress_Street);
            if ( strlen($ta->Buyer->RegistrationAddress->Street) == 0 )
            {
                $RegistrationAddress_Street = $ta->Buyer->BuyerInfo->ShippingAddress->
                    Street1;
            }
            
            unset($RegistrationAddress_PostalCode);
            if ( strlen($ta->Buyer->RegistrationAddress->PostalCode) == 0 )
            {
                $RegistrationAddress_PostalCode = $ta->Buyer->BuyerInfo->ShippingAddress->
                    PostalCode;
            }
            
            unset($RegistrationAddress_CityName);
            if ( strlen($ta->Buyer->RegistrationAddress->CityName) == 0 )
            {
                $RegistrationAddress_CityName = $ta->Buyer->BuyerInfo->ShippingAddress->
                    CityName;
            }
            
            unset($RegistrationAddress_CountryName);
            if ( strlen($ta->Buyer->RegistrationAddress->CountryName) == 0 )
            {
                $RegistrationAddress_CountryName = $ta->Buyer->BuyerInfo->ShippingAddress->
                    CountryName;
            }

            // Ist der eBay-Benutzer schon vorhanden in der Datenbank?
            $sql = "
                SELECT
                    ID,
                    ebay_UserID
                FROM
                    Logins
                WHERE
                    ebay_UserID = '" . mysql_real_escape_string( deutsche_umlaute
                ($ta->Buyer->UserID) ) . "'
            ";
            $result = mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() .
                '<hr />' . $sql );
            $row = mysql_fetch_assoc( $result );

            if ( $row['ebay_UserID'] == mysql_real_escape_string(deutsche_umlaute($ta->
                Buyer->UserID)) )
            {
                // eBay-Benutzer ist schon vorhanden
                $user_id = $row['ID'];
                
                // UPDATE der Logins-Tabelle
                $sql = "
                    UPDATE
                        Logins
                    SET
                        Name1 = '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_Name) ?
                    $RegistrationAddress_Name : $ta->Buyer->RegistrationAddress->Name) ) . "',
                        Strasse = '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_Street) ?
                    $RegistrationAddress_Street : $ta->Buyer->RegistrationAddress->Street) ) .
                    "',
                        PLZ = '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_PostalCode) ?
                    $RegistrationAddress_PostalCode : $ta->Buyer->RegistrationAddress->
                    PostalCode) ) . "',
                        ORT = '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_CityName) ?
                    $RegistrationAddress_CityName : $ta->Buyer->RegistrationAddress->CityName) ) .
                    "',
                        Land = '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_CountryName) ?
                    $RegistrationAddress_CountryName : $ta->Buyer->RegistrationAddress->
                    CountryName) ) . "',
                        E_Mail = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->Email) ) . "',
                        Telefon = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Phone) ) . "',
                        liefer_Name = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Name) ) . "',
                        liefer_Strasse = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Street1) ) . "',
                        liefer_PLZ = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->PostalCode) ) . "',
                        liefer_Ort = '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->CityName) ) . "',
                        letzte_Aenderung_am = NOW(),
                        ebay_FeedbackScore = '" . $ta->Buyer->FeedbackScore . "',
                        ebay_PositiveFeedbackPercent = '" . $ta->Buyer->PositiveFeedbackPercent . "'
                    WHERE
                        ID = $user_id;                        
                ";
                mysql_query( $sql ) or die( mysql_errno() . ': ' . mysql_error() .
            '<hr />' . $sql );               
            }
            else
            {
                // eBay-Benutzer ist noch nicht vorhanden
                // SQL: Benutzer anlegen
                $sql = "
                    INSERT INTO Logins
                    (
                        Name1,
                        Strasse,
                        PLZ,
                        ORT,
                        Land,
                        E_Mail,
                        Telefon,
                        liefer_Name,
                        liefer_Strasse,
                        liefer_PLZ,
                        liefer_Ort,
                        erstellt_am,
                        erstellt_von,
                        letzte_Aenderung_am,
                        letzte_Aenderung_von,
                        ebay_UserID,
                        ebay_FeedbackScore,
                        ebay_PositiveFeedbackPercent
                    )
                    VALUES
                    (
                        '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_Name) ?
                    $RegistrationAddress_Name : $ta->Buyer->RegistrationAddress->Name) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_Street) ?
                    $RegistrationAddress_Street : $ta->Buyer->RegistrationAddress->Street) ) .
                    "',
                        '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_PostalCode) ?
                    $RegistrationAddress_PostalCode : $ta->Buyer->RegistrationAddress->
                    PostalCode) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_CityName) ?
                    $RegistrationAddress_CityName : $ta->Buyer->RegistrationAddress->CityName) ) .
                    "',
                        '" . mysql_real_escape_string( deutsche_umlaute(($RegistrationAddress_CountryName) ?
                    $RegistrationAddress_CountryName : $ta->Buyer->RegistrationAddress->
                    CountryName) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->Email) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Phone) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Name) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->Street1) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->PostalCode) ) . "',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->BuyerInfo->ShippingAddress->CityName) ) . "',
                        NOW(),
                        'ebay-cronjob',
                        NOW(),
                        'ebay-cronjob',
                        '" . mysql_real_escape_string( deutsche_umlaute($ta->
                    Buyer->UserID) ) . "',
                        '" . $ta->Buyer->FeedbackScore . "',
                        '" . $ta->Buyer->PositiveFeedbackPercent . "'
                    );
                ";
                
                mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                    mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );

                // Speichere die gerade eingefügte UserID
                $user_id = mysql_insert_id();
            }

            // eBay-Shops sind unter "shops.ebay = 1" markiert
            $shops_id = $_GET['shops_id'];

            // SQL: Bestellung
            $jetztBezahlen = ( $ta->Status->CheckoutStatus == "CheckoutComplete" ) ?
                "Der Käufer hat die Kaufabwicklung nach dem Kauf abgeschlossen\nZahlungsart: " .
                $ta->Status->PaymentMethodUsed :
                "Der Käufer hat die Kaufabwicklung nach dem Kauf noch nicht abgeschlossen";

            $erstellt_am = $ta->ExternalTransaction->ExternalTransactionTime;

            // Wenn $erstellt_am nicht gesetzt, dann nehme das aktuelle Datum
            $ts = ( $erstellt_am ) ? strtotime( $erstellt_am ) : time();
            $ts = date( "Y-m-d g:i:s", $ts );

            $sql = "
                INSERT INTO Bestellung
                (
                    Bemerkung,
                    Login,
                    shops_ID,
                    bestellart_id,
                    erstellt_am,
                    erstellt_von,
                    liefer_Name,
                    liefer_Strasse,
                    liefer_PLZ,
                    liefer_Ort,
                    liefer_Land
                )
                VALUES
                (
                    'eBay-Benutzername: " . deutsche_umlaute( $ta->Buyer->
                UserID ) . "\n" . $jetztBezahlen . "',
                    '" . $user_id . "',
                    '" . $shops_id . "',
                    '" . $_GET['bestellart_id'] . "',
                    '$ts',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->UserID) ) . " (" . $ta->Buyer->FeedbackScore . " - " . $ta->Buyer->
                PositiveFeedbackPercent . "%)',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->BuyerInfo->ShippingAddress->Name) ) . "',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->BuyerInfo->ShippingAddress->Street1) ) . "',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->BuyerInfo->ShippingAddress->PostalCode) ) . "',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->BuyerInfo->ShippingAddress->CityName) ) . "',
                    '" . mysql_real_escape_string( deutsche_umlaute($ta->
                Buyer->BuyerInfo->ShippingAddress->CountryName) ) . "'
                );
            ";
            
            mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );

            // Speichere die gerade eingefügte BestellID
            $bestell_id = mysql_insert_id();

            // Wenn der CheckoutStatus auf "CheckoutComplete" steht, setzte $checkoutStatus = 1
            $checkoutStatus = $ta->Status->CheckoutStatus == "CheckoutComplete" ? 1 : 0;

            // SQL: ebay_Bestellung
            $sql = "
                INSERT INTO eBay_Bestellung
                (
                        Bestellung_ID,          
                        PaymentMethodUsed,
                        TransactionId,          
                        eBay_Auktionen_ID,
                    CheckoutAfterSales          
                )
                VALUES
                (
                        '" . $bestell_id . "',          
                        '" . $ta->Status->PaymentMethodUsed . "',
                        '" . $ta->TransactionID . "',   
                        '" . $ta->Item->ItemID . "',
                        '" . $checkoutStatus . "'
                );
            ";

            mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );

            // SQL: artikel_to_Bestellung
            $sql = "
                INSERT INTO artikel_to_Bestellung
                (
                        artikel,
                        Bestellung,
                        Menge,
                        Preis_pro_Stueck,
                        status,
                        Bezeichnung
                )
                VALUES
                (
                        '999999',
                        " . $bestell_id . ",
                        " . $ta->QuantityPurchased . ",
                        " . $ta->TransactionPrice . ",
                        'offen',
                        '" . deutsche_umlaute( $ta->Item->Title ) . "'
                );
            ";

            mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );


            // Versand angegeben?
            if ( isset($ta->ShippingServiceSelected->ShippingService) )
            {
                // SQL: Hole die ID des eBay-Versandartikels
                $sql = "
                    SELECT
                        Inhalt
                    FROM
                        eBay_settings
                    WHERE
                        Typ = 'static'
                        AND shops_ID = $shops_id
                ";
                $result = mysql_query( $sql ) or die( mail("info@weban.de",
                    "eBay-Cronjob Fehler", mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
                $row = mysql_fetch_assoc( $result );

                // eBay Versandartikel
                $ebay_versandartikel_id = $row['Inhalt'];

                // Falls der Bezeichnung "DE_Paket" für den Versandartikel in der XML ist,
                // dann nenne ihn "Vorkasse / Versandkosten"
                $va_bez = ( deutsche_umlaute($ta->ShippingServiceSelected->ShippingService) ==
                    "DE_Paket" ) ? "Vorkasse / Versandkosten" : deutsche_umlaute( $ta->
                    ShippingServiceSelected->ShippingService );

                // SQL: Versandartikel in die Bestellung übernehmen
                $sql = "
                    INSERT INTO artikel_to_Bestellung
                    (
                        artikel,
                        Bestellung,
                        Menge,
                        Preis_pro_Stueck,
                        Bezeichnung,
                        status
                    )
                    VALUES
                    (
                        '" . $ebay_versandartikel_id . "',
                        " . $bestell_id . ",
                        " . 1 . ",
                        " . $ta->ShippingServiceSelected->ShippingServiceCost .
                    ",
                        '" . $va_bez . "',
                        ''
                );";

                mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                    mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
            }
        }
        else
        {
            // Transaction ist vorhanden:

            // CheckoutAfterSales in der Tabelle 'eBay_Bestellung' = 0 und $ta->Status->CheckoutStatus = "CheckoutComplete", dann update die Tabelle 'eBay_Bestellung' und 'Bestellung'
            $sql = "
                SELECT
                    CheckoutAfterSales,
                    Bestellung_ID
                FROM
                    eBay_Bestellung
                WHERE
                    TransactionId = '" . $ta->TransactionID . "'
            ";
            $result = mysql_query( $sql ) or die( mmail("info@weban.de",
                "eBay-Cronjob Fehler", mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
            $row = mysql_fetch_assoc( $result );

            $CheckoutAfterSales = $row[CheckoutAfterSales];
            $Bestellung_ID = $row[Bestellung_ID];

            // Wenn '$Bestellung_ID' nicht vorhanden ist, heißt das der Transaktion nicht vorhanden ist,
            // in diesem Fall soll auch kein Update gefahren werden.
            if ( $Bestellung_ID )
            {
                // Wenn der CheckoutStatus verändert wurde
                if ( 0 == $CheckoutAfterSales && "CheckoutComplete" == $ta->Status->
                    CheckoutStatus )
                {
                    $sql = "
                        UPDATE
                            eBay_Bestellung
                        SET
                            CheckoutAfterSales = 1,
                            PaymentMethodUsed = '" . $ta->Status->
                        PaymentMethodUsed . "' 
                        WHERE
                            TransactionId = '" . $ta->TransactionID . "'
                    ";
                    mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                        mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );

                    $jetztBezahlen = ( $ta->Status->CheckoutStatus == "CheckoutComplete" ) ?
                        "Der Käufer hat die Kaufabwicklung nach dem Kauf abgeschlossen\nZahlungsart: " .
                        $ta->Status->PaymentMethodUsed : "";


                    $sql = "
                        UPDATE
                            Bestellung
                        SET
                            Bemerkung = 'eBay-Benutzername: " .
                        deutsche_umlaute( $ta->Buyer->UserID ) . "\n" . $jetztBezahlen . "',
                        liefer_Name                     = '" . deutsche_umlaute( $ta->Buyer->
                        BuyerInfo->ShippingAddress->Name ) . "',
                        liefer_Strasse          = '" . deutsche_umlaute( $ta->Buyer->
                        BuyerInfo->ShippingAddress->Street1 ) . "',
                        liefer_PLZ                      = '" . deutsche_umlaute( $ta->Buyer->
                        BuyerInfo->ShippingAddress->PostalCode ) . "',
                        liefer_Ort                      = '" . deutsche_umlaute( $ta->Buyer->
                        BuyerInfo->ShippingAddress->CityName ) . "',
                        liefer_Land                     = '" . deutsche_umlaute( $ta->Buyer->
                        BuyerInfo->ShippingAddress->CountryName ) . "'
                        WHERE
                            ID = '" . $Bestellung_ID . "'
                    ";

                    mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                        mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );

                    // Versand angegeben?
                    if ( isset($ta->ShippingServiceSelected->ShippingService) )
                    {
                        // SQL: Hole die ID des eBay-Versandartikels
                        $sql = "
                            SELECT
                                ID
                            FROM
                                artikel
                            WHERE
                                kurzbezeichnung = 'eBay-Versand'
                                AND
                                Father = -3
                        ";
                        $result = mysql_query( $sql ) or die( mail("info@weban.de",
                            "eBay-Cronjob Fehler", mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
                        $row = mysql_fetch_assoc( $result );

                        // eBay Versandartikel
                        $ebay_versandartikel_id = $row[ID];

                        // Falls der Bezeichnung "DE_Paket" für den Versandartikel in der XML ist,
                        // dann nenne ihn "Vorkasse / Versandkosten"
                        $va_bez = ( deutsche_umlaute($ta->ShippingServiceSelected->ShippingService) ==
                            "DE_Paket" ) ? "Vorkasse / Versandkosten" : deutsche_umlaute( $ta->
                            ShippingServiceSelected->ShippingService );
                        // SQL: Versandartikel in die Bestellung übernehmen
                        $sql = "
                            INSERT INTO artikel_to_Bestellung
                            (
                                artikel,
                                Bestellung,
                                Menge,
                                Preis_pro_Stueck,
                                Bezeichnung,
                                status
                            )
                            VALUES
                            (
                                '" . $ebay_versandartikel_id . "',
                                " . $Bestellung_ID . ",
                                " . 1 . ",
                                " . $ta->ShippingServiceSelected->
                            ShippingServiceCost . ",
                                '" . $va_bez . "',
                                ''
                        );";

                        mysql_query( $sql ) or die( mail("info@weban.de", "eBay-Cronjob Fehler",
                            mysql_errno() . ': ' . mysql_error() . '<hr />' . $sql) );
                    }
                }
            }
        }
    }
?>