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
    // $Id: rechnung.php 3997 2011-10-13 10:22:00Z erling $
5
 
6
    require_once "connect2.php";
7
    require_once "includes/bestellungen/system/mysql_query_logged.php";
8
    require_once "Weban_Smarty.class.php";
9
 
10
    require_once "module/functions.common.php";
11
    require_once "includes/rechnung/rechnungsbuch.function.php";
12
    require_once "includes/bestellungen/system/artikelDatabase.php";
13
 
14
 
15
    // Soll die Vorschaltseite angezeigt werden?
16
    $show_prepage = 0;
17
    $zz_text = null;
18
 
19
 
20
    // ME: START Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung
21
    if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
22
        if ( $_POST['action'] == "genPDF" )
23
        {
24
            if ( $_POST['zahlungsziel'] )
25
            {
26
                $sql = "select * from zahlungsziele where id=" . $_POST['zahlungsziel'] . "";
27
                if ( $q = mysql_query($sql) )
28
                {
29
                    if ( $r = mysql_fetch_assoc($q) )
30
                    {
31
                        $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
32
                        $serArr['ziel'] = strtotime('+'.$r['zieltage'].' days');
33
 
34
 
35
                        if($r['skonto1']>0) {
36
                            $skonto1 = $r['skonto1'];
37
                            $serArr['skonto1'] = $skonto1;
38
                        }
39
                        if($r['zieltageskonto1']>0) {
40
                            $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
41
                            $serArr['zielskonto1'] = strtotime('+'.$r['zieltageskonto1'].' days');
42
                        }
43
 
44
                        if($r['skonto2']>0) {
45
                            $skonto2 = $r['skonto2'];
46
                            $serArr['skonto2'] = $skonto2;
47
                        }
48
                        if($r['zieltageskonto2']>0) {
49
                            $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
50
                            $serArr['zielskonto2'] = strtotime('+'.$r['zieltageskonto2'].' days');
51
                        }
52
                        @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
53
 
54
                        $zz_text = $rechnungsbaustein_int;
55
 
56
                    }
57
                }
58
            }
59
        }
60
    }
61
 
62
    if($_POST['rechnung_bezahlt']) {
63
        $zz_text = "Betrag lt. Kassenbeleg dankend erhalten.";
64
    }
65
    // ME: ENDE Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung
66
 
67
    $GLOBALS["ui"] = new Weban_Smarty();
68
    $GLOBALS["ui"]->compile_dir = $_SERVER["DOCUMENT_ROOT"] . "/templates_c/";
69
    $GLOBALS["ui"]->compile_id = "Warenwirtschaft|rechnungen";
70
    $GLOBALS["ui"]->use_sub_dirs = true;
71
 
72
    if ( $_POST['b_id'] )
73
    {
74
        $b_id = $_POST['b_id'];
75
    }
76
    if ( $b_id )
77
    {
78
        $GLOBALS["ui"]->assign( "b_id", $b_id );
79
    }
80
 
81
 
82
    // ME: Soll der Kunde das Rechnungsdatum auf der Vorschaltseite ändern können?
83
    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_rechnungsdatum"]) ) {
84
        $GLOBALS["ui"]->assign( "rechnungsdatum_aendern", true );
85
    }
86
 
87
    // ME: Soll der Kunde das Leistungsdatum auf der Vorschaltseite ändern können?
88
    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_lieferdatum"]) ) {
89
        $GLOBALS["ui"]->assign( "leistungsdatum_aendern", true );
90
    }
91
 
92
    // ME: soll die Rechnung als Gutschrift ausgegeben werden?
93
    $gutschrift=0;
94
    if(isset( $_POST['gutschrift'] )) {
95
        $gutschrift=1;
96
    }
97
 
98
    // ME: Webrecht und Userrecht für Gutschriften gesetzt?
99
    $GLOBALS["ui"]->assign("gutschriftoption",0);
