Subversion-Projekte lars-tiefland.content-management

Revision

Details | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
2 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: 913 $
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: meinpaket_bestellungen.php 913 2012-01-25 12:47:30Z tiefland $
21
 
22
    require_once "../Online-Shop/connect2.php";
23
    require_once "File/CSV.php";
24
    require_once "Weban_Smarty.class.php";
25
    $GLOBALS["error_cnt"] = 0;
26
    $GLOBALS["ui"] = new Weban_Smarty();
27
    set_time_limit( 0 );
28
    if ( !isset( $_FILES["meinpaket"] ) )
29
    {
30
        $GLOBALS["ui"]->assign( "tpl_file", "meinpaket_import.tpl" );
31
    }
32
    else
33
    {
34
        $rows = read_file( $_FILES["meinpaket"]["tmp_name"] );
35
        $rows = gen_data( $rows );
36
        //exit;
37
        foreach ( $rows as $r_id => $row )
38
        {
39
            $res = check_order( $row["b"]["fremd_id"] );
40
            if ( $res )
41
            {
42
                $l_id = create_login( $row["l"] );
43
                if ( $l_id )
44
                {
45
                    $row["b"]["login"] = $l_id;
46
                    $o_id = create_order( $row["b"] );
47
                    if ( $o_id )
48
                    {
49
                        //$row["ab"]["rechnungstatus"] = "schreiben";
50
                        $row["ab"]["bestellung"] = $o_id;
51
                        $row["v"]["bestellung"] = $o_id;
52
                        //$row["v"]["rechnungstatus"] = "";
53
                        create_order_item( $row["ab"] );
54
                        $res = create_order_item( $row["v"] );
55
                        if ( $res && $r_id == count( $rows ) - 1 )
56
                        {
57
                            $GLOBALS["ui"]->assign( "meld",
58
                                "Alle Bestellungen verarbeitet!" );
59
                            $GLOBALS["ui"]->assign( "error", false );
60
                        }
61
                    }
62
                }
63
            }
64
            else
65
            {
66
                $o_id = getOrderId( $row["b"]["fremd_id"] );
67
                $o_items = getOrderItems( $o_id );
68
                if ( !in_array( $row["ab"]["artikel"], $o_items["ids"] ) || $row["ab"]["artikel"] ==
69
                    999990 )
70
                {
71
                    if ( !in_array( $row["ab"]["bezeichnung"], $o_items["names"] ) )
72
                    {
73
                        $row["ab"]["bestellung"] = $o_id;
74
                        $res = create_order_item( $row["ab"] );
75
                    }
76
                }
77
            }
78
        }
79
        $GLOBALS["ui"]->assign( "webs", $webs );
80
        $GLOBALS["ui"]->assign( "tpl_file", "meld_inc.tpl" );
81
    }
82
    $GLOBALS["ui"]->display( "page.tpl" );
83
 
84
    /**
85
     * read_file()
86
     *
87
     * @param mixed $file
88
     * @return
89
     */
90
    function read_file( $file )
91
    {
92
        $row = 0; // Anzahl der Arrays
93
        $csv = new File_CSV();
94
        $fmt = $csv->discoverFormat( $file );
95
        while ( $data = $csv->read( $file, $fmt ) )
96
        {
97
            if ( $row == 0 )
98
            {
99
                $kopfdaten = $data;
100
            }
101
            else
102
            {
103
                foreach ( $kopfdaten as $c => $name )
104
                {
105
                    $rows[$row - 1][$name] = $data[$c];
106
                }
107
            }
108
            $row++; // Anzahl der Arrays wird
109
            // inkrementiert
110
        }
111
        return $rows;
112
    }
113
 
114
    /**
115
     * gen_data()
116
     *
117
     * @param mixed $rows
118
     * @return
119
     */
120
    function gen_data( $rows )
