Subversion-Projekte lars-tiefland.content-management

Revision

Zur aktuellen Revision | Blame | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

<?php
    
    
    // $Id: rechnung.php 3997 2011-10-13 10:22:00Z erling $

    require_once "connect2.php";
    require_once "includes/bestellungen/system/mysql_query_logged.php";
    require_once "Weban_Smarty.class.php";

    require_once "module/functions.common.php";
    require_once "includes/rechnung/rechnungsbuch.function.php";
    require_once "includes/bestellungen/system/artikelDatabase.php";


    // Soll die Vorschaltseite angezeigt werden?
    $show_prepage = 0;
    $zz_text = null;

    
    // ME: START Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung 
    if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
        if ( $_POST['action'] == "genPDF" )
        {
            if ( $_POST['zahlungsziel'] )
            {
                $sql = "select * from zahlungsziele where id=" . $_POST['zahlungsziel'] . "";
                if ( $q = mysql_query($sql) )
                {
                    if ( $r = mysql_fetch_assoc($q) )
                    {
                        $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
                        $serArr['ziel'] = strtotime('+'.$r['zieltage'].' days');
                        
                        
                        if($r['skonto1']>0) {
                            $skonto1 = $r['skonto1'];
                            $serArr['skonto1'] = $skonto1;    
                        }
                        if($r['zieltageskonto1']>0) {
                            $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
                            $serArr['zielskonto1'] = strtotime('+'.$r['zieltageskonto1'].' days');    
                        }
                        
                        if($r['skonto2']>0) {
                            $skonto2 = $r['skonto2'];
                            $serArr['skonto2'] = $skonto2;    
                        }
                        if($r['zieltageskonto2']>0) {
                            $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
                            $serArr['zielskonto2'] = strtotime('+'.$r['zieltageskonto2'].' days');    
                        }
                        @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
                        
                        $zz_text = $rechnungsbaustein_int;
                        
                    }
                }
            }
        }
    }
    
    if($_POST['rechnung_bezahlt']) {
        $zz_text = "Betrag lt. Kassenbeleg dankend erhalten.";
    }
    // ME: ENDE Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung

    $GLOBALS["ui"] = new Weban_Smarty();
    $GLOBALS["ui"]->compile_dir = $_SERVER["DOCUMENT_ROOT"] . "/templates_c/";
    $GLOBALS["ui"]->compile_id = "Warenwirtschaft|rechnungen";
    $GLOBALS["ui"]->use_sub_dirs = true;

    if ( $_POST['b_id'] )
    {
        $b_id = $_POST['b_id'];
    }
    if ( $b_id )
    {
        $GLOBALS["ui"]->assign( "b_id", $b_id );
    }
    

    // ME: Soll der Kunde das Rechnungsdatum auf der Vorschaltseite ändern können?
    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_rechnungsdatum"]) ) {
        $GLOBALS["ui"]->assign( "rechnungsdatum_aendern", true );
    }

    // ME: Soll der Kunde das Leistungsdatum auf der Vorschaltseite ändern können?
    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_lieferdatum"]) ) {
        $GLOBALS["ui"]->assign( "leistungsdatum_aendern", true );
    }

    // ME: soll die Rechnung als Gutschrift ausgegeben werden?
    $gutschrift=0;
    if(isset( $_POST['gutschrift'] )) {
        $gutschrift=1;        
    }

    // ME: Webrecht und Userrecht für Gutschriften gesetzt?
    $GLOBALS["ui"]->assign("gutschriftoption",0);
    if(
        (isset($web_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) and
        (isset($user_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"]))
    ) {
        $GLOBALS["ui"]->assign("gutschriftoption",1);
    }


    // START PRÜFUNG ARTIKEL FÜR RECHNUNGSDRUCK!
    // ME: hier muss geprüft werden, ob mind. ein Artikel für den Rechnungsdruck ausgewählt wurde.
    // Wenn nicht, gibts ne Fehlermeldung!
    $sql = "SELECT 
                ab.*    
            FROM 
                artikel_to_Bestellung ab
            LEFT OUTER JOIN
                artikel a
            ON
                a.ID=ab.artikel 
            WHERE 
                Bestellung=$b_id 
            AND 
                ab.`status` != 'storniert'
    ";

    if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["artikel_sortieren"]) )
    {
        $sql .= "
            ORDER BY
                ab.Rang,
                Father desc,
                a.kennung
        ";
    }
    else
    {
        $sql .= "
            ORDER BY
                Father desc,
                a.kennung
        ";
    }
    $r_schreiben = 0;
    if ( $q = mysql_query($sql) )
    {

        while ( $r = mysql_fetch_assoc($q) )
        {
            if ( $r['rechnungStatus'] == 'schreiben' )
            {
                $r_schreiben++;
            }
        }
    }
    else
    {
        echo mysql_error();
    }
    if ( $r_schreiben == 0 )
    {
        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>" );
    }
    // ENDE PRÜFUNG ARTIKEL FÜR RECHNUNGSDRUCK!

    /**
     * Funktionen der Lagerwirtschaft.
     */
    require_once '../includes/system/functions.lagerwirtschaft.php';

    // Rechnungsbausteine?
    $sql_b = "SELECT * FROM Bestellung WHERE ID=$b_id";
    $res_b = mysql_query_logged( $sql_b );
    $row_b = mysql_fetch_assoc( $res_b );

    $bestellart_id = $row_b['bestellart_id'];
    $shops_ID = $row_b['shops_ID'];
    $b_name = $row_b["letzte_Aenderung_von"];
    $b_name = substr( $b_name, 0, strpos($b_name, "@") );
    $dat = datetime2human( $row_b["letzte_Aenderung_am"] );
    $sql_l = "SELECT * FROM Logins WHERE ID=" . $row_b["Login"];
    $res_l = mysql_query_logged( $sql_l );
    $row_l = mysql_fetch_assoc( $res_l );
    $name = ( $row_l["Vorname"] ) ? $row_l["Vorname"] . " " . $row_l['Name1'] :
        $row_l["Name1"];

    /**
     *  Wenn Nettoberechnung nicht gesetzt ist (bei Logins),
     * und beim Kunden das Recht gesetzt ist,
     * oder das Webrecht garnicht existiert, 
     * werden Bruttopreise angezeigt
     */
    $showBruttoPreis = 1;
    if ( (isset($web_rechte['logins']['admin']['nettoberechnung']) == 1 and $row_l['nettoberechnung'] ==
        "on") or isset($web_rechte['logins']['admin']['nettoberechnung']) != 1 )
    {
        $showBruttoPreis = 0;
    }
    if ( isset($web_rechte['Warenwirtschaft']['bestellung']['abw_lieferdatum']) ) {
        define('LEISTUNGS_DATUM',true);
    }
    if ( file_exists("includes/rechnung/body_" . $site . "_" . $shops_ID .
        ".inc.php") )
    {
        require_once ( "includes/rechnung/body_" . $site . "_" . $shops_ID .
            ".inc.php" );
    }
    else
    {
        require_once "includes/rechnung/body_" . $site . ".inc.php";
    }

    if ( $Einzug_rechts )
    {
        $Einzug = $Einzug_rechts;
    }
    else
    {
        $Einzug = 10;
    }

    if ( !defined("BEMERKUNG2_DRUCKEN") )
    {
        define( "BEMERKUNG2_DRUCKEN", true );
    }
    if ( !defined("LEISTUNGS_DATUM") )
    {
        define( "LEISTUNGS_DATUM", false );
    }

    // ME: Anrede in der richtigen Sprache
    $anrede = $row_l["Anrede"];
    if ( $row_l['Land'] == "Nederland" )
    {
        switch ( $row_l['Anrede'] )
        {
            case "Herr":
                $anrede = "Heer";
                break;
            case "Frau":
                $anrede = "Mevrouw";
                break;
            default:
                $anrede = "Heer";
                break;
        }
    }

    $plz = $row_l["PLZ"];
    $ort = $row_l["ORT"];
    $str = $row_l["Strasse"];
    $str .= ( isset($row_l["Hausnummer"]) ) ? " " . $row_l["Hausnummer"] : "";
    $iso_land = getIsoCode( $row_l['Land'], 2 );
    $firma = ( isset($row_l["Name2"]) ) ? $row_l["Name2"] : "";
    $mwst_befreiung = $row_l["mwst_befreiung"];
    $ustid_nr = $row_l["ustid_nr"];
    require_once "fpdf/fpdf.php";
    class PDF extends FPDF
    {
        function generate_LN( $bestell_id, $art, $Nummernkreis )
        {
            global $web_rechte;
            if ( $Nummernkreis )
            {
                global $shops_ID;
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                {
                    $sql_re = "SELECT
                            re_short
                        FROM
                            shops
                        WHERE
                            ID=" . $shops_ID . "
                    ";
                    $res_re = mysql_query( $sql_re );
                    $row_re = mysql_fetch_assoc( $res_re );
                    $re_short = $row_re["re_short"];
                }
                $sql = "SELECT 
                        l_nr AS ln 
                    FROM 
                        nummernkreis_rechnung 
                    WHERE 
                        jahr=" . date( "Y" );
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                {
                    $sql .= "
                        AND
                            re_short='$re_short'
                    ";
                }
                $res = mysql_query_logged( $sql );
                if ( $res )
                {
                    if ( mysql_num_rows($res) )
                    {
                        $row = mysql_fetch_assoc( $res );
                        $ln = $row["ln"];
                        $ln++;
                    }
                    else
                    {
                        $ln = 1;
                        $sql = "
                            INSERT INTO 
                                nummernkreis_rechnung 
                            (
                                l_nr,
                        ";
                        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                        {
                            $sql .= "
                                re_short,
                        ";
                        }
                        $sql .= "
                                jahr
                            ) 
                            VALUES
                            ( 
                                $ln,
                            ";
                        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                        {
                            $sql .= "
                                '" . $re_short . "',
                            ";
                        }
                        $sql .= "
                                " . date( "Y" ) . "
                            )
                        ";
                        mysql_query_logged( $sql );
                    }
                }
                else
                {
                    $ln = 1;
                }
                $sql = "
                    UPDATE 
                        nummernkreis_rechnung 
                    SET 
                        l_nr=" . $ln . " 
                    WHERE 
                        jahr=" . date( "Y" ) . "
                ";
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                {
                    $sql .= "
                        AND
                            re_short='$re_short'           
                    ";
                }
                mysql_query_logged( $sql );
            }
            else
            {
                $date = date( "Y-m-d" );
                $f_name = $art . "_" . $bestell_id . "_" . $date;
                $sql = "SELECT
                            MAX(document) AS dokument
                        FROM
                            dokumente
                        WHERE
                            document
                        LIKE
                            '$f_name%'
                    ";
                $res = mysql_query( $sql );
                if ( $res )
                {
                    if ( mysql_num_rows($res) )
                    {
                        $row = mysql_fetch_assoc( $res );
                        $dokument = substr( $row["dokument"], 0, strlen($row["dokument"]) - 4 );
                        $dokument = explode( "_", $dokument );
                        $ln = $dokument[count( $dokument ) - 1];
                        $ln++;
                    }
                    else
                    {
                        $ln = 1;
                    }
                }
                else
                {
                    $ln = 1;
                    die( mysql_error() );
                }
            }
            return $ln;
        }
        //Page header
        function Header()
        {
            global $site, $r_nr, $shops_ID, $Einzug;

            if ( file_exists("includes/rechnung/header_" . $site . "_" . $shops_ID .
                ".inc.php") )
            {
                require_once ( "includes/rechnung/header_" . $site . "_" . $shops_ID .
                    ".inc.php" );
            }
            else
            {
                require_once ( "includes/rechnung/header_" . $site . ".inc.php" );
            }
        }

        //Page footer
        function Footer()
        {
            global $site, $shops_ID, $Einzug;

            if ( file_exists("includes/rechnung/footer_" . $site . "_" . $shops_ID .
                ".inc.php") )
            {
                require_once ( "includes/rechnung/footer_" . $site . "_" . $shops_ID .
                    ".inc.php" );
            }
            else
            {
                require_once ( "includes/rechnung/footer_" . $site . ".inc.php" );
            }
        }
        function NbLines( $w, $txt )
        {
            //Computes the number of lines a MultiCell of width w will take
            $cw = &$this->CurrentFont['cw'];
            if ( $w == 0 )
                $w = $this->w - $this->rMargin - $this->x;
            $wmax = ( $w - 2 * $this->cMargin ) * 1000 / $this->FontSize;
            $s = str_replace( "\r", '', $txt );
            $nb = strlen( $s );
            if ( $nb > 0 and $s[$nb - 1] == "\n" )
                $nb--;
            $sep = -1;
            $i = 0;
            $j = 0;
            $l = 0;
            $nl = 1;
            while ( $i < $nb )
            {
                $c = $s[$i];
                if ( $c == "\n" )
                {
                    $i++;
                    $sep = -1;
                    $j = $i;
                    $l = 0;
                    $nl++;
                    continue;
                }
                if ( $c == ' ' )
                    $sep = $i;
                $l += $cw[$c];
                if ( $l > $wmax )
                {
                    if ( $sep == -1 )
                    {
                        if ( $i == $j )
                            $i++;
                    }
                    else
                        $i = $sep + 1;
                    $sep = -1;
                    $j = $i;
                    $l = 0;
                    $nl++;
                }
                else
                    $i++;
            }
            return $nl;
        }
    }

    if ( !$b_id )
    {
        if ( $_GET["b_id"] )
        {
            $b_id = ( int )$_GET["b_id"];
        } elseif ( $_POST["b_id"] )
        {
            $b_id = ( int )$_POST["b_id"];
        }
        else
        {
            die( "Keine Bestellung angegeben!" );
        }
    }

    // Standard-Zahlungsziel? START
    if ( isset($web_rechte["logins"]["admin"]["zahlungsziel"]) )
    {
        // alle Zahlungsziele holen
        $sql = "select 
                    *
                from
                    zahlungsziele 
                order by 
                    name
                ";

        
        if ( $q = mysql_query($sql) )
        {
            while ( $r = mysql_fetch_assoc($q) )
            {
                $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
                
                $skonto1 = $r['skonto1'];
                $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
                if($skonto1>0) {
                    $skontobetrag1 = money_format($summe_b['total'] - ($summe_b['total'] * ($skonto1/100) ),2);
                }

                $skonto2 = $r['skonto2'];
                $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
                if($skonto2>0) {
                    $skontobetrag2 = money_format($summe_b['total'] - ($summe_b['total'] * ($skonto2/100) ),2);
                }
                
                
                
                @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
                $r["rechnungsbaustein_int"] = $rechnungsbaustein_int;
                $zziele[] = $r;
            }
        }
        $GLOBALS["ui"]->assign( "zziele", $zziele );

        // gibt es für den User ein Zahlungsziel?
        $sql = "select
                    l.zahlungsziele_id
                    
                from
                    Bestellung b,
                    Logins l
                where 
                    b.Login = l.ID
                and
                    b.ID = " . $b_id . "
        ";
        if ( $q = mysql_query($sql) )
        {
            if ( $r = mysql_fetch_assoc($q) )
            {
                $GLOBALS["ui"]->assign( "zID", $r['zahlungsziele_id'] );
            }
        }

        $GLOBALS["ui"]->assign( "zahlungsziel", "true" );
        $show_prepage++;
    }

    // Standard-Zahlungsziel? ENDE

    // Rechnungsbausteine?
    if ( (isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"]) and
        (!$_POST['action'])) or (isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung']) and
        (!$_POST['action'])) )
    {

        $bausteinIDs = explode( ";", $web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"] );
        $where_part = implode( " OR ID=", $bausteinIDs );
        // gibt es das Feld bestellart_id?
        $wcl = "";
        $result = mysql_query( "SHOW COLUMNS FROM web_settings" );
        if ( !$result )
        {
            echo 'Abfrage konnte nicht ausgeführt werden: ' . mysql_error();
            //exit;
        }

        if ( mysql_num_rows($result) > 0 )
        {
            while ( $row = mysql_fetch_assoc($result) )
            {
                if ( is_array($row) )
                {
                    foreach ( $row as $key => $value )
                    {
                        if ( $value == "bestellart_id" )
                        {
                            $wcl .= " AND bestellart_id = " . $bestellart_id . " ";
                        }
                        if ( $value == "shops_ID" )
                        {
                            $wcl .= " AND shops_ID = " . $shops_ID . " ";
                        }
                    }
                }
            }
        }

        // die Texte zu den Bausteinen ermitteln
        $sql = "SELECT 
                    *
                FROM 
                    web_settings
                WHERE 
                    ID=" . $where_part . "
                    " . $wcl . "
                ORDER BY 
                    Rang";

        if ( $q = mysql_query($sql) )
        {
            $row_b["kk_info"]=unserialize($row_b["kk_info"]);
            while ( $r = mysql_fetch_assoc($q) )
            {
                $billsafesumme = $row_b["gesamtsumme_buffer"];
                
                $billsafetxn = $row_b["kk_info"]["code"];
                $billsafedate = date("d.m.Y",strtotime("14 days")); 
                @eval( "\$rbaustein_int=\"" . addslashes($r['Inhalt']) . "\";" );
                
                $bausteine[$r['ID']] = $rbaustein_int;
            }
        }
        $GLOBALS["ui"]->assign( "b_id", $b_id );
        $GLOBALS["ui"]->assign( "bausteine", $bausteine );


        // ME: Bestandsminderung? Muss in Kombination mit Rechnungsbausteinen eingebaut werden, damit dasselbe Template genutzt werden kann!
        if ( isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung']) )
        {
            $GLOBALS["ui"]->assign( "minderungsunterdrueckung", true );

        }

        $show_prepage++;
        $GLOBALS["ui"]->assign( "rechnungsbausteine", true );

    }
    
    // ME: START Soll 'Rechnung bezahlt' auf der Vorschaltseite angezeigt werden?
    if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
        if ( isset($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
            $show_prepage++;
            $GLOBALS["ui"]->assign("show_rechnung_bezahlt",1);
            if(strstr($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"],";")) {
                $bezahlt_values = explode(";", $user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]);    
            } else {
                $bezahlt_values = trim( $user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"] );
            }
            
            // den bezahlstatus der Bestellung holen
            $sql = "select bezahlt from Bestellung where ID=$b_id";
            $q = mysql_query($sql);
            if($r=mysql_fetch_assoc($q)) {
                $GLOBALS["ui"]->assign("bezahlt", $r['bezahlt']);
                $GLOBALS["ui"]->assign("bestellung_bezahlt", $r['bezahlt']);
            }
            
            // die aktuelle Versandart zur Bestellung holen
            $sql = "SELECT
                        a.*,
                        ab.*,
                        z.interner_name
                    FROM
                        artikel_to_Bestellung ab,
                        artikel a,
                        zahlungsarten z
                    WHERE
                        ab.Bestellung=$b_id
                    AND
                        ab. `status` != 'storniert'
                    AND
                        a.Father=-3
                    AND 
                        a.ID = ab.artikel
                    AND
                        a.short_line_1 = z.interner_name
            ";

            if($q=mysql_query($sql)) {
                while($r=mysql_fetch_assoc($q)) {
                    // Prüfen, ob für die Versandart der interne Name (zahlungsarten) übereinstimmt
                    if(is_array($bezahlt_values)) {
                        foreach($bezahlt_values as $key => $val) {
                            if(stristr($r['interner_name'],$val)) {
                                $GLOBALS["ui"]->assign("bezahlt", 1);
                                $GLOBALS["ui"]->assign( "rechnung_bezahlt", "Rechnung bezahlt (".$val.")" );                    
                            }
                        }
                    } else { 
                        if(stristr($bezahlt_values,$r['interner_name'])) {
                            $GLOBALS["ui"]->assign("bezahlt", 1);
                            $GLOBALS["ui"]->assign( "rechnung_bezahlt", "Rechnung bezahlt (".$bezahlt_values.")" );                    
                        }
                    }                    
                }
            }
            $GLOBALS["ui"]->assign( "bezahlt_values", $bezahlt_values );
        }
    }
    // ME: ENDE Soll 'Rechnung bezahlt' auf der Vorschaltseite angezeigt werden?


    
    // ggf. wird die Vorschaltseite ausgegeben
    if ( $show_prepage > 0 and !$_POST['action'] )
    {
        $GLOBALS["ui"]->display( "rechnung_prepage.tpl" );
    }

    if ( ($show_prepage == 0) or ($_POST['action'] == "genPDF") )
    {

        //Instanciation of inherited class
        $showLieferadresse = 0;
        $pdf = new PDF();
        if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"]) )
        {
            $Status = false;
            $Nummernkreis = false;
            $Speichern = false;

            $daten = explode( ";", $web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"] );


            $id = array_search( "Status", $daten );
            if ( $id !== false )
            {
                $Status = true;
            }
            $id = array_search( "Nummernkreis", $daten );
            if ( $id !== false )
            {
                $Nummernkreis = true;
                if ( !isset($anz_stellen) )
                {
                    $anz_stellen = 5;
                }
                $r_nr = sprintf( "%0" . $anz_stellen . "d", $pdf->generate_LN($b_id, "R", true) );
                if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"]) )
                {
                    $sql = "SELECT
                            re_short
                        FROM
                            shops
                        WHERE
                            id=$shops_ID
                    ";
                    $res = mysql_query( $sql );
                    $row = mysql_fetch_assoc( $res );
                    $r_nr = $row["re_short"] . $r_nr;
                }
                $r_nr = date( "y" ) . $r_nr;
                $fName = "R" . $r_nr . ".pdf";
            }
            else
            {
                $date = date( "Y-m-d" );
                $ln = $pdf->generate_LN( $b_id, "L", false );
                if ( !isset($anz_stellen) )
                {
                    $anz_stellen = 5;
                }
                $r_nr = sprintf( "%0" . $anz_stellen . "d", $ln );
                $fName = "R_" . $b_id . "_" . $date . "_" . $r_nr . ".pdf";
            }
            $id = array_search( "Speichern", $daten );
            if ( $id !== false )
            {
                $Speichern = true;
            }
        }

        $pdf->setSubject( "Rechnung" );
        
        $pdf->setAuthor( $haendler_name );
        $pdf->setCreator( "fpdf PHP Library" );
        $pdf->AliasNbPages();
        $pdf->AddPage();
        $pdf->setY( 45 );
        $pdf->setFont( 'Arial', '', 8 );
        $pdf->SetX( $Einzug );
        $pdf->cell( 80, 4, $umschlag, "B", 1, "L" );
        $pdf->setFont( 'Arial', '', 10 );
        $pdf->ln( 5 );
        $pdf->setX( 20 );
        $pdf->SetX( $Einzug );
        if ( !$firma )
        {
            $pdf->setX( 20 );
            $pdf->cell( 80, 4, $anrede, 0, 1, "L" );
            $pdf->setX( 20 );
            $pdf->cell( 80, 4, $name, 0, 1, "L" );
        }
        else
        {
            $pdf->setX( 20 );
            $pdf->cell( 80, 4, $firma, 0, 1, "L" );
            $pdf->setX( 20 );
            $pdf->cell( 80, 4, $anrede . " " . $name, 0, 1, "L" );
        }
        $pdf->setX( 20 );
        $pdf->cell( 80, 4, $str, 0, 1, "L" );
        $pdf->setX( 20 );
        if ( $iso_land == "DE" or $iso_land == "DEU" )
        {
            $pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );
        }
        else
        {
            if ( strlen($iso_land) > 0 )
            {
                $pdf->cell( 80, 4, "$iso_land - $plz $ort", 0, 1, "L" );
            }
            else
            {
                $pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );
            }
        }

        if ( $Infozeile != 'on' )
        {
            $pdf->setY( 80 );
            if ( $bestellnummer_drucken === true )
            {
                $nr_text = "Best.Nr.";
                $nr = $row_b["ID"];
            }
            else
            {
                $nr_text = "Kunden Nr.:";
                $nr = $row_l["ID"];
            }
            $pdf->cell( 150, 4, $nr_text, 0, 0, "R" );
            $pdf->cell( 0, 4, $nr, 0, 1, "R" );
            $pdf->cell( 150, 4, "Bearbeiter:", 0, 0, "R" );
            $pdf->cell( 0, 4, $b_name, 0, 1, "R" );
            $pdf->cell( 150, 4, "USt-IdNr.:", 0, 0, "R" );
            $pdf->cell( 0, 4, $haendler_ust_id, 0, 1, "R" );

    
            // Ausgabe Leistungsdatum
            if ( LEISTUNGS_DATUM == true )
            {
                if($_POST['leistungsdatum']) {
                    $pdf->cell( 150, 4, "Leistungsdatum:", 0, 0, "R" );
                    $pdf->cell( 0, 4, $_POST['leistungsdatum'], 0, 1, "R" );
                }else{
                    $pdf->cell( 150, 4, "Leistungsdatum:", 0, 0, "R" );
                    $pdf->cell( 0, 4, $dat["Datum"], 0, 1, "R" );
                }
            }  else
            {
                $pdf->cell( 150, 4, "Datum:", 0, 0, "R" );
                $pdf->cell( 0, 4, date("d.m.Y"), 0, 1, "R" );
            }
            
            // Ausgabe Rechnungsdatum
            if($_POST['rechnungsdatum']) {
                $pdf->cell( 150, 4, "Rechnungsdatum:", 0, 0, "R" );
                $pdf->cell( 0, 4, $_POST['rechnungsdatum'], 0, 1, "R" );
            }else{
                $pdf->cell( 150, 4, "Rechnungsdatum:", 0, 0, "R" );
                $pdf->cell( 0, 4, date("d.m.Y"), 0, 1, "R" );
            }
        }

        // Lieferadresse auf Rechnung ausdrucken?
        if ( (isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnung"]) and (isset
            ($web_rechte["Warenwirtschaft"]["bestellung"]["lieferadresse_auf_rechnung"]) and
            ($row_b['liefer_Strasse']))) )
        {
            $pdf->setY( 50 );
            $pdf->setX( 135 );
            $pdf->setFont( 'Arial', 'B', 8 );
            $pdf->cell( 145, 4, "Lieferadresse:", 0, 2, "L" );
            $pdf->setFont( 'Arial', '', 8 );
            if ( $row_b['liefer_Firma'] )
                $pdf->cell( 145, 4, $row_b['liefer_Firma'], 0, 2, "L" );
            if ( $row_b['liefer_Name'] )
                $pdf->cell( 145, 4, $row_b['liefer_Name'], 0, 2, "L" );
            if ( $row_b['liefer_Strasse'] )
                $pdf->cell( 145, 4, $row_b['liefer_Strasse'] . " " . $row_b['liefer_Str_Nr'],
                    0, 2, "L" );
            if ( $row_b['liefer_Ort'] )
                $pdf->cell( 145, 4, $row_b['liefer_PLZ'] . " " . $row_b['liefer_Ort'], 0, 2,
                    "L" );
            if ( $row_b['liefer_Land'] )
                $pdf->cell( 145, 4, $row_b['liefer_Land'], 0, 2, "L" );
        }

        $pdf->ln( 10 );
        $pdf->SetFont( 'Arial', 'B', 14 );
        
        if ( !$Rechungsueberschrift )
        {
            $pdf->cell( 0, 4, $REName, 0, 1, "C" );
        }
        else
        {
            $fill = "cell( 0, 4, \'Rechnung\' , 0, 1, \'L\' )";
            $pdf->$fill;
        }
        $pdf->ln( 5 );
        $pdf->SetFont( 'Arial', 'B', 9 );


        $sql = "SELECT
                ab.*
            FROM
                artikel_to_Bestellung ab 
            LEFT OUTER JOIN
                artikel a
            ON
                a.ID=ab.artikel 
            WHERE
                Bestellung=$b_id
            AND
                ab. `status` != 'storniert'
        ";
        if ( $Status )
        {
            $sql .= " AND rechnungStatus = 'schreiben'";
        }
        //$sql .= " ORDER BY Rang, Bezeichnung ";
        if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["artikel_sortieren"]) )
        {
            $sql .= "
                ORDER BY
                    ab.Rang,
                    Father desc,
                    a.kennung
            ";
        }
        else
        {
            $sql .= "
                ORDER BY
                    Father desc,
                    a.kennung
            ";
        }

        $res = mysql_query_logged( $sql );


        $summe_n = array();
        $summe_b = array();
        $preis_n = 0;
        $g_preis = 0;
        $g_preis_n = 0;
        $pos = 1;
        $mwst_arr = array( 0 => 19, 1 => 7, null => 19 );


        // Lieferadresse ausgeben
        if ( $Lieferadresse == "on" )
        {
            if ( $row_b['liefer_Strasse'] )
            {
                $x_tmp = $pdf->GetX();
                $y_tmp = $pdf->GetY();

                $lanr = "";
                if ( $row_b['liefer_Anrede'] )
                {
                    $lanr = $row_b['liefer_Anrede'] . " ";
                }

                $pdf->SetFont( 'Arial', '', 9 );
                $pdf->SetY( 10 );
                $pdf->SetX( $Einzug + 5 );
                $pdf->cell( 0, 3, 'Lieferanschrift:', 0, 2, 'L' );
                $pdf->Cell( 0, 3, $row_b['liefer_Firma'], 0, 2, 'L' );
                $pdf->cell( 0, 3, $lanr . $row_b['liefer_Name'], 0, 2, 'L' );
                $pdf->cell( 0, 3, $row_b['liefer_Strasse'] . " " . $row_b['liefer_Str_Nr'],
                    0, 2, 'L' );
                $pdf->cell( 0, 3, $row_b['liefer_PLZ'] . " " . $row_b['liefer_Ort'], 0, 2,
                    'L' );
                $pdf->cell( 0, 3, $row_b['liefer_Land'], 0, 2, 'L' );
                $pdf->SetFont( 'Arial', '', 10 );
                $pdf->SetX( $x_tmp );
                $pdf->SetY( $y_tmp );
            }
        }
        //Zusatzkopf

        if ( $Infozeile == 'on' )
        {
            if ( $bestellnummer_drucken === true )
            {
                $nr_text = "Best.Nr.";
                $nr = $row_b["ID"];
            }
            else
            {
                $nr_text = "Kunden Nr.:";
                $nr = $row_l["ID"];
            }
            $pdf->Ln( 15 );
            $pdf->SetX( $Einzug );
            $pdf->setFillColor( 204 );
            if($gutschrift==1) {
                $pdf->cell( 25, 4, "Gutschrift Nr.", "LTR", 0, "C", 1 );    
            }else{
                $pdf->cell( 25, 4, "Rechnungs Nr.", "LTR", 0, "C", 1 );
            }
            
            $pdf->cell( 20, 4, $nr_text, "LTR", 0, "C", 1 );
            $pdf->cell( 65, 4, "Bearbeiter", "LTR", 0, "C", 1 );
            if ( LEISTUNGS_DATUM == true )
            {
                $pdf->cell( 35, 4, "Leistungsdatum", "LTR", 0, "C", 1 );
            }
            else
            {
                $pdf->cell( 35, 4, "Datum", "LTR", 0, "C", 1 );
            }
            $pdf->cell( 0, 4, "Seite", "LTR", 1, "C", 1 );

            $pdf->setFillColor( 255 );
            $pdf->SetX( $Einzug );
            $pdf->cell( 25, 4, "$r_nr", "LBR", 0, "C", 1 );
            $pdf->cell( 20, 4, $nr, "LBR", 0, "C", 1 );
            $pdf->cell( 65, 4, "$b_name", "LBR", 0, "C", 1 );
            if ( LEISTUNGS_DATUM == true )
            {
                $pdf->cell( 35, 4, $dat["Datum"], "LBR", 0, "C", 1 );
            }
            else
            {
                $pdf->cell( 35, 4, date('d.m.Y'), "LBR", 0, "C", 1 );
            }
            $pdf->cell( 0, 4, $pdf->PageNo(), "LBR", 1, "C", 1 );
        }
        $pdf->setFillColor( 204 );
        $pdf->SetX( $Einzug );
        $pdf->cell( 10, 4, "$Pos_text", "LTR", 0, "C", 1 );
        $pdf->cell( 15, 4, "$Menge_text", "LTR", 0, "C", 1 );
        $pdf->cell( 20, 4, "$Kennung_text", "LTR", 0, "C", 1 );
        $pdf->cell( 100, 4, "$Text_text", "LTR", 0, "C", 1 );
        $pdf->cell( 20, 4, "$Einzelpreis_text", "LTR", 0, "C", 1 );
        $pdf->cell( 0, 4, "$Gesamtpreis_text", "LTR", 1, "C", 1 );
        $pdf->SetX( $Einzug );
        $pdf->cell( 10, 4, "", "LBR", 0, "C", 1 );
        $pdf->cell( 15, 4, "", "LBR", 0, "C", 1 );
        $pdf->cell( 20, 4, "", "LBR", 0, "C", 1 );
        $pdf->cell( 100, 4, "", "LBR", 0, "C", 1 );
        $pdf->cell( 20, 4, "€", "LBR", 0, "C", 1 );
        $pdf->cell( 0, 4, "€", "LBR", 1, "C", 1 );
        $pdf->setFillColor( 255 );

        $pdf->SetFont( 'Arial', '', 9 );


        while ( $row = mysql_fetch_assoc($res) )
        {
            $pdf->SetX( $Einzug );
            $menge = $row["Menge"];
            $zahlart = $row['zahlart'];
            $e_preis = $row["Preis_pro_Stueck"];
            $a_name = $row["Bezeichnung"];
            if ( $row["artikel"] != "0" )
            {

                $sql_a = "SELECT 
                        * 
                    FROM 
                        " . artikelDatabase( $row_b["shops_ID"] ) . " 
                    WHERE 
                        ID=" . $row["artikel"] . "
                ";

                $res_a = mysql_query( $sql_a );
                $row_a = mysql_fetch_assoc( $res_a );
                if ( !$a_name )
                {
                    $a_name = html_entity_decode( $row_a["kurzbezeichnung"] );
                }
                $kennung = $row_a["kennung"];
                $mwst = ( $row["mwst"] != "0.00" && !empty($row["mwst"]) ) ? $row["mwst"] :
                    $mwst_arr[$row_a["tax1"]];
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );

                // ME: Wenn in der Bestellung ein Rang angegeben ist,
                // wird dieser statt der laufenden Nummer als Pos ausgegeben
                /*
                if ( $row['Rang'] > 0 )
                {
                    $pos = $row['Rang'];
                }*/

                if ( $showBruttoPreis == 1 )
                {
                    $preis_n = $e_preis;
                }

                if ( $row_a["Father"] == -3 )
                {
                    continue;
                    /*    $versandname = $row["Bezeichnung"];
                    $pos = "";
                    $menge = "";
                    $g_preis = $e_preis;
                    $g_preis_n = $preis_n;*/
                }
                else
                {
                    // ME: Bestandsmehrung oder auch nicht bei Gutschriften
                    if (
                        (isset($web_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) and
                        (isset($user_rechte["Warenwirtschaft"]["bestellung"]["gutschriftoption"])) )
                    {
                        if(isset( $_POST['gutschrift'])) {
                            if(!isset($_POST['keine_bestandsaenderung'])) {
                                $buchungstext = 'Buchung durchgeführt durch Gutschrift ' . $r_nr . ' am ' .
                                date( 'd.m.Y', time() );
                                setBuchungFromBestellung( $_GET['b_id'], $buchungstext, $row_a['ID'], $menge );
                            }
                        }
                    }
                    
                    /**
                     *  Bestandsminderung:
                     *  
                     *  Ist das Webrecht: $web_rechte['Warenwirtschaft']['lagerwirtschaft']['bestandsminderung'] gleich "Rechnung",
                     *  so wird in der Rechnungserstellung (rechnung.php) die Bestandsminderung durchgeführt.
                     * 
                     *  Folgende Punkte werden hierfür durchgeführt:
                     *         1. Eine neue Buchung wird in der Tabelle "buchungen" erzeugt.
                     *        2. Die zur Buchung gehörenden Lagerbewegungen, werden in die Tabelle "lagerbewegungen" eingetragen.
                     * 
                     */

                    if ( ($row_a['Father'] > 0) and ($web_rechte['Warenwirtschaft']['lagerwirtschaft']['bestandsminderung'] ==
                        'Rechnung') )
                    {


                        if ( (isset($web_rechte['Warenwirtschaft']['lagerwirtschaft']['minderungsunterdrueckung'])) )
                        {
                            $minderung = 1;


                            if ( is_array($_POST["baustein"]) )
                            {
                                foreach ( $_POST['baustein'] as $key => $val )
                                {
                                    if (    stristr($val, "keine Bestandsminderung")
                                        )
                                    {
                                        $minderung = 0;
                                    }
                                }
                            }
                            if( isset($_POST['keine_bestandsaenderung']) or
                                isset($_POST['gutschrift'])){
                                $minderung = 0;
                            }

                            if ( $minderung == 1 )
                            {

                                $buchungstext = 'Buchung durchgeführt durch Rechnung ' . $r_nr . ' am ' .
                                    date( 'd.m.Y', time() );
                                setBuchungFromBestellung( $_GET['b_id'], $buchungstext, $row_a['ID'], $menge*-1 );
                            }
                        }
                        
                    }


                    $g_preis = $e_preis * $menge;
                    $g_preis_n = $preis_n * $menge;
                }
            }
            else
            {
                $mwst = 19;
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
                $g_preis = $e_preis * $menge;
                $g_preis_n = $preis_n * $menge;
                $kennung = "";
                $a_name = $row["Bezeichnung"];
            }
            $summe_b[$mwst] += $g_preis;
            $summe_n[$mwst] += $g_preis_n;
            $h = $pdf->NbLines( 100, $a_name );
            $h = 5 * $h;
            
            $x = $pdf->GetX();
            $y = $pdf->GetY();


            $pdf->Multicell( 10, $h, $pos, 1, "C" );
            $pdf->SetXY( $x + 10, $y );
            $x = $pdf->GetX();
            $y = $pdf->GetY();


            $pdf->Multicell( 15, $h, (is_numeric($pos)) ? str_replace(",00", "",
                number_format($menge, 2, ',', '.')) : "", 1, "R" );
            $pdf->SetXY( $x + 15, $y );
            $x = $pdf->GetX();
            $y = $pdf->GetY();


            $pdf->Multicell( 20, $h, $kennung, 1, "C" );
            $pdf->SetXY( $x + 20, $y );
            $x = $pdf->GetX();
            $y = $pdf->GetY();

            $pdf->Multicell( 100, 5, $a_name, 1, "L" );
            $pdf->SetXY( $x + 100, $y );
            $x = $pdf->GetX();
            $y = $pdf->GetY();

            if ( $showBruttoPreis == 1 )
            {
                $pdf->Multicell( 20, $h, number_format($preis_n, 2, ',', '.'), 1, "R" );
            }
            else
            {
                $pdf->Multicell( 20, $h, number_format($preis_n, 3, ',', '.'), 1, "R" );
            }


            $pdf->SetXY( $x + 20, $y );


            $pdf->Multicell( 0, $h, number_format($g_preis_n, 2, ',', '.'), 1, "R" );
            //$pdf->ln( 4 );
            if ( $Status )
            {
                $sql_s =
                    "UPDATE artikel_to_Bestellung SET rechnungStatus='geschrieben' WHERE ID=" .
                    $row["ID"];
                mysql_query_logged( $sql_s ) or die( mysql_errno() . ": " . mysql_error() );
            }
            $pos++;
        }
        
        // ME: Prüfen, ob die Tabelle zahlungsarten existiert
        $select_z = "";
        $from_z = "";
        $where_z = "";
        if(table_exists('zahlungsarten',$webs["datenbank"])=="true") {
            $zahlungsarten = 1;
            $select_z = ",z.id as zahlungsart_id";
            $from_z = ", zahlungsarten z";
            $where_z = " and z.interner_name = a.short_line_1";
        }
        $sql = "
            SELECT 
                ab.*,
                a.short_line_1 as zahlart
                ".$select_z."
            FROM 
                artikel_to_Bestellung ab,
                " . artikelDatabase( $row_b["shops_ID"] ) . " a
                ".$from_z."
            WHERE 
                Bestellung=$b_id 
            AND 
                ab.status!='storniert'
            AND
                a.ID=ab.artikel
            AND
                a.Father=-3
            ".$where_z."
            ORDER BY 
                Rang, 
                Bezeichnung
        ";
        
        $res = mysql_query_logged( $sql ) or mail( "niewerth@weban.de",
            "Fehler in createMailOrderText.php", mysql_errno() . ": " . mysql_error() .
            "<hr>$query<hr>",
            "from: cms_Warenwirtschaft_rechung.php select artikel_to_Bestellung" );

        if ( mysql_num_rows($res) )
        {
            $row = mysql_fetch_assoc( $res );
            $menge = $row["Menge"];
            $e_preis = $row["Preis_pro_Stueck"];
            if($zahlungsarten==1) {
                $zahlungsart_id = $row['zahlungsart_id'];
            }
            
            if ( $row["artikel"] != 999999 )
            {
                $sql_a = "SELECT 
                        * 
                    FROM 
                        " . artikelDatabase( $row_b["shops_ID"] ) . " 
                    WHERE 
                        ID=" . $row["artikel"] . "
                ";
                $res_a = mysql_query( $sql_a ) or die( mysql_errno() . ": " . mysql_error() );
                if ( !$res_a )
                {
                    echo mysql_error() . "<br>$sql_a";
                    var_dump( $row );
                }
                $row_a = mysql_fetch_assoc( $res_a );
                $kennung = $row_a["kennung"];
                $mwst = ( $row["mwst"] != "0.00" && !empty($row["mwst"]) ) ? $row["mwst"] :
                    $mwst_arr[$row_a["tax1"]];

                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );

                if ( $showBruttoPreis == 1 )
                {
                    $preis_n = $e_preis;
                }
                if ( $row_a["Father"] == -3 )
                {
                    $versandname = $row["Bezeichnung"];
                    $pos = "";
                    $menge = "";
                    $g_preis = $e_preis;
                    $g_preis_n = $preis_n;
                }
                else
                {


                    $g_preis = $e_preis * $menge;
                    $g_preis_n = $preis_n * $menge;
                }
            }
            else
            {
                $mwst = 19;
                $preis_n = $e_preis - ( $e_preis * $mwst / (100 + $mwst) );
                $g_preis = $e_preis * $menge;
                $g_preis_n = $preis_n * $menge;
                $kennung = "";
            }
            $summe_b[$mwst] += $g_preis;
            $summe_n[$mwst] += $g_preis_n;
            $a_name = $row["Bezeichnung"];

            $pdf->SetX( $Einzug );
            $pdf->cell( 10, 4, $pos, 1, 0, "C" );
            $pdf->cell( 15, 4, (is_numeric($pos)) ? number_format($menge, 2, ',', '.') :
                "", 1, 0, "R" );
            $pdf->cell( 20, 4, $kennung, 1, 0, "C" );
            $pdf->cell( 100, 4, $a_name, 1, 0, "L", 0, "", 0, 0 );
            if ( $showBruttoPreis == 1 )
            {
                $pdf->cell( 20, 4, number_format($preis_n, 2, ',', '.'), 1, 0, "R" );
            }
            else
            {
                $pdf->cell( 20, 4, number_format($preis_n, 3, ',', '.'), 1, 0, "R" );
            }

            $pdf->cell( 0, 4, number_format($g_preis_n, 2, ',', '.'), 1, 0, "R" );
            $pdf->ln( 4 );
            $pos++;
        }

        foreach ( $summe_n as $mwst => $betrag )
        {
            $summe_n["total"] += $betrag;
        }
        foreach ( $summe_b as $mwst => $betrag )
        {
            $summe_b["total"] += $betrag;
        }
        $pdf->SetX( $Einzug );
        if ( $showBruttoPreis == 1 )
        {
            $pdf->cell( 165, 4, "Gesamt Brutto", 1, 0, "L" );
            $pdf->cell( 0, 4, number_format($summe_b["total"], 2, ',', '.'), 1, 1, "R" );
        }
        else
        {
            $pdf->cell( 165, 4, "Gesamt Netto", 1, 0, "L" );
            $pdf->cell( 0, 4, number_format($summe_n["total"], 2, ',', '.'), 1, 1, "R" );
        }

        $pdf->SetX( $Einzug );
        // Mehrwertsteuer Ausgabe bei Bruttoberechnung
        if ( $showBruttoPreis == 1 )
        {
            foreach ( $summe_b as $mwst => $betrag )
            {
                if ( $mwst != "total" )
                {
                    if ( $mwst_befreiung == 'on' )
                    {
                        $mwst = 0.00;
                    }

                    if ( $showBruttoPreis == 1 )
                    {
                        $pdf->cell( 165, 4, "inkl. $mwst % MwSt. in " . number_format($betrag, 2,
                            ',', '.') . " €", "LBT", 0, "L" );
                    }


                    $pdf->cell( 0, 4, number_format($betrag * $mwst / (100 + $mwst), 2, ',', '.'),
                        1, 1, "R" );


                    define( 'MWST', $mwst );
                }
            }

        }
        else
        {


            // Mehrwertsteuer Ausgabe bei Nettoberechnung
            foreach ( $summe_n as $mwst => $betrag )
            {
                if ( $mwst != "total" )
                {
                    if ( $mwst_befreiung == 'on' )
                    {
                        $mwst = 0.00;
                    }

                    $pdf->cell( 165, 4, "zzgl. $mwst % MwSt. auf " . number_format($betrag, 2,
                        ',', '.') . " €", "LBT", 0, "L" );

                    $pdf->cell( 0, 4, number_format($betrag * $mwst / 100, 2, ',', '.'), 1, 1,
                        "R" );

                    define( 'MWST', $mwst );
                }
            }
        }
        $pdf->setFont( 'Arial', 'B', 12 );
        $pdf->SetX( $Einzug );
        // Ist Summe-Brutto kleiner als 0, wird der 'Gesamtbetrag' umbenannt in 'Gutschriftsbetrag'
        if ( $summe_b["total"] < 0 )
        {
            $pdf->cell( 165, 8, "Gutschriftsbetrag", "LBR", 0, "L" );
        }
        else
        {
            $pdf->cell( 165, 8, "Gesamtbetrag", "LBR", 0, "L" );
        }

        // Wenn die MwSt-Befreiung gesetzt ist, gebe als Gesamtbetrag die Summe als Netto aus, ansonsten mit Brutto
        $pdf->SetX( $Einzug );
        if ( $mwst_befreiung == 'on' )
        {
            $pdf->cell( 0, 8, number_format($summe_n["total"], 2, ',', '.'), "LBR", 1,
                "R" );
        }
        else
        {
            $pdf->cell( 0, 8, number_format($summe_b["total"], 2, ',', '.'), "LBR", 1,
                "R" );
        }

        $pdf->SetX( $Einzug );
        $pdf->cell( 0, 8, "", "T", 1 );
        $pdf->setFont( 'Arial', '', 9.5 );

        if ( $row_b["Bemerkung_extern"] && BEMERKUNG2_DRUCKEN )
        {

            // externe Bemerkung
            $pdf->SetX( $Einzug );
            $pdf->multiCell( 35, 4, "", 0, 0, "L" );
            $pdf->setFont( 'Arial', 'B', 9.5 );
            $pdf->SetX( $Einzug );
            $pdf->multiCell( 0, 4, $row_b["Bemerkung_extern"], 0, 1, "L" );
            $pdf->SetX( $Einzug );
            $pdf->multiCell( 0, 4, " ", 0, 1, "L" );
            $pdf->setFont( 'Arial', '', 9.5 );
        }

        // MwSt.-Befreiung Zusatztext
        $pdf->SetX( $Einzug );
        if ( $mwst_befreiung == 'on' )
        {
            $pdf->setFont( 'Arial', 'B', 10 );

            // Wenn das Land 'Deutschland' oder Leer ist, dann gebe speziellen Text aus
            if ( $row_l['Land'] == 'Deutschland' || empty($row_l['Land']) )
            {
                $pdf->multiCell( 0, 4, "Deutschland nach §4", "", 1 );
            }
            else
            {
                // Wenn UST.IdNr. gesetzt ist   => EU-Inland
                // Wenn nicht gesetzt ist       => EU-Ausland
                if ( $ustid_nr )
                {
                    $pdf->multiCell( 0, 4,
                        "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",
                        "", 1 );
                }
                else
                {
                    $pdf->multiCell( 0, 4, "ACHTUNG:\n\nES HANDELT SICH UM EINE STEUERFREIE AUSLIEFERUNG IN EIN DRITTLAND GEM:.§4Nr. 1A USTG",
                        "", 1 );
                }
            }
        }

        $pdf->setFont( 'Arial', '', 9.5 );
        $pdf->SetX( $Einzug );
        if ( VERSAND_ANZEIGEN )
        {
            if($gutschrift==1) {
                $pdf->multiCell( 0, 4, "\r\nGutschrift", 0, 1,
                "L" );
            }else{
                $pdf->multiCell( 0, 4, "\r\nZahlung: $versandname\n$zahlungs_hinweis", 0, 1,
                "L" );    
            }
            
        }
        else
        {
            $pdf->multiCell( 0, 4, "\r\n$zahlungs_hinweis", 0, 1, "L" );
        }

        // START die Anzeige der ausgewählten Rechnungsbausteine
        $pdf->SetX( $Einzug );
        if ( ($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungsbausteine"]) and
            ($_POST['action'] == "genPDF") )
        {
            //$pdf->multiCell( 0, 4, "Bemerkung:", 0, 1, "L" );
            //$pdf->setFont( 'Arial', '', 9.5 );

            if ( is_array($_POST['baustein']) )
            {
                foreach ( $_POST['baustein'] as $kk => $vv )
                {
                    if ( $vv != "keine Bestandsminderung" )
                    {
                        $pdf->multiCell( 0, 4, $vv, 0, 1, "L" );
                        $pdf->setFont( 'Arial', '', 9.5 );
                    }
                }
            }
        }
        // ENDE die Anzeige der ausgewählten Rechnungsbausteine


        
        // ME: START Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung 
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
            if ( $_POST['action'] == "genPDF" )
            {
                if ( $_POST['zahlungsziel'] )
                {
                    $sql = "select * from zahlungsziele where id=" . $_POST['zahlungsziel'] . "";
                    if ( $q = mysql_query($sql) )
                    {
                        if ( $r = mysql_fetch_assoc($q) )
                        {
                            $zieltage = date('d.m.Y', strtotime('+'.$r['zieltage'].' days'));
                            $serArr['ziel'] = strtotime('+'.$r['zieltage'].' days');
                            
                            // SKONTO 1                        
                            if($r['skonto1']>0) {
                                $skonto1 = $r['skonto1'];
                                $serArr['skonto1'] = $skonto1;
                                $sk1 = $summe_b['total'] * ($skonto1 / 100);
                                $skontobetrag1 = number_format( $sk1 ,2,",","." );
                                $serArr['skontobetrag1'] = $sk1;                            
                            }
                            if($r['zieltageskonto1']>0) {
                                $zieltageskonto1 = date('d.m.Y', strtotime('+'.$r['zieltageskonto1'].' days'));
                                $serArr['zielskonto1'] = strtotime('+'.$r['zieltageskonto1'].' days');    
                            }


                            // SKONTO 2
                            if($r['skonto2']>0) {
                                $skonto2 = $r['skonto2'];
                                $serArr['skonto2'] = $skonto2;
                                $sk2 = $summe_b['total'] * ($skonto2 / 100);
                                $skontobetrag2 = number_format( $sk2 ,2,",","." );
                                $serArr['skontobetrag2'] = $sk2;                            
                            }
                            if($r['zieltageskonto2']>0) {
                                $zieltageskonto2 = date('d.m.Y', strtotime('+'.$r['zieltageskonto2'].' days'));
                                $serArr['zielskonto2'] = strtotime('+'.$r['zieltageskonto2'].' days');    
                            }


                            $serArr['bruttobetrag'] = $summe_b['total'];

                            @eval( "\$rechnungsbaustein_int=\"" . addslashes($r["rechnungsbaustein"]) . "\";" );
                            
                            $zz_text = $rechnungsbaustein_int;
                            
                        }
                    }
                }
            }
        }
        // ME: ENDE Vorbereitung der Ausgabe des Zahlungsziels auf der Rechnung
        
        // Start Anzeige des Zahlungsziels
        if ( $zz_text )
        {
            $pdf->multiCell( 0, 6, $zz_text, 0, 1, "L" );
            $pdf->setFont( 'Arial', '', 9.5 );
        }
        // Ende Anzeige des Zahlungsziels


        if ( $Speichern )
        {
            $add_flds = "";
            $rechnung_key = "";
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["rechnungslink"]) )
            {
                $add_flds = ", rechnung_key";
                $rechnung_key = uniqid( hash("sha512", $fName, true) );
            }

            $pdf->Output( $webs['verzeichnis'] . "/images/dokumente/" . $fName, "F" );

            $sql = "
                    INSERT INTO 
                        dokumente 
                    (
                        table_foreign, 
                        row_foreign, 
                        data_foreign, 
                        document, 
                        letzte_Aenderung_am,
                        letzte_Aenderung_von
                    )
                    VALUES
                    (
                        'Bestellung', 
                        'ID', 
                        $b_id, 
                        '$fName', 
                        NOW(),
                        '" . $_SERVER["PHP_AUTH_USER"] . "'
                    )                    
            ";
            mysql_query_logged( $sql ) or mail( "niewerth@weban.de",
                "Fehler in createMailOrderText.php", mysql_errno() . ": " . mysql_error() .
                "<hr>$query<hr>", "from: cms_Warenwirtschaft_rechung.php into documente" );
        }

        // Eintrag der Rechnung in das Rechnungsbuch
        if ( isset($web_rechte['Warenwirtschaft']['rechnungsbuch']['rechnungsbuch']) )
        {
            $rechnungsdaten = array();

            // Rechnungsnummer
            $rechnungsdaten['rechnungsnummer'] = $r_nr;

            // Bestellnummer
            $rechnungsdaten['bestellung'] = $b_id;

            // shop
            $rechnungsdaten['shop'] = $shops_ID;

            // kundennr
            $rechnungsdaten['kundennr'] = $row_l["ID"];

            // kunde
            $rechnungsdaten['kunde'] = $name;

            // kunde
            $rechnungsdaten['firma'] = $firma;

            // erstellt_von
            $rechnungsdaten['erstellt_von'] = $_SERVER['PHP_AUTH_USER'];

            //  mwst_19 und mwst_7
            switch ( MWST )
            {
                case '19.00':
                    $rechnungsdaten['mwst_19'] = $betrag * ( MWST / 100 );
                    $rechnungsdaten['mwst_7'] = 0.00;
                    break;

                case '7.00':
                    $rechnungsdaten['mwst_7'] = $betrag * ( MWST / 100 );
                    $rechnungsdaten['mwst_19'] = 0.00;
                    break;

                case '0.00':
                    $rechnungsdaten['mwst_7'] = 0.00;
                    $rechnungsdaten['mwst_19'] = 0.00;
                    break;
            }

            // nettobetrag
            $rechnungsdaten['nettobetrag'] = $summe_n["total"];

            // bruttobetrag
            $rechnungsdaten['bruttobetrag'] = $rechnungsdaten['nettobetrag'] + $rechnungsdaten['mwst_7'] +
                $rechnungsdaten['mwst_19'];

            // ME: Bei Gutschriften müssen die Beträge negativ sein.
            if($gutschrift==1) {
                if($rechnungsdaten['mwst_7']>0) {
                    $rechnungsdaten['mwst_7'] = $rechnungsdaten['mwst_7'] * -1;    
                }
                if($rechnungsdaten['mwst_19']>0) {
                    $rechnungsdaten['mwst_19'] = $rechnungsdaten['mwst_19'] * -1;    
                }
                if($rechnungsdaten['nettobetrag']>0) {
                    $rechnungsdaten['nettobetrag'] = $rechnungsdaten['nettobetrag'] * -1;    
                }
                if($rechnungsdaten['bruttobetrag']>0) {
                    $rechnungsdaten['bruttobetrag'] = $rechnungsdaten['bruttobetrag'] * -1;    
                }
            }
                

            // zahlart
            $rechnungsdaten['zahlart'] = $versandname;

            // Ort
            $rechnungsdaten['ort'] = $ort;

            // mwst_befreiung
            $rechnungsdaten['mwst_befreiung'] = $mwst_befreiung;

            // mwst_befreiung
            $rechnungsdaten['ustid_nr'] = $ustid_nr;

            
            // ME: Abweichendes Rechnungsdatum?
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_rechnungsdatum"]) ) {
                if($_POST['rechnungsdatum']) {
                    $rechnungsdaten['rechnungsdatum'] = human2date($_POST['rechnungsdatum']);
                }
            }
            // ME: Abweichendes Lieferdatum?
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_lieferdatum"]) ) {
                if($_POST['leistungsdatum']) {
                    $rechnungsdaten['leistungsdatum'] = human2date($_POST['leistungsdatum']);
                }
            }

            if( setRechnungsbuch( $rechnungsdaten ) ) {
            }
        }
        // Zahlungsziel in Rechnung speichern START
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["zahlungsziel"]) ) {
            if(isset( $serArr ) ) {
                if( $serArr = serialize($serArr) ) {
                    updateRechnung($serArr,$rechnungsdaten['rechnungsnummer'],$zahlungsart_id);
                }
            } 
        }
        // Zahlungsziel in Rechnung speichern ENDE

        
        // rechnung_bezahlt speichern START
        if ( isset($web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
            if ( isset($user_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnung_bezahlt"]) ) {
                if(isset( $_POST['rechnung_bezahlt'] ) ) {
                    upd_bezahlt($rechnungsdaten['rechnungsnummer'],$rechnungsdaten['bestellung']);
                }
            }
        }
        // rechnung_bezahlt speichern ENDE

        $pdf->Output();
    }


?>