- Budgeteingabe
- Budgetübersicht Kostenstellen
- Gruppenberechtigung werden nicht syncronisiert
This commit is contained in:
Andreas Österreicher
2011-01-12 13:40:11 +00:00
parent 0383f448ec
commit cf6a4324dd
8 changed files with 319 additions and 25 deletions
+2 -1
View File
@@ -26,7 +26,7 @@ $menu=array
(
'Administration'=> array
(
'name'=>'Administration', 'opener'=>'true', 'hide'=>'false', 'permissions'=>array('wawi/kostenstelle','wawi/konto'),
'name'=>'Administration', 'opener'=>'true', 'hide'=>'false', 'permissions'=>array('wawi/kostenstelle','wawi/konto','wawi/budget'),
'Konto'=>array
(
@@ -39,6 +39,7 @@ $menu=array
'name'=>'Kostenstelle', 'permissions'=>array('wawi/kostenstelle'),'link'=>'kostenstellenuebersicht.php', 'target'=>'content',
'KostenstelleNeu'=>array('name'=>'Neu', 'link'=>'kostenstellenuebersicht.php?method=update', 'target'=>'content'),
'KostenstelleZusammenlegen'=>array('name'=>'Zusammenlegen', 'link'=>'kostenstellenuebersicht.php?method=merge', 'target'=>'content'),
'Budgeteingabe'=>array('name'=>'Budgeteingabe', 'permissions'=>array('wawi/budget'), 'link'=>'budget.php', 'target'=>'content'),
),
),
'Benutzerbereich'=> array
+57
View File
@@ -562,4 +562,61 @@ class wawi_kostenstelle extends basis_db
return false;
}
}
/**
* Speichert das Budget einer Kostenstelle
*
* @param $kostenstelle_id
* @param $geschaeftsjahr_kurzbz
* @param $budget
*/
public function setBudget($kostenstelle_id, $geschaeftsjahr_kurzbz, $budget)
{
if($kostenstelle_id=='')
{
$this->errormsg = 'KostenstelleID muss uebergeben weden';
return false;
}
if($geschaeftsjahr_kurzbz=='')
{
$this->errormsg = 'Geschaeftsjahr muss uebergeben werden';
return false;
}
if($budget=='')
$budget='0';
if(!is_numeric($budget))
{
$this->errormsg = 'Budget ist ungueltig';
return false;
}
$qry = '';
if($old_budget = $this->getBudget($kostenstelle_id, $geschaeftsjahr_kurzbz))
{
if($old_budget!=$budget)
{
$qry = "UPDATE wawi.tbl_budget SET budget=".$this->addslashes($budget)." WHERE kostenstelle_id=".$this->addslashes($kostenstelle_id)." AND geschaeftsjahr_kurzbz=".$this->addslashes($geschaeftsjahr_kurzbz).";";
}
}
else
{
$qry = "INSERT INTO wawi.tbl_budget(kostenstelle_id, geschaeftsjahr_kurzbz, budget) VALUES(".$this->addslashes($kostenstelle_id).",".$this->addslashes($geschaeftsjahr_kurzbz).",".$this->addslashes($budget).");";
}
if($qry!='')
{
if($this->db_query($qry))
{
return true;
}
else
{
$this->errormsg='Fehler beim Speichern des Budgets';
return false;
}
}
else
return true;
}
}
+63
View File
@@ -23,6 +23,7 @@
* Klasse WaWi Rechnung
*/
require_once(dirname(__FILE__).'/basis_db.class.php');
require_once(dirname(__FILE__).'/geschaeftsjahr.class.php');
class wawi_rechnung extends basis_db
{
@@ -540,6 +541,11 @@ class wawi_rechnung extends basis_db
}
}
/**
* Liefert den gesamten Bruttobetrag von einer Rechnung
*
* @param $rechnung_id
*/
public function getBrutto($rechnung_id)
{
$this->loadBetraege($rechnung_id);
@@ -550,4 +556,61 @@ class wawi_rechnung extends basis_db
}
return $brutto;
}
/**
* Liefert die Summe der Brutto Rechnungsbeträge einer Kostenstelle in einem Geschäftsjahr
*
* @param $geschaeftsjahr_kurzbz
* @param $kostenstelle_id
*/
public function getAusgaben($geschaeftsjahr_kurzbz, $kostenstelle_id)
{
if(!is_numeric($kostenstelle_id))
{
$this->errormsg = 'KostenstelleID ist ungueltig';
return false;
}
$gj = new geschaeftsjahr();
if(!$gj->load($geschaeftsjahr_kurzbz))
{
$this->errormsg = 'Fehler beim Laden des Geschaeftsjahres';
return false;
}
$qry = "
SELECT sum(brutto) as gesamt
FROM
(
SELECT
(tbl_rechnungsbetrag.betrag*(tbl_rechnungsbetrag.mwst+100)/100) as brutto
FROM
wawi.tbl_rechnung
JOIN wawi.tbl_bestellung USING(bestellung_id)
JOIN wawi.tbl_rechnungsbetrag USING(rechnung_id)
WHERE
kostenstelle_id='$kostenstelle_id'
AND tbl_bestellung.insertamum>='".$gj->start."'
AND tbl_bestellung.insertamum<='".$gj->ende."'
) as a
";
if($result = $this->db_query($qry))
{
if($row = $this->db_fetch_object($result))
{
return $row->gesamt;
}
else
{
$this->errormsg = 'Fehler beim Berechnen der Daten';
return false;
}
}
else
{
$this->errormsg = 'Fehler beim Laden der Daten';
return false;
}
}
}
-1
View File
@@ -21,7 +21,6 @@ table.tablesorter thead tr .header {
cursor: pointer;
}
table.tablesorter tbody td {
color: #3D3D3D;
padding: 4px;
background-color: #FFF;
vertical-align: top;
+10 -1
View File
@@ -81,7 +81,6 @@ BODY
table.tablesorter tbody td
{
color: #3D3D3D;
padding: 4px;
background-color: #EEEEEE;
vertical-align: top;
@@ -115,6 +114,16 @@ table.dark td
{
text-align: right;
}
.number_negative
{
text-align: right;
color: red;
}
.number_positive
{
text-align: right;
color: green;
}
option.rechnung_nichtfreigegeben
{
+17 -12
View File
@@ -66,10 +66,6 @@ checkBerechtigung('wawi/rechnung_transfer','Setzen des TransferDatums von Rechnu
*
* Direkte Kostenstellenzuordnung
* UNION
* Kostenstellenzuordnung über Gruppen
* UNION
* Studiengangszuordnung über Gruppen
* UNION
* Direkte Studiengangszuordnung
*/
$qry="
@@ -81,7 +77,22 @@ $qry="
public.kostenstelle_benutzer
JOIN public.benutzer USING(user_id)
UNION
SELECT
SELECT
username_neu, lesen, schreiben, freigeben, verwalten, null as kostenstelle_id, oe_kurzbz
FROM
public.studiengang_benutzer
JOIN public.benutzer USING(user_id)
JOIN public.studiengang USING(studiengang_id)
";
/*
* Wird nicht uebernommen:
*
* Kostenstellenzuordnung über Gruppen
* UNION
* Studiengangszuordnung über Gruppen
* UNION
SELECT
username_neu, lesen, schreiben, freigeben, verwalten, kostenstelle_id, null as oe_kurzbz
FROM
public.kostenstelle_gruppe
@@ -96,13 +107,7 @@ $qry="
JOIN public.benutzer USING(user_id)
JOIN public.studiengang USING(studiengang_id)
UNION
SELECT
username_neu, lesen, schreiben, freigeben, verwalten, null as kostenstelle_id, oe_kurzbz
FROM
public.studiengang_benutzer
JOIN public.benutzer USING(user_id)
JOIN public.studiengang USING(studiengang_id)
";
*/
if($result=pg_query($conn_wawi, $qry))
{
+138
View File
@@ -0,0 +1,138 @@
<?php
/* Copyright (C) 2010 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> and
* Karl Burkhart <burkhart@technikum-wien.at>.
*/
require_once('../config/wawi.config.inc.php');
require_once('../include/organisationseinheit.class.php');
require_once('auth.php');
require_once('../include/wawi_kostenstelle.class.php');
require_once('../include/wawi_konto.class.php');
require_once('../include/benutzerberechtigung.class.php');
require_once('../include/geschaeftsjahr.class.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>WaWi Kostenstellen - Budget</title>
<link rel="stylesheet" href="../skin/tablesort.css" type="text/css"/>
<link rel="stylesheet" href="../skin/wawi.css" type="text/css"/>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="../include/js/jquery.js"></script>
<script type="text/javascript" src="../include/js/jquery.metadata.js"></script>
<script type="text/javascript" src="../include/js/jquery.tablesorter.js"></script>
<script type="text/javascript">
$(document).ready(function()
{
$("#myTable").tablesorter(
{
sortList: [[1,0]],
widgets: ['zebra']
});
}
);
</script>
</head>
<body>
<?php
$kostenstelle = new wawi_kostenstelle();
$user=get_uid();
$rechte = new benutzerberechtigung();
$rechte->getBerechtigungen($user);
if(!$rechte->isBerechtigt('wawi/budget'))
die('Sie haben keine Berechtigung für diese Seite');
$geschaeftsjahr_kurzbz=(isset($_GET['geschaeftsjahr_kurzbz'])?$_GET['geschaeftsjahr_kurzbz']:'');
if(isset($_POST['save']))
{
if(!$rechte->isBerechtigt('wawi/budget',null, 'suid'))
die('Sie haben keine Berechtigung zum Speichern');
foreach($_POST as $key=>$value)
{
if(mb_strstr($key,"budget_"))
{
$kostenstelle_id = mb_substr($key,mb_strlen('budget_'));
$kst = new wawi_kostenstelle();
$budget = mb_str_replace(',', '.', $value);
if(!$kst->setBudget($kostenstelle_id, $geschaeftsjahr_kurzbz, $budget))
echo $kst->errormsg.'<br>';
}
}
}
echo '<h1>Kostenstellen - Budget</h1>';
$gj = new geschaeftsjahr();
//Wenn kein GJ uebergeben wurde wird das aktuelle ausgewaehlt
if($geschaeftsjahr_kurzbz=='')
$geschaeftsjahr_kurzbz = $gj->getakt();
$gj->getAll();
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="GET">';
echo 'Geschäftsjahr: <SELECT name="geschaeftsjahr_kurzbz">';
foreach($gj->result as $row)
{
if($row->geschaeftsjahr_kurzbz==$geschaeftsjahr_kurzbz)
$selected='selected';
else
$selected='';
echo '<OPTION value="'.$row->geschaeftsjahr_kurzbz.'" '.$selected.'>'.$row->geschaeftsjahr_kurzbz.'</OPTION>';
}
echo '</SELECT>';
echo ' <input type="submit" value="Anzeigen">';
echo '</form>';
$kst = new wawi_kostenstelle();
$kst->getAll();
echo '<form action="'.$_SERVER['PHP_SELF'].'?geschaeftsjahr_kurzbz='.$geschaeftsjahr_kurzbz.'" method="POST">';
echo '<table id="myTable" class="tablesorter" style="width: auto;">
<thead>
<tr>
<th>ID</th>
<th>Kostenstelle</th>
<th>Budget</th>
</tr>
</thead>
<tbody>';
foreach($kst->result as $row)
{
$budget = $kst->getBudget($row->kostenstelle_id, $geschaeftsjahr_kurzbz);
echo '<tr>';
echo '<td>',$row->kostenstelle_id,'</th>';
echo '<td>',$row->bezeichnung,'</th>';
echo '<td><input type="text" size="13" maxlenght="13" name="budget_'.$row->kostenstelle_id.'" value="'.$budget.'" class="number"></td>';
echo '</tr>';
}
echo '</tbody>
</table>';
echo '<input type="submit" name="save" value="Speichern">';
echo '</form>';
echo '<br><br><br><br><br><br>';
?>
+32 -10
View File
@@ -25,6 +25,8 @@ require_once('../include/organisationseinheit.class.php');
require_once('auth.php');
require_once('../include/wawi_kostenstelle.class.php');
require_once('../include/wawi_konto.class.php');
require_once('../include/wawi_rechnung.class.php');
require_once('../include/geschaeftsjahr.class.php');
require_once('../include/benutzerberechtigung.class.php');
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
@@ -340,7 +342,8 @@ if(isset($_GET['method']))
if(!$kostenstelle->check_konto_kostenstelle($kostenstelle_id, $konto_id))
{
if(!$kostenstelle->save_konto_kostenstelle($kostenstelle_id, $konto_id))
$message = 'Es ist ein Fehler beim Speichern aufgetreten.<br><br>'; }
$message = 'Es ist ein Fehler beim Speichern aufgetreten.<br><br>';
}
}
}
if(!$kostenstelle->delete_konto_kostenstelle($kostenstelle_id, $active))
@@ -517,33 +520,52 @@ else
{
//echo '<a href="kostenstellenuebersicht.php?method=update">neue Kostenstelle anlegen </a><br>';
//echo '<a href="kostenstellenuebersicht.php?method=merge">Konten zusammenlegen </a><br><br>';
$gj = new geschaeftsjahr();
$geschaeftsjahr_kurzbz = $gj->getakt();
echo "<table id='myTable' class='tablesorter'> <thead>\n";
echo '<tr>
<th></th>
<th>Kostenstelle_id</th>
<th>Kostenstelle_Nr</th>
<th>ID</th>
<th>Nr</th>
<th>Bezeichnung</th>
<th>Kurzbezeichnung</th>
<th>Budget</th>
<th>Restbudget für <br>'.$geschaeftsjahr_kurzbz.'</th>
<th>Organisationseinheit</th>
<th>aktiv</th>
<th>Aktiv</th>
</tr></thead><tbody>';
$rechnung = new wawi_rechnung();
foreach($kostenstelle->result as $row)
{
//Zeilen der Tabelle ausgeben
echo "<tr>\n";
echo "<td nowrap> <a href=\"kostenstellenuebersicht.php?method=allocate&id=$row->kostenstelle_id\" title=\"Konten zuordnen\"><img src=\"../skin/images/addKonto.png\"></a> <a href= \"kostenstellenuebersicht.php?method=update&id=$row->kostenstelle_id\" title=\"Bearbeiten\"> <img src=\"../skin/images/edit.gif\"> </a><a href=\"kostenstellenuebersicht.php?method=delete&id=$row->kostenstelle_id\" onclick='return conf_del()' title='Löschen'> <img src=\"../skin/images/delete.gif\"></a>\n";
echo "
<td nowrap>
<a href=\"kostenstellenuebersicht.php?method=allocate&amp;id=$row->kostenstelle_id\" title=\"Konten zuordnen\"> <img src=\"../skin/images/addKonto.png\"></a>
<a href= \"kostenstellenuebersicht.php?method=update&amp;id=$row->kostenstelle_id\" title=\"Bearbeiten\"> <img src=\"../skin/images/edit.gif\"> </a>
<a href=\"kostenstellenuebersicht.php?method=delete&amp;id=$row->kostenstelle_id\" onclick='return conf_del()' title='Löschen'> <img src=\"../skin/images/delete.gif\"></a>\n
</td>
";
echo '<td>'.$row->kostenstelle_id."</td>\n";
echo '<td>'.$row->kostenstelle_nr."</td>\n";
echo '<td>'.$row->bezeichnung."</td>\n";
echo '<td>'.htmlspecialchars($row->bezeichnung)."</td>\n";
echo '<td>'.$row->kurzbz."</td>\n";
$budget = $kostenstelle->getBudget($row->kostenstelle_id);
echo '<td class="number">'.number_format($budget, 2, ",",".")."</td>\n";
$ausgaben = $rechnung->getAusgaben($geschaeftsjahr_kurzbz, $row->kostenstelle_id);
$restbudget = $budget-$ausgaben;
if($restbudget>0)
$class="number_positive";
elseif($restbudget<0)
$class="number_negative";
else
$class="number";
echo '<td class="'.$class.'">'.number_format($restbudget, 2, ",",".")."</td>\n";
echo '<td>'.$row->oe_kurzbz."</td>\n";
echo '<td>'.$aktiv=($row->aktiv)?'ja':'nein'."</td>\n";
echo '<td>'.($row->aktiv?'ja':'nein')."</td>\n";
echo "</tr>\n";
}