diff --git a/include/konto.class.php b/include/konto.class.php index da32bff13..fe2080c97 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -15,7 +15,7 @@ * 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 , + * Authors: Christian Paminger , * Andreas Oesterreicher and * Rudolf Hangl . */ @@ -30,7 +30,7 @@ class konto var $new; // @var boolean var $errormsg; // @var string var $result = array(); // @var adresse Objekt - + //Tabellenspalten var $buchungsnr; var $person_id; @@ -47,9 +47,15 @@ class konto var $insertamum; var $insertvon; var $ext_id; - - var $beschreibung; - + var $anrede; + var $titelpost; + var $titelpre; + var $nachname; + var $vorname; + var $vornamen; + + //var $beschreibung; + // ************************************************************************** // * Konstruktor // * @param $conn Connection @@ -64,7 +70,7 @@ class konto { $qry = "SET CLIENT_ENCODING TO 'UNICODE';"; } - else + else { $qry="SET CLIENT_ENCODING TO 'LATIN9';"; } @@ -74,11 +80,11 @@ class konto return false; } } - + if($buchungsnr!=null) $this->load($buchungsnr); } - + // ************************************************ // * Laedt die Funktion mit der ID $buchungsnr // * @param $buchungsnr ID der zu ladenden Email @@ -91,9 +97,10 @@ class konto $this->errormsg = 'Buchungsnr muss eine gueltige Zahl sein'; return false; } - - $qry = "SELECT * FROM public.tbl_konto WHERE buchungsnr='$buchungsnr'"; - + + $qry = "SELECT tbl_konto.*, anrede, titelpost, titelpre, nachname, vorname, vornamen + FROM public.tbl_konto JOIN public.tbl_person USING (person_id) WHERE buchungsnr='$buchungsnr'"; + if($result = pg_query($this->conn, $qry)) { if($row = pg_fetch_object($result)) @@ -113,64 +120,70 @@ class konto $this->insertamum = $row->insertamum; $this->insertvon = $row->insertvon; $this->ext_id = $row->ext_id; + $this->anrede = $row->anrede; + $this->titelpost = $row->titelpost; + $this->titelpre = $row->titelpre; + $this->nachname = $row->nachname; + $this->vorname = $row->vorname; + $this->vornamen = $row->vornamen; return true; } - else + else { $this->errormsg = 'Datensatz wurde nicht gefunden'; return false; } } - else + else { $this->errormsg = 'Fehler beim laden der Daten'; return false; } } - + // ******************************************* // * Prueft die Variablen auf gueltigkeit // * @return true wenn ok, false im Fehlerfall // ******************************************* function validate() - { + { $this->betrag = str_replace(',','.',$this->betrag); if(!is_numeric($this->betrag)) { $this->errormsg = 'Betrag ist ungueltig'; return false; } - + if(!is_numeric($this->studiengang_kz)) { $this->errormsg = 'Studiengang_kz is ungueltig'; return false; } - + if($this->buchungstyp_kurzbz=='') { $this->errormsg = 'Typ muss angegeben werden'; return false; } - + if(!is_numeric($this->person_id)) { $this->errormsg = 'Person_id ist ungueltig'; return false; } - + if(!is_numeric($this->mahnspanne)) { $this->errormsg = 'Mahnspanne muss eine gueltige Zahl sein'; return false; } - - return true; + + return true; } - + // ************************************************ // * wenn $var '' ist wird "null" zurueckgegeben - // * wenn $var !='' ist werden datenbankkritische + // * wenn $var !='' ist werden datenbankkritische // * Zeichen mit backslash versehen und das Ergebnis // * unter Hochkomma gesetzt. // ************************************************ @@ -178,9 +191,9 @@ class konto { return ($var!=''?"'".addslashes($var)."'":'null'); } - + // *********************************************************************** - // * Speichert den aktuellen Datensatz in die Datenbank + // * Speichert den aktuellen Datensatz in die Datenbank // * Wenn $neu auf true gesetzt ist wird ein neuer Datensatz angelegt // * andernfalls wird der Datensatz mit der ID in $kontakt_id aktualisiert // * @param $new true wenn insert false wenn update @@ -191,14 +204,14 @@ class konto //Variablen pruefen if(!$this->validate()) return false; - + if($new==null) $new = $this->new; - + if($new) { //Neuen Datensatz einfuegen - + $qry='BEGIN;INSERT INTO public.tbl_konto (person_id, studiengang_kz, studiensemester_kurzbz, buchungsnr_verweis, betrag, buchungsdatum, buchungstext, mahnspanne, buchungstyp_kurzbz, updateamum, updatevon, insertamum, insertvon, ext_id) VALUES('. $this->addslashes($this->person_id).', '. $this->addslashes($this->studiengang_kz).', '. @@ -234,10 +247,10 @@ class konto ' insertvon='.$this->addslashes($this->insertvon).','. ' ext_id='.$this->addslashes($this->ext_id). " WHERE buchungsnr='".addslashes($this->buchungsnr)."';"; - + } //echo $qry; - + if(pg_query($this->conn, $qry)) { if($new) @@ -250,29 +263,29 @@ class konto $this->buchungsnr = $row->id; pg_query($this->conn, 'COMMIT;'); } - else + else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; pg_query($this->conn, 'ROLLBACK;'); return false; } } - else + else { $this->errormsg = 'Fehler beim Auslesen der Sequence'; pg_query($this->conn, 'ROLLBACK;'); return false; } - } - return true; + } + return true; } - else + else { $this->errormsg = 'Fehler beim Speichern der Daten'; return true; } } - + // ******************************************************** // * Loescht den Datenensatz mit der ID die uebergeben wird // * @param buchungsnr ID die geloescht werden soll @@ -291,32 +304,32 @@ class konto $this->errormsg = 'Bitte zuerst die zugeordneten Buchungen loeschen'; return false; } - else + else { //Wenn keine Verweise Vorhanden sind, dann die Buchung loeschen $qry = "DELETE FROM public.tbl_konto WHERE buchungsnr='".addslashes($buchungsnr)."'"; if(pg_query($this->conn, $qry)) return true; - else + else { $this->errormsg = 'Fehler beim Loeschen der Buchung'; return false; - } + } } } - else + else { $this->errormsg = 'Fehler beim Ermitteln der Verweise'; return false; } } - else + else { $this->errormsg = 'Fehler beim Ermitteln der Verweise'; return false; } } - + // ****************************************** // * Laedt alle Buchungen einer Person // * und legt diese geordnet in ein Array @@ -330,25 +343,25 @@ class konto $this->errormsg = 'Person_id muss eine gueltige Zahl sein'; return false; } - + if($filter=='offene') { //Alle Buchungen und 'darunterliegende' holen die noch offen sind - $qry = "SELECT * FROM public.tbl_konto - WHERE buchungsnr in (SELECT buchungsnr FROM public.tbl_konto as konto_a WHERE - (betrag + (SELECT CASE WHEN sum(betrag) is null THEN 0 - ELSE sum(betrag) END + $qry = "SELECT * FROM public.tbl_konto.*, anrede, titelpost, titelpre, nachname, vorname, vornamen + WHERE buchungsnr in (SELECT buchungsnr FROM public.tbl_konto as konto_a WHERE + (betrag + (SELECT CASE WHEN sum(betrag) is null THEN 0 + ELSE sum(betrag) END FROM public.tbl_konto WHERE buchungsnr_verweis=konto_a.buchungsnr))<>0 - AND person_id='$person_id') OR - buchungsnr_verweis in (SELECT buchungsnr FROM public.tbl_konto as konto_a WHERE - (betrag + (SELECT CASE WHEN sum(betrag) is null THEN 0 - ELSE sum(betrag) END + AND person_id='$person_id') OR + buchungsnr_verweis in (SELECT buchungsnr FROM public.tbl_konto as konto_a WHERE + (betrag + (SELECT CASE WHEN sum(betrag) is null THEN 0 + ELSE sum(betrag) END FROM public.tbl_konto WHERE buchungsnr_verweis=konto_a.buchungsnr))<>0 AND person_id='$person_id') ORDER BY buchungsdatum"; } - else + else $qry = "SELECT * FROM public.tbl_konto WHERE person_id='".$person_id."' ORDER BY buchungsdatum"; - + if($result = pg_query($this->conn, $qry)) { while($row = pg_fetch_object($result)) @@ -370,25 +383,31 @@ class konto $buchung->insertamum = $row->insertamum; $buchung->insertvon = $row->insertvon; $buchung->ext_id = $row->ext_id; - + $buchung->anrede = $row->anrede; + $buchung->titelpost = $row->titelpost; + $buchung->titelpre = $row->titelpre; + $buchung->nachname = $row->nachname; + $buchung->vorname = $row->vorname; + $buchung->vornamen = $row->vornamen; + if($buchung->buchungsnr_verweis!='') { $this->result[$buchung->buchungsnr_verweis]['childs'][] = $buchung; } - else + else { $this->result[$buchung->buchungsnr]['parent'] = $buchung; } } return true; } - else + else { $this->errormsg = 'Fehler beim laden der Daten'; return false; } - } - + } + // ****************************************** // * Liefert alle Buchungstypen // * @return true wenn ok, false wenn Fehler @@ -396,27 +415,27 @@ class konto function getBuchungstyp() { $qry = "SELECT * FROM public.tbl_buchungstyp ORDER BY beschreibung"; - + if($result = pg_query($this->conn, $qry)) { while($row = pg_fetch_object($result)) { $typ = new konto($this->conn, null, null); - + $typ->buchungstyp_kurzbz = $row->buchungstyp_kurzbz; $typ->beschreibung = $row->beschreibung; - - $this->result[] = $typ; + + $this->result[] = $typ; } return false; } - else + else { $this->errormsg = 'Fehler beim Laden der Daten'; return false; } } - + // ****************************** // * Berechnet den offenen Betrag // * einer Buchung @@ -424,18 +443,18 @@ class konto function getDifferenz($buchungsnr) { $qry = "SELECT sum(betrag) as differenz FROM public.tbl_konto WHERE buchungsnr='$buchungsnr' OR buchungsnr_verweis='$buchungsnr'"; - + if($result = pg_query($this->conn, $qry)) { if($row = pg_fetch_object($result)) return $row->differenz*(-1); - else + else { $this->errormsg = 'Fehler beim ermitteln der Differenz'; return false; } } - else + else { $this->errormsg = 'Fehler beim ermitteln der Differenz'; return false;