fhiiqm/prozess_ed.php
author Bettina Schwarzer <schwarzer@fhi-berlin.mpg.de>
Wed, 27 Feb 2013 09:43:08 +0100
changeset 34 fc60ef80a7ad
parent 28 8d8bce56918f
child 35 679bc22e37e2
permissions -rw-r--r--
+ Telefonliste pdf: 4 Varianten + Projekte, Schritte + Arbeitssicherheit

<?php

/**
 * @author Bettina Schwarzer, Fritz-Haber-Institut
 * @copyright 03/2012
 * 
 * Prozess INSERT/UPDATE/DELETE/DUPLICATE
 */


    error_reporting(E_ALL ^ E_NOTICE);
    
    session_start();
    if (! isset($_SESSION["userid"]))
    { 
        include_once ("inc/func_lib.inc.php");	
        login($_SERVER["PHP_SELF"]);
        exit;
    }
    
    if (is_null($_SESSION["recht"]) || (!is_null($_SESSION["recht"]) && !in_array("pzr",$_SESSION["recht"]) && !in_array("pze",$_SESSION["recht"])))
    {
        header("Location: start.php");
        exit;
    }    

    $pzid  = $_GET["i"];
    $del    = $_POST["del"];
    $sub    = $_POST["eintragen"];
    $dup    = $_POST["dup"];
    if (!$dup) $dup = $_GET["d"];
    $copy   = $_GET["c"];
	$pz    = $_POST["pz"];
    $ok		= $_POST["ok"];
    if (!$pz["okn"]) $ok = false;
    $duptext="";

	include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
    include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
	$dbc = new dbconnection();
    
    $sql = "SELECT persknr FROM userweb WHERE userid ='" . $_SESSION["userid"] ."'";
    $persknr = $dbc -> querySingleItem($sql);
    
    if ($dup)
    {   // Prozess duplizieren
        $tab = "Prozess";
        $key = "proz_ID";
        $val =  $pzid;
//        $ret=1;
        $ret = duplicate_record ($tab, $key, $val);
        if ($ret)
        { 
            $pzid_new=$ret;
            // duplizieren Schritte
            $sql = "INSERT INTO Proz_Step SELECT NULL, $pzid_new, proz_step FROM Proz_Step WHERE proz_ID=$pzid ORDER BY proz_step_ID";
            $rets = $dbc -> execute($sql);
            if ($ret && $rets)
            {
                $addr = $_SERVER["PHP_SELF"] . "?i=$pzid_new&c=1";
                header("Location: $addr");
                exit;
            }
            else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";    
        }
        else $duptext = " - Fehler beim Duplizieren von '". $pz["bez"] ."'";    
    }

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">

<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
   	<link href="css/db.css" rel="STYLESHEET" type="TEXT/CSS" media="screen"/> 
   	<link href="css/db_print.css" rel="STYLESHEET" type="TEXT/CSS" media="print"/> 
<!--
    <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness/jquery-ui-1.8.16.custom.css" rel="Stylesheet" />	
    <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.6.2.min.js"></script>
    <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.16.custom.min.js"></script>
-->
    <link type="text/css" href="/fhiiqm/css/jquery/ui-lightness-1.8.21/jquery-ui-1.8.21.custom.css" rel="Stylesheet" />	
    <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="/fhiiqm/js/jquery/jquery-ui-1.8.21.custom.min.js"></script>
    
    <script type="text/javascript">
    var counter = 0;
    var limit = 99;
    var arr = new Array();
    function addInput(divId){
         if (counter == limit)  {
              alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
         }
         else {
              var newdiv = document.createElement('div');
              var opt="<option value='-1'></option>";
              var i;
              for (var key in arr)  
              {
                opt = opt.concat("<option value='",key,"'>",arr[key],"</option>\n" );
              }
              opt += "</select>\n";
              newdiv.innerHTML = "<span></span><input type='text' name='pz[step][]' size='50' maxlength='50' />";
              newdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;Status&nbsp;&nbsp;&nbsp;<select name='pz[ststat][]'>"+opt;
              newdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
              newdiv.innerHTML += "<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Bemerkung zu Schritt&nbsp;&nbsp;&nbsp;";
              newdiv.innerHTML += "<input type='text' name='pz[stbem][]' size='50' maxlength='50' />";
              document.getElementById(divId).appendChild(newdiv);
              counter++;
         }
    }
    function delInput(divId){
//          var kn = document.getElementById(divId).lastChild;
//          document.getElementById(divId).removeChild(kn);
            var kn = document.getElementById(divId); 
            while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && kn.lastChild.nodeName != "A")
            {
                //alert ("vor "+kn.lastChild.nodeName+", nodetyp = "+ kn.lastChild.nodeType);
                var knc = kn.lastChild;
                    document.getElementById(divId).removeChild(knc);
            }
            if (kn.lastChild.nodeName == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
    }
    //-->
    </script>

	<title>Edit Projekt</title>
