Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    // zu verarbeitende Shops einlesen
    $shops = file( "shops.txt" );

    // wichtige Konstanten

    define( "FILE_PATH", "/var/www/HQStransfer/" );
    define( "ARCHIVE_PATH_BASE", "/var/cronjobs/HQSexport/archiv/" );
    define( "ARCHIVE_PATH_EXT", date( "Y" ) . "/" . date( "m" ) );
    define( "ARCHIVE_PATH", ARCHIVE_PATH_BASE . ARCHIVE_PATH_EXT . "/" );
    define( "TRENNER", "\r\n" );

    //wichtige Variablen

    $zeit = date( "Y-m-d-Gi" );
    $handle = date( "Y-m-d G:i:s", time() );

    //Archiv-Verzeichnisse erstellen
    if ( !file_exists( ARCHIVE_PATH ) )
    {
        chdir( ARCHIVE_PATH_BASE );
        $p = explode( "/", ARCHIVE_PATH_EXT );
        foreach ( $p as $dir )
        {
            if ( !file_exists( $dir ) )
            {
                $res_d = mkdir( $dir );
                if ( !$res_d )
                {
                    mail( "tiefland@weban.de",
                        "Fehler beim Export der Bestellungen auf www.mediaran.de",
                        "Konnte Verzeichnis $dir NICHT erstellen!\n",
                        "FROM: info@mediaran.de", "-F info@mediaran.de" );
                }
                chdir( $dir );
            }
        }
    }
    // SQL-Abfragen und Dateien erstellen
    $conn = mysql_connect( "localhost", "root", "" );
    if ( !$conn )
    {
        mail( "tiefland@weban.de",
            "Fehler beim Export der Bestellungen auf www.mediaran.de",
            mysql_error() . "\n", "FROM: info@mediaran.de",
            "-F info@mediaran.de" );
        exit;
    }
    $db = mysql_select_db( "mediaran_de" );
    if ( !$db )
    {
        mail( "tiefland@weban.de",
            "Fehler beim Export der Bestellungen auf www.mediaran.de",
            mysql_error() . "\n", "FROM: info@mediaran.de",
            "-F info@mediaran.de" );
        exit;
    }
    foreach ( $shops as $shop )
    {
        $shop = trim( $shop );
        $sql = "
                        update
                                artikel_to_Bestellung,
                                Bestellung,
                                shops
                        set
                                artikel_to_Bestellung.exported_rechnung = '$handle'
                        WHERE
                                artikel_to_Bestellung.rechnungStatus = 'schreiben'
                        and
                                artikel_to_Bestellung.Bestellung = Bestellung.ID
                        and
                                Bestellung.shops_ID = shops.ID
                        and
                                shops.Name = '$shop'
                ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            mail( "tiefland@weban.de",
                "Fehler beim Export der Bestellungen auf www.mediaran.de",
                mysql_error() . "\n$sql\n", "FROM: info@mediaran.de",
                "-F info@mediaran.de" );
            exit;
        }
        /*--
        -- Liste der Bestellungen erstellen*/
        $sql = "
                        create temporary table bestellungID engine=heap
                                select
                                        Bestellung.ID as Bestellung,
                                        shops.Language,
                                        shops.Name
                                from
                                        artikel_to_Bestellung,
                                        Bestellung,
                                        shops
                                where
                                        artikel_to_Bestellung.exported_rechnung = '$handle'
                                and
                                        artikel_to_Bestellung.Bestellung = Bestellung.ID
                                and
                                        Bestellung.shops_ID = shops.ID
                                and
                                        shops.Name = '$shop'
                                group by
                                        Bestellung.ID;
                ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            mail( "tiefland@weban.de",
                "Fehler beim Export der Bestellungen auf www.mediaran.de",
                mysql_error() . "\n$sql\n", "FROM: info@mediaran.de",
                "-F info@mediaran.de" );
            die();
        }
        /*--
        -- Auswählen aller Bestellungen die jetzt exportiert werden sollen*/
        $sql_b = "
                        select
                                distinct
                                        Bestellung.ID as A001,
                                        LCASE(Logins.E_Mail) as A002,
                                        Bestellung.ID as POSI,
                                        if (
                                                trim(
                                                        concat(
                                                                Bestellung.liefer_Firma,
                                                                Bestellung.liefer_Vorname,
                                                                Bestellung.liefer_Name,
                                                                Bestellung.liefer_Strasse,
                                                                Bestellung.liefer_Str_Nr,
                                                                Bestellung.liefer_PLZ,
                                                                Bestellung.liefer_Ort,
                                                                Bestellung.liefer_Land
                                                        )
                                                ) = '',
                                                Bemerkung,
                                                concat(
                                                        'LIEFERADRESSE:\n',
                                                        Bestellung.liefer_Firma, '\n',
                                                        Bestellung.liefer_Vorname, '\n',
                                                        Bestellung.liefer_Name, '\n',
                                                        Bestellung.liefer_Strasse,' ',Bestellung.liefer_Str_Nr, '\n',
                                                        Bestellung.liefer_PLZ,' ',Bestellung.liefer_Ort, '\n',
                                                        Bestellung.liefer_Land, '\n\n',
                                                        repeat('-',50), '\n\n',
                                                        Bemerkung
                                                )
                                        ) as A003
                        from
                                Logins,
                                Bestellung,
                                shops,
                                artikel_to_Bestellung
                        where
                                Logins.ID = Bestellung.Login
                        and
                                artikel_to_Bestellung.exported_rechnung = '$handle'
                        and
                                artikel_to_Bestellung.Bestellung = Bestellung.ID
                        AND
                                shops.Name='$shop'
                        AND
                                Bestellung.shops_ID=shops.ID
                ";
        $res_b = mysql_query( $sql_b );
        if ( !$res_b )
        {
            mail( "tiefland@weban.de",
                "Fehler beim Export der Bestellungen auf www.mediaran.de",
                mysql_error() . "\n$sql_b\n", "FROM: info@mediaran.de",
                "-F info@mediaran.de" );
            die();
        }
        if ( mysql_num_rows( $res_b ) )
        {
            //Kundendaten liegen vor
            $fName = FILE_PATH . "export_$shop" . ".txt";
            $fName_archive = ARCHIVE_PATH . $zeit . " $shop.txt";
            $f = fopen( $fName, "a" );
            fwrite( $f, TRENNER );
            while ( $row_b = mysql_fetch_assoc( $res_b ) )
            {
                /*--
                -- Auswählen aller Kundendaten der Bestellungen die jetzt exportiert werden sollen*/
                $sql_l = "
                                        select
                                                distinct
                                        --              Logins.ID as K001,
                                                        LCASE(Logins.E_Mail) as K001,
                                                        IFNULL(Logins.Anrede,'') as K002,
                                                        IF (Logins.Name2 = '', IF(ISNULL(Logins.Vorname), Logins.Name1, concat(Logins.Vorname, ' ', Logins.Name1)), Logins.Name2) as K003,
                                                        IF (Logins.Name2 != '', IF(ISNULL(Logins.Vorname), Logins.Name1, concat(Logins.Vorname, ' ', Logins.Name1)), Logins.Name2) as K004,
                                                        concat(Logins.Strasse,' ',Logins.Hausnummer) as K005,
                                                        concat(Logins.PLZ,' ',Logins.ORT) as K006,
                                                        '' as K007,
                                                        Logins.Telefon as K008,
                                                        '' as K009,
                                                        LCASE(Logins.E_Mail) as K010,
                                                        Logins.Fax as K011,
                                                        '' as K012,
                                                        '' as K013,
                                                        '' as K014,
                                                        '' as K015,
                                                        '' as K016,
                                                        '' as K017,
                                                        '' as K018,
                                                        '' as K019,
                                                        '' as K020,
                                                        '' as K021,
                                                        '' as K022,
                                                        '' as K023
                                                from
                                                        Logins,
                                                        Bestellung,
                                                        artikel_to_Bestellung
                                                where
                                                        artikel_to_Bestellung.exported_rechnung = '$handle'
                                                and
                                                        artikel_to_Bestellung.Bestellung = Bestellung.ID
                                                and
                                                        Bestellung.Login = Logins.ID
                                                AND
                                                        Bestellung.ID=" . $row_b["A001"];
                $res_l = mysql_query( $sql_l );
                if ( !$res_l )
                {
                    mail( "tiefland@weban.de",
                        "Fehler beim Export der Bestellungen auf www.mediaran.de",
                        mysql_error() . "\n$sql_l\n",
                        "FROM: info@mediaran.de", "-F info@mediaran.de" );
                    die();
                }
                fwrite( $f, "<KUNDEN>" . TRENNER );
                $row_l = mysql_fetch_assoc( $res_l );
                foreach ( $row_l as $l_feld => $l_val )
                {
                    if ( $l_val )
                    {
                        fwrite( $f, "\t<$l_feld>$l_val" . TRENNER );
                    }
                }
                fwrite( $f, "</KUNDEN>" . TRENNER );
                fwrite( $f, "<AUFTRAG>" . TRENNER );
                foreach ( $row_b as $b_feld => $b_val )
                {
                    if ( $b_val )
                    {
                        if ( $b_feld == "A003" )
                        {
                            $b_val = str_replace( "\r\n", '\R\N', $b_val );
                            $b_val = str_replace( "\r", '\R\N', $b_val );
                            $b_val = str_replace( "\n", '\R\N', $b_val );
                        }
                        fwrite( $f, "\t<$b_feld>$b_val" . TRENNER );
                    }
                }
                /*--
                -- Artikeldaten aller Artikel der georderten Bestellungen*/
                $sql_d = "SET @pos = 0";
                mysql_query( $sql_d );
                $sql_a = "
                                        select distinct
                                                artikel_to_Bestellung.Bestellung as P000,
                                                @pos:=@pos+1 as P001,
                                                artikel.kennung as P002,
                                                artikel_to_Bestellung.Menge as P003,
                                                artikel_to_Bestellung.Preis_pro_Stueck as P004,
                                                IF (artikel_to_Bestellung.Bezeichnung!='',substring(artikel_to_Bestellung.Bezeichnung,1,30),substring(artikel.kurzbezeichnung,1,30)) AS P006,
                                                IF (artikel_to_Bestellung.Bezeichnung!='',substring(artikel_to_Bestellung.Bezeichnung,31,30),substring(artikel.kurzbezeichnung,31,30)) AS P007
                                        from
                                                artikel_to_Bestellung,
                                                bestellungID,
                                                artikel
                                        where
                                                artikel_to_Bestellung.Bestellung=bestellungID.Bestellung
                                        AND
                                                artikel_to_Bestellung.Bestellung=" . $row_b["A001"] . "
                                        and
                                                artikel_to_Bestellung.artikel = artikel.ID
                                        and
                                                artikel.Language = bestellungID.Language 
                                        and
                                        (
                                                artikel.Father = -3
                                                or
                                                        artikel_to_Bestellung.rechnungStatus = 'schreiben'
                                                or
                                                        artikel_to_Bestellung.rechnungStatus = 'geschrieben'
                                        )
                                        order by artikel.Father asc
                                ";
                $res_a = mysql_query( $sql_a );
                if ( !$res_a )
                {
                    mail( "tiefland@weban.de",
                        "Fehler beim Export der Bestellungen auf www.mediaran.de",
                        mysql_error() . "\n$sql_a\n",
                        "FROM: info@mediaran.de", "-F info@mediaran.de" );
                    die();
                }
                while ( $row_a = mysql_fetch_assoc( $res_a ) )
                {
                    fwrite( $f, "\t<POSI>" . TRENNER );
                    foreach ( $row_a as $a_feld => $a_val )
                    {
                        if ( $a_val )
                        {
                            if ( $a_feld == "P006" || $a_feld == "P007" )
                            {
                                $a_val = str_replace( "\r", '\R', $a_val );
                                $a_val = str_replace( "\n", '\N', $a_val );
                            }
                            fwrite( $f, "\t\t<$a_feld>$a_val" . TRENNER );
                        }
                    }
                    fwrite( $f, "\t</POSI>" . TRENNER );
                }
                fwrite( $f, "</AUFTRAG>" . TRENNER );
            }

            fclose( $f );
            // Datei sichern
            $res_f = copy( $fName, $fName_archive );
            if ( !$res_f )
            {
                mail( "tiefland@weban.de",
                    "Fehler beim Export der Bestellungen auf www.mediaran.de",
                    "Konnte Datei $fName NICHT nach $fName_archive kopieren!\n",
                    "FROM: info@mediaran.de", "-F info@mediaran.de" );
            }

            /*--
            -- Aufräumen*/
            $sql_d = "drop table bestellungID";
            mysql_query( $sql_d );
        }
    }
?>