From 7f10ffa56d157d6bac2cd647cbe196ff23aab149 Mon Sep 17 00:00:00 2001 From: Karl Burkhart Date: Tue, 21 Dec 2010 12:47:00 +0000 Subject: [PATCH] --- include/wawi_bestellung.class.php | 99 +++++++++++++++++++++++++- wawi/bestellung.php | 113 +++++++++++++++++++++--------- 2 files changed, 179 insertions(+), 33 deletions(-) diff --git a/include/wawi_bestellung.class.php b/include/wawi_bestellung.class.php index a6e2eb24b..7c4441289 100644 --- a/include/wawi_bestellung.class.php +++ b/include/wawi_bestellung.class.php @@ -427,11 +427,17 @@ class wawi_bestellung extends basis_db } /** * - * Rechnet den Bruttopreis einer Rechnung aus + * Rechnet den Bruttopreis einer Rechnung aus, false im Fehlerfall * @param $bestellung_id dessen Bruttopreis ausgerechnet werden soll */ public function getBrutto($bestellung_id) { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + $brutto = 0; $qry_brutto= "select sum(brutto) as brutto from @@ -463,6 +469,12 @@ class wawi_bestellung extends basis_db */ function copyBestellung($bestellung_id, $user) { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + $error = false; $this->db_query('BEGIN;'); @@ -585,6 +597,12 @@ class wawi_bestellung extends basis_db */ public function FreigabeOe($bestellung_id) { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + $oe = new organisationseinheit(); $bestellung = new wawi_bestellung(); @@ -619,7 +637,86 @@ class wawi_bestellung extends basis_db } else return false; + } + + /** + * + * Gibt true zurück wenn schon eine Rechnung zur Übergebenen Bestellung vorhanden ist, andernfalls false + * @param $bestellung_id + */ + public function RechnungVorhanden($bestellung_id) + { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + + $qry = "SELECT * FROM wawi.tbl_rechnung WHERE bestellung_id = ".$bestellung_id.";"; + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return true; + } + return false; + } + else + return false; + } + + /** + * + * Enter description here ... + * @param unknown_type $bestellung_id + */ + public function SetFreigegeben($bestellung_id) + { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + + $qry = "UPDATE wawi.tbl_bestellung SET freigegeben = true where bestellung_id = ".$bestellung_id.";"; + + if($this->db_query($qry)) + return true; + else + { + $this->errormsg ="Fehler beim Setzen von Freigegeben"; + return false; + } + } + + /** + * + * true wenn die Bestellung schon freigegeben wurde + * @param $bestellung_id + */ + public function isFreigegeben($bestellung_id) + { + if(!is_numeric($bestellung_id)) + { + $this->errormsg = "Keine gültige Bestell ID"; + return false; + } + + $qry = "SELECT * FROM wawi.tbl_bestellung WHERE freigegeben = true AND bestellung_id = ".$bestellung_id.";"; + + if($this->db_query($qry)) + { + if($row = $this->db_fetch_object()) + { + return true; + } + } + else + { + return false; + } + return false; } } \ No newline at end of file diff --git a/wawi/bestellung.php b/wawi/bestellung.php index dc693e635..611b37be3 100644 --- a/wawi/bestellung.php +++ b/wawi/bestellung.php @@ -656,13 +656,16 @@ if($aktion == 'suche') // Bestellung löschen $id = (isset($_GET['id'])?$_GET['id']:null); $bestellung = new wawi_bestellung(); - if($bestellung->delete($id)) + if($bestellung->RechnungVorhanden($id)) { - echo 'Bestellung erfolgreich gelöscht.
'; + echo 'Kann nicht gelöscht werden. Der Bestellung ist noch eine Rechnung zugeordnet.'; } - else + else { - echo $bestellung->errormsg; + if($bestellung->delete($id)) + echo 'Bestellung erfolgreich gelöscht.
'; + else + echo $bestellung->errormsg; } } else if($_GET['method']=='deletedetail') @@ -682,7 +685,6 @@ if($aktion == 'suche') $bestellung = new wawi_bestellung(); if ($bestellung_neu = $bestellung->copyBestellung($bestellung_id, $user)) { - //header ("Location: bestellung.php?method=update&id=$bestellung_neu"); $_GET['method']='update'; $_GET['id']=$bestellung_neu; } @@ -771,7 +773,6 @@ if($aktion == 'suche') echo "Lieferadresse:\n"; echo ""; - //} + } } // Welche OEs müssen noch freigeben wenn KST schon freigegeben hat @@ -915,7 +914,12 @@ if($aktion == 'suche') } if($freigabe == false) { - echo "alle freigegeben."; + if(!$bestellung->isFreigegeben($bestellung->bestellung_id)) + { + $bestellung->SetFreigegeben($bestellung->bestellung_id); + } + else + echo "alle freigegeben"; } } @@ -1439,6 +1443,7 @@ if($aktion == 'suche') $uids = $rechte->getFreigabeBenutzer($bestellung_new->kostenstelle_id, null); foreach($uids as $uid) { + echo $uid; // E-Mail an Kostenstellenverantwortliche senden $msg ="$bestellung_new->bestellung_id freigeben. bestellung_id> drücken "; $mail = new mail($uid.'@'.DOMAIN, 'no-reply', 'Freigabe Bestellung', $msg); @@ -1451,7 +1456,7 @@ if($aktion == 'suche') } } } - } + // kostenstelle gibt frei if(isset($_POST['btn_freigabe']) ) { @@ -1483,28 +1488,42 @@ if($aktion == 'suche') { echo "Fehler beim Setzen auf Status Freigabe.
"; echo " Zurück zur Bestellung "; - - // wer ist freigabeberechtigt auf Organisationseinheit - $rechte = new benutzerberechtigung(); - $uids = $rechte->getFreigabeBenutzer($bestellung_new->kostenstelle_id, null); - foreach($uids as $uid) - { - // E-Mail an Kostenstellenverantwortliche senden - $msg ="$bestellung_new->bestellung_id freigeben. bestellung_id> drücken "; - $mail = new mail($uid.'@'.DOMAIN, 'no-reply', 'Freigabe Bestellung', $msg); - $mail->setHTMLContent($msg); - if(!$mail->send()) - echo 'Fehler beim Senden des Mails'; - else - echo '
Mail verschickt!'; - } - - } else { echo " Zurück zur Bestellung
"; echo "FREIGABE KOSTENSTELLE erfolgreich"; + + // wer ist freigabeberechtigt auf nächsthöhere Organisationseinheit + $oes = array(); + $oes = $bestellung_new->FreigabeOe($bestellung_id); + $freigabe= false; + foreach($oes as $o) + { + if(!$status->isStatiVorhanden($bestellung_new->bestellung_id, 'Freigabe', $o)) + { + $rechte = new benutzerberechtigung(); + $uids = $rechte->getFreigabeBenutzer(null, $o); + $freigabe = true; + break; + } + } + if(!$freigabe == false) + { + // es wurde noch nicht alles Freigegeben + foreach($uids as $uid) + { + echo $uid; + // E-Mail an Kostenstellenverantwortliche senden + $msg ="$bestellung_new->bestellung_id freigeben. bestellung_id> drücken "; + $mail = new mail($uid.'@'.DOMAIN, 'no-reply', 'Freigabe Bestellung', $msg); + $mail->setHTMLContent($msg); + if(!$mail->send()) + echo 'Fehler beim Senden des Mails'; + else + echo '
Mail verschickt!'; + } + } } } } @@ -1542,11 +1561,41 @@ if($aktion == 'suche') { echo " Zurück zur Bestellung
"; echo "FREIGABE OE erfolgreich"; + + // wer ist freigabeberechtigt auf nächsthöhere Organisationseinheit + $oes = array(); + $oes = $bestellung_new->FreigabeOe($bestellung_id); + $freigabe = false; + foreach($oes as $o) + { + if(!$status->isStatiVorhanden($bestellung_new->bestellung_id, 'Freigabe', $o)) + { + $rechte = new benutzerberechtigung(); + $uids = $rechte->getFreigabeBenutzer(null, $o); + $freigabe = true; + break; + } + } + if(!$freigabe == false) + { + // es wurde noch nicht alles Freigegeben + foreach($uids as $uid) + { + // E-Mail an Kostenstellenverantwortliche senden + $msg ="$bestellung_new->bestellung_id freigeben. bestellung_id> drücken "; + $mail = new mail($uid.'@'.DOMAIN, 'no-reply', 'Freigabe Bestellung', $msg); + $mail->setHTMLContent($msg); + if(!$mail->send()) + echo 'Fehler beim Senden des Mails'; + else + echo '
Mail verschickt!'; + } + } } } } } - + } } function getDetailRow($i, $bestelldetail_id='', $menge='', $ve='', $beschreibung='', $artikelnr='', $preisprove='', $mwst='', $brutto='')