121
    {
122
        foreach ( $rows as $r_id => $row )
123
        {
124
            //var_dump( $row );
125
            $data = array();
126
            $data["b"]["bestellart_id"] = 4;
127
            $data["b"]["erstellt_von"] = "meinpaket-Import";
128
            $data["l"]["erstellt_von"] = "meinpaket-Import";
129
            $data["ab"]["rechnungstatus"] = "schreiben";
130
            foreach ( $row as $feld => $wert )
131
            {
132
                //var_dump($feld);
133
                //var_dump($wert);
134
                switch ( $feld )
135
                {
136
                    case "orderId":
137
                        $data["b"]["fremd_id"] = $wert;
138
                        break;
139
                    case "orderDate":
140
                        $wert = date( "Y-m-d H:i:s", strtotime( $wert ) );
141
                        $data["b"]["erstellt_am"] = $wert;
142
                        $data["l"]["erstellt_am"] = $wert;
143
                        break;
144
                    case "billingAddressSalutation":
145
                        $data["l"]["anrede"] = $wert;
146
                        break;
147
                    case "billingAddressFirstName":
148
                        $data["l"]["vorname"] = $wert;
149
                        break;
150
                    case "billingAddressLastName":
151
                        $data["l"]["name1"] = $wert;
152
                        break;
153
                    case "billingAddressCompany":
154
                        $data["l"]["name2"] = $wert;
155
                        break;
156
                    case "billingAddressStreet":
157
                        $data["l"]["strasse"] = $wert;
158
                        break;
159
                    case "billingAddressHousenumber":
160
                        $data["l"]["hausnummer"] = $wert;
161
                        break;
162
                    case "billingAddressZipCode":
163
                        $data["l"]["plz"] = $wert;
164
                        break;
165
                    case "billingAddressCity":
166
                        $data["l"]["ort"] = $wert;
167
                        break;
168
                    case "aliasAddress":
169
                        $data["l"]["e_mail"] = $wert;
170
                        break;
171
                    case "productName":
172
                        $data["ab"]["bezeichnung"] = $wert;
173
                        break;
174
                    case "quantity":
175
                        $data["ab"]["menge"] = $wert;
176
                        break;
177
                    case "totalPrice":
178
                        $data["ab"]["preis_pro_stueck"] = $wert / $data["ab"]["menge"];
179
                        break;
180
                    case "deliveryAddressFirstName":
181
                        $data["b"]["liefer_vorname"] = $wert;
182
                        break;
183
                    case "deliveryAddressLastName":
184
                        $data["b"]["liefer_name"] = $wert;
185
                        break;
186
                    case "deliveryAddressStreet":
187
                        if ( $wert )
188
                        {
189
                            $data["b"]["liefer_strasse"] = $wert;
190
                        }
191
                        break;
192
                    case "deliveryAddressHousenumber":
193
                        if ( $wert )
194
                        {
195
                            $data["b"]["liefer_str_nr"] = $wert;
196
                        }
197
                        break;
198
                    case "deliveryAddressSalutation":
199
                        $data["b"]["liefer_anrede"] = $wert;
200
                        break;
201
                    case "deliveryAddressPackstationId":
202
                        if ( $wert )
203
                        {
204
                            $data["b"]["liefer_strasse"] = "Packstation";
205
                            $data["b"]["liefer_str_nr"] = $wert;
206
                        }
207
                        break;
208
                    case "deliveryAddressAdditional":
209
                        if ( $wert )
210
                        {
211
                            $data["b"]["liefer_name"] .= " " . $wert;
212
                        }
213
                        break;
214
                    case "deliveryAddressCustomerId":
215
                        if ( $wert )
216
                        {
217
                            $data["b"]["liefer_firma"] = $wert;
218
                        }
219
                        break;
220
                    case "deliveryAddressCompany":
221
                        if ( $wert )
222
                        {
223
                            $data["b"]["liefer_firma"] = $wert;
224
                        }
225
                        break;
226
                    case "deliveryAddressCity":
227
                        $data["b"]["liefer_ort"] = $wert;
228
                        break;
229
                    case "deliveryAddressZipCode":
230
                        $data["b"]["liefer_plz"] = $wert;
231
                        break;
232
                    case "ship-phone-number":
233
                        $data["l"]["telefon"] = $wert;
234
                        break;
235
                    case "bill-address-1":
236
                        $data["l"]["strasse"] = $wert;
237
                        break;
238
                    case "bill-address-2":
239
                        if ( $wert )
240
                        {
241
                            $data["l"]["name2"] = $data["l"]["strasse"];
242
                            $data["l"]["strasse"] = $wert;
243
                        }
244
                        break;
245
                    case "bill-city":
246
                        $data["l"]["ort"] = $wert;
247
                        break;
248
                    case "bill-postal-code":
249
                        $data["l"]["plz"] = $wert;
250
                        break;
251
                    case "totalDeliveryCosts":
252
                        $data["v"]["preis_pro_stueck"] = $wert;
253
                        $data["v"]["artikel"] = 1012574;
254
                        $data["v"]["menge"] = 1;
255
                        break;
256
                    case "productId":
257
                        $item_id = filter_var( $wert, FILTER_SANITIZE_NUMBER_INT );
258
                        //var_dump( $item_id );
259
                        if ( $item_id )
260
                        {
261
                            $res = check_item( $item_id, false );
262
                            if ( !$res )
263
                            {
264
                                $item_id = 999990;
265
                            }
266
                            else
267
                            {
268
                                $item_id = $res;
269
                            }
270
                        }
271
                        else
272
                        {
273
                            $item_id = 999990;
274
                        }
275
                        $data["ab"]["artikel"] = $item_id;
276
                        break;
277
                }
278
            }
279
            /*if ( !$data["l"]["strasse"] )
280
            {
281
            $data["l"]["strasse"] = $data["b"]["liefer_strasse"];
282
            $data["l"]["name2"] = $data["b"]["liefer_firma"];
283
            $data["l"]["ort"] = $data["b"]["liefer_ort"];
284
            $data["l"]["plz"] = $data["b"]["liefer_plz"];
285
            }*/
286
            $login = $data["l"];
287
            unset( $login["erstellt_von"], $login["erstellt_am"] );
288
            $liefer = $data["b"];
289
            unset( $liefer["erstellt_von"], $liefer["erstellt_am"] );
290
            unset( $login["e_mail"], $liefer["fremd_id"], $liefer["bestellart_id"] );
291
            $login = implode( "", $login );
292
            $liefer = implode( "", $liefer );
293
            if ( $login == $liefer )
294
            {
295
                unset( $data["b"]["liefer_plz"], $data["b"]["liefer_ort"], $data["b"]["liefer_strasse"],
296
                    $data["b"]["liefer_str_nr"], $data["b"]["liefer_anrede"], $data["b"]["liefer_name"],
297
                    $data["b"]["liefer_vorname"], $data["b"]["liefer_firma"] );
298
            }
299
            $daten[] = $data;
300
            //exit;
301
        }
302
        return $daten;
303
    }
