Subversion-Projekte lars-tiefland.content-management

Revision

Revision 1 | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php

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

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

    // SVN: $Id: amazon_bestellungen.php 4164 2012-01-24 14:14:40Z tiefland $

    require_once "../Online-Shop/connect2.php";
    require_once "Weban_Smarty.class.php";
    $GLOBALS["error_cnt"] = 0;
    $GLOBALS["ui"] = new Weban_Smarty();
    set_time_limit( 0 );
    if ( !isset( $_FILES["amazon"] ) )
    {
        $GLOBALS["ui"]->assign( "tpl_file", "amazon_import.tpl" );
    }
    else
    {
        $rows = read_file( $_FILES["amazon"]["tmp_name"] );
        //var_dump($rows);
        $rows = gen_data( $rows );
        foreach ( $rows as $r_id => $row )
        {
            $res = check_order( $row["b"]["fremd_id"] );
            if ( $res )
            {
                $l_id = create_login( $row["l"] );
                if ( $l_id )
                {
                    $row["b"]["login"] = $l_id;
                    $o_id = create_order( $row["b"] );
                    if ( $o_id )
                    {
                        //$row["ab"]["rechnungstatus"] = "schreiben";
                        $row["ab"]["bestellung"] = $o_id;
                        $row["v"]["bestellung"] = $o_id;
                        //$row["v"]["rechnungstatus"] = "";
                        create_order_item( $row["ab"] );
                        $res = create_order_item( $row["v"] );
                        if ( $res && $r_id == count( $rows ) - 1 )
                        {
                            $GLOBALS["ui"]->assign( "meld",
                                "Alle Bestellungen verarbeitet!" );
                            $GLOBALS["ui"]->assign( "error", false );
                        }
                    }
                }
            }
            else
            {
                $o_id = getOrderId( $row["b"]["fremd_id"] );
                $o_items = getOrderItems( $o_id );
                if ( !in_array( $row["ab"]["artikel"], $o_items["ids"] ) || $row["ab"]["artikel"] ==
                    999990 )
                {
                    if ( !in_array( $row["ab"]["bezeichnung"], $o_items["names"] ) )
                    {
                        $row["ab"]["bestellung"] = $o_id;
                        $res = create_order_item( $row["ab"] );
                    }
                }
            }
        }
        $GLOBALS["ui"]->assign( "webs", $webs );
        $GLOBALS["ui"]->assign( "tpl_file", "meld_inc.tpl" );
    }
    $GLOBALS["ui"]->display( "page.tpl" );

    /**
     * read_file()
     * 
     * @param mixed $file
     * @return
     */
    function read_file( $file )
    {
        $row = 1; // Anzahl der Arrays
        $handle = fopen( $file, "r" ); // Datei zum Lesen öffnen
        while ( ( $data = fgetcsv( $handle, 10000, "\t", '"' ) ) !== false )
        { // Daten werden aus der Datei
            // in ein Array $data gelesen
            $num = count( $data ); // Felder im Array $data
            // werden gezählt
            //print "<p> $num fields in line $row: <br>\n";
            if ( $row == 1 )
            {
                $kopfdaten = $data;
            }
            else
            {
                foreach ( $kopfdaten as $c => $name )
                {
                    $rows[$row - 3][$name] = $data[$c];
                }
            }
            $row++; // Anzahl der Arrays wird
            // inkrementiert
            /*for ( $c = 0; $c < $num; $c++ )
            { // FOR-Schleife, um Felder
            print $data[$c] . "<br>\n"; // des Arrays auszugeben
            }*/
        }
        fclose( $handle );
        return $rows;
    }

    /**
     * gen_data()
     * 
     * @param mixed $rows
     * @return
     */
    function gen_data( $rows )
    {
        foreach ( $rows as $r_id => $row )
        {
            $data = array();
            $data["b"]["bestellart_id"] = 3;
            $data["b"]["erstellt_von"] = "Amazon-Import";
            $data["l"]["erstellt_von"] = "Amazon-Import";
            $data["ab"]["rechnungstatus"] = "schreiben";
            foreach ( $row as $feld => $wert )
            {
                //var_dump($feld);
                //var_dump($wert);
                switch ( $feld )
                {
                    case "order-id":
                        $data["b"]["fremd_id"] = $wert;
                        break;
                    case "purchase-date":
                        $wert = date( "Y-m-d H:i:s", strtotime( $wert ) );
                        $data["b"]["erstellt_am"] = $wert;
                        $data["l"]["erstellt_am"] = $wert;
                        break;
                    case "buyer-name":
                        $data["l"]["name1"] = $wert;
                        break;
                    case "buyer-email":
                        $data["l"]["e_mail"] = $wert;
                        break;
                    case "product-name":
                        $data["ab"]["bezeichnung"] = $wert;
                        break;
                    case "quantity-purchased":
                        $data["ab"]["menge"] = $wert;
                        break;
                    case "item-price":
                        $data["ab"]["preis_pro_stueck"] = $wert / $data["ab"]["menge"];
                        break;
                    case "recipient-name":
                        $data["b"]["liefer_name"] = $wert;
                        break;
                    case "ship-address-1":
                        $data["b"]["liefer_strasse"] = $wert;
                        break;
                    case "ship-address-2":
                        if ( $wert )
                        {
                            $data["b"]["liefer_firma"] = $data["b"]["liefer_strasse"];
                            $data["b"]["liefer_strasse"] = $wert;
                        }
                        break;
                    case "ship-city":
                        $data["b"]["liefer_ort"] = $wert;
                        break;
                    case "ship-postal-code":
                        $data["b"]["liefer_plz"] = $wert;
                        break;
                    case "ship-phone-number":
                        $data["l"]["telefon"] = $wert;
                        break;
                    case "bill-address-1":
                        $data["l"]["strasse"] = $wert;
                        break;
                    case "bill-address-2":
                        if ( $wert )
                        {
                            $data["l"]["name2"] = $data["l"]["strasse"];
                            $data["l"]["strasse"] = $wert;
                        }
                        break;
                    case "bill-city":
                        $data["l"]["ort"] = $wert;
                        break;
                    case "bill-postal-code":
                        $data["l"]["plz"] = $wert;
                        break;
                    case "shipping-price":
                        $data["v"]["preis_pro_stueck"] = $wert;
                        $data["v"]["artikel"] = 1010657;
                        $data["v"]["menge"] = 1;
                        break;
                    case "sku":
                        $item_id = filter_var( $wert, FILTER_SANITIZE_STRING );
                        if ( $item_id )
                        {
                            $res = check_item( $item_id );
                            if ( !$res )
                            {
                                $item_id = 999990;
                            }
                            else
                            {
                                $item_id = $res;
                            }
                        }
                        else
                        {
                            $item_id = 999990;
                        }
                        $data["ab"]["artikel"] = $item_id;
                        break;
                }
            }
            if ( !$data["l"]["strasse"] )
            {
                $data["l"]["strasse"] = $data["b"]["liefer_strasse"];
                $data["l"]["name2"] = $data["b"]["liefer_firma"];
                $data["l"]["ort"] = $data["b"]["liefer_ort"];
                $data["l"]["plz"] = $data["b"]["liefer_plz"];
            }
            $daten[] = $data;
            //exit;
        }
        return $daten;
    }

    function check_item( $item_id )
    {
        $sql = "SELECT
                artikel_id
            FROM
                artikel_to_lieferanten al,
                lieferanten l
            WHERE
                l.id=al.lieferanten_id
            AND
                l.name LIKE 'Amazon%'
            AND
                lieferanten_artnr='$item_id'
        ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            meld_error( $sql );
            return false;
        }
        $row = mysql_fetch_assoc( $res );
        $id = $row["artikel_id"];
        return $id;
    }
    /**
     * check_order()
     * 
     * @param mixed $fremd_id
     * @return
     */
    function check_order( $fremd_id )
    {
        $sql = "SELECT
                ID
            FROM
                Bestellung
            WHERE
                fremd_id='" . $fremd_id . "'
        ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            meld_error( $sql );
            return false;
        }
        return !mysql_num_rows( $res );
    }

    /**
     * create_login()
     * 
     * @param mixed $login
     * @return
     */
    function create_login( $login )
    {
        $keys = array_keys( $login );
        $values = array_values( $login );
        foreach ( $values as $v_id => $value )
        {
            $values[$v_id] = mysql_real_escape_string( str_replace( "\"", "", $value ) );
        }
        $sql = 'INSERT INTO
                Logins
            (
            ' . implode( ', ', $keys ) . '
            )
            VALUES
            (
            "' . implode( '", "', $values ) . '"
            )
        ';

        $res = mysql_query( $sql );
        if ( !$res )
        {
            meld_error( $sql );
            return false;
        }
        return mysql_insert_id();
    }

    /**
     * create_order()
     * 
     * @param mixed $order
     * @return
     */
    function create_order( $order )
    {
        $keys = array_keys( $order );
        $values = array_values( $order );
        foreach ( $values as $v_id => $value )
        {
            $values[$v_id] = mysql_real_escape_string( $value );
        }
        $sql = "INSERT INTO
                Bestellung
            (
            \n" . implode( ",\n", $keys ) . "
            )
            VALUES
            (
            \n'" . implode( "',\n'", $values ) . "'
            )
        ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            meld_error( $sql );
            return false;
        }
        return mysql_insert_id();
    }

    /**
     * create_order_item()
     * 
     * @param mixed $item
     * @return
     */
    function create_order_item( $item )
    {
        $keys = array_keys( $item );
        $values = array_values( $item );
        foreach ( $values as $v_id => $value )
        {
            $values[$v_id] = mysql_real_escape_string( $value );
        }
        $sql = "INSERT INTO
                artikel_to_Bestellung
            (
            \n" . implode( ",\n", $keys ) . "
            )
            VALUES
            (
            \n'" . implode( "',\n'", $values ) . "'
            )
        ";
        $res = mysql_query( $sql );
        if ( !$res )
        {
            meld_error( $sql );
            return false;
        }
        return mysql_insert_id();
    }

    function meld_error( $sql )
    {
        global $site;
        $GLOBALS["ui"]->assign( "error", true );
        $GLOBALS["ui"]->assign( "meld",
            "Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie später noch einmal!" );
        $GLOBALS["ui"]->assign( "db_meld", "Die Technik ist breits informiert!" );
        if ( $GLOBALS["error_cnt"] === 0 )
        {
            mail( "admin@weban.de", "Fehler beim Amazon-Import", $sql . "<br>" .
                mysql_error(), "", "-F info@" . $site );

        }
        $GLOBALS["error_cnt"]++;
    }

    function getOrderId( $amazon_id )
    {
        $sql = "SELECT
                id
            FROM
                Bestellung
            WHERE
                fremd_id='$amazon_id'
        ";
        $res = mysql_query( $sql );
        $row = mysql_fetch_assoc( $res );
        return $row["id"];
    }

    function getOrderItems( $bestellung )
    {
        $sql = "SELECT
                artikel,
                bezeichnung
            FROM
                artikel_to_Bestellung
            WHERE
                bestellung=$bestellung
        ";
        $res = mysql_query( $sql );
        while ( $row = mysql_fetch_assoc( $res ) )
        {
            $items["ids"][] = $row["artikel"];
            $items["names"][] = $row["bezeichnung"];
        }
        return $items;
    }
?>