Subversion-Projekte lars-tiefland.content-management

Revision

Blame | 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: 913 $
     * @filesource
     * 
     */

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

    // SVN: $Id: meinpaket_bestellungen.php 913 2012-01-25 12:47:30Z tiefland $

    require_once "../Online-Shop/connect2.php";
    require_once "File/CSV.php";
    require_once "Weban_Smarty.class.php";
    $GLOBALS["error_cnt"] = 0;
    $GLOBALS["ui"] = new Weban_Smarty();
    set_time_limit( 0 );
    if ( !isset( $_FILES["meinpaket"] ) )
    {
        $GLOBALS["ui"]->assign( "tpl_file", "meinpaket_import.tpl" );
    }
    else
    {
        $rows = read_file( $_FILES["meinpaket"]["tmp_name"] );
        $rows = gen_data( $rows );
        //exit;
        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 = 0; // Anzahl der Arrays
        $csv = new File_CSV();
        $fmt = $csv->discoverFormat( $file );
        while ( $data = $csv->read( $file, $fmt ) )
        {
            if ( $row == 0 )
            {
                $kopfdaten = $data;
            }
            else
            {
                foreach ( $kopfdaten as $c => $name )
                {
                    $rows[$row - 1][$name] = $data[$c];
                }
            }
            $row++; // Anzahl der Arrays wird
            // inkrementiert
        }
        return $rows;
    }

    /**
     * gen_data()
     * 
     * @param mixed $rows
     * @return
     */
    function gen_data( $rows )
    {
        foreach ( $rows as $r_id => $row )
        {
            //var_dump( $row );
            $data = array();
            $data["b"]["bestellart_id"] = 4;
            $data["b"]["erstellt_von"] = "meinpaket-Import";
            $data["l"]["erstellt_von"] = "meinpaket-Import";
            $data["ab"]["rechnungstatus"] = "schreiben";
            foreach ( $row as $feld => $wert )
            {
                //var_dump($feld);
                //var_dump($wert);
                switch ( $feld )
                {
                    case "orderId":
                        $data["b"]["fremd_id"] = $wert;
                        break;
                    case "orderDate":
                        $wert = date( "Y-m-d H:i:s", strtotime( $wert ) );
                        $data["b"]["erstellt_am"] = $wert;
                        $data["l"]["erstellt_am"] = $wert;
                        break;
                    case "billingAddressSalutation":
                        $data["l"]["anrede"] = $wert;
                        break;
                    case "billingAddressFirstName":
                        $data["l"]["vorname"] = $wert;
                        break;
                    case "billingAddressLastName":
                        $data["l"]["name1"] = $wert;
                        break;
                    case "billingAddressCompany":
                        $data["l"]["name2"] = $wert;
                        break;
                    case "billingAddressStreet":
                        $data["l"]["strasse"] = $wert;
                        break;
                    case "billingAddressHousenumber":
                        $data["l"]["hausnummer"] = $wert;
                        break;
                    case "billingAddressZipCode":
                        $data["l"]["plz"] = $wert;
                        break;
                    case "billingAddressCity":
                        $data["l"]["ort"] = $wert;
                        break;
                    case "aliasAddress":
                        $data["l"]["e_mail"] = $wert;
                        break;
                    case "productName":
                        $data["ab"]["bezeichnung"] = $wert;
                        break;
                    case "quantity":
                        $data["ab"]["menge"] = $wert;
                        break;
                    case "totalPrice":
                        $data["ab"]["preis_pro_stueck"] = $wert / $data["ab"]["menge"];
                        break;
                    case "deliveryAddressFirstName":
                        $data["b"]["liefer_vorname"] = $wert;
                        break;
                    case "deliveryAddressLastName":
                        $data["b"]["liefer_name"] = $wert;
                        break;
                    case "deliveryAddressStreet":
                        if ( $wert )
                        {
                            $data["b"]["liefer_strasse"] = $wert;
                        }
                        break;
                    case "deliveryAddressHousenumber":
                        if ( $wert )
                        {
                            $data["b"]["liefer_str_nr"] = $wert;
                        }
                        break;
                    case "deliveryAddressSalutation":
                        $data["b"]["liefer_anrede"] = $wert;
                        break;
                    case "deliveryAddressPackstationId":
                        if ( $wert )
                        {
                            $data["b"]["liefer_strasse"] = "Packstation";
                            $data["b"]["liefer_str_nr"] = $wert;
                        }
                        break;
                    case "deliveryAddressAdditional":
                        if ( $wert )
                        {
                            $data["b"]["liefer_name"] .= " " . $wert;
                        }
                        break;
                    case "deliveryAddressCustomerId":
                        if ( $wert )
                        {
                            $data["b"]["liefer_firma"] = $wert;
                        }
                        break;
                    case "deliveryAddressCompany":
                        if ( $wert )
                        {
                            $data["b"]["liefer_firma"] = $wert;
                        }
                        break;
                    case "deliveryAddressCity":
                        $data["b"]["liefer_ort"] = $wert;
                        break;
                    case "deliveryAddressZipCode":
                        $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 "totalDeliveryCosts":
                        $data["v"]["preis_pro_stueck"] = $wert;
                        $data["v"]["artikel"] = 1012574;
                        $data["v"]["menge"] = 1;
                        break;
                    case "productId":
                        $item_id = filter_var( $wert, FILTER_SANITIZE_NUMBER_INT );
                        //var_dump( $item_id );
                        if ( $item_id )
                        {
                            $res = check_item( $item_id, false );
                            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"];
            }*/
            $login = $data["l"];
            unset( $login["erstellt_von"], $login["erstellt_am"] );
            $liefer = $data["b"];
            unset( $liefer["erstellt_von"], $liefer["erstellt_am"] );
            unset( $login["e_mail"], $liefer["fremd_id"], $liefer["bestellart_id"] );
            $login = implode( "", $login );
            $liefer = implode( "", $liefer );
            if ( $login == $liefer )
            {
                unset( $data["b"]["liefer_plz"], $data["b"]["liefer_ort"], $data["b"]["liefer_strasse"],
                    $data["b"]["liefer_str_nr"], $data["b"]["liefer_anrede"], $data["b"]["liefer_name"],
                    $data["b"]["liefer_vorname"], $data["b"]["liefer_firma"] );
            }
            $daten[] = $data;
            //exit;
        }
        return $daten;
    }

    function check_item( $item_id, $fremd_id = true )
    {
        if ( $fremd_id )
        {
            $sql = "SELECT
                    artikel_id
                FROM
                    artikel_to_lieferanten al,
                    lieferanten l
                WHERE
                    l.id=al.lieferanten_id
                AND
                        l.name LIKE 'meinpaket%'
                AND
                    lieferanten_artnr='$item_id'
            ";
        }
        else
        {
            $sql = "SELECT
                    id AS artikel_id
                FROM
                    artikel
                WHERE
                    id = $item_id
                AND
                    language = 'DE'
            ";
        }
        $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 meinpaket-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;
    }
?>