mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-06-01 12:19:28 +00:00
531 lines
17 KiB
PHP
531 lines
17 KiB
PHP
<?php
|
|
/* Copyright (C) 2008 Technikum-Wien
|
|
*
|
|
* This program is free software; you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA.
|
|
*
|
|
* Authors: Christian Paminger < christian.paminger@technikum-wien.at >
|
|
* Andreas Oesterreicher < andreas.oesterreicher@technikum-wien.at >
|
|
* Rudolf Hangl < rudolf.hangl@technikum-wien.at >
|
|
* Gerald Simane-Sequens < gerald.simane-sequens@technikum-wien.at >
|
|
*/
|
|
/**
|
|
* Inventur
|
|
*
|
|
* Formular zur Unterstuetzung der Inventur
|
|
* - Zuerst wird ein Ort oder eine Person ausgewaehlt fuer die die Inventur durchgefuehrt werden soll
|
|
* - dann werden alle Betriebsmittel eingescannt. Diese werden automatisch der Person/Ort zugeteilt und das Inventurdatum wird gesetzt
|
|
* - Uber den Punkt "Uebersicht" erhaelt man eine Liste mit den Betriebsmitteln die zwar zum Ort/Person zugeteilt sind, aber noch nicht gescannt wurden
|
|
* - Diese koennen dann in den Dummy Raum verschoben oder auf ausgeschieden gesetzt werden
|
|
*/
|
|
require_once('../../config/vilesci.config.inc.php');
|
|
require_once('../../include/functions.inc.php');
|
|
require_once('../../include/benutzerberechtigung.class.php');
|
|
require_once('../../include/ort.class.php');
|
|
require_once('../../include/benutzer.class.php');
|
|
require_once('../../include/organisationseinheit.class.php');
|
|
require_once('../../include/betriebsmittel.class.php');
|
|
require_once('../../include/betriebsmittelperson.class.php');
|
|
require_once('../../include/betriebsmitteltyp.class.php');
|
|
require_once('../../include/betriebsmittelstatus.class.php');
|
|
require_once('../../include/betriebsmittel_betriebsmittelstatus.class.php');
|
|
require_once('../../include/datum.class.php');
|
|
|
|
if (!$uid = get_uid())
|
|
die('Keine UID gefunden ! <a href="javascript:history.back()">Zurück</a>');
|
|
|
|
$oBenutzerberechtigung = new benutzerberechtigung();
|
|
$oBenutzerberechtigung->errormsg='';
|
|
$oBenutzerberechtigung->berechtigungen=array();
|
|
if (!$oBenutzerberechtigung->getBerechtigungen($uid))
|
|
die('Sie haben keine Berechtigung ! <a href="javascript:history.back()">Zurück</a>');
|
|
|
|
$errormsg=array();
|
|
$recht=false;
|
|
$schreib_recht=false;
|
|
$datum_obj = new datum();
|
|
|
|
|
|
$ort_kurzbz=trim((isset($_REQUEST['ort_kurzbz']) ? $_REQUEST['ort_kurzbz']:''));
|
|
$person_id=trim(isset($_REQUEST['person_id']) ? $_REQUEST['person_id']:'');
|
|
$work=trim(isset($_REQUEST['work']) ? $_REQUEST['work']:'');
|
|
$personen_namen='';
|
|
|
|
if($oBenutzerberechtigung->isBerechtigt('wawi/inventar', null, 'suid') )
|
|
$schreib_recht=true;
|
|
|
|
// Pruefen ob Schreibrechte (Anzeigen der Aenderungsmoeglichkeit)
|
|
if($oBenutzerberechtigung->isBerechtigt('wawi/inventar:begrenzt',null,'su') )
|
|
$schreib_recht=true;
|
|
if (!$schreib_recht)
|
|
die('Sie haben keine Berechtigung für diese Seite ! <a href="javascript:history.back()">Zurück</a>');
|
|
|
|
if(is_numeric($person_id))
|
|
{
|
|
$person_obj = new person();
|
|
if($person_obj->load($person_id))
|
|
$personen_namen = $person_obj->titelpre.' '.$person_obj->vorname.' '.$person_obj->nachname.' '.$person_obj->titelpost;
|
|
}
|
|
$ajax=trim(isset($_REQUEST['ajax']) ?$_REQUEST['ajax']:false);
|
|
$work=trim(isset($_REQUEST['work']) ?$_REQUEST['work']:false);
|
|
|
|
// Statusaenderung
|
|
if ($ajax!='')
|
|
{
|
|
if(strtolower($ajax)=='inventarisieren')
|
|
{
|
|
if(isset($_REQUEST['inventarnummer']) && $_REQUEST['inventarnummer']!='')
|
|
{
|
|
$inventarnummer = $_REQUEST['inventarnummer'];
|
|
$ort_kurzbz = $_REQUEST['ort_kurzbz'];
|
|
$person_id = $_REQUEST['person_id'];
|
|
$errormsg='';
|
|
|
|
$betriebsmittel_obj = new betriebsmittel();
|
|
if($betriebsmittel_obj->load_inventarnummer($inventarnummer))
|
|
{
|
|
$value['beschreibung']=$betriebsmittel_obj->beschreibung;
|
|
$value['verwendung']=$betriebsmittel_obj->verwendung;
|
|
$value['ort_old']=$betriebsmittel_obj->ort_kurzbz;
|
|
$value['inventarnummer']=$inventarnummer;
|
|
$value['betriebsmittel_id']=$betriebsmittel_obj->betriebsmittel_id;
|
|
|
|
//Inventarisierung speichern und ggf den Ort anpassen
|
|
if($ort_kurzbz!='' && $ort_kurzbz!=$betriebsmittel_obj->ort_kurzbz)
|
|
{
|
|
$betriebsmittel_obj->ort_kurzbz = $ort_kurzbz;
|
|
}
|
|
$betriebsmittel_obj->inventuramum = date('Y-m-d H:i:s');
|
|
$betriebsmittel_obj->inventurvon = $uid;
|
|
if(!$betriebsmittel_obj->save(false))
|
|
$errormsg = $betriebsmittel_obj->errormsg;
|
|
|
|
if($person_id!='')
|
|
{
|
|
$bmp = new betriebsmittelperson();
|
|
$zuordnen=true;
|
|
|
|
//Wenn das Betriebsmittel an eine andere Person ausgegeben ist, dann zurueckgeben
|
|
if($bmp->load_betriebsmittelpersonen($betriebsmittel_obj->betriebsmittel_id))
|
|
{
|
|
if($bmp->person_id!=$person_id)
|
|
{
|
|
if($bmp->retouram=='')
|
|
{
|
|
$bmp->retouram=date('Y-m-d');
|
|
if(!$bmp->save(false))
|
|
$errormsg = $bmp->errormsg;
|
|
}
|
|
}
|
|
else
|
|
$zuordnen=false;
|
|
}
|
|
|
|
if($zuordnen)
|
|
{
|
|
//Neue Person zuordnen
|
|
$bmp = new betriebsmittelperson();
|
|
$bmp->person_id = $person_id;
|
|
$bmp->betriebsmittel_id = $betriebsmittel_obj->betriebsmittel_id;
|
|
$bmp->ausgegebenam = date('Y-m-d');
|
|
$bmp->updateamum = date('Y-m-d H:i:s');
|
|
$bmp->updatevon = $uid;
|
|
$bmp->insertamum = date('Y-m-d H:i:s');
|
|
$bmp->insertvon = $uid;
|
|
if(!$bmp->save(true))
|
|
$errormsg = $bmp->errormsg;
|
|
}
|
|
}
|
|
$value['person_id']=$person_id;
|
|
$value['errormsg']=$errormsg;
|
|
|
|
echo json_encode($value);
|
|
}
|
|
else
|
|
{
|
|
echo 'ERROR LOADING:'.$inventarnummer;
|
|
}
|
|
}
|
|
}
|
|
exit;
|
|
}
|
|
if(isset($_POST['updateliste']))
|
|
{
|
|
if(isset($_POST['work']) && $_POST['work']=='dummy')
|
|
{
|
|
//Eintraege in den Dummy Raum verschieben
|
|
$ids = $_POST['bmid'];
|
|
foreach($ids as $id)
|
|
{
|
|
$bm_obj = new betriebsmittel();
|
|
if($bm_obj->load($id))
|
|
{
|
|
$bm_obj->ort_kurzbz='DUMMY';
|
|
if(!$bm_obj->save(false))
|
|
echo 'Fehler beim Speichern von ID:'.$id;
|
|
}
|
|
else
|
|
{
|
|
echo 'Fehler beim Laden von ID:'.$id;
|
|
}
|
|
}
|
|
|
|
$work='uebersicht';
|
|
}
|
|
if(isset($_POST['work']) && $_POST['work']=='ausscheiden')
|
|
{
|
|
//Eintraege auf ausgeschieden setzen
|
|
$ids = $_POST['bmid'];
|
|
foreach($ids as $id)
|
|
{
|
|
$bm_obj = new betriebsmittel_betriebsmittelstatus();
|
|
|
|
$bm_obj->betriebsmittel_id = $id;
|
|
$bm_obj->betriebsmittelstatus_kurzbz = 'ausgeschieden';
|
|
$bm_obj->datum = date('Y-m-d');
|
|
$bm_obj->insertamum = date('Y-m-d H:i:s');
|
|
$bm_obj->insertvon = $uid;
|
|
$bm_obj->updateamum = date('Y-m-d H:i:s');
|
|
$bm_obj->updatevon = $uid;
|
|
$bm_obj->new = true;
|
|
if(!$bm_obj->save())
|
|
echo 'Fehler beim Speichern von ID:'.$id;
|
|
}
|
|
|
|
$work='uebersicht';
|
|
}
|
|
else
|
|
{
|
|
// Verschiebung in einen anderen Raum
|
|
$ids = $_POST['bmid'];
|
|
foreach($ids as $id)
|
|
{
|
|
$bm_obj = new betriebsmittel();
|
|
if($bm_obj->load($id))
|
|
{
|
|
$bm_obj->ort_kurzbz=$_POST['work'];
|
|
if(!$bm_obj->save(false))
|
|
echo 'Fehler beim Speichern von ID:'.$id;
|
|
}
|
|
else
|
|
{
|
|
echo 'Fehler beim Laden von ID:'.$id;
|
|
}
|
|
}
|
|
|
|
$work='uebersicht';
|
|
}
|
|
}
|
|
?>
|
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
|
|
<html>
|
|
<head>
|
|
<title>Inventar - Inventur</title>
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<link rel="stylesheet" href="../../skin/vilesci.css" type="text/css">
|
|
<link rel="stylesheet" href="../../skin/jquery.css" type="text/css">
|
|
<script type="text/javascript" src="../../vendor/jquery/jquery1/jquery-1.12.4.min.js"></script>
|
|
<script type="text/javascript" src="../../vendor/christianbach/tablesorter/jquery.tablesorter.min.js"></script>
|
|
<script type="text/javascript" src="../../vendor/components/jqueryui/jquery-ui.min.js"></script>
|
|
<script type="text/javascript" src="../../include/js/jquery.ui.datepicker.translation.js"></script>
|
|
<link rel="stylesheet" type="text/css" href="../../skin/jquery-ui-1.9.2.custom.min.css"/>
|
|
<script type="text/javascript">
|
|
var ajxFile = "<?php echo $_SERVER["PHP_SELF"]; ?>";
|
|
var erfasst = new Array();
|
|
$(document).ready(function() {
|
|
if(document.getElementById('inventarnummer'))
|
|
document.getElementById('inventarnummer').focus();
|
|
|
|
$('#inventarnummer').keypress(function(event){
|
|
if(event.keyCode=='13')
|
|
inventarnummerchange();
|
|
});
|
|
})
|
|
|
|
function inventarnummerchange()
|
|
{
|
|
var item=document.getElementById('inventarnummer');
|
|
if (item.value.length>=10)
|
|
{
|
|
setTimeout('loadInventar()',500);
|
|
}
|
|
}
|
|
|
|
function loadInventar()
|
|
{
|
|
var inventarnummer = document.getElementById('inventarnummer').value;
|
|
erfasst.push(inventarnummer);
|
|
|
|
$.ajax
|
|
(
|
|
{
|
|
type: "POST",
|
|
dataType: "json",
|
|
url: ajxFile,
|
|
data: "ajax=inventarisieren&person_id="+encodeURIComponent('<?php echo $person_id;?>')+"&ort_kurzbz="+encodeURIComponent('<?php echo $ort_kurzbz ?>')+"&inventarnummer=" + encodeURIComponent(inventarnummer),
|
|
success: function(phpData)
|
|
{
|
|
var div = document.getElementById('inventarliste');
|
|
var li = document.createElement("li");
|
|
|
|
li.innerHTML = '<a href="inventar.php?betriebsmittel_id='+phpData.betriebsmittel_id+'" target="_blank">'
|
|
+phpData.inventarnummer+'<\/a>'
|
|
+' - '+phpData.beschreibung+' - '+phpData.verwendung;
|
|
|
|
div.appendChild(li);
|
|
document.getElementById('inventarnummer').value='';
|
|
document.getElementById('inventarnummer').focus();
|
|
return;
|
|
},
|
|
error: function(XMLHttpRequest, textStatus, errorThrown)
|
|
{
|
|
var div = document.getElementById('inventarliste');
|
|
var p = document.createElement("p");
|
|
var txt = document.createTextNode("Error:"+inventarnummer);
|
|
ErrorSound();
|
|
p.appendChild(txt);
|
|
div.appendChild(p);
|
|
document.getElementById('inventarnummer').value='';
|
|
document.getElementById('inventarnummer').focus();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
function formatItem(row)
|
|
{
|
|
return row[0] + " <i>" + row[1] + "<\/i> ";
|
|
}
|
|
function ErrorSound()
|
|
{
|
|
var audioElement = document.getElementById('sound1');
|
|
audioElement.play();
|
|
}
|
|
</script>
|
|
</head>
|
|
<body>
|
|
|
|
<audio src="<?php echo APP_ROOT;?>skin/sounds/inventar_error.ogg" id="sound1"/>
|
|
Your browser does not support the audio tag.
|
|
</audio>
|
|
<h1 title="Anwender:<?php echo $uid ?>"> Inventar - Inventur </h1>
|
|
<form name="sendform" action="<?php echo $_SERVER["PHP_SELF"]; ?>" method="post" enctype="application/x-www-form-urlencoded">
|
|
<div>
|
|
<table class="navbar">
|
|
<tr>
|
|
<td><label for="ort_kurzbz">Ort</label>
|
|
<input id="ort_kurzbz" name="ort_kurzbz" size="10" maxlength="40" value="<?php echo $ort_kurzbz;?>" />
|
|
<script type="text/javascript">
|
|
|
|
function selectItem(li) {
|
|
return false;
|
|
}
|
|
|
|
$(document).ready(function() {
|
|
$('#ort_kurzbz').autocomplete({
|
|
source: "inventar_autocomplete.php?work=inventar_ort",
|
|
minLength:2,
|
|
response: function(event, ui)
|
|
{
|
|
//Value und Label fuer die Anzeige setzen
|
|
for(i in ui.content)
|
|
{
|
|
ui.content[i].value=ui.content[i].ort_kurzbz;
|
|
ui.content[i].label=ui.content[i].ort_kurzbz+" "+ui.content[i].bezeichnung;
|
|
}
|
|
},
|
|
select: function(event, ui)
|
|
{
|
|
ui.item.value=ui.item.ort_kurzbz;
|
|
}
|
|
});
|
|
/* $('#ort_kurzbz').autocomplete('inventar_autocomplete.php', {
|
|
minChars:2,
|
|
matchSubset:1,matchContains:1,
|
|
width:300,
|
|
cacheLength:0,
|
|
onItemSelect:selectItem,
|
|
formatItem:formatItem,
|
|
extraParams:{'work':'inventar_ort'
|
|
,'betriebsmitteltyp':$("#betriebsmitteltyp").val()
|
|
,'betriebsmittelstatus_kurzbz':$("#betriebsmittelstatus_kurzbz").val() }
|
|
}); */
|
|
});
|
|
</script>
|
|
</td>
|
|
|
|
<td> <label for="person_id">Mitarbeiter</label>
|
|
<input id="person_id" name="person_id" size="13" maxlength="14" value="<?php echo $person_id; ?>">
|
|
<script type="text/javascript">
|
|
|
|
$(document).ready(function()
|
|
{
|
|
$('#person_id').autocomplete({
|
|
source: "inventar_autocomplete.php?work=person",
|
|
minLength:4,
|
|
response: function(event, ui)
|
|
{
|
|
//Value und Label fuer die Anzeige setzen
|
|
for(i in ui.content)
|
|
{
|
|
ui.content[i].value=ui.content[i].person_id;
|
|
ui.content[i].label=ui.content[i].person_id+' '+ui.content[i].anrede+' '+ui.content[i].titelpre+' '+ui.content[i].vorname+' '+ui.content[i].nachname+' '+ui.content[i].funktion;
|
|
}
|
|
},
|
|
select: function(event, ui)
|
|
{
|
|
ui.item.value=ui.item.person_id;
|
|
}
|
|
});
|
|
/* $('#person_id').autocomplete('inventar_autocomplete.php',
|
|
{
|
|
minChars:4,
|
|
matchSubset:1,matchContains:1,
|
|
width:400,
|
|
formatItem:formatItem,
|
|
extraParams:{'work':'person' }
|
|
}); */
|
|
});
|
|
</script>
|
|
<?php
|
|
echo $personen_namen;
|
|
?>
|
|
</td>
|
|
<td class="ac_submit"> <a href="javascript:document.sendform.work.value='inventarisieren';document.sendform.submit();"><img src="../../skin/images/application_go.png" alt="suchen" /> Inventur starten</a></td>
|
|
<td class="ac_submit"> <a href="javascript:document.sendform.work.value='uebersicht';document.sendform.submit();"><img src="../../skin/images/application_go.png" alt="suchen" /> Übersicht - keine Inventur</a></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<input type="hidden" name="work" value="" />
|
|
</form>
|
|
<?php
|
|
// ----------------------------------------
|
|
// Inventardaten - lesen
|
|
// ----------------------------------------
|
|
if($ort_kurzbz!='')
|
|
{
|
|
$ort_obj = new ort();
|
|
if(!$ort_obj->load($ort_kurzbz))
|
|
die('Der eingetragene Ort ist ungueltig');
|
|
}
|
|
|
|
if($person_id!='')
|
|
{
|
|
$person_obj = new person();
|
|
if(!$person_obj->load($person_id))
|
|
die('Die eingetragene Person ist ungueltig');
|
|
}
|
|
$oBetriebsmittel = new betriebsmittel();
|
|
if($work=='inventarisieren')
|
|
{
|
|
if($ort_kurzbz!='' || $person_id!='')
|
|
{
|
|
echo '
|
|
<span style="font-size:small">Inventur für '.$ort_kurzbz.' '.$personen_namen.'</span>
|
|
<hr />
|
|
<label for="inventarnummer">Inventarnummer: </label>
|
|
<input id="inventarnummer" name="inventarnummer" type="text" size="10" maxlength="30">
|
|
<hr />
|
|
<div id="inventarliste">
|
|
</div>';
|
|
|
|
}
|
|
else
|
|
{
|
|
echo 'Ort oder Person muss angegeben werden';
|
|
}
|
|
}
|
|
elseif($work=='uebersicht')
|
|
{
|
|
echo '<hr>Die folgenden Betriebsmittel wurden in den letzten 20 Wochen nicht inventarisiert und sind zugeordnet:<br /><br />';
|
|
|
|
$qry = "SELECT * FROM wawi.tbl_betriebsmittel LEFT JOIN wawi.tbl_bestellung USING(bestellung_id)
|
|
WHERE
|
|
(inventuramum is null OR inventuramum < now()-'20 weeks'::interval)";
|
|
if($ort_kurzbz!='')
|
|
$qry.=" AND ort_kurzbz='".addslashes($ort_kurzbz)."'";
|
|
if($person_id!='')
|
|
{
|
|
//Letzte zugeteilte Person filtern
|
|
$qry.="
|
|
AND EXISTS (
|
|
SELECT person_id
|
|
FROM wawi.tbl_betriebsmittelperson
|
|
WHERE
|
|
retouram IS NULL
|
|
AND betriebsmittel_id=tbl_betriebsmittel.betriebsmittel_id
|
|
AND person_id='".addslashes($person_id)."'
|
|
)";
|
|
}
|
|
//$qry.=" AND wawi.get_status_betriebsmittel(betriebsmittel_id) IN ('Aenderung','Inventar Extern','Inventur','Reparatur','vorhanden','keineZuordnung')";
|
|
$qry.=" AND (SELECT betriebsmittelstatus_kurzbz
|
|
FROM wawi.tbl_betriebsmittel_betriebsmittelstatus
|
|
WHERE betriebsmittel_id=tbl_betriebsmittel.betriebsmittel_id
|
|
ORDER BY datum desc,insertamum desc, betriebsmittelbetriebsmittelstatus_id desc
|
|
LIMIT 1) IN ('Aenderung','Inventar Extern','Inventur','Reparatur','vorhanden','keineZuordnung')
|
|
AND betriebsmitteltyp NOT IN('Zutrittskarte','Schluessel')";
|
|
|
|
$db = new basis_db();
|
|
if($result = $db->db_query($qry))
|
|
{
|
|
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
|
|
echo 'Anzahl:'.$db->db_num_rows($result);
|
|
echo '<table>';
|
|
echo '<tr class="liste">
|
|
<th></th>
|
|
<th>Inv.Nr</th>
|
|
<th>Beschreibung</th>
|
|
<th>Verwendung</th>
|
|
<th>Typ</th>
|
|
<th>Bestellnr</th>
|
|
<th colspan="2">Inventur</th>
|
|
</tr>';
|
|
$i=0;
|
|
while($row = $db->db_fetch_object($result))
|
|
{
|
|
$i++;
|
|
echo '<tr class="liste'.($i%2).'">';
|
|
echo '<td><input type="checkbox" checked="checked" name="bmid[]" value="'.$row->betriebsmittel_id.'"/></td>';
|
|
echo '<td><a href="inventar.php?betriebsmittel_id='.$row->betriebsmittel_id.'" target="_blank">'.$row->inventarnummer.'</a></td>';
|
|
echo '<td>',$row->beschreibung,'</td>';
|
|
echo '<td>',$row->verwendung,'</td>';
|
|
echo '<td>',$row->betriebsmitteltyp,'</td>';
|
|
echo '<td>',$row->bestell_nr,'</td>';
|
|
echo '<td>',$row->inventuramum,'</td>';
|
|
echo '<td>',$row->inventurvon,'</td>';
|
|
echo '</tr>';
|
|
}
|
|
echo '</table><br />';
|
|
echo '<SELECT name="work">
|
|
<OPTION value="dummy">Verschieben in DUMMY Raum</OPTION>
|
|
<OPTION value="ausscheiden">Statusänderung - ausgeschieden</OPTION>';
|
|
|
|
$ort = new ort();
|
|
$ort->getAll();
|
|
foreach($ort->result as $row_ort)
|
|
{
|
|
echo '<option value="'.$row_ort->ort_kurzbz.'">'.$row_ort->ort_kurzbz.'</option>';
|
|
}
|
|
echo '
|
|
</SELECT>';
|
|
echo '<input type="hidden" name="ort_kurzbz" value="'.$ort_kurzbz.'" />';
|
|
echo '<input type="hidden" name="person_id" value="'.$person_id.'" />';
|
|
echo '<input type="submit" name="updateliste" value="Durchführen" />';
|
|
echo '</form>';
|
|
}
|
|
}
|
|
?>
|
|
</body>
|
|
</html>
|