diff --git a/content/student/studentDBDML.php b/content/student/studentDBDML.php index a2c6eca51..290c2e84b 100644 --- a/content/student/studentDBDML.php +++ b/content/student/studentDBDML.php @@ -2288,33 +2288,47 @@ if(!$error) } else { - foreach ($person_ids as $person_id) + $exists = false; + if (defined('FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK') && (in_array($_POST['buchungstyp_kurzbz'], unserialize(FAS_DOPPELTE_BUCHUNGSTYPEN_CHECK)))) { - if($person_id!='') - { - $buchung = new konto(); - $buchung->person_id = $person_id; - $buchung->studiengang_kz = $_POST['studiengang_kz']; - $buchung->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; - $buchung->buchungsnr_verweis=''; - $buchung->betrag = $_POST['betrag']; - $buchung->buchungsdatum = $_POST['buchungsdatum']; - $buchung->buchungstext = $_POST['buchungstext']; - $buchung->mahnspanne = $_POST['mahnspanne']; - $buchung->buchungstyp_kurzbz = $_POST['buchungstyp_kurzbz']; - $buchung->credit_points = $_POST["credit_points"]; - $buchung->insertamum = date('Y-m-d H:i:s'); - $buchung->insertvon = $user; - $buchung->anmerkung = $_POST['anmerkung']; - $buchung->new = true; + $konto = new konto(); + $exists = $konto->checkDoppelteBuchung($person_ids, $_POST['studiensemester_kurzbz'], $_POST['buchungstyp_kurzbz']); + } - if($buchung->save()) + if ($exists) + { + $errormsg = 'Buchung bereits vorhanden.'; + } + else + { + foreach ($person_ids as $person_id) + { + if($person_id!='') { - $data = $buchung->buchungsnr; - } - else - { - $errormsg .= "Fehler beim Speichern: $buchung->errormsg\n"; + $buchung = new konto(); + $buchung->person_id = $person_id; + $buchung->studiengang_kz = $_POST['studiengang_kz']; + $buchung->studiensemester_kurzbz = $_POST['studiensemester_kurzbz']; + $buchung->buchungsnr_verweis=''; + $buchung->betrag = $_POST['betrag']; + $buchung->buchungsdatum = $_POST['buchungsdatum']; + $buchung->buchungstext = $_POST['buchungstext']; + $buchung->mahnspanne = $_POST['mahnspanne']; + $buchung->buchungstyp_kurzbz = $_POST['buchungstyp_kurzbz']; + $buchung->credit_points = $_POST["credit_points"]; + $buchung->insertamum = date('Y-m-d H:i:s'); + $buchung->insertvon = $user; + $buchung->anmerkung = $_POST['anmerkung']; + $buchung->new = true; + + if($buchung->save()) + { + $data = $buchung->buchungsnr; + } + else + { + $errormsg .= "Fehler beim Speichern: $buchung->errormsg\n"; + } } } } diff --git a/include/konto.class.php b/include/konto.class.php index 09afa5303..6c4891674 100644 --- a/include/konto.class.php +++ b/include/konto.class.php @@ -957,6 +957,30 @@ class konto extends basis_db return false; } } + + public function checkDoppelteBuchung($person_ids, $stsem, $typ) + { + $qry = "SELECT betrag + FROM public.tbl_konto + JOIN public.tbl_benutzer benutzer USING(person_id) + WHERE person_id IN (".$this->implode4SQL(array_filter($person_ids)).") + AND studiensemester_kurzbz = ".$this->db_add_param($stsem)." + AND buchungstyp_kurzbz = ".$this->db_add_param($typ)." + GROUP BY buchungsnr"; + + if ($result = $this->db_query($qry)) + { + if ($this->db_num_rows($result) > 0) + return true; + else + return false; + } + else + { + $this->errormsg = 'Fehler bei der Abfrage aufgetreten'; + return false; + } + } } ?>