Subversion-Projekte lars-tiefland.content-management

Revision

Zur aktuellen Revision | Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
1 lars 1
<?php
2
 
3
    /**
4
     * @package   Content-management
5
     * @author    Webagentur Niewerth <tiefland@weban.de>
6
     * @copyright 2011 Webagentur Niewerth
7
     * @license   propietary http://www.weban.de
8
     * @version   $Rev: 4009 $
9
     * @filesource
10
     *
11
     */
12
 
13
    /**
14
     *
15
     * @package   Content-management
16
     * @author    Webagentur Niewerth <tiefland@weban.de>
17
     * @copyright 2011 Webagentur Niewerth
18
     */
19
 
20
    // SVN: $Id: amazon_bestellungen.php 4009 2011-10-21 08:24:50Z tiefland $
21
 
22
    require_once "../Online-Shop/connect2.php";
23
    require_once "Weban_Smarty.class.php";
24
    $GLOBALS["error_cnt"] = 0;
25
    $GLOBALS["ui"] = new Weban_Smarty();
26
    set_time_limit( 0 );
27
    if ( !isset( $_FILES["amazon"] ) )
28
    {
29
        $GLOBALS["ui"]->assign( "tpl_file", "amazon_import.tpl" );
30
    }
31
    else
32
    {
33
        $rows = read_file( $_FILES["amazon"]["tmp_name"] );
34
        //var_dump($rows);
35
        $rows = gen_data( $rows );
36
        foreach ( $rows as $r_id => $row )
37
        {
38
            $res = check_order( $row["b"]["fremd_id"] );
39
            if ( $res )
40
            {
41
                $l_id = create_login( $row["l"] );
42
                if ( $l_id )
43
                {
44
                    $row["b"]["login"] = $l_id;
45
                    $o_id = create_order( $row["b"] );
46
                    if ( $o_id )
47
                    {
48
                        //$row["ab"]["rechnungstatus"] = "schreiben";
49
                        $row["ab"]["bestellung"] = $o_id;
50
                        $row["v"]["bestellung"] = $o_id;
51
                        //$row["v"]["rechnungstatus"] = "";
52
                        create_order_item( $row["ab"] );
53
                        $res = create_order_item( $row["v"] );
54
                        if ( $res && $r_id == count( $rows ) - 1 )
55
                        {
56
                            $GLOBALS["ui"]->assign( "meld",
57
                                "Alle Bestellungen verarbeitet!" );
58
                            $GLOBALS["ui"]->assign( "error", false );
59
                        }
60
                    }
61
                }
62
            }
63
            else
64
            {
65
                $o_id = getOrderId( $row["b"]["fremd_id"] );
66
                $o_items = getOrderItems( $o_id );
67
                if ( !in_array( $row["ab"]["artikel"], $o_items["ids"] ) || $row["ab"]["artikel"] ==
68
                    999990 )
69
                {
70
                    if ( !in_array( $row["ab"]["bezeichnung"], $o_items["names"] ) )
71
                    {
72
                        $row["ab"]["bestellung"] = $o_id;
73
                        $res = create_order_item( $row["ab"] );
74
                    }
75
                }
76
            }
77
        }
78
        $GLOBALS["ui"]->assign( "webs", $webs );
79
        $GLOBALS["ui"]->assign( "tpl_file", "meld_inc.tpl" );
80
    }
81
    $GLOBALS["ui"]->display( "page.tpl" );
82
 
83
    /**
84
     * read_file()
85
     *
86
     * @param mixed $file
87
     * @return
88
     */
89
    function read_file( $file )
90
    {
91
        $row = 1; // Anzahl der Arrays
92
        $handle = fopen( $file, "r" ); // Datei zum Lesen öffnen
93
        while ( ( $data = fgetcsv( $handle, 10000, "\t", '"' ) ) !== false )
94
        { // Daten werden aus der Datei
95
            // in ein Array $data gelesen
96
            $num = count( $data ); // Felder im Array $data
97
            // werden gezählt
98
            //print "<p> $num fields in line $row: <br>\n";
99
            if ( $row == 1 )
100
            {
101
                $kopfdaten = $data;
102
            }
103
            else
104
            {
105
                foreach ( $kopfdaten as $c => $name )
106
                {
107
                    $rows[$row - 3][$name] = $data[$c];
108
                }
109
            }
110
            $row++; // Anzahl der Arrays wird
111
            // inkrementiert
112
            /*for ( $c = 0; $c < $num; $c++ )
113
            { // FOR-Schleife, um Felder
114
            print $data[$c] . "<br>\n"; // des Arrays auszugeben
115
            }*/
116
        }
117
        fclose( $handle );
118
        return $rows;
119
    }