304
 
305
    function check_item( $item_id, $fremd_id = true )
306
    {
307
        if ( $fremd_id )
308
        {
309
            $sql = "SELECT
310
                    artikel_id
311
                FROM
312
                    artikel_to_lieferanten al,
313
                    lieferanten l
314
                WHERE
315
                    l.id=al.lieferanten_id
316
                AND
317
                        l.name LIKE 'meinpaket%'
318
                AND
319
                    lieferanten_artnr='$item_id'
320
            ";
321
        }
322
        else
323
        {
324
            $sql = "SELECT
325
                    id AS artikel_id
326
                FROM
327
                    artikel
328
                WHERE
329
                    id = $item_id
330
                AND
331
                    language = 'DE'
332
            ";
333
        }
334
        $res = mysql_query( $sql );
335
        if ( !$res )
336
        {
337
            meld_error( $sql );
338
            return false;
339
        }
340
        $row = mysql_fetch_assoc( $res );
341
        $id = $row["artikel_id"];
342
        return $id;
343
    }
344
    /**
345
     * check_order()
346
     *
347
     * @param mixed $fremd_id
348
     * @return
349
     */
350
    function check_order( $fremd_id )
351
    {
352
        $sql = "SELECT
353
                ID
354
            FROM
355
                Bestellung
356
            WHERE
357
                fremd_id='" . $fremd_id . "'
358
        ";
359
        $res = mysql_query( $sql );
360
        if ( !$res )
361
        {
362
            meld_error( $sql );
363
            return false;
364
        }
365
        return !mysql_num_rows( $res );
366
    }
367
 
368
    /**
369
     * create_login()
370
     *
371
     * @param mixed $login
372
     * @return
373
     */
