Subversion-Projekte lars-tiefland.content-management

Revision

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

<?php
    // $Id: lieferschein.php 3980 2011-10-10 06:53:08Z erling $
    require_once "connect2.php";
    require_once "includes/bestellungen/system/mysql_query_logged.php";
    require_once "Weban_Smarty.class.php";
    require_once "includes/best_manu/best_manu_search.php";
    require_once "includes/lieferschein/body_$site.inc.php";
    require_once "fpdf/fpdf.php";
    require_once "includes/bestellungen/system/artikelDatabase.php";

    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!" );
        }
    }
    $sql_b = "SELECT * FROM Bestellung WHERE ID=$b_id";
    $res_b = mysql_query_logged( $sql_b );
    $row_b = mysql_fetch_assoc( $res_b );
    $shops_ID = $row_b['shops_ID'];

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

    /**
     * Funktionen der Lagerwirtschaft.
     */
    require_once '../includes/system/functions.lagerwirtschaft.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_lieferschein
                    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_lieferschein
                            (
                                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_lieferschein 
                    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;
            if ( file_exists( "includes/lieferschein/header_" . $site . "_" .
                $shops_ID . ".inc.php" ) )
            {
                require_once ( "includes/lieferschein/header_" . $site . "_" .
                    $shops_ID . ".inc.php" );
            }
            else
            {
                require_once ( "includes/lieferschein/header_" . $site .
                    ".inc.php" );
            }
        }

        //Page footer
        function Footer()
        {
            global $site, $shops_ID;
            
            if ( file_exists( "includes/lieferschein/footer_" . $site . "_" .
                $shops_ID . ".inc.php" ) )
            {
                
                require_once ( "includes/lieferschein/footer_" . $site . "_" .
                    $shops_ID . ".inc.php" );
            }
            else
            {
                require_once ( "includes/lieferschein/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;
        }
    }


    $pdf = new PDF();
    if ( !isset( $liefer_id ) )
    {
        $liefer_id = "0";
    }
    if ( isset( $web_rechte["Warenwirtschaft"]["bestellung"]["lieferschein"] ) )
    {
        $Status = false;
        $Nummernkreis = false;
        $Speichern = false;
        $Lieferadressenauswahl = false;
        //$liefer_id = -1;
        $daten = explode( ";", $web_rechte["Warenwirtschaft"]["bestellung"]["lieferschein"] );
        $id = array_search( "Lieferadressenauswahl", $daten );
        if ( $id !== false )
        {
            $Lieferadressenauswahl = true;
            if ( isset( $_GET["liefer_id"] ) && !empty( $_GET["liefer_id"] ) )
            {
                $liefer_id = $_GET["liefer_id"];
            }
        }
        if ( $liefer_id || $id === false )
        {
            $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, "L", $Nummernkreis ) );
                if ( isset( $web_rechte["Warenwirtschaft"]["rechnungsbuch"]["rechnungsnrtrennung"] ) )
                {
                    $sql = "SELECT
                            short
                        FROM
                            shops
                        WHERE
                            id=$shops_ID
                    ";
                    $res = mysql_query( $sql );
                    $row = mysql_fetch_assoc( $res );
                    $r_nr = $row["short"] . $r_nr;
                }
                $r_nr = date( "y" ) . $r_nr;
                $fName = "L" . $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 = "L_" . $b_id . "_" . $date . "_" . $r_nr . ".pdf";
            }
            $id = array_search( "Speichern", $daten );
            if ( $id !== false )
            {
                $Speichern = true;
            }
        }
    }

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


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



    if ( $row_b["liefer_Name"] && $row_b["liefer_Strasse"] && $row_b["liefer_PLZ"] &&
        $row_b["liefer_Ort"] && $row_b["liefer_Land"] )
    {
        $GLOBALS["ui"]->assign( "liefer_adresse", true );
    }



    if ( $Lieferadressenauswahl && $liefer_id == "0" )
    {
        
        $Suchfelder = array( "Name1", "Vorname", "Name2", "Strasse",
            "Hausnummer", "PLZ_Ort", "E_Mail" );
        $i = 0;
        foreach ( $Suchfelder as $Feld )
        {

            if ( isset( $user_rechte["logins"]["admin"][$Feld] ) )
            {
                if ( ( $web_rechte["logins"]["admin"][$Feld] ) )
                {
                    $suchfelder[$i]["name"] = $web_rechte["logins"]["admin"][$Feld];
                }
                else
                {
                    $suchfelder[$i]["name"] = ( $Feld == "PLZ_Ort" ) ?
                        str_replace( "_", " / ", $Feld ) : $Feld;
                }
                $suchfelder[$i]["f_name"] = $Feld;
                $i++;
            }
        }
        suchen();
        $GLOBALS["ui"]->assign( "b_id", $b_id );
        $GLOBALS["ui"]->display( "lieferschein_adresse.tpl" );
    } elseif ( !$Lieferadressenauswahl || !empty( $liefer_id ) || $liefer_id != "0" )
    {
        $pdf->setSubject( "Lieferschein" );
        $pdf->setAuthor( $haendler_name );
        $pdf->setCreator( "fpdf PHP Library" );
        $pdf->AliasNbPages();
        $pdf->AddPage();
        $pdf->setY( 45 );
        $pdf->setFont( 'Arial', '', 8 );
        $pdf->cell( 80, 4, $umschlag, "B", 1, "L" );
        $pdf->setFont( 'Arial', '', 10 );
        $sql_b = "SELECT * FROM Bestellung WHERE ID=$b_id";
        $res_b = mysql_query_logged( $sql_b );
        $row_b = mysql_fetch_assoc( $res_b );
        $b_name = $row_b["letzte_Aenderung_von"];
        $b_name = substr( $b_name, 0, strpos( $b_name, "@" ) );
        if ( $liefer_id == "-1" || is_null( $liefer_id ) )
        {
            $sql_l = "";
            $name = $row_b["liefer_Vorname"] . " " . $row_b["liefer_Name"];
            $anrede = $row_b["liefer_Anrede"];
            // ME: Anrede in der richtigen Sprache
            if ( $row_b['Language'] == "NL" )
            {
                switch ( $row_b['Anrede'] )
                {
                    case "Herr":
                        $anrede = "Heer";
                        break;
                    case "Frau":
                        $anrede = "Mevrouw";
                        break;
                    default:
                        $anrede = "Heer";
                        break;
                }
            }

            $plz = $row_b["liefer_PLZ"];
            $ort = $row_b["liefer_Ort"];
            $land = $row_b["liefer_Land"];
            $str = $row_b["liefer_Strasse"] . " " . $row_b["liefer_Str_Nr"];
            $firma = $row_b["liefer_Firma"];

        } elseif ( $liefer_id == "-2" )
        {
            $sql_l = "SELECT * FROM Logins WHERE ID=" . $row_b["Login"];
        }
        else
        {
            $sql_l = "SELECT * FROM Logins WHERE ID=" . $liefer_id;
        }
        if ( $sql_l )
        {
            
            $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"];
            $anrede = $row_l["Anrede"];
            // 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"] :
                "";
            $firma = ( isset( $row_l["Name2"] ) ) ? $row_l["Name2"] : "";
        }
        $pdf->ln( 5 );
        $pdf->setX( 20 );
        if ( !$firma )
        {
            $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 );
        $pdf->cell( 80, 4, "$plz $ort", 0, 1, "L" );
        if ( $Infozeile != 'on' )
        {
            $pdf->setY( 80 );
            $pdf->cell( 150, 4, "Kunden Nr.:", 0, 0, "R" );
            $pdf->cell( 0, 4, $row_l["ID"], 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" );
            $pdf->cell( 150, 4, "Datum:", 0, 0, "R" );
            
            // ME: ggf das geänderte Datum einsetzen
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_datum_lieferschein"]) ) {
                if($_POST['datum']) {
                    $pdf->cell( 0, 4, $_POST['datum'] , 0, 0, "R" );    
                }else{
                    $pdf->cell( 0, 4, date( "d.m.Y" ), 0, 0, "R" );
                }
            }else{
                $pdf->cell( 0, 4, date( "d.m.Y" ), 0, 0, "R" );    
            }
            
        }
        $pdf->ln( 10 );
        $pdf->SetFont( 'Arial', 'B', 14 );
        $pdf->cell( 0, 4, $REName, 0, 1, "C" );
        $pdf->ln( 5 );
        $pdf->SetFont( 'Arial', 'B', 9 );
        $sql = "SELECT * FROM artikel_to_Bestellung WHERE Bestellung=$b_id AND status!='storniert'";
        if ( $Status )
        {
            $sql .= " AND lieferscheinStatus = 'schreiben'";
        }
        $sql .= " ORDER BY Rang";
        $res = mysql_query_logged( $sql );
        $summe_n = 0;
        $summe_b = 0;
        $preis_n = 0;
        $g_preis = 0;
        $g_preis_n = 0;
        $pos = 1;
        //Zusatzkopf
        if ( $Infozeile == 'on' )
        {
            $pdf->Ln( 15 );
            $pdf->setFillColor( 204 );
            $pdf->cell( 30, 4, "Lieferschein Nr.", "LTR", 0, "C", 1 );
            $pdf->cell( 30, 4, "Kunden Nr.", "LTR", 0, "C", 1 );
            $pdf->cell( 70, 4, "Bearbeiter", "LTR", 0, "C", 1 );
            $pdf->cell( 34, 4, "Datum", "LTR", 0, "C", 1 );
            $pdf->cell( 0, 4, "Seite", "LTR", 1, "C", 1 );
            $pdf->setFillColor( 255 );
            $pdf->cell( 30, 4, "$r_nr", "LBR", 0, "C", 1 );
            $pdf->cell( 30, 4, $row_b['Login'], "LBR", 0, "C", 1 );
            $pdf->cell( 70, 4, "$b_name", "LBR", 0, "C", 1 );
            
                        // ME: ggf das geänderte Datum einsetzen
            if ( isset($web_rechte["Warenwirtschaft"]["bestellung"]["abw_datum_lieferschein"]) ) {
                if($_POST['datum']) {
                    $pdf->cell( 34, 4, $_POST['datum'] , "LBR", 0, "C", 1 );    
                }else{
                    $pdf->cell( 34, 4, date( 'd.m.Y' ), "LBR", 0, "C", 1 );
                }
            }else{
                $pdf->cell( 34, 4, date( 'd.m.Y' ), "LBR", 0, "C", 1 );    
            }


            
            $pdf->cell( 0, 4, $pdf->PageNo(), "LBR", 1, "C", 1 );
        }
        
        if ( file_exists( "includes/lieferschein/contentheader_" . $site . "_" .
                $shops_ID . ".inc.php" ) )
        {
                
            require_once ( "includes/lieferschein/contentheader_" . $site . "_" .
                    $shops_ID . ".inc.php" );
                    
        } else {
                $pdf->setFillColor( 204 );
                $pdf->cell( 10, 4, "$Pos_text", "LTR", 0, "C", 1 );
                $pdf->cell( 20, 4, "$Menge_text", "LTR", 0, "C", 1 );
                $pdf->cell( 20, 4, "$Kennung_text", "LTR", 0, "C", 1 );
                $pdf->cell( 100, 4, "$Text_text", "LTR", 1, "C", 1 );

                $pdf->cell( 10, 4, "", "LBR", 0, "C", 1 );
                $pdf->cell( 20, 4, "", "LBR", 0, "C", 1 );
                $pdf->cell( 20, 4, "", "LBR", 0, "C", 1 );
                $pdf->cell( 100, 4, "", "LBR", 1, "C", 1 );    
        }
                    
                            
        $pdf->setFillColor( 255 );
        $pdf->SetFont( 'Arial', '', 9 );

        while ( $row = mysql_fetch_assoc( $res ) )
        {
            $menge = $row["Menge"];
            $e_preis = $row["Preis_pro_Stueck"];
            $preis_n = $e_preis - ( $e_preis * 19 / 119 );
            if ( $row["artikel"] != 999999 )
            {
                $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 );
                $kennung = $row_a["kennung"];
                if ( $row_a["Father"] == -3 )
                {
                    $versandname = $row["Bezeichnung"];
                    $pos = "";
                    $menge = "";
                    $g_preis = $e_preis;
                    $g_preis_n = $preis_n;
                }
                else
                {
                    // Bestandsminderung erstmal weggelassen

                    $g_preis = $e_preis * $menge;
                    $g_preis_n = $preis_n * $menge;

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

            if ( file_exists( "includes/lieferschein/content_" . $site . "_" .
                    $shops_ID . ".inc.php" ) )
            {
                    
                include( "includes/lieferschein/content_" . $site . "_" .
                        $shops_ID . ".inc.php" );
                        
            } else {

                $pdf->MultiCell( 10, $h, $pos, 1, "C" );
                $pdf->SetXY( $x + 10, $y );
                $x = $pdf->GetX();
                $y = $pdf->GetY();
                $pdf->MultiCell( 20, $h, ( is_numeric( $pos ) ) ? number_format
                    ( $menge, 2, ',', '.' ) : "", 1, "R" );
                $pdf->SetXY( $x + 20, $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", 0 );

            }

            //$pdf->ln( 4 );
            if ( $Status )
            {
                $sql_s =
                    "UPDATE artikel_to_Bestellung SET lieferscheinStatus='geschrieben' WHERE ID=" .
                    $row["ID"];
                mysql_query_logged( $sql_s );
            }
            $pos++;
        }
        $pdf->cell( 150, 8, "", "T", 1 );
        $pdf->setFont( 'Arial', '', 9.5 );
        if ( $row_b["Bemerkung_extern"] )
        {
            // externe Bemerkung
            $pdf->multiCell( 35, 4, "externe Bemerkung: ", 0, 0, "L" );
            $pdf->setFont( 'Arial', 'B', 9.5 );
            $pdf->multiCell( 0, 4, $row_b["Bemerkung_extern"], 0, 1, "L" );
            $pdf->setFont( 'Arial', '', 9.5 );
        }
        if ( VERSAND_ANZEIGEN )
        {
            if($versandname || $zahlungs_hinweis) {
                $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" );
        }
        if ( $Speichern )
        {
            $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( $sql );
        }
        $pdf->Output();
    }
?>