fhiiqm/vertrag_ed.php
changeset 35 679bc22e37e2
child 36 4411d3239444
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/fhiiqm/vertrag_ed.php	Tue Mar 26 15:41:01 2013 +0100
@@ -0,0 +1,462 @@
+<?php
+
+/**
+ * @author Bettina Schwarzer, Fritz-Haber-Institut
+ * @copyright 03/2013
+ * 
+ * INSERT/UPDATE/DELETE Vertragsdaten   
+ */
+
+    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("vr",$_SESSION["recht"]) && !in_array("ve",$_SESSION["recht"])))
+    {
+        header("Location: start.php");
+        exit;
+    }    
+    
+?>
+<!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-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>
+
+	<title>Aktualisieren Vertragsdaten</title>
+
+    <script type="text/javascript">
+    //<!--
+        var counter = 0;
+        var limit = 99;
+        function addInput(divId,anz){
+             if (counter == limit)  {
+                  alert("Das Limit von " + counter + " zusätzlichen inputs ist erreicht");
+             }
+             else 
+             {
+                var cdiv = document.createElement('div');
+                var idl = "cbl_" + anz;
+                cdiv.innerHTML = "<span></span>Dok-Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input name='vertrag[cfname][]' type='text' size='50' maxlength='50' value='' />";
+                cdiv.innerHTML += "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Schlagwort&nbsp;&nbsp;&nbsp;<input type='text' name='vertrag[swort][]'  size='30' maxlength='50' value='' />";
+                cdiv.innerHTML += "<img src='/fhiiqm/img/nixt.gif' border='0' height='100%' />";
+                //cdiv.innerHTML += "<span id='cbl'>&nbsp;&nbsp;&nbsp;<input type='checkbox' id='del' name='vertrag[del][]' value='1'/></span>";
+                cdiv.innerHTML += "<span id='cbl'>&nbsp;&nbsp;&nbsp;<input type='checkbox' id='del' name='vertrag[del][]' value='1'/>";
+                cdiv.innerHTML += "<label id='lb' for='del'>&nbsp;l&ouml;schen</label></span>";
+                cdiv.innerHTML += "<br />Upload-Dokument&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='file' name='vfile[]' size='50' maxlength='50' value='' />";
+                document.getElementById(divId).appendChild(cdiv);
+                var delcb = document.getElementById('del');
+                delcb.id = "del_" + anz;
+                delcb.style.display = 'none';
+                var lcb = document.getElementById('lb');
+                lcb.id = "lb_" + anz;
+                lcb.setAttribute("for", delcb.id);
+                lcb.style.display = 'none';
+                counter++;
+             }
+        }
+        function markdelInput(divId,anz){
+            for (i=1; i<anz; i++)
+            {
+                var id = "del_" + i;
+                var delcb = document.getElementById(id);
+                delcb.style.display = 'inline';
+                var idl = "lb_" + i;
+                var lcb = document.getElementById(idl);
+                lcb.style.display = 'inline';
+                /*
+                var newlabel = document.createElement("Label");
+                var idl = "cbl_" + i;
+                newlabel.setAttribute("for",id);
+                newlabel.innerHTML = "&nbsp;l&ouml;schen?";
+                document.getElementById(idl).appendChild(newlabel);
+                */
+            }
+            
+        }
+        function delInput(divId,anz){
+
+                var kn = document.getElementById(divId); 
+                while (kn.childNodes.length>0 && kn.lastChild.nodeName != "SPAN" && kn.lastChild.nodeName != "A")
+                {
+                    var knc = kn.lastChild;
+                        document.getElementById(divId).removeChild(knc);
+                }
+                if (kn.lastChild.nodeName == "SPAN") document.getElementById(divId).removeChild(kn.lastChild);
+        }
+    //-->
+    </script>
+</head>
+
+<body>
+
+    <script>
+      $(document).ready(function() {
+        $("#bez").focus();
+        $("#bdat").datepicker({
+            dateFormat: 'yy-mm-dd', //nur Datum
+            yearRange: '1990:2030',
+            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: '1990:2030',
+            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'] 
+        });
+        });
+    </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/document_mark_as_final.png\" border=\"0\" alt=\"Vertragsdaten bearbeiten\" title=\"Vertragsdaten bearbeiten\"/></div>\n";
+
+	include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/dbconnect.inc.php");
+    include_once($_SERVER['DOCUMENT_ROOT'] ."/fhiiqm/inc/func_lib.inc.php");
+	$dbc = new dbconnection();
+
+    $cid    = $_GET["uid"];
+    $zeil = $_GET["z"];
+    if (!$zeil) $zeil = 20; // Anzahl der gezeigten Zeilen
+    $start = $_GET["st"];   // Start bei DS $start+1
+    if (!$start) $start=0;
+	$sort   = $_GET["s"];   // Sortierung nach Spalte
+    $dir    = $_GET["d"];   // Sortierrichtung
+    $fnum   = $_GET["f"];   // Spaltennummer, nach der aktuell gefiltert wird
+    $filter = $_GET["b"];   // Filterbegriff
+    $teil   = $_GET["t"];   // t = 2 zu Vertragsliste Teil 2 zurueck
+    $mfile  = $_GET["g"];   // Multifile = mehrere Vertragsdokumente moeglich
+    if ($teil == 2) $tlist = "vertrag_flist12.php"; else $tlist = "vertrag_flist1.php";
+    // $_GET-Parameter zurück zur Vertragliste mit den selben Einstellungen wie zuvor
+    $getp = "s=$sort&d=$dir&f=$fnum&b=$filter&st=$start&z=$zeil&g=$mfile";
+
+	$ok		= $_POST["ok"];
+	$sub	= $_POST["edit"];
+    $del    = $_POST["del"];
+    $vtr    = $_POST["vertrag"];
+    if (!$vtr['okn']) $ok=false;
+    
+//print_r($vtr); echo "cid = $cid<br /><br />";
+//print_r($_FILES); echo "<br /><br />";
+
+    if (!$ok && ((!$sub && !$del) || $sub || $del))
+    {
+        if (!$sub && !$del)
+        {
+            $sql = "SELECT contract_ID,contract_name,contract_s,contract_l,vtyp_ID,contract_begin,contract_end,
+                    contract_autoend,contract_mon_notice,contract_file,Bemerkung,email_send 
+                    FROM fhiiqm.Vertrag WHERE contract_ID = $cid";
+            if ($result = $dbc ->queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                    $vtr['cname']   = $row->contract_name;
+//                    $vtr['cshort'] = $row->contract_s;
+                    $vtr['clong']   = $row->contract_l;
+                    $vtr['vtyp']    = $row->vtyp_ID;
+                    $vtr['bdat']   = $row->contract_begin;
+                    $vtr['edat']   = $row->contract_end;
+                    $vtr['cautoend']= $row->contract_autoend;
+                    $vtr['cnot']    = $row->contract_mon_notice;
+//                    $vtr['cfname'][0]  = $row->contract_file;
+                    $vtr['cbem']    = $row->Bemerkung;
+                    $vtr['email']   = $row->email_send;
+                }  
+            }
+            // Bearbeiter
+            $sql = "SELECT persknr FROM Vertrag_Bearbeiter WHERE contract_ID = $cid";
+            if ($result = $dbc ->queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                   $vtr['cpers'][] = $row->persknr; 
+                }
+            }
+            // Partner
+            $sql = "SELECT part_ID FROM Vertrag_Partner WHERE contract_ID = $cid";
+            if ($result = $dbc -> queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                    $vtr['partid'] = $row->part_ID;
+                }
+            }
+            // Produkt
+            $sql = "SELECT produkt_ID FROM Produkt_Vertrag WHERE contract_ID = $cid";
+            if ($result = $dbc -> queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                    $vtr['prodid'] = $row->produkt_ID;
+                }
+            }
+            // Kosten
+            if ($vtr['edat']) 
+            {
+                $jahr = new DateTime($vtr['edat']);
+                $ejahr = $jahr->format('Y');   
+            }
+            elseif ($vtr["cautoend"] && !$vtr['edat']) // automatische Vertragsverlaengerung und kein Endjahr angegeben
+                $ejahr = date("Y");
+            else
+            {
+                $jahr = new DateTime($vtr['bdat']); // Kosten nur im Startjahr
+                $ejahr = $jahr->format('Y');   
+            } 
+            if ($vtr['bdat']) 
+            {
+                $jahr = new DateTime($vtr['bdat']);
+                $bjahr = $jahr->format('Y');   
+            }
+            for ($i=(int)$bjahr; $i< (int)$ejahr +1; $i++)
+            {   $ayear[] = $i;  }
+            $sql = "SELECT k_year, kosten FROM Vertrag_Kosten WHERE contract_ID = $cid ORDER BY k_year ";
+            if ($result = $dbc -> queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                    $j = array_search($row->k_year,$ayear);
+                    if ( $j > -1 )
+                        $vtr['kost'][$j] = str_replace('.',',',$row->kosten);
+                }
+            }
+            // Dokumente
+            $sql = "SELECT cf_filename, cf_schlagwort FROM Vertrag_File WHERE contract_ID = $cid ORDER BY cf_ID";
+            if ($result = $dbc -> queryObjectArray($sql))
+            {
+                foreach ($result as $row)
+                {
+                    $vtr['cfname'][] = $row->cf_filename;
+                    $vtr['swort'][] = $row->cf_schlagwort;
+                }
+            }
+        }
+
+        include_once("form/vertragmf_form.inc.php");
+        
+	  	if ($sub || $del)
+        {
+            if ($sub)
+              $frage = "Alle Angaben ok?<br>
+              erst wenn Haken gesetzt, Upload-Files w&auml;hlen!";
+            elseif ($del)
+                $frage = "Vertrag 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"; 
+    		echo "></td>\n</tr>\n"; 
+        }
+		
+        if (!is_null($_SESSION["recht"]) && in_array("ve",$_SESSION["recht"]))
+        {
+    		echo "<tr>\n";
+    		echo "
+    		  <td>&nbsp;</td>
+    		  <td><input class=\"button\" type=\"submit\" value=\"eintragen\" name=\"edit\" title=\"eintragen\" />";
+            if ($cid)
+    		  echo "&nbsp;&nbsp;&nbsp;<input class=\"buttonr\" type=\"submit\" value=\"l&ouml;schen\" name=\"del\" title=\"delete\" />";
+    		echo "</td>\n</tr>\n";
+        }
+        echo "</table>\n";
+        echo "</div>\n";
+//        if (!is_null($_SESSION["recht"]) && !in_array("ve",$_SESSION["recht"]))
+            echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"$tlist?$getp\" target=\"_self\" title=\"Vertragsliste\">&laquo; zur Vertragsliste</a></p>\n";    
+        echo "</form>\n";
+        	
+    }
+    elseif ($ok && $sub)
+    {
+        echo "<div align='center'>\n";
+        //daten speichern
+        
+        $vtr['cname'] = substr($vtr['cname'],0,50);
+//        $vtr['cshort'] = substr($vtr['cshort'],0,50);
+        $vtr['clong'] = substr($vtr['clong'],0,100);
+        if ($vtr['vtyp']== -1 || !(is_numeric($vtr['vtyp']))) $vtr['vtyp'] = null;
+        if ($vtr["bdat"] == "") $vtr["bdat"] = null; 
+        if ($vtr["edat"] == "") $vtr["edat"] = null; 
+        if (!is_numeric($vtr['cnot'])) $vtr['cnot'] = null;
+        if ($vtr['cbem']) $vtr['cbem'] = substr($vtr['cbem'],0,500); else $vtr['cbem']=null;
+
+        if (!isset($dbc) || !$dbc) $dbc = new dbconnection();
+        include_once ("inc/file_upload.inc.php");
+        
+        $stmt = $dbc -> stmtinit();
+        if (is_object($stmt))
+        {
+            // contract_file = ?,  $cfile
+            if ($cid)
+            {
+                $stmt -> prepare("UPDATE fhiiqm.Vertrag SET
+                        contract_name = ?, 
+                        contract_l = ?, 
+                        vtyp_ID = ?, 
+                        contract_begin = ?, 
+                        contract_end = ?,
+                        contract_autoend = ?, 
+                        contract_mon_notice = ?,
+                        Bemerkung = ?,
+                        email_send = ? 
+                        WHERE contract_ID = $cid") ;
+                $stmt -> bind_param('ssissiisi',$vtr["cname"],$vtr["clong"],$vtr['vtyp'],$vtr['bdat'],$vtr['edat'],$vtr['cautoend'],$vtr['cnot'],$vtr['cbem'],$vtr["email"]);
+                $retv = $stmt -> execute();
+                if (!$retv) echo "UPDATE Vertrag, error: " . $stmt->errno . " - ". $stmt->error  ."<br />\n";
+            }
+            else
+            {
+                $stmt -> prepare("INSERT INTO Vertrag (contract_name, contract_l,vtyp_ID,contract_begin, contract_end, contract_autoend, 
+                        contract_mon_notice, bemerkung,email_send) 
+                        VALUES(?,?,?,?,?,?,?,?,?)");
+                $stmt -> bind_param('ssissiisi',$vtr["cname"],$vtr["clong"],$vtr['vtyp'],$vtr['bdat'],$vtr['edat'],$vtr['cautoend'],$vtr['cnot'],$vtr['cbem'],$vtr["email"]);
+                $retv = $stmt -> execute();
+                if (!$retv || $stmt->error) echo "INSERT Vertrag, error: " . $stmt->errno . " - ". $stmt->error . "<br><br>\n";
+                if ($retv)
+                { // INSERT o.k.
+                  // contract_ID ermitteln
+                    $cid = $dbc -> insertId();
+                }
+            }
+        }       
+        if ($cid)
+        {
+            $len = strlen($cid)+1;
+            // alte Namen Vertragsdocument
+            $sql = "SELECT cf_filename FROM Vertrag_File WHERE contract_ID = $cid ORDER BY cf_ID";
+            if ($res = $dbc -> queryObjectArray($sql))
+                foreach ($res as $row)
+                    $vfile_old[] = $row->cf_filename;
+
+            // zu loeschende docs auf Server
+            foreach ($vtr['cfname'] as $key => &$val)
+            {
+                if (isset($vtr['del'][$key]) && $vtr['del'][$key])
+                {
+                    $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,"","del",$val);  // Loeschen altes File auf Server
+                    $val = null;
+                }   
+            }            
+            // upload File, wenn vorhanden
+            $retf = 1;
+            if (isset($_FILES) && is_array($_FILES))
+            {
+                foreach ($vtr['cfname'] as $key => &$filena)
+                {
+                    $filena = gen_filename($filena,$_FILES['vfile']['name'][$key],$cid,0);
+                    if ($_FILES["vfile"]["error"][$key] == UPLOAD_ERR_NO_FILE)
+                    {
+                        if ($filena > "!" && $cid."_".$filena != $vfile_old[$key])
+                        {
+                            if (substr($filena,0,$len) != "$cid_") $filenam = $cid . "_" . $filena; else $filenam = $filena;
+                            $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,$filenam,"upd",$vfile_old[$key]);  // Umbenennen alte Datei
+                        }   
+                        elseif (!$filena || $filena == '')
+                            $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,"","del",$vfile_old[$key]);  // Loeschen alte Datei
+                        else    //kein Upload, keine Dateinamenaenderung
+                            $retf = 1;
+                    }
+                    if ($_FILES["vfile"]["error"][$key] == UPLOAD_ERR_OK)
+                    {
+                        if (isset($vfile_old[$key]) && $filena > "!" && $cid."_".$filena != $vfile_old[$key])
+                        {
+                            $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,"","del",$vfile_old[$key]);  // Loeschen alte Datei
+                        }    
+                    }
+                }
+                if (isset($_FILES['vfile']['error']) && is_array($_FILES['vfile']['error']) && in_array(0,$_FILES['vfile']['error']))
+                {    
+                    $ret = upload_multif("vfile", $vtr['cfname'], $cid, $dir="documents");
+                    if ($ret) echo "<p class='green'><b>Dateien zu ID '$cid' wurden erfolgreich hochgeladen.</b></p>\n";
+                    else echo "<p class='red'><b>Upload für einige Dateien zu ID '$cid' ist fehlgeschlagen.</b></p>\n";
+                }
+                else $ret = 1;
+            }
+
+            if ($retv && $ret && $retf)
+            {
+                // DELETE, INSERT n:m Tabellen
+                include ("inc/vertragtab_ins.inc.php");
+            }
+            // nicht mehr notwendige Dateien auf Server löschen
+
+            if ($retv && $retb && $retp && $retd && $retk && $retf && $retl)
+            {//Eingabe Daten, Upload File erfolgreich 
+                echo "<p class='green'><b>Vertragsdaten zu ID '$cid' wurden erfolgreich gespeichert.</b></p>\n";
+                echo "<br /><br />\n";
+    
+                // Anzeigen gespeicherte Vertragsdaten
+                include ("inc/vertrag_dat_show.inc.php");
+            }
+            else echo "retv=$retv, 
+                        retb=$retb, 
+                        retp=$retp, 
+                        retd=$retd, 
+                        retk=$retk, 
+                        retf=$retf, 
+                        retl=$retl<br /><br />";
+        }
+    }
+    elseif ($ok && $del)
+    {
+        // DELETE aus Tab Vertrag und abhaengigen Tabellen
+        echo "<div align='center'>\n";
+
+        $sql = "DELETE FROM Vertrag WHERE contract_ID = $cid";
+        $retvd = $dbc -> execute($sql);
+        if ($retvd)
+        {
+            foreach ($vtr['cfname'] as $key => $filename)
+                $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,"","del",$vfile_old[$key]);  // Loeschen alte Datei
+            if ($retdf) echo "<p class='green'><b>Vertragsdokumente zu ID '$cid' wurde gel&ouml;scht.</b></p>\n";
+            echo "<p class='green'><b>Vertragsdaten zu ID '$cid' wurden gel&ouml;scht.</b></p>\n";
+            echo "<br /><br />\n";
+
+            // Anzeigen geloeschter Vertragsdaten
+            include ("inc/vertrag_dat_show.inc.php");
+        }
+    }
+    if ($ok && ($sub || $del))
+    {
+/*
+            if (count($vtr['cfname']) != count($vfile_old))
+            {
+                foreach ($vfile_old as $key => $val)
+                {
+print_r($vtr['cfname']); echo "$val in delete<br /><br />";  
+                    $valk = substr($val,$len);
+                    if (!in_array($valk,$vtr['cfname']))
+                        $retf  = $retf && mod_file("/var/www/fhiiqm/documents",$cid,"","del",$val);  // Loeschen alte Datei
+                }
+            }       
+print_r($vtr['cfname']); echo "nach delete?<br /><br />"; 
+*/ 
+        echo "</div><br /><br />\n";
+        echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"$tlist?$getp\" target=\"_self\" title=\"Vertragsliste\">Zur&uuml;ck zur Vertragsliste</a></p>\n";    
+        echo "<p class='sc'>&nbsp;&nbsp;&nbsp;<a href=\"vertrag_ed.php\" target=\"_self\" title=\"Vertrag erfassen\">Weiteren Vertrag erfassen</a></p>\n";    
+    }
+    
+?>
+
+</body>
+</html>
\ No newline at end of file