374
    function create_login( $login )
375
    {
376
        $keys = array_keys( $login );
377
        $values = array_values( $login );
378
        foreach ( $values as $v_id => $value )
379
        {
380
            $values[$v_id] = mysql_real_escape_string( str_replace( "\"", "", $value ) );
381
        }
382
        $sql = 'INSERT INTO
383
                Logins
384
            (
385
            ' . implode( ', ', $keys ) . '
386
            )
387
            VALUES
388
            (
389
            "' . implode( '", "', $values ) . '"
390
            )
391
        ';
392
 
393
        $res = mysql_query( $sql );
394
        if ( !$res )
395
        {
396
            meld_error( $sql );
397
            return false;
398
        }
399
        return mysql_insert_id();
400
    }
401
 
402
    /**
403
     * create_order()
404
     *
405
     * @param mixed $order
406
     * @return
407
     */
408
    function create_order( $order )
409
    {
410
        $keys = array_keys( $order );
411
        $values = array_values( $order );
412
        foreach ( $values as $v_id => $value )
413
        {
414
            $values[$v_id] = mysql_real_escape_string( $value );
415
        }
416
        $sql = "INSERT INTO
417
                Bestellung
418
            (
419
            \n" . implode( ",\n", $keys ) . "
420
            )
421
            VALUES
422
            (
423
            \n'" . implode( "',\n'", $values ) . "'
424
            )
425
        ";
426
        $res = mysql_query( $sql );
427
        if ( !$res )
428
        {
429
            meld_error( $sql );
430
            return false;
431
        }
432
        return mysql_insert_id();
433
    }
434
 
435
    /**
436
     * create_order_item()
437
     *
438
     * @param mixed $item
439
     * @return
440
     */
441
    function create_order_item( $item )
442
    {
443
        $keys = array_keys( $item );
444
        $values = array_values( $item );
445
        foreach ( $values as $v_id => $value )
446
        {
447
            $values[$v_id] = mysql_real_escape_string( $value );
448
        }
449
        $sql = "INSERT INTO
450
                artikel_to_Bestellung
451
            (
452
            \n" . implode( ",\n", $keys ) . "
453
            )
454
            VALUES
455
            (
456
            \n'" . implode( "',\n'", $values ) . "'
457
            )
458
        ";
459
        $res = mysql_query( $sql );
460
        if ( !$res )
461
        {
462
            meld_error( $sql );
463
            return false;
464
        }
465
        return mysql_insert_id();
466
    }
467
 
468
    function meld_error( $sql )
469
    {
470
        global $site;
471
        $GLOBALS["ui"]->assign( "error", true );
472
        $GLOBALS["ui"]->assign( "meld",
473
            "Es ist ein Fehler aufgetreten!<br>Bitte versuchen Sie später noch einmal!" );
474
        $GLOBALS["ui"]->assign( "db_meld", "Die Technik ist breits informiert!" );
475
        if ( $GLOBALS["error_cnt"] === 0 )
476
        {
477
            mail( "admin@weban.de", "Fehler beim meinpaket-Import", $sql .
478
                "<br>" . mysql_error(), "", "-F info@" . $site );
479
 
480
        }
481
        $GLOBALS["error_cnt"]++;
482
    }
483
 
484
    function getOrderId( $amazon_id )
485
    {
486
        $sql = "SELECT
487
                id
488
            FROM
489
                Bestellung
490
            WHERE
491
                fremd_id='$amazon_id'
492
        ";
493
        $res = mysql_query( $sql );
494
        $row = mysql_fetch_assoc( $res );
495
        return $row["id"];
496
    }
497
 
498
    function getOrderItems( $bestellung )
499
    {
500
        $sql = "SELECT
501
                artikel,
502
                bezeichnung
503
            FROM
504
                artikel_to_Bestellung
505
            WHERE
506
                bestellung=$bestellung
507
        ";
508
        $res = mysql_query( $sql );
509
        while ( $row = mysql_fetch_assoc( $res ) )
510
        {
511
            $items["ids"][] = $row["artikel"];
512
            $items["names"][] = $row["bezeichnung"];
513
        }
514
        return $items;
515
    }
516
?>