From cf6a4324ddd8d13745083a5bea3f7617e609a68b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20=C3=96sterreicher?= Date: Wed, 12 Jan 2011 13:40:11 +0000 Subject: [PATCH] =?UTF-8?q?WaWi=20-=20Budgeteingabe=20-=20Budget=C3=BCbers?= =?UTF-8?q?icht=20Kostenstellen=20-=20Gruppenberechtigung=20werden=20nicht?= =?UTF-8?q?=20syncronisiert?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/tw/wawi_menu_main.inc.php | 3 +- include/wawi_kostenstelle.class.php | 57 ++++++++++++ include/wawi_rechnung.class.php | 63 +++++++++++++ skin/tablesort.css | 1 - skin/wawi.css | 11 ++- system/sync/sync_berechtigung.php | 29 +++--- wawi/budget.php | 138 ++++++++++++++++++++++++++++ wawi/kostenstellenuebersicht.php | 42 +++++++-- 8 files changed, 319 insertions(+), 25 deletions(-) create mode 100644 wawi/budget.php diff --git a/include/tw/wawi_menu_main.inc.php b/include/tw/wawi_menu_main.inc.php index 15d85d76a..644d867a3 100644 --- a/include/tw/wawi_menu_main.inc.php +++ b/include/tw/wawi_menu_main.inc.php @@ -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 diff --git a/include/wawi_kostenstelle.class.php b/include/wawi_kostenstelle.class.php index b7a7a1eb1..90331ff78 100644 --- a/include/wawi_kostenstelle.class.php +++ b/include/wawi_kostenstelle.class.php @@ -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; + } } diff --git a/include/wawi_rechnung.class.php b/include/wawi_rechnung.class.php index 6c9ab112e..008253ccd 100644 --- a/include/wawi_rechnung.class.php +++ b/include/wawi_rechnung.class.php @@ -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; + } + } } \ No newline at end of file diff --git a/skin/tablesort.css b/skin/tablesort.css index 06f5c4bf4..6dfa79e2e 100644 --- a/skin/tablesort.css +++ b/skin/tablesort.css @@ -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; diff --git a/skin/wawi.css b/skin/wawi.css index f490d6617..f5ef59bf2 100644 --- a/skin/wawi.css +++ b/skin/wawi.css @@ -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 { diff --git a/system/sync/sync_berechtigung.php b/system/sync/sync_berechtigung.php index a58c09a6b..492e584c2 100644 --- a/system/sync/sync_berechtigung.php +++ b/system/sync/sync_berechtigung.php @@ -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)) { diff --git a/wawi/budget.php b/wawi/budget.php new file mode 100644 index 000000000..b869d02be --- /dev/null +++ b/wawi/budget.php @@ -0,0 +1,138 @@ +, + * Andreas Oesterreicher and + * Karl Burkhart . + */ + +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'); +?> + + + + WaWi Kostenstellen - Budget + + + + + + + + + + +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.'
'; + } + } +} + +echo '

Kostenstellen - Budget

'; +$gj = new geschaeftsjahr(); + +//Wenn kein GJ uebergeben wurde wird das aktuelle ausgewaehlt +if($geschaeftsjahr_kurzbz=='') + $geschaeftsjahr_kurzbz = $gj->getakt(); + +$gj->getAll(); +echo '
'; +echo 'Geschäftsjahr: '; +echo ' '; +echo '
'; + +$kst = new wawi_kostenstelle(); +$kst->getAll(); + +echo '
'; +echo ' + + + + + + + + '; +foreach($kst->result as $row) +{ + $budget = $kst->getBudget($row->kostenstelle_id, $geschaeftsjahr_kurzbz); + echo ''; + echo ''; + echo ''; +} +echo ' +
IDKostenstelleBudget
',$row->kostenstelle_id,''; + echo '',$row->bezeichnung,''; + echo '
'; + +echo ''; +echo '
'; +echo '





'; + +?> \ No newline at end of file diff --git a/wawi/kostenstellenuebersicht.php b/wawi/kostenstellenuebersicht.php index 3c5e3048e..1ebd211fe 100644 --- a/wawi/kostenstellenuebersicht.php +++ b/wawi/kostenstellenuebersicht.php @@ -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'); ?> check_konto_kostenstelle($kostenstelle_id, $konto_id)) { if(!$kostenstelle->save_konto_kostenstelle($kostenstelle_id, $konto_id)) - $message = 'Es ist ein Fehler beim Speichern aufgetreten.

'; } + $message = 'Es ist ein Fehler beim Speichern aufgetreten.

'; + } } } if(!$kostenstelle->delete_konto_kostenstelle($kostenstelle_id, $active)) @@ -517,33 +520,52 @@ else { //echo 'neue Kostenstelle anlegen
'; //echo 'Konten zusammenlegen

'; + $gj = new geschaeftsjahr(); + $geschaeftsjahr_kurzbz = $gj->getakt(); echo "\n"; echo ' - - + + - + - + '; - + + $rechnung = new wawi_rechnung(); foreach($kostenstelle->result as $row) { //Zeilen der Tabelle ausgeben echo "\n"; - echo " + "; echo '\n"; echo '\n"; - echo '\n"; + echo '\n"; echo '\n"; $budget = $kostenstelle->getBudget($row->kostenstelle_id); - echo '\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 '\n"; echo '\n"; - echo '\n"; + echo '\n"; echo "\n"; }
Kostenstelle_idKostenstelle_NrIDNr Bezeichnung KurzbezeichnungBudgetRestbudget für
'.$geschaeftsjahr_kurzbz.'
OrganisationseinheitaktivAktiv
kostenstelle_id\" title=\"Konten zuordnen\"> kostenstelle_id\" title=\"Bearbeiten\"> kostenstelle_id\" onclick='return conf_del()' title='Löschen'> \n"; + echo " + + kostenstelle_id\" title=\"Konten zuordnen\"> + kostenstelle_id\" title=\"Bearbeiten\"> + kostenstelle_id\" onclick='return conf_del()' title='Löschen'> \n + '.$row->kostenstelle_id."'.$row->kostenstelle_nr."'.$row->bezeichnung."'.htmlspecialchars($row->bezeichnung)."'.$row->kurzbz."'.number_format($budget, 2, ",",".")."'.number_format($restbudget, 2, ",",".")."'.$row->oe_kurzbz."'.$aktiv=($row->aktiv)?'ja':'nein'."'.($row->aktiv?'ja':'nein')."