</head>

<body>

    <script>
      $(document).ready(function() {
        $("#bez").focus();
        $("#pers").autocomplete({
                source: "/fhiiqm/inc/ma_list_ac.inc.php",
    			minLength: 2,
                select: function(event,ui){$("#pid").val(ui.item.id);}
    		});
        $("#persa").autocomplete({
                source: "/fhiiqm/inc/ma_list_ac.inc.php",
    			minLength: 2,
                select: function(event,ui){$("#paid").val(ui.item.id);}
    		});
        $("#sdat").datepicker({
            dateFormat: 'yy-mm-dd', //nur Datum
            yearRange: '2000:2025',
            changeMonth: true,
			changeYear: true,
            firstDay: 1,
            dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
            monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
        });
        $("#edat").datepicker({
            dateFormat: 'yy-mm-dd', //nur Datum
            yearRange: '2000:2025',
            changeMonth: true,
			changeYear: true,
            firstDay: 1,
            dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
            monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
        });
        $("#psdat").datepicker({
            dateFormat: 'yy-mm-dd', //nur Datum
            yearRange: '2000:2025',
            changeMonth: true,
			changeYear: true,
            firstDay: 1,
            dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
            monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
        });
        $("#pedat").datepicker({
            dateFormat: 'yy-mm-dd', //nur Datum
            yearRange: '2000:2025',
            changeMonth: true,
			changeYear: true,
            firstDay: 1,
            dayNamesMin: ['So','Mo', 'Di', 'Mi', 'Do', 'Fr', 'Sa' ],
            monthNamesShort: ['Jan','Feb','Mar','Apr','Mai','Jun','Jul','Aug','Sep','Okt','Nov','Dez'] 
        });
        $("input[id='pers']").addClass("long20");
        $("input[id='persa']").addClass("long20");
        });
    </script>