100
    if(
101
        (isset($web_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) and
102
        (isset($user_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"]))
103
    ) {
104
        $GLOBALS["ui"]->assign("gutschriftoption",1);
105
    }
106
 
107
 
108
    // START PRÜFUNG ARTIKEL FÜR RECHNUNGSDRUCK!
109
    // ME: hier muss geprüft werden, ob mind. ein Artikel für den Rechnungsdruck ausgewählt wurde.
110
    // Wenn nicht, gibts ne Fehlermeldung!
111
    $sql = "SELECT
112
                ab.*
113
            FROM
114
                artikel_to_Bestellung ab
115
            LEFT OUTER JOIN
116
                artikel a
117
            ON
118
                a.ID=ab.artikel
119
            WHERE
120
                Bestellung=$b_id
121
            AND
122
                ab.`status` != 'storniert'
123
    ";
124
 
125
    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["artikel_sortieren"]) )
126
    {
127
        $sql .= "
128
            ORDER BY
129
                ab.Rang,
130
                Father desc,
131
                a.kennung
132
        ";
133
    }
134
    else
135
    {
136
        $sql .= "
137
            ORDER BY
138
                Father desc,
139
                a.kennung
140
        ";
141
    }
142
    $r_schreiben = 0;
143
    if ( $q = mysql_query($sql) )
144
    {
145
 
146
        while ( $r = mysql_fetch_assoc($q) )
147
        {
148
            if ( $r['rechnungStatus'] == 'schreiben' )
149
            {
150
                $r_schreiben++;
151
            }
152
        }
153
    }
154
    else
155
    {
156
        echo mysql_error();
157
    }
158
    if ( $r_schreiben == 0 )
159
    {
160
        die( "<div style=\"font-size:0.8em;padding:10px;width:300px;border:1px solid #ccc;font-family:arial,helvetica,sans-serif;\"><h1 style=\"font-size:1em;\">Fehler!</h1><p>Sie müssen den Rechnungsstatus für mind. einen Artikel auf 'schreiben' setzen!</p><p><a href=\"javascript:window.close();\">Fenster schliessen</a></p></div>" );
161
    }
162
    // ENDE PRÜFUNG ARTIKEL FÜR RECHNUNGSDRUCK!
163
 
164
    /**
165
     * Funktionen der Lagerwirtschaft.
166
     */
167
    require_once '../includes/system/functions.lagerwirtschaft.php';
168
 
169
    // Rechnungsbausteine?
170
    $sql_b = "SELECT * FROM Bestellung WHERE ID=$b_id";
171
    $res_b = mysql_query_logged( $sql_b );
172
    $row_b = mysql_fetch_assoc( $res_b );
173
 
174
    $bestellart_id = $row_b['bestellart_id'];
175
    $shops_ID = $row_b['shops_ID'];
176
    $b_name = $row_b["letzte_Aenderung_von"];
177
    $b_name = substr( $b_name, 0, strpos($b_name, "@") );
178
    $dat = datetime2human( $row_b["letzte_Aenderung_am"] );
179
    $sql_l = "SELECT * FROM Logins WHERE ID=" . $row_b["Login"];
180
    $res_l = mysql_query_logged( $sql_l );
181
    $row_l = mysql_fetch_assoc( $res_l );
182
    $name = ( $row_l["Vorname"] ) ? $row_l["Vorname"] . " " . $row_l['Name1'] :
183
        $row_l["Name1"];
184
 
185
    /**
186
     *  Wenn Nettoberechnung nicht gesetzt ist (bei Logins),
187
     * und beim Kunden das Recht gesetzt ist,
188
     * oder das Webrecht garnicht existiert,
189
     * werden Bruttopreise angezeigt
190
     */
191
    $showBruttoPreis = 1;
192
    if ( (isset($web_rechte['logins']['admin']['nettoberechnung']) == 1 and $row_l['nettoberechnung'] ==
193
        "on") or isset($web_rechte['logins']['admin']['nettoberechnung']) != 1 )
194
    {
195
        $showBruttoPreis = 0;
196
    }
197
    if ( isset($web_rechte['Warenwirtschaft']['bestellung']['abw_lieferdatum']) ) {
198
        define('LEISTUNGS_DATUM',true);
199
    }
200
    if ( file_exists("includes/rechnung/body_" . $site . "_" . $shops_ID .
201
        ".inc.php") )
202
    {
203
        require_once ( "includes/rechnung/body_" . $site . "_" . $shops_ID .
204
            ".inc.php" );
205
    }
206
    else
207
    {
208
        require_once "includes/rechnung/body_" . $site . ".inc.php";
209
    }
210
 
211
    if ( $Einzug_rechts )
212
    {
213
        $Einzug = $Einzug_rechts;
214
    }
215
    else
216
    {
217
        $Einzug = 10;
218
    }
219
 
220
    if ( !defined("BEMERKUNG2_DRUCKEN") )
221
    {
222
        define( "BEMERKUNG2_DRUCKEN", true );
223
    }
224
    if ( !defined("LEISTUNGS_DATUM") )
225
    {
226
        define( "LEISTUNGS_DATUM", false );
227
    }
228
 
229
    // ME: Anrede in der richtigen Sprache
230
    $anrede = $row_l["Anrede"];
231
    if ( $row_l['Land'] == "Nederland" )
232
    {
233
        switch ( $row_l['Anrede'] )
234
        {
235
            case "Herr":
236
                $anrede = "Heer";
237
                break;
238
            case "Frau":
239
                $anrede = "Mevrouw";
240
                break;
241
            default:
242
                $anrede = "Heer";
243
                break;
244
        }
245
    }
246
 
247
    $plz = $row_l["PLZ"];
248
    $ort = $row_l["ORT"];
249
    $str = $row_l["Strasse"];
250
    $str .= ( isset($row_l["Hausnummer"]) ) ? " " . $row_l["Hausnummer"] : "";
251
    $iso_land = getIsoCode( $row_l['Land'], 2 );
252
    $firma = ( isset($row_l["Name2"]) ) ? $row_l["Name2"] : "";
253
    $mwst_befreiung = $row_l["mwst_befreiung"];
254
    $ustid_nr = $row_l["ustid_nr"];
255
    require_once "fpdf/fpdf.php";
256
    class PDF extends FPDF
257
    {
258
        function generate_LN( $bestell_id, $art, $Nummernkreis )
259
        {
260
            global $web_rechte;
261
            if ( $Nummernkreis )
262
            {
263
                global $shops_ID;
264
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
265
                {
266
                    $sql_re = "SELECT
267
                            re_short
268
                        FROM
269
                            shops
270
                        WHERE
271
                            ID=" . $shops_ID . "
272
                    ";
273
                    $res_re = mysql_query( $sql_re );
274
                    $row_re = mysql_fetch_assoc( $res_re );
275
                    $re_short = $row_re["re_short"];
276
                }
277
                $sql = "SELECT
278
                        l_nr AS ln
279
                    FROM
280
                        nummernkreis_rechnung
281
                    WHERE
282
                        jahr=" . date( "Y" );
283
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
284
                {
285
                    $sql .= "
286
                        AND
287
                            re_short='$re_short'
288
                    ";
289
                }
290
                $res = mysql_query_logged( $sql );
291
                if ( $res )
292
                {
293
                    if ( mysql_num_rows($res) )
294
                    {
295
                        $row = mysql_fetch_assoc( $res );
296
                        $ln = $row["ln"];
297
                        $ln++;
298
                    }
299
                    else
300
                    {
301
                        $ln = 1;
302
                        $sql = "
303
                            INSERT INTO
304
                                nummernkreis_rechnung
305
                            (
306
                                l_nr,
307
                        ";
308
                        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
309
                        {
310
                            $sql .= "
311
                                re_short,
312
                        ";
313
                        }
314
                        $sql .= "
315
                                jahr
316
                            )
317
                            VALUES
318
                            (
319
                                $ln,
320
                            ";
321
                        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
322
                        {
323
                            $sql .= "
324
                                '" . $re_short . "',
325
                            ";
326
                        }
327
                        $sql .= "
328
                                " . date( "Y" ) . "
329
                            )
330
                        ";
331
                        mysql_query_logged( $sql );
332
                    }
333
                }
334
                else
335
                {
336
                    $ln = 1;
337
                }
338
                $sql = "
339
                    UPDATE
340
                        nummernkreis_rechnung
341
                    SET
342
                        l_nr=" . $ln . "
343
                    WHERE
344
                        jahr=" . date( "Y" ) . "
345
                ";
346
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
347
                {
348
                    $sql .= "
349
                        AND
350
                            re_short='$re_short'
351
                    ";
352
                }
353
                mysql_query_logged( $sql );
354
            }
355
            else
356
            {
357
                $date = date( "Y-m-d" );
358
                $f_name = $art . "_" . $bestell_id . "_" . $date;
359
                $sql = "SELECT
360
                            MAX(document) AS dokument
361
                        FROM
362
                            dokumente
363
                        WHERE
364
                            document
365
                        LIKE
366
                            '$f_name%'
367
                    ";
368
                $res = mysql_query( $sql );
369
                if ( $res )
370
                {
371
                    if ( mysql_num_rows($res) )
372
                    {
373
                        $row = mysql_fetch_assoc( $res );
374
                        $dokument = substr( $row["dokument"], 0, strlen($row["dokument"]) - 4 );
375
                        $dokument = explode( "_", $dokument );
376
                        $ln = $dokument[count( $dokument ) - 1];
377
                        $ln++;
378
                    }
379
                    else
380
                    {
381
                        $ln = 1;
382
                    }
383
                }
384
                else
385
                {
386
                    $ln = 1;
387
                    die( mysql_error() );
388
                }
389
            }
390
            return $ln;
391
        }
392
        //Page header
393
        function Header()
394
        {
395
            global $site, $r_nr, $shops_ID, $Einzug;
396
 
397
            if ( file_exists("includes/rechnung/header_" . $site . "_" . $shops_ID .
398
                ".inc.php") )
399
            {
400
                require_once ( "includes/rechnung/header_" . $site . "_" . $shops_ID .
401
                    ".inc.php" );
402
            }
403
            else
404
            {
405
                require_once ( "includes/rechnung/header_" . $site . ".inc.php" );
406
            }
407
        }
408
 
409
        //Page footer
410
        function Footer()
411
        {
412
            global $site, $shops_ID, $Einzug;
413
 
414
            if ( file_exists("includes/rechnung/footer_" . $site . "_" . $shops_ID .
415
                ".inc.php") )
416
            {
417
                require_once ( "includes/rechnung/footer_" . $site . "_" . $shops_ID .
418
                    ".inc.php" );
419
            }
420
            else
421
            {
422
                require_once ( "includes/rechnung/footer_" . $site . ".inc.php" );
423
            }
424
        }
425
        function NbLines( $w, $txt )
426
        {
427
            //Computes the number of lines a MultiCell of width w will take
428
            $cw = &$this->CurrentFont['cw'];
429
            if ( $w == 0 )
430
                $w = $this->w - $this->rMargin - $this->x;
431
            $wmax = ( $w - 2 * $this->cMargin ) * 1000 / $this->FontSize;
432
            $s = str_replace( "\r", '', $txt );
433
            $nb = strlen( $s );
434
            if ( $nb > 0 and $s[$nb - 1] == "\n" )
435
                $nb--;
436
            $sep = -1;
437
            $i = 0;
438
            $j = 0;
439
            $l = 0;
440
            $nl = 1;
441
            while ( $i < $nb )
442
            {
443
                $c = $s[$i];
444
                if ( $c == "\n" )
445
                {
446
                    $i++;
447
                    $sep = -1;
448
                    $j = $i;
449
                    $l = 0;
450
                    $nl++;
451
                    continue;
452
                }
453
                if ( $c == ' ' )
454
                    $sep = $i;
455
                $l += $cw[$c];
456
                if ( $l > $wmax )
457
                {
458
                    if ( $sep == -1 )
459
                    {
460
                        if ( $i == $j )
461
                            $i++;
462
                    }
463
                    else
464
                        $i = $sep + 1;
465
                    $sep = -1;
466
                    $j = $i;
467
                    $l = 0;
468
                    $nl++;
469
                }
470
                else
471
                    $i++;
472
            }
473
            return $nl;
474
        }
475
    }
476
 
477
    if ( !$b_id )
478
    {
479
        if ( $_GET["b_id"] )
480
        {
481
            $b_id = ( int )$_GET["b_id"];
482
        } elseif ( $_POST["b_id"] )
483
        {
484
            $b_id = ( int )$_POST["b_id"];
485
        }
486
        else
487
        {
488
            die( "Keine Bestellung angegeben!" );
489
        }
490
    }
491
 
492
    // Standard-Zahlungsziel? START
493
    if ( isset($web_rechte["logins"]["admin"]["zahlungsziel"]) )
494
    {
495
        // alle Zahlungsziele holen
496
        $sql = "select
497
                    *
498
                from
499
                    zahlungsziele
500
                order by
501
                    name
502
                ";
503
 
504
 
505
        if ( $q = mysql_query($sql) )
506
        {
507
            while ( $r = mysql_fetch_assoc($q) )
508
            {
509
                $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
510
 
511
                $skonto1 = $r['skonto1'];
512
                $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
513
                if($skonto1>0) {
514
                    $skontobetrag1 = money_format($summe_b['total'] - ($summe_b['total'] * ($skonto1/100) ),2);
515
                }
516
 
517
                $skonto2 = $r['skonto2'];
518
                $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
519
                if($skonto2>0) {
520
                    $skontobetrag2 = money_format($summe_b['total'] - ($summe_b['total'] * ($skonto2/100) ),2);
521
                }
522
 
523
 
524
 
525
                @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
526
                $r["rechnungsbaustein_int"] = $rechnungsbaustein_int;
527
                $zziele[] = $r;
528
            }
529
        }
530
        $GLOBALS["ui"]->assign( "zziele", $zziele );
531
 
532
        // gibt es für den User ein Zahlungsziel?
533
        $sql = "select
534
                    l.zahlungsziele_id
535
 
536
                from
537
                    Bestellung b,
538
                    Logins l
539
                where
540
                    b.Login = l.ID
541
                and
542
                    b.ID = " . $b_id . "
543
        ";
544
        if ( $q = mysql_query($sql) )
545
        {
546
            if ( $r = mysql_fetch_assoc($q) )
547
            {
548
                $GLOBALS["ui"]->assign( "zID", $r['zahlungsziele_id'] );
549
            }
550
        }
551
 
552
        $GLOBALS["ui"]->assign( "zahlungsziel", "true" );
553
        $show_prepage++;
554
    }
555
 
556
    // Standard-Zahlungsziel? ENDE
557
 
558
    // Rechnungsbausteine?
559
    if ( (isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"]) and
560
        (!$_POST['action'])) or (isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung']) and
561
        (!$_POST['action'])) )
562
    {
563
 
564
        $bausteinIDs = explode( ";", $web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"] );
565
        $where_part = implode( " OR ID=", $bausteinIDs );
566
        // gibt es das Feld bestellart_id?
567
        $wcl = "";
568
        $result = mysql_query( "SHOW COLUMNS FROM web_settings" );
569
        if ( !$result )
570
        {
571
            echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
572
            //exit;
573
        }
574
 
575
        if ( mysql_num_rows($result) > 0 )
576
        {
577
            while ( $row = mysql_fetch_assoc($result) )
578
            {
579
                if ( is_array($row) )
580
                {
581
                    foreach ( $row as $key => $value )
582
                    {
583
                        if ( $value == "bestellart_id" )
584
                        {
585
                            $wcl .= " AND bestellart_id = " . $bestellart_id . " ";
586
                        }
587
                        if ( $value == "shops_ID" )
588
                        {
589
                            $wcl .= " AND shops_ID = " . $shops_ID . " ";
590
                        }
591
                    }
592
                }
593
            }
594
        }
595
 
596
        // die Texte zu den Bausteinen ermitteln
597
        $sql = "SELECT
598
                    *
599
                FROM
600
                    web_settings
601
                WHERE
602
                    ID=" . $where_part . "
603
                    " . $wcl . "
604
                ORDER BY
605
                    Rang";
606
 
607
        if ( $q = mysql_query($sql) )
608
        {
609
            $row_b["kk_info"]=unserialize($row_b["kk_info"]);
610
            while ( $r = mysql_fetch_assoc($q) )
611
            {
612
                $billsafesumme = $row_b["gesamtsumme_buffer"];
613
 
614
                $billsafetxn = $row_b["kk_info"]["code"];
615
                $billsafedate = date("d.m.Y",strtotime("14 days"));
616
                @eval( "\$rbaustein_int=\"" . addslashes($r['Inhalt']) . "\";" );
617
 
618
                $bausteine[$r['ID']] = $rbaustein_int;
619
            }
620
        }
621
        $GLOBALS["ui"]->assign( "b_id", $b_id );
622
        $GLOBALS["ui"]->assign( "bausteine", $bausteine );
623
 
624
 
625
        // ME: Bestandsminderung? Muss in Kombination mit Rechnungsbausteinen eingebaut werden, damit dasselbe Template genutzt werden kann!
626
        if ( isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung']) )
627
        {
628
            $GLOBALS["ui"]->assign( "minderungsunterdrueckung", true );
629
 
630
        }
631
 
632
        $show_prepage++;
633
        $GLOBALS["ui"]->assign( "rechnungsbausteine", true );
634
 
635
    }
636
 
637
    // ME: START Soll 'Rechnung bezahlt' auf der Vorschaltseite angezeigt werden?
638
    if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
639
        if ( isset($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
640
            $show_prepage++;
641
            $GLOBALS["ui"]->assign("show_rechnung_bezahlt",1);
642
            if(strstr($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"],";")) {
643
                $bezahlt_values = explode(";", $user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]);
644
            } else {
645
                $bezahlt_values = trim( $user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"] );
646
            }
647
 
648
            // den bezahlstatus der Bestellung holen
649
            $sql = "select bezahlt from Bestellung where ID=$b_id";
650
            $q = mysql_query($sql);
651
            if($r=mysql_fetch_assoc($q)) {
652
                $GLOBALS["ui"]->assign("bezahlt", $r['bezahlt']);
653
                $GLOBALS["ui"]->assign("bestellung_bezahlt", $r['bezahlt']);
654
            }
655
 
656
            // die aktuelle Versandart zur Bestellung holen
657
            $sql = "SELECT
658
                        a.*,
659
                        ab.*,
660
                        z.interner_name
661
                    FROM
662
                        artikel_to_Bestellung ab,
663
                        artikel a,
664
                        zahlungsarten z
665
                    WHERE
666
                        ab.Bestellung=$b_id
667
                    AND
668
                        ab. `status` != 'storniert'
669
                    AND
670
                        a.Father=-3
671
                    AND
672
                        a.ID = ab.artikel
673
                    AND
674
                        a.short_line_1 = z.interner_name
675
            ";
676
 
677
            if($q=mysql_query($sql)) {
678
                while($r=mysql_fetch_assoc($q)) {
679
                    // Prüfen, ob für die Versandart der interne Name (zahlungsarten) übereinstimmt
680
                    if(is_array($bezahlt_values)) {
681
                        foreach($bezahlt_values as $key => $val) {
682
                            if(stristr($r['interner_name'],$val)) {
683
                                $GLOBALS["ui"]->assign("bezahlt", 1);
684
                                $GLOBALS["ui"]->assign( "rechnung_bezahlt", "Rechnung bezahlt (".$val.")" );
685
                            }
686
                        }
687
                    } else {
688
                        if(stristr($bezahlt_values,$r['interner_name'])) {
689
                            $GLOBALS["ui"]->assign("bezahlt", 1);
690
                            $GLOBALS["ui"]->assign( "rechnung_bezahlt", "Rechnung bezahlt (".$bezahlt_values.")" );
691
                        }
692
                    }
693
                }
694
            }
695
            $GLOBALS["ui"]->assign( "bezahlt_values", $bezahlt_values );
696
        }
697
    }
698
    // ME: ENDE Soll 'Rechnung bezahlt' auf der Vorschaltseite angezeigt werden?
699
 
700
 
701
 
702
    // ggf. wird die Vorschaltseite ausgegeben
703
    if ( $show_prepage > 0 and !$_POST['action'] )
704
    {
705
        $GLOBALS["ui"]->display( "rechnung_prepage.tpl" );
706
    }
707
 
708
    if ( ($show_prepage == 0) or ($_POST['action'] == "genPDF") )
709
    {
710
 
711
        //Instanciation of inherited class
712
        $showLieferadresse = 0;
713
        $pdf = new PDF();
714
        if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"]) )
715
        {
716
            $Status = false;
717
            $Nummernkreis = false;
718
            $Speichern = false;
719
 
720
            $daten = explode( ";", $web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"] );
721
 
722
 
723
            $id = array_search( "Status", $daten );
724
            if ( $id !== false )
725
            {
726
                $Status = true;
727
            }
728
            $id = array_search( "Nummernkreis", $daten );
729
            if ( $id !== false )
730
            {
731
                $Nummernkreis = true;
732
                if ( !isset($anz_stellen) )
733
                {
734
                    $anz_stellen = 5;
735
                }
736
                $r_nr = sprintf( "%0" . $anz_stellen . "d", $pdf->generate_LN($b_id, "R", true) );
737
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
738
                {
739
                    $sql = "SELECT
740
                            re_short
741
                        FROM
742
                            shops
743
                        WHERE
744
                            id=$shops_ID
745
                    ";
746
                    $res = mysql_query( $sql );
747
                    $row = mysql_fetch_assoc( $res );
748
                    $r_nr = $row["re_short"] . $r_nr;
749
                }
750
                $r_nr = date( "y" ) . $r_nr;
751
                $fName = "R" . $r_nr . ".pdf";
752
            }
753
            else
754
            {
755
                $date = date( "Y-m-d" );
756
                $ln = $pdf->generate_LN( $b_id, "L", false );
757
                if ( !isset($anz_stellen) )
758
                {
759
                    $anz_stellen = 5;
760
                }
761
                $r_nr = sprintf( "%0" . $anz_stellen . "d", $ln );
762
                $fName = "R_" . $b_id . "_" . $date . "_" . $r_nr . ".pdf";
763
            }
764
            $id = array_search( "Speichern", $daten );
765
            if ( $id !== false )
766
            {
767
                $Speichern = true;
768
            }
769
        }
770
 
771
        $pdf->setSubject( "Rechnung" );
772
 
773
        $pdf->setAuthor( $haendler_name );
774
        $pdf->setCreator( "fpdf PHP Library" );
775
        $pdf->AliasNbPages();
776
        $pdf->AddPage();
777
        $pdf->setY( 45 );
778
        $pdf->setFont( 'Arial', '', 8 );
779
        $pdf->SetX( $Einzug );
780
        $pdf->cell( 80, 4, $umschlag, "B", 1, "L" );
781
        $pdf->setFont( 'Arial', '', 10 );
782
        $pdf->ln( 5 );
783
        $pdf->setX( 20 );
784
        $pdf->SetX( $Einzug );
785
        if ( !$firma )
786
        {
787
            $pdf->setX( 20 );
788
            $pdf->cell( 80, 4, $anrede, 0, 1, "L" );
789
            $pdf->setX( 20 );
790
            $pdf->cell( 80, 4, $name, 0, 1, "L" );
791
        }
792
        else
793
        {
794
            $pdf->setX( 20 );
795
            $pdf->cell( 80, 4, $firma, 0, 1, "L" );
796
            $pdf->setX( 20 );
797
            $pdf->cell( 80, 4, $anrede . " " . $name, 0, 1, "L" );
798
        }
799
        $pdf->setX( 20 );
800
        $pdf->cell( 80, 4, $str, 0, 1, "L" );
801
        $pdf->setX( 20 );
802
        if ( $iso_land == "DE" or $iso_land == "DEU" )
803
        {
804
            $pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );
805
        }
806
        else
807
        {
808
            if ( strlen($iso_land) > 0 )
809
            {
810
                $pdf->cell( 80, 4, "$iso_land - $plz $ort", 0, 1, "L" );
811
            }
812
            else
813
            {
814
                $pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );
815
            }
816
        }
817
 
818
        if ( $Infozeile != 'on' )
819
        {
820
            $pdf->setY( 80 );
821
            if ( $bestellnummer_drucken === true )
822
            {
823
                $nr_text = "Best.Nr.";
824
                $nr = $row_b["ID"];
825
            }
826
            else
827
            {
828
                $nr_text = "Kunden Nr.:";
829
                $nr = $row_l["ID"];
830
            }
831
            $pdf->cell( 150, 4, $nr_text, 0, 0, "R" );
832
            $pdf->cell( 0, 4, $nr, 0, 1, "R" );
833
            $pdf->cell( 150, 4, "Bearbeiter:", 0, 0, "R" );
834
            $pdf->cell( 0, 4, $b_name, 0, 1, "R" );
835
            $pdf->cell( 150, 4, "USt-IdNr.:", 0, 0, "R" );
836
            $pdf->cell( 0, 4, $haendler_ust_id, 0, 1, "R" );
837
 
838
 
839
            // Ausgabe Leistungsdatum
840
            if ( LEISTUNGS_DATUM == true )
841
            {
842
                if($_POST['leistungsdatum']) {
843
                    $pdf->cell( 150, 4, "Leistungsdatum:", 0, 0, "R" );
844
                    $pdf->cell( 0, 4, $_POST['leistungsdatum'], 0, 1, "R" );
845
                }else{
846
                    $pdf->cell( 150, 4, "Leistungsdatum:", 0, 0, "R" );
847
                    $pdf->cell( 0, 4, $dat["Datum"], 0, 1, "R" );
848
                }
849
            }  else
850
            {
851
                $pdf->cell( 150, 4, "Datum:", 0, 0, "R" );
852
                $pdf->cell( 0, 4, date("d.m.Y"), 0, 1, "R" );
853
            }
854
 
855
            // Ausgabe Rechnungsdatum
856
            if($_POST['rechnungsdatum']) {
857
                $pdf->cell( 150, 4, "Rechnungsdatum:", 0, 0, "R" );
858
                $pdf->cell( 0, 4, $_POST['rechnungsdatum'], 0, 1, "R" );
859
            }else{
860
                $pdf->cell( 150, 4, "Rechnungsdatum:", 0, 0, "R" );
861
                $pdf->cell( 0, 4, date("d.m.Y"), 0, 1, "R" );
862
            }
863
        }
864
 
865
        // Lieferadresse auf Rechnung ausdrucken?
866
        if ( (isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"]) and (isset
867
            ($web_rechte["Warenwirtschaft"]["bestellung"]["lieferadresse_auf_rechnung"]) and
868
            ($row_b['liefer_Strasse']))) )
869
        {
870
            $pdf->setY( 50 );
871
            $pdf->setX( 135 );
872
            $pdf->setFont( 'Arial', 'B', 8 );
873
            $pdf->cell( 145, 4, "Lieferadresse:", 0, 2, "L" );
874
            $pdf->setFont( 'Arial', '', 8 );
875
            if ( $row_b['liefer_Firma'] )
876
                $pdf->cell( 145, 4, $row_b['liefer_Firma'], 0, 2, "L" );
877
            if ( $row_b['liefer_Name'] )
878
                $pdf->cell( 145, 4, $row_b['liefer_Name'], 0, 2, "L" );
879
            if ( $row_b['liefer_Strasse'] )
880
                $pdf->cell( 145, 4, $row_b['liefer_Strasse'] . " " . $row_b['liefer_Str_Nr'],
881
                    0, 2, "L" );
882
            if ( $row_b['liefer_Ort'] )
883
                $pdf->cell( 145, 4, $row_b['liefer_PLZ'] . " " . $row_b['liefer_Ort'], 0, 2,
884
                    "L" );
885
            if ( $row_b['liefer_Land'] )
886
                $pdf->cell( 145, 4, $row_b['liefer_Land'], 0, 2, "L" );
887
        }
888
 
889
        $pdf->ln( 10 );
890
        $pdf->SetFont( 'Arial', 'B', 14 );
891
 
892
        if ( !$Rechungsueberschrift )
893
        {
894
            $pdf->cell( 0, 4, $REName, 0, 1, "C" );
895
        }
896
        else
897
        {
898
            $fill = "cell( 0, 4, \'Rechnung\' , 0, 1, \'L\' )";
899
            $pdf->$fill;
900
        }
901
        $pdf->ln( 5 );
902
        $pdf->SetFont( 'Arial', 'B', 9 );
903
 
904
 
905
        $sql = "SELECT
906
                ab.*
907
            FROM
908
                artikel_to_Bestellung ab
909
            LEFT OUTER JOIN
910
                artikel a
911
            ON
912
                a.ID=ab.artikel
913
            WHERE
914
                Bestellung=$b_id
915
            AND
916
                ab. `status` != 'storniert'
917
        ";
918
        if ( $Status )
919
        {
920
            $sql .= " AND rechnungStatus = 'schreiben'";
921
        }
922
        //$sql .= " ORDER BY Rang, Bezeichnung ";
923
        if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["artikel_sortieren"]) )
924
        {
925
            $sql .= "
926
                ORDER BY
927
                    ab.Rang,
928
                    Father desc,
929
                    a.kennung
930
            ";
931
        }
932
        else
933
        {
934
            $sql .= "
935
                ORDER BY
936
                    Father desc,
937
                    a.kennung
938
            ";
939
        }
940
 
941
        $res = mysql_query_logged( $sql );
942
 
943
 
944
        $summe_n = array();
945
        $summe_b = array();
946
        $preis_n = 0;
947
        $g_preis = 0;
948
        $g_preis_n = 0;
949
        $pos = 1;
950
        $mwst_arr = array( 0 => 19, 1 => 7, null => 19 );
951
 
952
 
953
        // Lieferadresse ausgeben
954
        if ( $Lieferadresse == "on" )
955
        {
956
            if ( $row_b['liefer_Strasse'] )
957
            {
958
                $x_tmp = $pdf->GetX();
959
                $y_tmp = $pdf->GetY();
960
 
961
                $lanr = "";
962
                if ( $row_b['liefer_Anrede'] )
963
                {
964
                    $lanr = $row_b['liefer_Anrede'] . " ";
965
                }
966
 
967
                $pdf->SetFont( 'Arial', '', 9 );
968
                $pdf->SetY( 10 );
969
                $pdf->SetX( $Einzug + 5 );
970
                $pdf->cell( 0, 3, 'Lieferanschrift:', 0, 2, 'L' );
971
                $pdf->Cell( 0, 3, $row_b['liefer_Firma'], 0, 2, 'L' );
972
                $pdf->cell( 0, 3, $lanr . $row_b['liefer_Name'], 0, 2, 'L' );
973
                $pdf->cell( 0, 3, $row_b['liefer_Strasse'] . " " . $row_b['liefer_Str_Nr'],
974
                    0, 2, 'L' );
975
                $pdf->cell( 0, 3, $row_b['liefer_PLZ'] . " " . $row_b['liefer_Ort'], 0, 2,
976
                    'L' );
977
                $pdf->cell( 0, 3, $row_b['liefer_Land'], 0, 2, 'L' );
978
                $pdf->SetFont( 'Arial', '', 10 );
979
                $pdf->SetX( $x_tmp );
980
                $pdf->SetY( $y_tmp );
981
            }
982
        }
983
        //Zusatzkopf
984
 
985
        if ( $Infozeile == 'on' )
986
        {
987
            if ( $bestellnummer_drucken === true )
988
            {
989
                $nr_text = "Best.Nr.";
990
                $nr = $row_b["ID"];
991
            }
992
            else
993
            {
994
                $nr_text = "Kunden Nr.:";
995
                $nr = $row_l["ID"];
996
            }
997
            $pdf->Ln( 15 );
998
            $pdf->SetX( $Einzug );
999
            $pdf->setFillColor( 204 );
1000
            if($gutschrift==1) {
1001
                $pdf->cell( 25, 4, "Gutschrift Nr.", "LTR", 0, "C", 1 );
1002
            }else{
1003
                $pdf->cell( 25, 4, "Rechnungs Nr.", "LTR", 0, "C", 1 );
1004
            }
1005
 
1006
            $pdf->cell( 20, 4, $nr_text, "LTR", 0, "C", 1 );
1007
            $pdf->cell( 65, 4, "Bearbeiter", "LTR", 0, "C", 1 );
1008
            if ( LEISTUNGS_DATUM == true )
1009
            {
1010
                $pdf->cell( 35, 4, "Leistungsdatum", "LTR", 0, "C", 1 );
1011
            }
1012
            else
1013
            {
1014
                $pdf->cell( 35, 4, "Datum", "LTR", 0, "C", 1 );
1015
            }
1016
            $pdf->cell( 0, 4, "Seite", "LTR", 1, "C", 1 );
1017
 
1018
            $pdf->setFillColor( 255 );
1019
            $pdf->SetX( $Einzug );
1020
            $pdf->cell( 25, 4, "$r_nr", "LBR", 0, "C", 1 );
1021
            $pdf->cell( 20, 4, $nr, "LBR", 0, "C", 1 );
1022
            $pdf->cell( 65, 4, "$b_name", "LBR", 0, "C", 1 );
1023
            if ( LEISTUNGS_DATUM == true )
1024
            {
1025
                $pdf->cell( 35, 4, $dat["Datum"], "LBR", 0, "C", 1 );
1026
            }
1027
            else
1028
            {
1029
                $pdf->cell( 35, 4, date('d.m.Y'), "LBR", 0, "C", 1 );
1030
            }
1031
            $pdf->cell( 0, 4, $pdf->PageNo(), "LBR", 1, "C", 1 );
1032
        }
1033
        $pdf->setFillColor( 204 );
1034
        $pdf->SetX( $Einzug );
1035
        $pdf->cell( 10, 4, "$Pos_text", "LTR", 0, "C", 1 );
1036
        $pdf->cell( 15, 4, "$Menge_text", "LTR", 0, "C", 1 );
1037
        $pdf->cell( 20, 4, "$Kennung_text", "LTR", 0, "C", 1 );
1038
        $pdf->cell( 100, 4, "$Text_text", "LTR", 0, "C", 1 );
1039
        $pdf->cell( 20, 4, "$Einzelpreis_text", "LTR", 0, "C", 1 );
1040
        $pdf->cell( 0, 4, "$Gesamtpreis_text", "LTR", 1, "C", 1 );
1041
        $pdf->SetX( $Einzug );
1042
        $pdf->cell( 10, 4, "", "LBR", 0, "C", 1 );
1043
        $pdf->cell( 15, 4, "", "LBR", 0, "C", 1 );
1044
        $pdf->cell( 20, 4, "", "LBR", 0, "C", 1 );
1045
        $pdf->cell( 100, 4, "", "LBR", 0, "C", 1 );
1046
        $pdf->cell( 20, 4, "€", "LBR", 0, "C", 1 );
1047
        $pdf->cell( 0, 4, "€", "LBR", 1, "C", 1 );
1048
        $pdf->setFillColor( 255 );
1049
 
1050
        $pdf->SetFont( 'Arial', '', 9 );
1051
 
1052
 
1053
        while ( $row = mysql_fetch_assoc($res) )
1054
        {
1055
            $pdf->SetX( $Einzug );
1056
            $menge = $row["Menge"];
1057
            $zahlart = $row['zahlart'];
1058
            $e_preis = $row["Preis_pro_Stueck"];
1059
            $a_name = $row["Bezeichnung"];
1060
            if ( $row["artikel"] != "0" )
1061
            {
1062
 
1063
                $sql_a = "SELECT
1064
                        *
1065
                    FROM
1066
                        " . artikelDatabase( $row_b["shops_ID"] ) . "
1067
                    WHERE
1068
                        ID=" . $row["artikel"] . "
1069
                ";
1070
 
1071
                $res_a = mysql_query( $sql_a );
1072
                $row_a = mysql_fetch_assoc( $res_a );
1073
                if ( !$a_name )
1074
                {
1075
                    $a_name = html_entity_decode( $row_a["kurzbezeichnung"] );
1076
                }
1077
                $kennung = $row_a["kennung"];
1078
                $mwst = ( $row["mwst"] != "0.00" && !empty($row["mwst"]) ) ? $row["mwst"] :
1079
                    $mwst_arr[$row_a["tax1"]];
1080
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
1081
 
1082
                // ME: Wenn in der Bestellung ein Rang angegeben ist,
1083
                // wird dieser statt der laufenden Nummer als Pos ausgegeben
1084
                /*
1085
                if ( $row['Rang'] > 0 )
1086
                {
1087
                    $pos = $row['Rang'];
1088
                }*/
1089
 
1090
                if ( $showBruttoPreis == 1 )
1091
                {
1092
                    $preis_n = $e_preis;
1093
                }
1094
 
1095
                if ( $row_a["Father"] == -3 )
1096
                {
1097
                    continue;
1098
                    /*    $versandname = $row["Bezeichnung"];
1099
                    $pos = "";
1100
                    $menge = "";
1101
                    $g_preis = $e_preis;
1102
                    $g_preis_n = $preis_n;*/
1103
                }
1104
                else
1105
                {
1106
                    // ME: Bestandsmehrung oder auch nicht bei Gutschriften
1107
                    if (
1108
                        (isset($web_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) and
1109
                        (isset($user_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) )
1110
                    {
1111
                        if(isset( $_POST['gutschrift'])) {
1112
                            if(!isset($_POST['keine_bestandsaenderung'])) {
1113
                                $buchungstext = 'Buchung durchgeführt durch Gutschrift ' . $r_nr . ' am ' .
1114
                                date( 'd.m.Y', time() );
1115
                                setBuchungFromBestellung( $_GET['b_id'], $buchungstext, $row_a['ID'], $menge );
1116
                            }
1117
                        }
1118
                    }
1119
 
1120
                    /**
1121
                     *  Bestandsminderung:
1122
                     *
1123
                     *  Ist das Webrecht: $web_rechte['Warenwirtschaft']['lagerwirtschaft']['bestandsminderung'] gleich "Rechnung",
1124
                     *  so wird in der Rechnungserstellung (rechnung.php) die Bestandsminderung durchgeführt.
1125
                     *
1126
                     *  Folgende Punkte werden hierfür durchgeführt:
1127
                     *         1. Eine neue Buchung wird in der Tabelle "buchungen" erzeugt.
1128
                     *        2. Die zur Buchung gehörenden Lagerbewegungen, werden in die Tabelle "lagerbewegungen" eingetragen.
1129
                     *
1130
                     */
1131
 
1132
                    if ( ($row_a['Father'] > 0) and ($web_rechte['Warenwirtschaft']['lagerwirtschaft']['bestandsminderung'] ==
1133
                        'Rechnung') )
1134
                    {
1135
 
1136
 
1137
                        if ( (isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung'])) )
1138
                        {
1139
                            $minderung = 1;
1140
 
1141
 
1142
                            if ( is_array($_POST["baustein"]) )
1143
                            {
1144
                                foreach ( $_POST['baustein'] as $key => $val )
1145
                                {
1146
                                    if (    stristr($val, "keine Bestandsminderung")
1147
                                        )
1148
                                    {
1149
                                        $minderung = 0;
1150
                                    }
1151
                                }
1152
                            }
1153
                            if( isset($_POST['keine_bestandsaenderung']) or
1154
                                isset($_POST['gutschrift'])){
1155
                                $minderung = 0;
1156
                            }
1157
 
1158
                            if ( $minderung == 1 )
1159
                            {
1160
 
1161
                                $buchungstext = 'Buchung durchgeführt durch Rechnung ' . $r_nr . ' am ' .
1162
                                    date( 'd.m.Y', time() );
1163
                                setBuchungFromBestellung( $_GET['b_id'], $buchungstext, $row_a['ID'], $menge*-1 );
1164
                            }
1165
                        }
1166
 
1167
                    }
1168
 
1169
 
1170
                    $g_preis = $e_preis * $menge;
1171
                    $g_preis_n = $preis_n * $menge;
1172
                }
1173
            }
1174
            else
1175
            {
1176
                $mwst = 19;
1177
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
1178
                $g_preis = $e_preis * $menge;
1179
                $g_preis_n = $preis_n * $menge;
1180
                $kennung = "";
1181
                $a_name = $row["Bezeichnung"];
1182
            }
1183
            $summe_b[$mwst] += $g_preis;
1184
            $summe_n[$mwst] += $g_preis_n;
1185
            $h = $pdf->NbLines( 100, $a_name );
1186
            $h = 5 * $h;
1187
 
1188
            $x = $pdf->GetX();
1189
            $y = $pdf->GetY();
1190
 
1191
 
1192
            $pdf->Multicell( 10, $h, $pos, 1, "C" );
1193
            $pdf->SetXY( $x + 10, $y );
1194
            $x = $pdf->GetX();
1195
            $y = $pdf->GetY();
1196
 
1197
 
1198
            $pdf->Multicell( 15, $h, (is_numeric($pos)) ? str_replace(",00", "",
1199
                number_format($menge, 2, ',', '.')) : "", 1, "R" );
1200
            $pdf->SetXY( $x + 15, $y );
1201
            $x = $pdf->GetX();
1202
            $y = $pdf->GetY();
1203
 
1204
 
1205
            $pdf->Multicell( 20, $h, $kennung, 1, "C" );
1206
            $pdf->SetXY( $x + 20, $y );
1207
            $x = $pdf->GetX();
1208
            $y = $pdf->GetY();
1209
 
1210
            $pdf->Multicell( 100, 5, $a_name, 1, "L" );
1211
            $pdf->SetXY( $x + 100, $y );
1212
            $x = $pdf->GetX();
1213
            $y = $pdf->GetY();
1214
 
1215
            if ( $showBruttoPreis == 1 )
1216
            {
1217
                $pdf->Multicell( 20, $h, number_format($preis_n, 2, ',', '.'), 1, "R" );
1218
            }
1219
            else
1220
            {
1221
                $pdf->Multicell( 20, $h, number_format($preis_n, 3, ',', '.'), 1, "R" );
1222
            }
1223
 
1224
 
1225
            $pdf->SetXY( $x + 20, $y );
1226
 
1227
 
1228
            $pdf->Multicell( 0, $h, number_format($g_preis_n, 2, ',', '.'), 1, "R" );
1229
            //$pdf->ln( 4 );
1230
            if ( $Status )
1231
            {
1232
                $sql_s =
1233
                    "UPDATE artikel_to_Bestellung SET rechnungStatus='geschrieben' WHERE ID=" .
1234
                    $row["ID"];
1235
                mysql_query_logged( $sql_s ) or die( mysql_errno() . ": " . mysql_error() );
1236
            }
1237
            $pos++;
1238
        }
1239
 
1240
        // ME: Prüfen, ob die Tabelle zahlungsarten existiert
1241
        $select_z = "";
1242
        $from_z = "";
1243
        $where_z = "";
1244
        if(table_exists('zahlungsarten',$webs["datenbank"])=="true") {
1245
            $zahlungsarten = 1;
1246
            $select_z = ",z.id as zahlungsart_id";
1247
            $from_z = ", zahlungsarten z";
1248
            $where_z = " and z.interner_name = a.short_line_1";
1249
        }
1250
        $sql = "
1251
            SELECT
1252
                ab.*,
1253
                a.short_line_1 as zahlart
1254
                ".$select_z."
1255
            FROM
1256
                artikel_to_Bestellung ab,
1257
                " . artikelDatabase( $row_b["shops_ID"] ) . " a
1258
                ".$from_z."
1259
            WHERE
1260
                Bestellung=$b_id
1261
            AND
1262
                ab.status!='storniert'
1263
            AND
1264
                a.ID=ab.artikel
1265
            AND
1266
                a.Father=-3
1267
            ".$where_z."
1268
            ORDER BY
1269
                Rang,
1270
                Bezeichnung
1271
        ";
1272
 
1273
        $res = mysql_query_logged( $sql ) or mail( "niewerth@weban.de",
1274
            "Fehler in createMailOrderText.php", mysql_errno() . ": " . mysql_error() .
1275
            "<hr>$query<hr>",
1276
            "from: cms_Warenwirtschaft_rechung.php select artikel_to_Bestellung" );
1277
 
1278
        if ( mysql_num_rows($res) )
1279
        {
1280
            $row = mysql_fetch_assoc( $res );
1281
            $menge = $row["Menge"];
1282
            $e_preis = $row["Preis_pro_Stueck"];
1283
            if($zahlungsarten==1) {
1284
                $zahlungsart_id = $row['zahlungsart_id'];
1285
            }
1286
 
1287
            if ( $row["artikel"] != 999999 )
1288
            {
1289
                $sql_a = "SELECT
1290
                        *
1291
                    FROM
1292
                        " . artikelDatabase( $row_b["shops_ID"] ) . "
1293
                    WHERE
1294
                        ID=" . $row["artikel"] . "
1295
                ";
1296
                $res_a = mysql_query( $sql_a ) or die( mysql_errno() . ": " . mysql_error() );
1297
                if ( !$res_a )
1298
                {
1299
                    echo mysql_error() . "<br>$sql_a";
1300
                    var_dump( $row );
1301
                }
1302
                $row_a = mysql_fetch_assoc( $res_a );
1303
                $kennung = $row_a["kennung"];
1304
                $mwst = ( $row["mwst"] != "0.00" && !empty($row["mwst"]) ) ? $row["mwst"] :
1305
                    $mwst_arr[$row_a["tax1"]];
1306
 
1307
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
1308
 
1309
                if ( $showBruttoPreis == 1 )
1310
                {
1311
                    $preis_n = $e_preis;
1312
                }
1313
                if ( $row_a["Father"] == -3 )
1314
                {
1315
                    $versandname = $row["Bezeichnung"];
1316
                    $pos = "";
1317
                    $menge = "";
1318
                    $g_preis = $e_preis;
1319
                    $g_preis_n = $preis_n;
1320
                }
1321
                else
1322
                {
1323
 
1324
 
1325
                    $g_preis = $e_preis * $menge;
1326
                    $g_preis_n = $preis_n * $menge;
1327
                }
1328
            }
1329
            else
1330
            {
1331
                $mwst = 19;
1332
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
1333
                $g_preis = $e_preis * $menge;
1334
                $g_preis_n = $preis_n * $menge;
1335
                $kennung = "";
1336
            }
1337
            $summe_b[$mwst] += $g_preis;
1338
            $summe_n[$mwst] += $g_preis_n;
1339
            $a_name = $row["Bezeichnung"];
1340
 
1341
            $pdf->SetX( $Einzug );
1342
            $pdf->cell( 10, 4, $pos, 1, 0, "C" );
1343
            $pdf->cell( 15, 4, (is_numeric($pos)) ? number_format($menge, 2, ',', '.') :
1344
                "", 1, 0, "R" );
1345
            $pdf->cell( 20, 4, $kennung, 1, 0, "C" );
1346
            $pdf->cell( 100, 4, $a_name, 1, 0, "L", 0, "", 0, 0 );
1347
            if ( $showBruttoPreis == 1 )
1348
            {
1349
                $pdf->cell( 20, 4, number_format($preis_n, 2, ',', '.'), 1, 0, "R" );
1350
            }
1351
            else
1352
            {
1353
                $pdf->cell( 20, 4, number_format($preis_n, 3, ',', '.'), 1, 0, "R" );
1354
            }
1355
 
1356
            $pdf->cell( 0, 4, number_format($g_preis_n, 2, ',', '.'), 1, 0, "R" );
1357
            $pdf->ln( 4 );
1358
            $pos++;
1359
        }
1360
 
1361
        foreach ( $summe_n as $mwst => $betrag )
1362
        {
1363
            $summe_n["total"] += $betrag;
1364
        }
1365
        foreach ( $summe_b as $mwst => $betrag )
1366
        {
1367
            $summe_b["total"] += $betrag;
1368
        }
1369
        $pdf->SetX( $Einzug );
1370
        if ( $showBruttoPreis == 1 )
1371
        {
1372
            $pdf->cell( 165, 4, "Gesamt Brutto", 1, 0, "L" );
1373
            $pdf->cell( 0, 4, number_format($summe_b["total"], 2, ',', '.'), 1, 1, "R" );
1374
        }
1375
        else
1376
        {
1377
            $pdf->cell( 165, 4, "Gesamt Netto", 1, 0, "L" );
1378
            $pdf->cell( 0, 4, number_format($summe_n["total"], 2, ',', '.'), 1, 1, "R" );
1379
        }
1380
 
1381
        $pdf->SetX( $Einzug );
1382
        // Mehrwertsteuer Ausgabe bei Bruttoberechnung
1383
        if ( $showBruttoPreis == 1 )
1384
        {
1385
            foreach ( $summe_b as $mwst => $betrag )
1386
            {
1387
                if ( $mwst != "total" )
1388
                {
1389
                    if ( $mwst_befreiung == 'on' )
1390
                    {
1391
                        $mwst = 0.00;
1392
                    }
1393
 
1394
                    if ( $showBruttoPreis == 1 )
1395
                    {
1396
                        $pdf->cell( 165, 4, "inkl. $mwst % MwSt. in " . number_format($betrag, 2,
1397
                            ',', '.') . " €", "LBT", 0, "L" );
1398
                    }
1399
 
1400
 
1401
                    $pdf->cell( 0, 4, number_format($betrag * $mwst / (100 + $mwst), 2, ',', '.'),
1402
                        1, 1, "R" );
1403
 
1404
 
1405
                    define( 'MWST', $mwst );
1406
                }
1407
            }
1408
 
1409
        }
1410
        else
1411
        {
1412
 
1413
 
1414
            // Mehrwertsteuer Ausgabe bei Nettoberechnung
1415
            foreach ( $summe_n as $mwst => $betrag )
1416
            {
1417
                if ( $mwst != "total" )
1418
                {
1419
                    if ( $mwst_befreiung == 'on' )
1420
                    {
1421
                        $mwst = 0.00;
1422
                    }
1423
 
1424
                    $pdf->cell( 165, 4, "zzgl. $mwst % MwSt. auf " . number_format($betrag, 2,
1425
                        ',', '.') . " €", "LBT", 0, "L" );
1426
 
1427
                    $pdf->cell( 0, 4, number_format($betrag * $mwst / 100, 2, ',', '.'), 1, 1,
1428
                        "R" );
1429
 
1430
                    define( 'MWST', $mwst );
1431
                }
1432
            }
1433
        }
1434
        $pdf->setFont( 'Arial', 'B', 12 );
1435
        $pdf->SetX( $Einzug );
1436
        // Ist Summe-Brutto kleiner als 0, wird der 'Gesamtbetrag' umbenannt in 'Gutschriftsbetrag'
1437
        if ( $summe_b["total"] < 0 )
1438
        {
1439
            $pdf->cell( 165, 8, "Gutschriftsbetrag", "LBR", 0, "L" );
1440
        }
1441
        else
1442
        {
1443
            $pdf->cell( 165, 8, "Gesamtbetrag", "LBR", 0, "L" );
1444
        }
1445
 
1446
        // Wenn die MwSt-Befreiung gesetzt ist, gebe als Gesamtbetrag die Summe als Netto aus, ansonsten mit Brutto
1447
        $pdf->SetX( $Einzug );
1448
        if ( $mwst_befreiung == 'on' )
1449
        {
1450
            $pdf->cell( 0, 8, number_format($summe_n["total"], 2, ',', '.'), "LBR", 1,
1451
                "R" );
1452
        }
1453
        else
1454
        {
1455
            $pdf->cell( 0, 8, number_format($summe_b["total"], 2, ',', '.'), "LBR", 1,
1456
                "R" );
1457
        }
1458
 
1459
        $pdf->SetX( $Einzug );
1460
        $pdf->cell( 0, 8, "", "T", 1 );
1461
        $pdf->setFont( 'Arial', '', 9.5 );
1462
 
1463
        if ( $row_b["Bemerkung_extern"] && BEMERKUNG2_DRUCKEN )
1464
        {
1465
 
1466
            // externe Bemerkung
1467
            $pdf->SetX( $Einzug );
1468
            $pdf->multiCell( 35, 4, "", 0, 0, "L" );
1469
            $pdf->setFont( 'Arial', 'B', 9.5 );
1470
            $pdf->SetX( $Einzug );
1471
            $pdf->multiCell( 0, 4, $row_b["Bemerkung_extern"], 0, 1, "L" );
1472
            $pdf->SetX( $Einzug );
1473
            $pdf->multiCell( 0, 4, " ", 0, 1, "L" );
1474
            $pdf->setFont( 'Arial', '', 9.5 );
1475
        }
1476
 
1477
        // MwSt.-Befreiung Zusatztext
1478
        $pdf->SetX( $Einzug );
1479
        if ( $mwst_befreiung == 'on' )
1480
        {
1481
            $pdf->setFont( 'Arial', 'B', 10 );
1482
 
1483
            // Wenn das Land 'Deutschland' oder Leer ist, dann gebe speziellen Text aus
1484
            if ( $row_l['Land'] == 'Deutschland' || empty($row_l['Land']) )
1485
            {
1486
                $pdf->multiCell( 0, 4, "Deutschland nach §4", "", 1 );
1487
            }
1488
            else
1489
            {
1490
                // Wenn UST.IdNr. gesetzt ist   => EU-Inland
1491
                // Wenn nicht gesetzt ist       => EU-Ausland
1492
                if ( $ustid_nr )
1493
                {
1494
                    $pdf->multiCell( 0, 4,
1495
                        "Der Rechnungsempfänger ist Steuerschuldner gem. § 13b UStG.\nUSt. ID Nr. vom Leistungsempfänger ist: $ustid_nr\nUSt. ID Nr. vom Leistungserbringer ist: $haendler_ust_id",
1496
                        "", 1 );
1497
                }
1498
                else
1499
                {
1500
                    $pdf->multiCell( 0, 4, "ACHTUNG:\n\nES HANDELT SICH UM EINE STEUERFREIE AUSLIEFERUNG IN EIN DRITTLAND GEM:.§4Nr. 1A USTG",
1501
                        "", 1 );
1502
                }
1503
            }
1504
        }
1505
 
1506
        $pdf->setFont( 'Arial', '', 9.5 );
1507
        $pdf->SetX( $Einzug );
1508
        if ( VERSAND_ANZEIGEN )
1509
        {
1510
            if($gutschrift==1) {
1511
                $pdf->multiCell( 0, 4, "\r\nGutschrift", 0, 1,
1512
                "L" );
1513
            }else{
1514
                $pdf->multiCell( 0, 4, "\r\nZahlung: $versandname\n$zahlungs_hinweis", 0, 1,
1515
                "L" );
1516
            }
1517
 
1518
        }
1519
        else
1520
        {
1521
            $pdf->multiCell( 0, 4, "\r\n$zahlungs_hinweis", 0, 1, "L" );
1522
        }
1523
 
1524
        // START die Anzeige der ausgewählten Rechnungsbausteine
1525
        $pdf->SetX( $Einzug );
1526
        if ( ($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"]) and
1527
            ($_POST['action'] == "genPDF") )
1528
        {
1529
            //$pdf->multiCell( 0, 4, "Bemerkung:", 0, 1, "L" );
1530
            //$pdf->setFont( 'Arial', '', 9.5 );
1531
 
1532
            if ( is_array($_POST['baustein']) )
1533
            {
1534
                foreach ( $_POST['baustein'] as $kk => $vv )
1535
                {
1536
                    if ( $vv != "keine Bestandsminderung" )
1537
                    {
1538
                        $pdf->multiCell( 0, 4, $vv, 0, 1, "L" );
1539
                        $pdf->setFont( 'Arial', '', 9.5 );
1540
                    }
1541
                }
1542
            }
1543
        }
1544
        // ENDE die Anzeige der ausgewählten Rechnungsbausteine
1545
 
1546
 
1547
 
1548
        // ME: START Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung
1549
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
1550
            if ( $_POST['action'] == "genPDF" )
1551
            {
1552
                if ( $_POST['zahlungsziel'] )
1553
                {
1554
                    $sql = "select * from zahlungsziele where id=" . $_POST['zahlungsziel'] . "";
1555
                    if ( $q = mysql_query($sql) )
1556
                    {
1557
                        if ( $r = mysql_fetch_assoc($q) )
1558
                        {
1559
                            $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
1560
                            $serArr['ziel'] = strtotime('+'.$r['zieltage'].' days');
1561
 
1562
                            // SKONTO 1
1563
                            if($r['skonto1']>0) {
1564
                                $skonto1 = $r['skonto1'];
1565
                                $serArr['skonto1'] = $skonto1;
1566
                                $sk1 = $summe_b['total'] * ($skonto1 / 100);
1567
                                $skontobetrag1 = number_format( $sk1 ,2,",","." );
1568
                                $serArr['skontobetrag1'] = $sk1;
1569
                            }
1570
                            if($r['zieltageskonto1']>0) {
1571
                                $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
1572
                                $serArr['zielskonto1'] = strtotime('+'.$r['zieltageskonto1'].' days');
1573
                            }
1574
 
1575
 
1576
                            // SKONTO 2
1577
                            if($r['skonto2']>0) {
1578
                                $skonto2 = $r['skonto2'];
1579
                                $serArr['skonto2'] = $skonto2;
1580
                                $sk2 = $summe_b['total'] * ($skonto2 / 100);
1581
                                $skontobetrag2 = number_format( $sk2 ,2,",","." );
1582
                                $serArr['skontobetrag2'] = $sk2;
1583
                            }
1584
                            if($r['zieltageskonto2']>0) {
1585
                                $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
1586
                                $serArr['zielskonto2'] = strtotime('+'.$r['zieltageskonto2'].' days');
1587
                            }
1588
 
1589
 
1590
                            $serArr['bruttobetrag'] = $summe_b['total'];
1591
 
1592
                            @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
1593
 
1594
                            $zz_text = $rechnungsbaustein_int;
1595
 
1596
                        }
1597
                    }
1598
                }
1599
            }
1600
        }
1601
        // ME: ENDE Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung
1602
 
1603
        // Start Anzeige des Zahlungsziels
1604
        if ( $zz_text )
1605
        {
1606
            $pdf->multiCell( 0, 6, $zz_text, 0, 1, "L" );
1607
            $pdf->setFont( 'Arial', '', 9.5 );
1608
        }
1609
        // Ende Anzeige des Zahlungsziels
1610
 
1611
 
1612
        if ( $Speichern )
1613
        {
1614
            $add_flds = "";
1615
            $rechnung_key = "";
1616
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungslink"]) )
1617
            {
1618
                $add_flds = ", rechnung_key";
1619
                $rechnung_key = uniqid( hash("sha512", $fName, true) );
1620
            }
1621
 
1622
            $pdf->Output( $webs['verzeichnis'] . "/images/dokumente/" . $fName, "F" );
1623
 
1624
            $sql = "
1625
                    INSERT INTO
1626
                        dokumente
1627
                    (
1628
                        table_foreign,
1629
                        row_foreign,
1630
                        data_foreign,
1631
                        document,
1632
                        letzte_Aenderung_am,
1633
                        letzte_Aenderung_von
1634
                    )
1635
                    VALUES
1636
                    (
1637
                        'Bestellung',
1638
                        'ID',
1639
                        $b_id,
1640
                        '$fName',
1641
                        NOW(),
1642
                        '" . $_SERVER["PHP_AUTH_USER"] . "'
1643
                    )
1644
            ";
1645
            mysql_query_logged( $sql ) or mail( "niewerth@weban.de",
1646
                "Fehler in createMailOrderText.php", mysql_errno() . ": " . mysql_error() .
1647
                "<hr>$query<hr>", "from: cms_Warenwirtschaft_rechung.php into documente" );
1648
        }
1649
 
1650
        // Eintrag der Rechnung in das Rechnungsbuch
1651
        if ( isset($web_rechte['Warenwirtschaft']['rechnungsbuch']['rechnungsbuch']) )
1652
        {
1653
            $rechnungsdaten = array();
1654
 
1655
            // Rechnungsnummer
1656
            $rechnungsdaten['rechnungsnummer'] = $r_nr;
1657
 
1658
            // Bestellnummer
1659
            $rechnungsdaten['bestellung'] = $b_id;
1660
 
1661
            // shop
1662
            $rechnungsdaten['shop'] = $shops_ID;
1663
 
1664
            // kundennr
1665
            $rechnungsdaten['kundennr'] = $row_l["ID"];
1666
 
1667
            // kunde
1668
            $rechnungsdaten['kunde'] = $name;
1669
 
1670
            // kunde
1671
            $rechnungsdaten['firma'] = $firma;
1672
 
1673
            // erstellt_von
1674
            $rechnungsdaten['erstellt_von'] = $_SERVER['PHP_AUTH_USER'];
1675
 
1676
            //  mwst_19 und mwst_7
1677
            switch ( MWST )
1678
            {
1679
                case '19.00':
1680
                    $rechnungsdaten['mwst_19'] = $betrag * ( MWST / 100 );
1681
                    $rechnungsdaten['mwst_7'] = 0.00;
1682
                    break;
1683
 
1684
                case '7.00':
1685
                    $rechnungsdaten['mwst_7'] = $betrag * ( MWST / 100 );
1686
                    $rechnungsdaten['mwst_19'] = 0.00;
1687
                    break;
1688
 
1689
                case '0.00':
1690
                    $rechnungsdaten['mwst_7'] = 0.00;
1691
                    $rechnungsdaten['mwst_19'] = 0.00;
1692
                    break;
1693
            }
1694
 
1695
            // nettobetrag
1696
            $rechnungsdaten['nettobetrag'] = $summe_n["total"];
1697
 
1698
            // bruttobetrag
1699
            $rechnungsdaten['bruttobetrag'] = $rechnungsdaten['nettobetrag'] + $rechnungsdaten['mwst_7'] +
1700
                $rechnungsdaten['mwst_19'];
1701
 
1702
            // ME: Bei Gutschriften müssen die Beträge negativ sein.
1703
            if($gutschrift==1) {
1704
                if($rechnungsdaten['mwst_7']>0) {
1705
                    $rechnungsdaten['mwst_7'] = $rechnungsdaten['mwst_7'] * -1;
1706
                }
1707
                if($rechnungsdaten['mwst_19']>0) {
1708
                    $rechnungsdaten['mwst_19'] = $rechnungsdaten['mwst_19'] * -1;
1709
                }
1710
                if($rechnungsdaten['nettobetrag']>0) {
1711
                    $rechnungsdaten['nettobetrag'] = $rechnungsdaten['nettobetrag'] * -1;
1712
                }
1713
                if($rechnungsdaten['bruttobetrag']>0) {
1714
                    $rechnungsdaten['bruttobetrag'] = $rechnungsdaten['bruttobetrag'] * -1;
1715
                }
1716
            }
1717
 
1718
 
1719
            // zahlart
1720
            $rechnungsdaten['zahlart'] = $versandname;
1721
 
1722
            // Ort
1723
            $rechnungsdaten['ort'] = $ort;
1724
 
1725
            // mwst_befreiung
1726
            $rechnungsdaten['mwst_befreiung'] = $mwst_befreiung;
1727
 
1728
            // mwst_befreiung
1729
            $rechnungsdaten['ustid_nr'] = $ustid_nr;
1730
 
1731
 
1732
            // ME: Abweichendes Rechnungsdatum?
1733
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_rechnungsdatum"]) ) {
1734
                if($_POST['rechnungsdatum']) {
1735
                    $rechnungsdaten['rechnungsdatum'] = human2date($_POST['rechnungsdatum']);
1736
                }
1737
            }
1738
            // ME: Abweichendes Lieferdatum?
1739
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_lieferdatum"]) ) {
1740
                if($_POST['leistungsdatum']) {
1741
                    $rechnungsdaten['leistungsdatum'] = human2date($_POST['leistungsdatum']);
1742
                }
1743
            }
1744
 
1745
            if( setRechnungsbuch( $rechnungsdaten ) ) {
1746
            }
1747
        }
1748
        // Zahlungsziel in Rechnung speichern START
1749
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
1750
            if(isset( $serArr ) ) {
1751
                if( $serArr = serialize($serArr) ) {
1752
                    updateRechnung($serArr,$rechnungsdaten['rechnungsnummer'],$zahlungsart_id);
1753
                }
1754
            }
1755
        }
1756
        // Zahlungsziel in Rechnung speichern ENDE
1757
 
1758
 
1759
        // rechnung_bezahlt speichern START
1760
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
1761
            if ( isset($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
1762
                if(isset( $_POST['rechnung_bezahlt'] ) ) {
1763
                    upd_bezahlt($rechnungsdaten['rechnungsnummer'],$rechnungsdaten['bestellung']);
1764
                }
1765
            }
1766
        }
1767
        // rechnung_bezahlt speichern ENDE
1768
 
1769
        $pdf->Output();
1770
    }
1771
 
1772
 
1773
?>