Subversion-Projekte lars-tiefland.content-management

Revision

Blame | Letzte Änderung | Log anzeigen | RSS feed

<?php

    /**
     * @package   Content-management
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2010 Webagentur Niewerth
     * @license   propietary http://www.weban.de
     * @version   $Rev: 3931 $
     * @filesource
     * 
     */

    /**
     * 
     * @package   Content-management
     * @author    Lars Tiefland <tiefland@weban.de>
     * @copyright 2010 Webagentur Niewerth
     */

    // SVN: $Id: rhenus_export.php 3931 2011-09-16 08:17:57Z tiefland $

    require_once 'Weban_Smarty.class.php';
    require_once '../Online-Shop/connect2.php';
    require_once 'File/Find.php';
    require_once 'module/functions.common.php';

    $GLOBALS["ui"] = new Weban_Smarty();
    $GLOBALS["ui"]->compile_dir = $_SERVER["DOCUMENT_ROOT"] . "/templates_c/";
    $GLOBALS["ui"]->compile_id = "Warenwirtschaft|export";
    $GLOBALS["ui"]->use_sub_dirs = true;
    $GLOBALS["ui"]->assign( "title", "Auftragsdaten nach Rhenus exportieren" );
    if ( isset( $user_rechte['Warenwirtschaft']['export']['rhenus'] ) )
    {
        if ( $_GET['mode'] == 'new' )
        {
            rhenus_export();
        } elseif ( $_GET['file'] )
        {
            $file = $_GET['file'];
            if ( file_exists( $file ) )
            {
                //header( 'Content-Type: text/plain' );
                header( 'Content-Disposition: attachment; filename="' .
                    basename( $file ) . '"' );
                readfile( $file );
            }
        }
        else
        {
            if ( !file_exists( "archiv/$site" ) )
            {
                mkdir( "archiv/$site" );
            }
            if ( !file_exists( "archiv/$site" ) )
            {
                mkdir( "archiv/$site" );
            }
            $ff = new File_Find();
            $files = $ff->search( "/export_Bestellungen_rhenus_[0-9a-zA-Z]{0,3}_{0,1}[0-9]{4}-[0-9]{2}-[0-9]{2}_[0-9]{2}-[0-9]{2}-[0-9]{2}.csv$/i",
                "archiv/$site/", "perl" );
            rsort( $files );
            foreach ( $files as $f_id => $file )
            {
                $files_arr[$f_id]["name"] = $file;
                $date = date( "d.m.Y H:i:s", filemtime( $file ) );
                $files_arr[$f_id]["desc"] = $date;
            }
            $GLOBALS["ui"]->assign( "files", $files_arr );
            $GLOBALS["ui"]->assign( "anbieter", "rhenus" );
            $GLOBALS["ui"]->display( "export.tpl" );
        }
    }
    else
    {
        $GLOBALS["ui"]->assign( "meld",
            "Sie haben nicht das Recht dieses Tool zu nutzen!" );
        $GLOBALS["ui"]->assign( "error", true );
        $GLOBALS["ui"]->display( "meld.tpl" );
    }


    function rhenus_export()
    {
        global $site, $web_rechte;
        $date = date( 'Y-m-d_H-i-s' );
        $sql = "SELECT DISTINCT
                Bestellung,
                artikel,
                short_line_1 AS rufname,
                ab.Preis_pro_Stueck,
                a.Eigenschaft_1
            FROM
                artikel_to_Bestellung ab
            JOIN
                artikel AS a
            ON
                a.ID=ab.artikel
            WHERE
                ab.status='freigegeben'
            AND
                a.Father = -3
        ";
        $res_b = mysql_query( $sql );
        if ( !$res_b )
        {
            die( mysql_error() );
        }
        while ( $row_b = mysql_fetch_assoc( $res_b ) )
        {
            $b_id = $row_b["Bestellung"];
            $paket = !( $row_b["Eigenschaft_1"] );
            //$paket = false;
            $a_id = $row_b["artikel"];
            $inkasso = "";
            $zahlungsart = ucfirst( $row_b["rufname"] );
            if ( $zahlungsart == "Nachnahme" )
            {
                // Inkassobetrag ermitteln
                $inkasso = getInkasso( $b_id );
            }
            $entsorgung = getEntsorgung( $b_id );
            $sql_a = "SELECT
                    ab.ID,
                    ab.artikel,
                    ab.Menge,
                    ab.Bezeichnung,
                    ab.Preis_pro_Stueck,
                    a.kurzbezeichnung,
                    a.short_line_2,
                    a.gewicht,
                    a.Father
                FROM
                    artikel_to_Bestellung ab
                JOIN
                    artikel AS a
                ON
                    a.ID=ab.artikel
                WHERE
                    a.Father!=-3
                AND
                    ab.Bestellung=$b_id
            ";
            $res_a = mysql_query( $sql_a );
            if ( !$res_a )
            {
                die( mysql_error() );
            }
            $p_anz_total = mysql_num_rows( $res_a );
            $sql_a = "SELECT
                    ab.ID,
                    ab.artikel,
                    ab.Menge,
                    ab.Bezeichnung,
                    ab.Preis_pro_Stueck,
                    a.kurzbezeichnung,
                    a.short_line_2,
                    a.gewicht,
                    a.Father
                FROM
                    artikel_to_Bestellung ab
                JOIN
                    artikel AS a
                ON
                    a.ID=ab.artikel
                WHERE
                    ab.status='reserviert'
                AND
                    a.Father!=-3
                AND
                    ab.Bestellung=$b_id
            ";
            $res_a = mysql_query( $sql_a );
            if ( !$res_a )
            {
                die( mysql_error() );
            }
            $p_anz = mysql_num_rows( $res_a );
            //echo $p_anz;
            if ( $p_anz )
            {
                $sql = "SELECT
                        b.*,
                        l.E_Mail,
                        l.Vorname,
                        l.Name1,
                        l.Name2 as Firma,
                        l.Strasse,
                        l.Hausnummer,
                        l.PLZ,
                        l.Ort,
                        l.Land,
                        l.Telefon,
                        s.short
                    FROM
                        Bestellung b,
                        Logins l,
                        shops s
                    WHERE
                        l.ID=b.Login
                    AND
                        b.id= $b_id
                    AND
                        s.ID=b.shops_ID
                ";
                $res = mysql_query( $sql );
                if ( !$res )
                {
                    die( mysql_error() );
                }
                while ( $row = mysql_fetch_assoc( $res ) )
                {
                    $inv_artikel = array( 13024, 999997 );
                    if ( in_array( $row_a["artikel"], $inv_artikel ) )
                    {
                        continue;
                    }
                    $b_id = $row["ID"];
                    $s_short = $row["short"];
                    $l_id = $row["Login"];
                    $i = 1;
                    if ( $row['liefer_Land'] )
                    {
                        $land = $row['liefer_Land'];
                        $anrede = $row['liefer_Andrede'];
                        $strasse = $row['liefer_Strasse'];
                        $hausnummer = $row['liefer_Str_Nr'];
                        $name = $row['liefer_Name'];
                        $vorname = $row['liefer_Vorname'];
                        $ort = $row['liefer_Ort'];
                        $plz = $row['liefer_PLZ'];
                    }
                    else
                    {
                        $land = $row['Land'];
                        $anrede = $row['Anrede'];
                        $strasse = $row['Strasse'];
                        $hausnummer = $row['Hausnummer'];
                        $name = $row['Name1'];
                        $vorname = $row['Vorname'];
                        $ort = $row['Ort'];
                        $plz = $row['PLZ'];
                    }
                    $bemerkung = preg_replace( "/[\"'\r\n]*/", "", $row["Bemerkung_extern"] );
                    $bemerkung = str_replace( ";", ",", $bemerkung );
                    $bemerkung = substr( $bemerkung, 0, 70 );
                    $dat = datetime2human( $row["erstellt_am"] );
                    $datum = $dat["Datum"];
                    $land = getISOCode( $land );
                    while ( $row_a = mysql_fetch_assoc( $res_a ) )
                    {
                        $ab_id = $row_a["ID"];
                        $f_row = array();
                        if ( $row_a["Father"] == 131 )
                        {
                            $rhenus_a_id = $row_a["short_line_2"];
                        }
                        else
                        {
                            $rhenus_a_id = $row_a["artikel"];
                        }
                        $a_name = ( $row_a["Bezeichnung"] ) ? $row_a["Bezeichnung"] :
                            $row_a["kurzbezeichnung"];
                        $f_row[] = $b_id;
                        $f_row[] = $l_id;
                        $f_row[] = $anrede;
                        $f_row[] = $name;
                        $f_row[] = $vorname;
                        $f_row[] = $strasse;
                        $f_row[] = $hausnummer;
                        $f_row[] = $plz;
                        $f_row[] = $ort;
                        $f_row[] = $land;
                        $f_row[] = $row["Telefon"];
                        $f_row[] = "";
                        $f_row[] = "";
                        $f_row[] = $row["E_Mail"];
                        $f_row[] = ( $row_a["Father"] == 131 ) ? 3 : 1;
                        $f_row[] = $datum;
                        $f_row[] = $inkasso;
                        $f_row[] = $zahlungsart;
                        $f_row[] = "Ganztags";
                        $f_row[] = $bemerkung;
                        $f_row[] = $i;
                        $f_row[] = $rhenus_a_id;
                        $f_row[] = $a_name;
                        $f_row[] = 0;
                        $f_row[] = $row_a["Menge"];
                        $f_row[] = $entsorgung;
                        $f_row[] = 1;
                        $f_row[] = "";
                        $f_row[] = round( $row_a["gewicht"], 0 );
                        $sql_u = "
                            UPDATE
                                artikel_to_Bestellung
                            SET
                                status='erledigt',
                                exported='" . time() . "'
                            WHERE
                                ID=$ab_id      
                        ";
                        $res_u = mysql_query( $sql_u );
                        if ( $i == $p_anz_total )
                        {
                            $sql_u = "
                                UPDATE
                                    artikel_to_Bestellung
                                SET
                                    status = 'versand',
                                    exported='" . time() . "'
                                WHERE
                                    Bestellung = $b_id
                                AND
                                    artikel = $a_id
                            ";
                            $res_u = mysql_query( $sql_u );
                        }
                        else
                        {
                            $sql_u = "
                                UPDATE
                                    artikel_to_Bestellung
                                SET
                                    exported='" . time() . "'
                                WHERE
                                    Bestellung = $b_id
                                AND
                                    artikel = $a_id
                            ";
                            $res_u = mysql_query( $sql_u );
                        }
                        $i++;
                        $f_cont[$s_short][] = implode( ";", $f_row );
                        if ( $paket )
                        {
                            $f_row[20] = $i;
                            $f_row[21] = "";
                            switch ( true )
                            {
                                case $row_a["gewicht"] >= 0 && $row_a["gewicht"] <
                                        6:
                                    $f_row[22] = "P1";
                                    break;
                                case $row_a["gewicht"] >= 6 && $row_a["gewicht"] <
                                        11:
                                    $f_row[22] = "P2";
                                    break;
                                case $row_a["gewicht"] >= 11 && $row_a["gewicht"] <
                                        17:
                                    $f_row[22] = "P3";
                                    break;
                                case $row_a["gewicht"] >= 17 && $row_a["gewicht"] <
                                        21:
                                    $f_row[22] = "P4";
                                    break;
                                case $row_a["gewicht"] >= 21 && $row_a["gewicht"] <
                                        33:
                                    $f_row[22] = "P5";
                                    break;
                                case $row_a["gewicht"] >= 33 && $row_a["gewicht"] <
                                        35:
                                    $f_row[22] = "P6";
                                    break;
                                case $row_a["gewicht"] >= 35 && $row_a["gewicht"] <
                                        41:
                                    $f_row[22] = "P7";
                                    break;
                                case $row_a["gewicht"] >= 41 && $row_a["gewicht"] <
                                        43:
                                    $f_row[22] = "P8";
                                    break;
                                case $row_a["gewicht"] >= 43 && $row_a["gewicht"] <
                                        45:
                                    $f_row[22] = "P9";
                                    break;
                                case $row_a["gewicht"] >= 45 && $row_a["gewicht"] <
                                        47:
                                    $f_row[22] = "Q1";
                                    break;
                                case $row_a["gewicht"] >= 47 && $row_a["gewicht"] <
                                        49:
                                    $f_row[22] = "Q2";
                                    break;
                                case $row_a["gewicht"] >= 49 && $row_a["gewicht"] <
                                        51:
                                    $f_row[22] = "Q3";
                                    break;
                                case $row_a["gewicht"] >= 51 && $row_a["gewicht"] <
                                        56:
                                    $f_row[22] = "Q4";
                                    break;
                                case $row_a["gewicht"] >= 56 && $row_a["gewicht"] <
                                        61:
                                    $f_row[22] = "Q5";
                                    break;
                                case $row_a["gewicht"] >= 61 && $row_a["gewicht"] <
                                        66:
                                    $f_row[22] = "Q6";
                                    break;
                                case $row_a["gewicht"] >= 66 && $row_a["gewicht"] <
                                        71:
                                    $f_row[22] = "Q7";
                                    break;
                            }
                            $i++;
                            $f_cont[$s_short][] = implode( ";", $f_row );
                        }
                    }
                }
            }
            else
            {
                $sql_u = "
                    UPDATE
                        artikel_to_Bestellung
                    SET
                        status = 'versand',
                        exported='" . time() . "'
                    WHERE
                        Bestellung = $b_id
                    AND
                        artikel = $a_id
                ";
                $res_u = mysql_query( $sql_u );
            }
        }
        foreach ( $f_cont as $shop => $s_cont )
        {
            $f_name = "export_Bestellungen_rhenus_" . $shop . "_" . $date .
                ".csv";
            $cont = implode( "\r\n", $s_cont );
            if ( $cont )
            {
                //$f = fopen( "archiv/$site/$f_name", 'w' );
                if ( $header )
                {
                    $cont = $header . "\r\n" . $cont;
                }
                /*fwrite( $f, $cont );
                fclose( $f );*/
                file_put_contents( "archiv/$site/$f_name", $cont );
            }
        }
        header( 'Location: export.php' );
    }

    function getInkasso( $b_id )
    {
        $sql = "SELECT
                SUM(ab.Menge * ab.Preis_pro_Stueck) AS inkasso
            FROM
                artikel_to_Bestellung ab,
                artikel a
            WHERE
                ab.Bestellung=$b_id
            AND
                ab.artikel=a.ID
            AND
            (
                (ab.status='reserviert')
                OR
                (ab.exported='0000-00-00 00:00:00' AND a.Father=-3)
            )
        ";
        $res = mysql_query( $sql );
        echo mysql_error();
        $row = mysql_fetch_assoc( $res );
        $inkasso = number_format( $row["inkasso"], 2, ',', '' );
        return $inkasso;
    }

    function getEntsorgung( $b_id )
    {
        $sql = "SELECT
                COUNT(*) AS entsorgung
            FROM
                artikel_to_Bestellung AS ab
            WHERE
                ab.artikel=999997
            AND
                ab.Bestellung=$b_id
        ";
        $res = mysql_query( $sql );
        echo mysql_error();
        $row = mysql_fetch_assoc( $res );
        $entsorgung = $row["entsorung"];
        return $entsorgung;
    }
?>