<?php
    echo "&nbsp;";  
    echo "<div class=\"float-br smaller\" valign='top'>";
    echo "&nbsp;&nbsp;&nbsp;user: " . $_SESSION["userid"];
    echo "&nbsp;&nbsp;&nbsp;<a class='sc' href='/fhiiqm/logout.php' title='Session beenden'>logout</a></div>\n";
    echo "<div class=\"float-r\"><img src=\"img/sheduled_task.png\" border=\"0\" alt=\"Projekt &auml;ndern\" title=\"Projekt &auml;ndern\"/></div>\n";


    echo "<div align='center'>";
    if ($pzid) $text = "editieren"; else $text = "erfassen";
    if ($copy) $duptext = " (Kopie)";
    echo "<h3>Projekt $text$duptext<h3>";
    
    echo "</div>\n";
    
    if (!$ok || (!$sub && !$del && !$dup))
    {
        if ($pzid && (!$sub || !$del) && !isset($pz))
        { // update
            $sql = "SELECT proz_ID,produkt_ID,proz_bez,proz_bez_l,proz_start,proz_end,proz_kosten,
                        proz_start_pl,proz_end_pl,proz_kost_pl,
                        proz_urg_ID,proz_stat_ID,p.persknr,proz_ref_ID,proz_bem,persknr_a,
                        CONCAT (m.nachname, ', ',m.vorname) AS vma,
                        CONCAT (a.nachname, ', ',a.vorname) AS ama
                    FROM Prozess p LEFT OUTER JOIN Mitarbeiter m
                    ON p.persknr=m.persknr LEFT OUTER JOIN Mitarbeiter a
                    ON p.persknr_a=a.persknr
                    WHERE proz_ID = $pzid";
            if ($res = $dbc -> queryObjectArray($sql))
            {
                foreach ($res as $row)
                {
                    $pz["pzid"] = $pzid;
                    $pz["bez"] = $row->proz_bez;
                    $pz["bezl"] = $row->proz_bez_l;
                    $pz["prid"] = $row->produkt_ID;
                    $pz["psdat"] = $row->proz_start_pl;
                    $pz["pedat"] = $row->proz_end_pl;
                    $pz["pkost"] = str_replace('.',',',$row->proz_kost_pl);
                    $pz["sdat"] = $row->proz_start;
                    $pz["edat"] = $row->proz_end;
                    $pz["kost"] = str_replace('.',',',$row->proz_kosten);
                    $pz["urg"] = $row->proz_urg_ID;
                    $pz["stat"] = $row->proz_stat_ID;
                    $pz["persknr"] = $row->persknr;
                    $pz["pzref"] = $row->proz_ref_ID;
                    $pz["bem"] = $row->proz_bem;
                    $pz["persknra"] = $row->persknr_a;
                    $pz["persa"] = $row->ama;
                    $pz["pers"] = $row->vma;
                }
            }
            // Daten aus Proz_Step
            $sql = "SELECT proz_step,step_stat_ID,step_bem FROM Proz_Step WHERE proz_ID = $pzid ORDER BY proz_step_ID";
            if ($ress = $dbc -> queryObjectArray($sql))
            {
                foreach ($ress as $row)
                {
                    $pz["step"][] = $row->proz_step;
                    $pz["ststat"][] = $row->step_stat_ID;
                    $pz["stbem"][] = $row->step_bem;
                }
            }

        }
        include($_SERVER["DOCUMENT_ROOT"]."/fhiiqm/form/prozess_form.inc.php");
        if ($sub || $del)
		{
		  	if ($sub)
                $frage = "Alle Angaben ok?";
            elseif ($del)
                $frage = "Projekt wirklich l&ouml;schen?";
			echo "<tr>
			  <td class=\"red\" valign=\"top\" align=\"left\">$frage</td>
			        <td><input type=\"checkbox\" name=\"ok\" value=\"1\"";
			        if ($ok)  echo "checked=\"checked\""; 
			echo " /></td>\n</tr>\n"; 
		}
        if (!is_null($_SESSION["recht"]) && in_array("pze",$_SESSION["recht"]))
        {
            echo "
           	<tr><td>&nbsp;</td>\n
            	<td><input  class=\"button\" type=\"submit\" name=\"eintragen\" value=\"  eintragen  \" />";
            if ($pzid)
            {
                echo "&nbsp;&nbsp;&nbsp;<input class=\"buttonr\" type=\"submit\" value=\"l&ouml;schen\" name=\"del\" title=\"delete\" />";
                echo "&nbsp;&nbsp;&nbsp;<input class=\"button\" type=\"submit\" value=\"duplizieren\" name=\"dup\" title=\"delete\" />";
            }    
           	echo "</td></tr>\n";
        }
        echo "</table>\n";
        echo "</div>\n";
//            if (!is_null($_SESSION["recht"]) && !in_array("le", $_SESSION["recht"]))
            echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"prozess_flist.php\" target=\"_self\" title=\"Projektliste\">&laquo; zur Projektliste</a></p>\n"; 
        echo "</form>\n";   
    }     
    else
    {
        echo "<div align='center'>\n";
        
        if ($del)
        {   // Loeschen, Proz_Step wird wegen DELETE CASCADE ebenfalls geloescht
            $sql = "DELETE FROM Prozess WHERE proz_ID = '$pzid'";
            $retdi = $dbc -> execute($sql);
            if ($retdi)
            {
                echo "<p class='green'><b>DELETE: Daten  zu '".$pz["bez"]."' wurden erfolgreich gel&ouml;scht.</b></p>\n";
                include ("inc/prozess_dat_show.inc.php");
            }                
            else
            {
                echo "<p class='red'><b>DELETE: Daten  zu '".$pz["bez"]."', ID = '$pzid'  konnten nicht gel&ouml;scht werden!</b></p>\n";
                if (strpos($dbc->error,'1451') !== false)
                    echo "error DELETE: Es gibt mindestens einen abhängiges Projekt zu Projekt-ID '$pzid'<br />";
                else
                {
                    echo "sql = $sql<br />";
                    echo "error DELETE: " . $dbc->error . "<br />";
                }    
            }
        }
        else //INSERT oder UPDATE
        {
            //daten speichern
//            echo "INSERT/UPDATE: Daten speichern<br /><br />\n";
//            print_r($pz); echo "<br />\n";
            
            $pz["bezl"] = substr($pz["bezl"],0,100);
            $pz["bem"]  = substr($pz["bem"],0,500);
            if ($pz["sdat"] == "") $pz["sdat"] = null; 
            if ($pz["edat"] == "") $pz["edat"] = null; 
            if ($pz["psdat"] == "") $pz["psdat"] = null; 
            if ($pz["pedat"] == "") $pz["pedat"] = null;
            if ($pz["kost"]) $pz["kost"] = dbformat_wert($pz["kost"]); else $pz["kost"] = null; 
            if ($pz["pkost"]) $pz["pkost"] = dbformat_wert($pz["pkost"]); else $pz["pkost"] = null;
            if ($pz["urg"] == -1) $pz["urg"] = null;
            if ($pz["stat"] == -1) $pz["stat"] = null; 
            if ($pz["pzref"] == -1) $pz["pzref"] = null;
            if ($pz["prid"] < 1) $pz["prid"] = null;

            if ($pz["pers"] < "!") $pz["persknr"] = null;
            if ($pz["persa"] < "!") $pz["persknra"] = null;

            if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
            
            $stmt = $dbc -> stmtinit();
            if (is_object($stmt))
            {
                if ($pzid)
                {   //UPDATE
                    $stmt -> prepare("UPDATE Prozess SET
                                produkt_ID = ?,
                                proz_bez = ?,
                                proz_bez_l = ?,
                                proz_start = ?, 
                                proz_end = ?, 
                                proz_kosten = ?,
                                proz_start_pl = ?,
                                proz_end_pl = ?,
                                proz_kost_pl = ?,
                                proz_urg_ID = ?, 
                                proz_stat_ID = ?, 
                                persknr = ?, 
                                proz_ref_ID = ?, 
                                proz_bem = ?, 
                                persknr_a = ?  WHERE proz_ID = $pzid"); 
                    $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
                        $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
                    $result = $stmt -> execute();                    
                    if ($stmt->error) echo "error UPDATE Projekt: " . $stmt->error . "<br><br>\n";
                
                }
                else
                {   //INSERT
                    $stmt -> prepare ("INSERT INTO Prozess (produkt_ID, proz_bez, proz_bez_l, proz_start, proz_end, proz_kosten, proz_start_pl, proz_end_pl, proz_kost_pl, 
                        proz_urg_ID, proz_stat_ID, persknr, proz_ref_ID, proz_bem, persknr_a) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
                    $stmt -> bind_param('issssdssdiiiisi',$pz["prid"],$pz["bez"],$pz["bezl"],$pz["sdat"],$pz["edat"],$pz["kost"],$pz["psdat"],$pz["pedat"],$pz["pkost"],
                        $pz["urg"],$pz["stat"],$pz["persknr"],$pz["pzref"],$pz["bem"],$pz["persknra"]);
                    $result = $stmt -> execute();                    
                    if ($stmt->error) echo "error INSERT Projekt: " . $stmt->error . "<br><br>\n";
                    if ($result)
                    { // INSERT o.k.
                      // info_ID ermitteln
                        $pzid = $dbc -> insertId();
                    }    
                }
                if ($result && is_array($pz["step"]))
                {   // INSERT Prozessschritte
                    $sql = "DELETE FROM Proz_Step WHERE proz_ID = $pzid";
                    $retd = $dbc -> execute($sql);
                    if ($retd)
                    {
                        $stmt -> prepare("INSERT INTO Proz_Step (proz_ID,proz_step,step_stat_ID,step_bem) VALUES(?,?,?,?)");
                        for ($k=0; $k<count($pz["step"]); $k++)
                        {
                            if ($pz["step"][$k]) 
                            {
                                if ($pz["ststat"][$k] == -1) $pz["ststat"][$k] = null; 
                                if ($pz["stbem"][$k] < "!") $pz["stbem"][$k] = null; 
                                $stmt -> bind_param('isis',$pzid, $pz["step"][$k], $pz["ststat"][$k], $pz["stbem"][$k]);
                                $rets = $stmt -> execute();
                                if (!$rets) $rets = false;
                            }
                        }
                        if (!$rets) echo "error INSERT Projekt-Schritt: $stmt->error<br />\n";
                    }
                    else echo "error INSERT Projekt-Schritt: $dbc->error<br />\n";                   
                }   
            }

            if ($result && $rets)
            {
                echo "<p class='green'><b>Projekt '".$pz["bez"]."' mit ID '$pzid' wurden erfolgreich gespeichert.</b></p>\n";
                include ("inc/prozess_dat_show.inc.php");
            }   
            else
                echo "<p class='red'><b>Daten zu '".$pz["bez"]."' wurden nicht oder nur teilweise gespeichert</b></p>\n";

        }
        echo "</div>";
        echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"prozess_flist.php\" target=\"_self\" title=\"Projektliste\">&laquo; zur Projektliste</a></p>\n"; 
    }
    echo "</body>\n</html>\n";
?>