diff --git a/content/lvplanung/lehrveranstaltungoverlay.js.php b/content/lvplanung/lehrveranstaltungoverlay.js.php
index 816d9dd36..919d8d299 100644
--- a/content/lvplanung/lehrveranstaltungoverlay.js.php
+++ b/content/lvplanung/lehrveranstaltungoverlay.js.php
@@ -2519,6 +2519,7 @@ function LehrveranstaltungNotenPruefungSave()
req.add('bezeichnung', 'Pruefungshonorar '+lv_studiengang+' '+lv_semester+' '+lv_bezeichnung+' '+lehrveranstaltung_id);
req.add('anmerkung', satz+'€ * '+anzahl);
req.add('vertragsdatum', datum);
+ req.add('lehrveranstaltung_id',lehrveranstaltung_id);
var response = req.executePOST();
diff --git a/content/mitarbeiter/mitarbeiterDBDML.php b/content/mitarbeiter/mitarbeiterDBDML.php
index 52518346a..3084be4f9 100644
--- a/content/mitarbeiter/mitarbeiterDBDML.php
+++ b/content/mitarbeiter/mitarbeiterDBDML.php
@@ -467,6 +467,8 @@ if(!$error)
$vertrag->bezeichnung = $_POST['bezeichnung'];
$vertrag->anmerkung = $_POST['anmerkung'];
$vertrag->vertragsdatum = $_POST['vertragsdatum'];
+ if(isset($_POST['lehrveranstaltung_id']))
+ $vertrag->lehrveranstaltung_id = $_POST['lehrveranstaltung_id'];
if($errormsg=='')
{
@@ -548,7 +550,7 @@ if(!$error)
// Retour Status setzen
$vertrag->vertragsstatus_kurzbz = 'retour';
$vertrag->datum = date('Y-m-d H:i:s');
-
+
if(!$vertrag->saveVertragsstatus(true))
$errormsg.=$vertrag->errormsg;
}
diff --git a/include/vertrag.class.php b/include/vertrag.class.php
index 23e6e6ffb..43eab1c77 100644
--- a/include/vertrag.class.php
+++ b/include/vertrag.class.php
@@ -39,6 +39,7 @@ class vertrag extends basis_db
public $ext_id; // bigint
public $anmerkung; // text
public $vertragsdatum; // date
+ public $lehrveranstaltung_id; // integer
/**
* Konstruktor
@@ -63,6 +64,7 @@ class vertrag extends basis_db
$this->person_id = $row->person_id;
$this->anmerkung = $row->anmerkung;
$this->vertragsdatum = $row->vertragsdatum;
+ $this->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$this->new=false;
@@ -122,6 +124,7 @@ class vertrag extends basis_db
$obj->status = $row->status;
$obj->anmerkung = $row->anmerkung;
$obj->vertragsdatum = $row->vertragsdatum;
+ $obj->lehrveranstaltung_id = $row->lehrveranstaltung_id;
$obj->vertragstyp_bezeichnung = $row->vertragstyp_bezeichnung;
@@ -583,7 +586,7 @@ class vertrag extends basis_db
if($new)
{
$qry = "BEGIN;INSERT INTO lehre.tbl_vertrag(bezeichnung, person_id, vertragstyp_kurzbz, betrag, insertamum, insertvon,
- updateamum, updatevon, anmerkung, vertragsdatum) VALUES(".
+ updateamum, updatevon, anmerkung, vertragsdatum,lehrveranstaltung_id) VALUES(".
$this->db_add_param($this->bezeichnung).','.
$this->db_add_param($this->person_id,FHC_INTEGER).','.
$this->db_add_param($this->vertragstyp_kurzbz).','.
@@ -593,7 +596,8 @@ class vertrag extends basis_db
$this->db_add_param($this->updateamum).','.
$this->db_add_param($this->updatevon).','.
$this->db_add_param($this->anmerkung).','.
- $this->db_add_param($this->vertragsdatum).');';
+ $this->db_add_param($this->vertragsdatum).','.
+ $this->db_add_param($this->lehrveranstaltung_id).');';
}
else
@@ -606,7 +610,8 @@ class vertrag extends basis_db
" updateamum=".$this->db_add_param($this->updateamum).','.
" updatevon=".$this->db_add_param($this->updatevon).','.
" anmerkung=".$this->db_add_param($this->anmerkung).','.
- " vertragsdatum=".$this->db_add_param($this->vertragsdatum).
+ " vertragsdatum=".$this->db_add_param($this->vertragsdatum).','.
+ " lehrveranstaltung_id=".$this->db_add_param($this->lehrveranstaltung_id).
" WHERE vertrag_id=".$this->db_add_param($this->vertrag_id, FHC_INTEGER,false);
}
@@ -874,5 +879,87 @@ class vertrag extends basis_db
}
}
+ /**
+ * Liefert die Vertraege zu einem Datum
+ *
+ */
+ public function getVertragFromDatum($mitarbeiter_uid, $datum)
+ {
+ // Studiensemester zu Datum ermitteln
+ $stsem_obj = new studiensemester();
+ $stsem = $stsem_obj->getSemesterFromDatum($datum);
+
+ // Vorheriges Studiensemester
+ $prev = $stsem_obj->getPreviousFrom($stsem);
+ $stsem_obj->load($prev);
+ $prevstsemende = $stsem_obj->ende;
+
+ // Alle Vertraege holen die in das Studiensemester fallen
+ // (Lehreinheiten und Betreuungen)
+ // plus Sonderhonorare die in diesem Zeitraum angelegt wurden
+ $qry = "SELECT
+ *
+ FROM
+ lehre.tbl_vertrag
+ WHERE
+ EXISTS (SELECT
+ 1
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ WHERE
+ vertrag_id=tbl_vertrag.vertrag_id
+ AND studiensemester_kurzbz=".$this->db_add_param($stsem).")
+ OR
+ EXISTS (SELECT
+ 1
+ FROM
+ lehre.tbl_projektbetreuer
+ JOIN lehre.tbl_projektarbeit USING(projektarbeit_id)
+ JOIN lehre.tbl_lehreinheit USING(lehreinheit_id)
+ WHERE
+ vertrag_id=tbl_vertrag.vertrag_id
+ AND studiensemester_kurzbz=".$this->db_add_param($stsem).")
+ OR
+ (NOT EXISTS (SELECT
+ 1
+ FROM
+ lehre.tbl_lehreinheitmitarbeiter
+ WHERE
+ vertrag_id=tbl_vertrag.vertrag_id)
+ AND NOT EXISTS (SELECT
+ 1
+ FROM
+ lehre.tbl_projektbetreuer
+ WHERE
+ vertrag_id=tbl_vertrag.vertrag_id)
+ AND vertragsdatum<=".$this->db_add_param($datum)."
+ AND vertragsdatum>=".$this->db_add_param($prevstsemende)."
+ )";
+ if($result = $this->db_query($qry))
+ {
+ while($row = $this->db_fetch_object($result))
+ {
+ $obj = new stdClass();
+
+ $obj->vertrag_id = $row->vertrag_id;
+ $obj->vertragstyp_kurzbz = $row->vertragstyp_kurzbz;
+ $obj->bezeichnung = $row->bezeichnung;
+ $obj->betrag = $row->betrag;
+ $obj->person_id = $row->person_id;
+ $obj->anmerkung = $row->anmerkung;
+ $obj->vertragsdatum = $row->vertragsdatum;
+
+ $this->result[]=$obj;
+ }
+
+ return true;
+ }
+ else
+ {
+ $this->errormsg = 'Fehler beim Laden der Daten';
+ return false;
+ }
+ }
}
?>
diff --git a/system/checksystem.php b/system/checksystem.php
index 71bba2ee1..ed363fdaf 100644
--- a/system/checksystem.php
+++ b/system/checksystem.php
@@ -3436,6 +3436,19 @@ if($result = $db->db_query("SELECT 1 FROM lehre.tbl_vertragsstatus WHERE vertrag
echo 'Vertragsstatus Storno hinzugefuegt';
}
}
+
+if(!$result = @$db->db_query("SELECT lehrveranstaltung_id FROM lehre.tbl_vertrag LIMIT 1"))
+{
+ $qry = "ALTER TABLE lehre.tbl_vertrag ADD COLUMN lehrveranstaltung_id integer;
+ ALTER TABLE lehre.tbl_vertrag ADD CONSTRAINT fk_vertrag_lehrveranstaltung_id FOREIGN KEY (lehrveranstaltung_id) REFERENCES lehre.tbl_lehrveranstaltung (lehrveranstaltung_id) ON UPDATE CASCADE ON DELETE CASCADE;
+ ";
+
+ if(!$db->db_query($qry))
+ echo 'Vertrag: '.$db->db_last_error().'
';
+ else
+ echo 'Vertrag: Spalte lehrveranstaltung_id hinzugefügt';
+}
+
echo '
';
$tabellen=array(
@@ -3570,7 +3583,7 @@ $tabellen=array(
"lehre.tbl_stundenplan" => array("stundenplan_id","unr","mitarbeiter_uid","datum","stunde","ort_kurzbz","gruppe_kurzbz","titel","anmerkung","lehreinheit_id","studiengang_kz","semester","verband","gruppe","fix","updateamum","updatevon","insertamum","insertvon"),
"lehre.tbl_stundenplandev" => array("stundenplandev_id","lehreinheit_id","unr","studiengang_kz","semester","verband","gruppe","gruppe_kurzbz","mitarbeiter_uid","ort_kurzbz","datum","stunde","titel","anmerkung","fix","updateamum","updatevon","insertamum","insertvon","ext_id"),
"lehre.tbl_stundenplan_betriebsmittel" => array("stundenplan_betriebsmittel_id","betriebsmittel_id","stundenplandev_id","anmerkung","insertamum","insertvon"),
- "lehre.tbl_vertrag" => array("vertrag_id","person_id","vertragstyp_kurzbz","bezeichnung","betrag","insertamum","insertvon","updateamum","updatevon","ext_id","anmerkung","vertragsdatum"),
+ "lehre.tbl_vertrag" => array("vertrag_id","person_id","vertragstyp_kurzbz","bezeichnung","betrag","insertamum","insertvon","updateamum","updatevon","ext_id","anmerkung","vertragsdatum","lehrveranstaltung_id"),
"lehre.tbl_vertrag_vertragsstatus" => array("vertragsstatus_kurzbz","vertrag_id","uid","datum","ext_id","insertamum","insertvon","updateamum","updatevon"),
"lehre.tbl_vertragstyp" => array("vertragstyp_kurzbz","bezeichnung"),
"lehre.tbl_vertragsstatus" => array("vertragsstatus_kurzbz","bezeichnung"),