120
 
121
    /**
122
     * gen_data()
123
     *
124
     * @param mixed $rows
125
     * @return
126
     */
127
    function gen_data( $rows )
128
    {
129
        foreach ( $rows as $r_id => $row )
130
        {
131
            $data = array();
132
            $data["b"]["bestellart_id"] = 3;
133
            $data["b"]["erstellt_von"] = "Amazon-Import";
134
            $data["l"]["erstellt_von"] = "Amazon-Import";
135
            $data["ab"]["rechnungstatus"] = "schreiben";
136
            foreach ( $row as $feld => $wert )
137
            {
138
                //var_dump($feld);
139
                //var_dump($wert);
140
                switch ( $feld )
141
                {
142
                    case "order-id":
143
                        $data["b"]["fremd_id"] = $wert;
144
                        break;
145
                    case "purchase-date":
146
                        $wert = date( "Y-m-d H:i:s", strtotime( $wert ) );
147
                        $data["b"]["erstellt_am"] = $wert;
148
                        $data["l"]["erstellt_am"] = $wert;
149
                        break;
150
                    case "buyer-name":
151
                        $data["l"]["name1"] = $wert;
152
                        break;
153
                    case "buyer-email":
154
                        $data["l"]["e_mail"] = $wert;
155
                        break;
156
                    case "product-name":
157
                        $data["ab"]["bezeichnung"] = $wert;
158
                        break;
159
                    case "quantity-purchased":
160
                        $data["ab"]["menge"] = $wert;
161
                        break;
162
                    case "item-price":
163
                        $data["ab"]["preis_pro_stueck"] = $wert / $data["ab"]["menge"];
164
                        break;
165
                    case "recipient-name":
166
                        $data["b"]["liefer_name"] = $wert;
167
                        break;
168
                    case "ship-address-1":
169
                        $data["b"]["liefer_strasse"] = $wert;
170
                        break;
171
                    case "ship-address-2":
172
                        if ( $wert )
173
                        {
174
                            $data["b"]["liefer_firma"] = $data["b"]["liefer_strasse"];
175
                            $data["b"]["liefer_strasse"] = $wert;
176
                        }
177
                        break;
178
                    case "ship-city":
179
                        $data["b"]["liefer_ort"] = $wert;
180
                        break;
181
                    case "ship-postal-code":
182
                        $data["b"]["liefer_plz"] = $wert;
183
                        break;
184
                    case "ship-phone-number":
185
                        $data["l"]["telefon"] = $wert;
186
                        break;
187
                    case "bill-address-1":
188
                        $data["l"]["strasse"] = $wert;
189
                        break;
190
                    case "bill-address-2":
191
                        if ( $wert )
192
                        {
193
                            $data["l"]["name2"] = $data["l"]["strasse"];
194
                            $data["l"]["strasse"] = $wert;
195
                        }
196
                        break;
197
                    case "bill-city":
198
                        $data["l"]["ort"] = $wert;
199
                        break;
200
                    case "bill-postal-code":
201
                        $data["l"]["plz"] = $wert;
202
                        break;
203
                    case "shipping-price":
204
                        $data["v"]["preis_pro_stueck"] = $wert;
205
                        $data["v"]["artikel"] = 1010657;
206
                        $data["v"]["menge"] = 1;
207
                        break;
208
                    case "sku":
209
                        $item_id = filter_var( $wert, FILTER_SANITIZE_STRING );
210
                        if ( $item_id )
211
                        {
212
                            $res = check_item( $item_id );
213
                            if ( !$res )
214
                            {
215
                                $item_id = 999990;
216
                            }
217
                            else
218
                            {
219
                                $item_id = $res;
220
                            }
221
                        }
222
                        else
223
                        {
224
                            $item_id = 999990;
225
                        }
226
                        $data["ab"]["artikel"] = $item_id;
227
                        break;
228
                }
229
            }
230
            $daten[] = $data;
231
            //exit;
232
        }
233
        return $daten;
234
    }
235
 
236
    function check_item( $item_id )
237
    {
238
        $sql = "SELECT
239
                artikel_id
240
            FROM
241
                artikel_to_lieferanten al,
242
                lieferanten l
243
            WHERE
244
                l.id=al.lieferanten_id
245
            AND
246
                l.name LIKE 'Amazon%'
247
            AND
248
                lieferanten_artnr='$item_id'
249
        ";
250
        $res = mysql_query( $sql );
251
        if ( !$res )
252
        {
253
            meld_error( $sql );
254
            return false;
255
        }
256
        $row = mysql_fetch_assoc( $res );
257
        $id = $row["artikel_id"];
258
        return $id;
259
    }
