diff --git a/content/mitarbeiter/mitarbeiteroverlay.js.php b/content/mitarbeiter/mitarbeiteroverlay.js.php index ca5e07508..ee77e42af 100644 --- a/content/mitarbeiter/mitarbeiteroverlay.js.php +++ b/content/mitarbeiter/mitarbeiteroverlay.js.php @@ -623,7 +623,7 @@ function MitarbeiterAuswahl() // ***** Termine ***** document.getElementById('mitarbeiter-termine').setAttribute('src','termine.xul.php?mitarbeiter_uid='+uid); } - + // ***** UDF ***** if (document.getElementById('mitarbeiter-tabs').selectedItem == document.getElementById('mitarbeiter-tab-udf')) { @@ -915,56 +915,48 @@ function MitarbeiterNeu() } // **** -// * Exportiert die Daten in ein Excel File +// * Excel Export der Mitarbeiter // **** function MitarbeiterExport() { - var treeMitarbeiter=document.getElementById('mitarbeiter-tree'); - var treeMitarbeiterMenu=document.getElementById('tree-menu-mitarbeiter'); - var col = treeMitarbeiterMenu.columns ? treeMitarbeiterMenu.columns["tree-menu-mitarbeiter-col-filter"] : "tree-menu-mitarbeiter-col-filter"; - var filter=treeMitarbeiterMenu.view.getCellText(treeMitarbeiterMenu.currentIndex,col); - cols = treeMitarbeiter.getElementsByTagName('treecol'); - - var url = "content/statistik/mitarbeiterexport.xls.php"; - var attributes="?type=mitarbeiter"; - if (filter=="Studiengangsleiter") - attributes+="&stgl=true"; - if (filter=="Fachbereichsleiter") - attributes+="&fbl=true"; - if (filter=="Alle") - attributes+="&alle=true"; - if (filter=="Aktive") - attributes+="&aktiv=true"; - if (filter=="FixAngestellte") - attributes+="&fix=true&aktiv=true"; - if (filter=="FixAngestellteAlle") - attributes+="&fix=true"; - if (filter=="Inaktive") - attributes+="&aktiv=false"; - if (filter=="Karenziert") - attributes+="&karenziert=true"; - if (filter=="Ausgeschieden") - attributes+="&ausgeschieden=true"; - if (filter=="FreiAngestellte") - attributes+="&fix=false&aktiv=true"; - if (filter=="FreiAngestellteAlle") - attributes+="&fix=false"; - - url+=attributes; - spalte=0; - for(i in cols) + var tree = document.getElementById('mitarbeiter-tree'); + var data=''; + //Wenn nichts markiert wurde -> alle exportieren + if(tree.currentIndex==-1) { - if(cols[i].hidden==false) + if(tree.view) + var items = tree.view.rowCount; //Anzahl der Zeilen ermitteln + else + return false; + + for (var v=0; v < items; v++) { - url += "&spalte"+spalte+"="+MitarbeiterDetailgetSpaltenname(cols[i].id); - spalte=spalte+1; + var mitarbeiter_uid = getTreeCellText(tree, 'mitarbeiter-treecol-uid', v); + data = data+';'+mitarbeiter_uid; } } - //url+='&spalte0=titelpre&spalte1=vorname&spalte2=vornamen&spalte3=familienname&spalte4=uid'; + else + { + var start = new Object(); + var end = new Object(); + var numRanges = tree.view.selection.getRangeCount(); + var paramList= ''; + var anzahl=0; - //alert(url); - //window.open(url,"","chrome,status=no, modal, width=400, height=250, centerscreen, resizable"); - window.location.href=url; + //alle markierten personen holen + for (var t = 0; t < numRanges; t++) + { + tree.view.selection.getRangeAt(t,start,end); + for (var v = start.value; v <= end.value; v++) + { + mitarbeiter_uid = getTreeCellText(tree, 'mitarbeiter-treecol-uid', v); + data = data+';'+mitarbeiter_uid; + } + } + } + + action = 'content/statistik/mitarbeiterexport.xls.php'; + OpenWindowPost(action, data); } // **** @@ -1992,9 +1984,9 @@ function MitarbeiterUDFIFrameLoad() { //Ausgewaehlte person_id holen var person_id = getTreeCellText(tree, 'mitarbeiter-treecol-person_id', tree.currentIndex); - + url = 'udf.xul.php?person_id='+person_id; document.getElementById('mitarbeiter-udf').setAttribute('src', url); } catch(e) {} -} \ No newline at end of file +} diff --git a/content/statistik/mitarbeiterexport.xls.php b/content/statistik/mitarbeiterexport.xls.php index 3c943cde8..e21e4a1c2 100644 --- a/content/statistik/mitarbeiterexport.xls.php +++ b/content/statistik/mitarbeiterexport.xls.php @@ -36,59 +36,13 @@ $db = new basis_db(); $user = get_uid(); loadVariables($user); -//Parameter holen - -if (isset($_GET['fix'])) - $fix = $_GET['fix']; -else - $fix=null; - -if (isset($_GET['stgl'])) - $stgl = ($_GET['stgl'] == 'true' ? true : false); -else - $stgl=null; - -if (isset($_GET['fbl'])) - $fbl = $_GET['fbl']; -else - $fbl=null; - -if (isset($_GET['aktiv'])) - $aktiv = $_GET['aktiv']; -else - $aktiv=null; - -if (isset($_GET['karenziert'])) - $karenziert = $_GET['karenziert']; -else - $karenziert=null; - -if (isset($_GET['ausgeschieden'])) - $ausgeschieden = $_GET['ausgeschieden']; -else - $ausgeschieden=null; - -if (isset($_GET['zustelladresse'])) - $zustelladresse = $_GET['zustelladresse']; -else - $zustelladresse = null; - -// Die Spalten die Exportiert werden sollen, werden per GET uebergeben -// spalte1=nachname, spalte2=vorname, spalte3=gebdatum, ... -$anzSpalten = 0; -$varname = 'spalte'.(string)$anzSpalten; -while (isset($_GET[$varname])) -{ - $spalte[$anzSpalten] = $_GET[$varname]; - $anzSpalten++; - $varname = 'spalte'.(string)$anzSpalten; -} - -$zustelladresse = true; +$data = $_POST['data']; +$uids= explode(';',$data); // Mitarbeiter holen $mitarbeiterDAO = new mitarbeiter(); -$mitarbeiterDAO->getPersonal($fix, $stgl, $fbl, $aktiv, $karenziert, $ausgeschieden, $semester_aktuell); +//$mitarbeiterDAO->getPersonal($fix, $stgl, $fbl, $aktiv, $karenziert, $ausgeschieden, $semester_aktuell); +$mitarbeiterDAO->getMitarbeiterArray($uids); //Sortieren der Eintraege nach Nachname, Vorname //Umlaute werden ersetzt damit diese nicht unten angereiht werden @@ -106,6 +60,10 @@ foreach ($mitarbeiterDAO->result as $key => $foo) array_multisort($nachname, SORT_ASC, $vorname, SORT_ASC, $mitarbeiterDAO->result); +$spalte = array('titelpre', 'vorname', 'vornamen', 'nachname', 'titelpost','gebdatum','svnr','ersatzkennzeichen', + 'aktiv','personalnummer', 'kurzbz','fixangestellt','lektor'); +$anzSpalten = count($spalte); + // Creating a workbook $workbook = new Spreadsheet_Excel_Writer(); $workbook->setVersion(8); @@ -193,7 +151,7 @@ foreach ($mitarbeiterDAO->result as $mitarbeiter) if (mb_strlen($row->ort) > $maxlength[$col]) $maxlength[$col] = mb_strlen($row->ort); $worksheet->write($zeile, $col, $row->ort); - + $col++; if ($row->firma_id != '') { @@ -210,15 +168,15 @@ foreach ($mitarbeiterDAO->result as $mitarbeiter) } } } - + $col++; - + // UDF if (isset($mitarbeiter->p_udf_values)) { $udfPerson = json_decode($mitarbeiter->p_udf_values); if (is_object($udfPerson)) $udfPerson = (array)$udfPerson; - + foreach($udfTitlesPerson as $udfTitle) { if (isset($udfPerson[$udfTitle['name']])) @@ -234,7 +192,7 @@ foreach ($mitarbeiterDAO->result as $mitarbeiter) else if(is_array($udfPerson[$udfTitle['name']]) && isset($udfTitle['enum'])) { $toWrite = $udf->dropdownListValuesToString($udfPerson[$udfTitle['name']], $udfTitle['enum']); - + if (mb_strlen($toWrite) > $maxlength[$col]) { $maxlength[$col] = mb_strlen($toWrite); @@ -263,4 +221,4 @@ $worksheet->setColumn($col, $col, $maxlength[$col] + 2); $workbook->close(); -?> \ No newline at end of file +?> diff --git a/include/mitarbeiter.class.php b/include/mitarbeiter.class.php index 77fbc5702..c9a53f902 100644 --- a/include/mitarbeiter.class.php +++ b/include/mitarbeiter.class.php @@ -647,25 +647,25 @@ class mitarbeiter extends benutzer { $hasUDF = false; $udf = new UDF(); - + $qry = "SELECT DISTINCT ON(mitarbeiter_uid) *, tbl_benutzer.aktiv as aktiv, tbl_mitarbeiter.insertamum, tbl_mitarbeiter.insertvon, tbl_mitarbeiter.updateamum, tbl_mitarbeiter.updatevon"; - + if ($hasUDF = $udf->personHasUDF()) { $qry .= ", public.tbl_person.udf_values AS p_udf_values"; } - + $qry .= " FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)) JOIN public.tbl_person USING(person_id)) LEFT JOIN public.tbl_benutzerfunktion USING(uid) LEFT JOIN campus.tbl_resturlaub USING(mitarbeiter_uid) WHERE true"; - + if($fix=='true') $qry .= " AND fixangestellt=true"; if($fix=='false') @@ -740,7 +740,7 @@ class mitarbeiter extends benutzer $qry.=';'; - + if($this->db_query($qry)) { while($row = $this->db_fetch_object()) @@ -793,7 +793,7 @@ class mitarbeiter extends benutzer { $obj->p_udf_values = $row->p_udf_values; } - + $this->result[] = $obj; } return true; @@ -1324,5 +1324,102 @@ class mitarbeiter extends benutzer return false; } } + + /** + * Laedt die Mitarbeiter die uebergeben werden + * + * @param $uid_arr + * @return boolean + */ + public function getMitarbeiterArray($uid_arr) + { + if(count($uid_arr)==0) + return true; + + $hasUDF = false; + $udf = new UDF(); + + $qry = "SELECT DISTINCT ON(mitarbeiter_uid) *, + tbl_benutzer.aktiv as aktiv, + tbl_mitarbeiter.insertamum, + tbl_mitarbeiter.insertvon, + tbl_mitarbeiter.updateamum, + tbl_mitarbeiter.updatevon"; + + if ($hasUDF = $udf->personHasUDF()) + { + $qry .= ", public.tbl_person.udf_values AS p_udf_values"; + } + + $qry .= " FROM ((public.tbl_mitarbeiter JOIN public.tbl_benutzer ON(mitarbeiter_uid=uid)) + JOIN public.tbl_person USING(person_id)) + LEFT JOIN public.tbl_benutzerfunktion USING(uid) + LEFT JOIN campus.tbl_resturlaub USING(mitarbeiter_uid) + WHERE uid in(".$this->db_implode4SQL($uid_arr).")";; + + if($this->db_query($qry)) + { + while($row = $this->db_fetch_object()) + { + $obj = new mitarbeiter(); + + $obj->person_id = $row->person_id; + $obj->staatsbuergerschaft = $row->staatsbuergerschaft; + $obj->geburtsnation = $row->geburtsnation; + $obj->sprache = $row->sprache; + $obj->anrede = $row->anrede; + $obj->titelpost = $row->titelpost; + $obj->titelpre = $row->titelpre; + $obj->nachname = $row->nachname; + $obj->vorname = $row->vorname; + $obj->vornamen = $row->vornamen; + $obj->gebdatum = $row->gebdatum; + $obj->gebort = $row->gebort; + $obj->gebzeit = $row->gebzeit; + $obj->anmerkung = $row->anmerkung; + $obj->homepage = $row->homepage; + $obj->svnr = $row->svnr; + $obj->ersatzkennzeichen = $row->ersatzkennzeichen; + $obj->familienstand = $row->familienstand; + $obj->geschlecht = $row->geschlecht; + $obj->anzahlkinder = $row->anzahlkinder; + $obj->bnaktiv = $this->db_parse_bool($row->aktiv); + $obj->uid = $row->uid; + $obj->personalnummer = $row->personalnummer; + $obj->telefonklappe = $row->telefonklappe; + $obj->kurzbz = $row->kurzbz; + $obj->lektor = $this->db_parse_bool($row->lektor); + $obj->fixangestellt = $this->db_parse_bool($row->fixangestellt); + $obj->bismelden = $this->db_parse_bool($row->bismelden); + $obj->stundensatz = $row->stundensatz; + $obj->ausbildungcode = $row->ausbildungcode; + $obj->ort_kurzbz = $row->ort_kurzbz; + $obj->standort_id = $row->standort_id; + $obj->anmerkung = $row->anmerkung; + $obj->alias = $row->alias; + $obj->insertamum = $row->insertamum; + $obj->insertvon = $row->insertvon; + $obj->updateamum = $row->updateamum; + $obj->updatevon = $row->updatevon; + + $obj->urlaubstageprojahr = $row->urlaubstageprojahr; + $obj->resturlaubstage = $row->resturlaubstage; + + if ($hasUDF) + { + $obj->p_udf_values = $row->p_udf_values; + } + + $this->result[] = $obj; + } + return true; + } + else + { + $this->errormsg = 'Fehler beim Laden der Daten'; + return false; + } + } + } ?>