Subversion-Projekte lars-tiefland.content-management

Revision

Revision 1 | Details | Vergleich mit vorheriger | 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
2 lars 8
     * @version   $Rev: 4164 $
1 lars 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
 
2 lars 20
    // SVN: $Id: amazon_bestellungen.php 4164 2012-01-24 14:14:40Z tiefland $
1 lars 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
            }
2 lars 230
            if ( !$data["l"]["strasse"] )
231
            {
232
                $data["l"]["strasse"] = $data["b"]["liefer_strasse"];
233
                $data["l"]["name2"] = $data["b"]["liefer_firma"];
234
                $data["l"]["ort"] = $data["b"]["liefer_ort"];
235
                $data["l"]["plz"] = $data["b"]["liefer_plz"];
236
            }
1 lars 237
            $daten[] = $data;
238
            //exit;
239
        }
240
        return $daten;
241
    }
242
 
243
    function check_item( $item_id )
244
    {
245
        $sql = "SELECT
246
                artikel_id
247
            FROM
248
                artikel_to_lieferanten al,
249
                lieferanten l
250
            WHERE
251
                l.id=al.lieferanten_id
252
            AND
253
                l.name LIKE 'Amazon%'
254
            AND
255
                lieferanten_artnr='$item_id'
256
        ";
257
        $res = mysql_query( $sql );
258
        if ( !$res )
259
        {
260
            meld_error( $sql );
261
            return false;
262
        }
263
        $row = mysql_fetch_assoc( $res );
264
        $id = $row["artikel_id"];
265
        return $id;
266
    }
267
    /**
268
     * check_order()
269
     *
270
     * @param mixed $fremd_id
271
     * @return
272
     */
273
    function check_order( $fremd_id )
274
    {
275
        $sql = "SELECT
276
                ID
277
            FROM
278
                Bestellung
279
            WHERE
280
                fremd_id='" . $fremd_id . "'
281
        ";
282
        $res = mysql_query( $sql );
283
        if ( !$res )
284
        {
285
            meld_error( $sql );
286
            return false;
287
        }
288
        return !mysql_num_rows( $res );
289
    }
290
 
291
    /**
292
     * create_login()
293
     *
294
     * @param mixed $login
295
     * @return
296
     */
297
    function create_login( $login )
298
    {
299
        $keys = array_keys( $login );
300
        $values = array_values( $login );
301
        foreach ( $values as $v_id => $value )
302
        {
303
            $values[$v_id] = mysql_real_escape_string( str_replace( "\"", "", $value ) );
304
        }
305
        $sql = 'INSERT INTO
306
                Logins
307
            (
308
            ' . implode( ', ', $keys ) . '
309
            )
310
            VALUES
311
            (
312
            "' . implode( '", "', $values ) . '"
313
            )
314
        ';
315
 
316
        $res = mysql_query( $sql );
317
        if ( !$res )
318
        {
319
            meld_error( $sql );
320
            return false;
321
        }
322
        return mysql_insert_id();
323
    }
324
 
325
    /**
326
     * create_order()
327
     *
328
     * @param mixed $order
329
     * @return
330
     */
331
    function create_order( $order )
332
    {
333
        $keys = array_keys( $order );
334
        $values = array_values( $order );
335
        foreach ( $values as $v_id => $value )
336
        {
337
            $values[$v_id] = mysql_real_escape_string( $value );
338
        }
339
        $sql = "INSERT INTO
340
                Bestellung
341
            (
342
            \n" . implode( ",\n", $keys ) . "
343
            )
344
            VALUES
345
            (
346
            \n'" . implode( "',\n'", $values ) . "'
347
            )
348
        ";
349
        $res = mysql_query( $sql );
350
        if ( !$res )
351
        {
352
            meld_error( $sql );
353
            return false;
354
        }
355
        return mysql_insert_id();
356
    }
357
 
358
    /**
359
     * create_order_item()
360
     *
361
     * @param mixed $item
362
     * @return
363
     */
364
    function create_order_item( $item )
365
    {
366
        $keys = array_keys( $item );
367
        $values = array_values( $item );
368
        foreach ( $values as $v_id => $value )
369
        {
370
            $values[$v_id] = mysql_real_escape_string( $value );
371
        }
372
        $sql = "INSERT INTO
373
                artikel_to_Bestellung
374
            (
375
            \n" . implode( ",\n", $keys ) . "
376
            )
377
            VALUES
378
            (
379
            \n'" . implode( "',\n'", $values ) . "'
380
            )
381
        ";
382
        $res = mysql_query( $sql );
383
        if ( !$res )
384
        {
385
            meld_error( $sql );
386
            return false;
387
        }
388
        return mysql_insert_id();
389
    }
390
 
391
    function meld_error( $sql )
392
    {
393
        global $site;
394
        $GLOBALS["ui"]->assign( "error", true );
395
        $GLOBALS["ui"]->assign( "meld",
396
            "Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie später noch einmal!" );
397
        $GLOBALS["ui"]->assign( "db_meld", "Die Technik ist breits informiert!" );
398
        if ( $GLOBALS["error_cnt"] === 0 )
399
        {
400
            mail( "admin@weban.de", "Fehler beim Amazon-Import", $sql . "<br>" .
401
                mysql_error(), "", "-F info@" . $site );
402
 
403
        }
404
        $GLOBALS["error_cnt"]++;
405
    }
406
 
407
    function getOrderId( $amazon_id )
408
    {
409
        $sql = "SELECT
410
                id
411
            FROM
412
                Bestellung
413
            WHERE
414
                fremd_id='$amazon_id'
415
        ";
416
        $res = mysql_query( $sql );
417
        $row = mysql_fetch_assoc( $res );
418
        return $row["id"];
419
    }
420
 
421
    function getOrderItems( $bestellung )
422
    {
423
        $sql = "SELECT
424
                artikel,
425
                bezeichnung
426
            FROM
427
                artikel_to_Bestellung
428
            WHERE
429
                bestellung=$bestellung
430
        ";
431
        $res = mysql_query( $sql );
432
        while ( $row = mysql_fetch_assoc( $res ) )
433
        {
434
            $items["ids"][] = $row["artikel"];
435
            $items["names"][] = $row["bezeichnung"];
436
        }
437
        return $items;
438
    }
439
?>