260
    /**
261
     * check_order()
262
     *
263
     * @param mixed $fremd_id
264
     * @return
265
     */
266
    function check_order( $fremd_id )
267
    {
268
        $sql = "SELECT
269
                ID
270
            FROM
271
                Bestellung
272
            WHERE
273
                fremd_id='" . $fremd_id . "'
274
        ";
275
        $res = mysql_query( $sql );
276
        if ( !$res )
277
        {
278
            meld_error( $sql );
279
            return false;
280
        }
281
        return !mysql_num_rows( $res );
282
    }
283
 
284
    /**
285
     * create_login()
286
     *
287
     * @param mixed $login
288
     * @return
289
     */
290
    function create_login( $login )
291
    {
292
        $keys = array_keys( $login );
293
        $values = array_values( $login );
294
        foreach ( $values as $v_id => $value )
295
        {
296
            $values[$v_id] = mysql_real_escape_string( str_replace( "\"", "", $value ) );
297
        }
298
        $sql = 'INSERT INTO
299
                Logins
300
            (
301
            ' . implode( ', ', $keys ) . '
302
            )
303
            VALUES
304
            (
305
            "' . implode( '", "', $values ) . '"
306
            )
307
        ';
308
 
309
        $res = mysql_query( $sql );
310
        if ( !$res )
311
        {
312
            meld_error( $sql );
313
            return false;
314
        }
315
        return mysql_insert_id();
316
    }
317
 
318
    /**
319
     * create_order()
320
     *
321
     * @param mixed $order
322
     * @return
323
     */
324
    function create_order( $order )
325
    {
326
        $keys = array_keys( $order );
327
        $values = array_values( $order );
328
        foreach ( $values as $v_id => $value )
329
        {
330
            $values[$v_id] = mysql_real_escape_string( $value );
331
        }
332
        $sql = "INSERT INTO
333
                Bestellung
334
            (
335
            \n" . implode( ",\n", $keys ) . "
336
            )
337
            VALUES
338
            (
339
            \n'" . implode( "',\n'", $values ) . "'
340
            )
341
        ";
342
        $res = mysql_query( $sql );
343
        if ( !$res )
344
        {
345
            meld_error( $sql );
346
            return false;
347
        }
348
        return mysql_insert_id();
349
    }
350
 
351
    /**
352
     * create_order_item()
353
     *
354
     * @param mixed $item
355
     * @return
356
     */
357
    function create_order_item( $item )
358
    {
359
        $keys = array_keys( $item );
360
        $values = array_values( $item );
361
        foreach ( $values as $v_id => $value )
362
        {
363
            $values[$v_id] = mysql_real_escape_string( $value );
364
        }
365
        $sql = "INSERT INTO
366
                artikel_to_Bestellung
367
            (
368
            \n" . implode( ",\n", $keys ) . "
369
            )
370
            VALUES
371
            (
372
            \n'" . implode( "',\n'", $values ) . "'
373
            )
374
        ";
375
        $res = mysql_query( $sql );
376
        if ( !$res )
377
        {
378
            meld_error( $sql );
379
            return false;
380
        }
381
        return mysql_insert_id();
382
    }
383
 
384
    function meld_error( $sql )
385
    {
386
        global $site;
387
        $GLOBALS["ui"]->assign( "error", true );
388
        $GLOBALS["ui"]->assign( "meld",
389
            "Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie später noch einmal!" );
390
        $GLOBALS["ui"]->assign( "db_meld", "Die Technik ist breits informiert!" );
391
        if ( $GLOBALS["error_cnt"] === 0 )
392
        {
393
            mail( "admin@weban.de", "Fehler beim Amazon-Import", $sql . "<br>" .
394
                mysql_error(), "", "-F info@" . $site );
395
 
396
        }
397
        $GLOBALS["error_cnt"]++;
398
    }
399
 
400
    function getOrderId( $amazon_id )
401
    {
402
        $sql = "SELECT
403
                id
404
            FROM
405
                Bestellung
406
            WHERE
407
                fremd_id='$amazon_id'
408
        ";
409
        $res = mysql_query( $sql );
410
        $row = mysql_fetch_assoc( $res );
411
        return $row["id"];
412
    }
413
 
414
    function getOrderItems( $bestellung )
415
    {
416
        $sql = "SELECT
417
                artikel,
418
                bezeichnung
419
            FROM
420
                artikel_to_Bestellung
421
            WHERE
422
                bestellung=$bestellung
423
        ";
424
        $res = mysql_query( $sql );
425
        while ( $row = mysql_fetch_assoc( $res ) )
426
        {
427
            $items["ids"][] = $row["artikel"];
428
            $items["names"][] = $row["bezeichnung"];
429
        }
430
        return $items;
431
    }
432
?>