Browse Source

Abschlussprüfungen bei MSG und TSG laden und auswerten #2

master
Daniel Quathamer 2 days ago
parent
commit
54a08f0f70
  1. 535
      src-modules/module/msg/conf/msg.xml
  2. 500
      src-modules/module/msg/datentabellen/trans_msg_abp.sql
  3. 54
      src-modules/module/msg/datentabellen/trans_msg_abp_pre.sql
  4. 12
      src-modules/module/msg/datentabellen/vacuum_pg.sql
  5. 660
      src-modules/module/msg/hilfstabellen/msg_abp_aggr_fuellen.sql
  6. 626
      src-modules/module/msg/hilfstabellen/msg_abp_aggr_gew_fuellen.sql
  7. 123
      src-modules/module/msg/hilfstabellen/msg_fkombi_aggr_fuellen.sql
  8. 45
      src-modules/module/msg/masken/160770_felderinfo.unl
  9. 1
      src-modules/module/msg/masken/160770_maske_system_bez.unl
  10. 22
      src-modules/module/msg/masken/160770_masken_felder_bez.unl
  11. 140
      src-modules/module/msg/masken/160770_maskeninfo.unl
  12. 1
      src-modules/module/msg/masken/160770_sachgeb_maske_bez.unl
  13. 45
      src-modules/module/msg/masken/49000_felderinfo.unl
  14. 1
      src-modules/module/msg/masken/49000_maske_system_bez.unl
  15. 22
      src-modules/module/msg/masken/49000_masken_felder_bez.unl
  16. 140
      src-modules/module/msg/masken/49000_maskeninfo.unl
  17. 1
      src-modules/module/msg/masken/49000_sachgeb_maske_bez.unl
  18. 34
      src-modules/module/msg/masken/49040_felderinfo.unl
  19. 1
      src-modules/module/msg/masken/49040_maske_system_bez.unl
  20. 17
      src-modules/module/msg/masken/49040_masken_felder_bez.unl
  21. 109
      src-modules/module/msg/masken/49040_maskeninfo.unl
  22. 1
      src-modules/module/msg/masken/49040_sachgeb_maske_bez.unl
  23. 5
      src-modules/module/msg/msg_modul_entfernen.x
  24. 4
      src-modules/module/msg/msg_modul_erzeugen.x
  25. 65
      src-modules/module/msg/msg_update.x
  26. 18
      src-modules/module/msg/msg_update_cron.x.sam
  27. 18
      src-modules/module/msg/msg_update_cron_costage.x.sam
  28. 207
      src-modules/module/msg/rohdaten/MSG_ENV.sam
  29. 33
      src-modules/module/msg/rohdaten/msg_unload.xml
  30. 11
      src-modules/module/msg/schluesseltabellen/sx_repository_fuellen.sql
  31. 208
      src-modules/module/msg/schluesseltabellen/sx_stylesheets_fuellen.sql
  32. 3
      src-modules/module/msg/upgrade/msg_modul_upgrade_man.sql

535
src-modules/module/msg/conf/msg.xml

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<module name="msg" version="0.1" sachgebiet_id="370" sachgebiet="Mehrfachstudiengänge" systeminfo_id="370" system="Mehrfachstudiengänge" thema="Mehrfachstudiengänge" thema_parent="Studierende, Prüfungen">
<module name="msg" version="0.2b" sachgebiet_id="370" sachgebiet="Mehrfachstudiengänge" systeminfo_id="370" system="Mehrfachstudiengänge" thema="Mehrfachstudiengänge" thema_parent="Studierende, Prüfungen">
<description>Ein Modul für Mehrfachstudiengänge</description>
<database name="superx" version="3.0" system="superx">
<sachgebiete>
@ -7,6 +7,323 @@ @@ -7,6 +7,323 @@
<sachgebiet id="371" name="Mehrfachstudiengänge Administration" rightname="CS_BIA_STANDARDREPORTS_ADMIN[MSG]"/>
</sachgebiete>
<table name="msg_abp_neu" version="0.6" thema="Mehrfachstudiengänge" typ="Datentabelle" releaseUnload="empty">
<description>Abschlussprüfungen für die Übernahme</description>
<columns>
<column name="matrikel_nr" type ="INTEGER" size ="10" default ="" notnull ="true" ><comment>Matrikel-Nr.</comment></column>
<column name="studiengang_nr" type ="CHAR" size ="1" default ="" notnull ="false" ><comment>Studiengang-Nr.</comment></column>
<column name="fach_nr" type ="CHAR" size ="1" default ="" notnull ="false" ><comment>Fach-Nr.</comment></column>
<column name="ch35_ang_abschluss" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Abschluss</comment></column>
<column name="sem_der_pruefung" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Semester ESG/MSG</comment></column>
<column name="d_abg_pruefung" type ="DATE" size ="13" default ="" notnull ="false" ><comment>Datum der Prüfung ESG/MSG</comment></column>
<column name="ch30_fach" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Fach</comment></column>
<column name="ch39_vertief" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Vertiefung</comment></column>
<column name="schwerpunkt" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Schwerpunkt</comment></column>
<column name="kz_fach" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Fachkennzeichen</comment></column>
<column name="haupt_pruef_note" type ="CHAR" size ="5" default ="" notnull ="false" ><comment>Prüfungsnote</comment></column>
<column name="pruefungsamt_nr" type ="CHAR" size ="7" default ="" notnull ="false" ><comment>Prüfungsamtnummer</comment></column>
<column name="pnr" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Prüfungsnummer</comment></column>
<column name="pversion" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>PO-Version</comment></column>
<column name="pstatus" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Prüfungsstatus</comment></column>
<column name="fach_sem_zahl" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Fachsemester</comment></column>
<column name="part" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Prüfungsart</comment></column>
<column name="leistungs_id" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Eindeutige Laufnummer der Prüfung</comment></column>
<column name="pversuch" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Versuchsanzahl</comment></column>
<column name="ppruef1" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>1.Prueferkuerzel</comment></column>
<column name="ppruef2" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>2.Prueferkuerzel</comment></column>
<column name="malus" type ="DOUBLE" size ="17" default ="" notnull ="false" ><comment>Maluspunkte dieser Pruefung</comment></column>
<column name="bonus" type ="DOUBLE" size ="17" default ="" notnull ="false" ><comment>Guthaben-/Bonuspunkte dieser Pruefung</comment></column>
<column name="pordnr" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Zuordnungsnummer aus PORD</comment></column>
<column name="pvermerk" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Vermerk zur Prüfung</comment></column>
<column name="prueck" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Zurückgetreten (1/0)</comment></column>
<column name="zeitabschnitt" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Zeitabschnitt</comment></column>
<column name="panerk" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Anerkannte Prüfung</comment></column>
<column name="pstatkennz" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Kennzeichnung fuer Pruefungsstatistiklieferung</comment></column>
<column name="stuart" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Art des Studiums</comment></column>
<column name="stufrm" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Studienform</comment></column>
<column name="stutyp" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="degree_program_id" type ="INTEGER" size ="10" default ="" notnull ="false" description="Nummer d. pers. Studiums ESG/MSG"><comment>degree_program_id ESG/MSG</comment></column>
<column name="degree_program_id_tsg" type ="INTEGER" size ="10" default ="" notnull ="false" description="Nummer d. pers. Studiums ESG/MSG" ><comment>degree_program_id TSG</comment></column>
<column name="sem_der_pruefung_tsg" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Semester (TSG)</comment></column>
<column name="d_abg_pruefung_tsg" type ="DATE" size ="13" default ="" notnull ="false" ><comment>Datum der Prüfung (TSG)</comment></column>
<column name="pstatus_tsg" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Prüfungsstatus (TSG)</comment></column>
<column name="note_tsg" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" ><comment>Note (TSG)</comment></column>
<column name="fach_sem_zahl_tsg" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Anzahl Fachsemester (TSG)</comment></column>
<column name="studienidentifikator" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator ESG/MSG"/>
<column name="studienidentifikator_tsg" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator TSG"/>
<column name="fach_abschlussarbeit" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Fach der Abschlussarbeit</comment></column>
</columns>
<indexes>
</indexes>
<primaryKeys><rs>
</rs></primaryKeys>
<foreignKeys><rs>
</rs></foreignKeys>
<importedKeys><rs>
</rs></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="msg_abp" version="0.6" thema="Mehrfachstudiengänge" typ="Datentabelle" releaseUnload="demo">
<description>Abschlussprüfungen</description>
<columns>
<column name="matrikel_nr" type ="INTEGER" size ="10" default ="" notnull ="true" ><comment>Matrikel-Nr.</comment></column>
<column name="studiengang_nr" type ="SMALLINT" size ="1" default ="" notnull ="false" ><comment>Studiengang-Nr.</comment></column>
<column name="fach_nr" type ="SMALLINT" size ="1" default ="" notnull ="false" ><comment>Fach-Nr.</comment></column>
<column name="ch35_ang_abschluss" type ="CHAR" size ="10" default ="" notnull ="true" description="Abschluss" />
<column name="sem_der_pruefung" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Semester ESG/MSG</comment></column>
<column name="d_abg_pruefung" type ="DATE" size ="13" default ="" notnull ="false" ><comment>Datum der Prüfung ESG/MSG</comment></column>
<column name="ch30_fach" type ="CHAR" size ="10" default ="" notnull ="true" description="Studienfach"/>
<column name="ch39_vertief" type ="CHAR" size ="10" default ="" notnull ="true" description="Vertiefung"/>
<column name="schwerpunkt" type ="CHAR" size ="10" default ="" notnull ="false" description="Schwerpunkt"/>
<column name="kz_fach" type ="CHAR" size ="10" default ="" notnull ="true" description="Haupt/Nebenfach"/>
<column name="stort" type ="CHAR" size ="10" default ="" notnull ="false" description="Standort der Belegung"/>
<column name="haupt_pruef_note" type ="DECIMAL" size ="(8,2)" default ="" notnull ="false" description="Prüfungsnote" />
<column name="pruefungsamt_nr" type ="CHAR" size ="7" default ="" notnull ="false" ><comment>Prüfungsamtnummer</comment></column>
<column name="pnr" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Prüfungsnummer</comment></column>
<column name="pversion" type ="INTEGER" size ="255" default ="" notnull ="false" ><comment>PO-Version</comment></column>
<column name="spo_version" type ="CHAR" size ="10" default ="" notnull ="false" description="SPO-Version ESG/MSG" />
<column name="spo_version_tsg" type ="CHAR" size ="10" default ="" notnull ="false" description="SPO-Version TSG" ><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="pstatus" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Prüfungsstatus</comment></column>
<column name="fach_sem_zahl" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Fachsemester</comment></column>
<column name="part" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Prüfungsart</comment></column>
<column name="vor_haupt_pruefung" type ="CHAR" size ="1" default ="" notnull ="true" description="Vor-Hauptprüfung" ><comment>Vorprüfung="V", Hauptpr.="H"</comment></column>
<column name="leistungs_id" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Eindeutige Laufnummer der Prüfung</comment></column>
<column name="sourcesystem" type ="INTEGER" size ="4" default ="" notnull ="false" description="Quellsystem">
<comment>z.B. 5=msgpos,6=HISinOne,15=CO</comment></column>
<column name="pversuch" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Versuchsanzahl</comment></column>
<column name="ppruef1" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>1.Prueferkuerzel</comment></column>
<column name="ppruef2" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>2.Prueferkuerzel</comment></column>
<column name="malus" type ="DOUBLE" size ="17" default ="" notnull ="false" ><comment>Maluspunkte dieser Pruefung</comment></column>
<column name="bonus" type ="DOUBLE" size ="17" default ="" notnull ="false" ><comment>Guthaben-/Bonuspunkte dieser Pruefung</comment></column>
<column name="pordnr" type ="INTEGER" size ="10" default ="" notnull ="false" ><comment>Zuordnungsnummer aus PORD</comment></column>
<column name="pvermerk" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Vermerk zur Prüfung</comment></column>
<column name="prueck" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Zurückgetreten (1/0)</comment></column>
<column name="zeitabschnitt" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Zeitabschnitt</comment></column>
<column name="panerk" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Anerkannte Prüfung</comment></column>
<column name="pstatkennz" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Kennzeichnung fuer Pruefungsstatistiklieferung</comment></column>
<column name="stuart" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Art des Studiums</comment></column>
<column name="stufrm" type ="VARCHAR" size ="255" default ="" notnull ="false" ><comment>Studienform</comment></column>
<column name="stutyp" type ="VARCHAR" size ="255" default ="" notnull ="false" />
<column name="degree_program_id" type ="INTEGER" size ="10" default ="" notnull ="false" description="Nummer d. pers. Studiums ESG/MSG"><comment>degree_program_id ESG/MSG</comment></column>
<column name="degree_program_id_tsg" type ="INTEGER" size ="10" default ="" notnull ="false" description="Nummer d. pers. Studiums ESG/MSG" ><comment>degree_program_id TSG</comment></column>
<column name="sem_der_pruefung_tsg" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Semester (TSG)</comment></column>
<column name="d_abg_pruefung_tsg" type ="DATE" size ="13" default ="" notnull ="false" ><comment>Datum der Prüfung (TSG)</comment></column>
<column name="pstatus_tsg" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Prüfungsstatus (TSG)</comment></column>
<column name="note_tsg" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" ><comment>Note (TSG)</comment></column>
<column name="fach_sem_zahl_tsg" type ="SMALLINT" size ="5" default ="" notnull ="false" ><comment>Anzahl Fachsemester (TSG)</comment></column>
<column name="studienidentifikator" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator ESG/MSG"/>
<column name="studienidentifikator_tsg" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator TSG"/>
<column name="fach_abschlussarbeit" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Fach der Abschlussarbeit</comment></column>
</columns>
<indexes>
</indexes>
<primaryKeys><rs>
</rs></primaryKeys>
<foreignKeys><rs>
</rs></foreignKeys>
<importedKeys><rs>
</rs></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="msg_abp_aggr" version="0.6" thema="Mehrfachstudiengänge" typ="Hilfstabelle" caption="Abschlussprüfungen (Detail)" releaseUnload="demo">
<description>Hilfstabelle Abschlussprüfungen: Hauptprüfungen und Teilabschlussprüfungen</description>
<columns><!--Personfelder:-->
<column name="matrikel_nr" type ="INTEGER" size ="4" default ="" notnull ="false" description="Matrikel-Nr." />
<column name="alter" type ="DECIMAL" size ="(14,2)" default ="" notnull ="false" description="Alter in Jahren"/>
<column name="geschlecht" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Geschlecht" />
<column name="ca12_staat" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Erste Staatsangehörigkeit" />
<column name="ort_der_hzb" type ="SMALLINT" size ="2" default ="" notnull ="false" description="KFZ-Kennzeichen der HZB Inland"><comment>0=Inland, 1=Ausland</comment></column>
<column name="staat_der_hzb" type ="INTEGER" size ="4" default ="" notnull ="false" description="KFZ-Kennzeichen der HZB" />
<column name="hzbart_int" type ="CHAR" size ="10" default ="" notnull ="false" description="Art der Hochschulzugangsber. (intern)"><comment>Interner Schlüssel der HZB-Art</comment></column>
<column name="hzbart" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Art der Hochschulzugangsber." />
<column name="pseudonym" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Pseudonym"/>
<!--Zeitfelder:-->
<column name="sem_der_pruefung" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Prüfungssemester ESG/MSG"><comment></comment></column>
<column name="sem_der_pruefung_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Prüfungssemester TSG"></column>
<column name="sem_d_abg_pruefung" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Semester des Prüfungsdatums ESG/MSG" />
<column name="sem_d_abg_pruefung_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Semester des Prüfungsdatums TSG" />
<column name="bezugssemester" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Bezugssemester" ><comment>Für einfachere Filterung nach Semester: bei TSG das Semester des TSG, bei ESG/MSG das Semester des MSG</comment></column>
<column name="d_abg_pruefung" type ="DATE" size ="4" default ="" notnull ="false" description="Prüfungsdatum ESG/MSG"><comment></comment></column>
<column name="d_abg_pruefung_tsg" type ="DATE" size ="4" default ="" notnull ="false" description="Prüfungsdatum TSG" ></column>
<column name="stichtag" type ="INTEGER" size ="4" default ="" notnull ="false" description="Stichtag" />
<!--Studiengang-->
<column name="tid_stg" type ="INTEGER" size ="4" default ="" notnull ="false" description="Studiengang" />
<column name="stufrm" type ="CHAR" size ="10" default ="" notnull ="false" description="Studienform" />
<column name="stuart" type ="CHAR" size ="10" default ="" notnull ="false" description="Art des Studiums"/>
<column name="regel" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Regelstudienzeit (historisiert)" ><comment>RSZ des Studiengangs zum Zeitpunkt der Prüfung</comment></column>
<column name="pordnr" type ="INTEGER" size ="10" default ="" notnull ="false" description="Teil der Prüfungsordnung" ><comment> bei CO der SPO-Knoten</comment></column>
<column name="studienidentifikator" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator ESG/MSG"/>
<column name="studienidentifikator_tsg" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator TSG"/>
<column name="spo_version" type ="CHAR" size ="10" default ="" notnull ="false" description="SPO-Version ESG/MSG" />
<column name="spo_version_tsg" type ="CHAR" size ="10" default ="" notnull ="false" description="SPO-Version TSG" ><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<!--Studienverlauf-->
<column name="studiengang_nr" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Studiengang-Nr." />
<column name="fach_nr" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Fach-Nr." />
<column name="st_studium_nr" type ="INTEGER" size ="2" default ="" notnull ="false" description="Nummer des persönlichen Studiums ESG/MSG"><comment>HIS1: Tabelle degree_program (Studiengang zum Studenten)</comment></column>
<column name="st_studium_nr_tsg" type ="INTEGER" size ="2" default ="" notnull ="false" description="Nummer des persönlichen Studiums TSG"><comment>HIS1: Tabelle degree_program (Studiengang zum Studenten)</comment></column>
<column name="fach_sem_zahl" type ="DECIMAL" size ="(10,2)" default ="" notnull ="false" description="Fachsemester ESG/MSG"><comment>Wg. amtl. Stat./BSOS wird nicht die Semesterzahl in lab genommen, sondern über Matrikelnr., Fach, Abschluss,Vert.richtung und Semester aus stg</comment></column>
<column name="fach_sem_zahl_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Fachsemester TSG"><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="abschnitt" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Studienabschnitt" />
<column name="studiengangstyp" type ="CHAR" size ="10" default ="" notnull ="false" description="Leistungstyp Studienabschnitt" ><comment>TSG/ESG/MSG</comment></column>
<!--Prüfung Stammdaten:-->
<column name="part" type ="CHAR" size ="10" default ="" notnull ="false" description="Art der Prüfung" />
<column name="leistungs_id" type ="INTEGER" size ="4" default ="" notnull ="false" description="ID der Prüfung"/>
<column name="pnr" type ="INTEGER" size ="10" default ="" notnull ="false" description="Prüfungsnummer" />
<column name="pversuch" type ="INTEGER" size ="4" default ="" notnull ="false" description="Versuchsanzahl" />
<column name="sourcesystem" type ="INTEGER" size ="4" default ="" notnull ="false" description="Quellsystem">
<comment>z.B. 5=msgpos,6=HISinOne,15=CO</comment></column>
<column name="pvermerk" type ="CHAR" size ="10" default ="" notnull ="false" description="Vermerk zur Prüfung" ></column>
<!--Prüfungsergebnis:-->
<column name="note" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" description="Note ESG/MSG" />
<column name="note_tsg" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" description="Note (TSG)"><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="notenskala" type ="CHAR" size ="10" default ="" notnull ="false" description="Notenskala"/>
<column name="pstatus" type ="CHAR" size ="10" default ="" notnull ="false" description="Prüfungsstatus ESG/MSG" />
<column name="pstatus_tsg" type ="CHAR" size ="10" default ="" notnull ="false" description="Prüfungsstatus TSG" ><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="prueck" type ="SMALLINT" size ="10" default ="" notnull ="false" description="Rücktrittskennzeichen" ><comment>1=Rücktritt, 0=kein Rücktritt</comment></column>
<column name="ects" type ="FLOAT" size ="10" default ="" notnull ="false" description="ECTS des ESG/MSG" />
<column name="ects_tsg" type ="FLOAT" size ="10" default ="" notnull ="false" description="ECTS des TSG" />
<column name="fach_abschlussarbeit" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Fach der Abschlussarbeit</comment></column>
<column name="summe" type ="INTEGER" size ="4" default ="" notnull ="false" description="Summe" is_sum="true" ><comment>Anzahl der Prüfungen</comment></column>
</columns>
<indexes>
<index name="msg_abp_aggr1" unique="false">
<index-column name="part"/>
</index>
<index name="msg_abp_aggr2" unique="false">
<index-column name="matrikel_nr"/>
</index>
<index name="msg_abp_aggr3" unique="false">
<index-column name="studiengang_nr"/>
<index-column name="fach_nr"/>
</index>
<index name="msg_abp_aggr4" unique="false">
<index-column name="sem_der_pruefung"/>
</index>
<index name="msg_abp_aggr5" unique="false">
<index-column name="tid_stg"/>
</index>
<index name="msg_abp_aggr6" unique="false">
<index-column name="leistungs_id"/>
</index>
<index name="msg_abp_aggr7" unique="false">
<index-column name="stichtag"/>
</index>
<index name="msg_abp_aggr8" unique="false">
<index-column name="sem_der_pruefung_tsg"/>
</index>
</indexes>
<primaryKeys><rs>
</rs></primaryKeys>
<foreignKeys><rs>
</rs></foreignKeys>
<importedKeys><rs>
</rs></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="msg_abp_aggr_gew" version="0.6" thema="Mehrfachstudiengänge" typ="Hilfstabelle" caption="Abschlussprüfungen (Detail)" releaseUnload="demo">
<description>Hilfstabelle Abschlussprüfungen: Hauptprüfungen und Teilabschlussprüfungen</description>
<columns><!--Personfelder:-->
<column name="matrikel_nr" type ="INTEGER" size ="4" default ="" notnull ="false" description="Matrikel-Nr." />
<column name="alter" type ="DECIMAL" size ="(14,2)" default ="" notnull ="false" description="Alter in Jahren"/>
<column name="geschlecht" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Geschlecht" />
<column name="ca12_staat" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Erste Staatsangehörigkeit" />
<column name="ort_der_hzb" type ="SMALLINT" size ="2" default ="" notnull ="false" description="KFZ-Kennzeichen der HZB Inland"><comment>0=Inland, 1=Ausland</comment></column>
<column name="staat_der_hzb" type ="INTEGER" size ="4" default ="" notnull ="false" description="KFZ-Kennzeichen der HZB" />
<column name="hzbart_int" type ="CHAR" size ="10" default ="" notnull ="false" description="Art der Hochschulzugangsber. (intern)"><comment>Interner Schlüssel der HZB-Art</comment></column>
<column name="hzbart" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Art der Hochschulzugangsber." />
<column name="pseudonym" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Pseudonym"/>
<!--Zeitfelder:-->
<column name="sem_der_pruefung" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Prüfungssemester ESG/MSG"><comment></comment></column>
<column name="sem_der_pruefung_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Prüfungssemester TSG"></column>
<column name="sem_d_abg_pruefung" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Semester des Prüfungsdatums ESG/MSG" />
<column name="sem_d_abg_pruefung_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Semester des Prüfungsdatums TSG" />
<column name="bezugssemester" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Bezugssemester" ><comment>Für einfachere Filterung nach Semester: bei TSG das Semester des TSG, bei ESG/MSG das Semester des MSG</comment></column>
<column name="d_abg_pruefung" type ="DATE" size ="4" default ="" notnull ="false" description="Prüfungsdatum ESG/MSG"><comment></comment></column>
<column name="d_abg_pruefung_tsg" type ="DATE" size ="4" default ="" notnull ="false" description="Prüfungsdatum TSG" ></column>
<column name="stichtag" type ="INTEGER" size ="4" default ="" notnull ="false" description="Stichtag" />
<!--Studiengang-->
<column name="tid_stg" type ="INTEGER" size ="4" default ="" notnull ="false" description="Studiengang" />
<column name="stufrm" type ="CHAR" size ="10" default ="" notnull ="false" description="Studienform" />
<column name="stuart" type ="CHAR" size ="10" default ="" notnull ="false" description="Art des Studiums"/>
<column name="regel" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Regelstudienzeit (historisiert)" ><comment>RSZ des Studiengangs zum Zeitpunkt der Prüfung</comment></column>
<column name="pordnr" type ="INTEGER" size ="10" default ="" notnull ="false" description="Teil der Prüfungsordnung" ><comment> bei CO der SPO-Knoten</comment></column>
<column name="studienidentifikator" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator ESG/MSG"/>
<column name="studienidentifikator_tsg" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Studienidentifikator TSG"/>
<!--Studienverlauf-->
<column name="studiengang_nr" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Studiengang-Nr." />
<column name="fach_nr" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Fach-Nr." />
<column name="st_studium_nr" type ="INTEGER" size ="2" default ="" notnull ="false" description="Nummer des persönlichen Studiums ESG/MSG"><comment>HIS1: Tabelle degree_program (Studiengang zum Studenten)</comment></column>
<column name="st_studium_nr_tsg" type ="INTEGER" size ="2" default ="" notnull ="false" description="Nummer des persönlichen Studiums TSG"><comment>HIS1: Tabelle degree_program (Studiengang zum Studenten)</comment></column>
<column name="fach_sem_zahl" type ="DECIMAL" size ="(10,2)" default ="" notnull ="false" description="Fachsemester"><comment>Wg. amtl. Stat./BSOS wird nicht die Semesterzahl in lab genommen, sondern über Matrikelnr., Fach, Abschluss,Vert.richtung und Semester aus stg</comment></column>
<column name="fach_sem_zahl_tsg" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Anzahl Fachsemester (TSG)"><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="abschnitt" type ="SMALLINT" size ="2" default ="" notnull ="false" description="Studienabschnitt" />
<column name="studiengangstyp" type ="CHAR" size ="10" default ="" notnull ="false" description="Leistungstyp Studienabschnitt" ><comment>TSG/ESG/MSG</comment></column>
<!--Prüfung Stammdaten:-->
<column name="part" type ="CHAR" size ="10" default ="" notnull ="false" description="Art der Prüfung" />
<column name="leistungs_id" type ="INTEGER" size ="4" default ="" notnull ="false" description="ID der Prüfung"/>
<column name="pnr" type ="INTEGER" size ="10" default ="" notnull ="false" description="Prüfungsnummer" />
<column name="pversuch" type ="INTEGER" size ="4" default ="" notnull ="false" description="Versuchsanzahl" />
<column name="sourcesystem" type ="INTEGER" size ="4" default ="" notnull ="false" description="Quellsystem">
<comment>z.B. 5=msgpos,6=HISinOne,15=CO</comment></column>
<column name="pvermerk" type ="CHAR" size ="10" default ="" notnull ="false" description="Vermerk zur Prüfung" ></column>
<!--Prüfungsergebnis:-->
<column name="note" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" description="Note ESG/MSG" />
<column name="note_tsg" type ="NUMERIC" size ="(8,2)" default ="" notnull ="false" description="Note (TSG)"><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="notenskala" type ="CHAR" size ="10" default ="" notnull ="false" description="Notenskala"/>
<column name="pstatus" type ="CHAR" size ="10" default ="" notnull ="false" description="Prüfungsstatus ESG/MSG" />
<column name="pstatus_tsg" type ="CHAR" size ="10" default ="" notnull ="false" description="Prüfungsstatus TSG" ><comment>wird derzeit nur bei Datenquelle CO ausgewertet</comment></column>
<column name="prueck" type ="SMALLINT" size ="10" default ="" notnull ="false" description="Rücktrittskennzeichen" ><comment>1=Rücktritt, 0=kein Rücktritt</comment></column>
<column name="ects" type ="FLOAT" size ="10" default ="" notnull ="false" description="ECTS des ESG/MSG" />
<column name="ects_tsg" type ="FLOAT" size ="10" default ="" notnull ="false" description="ECTS des TSG" />
<column name="fach_abschlussarbeit" type ="CHAR" size ="10" default ="" notnull ="false" ><comment>Fach der Abschlussarbeit</comment></column>
<column name="gewichtung_id" type ="INTEGER" size ="" default ="" notnull ="false" />
<column name="summe" type ="DECIMAL" size ="(16,9)" default ="" notnull ="false" description="Summe" isSum="true"><comment>Anzahl der Prüfungen</comment></column>
</columns>
<indexes>
<index name="msg_abp_aggr_gew1" unique="false">
<index-column name="part"/>
</index>
<index name="msg_abp_aggr_gew2" unique="false">
<index-column name="matrikel_nr"/>
</index>
<index name="msg_abp_aggr_gew3" unique="false">
<index-column name="studiengang_nr"/>
<index-column name="fach_nr"/>
</index>
<index name="msg_abp_aggr_gew4" unique="false">
<index-column name="sem_der_pruefung"/>
</index>
<index name="msg_abp_aggr_gew5" unique="false">
<index-column name="tid_stg"/>
</index>
<index name="msg_abp_aggr_gew6" unique="false">
<index-column name="leistungs_id"/>
</index>
<index name="msg_abp_aggr_gew7" unique="false">
<index-column name="stichtag"/>
</index>
<index name="msg_abp_aggr_gew8" unique="false">
<index-column name="sem_der_pruefung_tsg"/>
</index>
</indexes>
<primaryKeys><rs>
</rs></primaryKeys>
<foreignKeys><rs>
</rs></foreignKeys>
<importedKeys><rs>
</rs></importedKeys>
<privileges><rs>
</rs></privileges>
</table>
<table name="msg_fkombi_aggr" version="1.0" thema="Mehrfachstudiengänge" caption="Fächerkombinationen" typ="Hilfstabelle" releaseUnload="demo">
<description>
@ -14,9 +331,10 @@ @@ -14,9 +331,10 @@
</description>
<columns>
<column name="matrikel_nr" type ="INTEGER" size ="4" default ="" notnull ="false" description="Matrikel-Nr."><comment>ggf. pseudonymisiert, bei Datenquelle HIS1 ist dies die student.id</comment></column>
<column name="studiengang_nr" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Erster/Zweiter Studiengang etc." />
<column name="fach_nr" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Erstes / Zweites Fach etc." />
<column name="studiengang_nr" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Studiengang-Nr." ><comment>Erster/Zweiter Studiengang etc.</comment></column>
<column name="fach_nr" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Fach-Nr." ><comment>Erstes / Zweites Fach etc.</comment></column>
<column name="sem_rueck_beur_ein" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Semester der Belegung" is_sum="false" check_integrity="log"/>
<column name="stichtag" type ="INTEGER" size ="4" default ="" notnull ="false" description="Art des Stichtag"><comment>0=Tagesaktuell</comment></column>
<column name="tid_stg" type ="INTEGER" size ="4" default ="" notnull ="false" description="Studiengang"><comment>im Studiengangsverzeichnis lehr_stg_ab</comment></column>
<column name="ca12_staat" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Nationalität" />
<column name="geschlecht" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Geschlecht"><comment>1=Männlich, 2=Weiblich</comment></column>
@ -26,12 +344,13 @@ @@ -26,12 +344,13 @@
<column name="stufrm" type ="CHAR" size ="10" default ="" notnull ="false" description="Studienform"/>
<column name="fach_sem_zahl" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Anzahl Fachsemester" />
<column name="kz_rueck_beur_ein" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Rückmeldestatus" />
<column name="kombi_kennz" type ="CHAR" size ="10" default ="" notnull ="false" description="Kombinationskennz"><comment>Klassifizierung der Kombination</comment></column>
<column name="kombi_kennz" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Kombinationskennz."><comment>Name der Kombination</comment></column>
<column name="kombi_tid_stg" type ="INTEGER" size ="4" default ="" notnull ="false" description="Kombinierter Studiengang"><comment>im Studiengangsverzeichnis lehr_stg_ab</comment></column>
<column name="kombi_fach_nr" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Kombiniertes Fach Fach-Nr." />
<column name="kombi_fach_sem_zahl" type ="SMALLINT" size ="2" default ="" notnull ="true" description="Kombiniertes Fach Anzahl Fachsemester" />
<column name="kombi_ch30_fach" type ="CHAR" size ="10" default ="" notnull ="false" description="Kombiniertes Fach" />
<column name="kombi_anz" type ="SMALLINT" size ="10" default ="" notnull ="false" description="Kombinierte Fächer (Anzahl)"><comment>Im jew. Semester und Studiengang die Anzahl der kombinierten Fächer</comment></column>
<column name="kombi_anz_spr" type ="INTEGER" size ="10" default ="" notnull ="false" description="Kombinierte Fächer Sprache (Anzahl)"><comment>Im jew. Semester und Studiengang die Anzahl der kombinierten Fächer Sprachen</comment></column>
<column name="summe" type ="DECIMAL" size ="(19,6)" default ="" notnull ="false" is_sum="true" description="Summe"/>
</columns>
<indexes>
@ -78,7 +397,6 @@ @@ -78,7 +397,6 @@
</indexes>
</table>
<functions></functions><!-- Prozeduren werden über Skripte installiert/geloescht um Reihenfolge und Abhaengigkeiten von Makros zu beruecksichtigen -->
<views>
@ -89,23 +407,177 @@ @@ -89,23 +407,177 @@
</themen>
<masken>
<maske tid="49000" name="Abschlussprüfungen Datenblatt" thema="Mehrfachstudiengänge">
<src><path>$MSG_PFAD/masken</path></src>
</maske>
<maske tid="49040" name="Fächerkombinatorik Datenblatt" thema="Mehrfachstudiengänge">
<src><path>$MSG_PFAD/masken</path></src>
</maske>
</masken>
<data-integrity>
<!--sos_abp_aggr-->
<relation from="dim_studiengang" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="text" format="%s">
<relation-column from="tid" to="tid_stg" />
</relation>
<relation from="sos_k_geschl" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="geschlecht"/>
</relation>
<relation from="dim_staat" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="astat" to="ca12_staat" />
</relation>
<relation from="dim_staat" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="astat" to="staat_der_hzb" />
</relation>
<relation from="cif" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="hzbart" />
<relation-column from="key" to="652" />
</relation>
<relation from="semester" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="sem_der_pruefung" />
</relation>
<relation from="semester" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="sem_der_pruefung_tsg" />
</relation>
<relation from="semester" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="sem_d_abg_pruefung" />
</relation>
<relation from="semester" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="sem_d_abg_pruefung_tsg" />
</relation>
<relation from="semester" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="bezugssemester" />
</relation>
<relation from="sos_k_pstatus" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="pstatus" />
</relation>
<relation from="sos_k_pstatus" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="pstatus_tsg" />
</relation>
<relation from="sos_k_stufrm" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="stufrm" />
</relation>
<relation from="sos_stichtag" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="name" format="%s">
<relation-column from="tid" to="stichtag" />
</relation>
<relation from="sos_pord" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="pdtxt" format="%s">
<relation-column from="pordnr" to="pordnr" />
<relation-column from="sourcesystem" to="sourcesystem" />
</relation>
<relation from="sos_k_part" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="part" />
</relation>
<relation from="sos_k_pvermerk" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="pvermerk" />
</relation>
<relation from="sos_hzb_wohnsitz" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="astat" to="ort_der_hzb" />
</relation>
<relation from="sos_k_hzbart" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="hzbart_int" />
</relation>
<relation from="studienabschnitt" to="msg_abp_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="abschnitt" />
</relation>
<!--msg_fkombi_aggr-->
<relation from="dim_studiengang" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="text" format="%s">
<relation-column from="tid" to="tid_stg" />
</relation>
<relation from="semester" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="eintrag" format="%s">
<relation-column from="tid" to="sem_rueck_beur_ein" />
</relation>
<relation from="dim_staat" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="astat" to="ca12_staat" />
</relation>
<relation from="k_stg" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="dtxt" format="%s">
<relation-column from="stg" to="kombi_ch30_fach" />
</relation>
<!-- klappt nicht <relation from="dim_studiengang" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="text" format="%s">
<relation-column from="tid" to="kombi_tid_stg" />
</relation>-->
<relation from="cif" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="apnr" to="hzbart" />
<relation-column from="key" to="652" />
</relation>
<relation from="sos_k_status" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="druck" format="%s">
<relation-column from="astat" to="kz_rueck_beur_ein" />
</relation>
<relation from="cifx" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="druck" uniquenameField="uniquename" format="%s">
<relation-column from="apnr" to="hrst" />
<relation-column from="key" to="613"/>
</relation>
<relation from="cifx" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="druck" uniquenameField="uniquename" format="%s">
<relation-column from="apnr" to="stufrm" />
<relation-column from="key" to="612" />
</relation>
<relation from="sx_repository" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="caption" format="%s">
<relation-column from="id" to="kombi_kennz" />
<relation-column from="art" to="\'MSG_FKOMBI_KENNZ\'" />
</relation>
<relation from="sos_stichtag" to="msg_fkombi_aggr" delete="FALSE" displayType="select" visibleFields="name" format="%s">
<relation-column from="tid" to="stichtag" />
</relation>
</data-integrity>
</database>
<install_upgrade_job>
<install-upgrade-step name="pre_upgrade" type="container" id="msg_preupgrade_containernode">
<action error="stop"/>
</install-upgrade-step>
<install-upgrade-step name="upgrade_tables" type="" id="msg_upgrade_tables_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_upgrade_tables_pg.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="upgrade_fields" type="" id="msg_upgrade_fields_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_upgrade_fields_pg.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="upgrade_views" type="" id="msg_upgrade_views_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_upgrade_views_pg.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="install_functions" type="container" id="msg_install_functions_containernode">
<action error="stop"/>
</install-upgrade-step>
<install-upgrade-step name="upgrade_indices" type="" id="msg_upgrade_indices_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_upgrade_indexes_pg.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="fill_tables" type="" id="msg_fill_tables_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/conf/sx_tables_fuellen.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="Update Module Metadata" type="container" id="msg_update_module_metadata_container">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/conf/module_metadata.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="update_topic_tree" type="" id="msg_update_topictree_actionstep">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_upgrade_themenbaum.sql" database=""/>
</action>
</install-upgrade-step>
<install-upgrade-step name="install_masks" type="container" id="msg_install_masks_containernode">
<action error="stop"/>
</install-upgrade-step>
</install_upgrade_job>
<install>
<install-step>
<action error="cont">
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_repository_fuellen.sql" database=""/>
<!--
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sichten_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/fm_templates_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_captions_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/themenbaum_update.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/prozeduren/prozeduren_installieren.sql" database=""/>--><!-- benötigt Makros aus fm_templates! -->
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_stylesheets_fuellen.sql"
database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_repository_fuellen.sql"
database=""/>
</action>
</install-step>
</install>
@ -113,16 +585,14 @@ @@ -113,16 +585,14 @@
<upgrade>
<upgrade-step>
<action error="cont">
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_repository_fuellen.sql" database=""/>
<!--
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_stylesheets_einfuegen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sichten_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/fm_templates_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_captions_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/themenbaum_update.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/prozeduren/prozeduren_installieren.sql" database=""/>-->
<!-- benötigt Makros aus fm_templates! -->
<nativeaction sql="" scriptfile="$MSG_PFAD/upgrade/msg_modul_upgrade_man.sql"
database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_stylesheets_fuellen.sql"
database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_repository_fuellen.sql"
database=""/>
</action>
</upgrade-step>
</upgrade>
@ -130,10 +600,6 @@ @@ -130,10 +600,6 @@
<uninstall-step>
<action error="cont">
<nativeaction sql="delete from sichten where systeminfoid=370;" scriptfile="" database=""/>
<!--<nativeaction sql="" scriptfile="$MSG_PFAD/prozeduren/prozeduren_loeschen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_stylesheets_loeschen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/fm_templates_loeschen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/schluesseltabellen/sx_captions_loeschen.sql" database=""/>-->
</action>
</uninstall-step>
@ -141,15 +607,28 @@ @@ -141,15 +607,28 @@
<etl>
<etl-step name="Laden der MSG-Rohdaten" type="load">
<action error="stop">
<loadtable refresh="true" delimiter="^" header="false" tabname="msg_abp_neu"><file path="$MSG_LOAD_PFAD/unl/msg_abp.unl"/></loadtable>
</action>
</etl-step>
<etl-step name="Transformation der MSG-Rohdaten" type="trans">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/datentabellen/trans_msg_abp_pre.sql"
database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/datentabellen/trans_msg_abp.sql"
database=""/>
</action>
</etl-step>
<etl-step name="Aggregation der MSG-Rohdaten" type="aggr">
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/hilfstabellen/msg_abp_aggr_fuellen.sql"
database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/hilfstabellen/msg_abp_aggr_gew_fuellen.sql" database="POSTGRES"/>
</action>
<action error="stop">
<nativeaction sql="" scriptfile="$MSG_PFAD/hilfstabellen/msg_fkombi_aggr_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$MSG_PFAD/datentabellen/vacuum_pg.sql"
database="POSTGRES"/>
</action>
</etl-step>
<etl-step name="Überprüfung der MSG-Daten" type="test">

500
src-modules/module/msg/datentabellen/trans_msg_abp.sql

@ -0,0 +1,500 @@ @@ -0,0 +1,500 @@
--freemarker template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<sqlvars>
<sqlvar name="Quellsystem_var">
select apnr from konstanten where beschreibung='SOS_Quellsystem'
</sqlvar>
<sqlvar name="Start_POS_Semester_var">
select apnr from konstanten where beschreibung='Start_POS_Semester'
</sqlvar>
</sqlvars>
<#if Quellsystem_var=15>
update msg_abp_neu set ch39_vertief = '' where ch39_vertief is null;
update msg_abp_neu set schwerpunkt = '' where schwerpunkt is null;
update msg_abp_neu set kz_fach = '' where kz_fach is null;
update msg_abp_neu set pversion = -1 where pversion is null;
CREATE temp TABLE tmp_msg_abp (
matrikel_nr integer NOT NULL,
studiengang_nr smallint,
fach_nr smallint,
ch40_studientyp smallint,
ch35_ang_abschluss char(10) NOT NULL,
ch35_art_abg_pruef smallint,
sem_der_pruefung smallint,
d_abg_pruefung date,
ch30_fach char(10) NOT NULL,
ch39_vertief char(10) NOT NULL,
schwerpunkt char(10),
kz_fach char(10) NOT NULL,
pruefungsamt integer,
haupt_pruef_note numeric(8,2),
vor_haupt_pruefung character(1) NOT NULL,
pnr integer,
degree_program_id integer,
degree_program_id_tsg integer,
pversion INTEGER,
spo_version char(10),
spo_version_tsg char(10),
pstatus char(10),
fach_sem_zahl smallint,
stort char(10),
part character(10),
leistungs_id integer,
pversuch SMALLINT ,
ppruef1 CHAR(10) ,
ppruef2 CHAR(10) ,
malus FLOAT ,
bonus FLOAT ,
pordnr INTEGER ,
pvermerk char(10),
prueck integer,
zeitabschnitt char(10),
sourcesystem integer,
pruefungsamt_nr CHAR(7),
panerk char(10),
pstatkennz integer,
stuart VARCHAR(10),
stufrm VARCHAR(10),
stutyp char(10),
sem_der_pruefung_tsg SMALLINT ,
d_abg_pruefung_tsg date,
note_tsg numeric(8,2),
fach_sem_zahl_tsg smallint,
leistungs_id_msg integer,
pstatus_tsg char(10),
studienidentifikator varchar(255),
studienidentifikator_tsg varchar(255),
fach_abschlussarbeit CHAR(10)
);
insert into tmp_msg_abp
(matrikel_nr,
studiengang_nr,
fach_nr,
ch35_ang_abschluss,
sem_der_pruefung,
d_abg_pruefung,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
haupt_pruef_note,
vor_haupt_pruefung,
pnr,
degree_program_id,
degree_program_id_tsg,
pversion,
spo_version,
spo_version_tsg,
pstatus,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pversuch ,
ppruef1 ,
ppruef2 ,
malus ,
bonus ,
pordnr ,
pvermerk,
prueck ,
zeitabschnitt ,
sourcesystem ,
pruefungsamt_nr,
panerk,
pstatkennz,
stuart,
stufrm,
stutyp,
sem_der_pruefung_tsg,
d_abg_pruefung_tsg,
note_tsg,
pstatus_tsg,
studienidentifikator ,
studienidentifikator_tsg,
fach_abschlussarbeit
)
select
matrikel_nr,
to_number(studiengang_nr,'9'),
to_number(fach_nr,'9'),
ch35_ang_abschluss,
sem_der_pruefung,
d_abg_pruefung,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
haupt_pruef_note::float,
'H',
pnr,
degree_program_id,
degree_program_id_tsg,
val('' || pversion),
(case when part='TSAB' then null::char(10) else pversion end) as spo_version,
(case when part='TSAB' then pversion else null::char(10) end) as spo_version_tsg,
pstatus,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pversuch ,
ppruef1 ,
ppruef2 ,
malus ,
bonus ,
pordnr,
pvermerk ,
prueck ,
zeitabschnitt ,
${Quellsystem_var},
pruefungsamt_nr,
panerk,
val(pstatkennz),
stuart,
stufrm,
stutyp,
sem_der_pruefung_tsg,
d_abg_pruefung_tsg,
note_tsg,
pstatus_tsg,
studienidentifikator ,
studienidentifikator_tsg,
fach_abschlussarbeit
from msg_abp_neu P
where
P.ch35_ang_abschluss is not NULL
and P.ch30_fach is not NULL
and P.kz_fach is not NULL
--and P.pnr in
--(select apnr from sos_vdhdpnr)
;
DELETE FROM tmp_msg_abp WHERE leistungs_id IS NULL;
<#if SOS_ABSCHLUSSTYP_VORPRUEFUNG?exists>
update tmp_msg_abp set vor_haupt_pruefung='V'
where ${SOS_ABSCHLUSSTYP_VORPRUEFUNG};
</#if>
update tmp_msg_abp set leistungs_id_msg=L.labnrzu
from sos_labzuord L
where L.labnr=tmp_msg_abp.leistungs_id;
--spo-Version des MSG bei TSAB nachladen:
update tmp_msg_abp set spo_version=L.pversion
from msg_abp_neu L
where L.leistungs_id=tmp_msg_abp.leistungs_id_msg
and tmp_msg_abp.part='TSAB'
;
--bei MSG wird studiengang_nr aus dem TSG
--der Abschlussarbeit ermittelt:
update tmp_msg_abp set studiengang_nr=val(P.studiengang_nr) --,
--fach_nr=val(P.fach_nr)
from msg_abp_neu P, sos_labzuord L
where P.leistungs_id=L.labnr
and tmp_msg_abp.leistungs_id= L.labnrzu
and tmp_msg_abp.ch30_fach=P.ch30_fach
and tmp_msg_abp.ch35_ang_abschluss=P.ch35_ang_abschluss
;
--wenn das nicht klappt aus studienverlauf:
update tmp_msg_abp set
studiengang_nr = F.studiengang_nr
from sos_stg F where
tmp_msg_abp.matrikel_nr =F.matrikel_nr
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein
and tmp_msg_abp.ch30_fach = F.ch30_fach
and tmp_msg_abp.ch39_vertief = F.ch39_vertief
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='')
and tmp_msg_abp.kz_fach = F.kz_fach
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss
and ( tmp_msg_abp.studiengang_nr is null or tmp_msg_abp.studiengang_nr=0
);
update tmp_msg_abp set
fach_nr = F.fach_nr
from sos_stg F where
tmp_msg_abp.matrikel_nr =F.matrikel_nr
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein
and tmp_msg_abp.ch30_fach = F.ch30_fach
and tmp_msg_abp.ch39_vertief = F.ch39_vertief
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='')
and tmp_msg_abp.kz_fach = F.kz_fach
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss
and ( tmp_msg_abp.fach_nr is null or tmp_msg_abp.fach_nr=0
)
and zeitabschnitt!='MSG'
;
update tmp_msg_abp set
fach_sem_zahl = F.fach_sem_zahl
from sos_stg F where
tmp_msg_abp.matrikel_nr =F.matrikel_nr
and tmp_msg_abp.sem_der_pruefung >= F.sem_rueck_beur_ein
and tmp_msg_abp.ch30_fach = F.ch30_fach
and tmp_msg_abp.ch39_vertief = F.ch39_vertief
and (tmp_msg_abp.schwerpunkt = F.schwerpunkt or tmp_msg_abp.schwerpunkt='')
and tmp_msg_abp.kz_fach = F.kz_fach
and tmp_msg_abp.ch35_ang_abschluss = F.ch35_ang_abschluss
and tmp_msg_abp.fach_sem_zahl is null
and part!='TSAB';
SELECT 'lookup stutyp and stuart:' || now() FROM xdummy;
CREATE TEMP TABLE tmp_stg
(
matrikel_nr INTEGER ,
ch35_ang_abschluss CHAR(10),
ch30_fach CHAR(10),
stuart CHAR(10),
stutyp CHAR(10),
sem_rueck_beur_ein_max SMALLINT
);
INSERT INTO tmp_stg(
matrikel_nr,
ch35_ang_abschluss,
ch30_fach,
stuart,
stutyp,
sem_rueck_beur_ein_max
)
SELECT
matrikel_nr,
ch35_ang_abschluss,
ch30_fach,
stuart,
stutyp,
max(sem_rueck_beur_ein)
FROM
sos_stg
WHERE
today() BETWEEN gueltig_von AND gueltig_bis
and matrikel_nr in (select distinct T.matrikel_nr from tmp_msg_abp T)
--and 1=0
GROUP BY
1,2,3,4,5
;
CREATE INDEX tmp_ix1 ON tmp_stg(matrikel_nr);
CREATE INDEX tmp_ix2 ON tmp_stg(ch35_ang_abschluss,ch30_fach);
UPDATE
tmp_msg_abp
SET
stuart = stg.stuart
FROM
tmp_stg stg
WHERE
tmp_msg_abp.matrikel_nr = stg.matrikel_nr
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss
AND tmp_msg_abp.ch30_fach = stg.ch30_fach
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung
AND stg.stuart IS NOT NULL
and tmp_msg_abp.stuart IS NULL
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H')
;
--jetzt TSG:
UPDATE
tmp_msg_abp
SET
stuart = stg.stuart
FROM
tmp_stg stg
WHERE
tmp_msg_abp.matrikel_nr = stg.matrikel_nr
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss
AND tmp_msg_abp.ch30_fach = stg.ch30_fach
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung_tsg
AND stg.stuart IS NOT NULL
and tmp_msg_abp.stuart IS NULL
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H')
;
UPDATE
tmp_msg_abp
SET
stutyp = stg.stutyp
FROM
tmp_stg stg
WHERE
tmp_msg_abp.matrikel_nr = stg.matrikel_nr
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss
AND tmp_msg_abp.ch30_fach = stg.ch30_fach
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung
AND stg.stutyp IS NOT NULL
and tmp_msg_abp.stutyp IS NULL
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H')
;
--TSG:
UPDATE
tmp_msg_abp
SET
stutyp = stg.stutyp
FROM
tmp_stg stg
WHERE
tmp_msg_abp.matrikel_nr = stg.matrikel_nr
AND tmp_msg_abp.ch35_ang_abschluss = stg.ch35_ang_abschluss
AND tmp_msg_abp.ch30_fach = stg.ch30_fach
AND stg.sem_rueck_beur_ein_max <= tmp_msg_abp.sem_der_pruefung_tsg
AND stg.stutyp IS NOT NULL
and tmp_msg_abp.stutyp IS NULL
AND tmp_msg_abp.vor_haupt_pruefung IN ('V','H')
;
drop table tmp_stg;
-- end of 'stufrm'/'stuart' lookup
select 'end of lookup stufrm,stutyp and stuart:' || now() from xdummy;
--keine Fach-nr. bei MSG Abschlüssen:
update tmp_msg_abp set fach_nr=null where zeitabschnitt='MSG';
--Prüfroutine
insert into sos_pruefrout
(
tabelle,
tabelle_sos,
matrikel_nr,
semester,
problem,
aktion
)
select
'msg_abp_neu',
'abp',
matrikel_nr,sem_der_pruefung,
'studiengang_nr/fach_nr unbekannt, Prüfung wird gelöscht',
'Warnung'
from tmp_msg_abp
where (studiengang_nr is null
or fach_nr is null)
;
--insert in echte Tabelle:
delete from msg_abp
where (sourcesystem=${Quellsystem_var}
or sourcesystem is null)
and (matrikel_nr,sourcesystem,ch35_ang_abschluss)
in (select matrikel_nr,sourcesystem,ch35_ang_abschluss
from tmp_msg_abp)
;
insert into msg_abp
(matrikel_nr,
studiengang_nr,
fach_nr,
ch35_ang_abschluss,
sem_der_pruefung,
d_abg_pruefung,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
haupt_pruef_note,
vor_haupt_pruefung,
pnr,
pversion,
spo_version,
spo_version_tsg,
pstatus,
fach_sem_zahl,
part,
leistungs_id,
pversuch ,
ppruef1 ,
ppruef2 ,
malus ,
bonus ,
pordnr ,
stort,
pvermerk,
prueck ,
zeitabschnitt,
sourcesystem,
pruefungsamt_nr,
panerk,
pstatkennz,
stuart,
stufrm,
stutyp,
degree_program_id,
degree_program_id_tsg,
sem_der_pruefung_tsg,
d_abg_pruefung_tsg,
note_tsg,
fach_sem_zahl_tsg,
pstatus_tsg,
studienidentifikator ,
studienidentifikator_tsg,
fach_abschlussarbeit
)
select matrikel_nr,
studiengang_nr,
fach_nr,
ch35_ang_abschluss,
sem_der_pruefung,
d_abg_pruefung,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
haupt_pruef_note,
vor_haupt_pruefung,
pnr,
pversion,
spo_version,
spo_version_tsg,
pstatus,
fach_sem_zahl,
part,
leistungs_id,
pversuch ,
ppruef1 ,
ppruef2 ,
malus ,
bonus ,
pordnr ,
stort,
pvermerk,
prueck ,
zeitabschnitt,
sourcesystem,
pruefungsamt_nr,
panerk,
pstatkennz,
stuart,
stufrm,
stutyp,
degree_program_id,
degree_program_id_tsg,
sem_der_pruefung_tsg,
d_abg_pruefung_tsg,
note_tsg,
fach_sem_zahl_tsg,
pstatus_tsg,
studienidentifikator ,
studienidentifikator_tsg,
fach_abschlussarbeit
from tmp_msg_abp
;
drop TABLE tmp_msg_abp;
</#if>

54
src-modules/module/msg/datentabellen/trans_msg_abp_pre.sql

@ -0,0 +1,54 @@ @@ -0,0 +1,54 @@
--freemarker template
<#include "SQL_lingua_franca"/>
<#include "SuperX_general"/>
<sqlvars>
<sqlvar name="Quellsystem_var">
select apnr from konstanten where beschreibung='SOS_Quellsystem';
</sqlvar>
</sqlvars>
select S.leistungs_id
into temp tmp_delete
from msg_abp S left outer join msg_abp_neu N on (
S.matrikel_nr=N.matrikel_nr
and S.leistungs_id=N.leistungs_id)
where S.sourcesystem=${Quellsystem_var}
and coalesce(S.sem_der_pruefung,S.sem_der_pruefung_tsg) >= ${K_Start_POS_Semester}
and N.leistungs_id is null
;
insert into sos_pruefrout
(
datum,
semester,
tabelle,
tabelle_sos,
matrikel_nr,
problem,
aktion
)
select today(),
coalesce(S.sem_der_pruefung,S.sem_der_pruefung_tsg) as sem_der_pruefung,
'msg_abp',
'abp',
S.matrikel_nr,
'Die Hauptprüfung mit der ID: ' || S.leistungs_id || ' wurde gelöscht, da diese nicht im Vorsystem zu finden ist',
'Info'
from msg_abp S, tmp_delete D
where D.leistungs_id=S.leistungs_id
;
delete from msg_abp
where leistungs_id in (select leistungs_id
from tmp_delete);
drop table tmp_delete;

12
src-modules/module/msg/datentabellen/vacuum_pg.sql

@ -0,0 +1,12 @@ @@ -0,0 +1,12 @@
select * from xdummy;
--bei Postgres in HIS1 laufen alle Scripte in Transaktionen, daher muss man
--für vacuum erst committen
commit;
vacuum msg_abp;
vacuum msg_abp_aggr;
vacuum msg_abp_aggr_gew;
vacuum msg_fkombi_aggr;

660
src-modules/module/msg/hilfstabellen/msg_abp_aggr_fuellen.sql

@ -0,0 +1,660 @@ @@ -0,0 +1,660 @@
--freemarker template
--(c) 2024 Daniel Quathamer
<sqlvars>
<sqlvar name = "p_pruef_sem_zahl_decimal_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'pruef_sem_zahl_decimal';
</sqlvar>
<sqlvar name = "p_start_pos_sem_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'Start_POS_Semester';
</sqlvar>
<sqlvar name = "matrikelnr_min_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_min';
</sqlvar>
<sqlvar name = "matrikelnr_max_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_max';
</sqlvar>
<sqlvar name = "p_promotion_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_status_prom';
</sqlvar>
<sqlvar name = "stichtag_tagesaktuell_var">
SELECT tid FROM sos_stichtag WHERE appl_key = '2';
</sqlvar>
<sqlvar name = "SOS_MTKNR_EXT">
SELECT 1 FROM xdummy WHERE 0 !=
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1)
UNION
SELECT 0 FROM xdummy WHERE 0 =
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1);
</sqlvar>
<sqlvar name = "Quellsystem_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_Quellsystem';
</sqlvar>
<sqlvar name="istTrimester">
select 1 from xdummy where 3=(select max(mod(tid,10)) from semester)
union
select 0 from xdummy where 3!=(select max(mod(tid,10)) from semester)
;
</sqlvar>
</sqlvars>
-- Falls es Konstanten nicht gibt, Defaultwert:
<#assign p_start_pos_sem = 19001 />
<#if p_start_pos_sem_var?exists && p_start_pos_sem_var?string?length &gt; 0>
<#assign p_start_pos_sem = p_start_pos_sem_var />
</#if>
-- Sollen Fachsem. dezimal berechnet werden, d.h. relativ zum Prüfungsdatum?
-- Falls Variable nicht belegt, default 0 (Ganzzahlig)
<#assign p_pruef_sem_zahl_decimal = 0 />
<#if p_pruef_sem_zahl_decimal_var?exists && p_pruef_sem_zahl_decimal_var?string?length &gt; 0>
<#assign p_pruef_sem_zahl_decimal = p_pruef_sem_zahl_decimal_var />
</#if>
<#assign matrikelnr_min = 0 />
<#if matrikelnr_min_var?exists && matrikelnr_min_var?string?length &gt; 0>
<#assign matrikelnr_min = matrikelnr_min_var />
</#if>
<#assign matrikelnr_max = 2147483647 />
<#if matrikelnr_max_var?exists && matrikelnr_max_var?string?length &gt; 0>
<#assign matrikelnr_max = matrikelnr_max_var />
</#if>
<#assign p_promotion = 6 />
<#if p_promotion_var?exists && p_promotion_var?string?length &gt; 0>
<#assign p_promotion = p_promotion_var />
</#if>
<#assign stichtag_tagesaktuell = 0 />
<#if stichtag_tagesaktuell_var?exists && stichtag_tagesaktuell_var?string?length &gt; 0>
<#assign stichtag_tagesaktuell = stichtag_tagesaktuell_var />
</#if>
<#if istTrimester==1>
<#assign Trimester="true" />
<#else>
<#assign Trimester="false" />
</#if>
<#assign bezugssemester_cond="(case when part='TSAB' then sem_der_pruefung_tsg else sem_der_pruefung end)" />
<#assign pdatumsfeld_cond="(case when part='TSAB' then d_abg_pruefung_tsg else d_abg_pruefung end)" />
<#assign target_fields_except_stichtag=" matrikel_nr,
alter,
geschlecht,
ca12_staat,
ort_der_hzb,
staat_der_hzb,
hzbart_int,
hzbart,
pseudonym,
sem_der_pruefung,
sem_der_pruefung_tsg,
sem_d_abg_pruefung,
sem_d_abg_pruefung_tsg,
d_abg_pruefung,
d_abg_pruefung_tsg,
bezugssemester,
tid_stg,
stufrm,
stuart,
regel,
pordnr,
studiengang_nr,
fach_nr,
st_studium_nr,
st_studium_nr_tsg,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pnr,
pversuch,
sourcesystem,
pvermerk,
note,
note_tsg,
notenskala,
pstatus,
pstatus_tsg,
prueck,
ects,
ects_tsg,
studiengangstyp,
abschnitt,
spo_version,
spo_version_tsg,
studienidentifikator ,
studienidentifikator_tsg,
fach_abschlussarbeit,
summe" />
<#if Quellsystem_var=15>
SELECT 'Matrikelnr. Max: ${matrikelnr_max} '::CHAR(30) FROM xdummy;
SELECT 'Matrikelnr. Min: ${matrikelnr_min} '::CHAR(30) FROM xdummy;
SELECT 'SOS_MTKNR_EXT: ${SOS_MTKNR_EXT} '::CHAR(30) FROM xdummy;
SELECT 'Startsemester ${K_SOS_start_lab}'::CHAR(30) FROM xdummy;
SELECT 'Startsemester Vorsemester ${K_SOS_start_lab_vorsemester}'::CHAR(30) FROM xdummy;
SELECT now(),'Anzahl Sätze in msg_abp_aggr:'::CHAR(30),count(*) FROM msg_abp_aggr GROUP BY 1,2;
CREATE TEMP TABLE tmp_abp_aggr(
matrikel_nr INTEGER ,
alter decimal(14,2) ,
d_geburt date,
geschlecht SMALLINT ,
ca12_staat SMALLINT ,
ort_der_hzb SMALLINT ,
staat_der_hzb INTEGER ,
hzbart_int CHAR(10) ,
hzbart SMALLINT ,
pseudonym VARCHAR(255) ,
sem_der_pruefung SMALLINT ,
sem_der_pruefung_tsg SMALLINT ,
sem_d_abg_pruefung SMALLINT ,
sem_d_abg_pruefung_tsg SMALLINT ,
d_abg_pruefung DATE ,
d_abg_pruefung_tsg DATE ,
stichtag INTEGER ,
tid_stg INTEGER ,
--Studiengang einzeln:
ch35_ang_abschluss CHAR(10) ,
ch30_fach CHAR(10),
ch39_vertief CHAR(10),
schwerpunkt CHAR(10),
kz_fach CHAR(10),
stort CHAR(10),
stutyp CHAR(10),
pversion integer,
spo_version CHAR(10),
spo_version_tsg CHAR(10),
studienidentifikator varchar(255),
studienidentifikator_tsg varchar(255),
--Ende Studiengang
stufrm CHAR(10) ,
stuart CHAR(10) ,
regel SMALLINT ,
pordnr INTEGER ,
studiengang_nr SMALLINT ,
fach_nr SMALLINT ,
st_studium_nr INTEGER ,
st_studium_nr_tsg INTEGER ,
st_studium_nr_tmp INTEGER , --wird später zum st_studium_nr und st_studium_nr_tsg
fach_sem_zahl decimal(10,2) ,
fach_sem_zahl_tsg SMALLINT ,
part CHAR(10) ,
leistungs_id INTEGER ,
pnr INTEGER ,
pversuch INTEGER ,
sourcesystem INTEGER ,
pvermerk CHAR(10) ,
note decimal(8,2) ,
note_tsg decimal(8,2) ,
notenskala CHAR(10) ,
pstatus CHAR(10) ,
pstatus_tsg CHAR(10) ,
prueck SMALLINT ,
ects FLOAT ,
ects_tsg FLOAT ,
summe INTEGER ,
studiengangstyp char(10),
abschnitt smallint,
bezugssemester integer,
pdatumsfeld date,
fach_abschlussarbeit CHAR(10)
)
;
-- Zuerst werden die lab-Sätze temporär gespeichert und um das Semester laut Prüfungsdatum ergänzt.
INSERT INTO tmp_abp_aggr(
matrikel_nr,
-- alter,
-- geschlecht,
-- ca12_staat,
-- ort_der_hzb,
-- staat_der_hzb,
-- hzbart_int,
-- hzbart,
-- pseudonym,
sem_der_pruefung,
sem_der_pruefung_tsg,
-- sem_d_abg_pruefung,
-- sem_d_abg_pruefung_tsg,
d_abg_pruefung,
d_abg_pruefung_tsg,
stichtag,
-- tid_stg,
stufrm,
stuart,
-- regel,
pordnr,
studiengang_nr,
fach_nr,
studienidentifikator ,
studienidentifikator_tsg,
-- st_studium_nr,
-- st_studium_nr_tsg,
st_studium_nr_tmp,
st_studium_nr_tsg,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pnr,
pversuch,
sourcesystem,
pvermerk,
note,
note_tsg,
notenskala,
pstatus,
pstatus_tsg,
prueck,
ects,
ects_tsg,
summe,
ch35_ang_abschluss,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
pversion,
spo_version,
spo_version_tsg,
stort,
stutyp,
abschnitt,
studiengangstyp,
bezugssemester ,
pdatumsfeld,
fach_abschlussarbeit
)
SELECT
matrikel_nr,
-- alter,
-- geschlecht,
-- ca12_staat,
-- ort_der_hzb,
-- staat_der_hzb,
-- hzbart_int,
-- hzbart,
-- pseudonym,
sem_der_pruefung,
sem_der_pruefung_tsg,
d_abg_pruefung,
d_abg_pruefung_tsg,
I.tid as stichtag,
-- tid_stg,
stufrm,
stuart,
-- regel,
pordnr,
studiengang_nr,
fach_nr,
studienidentifikator ,
studienidentifikator_tsg,
degree_program_id as st_studium_nr_tmp,
degree_program_id_tsg as st_studium_nr_tsg,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pnr,
pversuch,
sourcesystem,
pvermerk,
haupt_pruef_note as note,
note_tsg,
null::char(10) as notenskala, --TODO
pstatus,
pstatus_tsg,
prueck,
null::float as ects,--TODO
null::float as ects_tsg,--TODO
1 as summe,
ch35_ang_abschluss,
ch30_fach,
ch39_vertief,
schwerpunkt,
kz_fach,
pversion,
spo_version,
spo_version_tsg,
stort,
stutyp,
(case when vor_haupt_pruefung='V' then 1
when vor_haupt_pruefung='H' then 2 end ) as abschnitt,
zeitabschnitt,
${bezugssemester_cond} as bezugssemester ,
${pdatumsfeld_cond} as pdatumsfeld,
fach_abschlussarbeit
FROM
msg_abp L, sos_stichtag I
WHERE I.appl_key='2' --Prüfungen tagesaktuell
and vor_haupt_pruefung in ('H','V')
and L.matrikel_nr <= ${matrikelnr_max}
<#if matrikelnr_min != 0 >
AND L.matrikel_nr >= ${matrikelnr_min}
</#if>
and sourcesystem=${Quellsystem_var}
--hier noch keine Filterung aufs Startsemester, erst später
;
--denormalize:
--TODO: Abschnitt=1 (Zwischenprüfung ermitteln)
update tmp_abp_aggr set st_studium_nr=st_studium_nr_tmp
--where studiengangstyp in ('ESG','MSG')
;
--für TSG die studium_nr aus dem MSG nachladen:
update tmp_abp_aggr set st_studium_nr=A.degree_program_id,
spo_version=A.spo_version
from msg_abp A, sos_labzuord L
where L.labnr=tmp_abp_aggr.leistungs_id
and L.labnrzu=A.leistungs_id
and tmp_abp_aggr.studiengangstyp='TSG'
and tmp_abp_aggr.st_studium_nr is null;
UPDATE tmp_abp_aggr
SET sem_d_abg_pruefung = (
SELECT min(tid) FROM semester S
WHERE d_abg_pruefung BETWEEN S.sem_beginn AND S.sem_ende
)
WHERE d_abg_pruefung IS NOT NULL;
UPDATE tmp_abp_aggr
SET sem_d_abg_pruefung_tsg = (
SELECT min(tid) FROM semester S
WHERE d_abg_pruefung_tsg BETWEEN S.sem_beginn AND S.sem_ende
)
WHERE d_abg_pruefung_tsg IS NOT NULL;
-- Wenn Datum nicht gefüllt ist, dann wird Originalsemester (psem) genommen:
UPDATE tmp_abp_aggr
SET sem_d_abg_pruefung = sem_der_pruefung
WHERE sem_d_abg_pruefung IS NULL;
UPDATE tmp_abp_aggr
SET sem_d_abg_pruefung_tsg = sem_der_pruefung_tsg
WHERE sem_d_abg_pruefung_tsg IS NULL;
SELECT now(),'Persondaten ermitteln:' FROM xdummy;
UPDATE tmp_abp_aggr
SET d_geburt =S.d_geburt,
geschlecht = S.geschlecht,
ca12_staat = S.ca12_staat,
hzbart_int = S.hzbart
FROM sos_sos S
WHERE
S.matrikel_nr = tmp_abp_aggr.matrikel_nr
;
update tmp_abp_aggr set alter = trunc((E.sem_beginn-tmp_abp_aggr.d_geburt) / 365.25 , 0)
from semester E
where E.tid=tmp_abp_aggr.sem_d_abg_pruefung
and tmp_abp_aggr.studiengangstyp in ('ESG','MSG');
update tmp_abp_aggr set alter = trunc((E.sem_beginn-tmp_abp_aggr.d_geburt) / 365.25 , 0)
from semester E
where E.tid=tmp_abp_aggr.sem_d_abg_pruefung_tsg
and tmp_abp_aggr.studiengangstyp='TSG';
<#if SOS_MTKNR_EXT = 1>
update tmp_abp_aggr set pseudonym=M.pseudonym
from sos_mtknr_ext M where M.matrikel_nr = tmp_abp_aggr.matrikel_nr;
</#if>
SELECT now(),'hzbart ermitteln:' FROM xdummy;
UPDATE tmp_abp_aggr SET hzbart = (
SELECT grupp
FROM k_hzbart
WHERE hzbart = tmp_abp_aggr.hzbart_int
);
update tmp_abp_aggr set
ort_der_hzb=S.hzbkfz
from sos_sos S
where S.matrikel_nr=tmp_abp_aggr.matrikel_nr
and today() between S.gueltig_von and S.gueltig_bis
and S.hzbkfzkz=0;
update tmp_abp_aggr set
staat_der_hzb=S.hzbkfz
from sos_sos S
where S.matrikel_nr=tmp_abp_aggr.matrikel_nr
and today() between S.gueltig_von and S.gueltig_bis
and S.hzbkfzkz=1;
-- Tid-stg ermitteln:
SELECT now(),'Tid-stg ermitteln:' FROM xdummy;
-- erster Durchgang: alle Angaben stimmen überein
-- [Vorsicht: ein gleichen Studiengängen an 2 Standorten kommen zwei Sätze raus.
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
AND tmp_abp_aggr.pversion = L.pversion
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
AND L.stort = tmp_abp_aggr.stort
AND L.stutyp = tmp_abp_aggr.stutyp
);
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
AND L.stort = tmp_abp_aggr.stort
AND L.stutyp = tmp_abp_aggr.stutyp
)
WHERE tid_stg IS NULL;
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
AND tmp_abp_aggr.pversion = L.pversion
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
AND L.stutyp = tmp_abp_aggr.stutyp
)
WHERE tid_stg IS NULL;
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
AND tmp_abp_aggr.schwerpunkt = L.schwerpunkt
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
AND L.stutyp = tmp_abp_aggr.stutyp
)
WHERE tid_stg IS NULL;
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
--AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
AND L.stutyp = tmp_abp_aggr.stutyp
)
WHERE tid_stg IS NULL;
--jetzt ohne stutyp:
UPDATE tmp_abp_aggr
SET tid_stg = (
SELECT min(tid)
FROM
lehr_stg_ab L
WHERE
tmp_abp_aggr.ch30_fach = L.stg
AND tmp_abp_aggr.ch39_vertief = L.vertfg
AND tmp_abp_aggr.ch35_ang_abschluss = L.abschluss
--AND L.semester_von <= tmp_abp_aggr.sem_der_pruefung
---AND L.semester_bis >= tmp_abp_aggr.sem_der_pruefung
AND L.kz_fach = tmp_abp_aggr.kz_fach
--AND L.stutyp = tmp_abp_aggr.stutyp
)
WHERE tid_stg IS NULL;
insert into sos_pruefrout
(
tabelle,
tabelle_sos,
matrikel_nr,
semester,
problem,
aktion
)
select
'msg_abp_aggr',
'lab',
matrikel_nr,
bezugssemester,
'Studiengang unbekannt, Hauptprüfung wird gelöscht',
'Warnung'
from tmp_abp_aggr
where tid_stg is null
and bezugssemester >= ${K_SOS_start_lab}
;
update tmp_abp_aggr set regel=L.regel
from lehr_stg_ab L
where L.tid=tmp_abp_aggr.tid_stg;
-- neu zu ladende Datensätze aus der 'msg_abp_aggr' entfernen
DELETE FROM
msg_abp_aggr
WHERE
--Hauptprüfungen bei Stichtagsbezug nur laden wenn Startsemester gesetzt ist,
--Tagesaktuelle Daten werden immer geladen:
(
bezugssemester >= ${K_SOS_start_lab}
AND sourcesystem = ${Quellsystem_var}
AND bezugssemester >= (
SELECT T.einfriersemester
FROM sos_stichtag T
WHERE T.tid = msg_abp_aggr.stichtag
)
)
OR
(
stichtag = ${stichtag_tagesaktuell_var}
AND sourcesystem = ${Quellsystem_var}
AND bezugssemester >= (
SELECT T.einfriersemester
FROM sos_stichtag T
WHERE T.tid = msg_abp_aggr.stichtag
)
)
;
-- Zuerst stichtagsbezogen füllen
SELECT now(),'Prüfungsdatum nach Stichtag?' FROM xdummy;
INSERT INTO msg_abp_aggr(
${target_fields_except_stichtag} ,
stichtag
)
SELECT
${target_fields_except_stichtag} ,
D.stichtag
FROM tmp_abp_aggr P, sos_stichtag ST, sos_stichtag_datum D
WHERE
ST.tid = D.stichtag
AND D.semester = P.bezugssemester
AND ST.stichtagsart = 'Prüfungen'
AND (
ST.appl_key NOT IN ('2', '3')
OR ST.appl_key IS NULL
) --(2,3) sind "kein Stichtag/parstg-Stichtag"
-- Hauptprüfungen nur laden wenn Startsemester gesetzt ist,
AND P.bezugssemester >= ${K_SOS_start_lab}
AND P.bezugssemester >= ST.einfriersemester
and D.datum >= P.pdatumsfeld;
-- Nur die tagesaktuellen Zahlen, haben in Stichtag eine 2
SELECT now(),'Nun die tagesaktuallen Zahlen' FROM xdummy;
INSERT INTO msg_abp_aggr(
${target_fields_except_stichtag} ,
stichtag
)
SELECT
${target_fields_except_stichtag} ,
ST.tid as stichtag
FROM
tmp_abp_aggr P, sos_stichtag ST
WHERE
${stichtag_tagesaktuell} = ST.tid
AND bezugssemester >= ST.einfriersemester
;
DROP TABLE tmp_abp_aggr;
SELECT
now(),
'Anzahl Sätze in msg_abp_aggr:'::CHAR(30),
count(*)
FROM msg_abp_aggr
GROUP BY 1,2;
</#if>

626
src-modules/module/msg/hilfstabellen/msg_abp_aggr_gew_fuellen.sql

@ -0,0 +1,626 @@ @@ -0,0 +1,626 @@
--freemarker template
--(c) 2024 Daniel Quathamer
<sqlvars>
<sqlvar name = "p_pruef_sem_zahl_decimal_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'pruef_sem_zahl_decimal';
</sqlvar>
<sqlvar name = "p_start_pos_sem_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'Start_POS_Semester';
</sqlvar>
<sqlvar name = "matrikelnr_min_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_min';
</sqlvar>
<sqlvar name = "matrikelnr_max_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'matrikelnr_max';
</sqlvar>
<sqlvar name = "p_promotion_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_status_prom';
</sqlvar>
<sqlvar name = "stichtag_tagesaktuell_var">
SELECT tid FROM sos_stichtag WHERE appl_key = '2';
</sqlvar>
<sqlvar name = "SOS_MTKNR_EXT">
SELECT 1 FROM xdummy WHERE 0 !=
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1)
UNION
SELECT 0 FROM xdummy WHERE 0 =
(SELECT count(*) FROM konstanten WHERE beschreibung = 'SOS_MTKNR_EXT' AND apnr = 1);
</sqlvar>
<sqlvar name = "Quellsystem_var">
SELECT apnr FROM konstanten WHERE beschreibung = 'SOS_Quellsystem';
</sqlvar>
<sqlvar name="istTrimester">
select 1 from xdummy where 3=(select max(mod(tid,10)) from semester)
union
select 0 from xdummy where 3!=(select max(mod(tid,10)) from semester)
;
</sqlvar>
<sqlvar name="SOS_start_lab_aggr_var">
select apnr from konstanten where beschreibung='SOS_start_lab_gew'
</sqlvar>
<sqlvar name="gewichtungenanzahl">select count(*) from sos_gewichtungsvariante; -- für Anpassungen der Sichten im Konnektorlauf genutzt
</sqlvar>
<sqlvar name="gewichtungen" type="hashsequence"><![CDATA[select id from sos_gewichtungsvariante where 1=1
/* and id=<<Gewichtungsvariante>> */
/* union select -1 from xdummy where <<Gewichtungsvariante>>=-1 */ ]]></sqlvar>
<sqlvar name="semester" type="hashsequence"><![CDATA[select distinct sem_der_pruefung as id from msg_abp_aggr where 1=1
/*and sem_der_pruefung in (<<Semester>>) */
<#if !Maskennummer?exists>and sem_der_pruefung>=${K_SOS_start_lab_gew}</#if>
order by 1 desc]]> </sqlvar>
<sqlvar name="stichtage" type="hashsequence"><![CDATA[select tid as id from sos_stichtag where stichtagsart='Prüfungen' /* and tid in (<<Stichtag>>) */]]></sqlvar>
<sqlvar name="gewichtungsregeln" type="hashsequence"><![CDATA[SELECT id,name,
student_weighting_variant_id,
sortorder,
weight,
k_student_weighting_weight_usage_type_id,
k_student_weighting_action_type_id,
weighting_ident_operator_id,
weighting_ident_list,
new_weighting_ident,
degree_counter_operator_id,
degree_counter_list, --studiengang_nr
new_degree_counter,
subject_counter_operator_id,
subject_counter_list, --fach_nr
new_subject_counter,
subject_count_operator_id,--faecher anzahl
subject_count_list,
degree_count_operator_id, -- abschluss anzahl
degree_count_list,
ects_operator_id,
ects_list,
newects,
teaching_unit_operator_id,
teaching_unit_list, --lehr
new_teaching_unit,
department_operator_id,
department_list, --fb
new_department,
subject_operator_id,
subject_list, --stg
new_subject,
degree_operator_id,
degree_list, --abschluss
new_degree,
subject_indicator_operator_id,
subject_indicator_list, --kz_fach
new_subject_indicator,
type_of_study_operator_id,
type_of_study_list, --stuart
new_type_of_study,
form_of_study_operator_id,
form_of_study_list, -- stufrm
new_form_of_study
FROM sos_gewichtungregel where 1=1
/* and id in (<<Regeln>>) */
order by student_weighting_variant_id,sortorder;]]>
</sqlvar>
<sqlvar name="sembez_daten">select tid from sos_stichtag where appl_key='5';</sqlvar>
</sqlvars>
-- Falls es Konstanten nicht gibt, Defaultwert:
<#assign p_start_pos_sem = 19001 />
<#if p_start_pos_sem_var?exists && p_start_pos_sem_var?string?length &gt; 0>
<#assign p_start_pos_sem = p_start_pos_sem_var />
</#if>
-- Sollen Fachsem. dezimal berechnet werden, d.h. relativ zum Prüfungsdatum?
-- Falls Variable nicht belegt, default 0 (Ganzzahlig)
<#assign p_pruef_sem_zahl_decimal = 0 />
<#if p_pruef_sem_zahl_decimal_var?exists && p_pruef_sem_zahl_decimal_var?string?length &gt; 0>
<#assign p_pruef_sem_zahl_decimal = p_pruef_sem_zahl_decimal_var />
</#if>
<#assign matrikelnr_min = 0 />
<#if matrikelnr_min_var?exists && matrikelnr_min_var?string?length &gt; 0>
<#assign matrikelnr_min = matrikelnr_min_var />
</#if>
<#assign matrikelnr_max = 2147483647 />
<#if matrikelnr_max_var?exists && matrikelnr_max_var?string?length &gt; 0>
<#assign matrikelnr_max = matrikelnr_max_var />
</#if>
<#assign p_promotion = 6 />
<#if p_promotion_var?exists && p_promotion_var?string?length &gt; 0>
<#assign p_promotion = p_promotion_var />
</#if>
<#assign stichtag_tagesaktuell = 0 />
<#if stichtag_tagesaktuell_var?exists && stichtag_tagesaktuell_var?string?length &gt; 0>
<#assign stichtag_tagesaktuell = stichtag_tagesaktuell_var />
</#if>
<#if istTrimester==1>
<#assign Trimester="true" />
<#else>
<#assign Trimester="false" />
</#if>
<#assign bezugssemester_cond="(case when part='TSAB' then sem_der_pruefung_exa else sem_der_pruefung end)" />
<#assign pdatumsfeld_cond="(case when part='TSAB' then d_abg_pruefung_exa else d_abg_pruefung end)" />
<#assign target_fields_except_stichtag_summe=" matrikel_nr,
alter,
geschlecht,
ca12_staat,
ort_der_hzb,
staat_der_hzb,
hzbart_int,
hzbart,
pseudonym,
sem_der_pruefung,
sem_der_pruefung_tsg,
sem_d_abg_pruefung,
sem_d_abg_pruefung_tsg,
d_abg_pruefung,
d_abg_pruefung_tsg,
bezugssemester,
tid_stg,
stufrm,
stuart,
--regel,
pordnr,
studiengang_nr,
fach_nr,
st_studium_nr,
st_studium_nr_tsg,
fach_sem_zahl,
fach_sem_zahl_tsg,
part,
leistungs_id,
pnr,
pversuch,
sourcesystem,
pvermerk,
note,
note_tsg,
notenskala,
pstatus,
pstatus_tsg,
prueck,
--ects,
ects_tsg,
studiengangstyp,
abschnitt,
fach_abschlussarbeit
" />
<#if Quellsystem_var=15>
SELECT 'Matrikelnr. Max: ${matrikelnr_max} '::CHAR(30) FROM xdummy;
SELECT 'Matrikelnr. Min: ${matrikelnr_min} '::CHAR(30) FROM xdummy;
SELECT 'SOS_MTKNR_EXT: ${SOS_MTKNR_EXT} '::CHAR(30) FROM xdummy;
SELECT 'Startsemester ${K_SOS_start_lab}'::CHAR(30) FROM xdummy;
SELECT 'Startsemester Vorsemester ${K_SOS_start_lab_vorsemester}'::CHAR(30) FROM xdummy;
SELECT now(),'Anzahl Sätze in msg_abp_aggr_gew:'::CHAR(30),count(*) FROM msg_abp_aggr GROUP BY 1,2;
<#macro sos_gew_restrict type field operator values>
and (
<#list values?split("|") as item>
${field}${operator}<#if type=='char'>'</#if>${item}<#if type=='char'>'</#if> <#if item_has_next> <#if operator="<>">and<#else>or</#if> </#if></#list>
)
</#macro>
<#macro sos_gew_restrictions regel>
-- has_content liefert seltsamerweise false auch wenn Gewicht Wert enthält, daher hier mit length gearbeitet
where 1=1
<#if regel.weighting_ident_list?length&gt;0> <@sos_gew_restrict type="char" field="gewichtungs_ident" operator=regel.weighting_ident_operator_id values=regel.weighting_ident_list/></#if>
<#if regel.degree_counter_list?length&gt;0> <@sos_gew_restrict type="integer" field="studiengang_nr" operator=regel.degree_counter_operator_id values=regel.degree_counter_list/></#if>
<#if regel.subject_counter_list?length&gt;0> <@sos_gew_restrict type="integer" field="fach_nr" operator=regel.subject_counter_operator_id values=regel.subject_counter_list/></#if>
<#if regel.subject_count_list?length&gt;0> <@sos_gew_restrict type="integer" field="fachanzahl" operator=regel.subject_count_operator_id values=regel.subject_count_list/></#if>
<#if regel.degree_count_list?length&gt;0> <@sos_gew_restrict type="integer" field="abschlussanzahl" operator=regel.degree_count_operator_id values=regel.degree_count_list/></#if>
<#if regel.ects_list?length&gt;0> <@sos_gew_restrict type="integer" field="ects" operator=regel.ects_operator_id values=regel.ects_list/></#if>
<#if regel.teaching_unit_list?length&gt;0> <@sos_gew_restrict type="char" field="lehr" operator=regel.teaching_unit_operator_id values=regel.teaching_unit_list/></#if>
<#if regel.department_list?length&gt;0> <@sos_gew_restrict type="char" field="fb" operator=regel.department_operator_id values=regel.department_list/></#if>
<#if regel.subject_list?length&gt;0> <@sos_gew_restrict type="char" field="ch30_fach" operator=regel.subject_operator_id values=regel.subject_list/></#if>
<#if regel.degree_list?length&gt;0> <@sos_gew_restrict type="char" field="ch35_ang_abschluss" operator=regel.degree_operator_id values=regel.degree_list/></#if>
<#if regel.subject_indicator_list?length&gt;0> <@sos_gew_restrict type="char" field="kz_fach" operator=regel.subject_indicator_operator_id values=regel.subject_indicator_list/></#if>
<#if regel.type_of_study_list?length&gt;0> <@sos_gew_restrict type="char" field="stuart" operator=regel.type_of_study_operator_id values=regel.type_of_study_list/></#if>
<#if regel.form_of_study_list?length&gt;0> <@sos_gew_restrict type="char" field="stufrm" operator=regel.form_of_study_operator_id values=regel.form_of_study_list/></#if>
</#macro>
<#macro sos_gew_updates table regel>
<#switch regel.k_student_weighting_action_type_id?number>
<#case 5>
-- Normierung je Matrikelnummer
truncate table tmp_zaehlung;
insert into tmp_zaehlung(matrikel_nr,gewichtsumme)
select matrikel_nr,sum(gewicht) from ${table} group by 1;
update ${table} set gewichtsumme=(select sum(gewichtsumme) from tmp_zaehlung where ${table}.matrikel_nr=tmp_zaehlung.matrikel_nr);
update ${table} set gewicht= gewicht/gewichtsumme <@sos_gew_restrictions regel=regel/> and gewichtsumme!=0;
<#break>
<#case 4>
-- Normierung je Matrikelnummer und Fach
truncate table tmp_zaehlung;
insert into tmp_zaehlung(matrikel_nr,studiengang_nr,gewichtsumme)
select matrikel_nr,studiengang_nr,sum(gewicht) from ${table} group by 1,2;
update ${table} set gewichtsumme_pro_abschluss=(select sum(gewichtsumme) from tmp_zaehlung where ${table}.matrikel_nr=tmp_zaehlung.matrikel_nr
and ${table}.studiengang_nr=tmp_zaehlung.studiengang_nr);
update ${table} set gewicht=gewicht/gewichtsumme_pro_abschluss <@sos_gew_restrictions regel=regel/> and gewichtsumme_pro_abschluss!=0;
<#break>
<#default>
<#if regel.weight?length&gt;0>
update ${table} set gewicht=<#if regel.k_student_weighting_weight_usage_type_id?number=2>gewicht*</#if>${regel.weight?string?replace(',','.')} <@sos_gew_restrictions regel=regel/>;
</#if>
</#switch>
<#assign new_a_needed=false/>
update ${table} set dummy1=0
<#if regel.new_weighting_ident?length&gt;0> , gewichtungs_ident='${regel.new_weighting_ident?replace("\x0027","\x0027\x0027")}'</#if>
<#if regel.new_degree_counter?length&gt;0>,studiengang_nr=${regel.new_degree_counter} <#assign new_a_needed=true/></#if>
<#if regel.new_subject_counter?length&gt;0>, fach_nr=${regel.new_subject_counter} <#assign new_a_needed=true/></#if>
<#if regel.newects?length&gt;0> , ects=${regel.newects} <#assign new_a_needed=true/> </#if>
<#if regel.new_degree?length&gt;0> , ch35_ang_abschluss='${regel.new_degree}' <#assign new_a_needed=true/> </#if>
<#if regel.new_teaching_unit?length&gt;0> , lehr='${regel.new_teaching_unit}' <#assign new_a_needed=true/> </#if>
<#if regel.new_department?length&gt;0> , fb='${regel.new_department}' <#assign new_a_needed=true/> </#if>
<#if regel.new_subject?length&gt;0> ,ch30_fach='${regel.new_subject}' <#assign new_a_needed=true/></#if>
<#if regel.new_subject_indicator?length&gt;0> , kz_fach='${regel.new_subject_indicator}' <#assign new_a_needed=true/></#if>
<#if regel.new_type_of_study?length&gt;0> , stuart='${regel.new_type_of_study}' <#assign new_a_needed=true/> </#if>
<#if regel.new_form_of_study?length&gt;0> ,stufrm='${regel.new_form_of_study}' <#assign new_a_needed=true/> </#if>
<#if new_a_needed>, artifical_id=null</#if>
,dummy2=0 <@sos_gew_restrictions regel=regel/>;
</#macro>
<#macro update_art_id>
'fb:'||fb||'l:'||lehr||'stg:'||ch30_fach||'ab:'||ch35_ang_abschluss||'v:'||trim(nvl(ch39_vertief,'n'::char(1)))||'s:'||trim(nvl(schwerpunkt,'n'::char(1)))||'p:'||pversion||'k:'||trim(nvl(kz_fach,'n'::char(1)))||'s:'||trim(nvl(stort,'n'::char(1)))||'von:'||semester_von||'bis:'||semester_bis
</#macro>
<#compress> --entfernt whitespace
<#if !Maskennummer?exists> -- wenn das Script nachts ausgeführt wird
--delete from sos_stg_aggr where summe=0;
<#assign durchfuehrungsart="konnektorlauf"/>
<#else>
<#assign durchfuehrungsart="<<Art der Durchführung>>"?replace("'","")/>
</#if>
<#assign target_lehr_stg_ab="lehr_stg_ab_gew"/>
<#if "Tabellenerzeugung"!="">
<#if !Maskennummer?exists>
truncate table msg_abp_aggr_gew; --wenn im Browser läuft wird unten sicherheitshalber noch mal delete pro gewichtung/semester/stichtag gemacht
</#if>
create temp table tmp_regelord (tid serial,dummy integer);
create temp table tmp_zaehlung (matrikel_nr integer,abschlussanzahl integer default 0,studiengang_nr integer,fachanzahl integer default 0,
gewichtsumme decimal(19,6)) <@informixnolog/>;
create index tmp_iz1 on tmp_zaehlung (matrikel_nr);
CREATE TEMP TABLE tmp_sos
(
--aus msg_abp_aggr
matrikel_nr INTEGER ,
alter decimal(14,2) ,
geschlecht SMALLINT ,
ca12_staat SMALLINT ,
ort_der_hzb SMALLINT ,
staat_der_hzb INTEGER ,
hzbart_int CHAR(10) ,
hzbart SMALLINT ,
pseudonym VARCHAR(255) ,
sem_der_pruefung SMALLINT ,
sem_der_pruefung_tsg SMALLINT ,
sem_d_abg_pruefung SMALLINT ,
sem_d_abg_pruefung_tsg SMALLINT ,
bezugssemester SMALLINT ,
d_abg_pruefung DATE ,
d_abg_pruefung_tsg DATE ,
stichtag INTEGER ,
tid_stg INTEGER ,
stufrm CHAR(10) ,
stuart CHAR(10) ,
regel SMALLINT ,
pordnr INTEGER ,
studiengang_nr SMALLINT ,
fach_nr SMALLINT ,
st_studium_nr INTEGER ,
st_studium_nr_tsg INTEGER ,
fach_sem_zahl decimal(10,2) ,
fach_sem_zahl_tsg SMALLINT ,
abschnitt SMALLINT ,
studiengangstyp CHAR(10) ,
part CHAR(10) ,
leistungs_id INTEGER ,
pnr INTEGER ,
pversuch INTEGER ,
sourcesystem INTEGER ,
pvermerk CHAR(10) ,
note decimal(8,2) ,
note_tsg decimal(8,2) ,
notenskala CHAR(10) ,
pstatus CHAR(10) ,
pstatus_tsg CHAR(10) ,
prueck SMALLINT ,
ects FLOAT ,
ects_tsg FLOAT ,
summe INTEGER ,
ch30_fach char(10),
ch35_ang_abschluss char(10),
ch39_vertief char(10),
schwerpunkt char(10),
pversion integer,
kz_fach char(10),
stort char(10),
lehr char(10),
-- weitere Feld aus lehr_stg_ab
semester_von integer,
semester_bis integer ,
text char(255),
fach_zaehler smallint,anteil decimal(3,2), abstgvnr integer,
--bis hier
stichtagname varchar(255),
fachname varchar(255),
abschlussname varchar(255),
gewicht decimal(19,6) default 1,
gewichtungs_ident varchar(255),
original_fb char(10),-- falls der FB geändert wird, wird hiermit kontrolliert, ob überhaupt auf einen anderen FB geändert
fb char(10),
fachanzahl integer,
abschlussanzahl integer,
--datensatzanzahl integer,
gewichtsumme decimal(19,6),
gewichtsumme_pro_abschluss decimal(19,6),
regelord integer default 0,
dummy1 smallint,
dummy2 smallint,
artifical_id varchar(255),
fach_abschlussarbeit char(10)
)
;
create index tmp_ix0 on tmp_sos (gewichtungs_ident);
create index tmp_ix1 on tmp_sos (studiengang_nr);
create index tmp_ix2 on tmp_sos (fach_nr);
create index tmp_ix3 on tmp_sos (fachanzahl);
create index tmp_ix4 on tmp_sos (abschlussanzahl);
create index tmp_ix5 on tmp_sos (ects);
create index tmp_ix7 on tmp_sos (fb);
create index tmp_ix11 on tmp_sos (stuart);
create index tmp_ix12 on tmp_sos (stufrm);
create index tmp_ix13 on tmp_sos (matrikel_nr);
create index tmp_ix15 on tmp_sos (artifical_id);
</#if> --wenn "Tabellenerzeugung"!=""
<#foreach gewichtung in gewichtungen>
--war hier:truncate table tmp_sos;
select setval('${target_lehr_stg_ab}_tid_neu_seq', (select max(tid)+1 from ${target_lehr_stg_ab}));
<#foreach einStichtag in stichtage>
select 'Stichtag: ${einStichtag.id}' from xdummy;
<#foreach einSemester in semester>
select 'Semester: ${einSemester.id}' from xdummy;
--jetzt hier
truncate table tmp_sos;
<#if "tmp_sos fuellen"!="">
INSERT INTO tmp_sos (
${target_fields_except_stichtag_summe},
summe,
ch30_fach,
ch35_ang_abschluss,
ch39_vertief,
schwerpunkt,
pversion ,
stort,
kz_fach,
lehr ,
original_fb,
fb,
semester_von,
semester_bis,
text,
fach_zaehler ,
anteil,
abstgvnr,
--ects,
gewichtungs_ident --,
--stutyp
)
SELECT ${target_fields_except_stichtag_summe},
summe,
L.stg as ch30_fach,
L.abschluss as ch35_ang_abschluss,
L.vertfg as ch39_vertief,
L.schwerpunkt,
L.pversion ,
L.stort,
L.kz_fach,
L.lehr ,
L.fb,
L.fb,
L.semester_von,
L.semester_bis,
L.text,
L.fach_zaehler ,
L.anteil,
L.abstgvnr,
--L.ects,
'Default' as gewichtungs_ident
FROM msg_abp_aggr S, lehr_stg_ab_gew L
WHERE
S.abschnitt in (1,2) and --nur Haupt und Vorprüfungen
<#assign semester_feld="bezugssemester" />
<#assign stichtag_filter="stichtag = "+ einStichtag.id/>
<#if einStichtag.id?string = sembez_daten?string >
<#assign semester_feld="bezugssemester" />
<#assign stichtag_filter="stichtag = 2" />
</#if>
S.${semester_feld}=${einSemester.id} and
${stichtag_filter}
and S.tid_stg=L.tid
<#if Maskennummer?exists&&"<<Studiengang>>"!=''> and 's_' || L.tid in <@printkeys Studiengang.allNeededKeysList/> </#if>
<#if Maskennummer?exists&&"<<Abschluss>>"!=''> and L.abschluss in (<<Abschluss>>) </#if>
<#if Maskennummer?exists&&"<<Fachkennz.>>"!=''> and L.kz_fach = <<Fachkennz.>> </#if>
<#if Maskennummer?exists&&"<<Studienform>>"!=''> and stufrm = <<Studienform>> </#if>
<#if Matrikelnr?exists>
/* and matrikel_nr in (${Matrikelnr?replace("'","")}) -- <<Matrikelnr>>) */
</#if>
;
--TODO ects evtl direkt aus lehr_stg_ab
update tmp_sos set artifical_id=<@update_art_id/> where artifical_id is null;
</#if>--wenn "tmp_sos fuellen"!=""
<#if gewichtung.id!=-1> -- -1 heisst keine Gewichtung (für reine Vorschau)
<#foreach regel in gewichtungsregeln>
<#if regel.student_weighting_variant_id=gewichtung.id>
select 'Regel-ID:${regel.id}-${regel.name?replace("\x0027","\x0027\x0027")}' from xdummy;
insert into tmp_regelord (dummy) values (1);
truncate table tmp_zaehlung;
--aus Performancegründen nur wenn abschluss/fach-anzahl benötigt wird
<#if regel.degree_count_list?length&gt;0||(Maskennummer?exists&&"<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.'))>
insert into tmp_zaehlung (matrikel_nr,abschlussanzahl)
select matrikel_nr,count(distinct studiengang_nr) from tmp_sos group by 1;
update tmp_sos set abschlussanzahl=(select sum(abschlussanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr);
<#if Maskennummer?exists&&"<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.')>
delete from tmp_sos where not (abschlussanzahl <<Abschlussanzahl>>);
</#if>
</#if>
<#if regel.subject_count_list?length&gt;0||(Maskennummer?exists&&"<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.'))>
insert into tmp_zaehlung (matrikel_nr,studiengang_nr,fachanzahl)
select matrikel_nr,studiengang_nr,count(distinct ch30_fach) from tmp_sos group by 1,2;
update tmp_sos set fachanzahl=(select sum(fachanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr and
tmp_sos.studiengang_nr=tmp_zaehlung.studiengang_nr);
<#if Maskennummer?exists&&"<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.')>
delete from tmp_sos where not (fachanzahl <<Fachanzahl>>);
</#if>
</#if>
<#switch regel.k_student_weighting_action_type_id?number>
<#case 1> --überschreiben
<@sos_gew_updates table='tmp_sos' regel=regel/>;
<#break>
<#case 2> --kopieren
<@selectintotmp source="tmp_sos" target="tmp_kopie" select="*">
<@sos_gew_restrictions regel=regel/>
--and sem_der_pruefung=${einSemester.id}
--and stichtag=${einStichtag.id}
</@selectintotmp> <@informixnolog/>;
<@sos_gew_updates table='tmp_kopie' regel=regel/>
update tmp_kopie set regelord=(select max(tid) from tmp_regelord);
insert into tmp_sos select * from tmp_kopie;
drop table tmp_kopie;
<#break>
<#case 3> --löschen
delete from tmp_sos <@sos_gew_restrictions regel=regel/> ;
<#break>
<#case 4>
-- Normierung nach Matrkelnr und Abschluss
<@sos_gew_updates table='tmp_sos' regel=regel/>;
<#break>
<#case 5>
-- Normierung nach Matrkelnr
<@sos_gew_updates table='tmp_sos' regel=regel/>;
<#break>
</#switch>
</#if> --wenn regel.student_weighting_variant_id=gewichtung.id
</#foreach>
</#if> --wenn gewichtung.id!=-1
<#if durchfuehrungsart="konnektorlauf">
update tmp_sos set artifical_id=<@update_art_id/> where artifical_id is null;
update tmp_sos set tid_stg=(select min(tid) from lehr_stg_ab_gew where tmp_sos.artifical_id=lehr_stg_ab_gew.artifical_id
-- bugfix #173885
and (lehr_stg_ab_gew.gewichtung_id is null or lehr_stg_ab_gew.gewichtung_id=${gewichtung.id})
);
--Gewichtung füllen
delete from msg_abp_aggr_gew where gewichtung_id=${gewichtung.id} and
${semester_feld}=${einSemester.id} and stichtag=${einStichtag.id};
insert into msg_abp_aggr_gew ( ${target_fields_except_stichtag_summe},
stichtag,
gewichtung_id,
summe
)
select
${target_fields_except_stichtag_summe},
${einStichtag.id} ,
${gewichtung.id},
gewicht
from tmp_sos;
</#if>
</#foreach> --Schleife Semester
</#foreach> --Schleife Stichtag
</#foreach> --Schleife gewichtung
</#compress>
drop table tmp_regelord;
<#if !Maskennummer?exists>
drop table tmp_sos; drop table tmp_zaehlung; ANALYZE msg_abp_aggr_gew;
</#if>
<#if Maskennummer?exists>
--dieser Block wird nur gebraucht für eine Vorschau bei denen aber Fachanzahl oder Abschlussanzahl eingeschränkt ist
<#if "<<Gewichtungsvariante>>"=="'-1'">
<#foreach einStichtag in stichtage>
<#foreach einSemester in semester>
truncate table tmp_zaehlung;
insert into tmp_zaehlung (matrikel_nr,abschlussanzahl)
select matrikel_nr,count(distinct studiengang_nr) from tmp_sos
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id}
group by 1;
update tmp_sos set abschlussanzahl=(select sum(abschlussanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr)
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id};
insert into tmp_zaehlung (matrikel_nr,studiengang_nr,fachanzahl)
select matrikel_nr,studiengang_nr,count(distinct ch30_fach) from tmp_sos
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id} group by 1,2;
update tmp_sos set fachanzahl=(select sum(fachanzahl) from tmp_zaehlung where tmp_sos.matrikel_nr=tmp_zaehlung.matrikel_nr and
tmp_sos.studiengang_nr=tmp_zaehlung.studiengang_nr)
where sem_der_pruefung = ${einSemester.id} and stichtag = ${einStichtag.id};
<#if "<<Fachanzahl>>"!=''&&!"<<Fachanzahl>>"?starts_with('z.B.')>
delete from tmp_sos where not (fachanzahl <<Fachanzahl>>);
</#if>
<#if "<<Abschlussanzahl>>"!=''&&!"<<Abschlussanzahl>>"?starts_with('z.B.')>
delete from tmp_sos where not (abschlussanzahl <<Abschlussanzahl>>);
</#if>
</#foreach>
</#foreach>
</#if> --Gewichtungsvariante -1
analyze tmp_sos;
update tmp_sos set ch30_fach=(select L.stg from ${target_lehr_stg_ab} L where L.tid=tid_stg);
update tmp_sos set kz_fach=(select L.kz_fach from ${target_lehr_stg_ab} L where L.tid=tid_stg);
update tmp_sos set ch35_ang_abschluss=(select L.abschluss from ${target_lehr_stg_ab} L where L.tid=tid_stg);
--update tmp_sos set gewichtungs_ident=null;
update tmp_sos set fachname = (select druck from cifx where key = 30 and apnr = ch30_fach);
update tmp_sos set abschlussname = (select druck from cifx where key = 35 and apnr = ch35_ang_abschluss);
update tmp_sos set stichtagname=(select name from sos_stichtag where tmp_sos.stichtag=sos_stichtag.tid);
update tmp_sos set fachname=nvl(fachname,''::char(1))||' Achtung kein passender Studiengang gefunden!' where tid_stg is null;
update tmp_sos set fb=(select min(fb) from ${target_lehr_stg_ab} L where L.tid=tid_stg) where (fb is null or fb='');
update tmp_sos set lehr=(select min(lehr) from ${target_lehr_stg_ab} L where L.tid=tid_stg) where lehr is null;
drop table tmp_zaehlung;
</#if>--Maskennummer
--Übertragung in sos_lab_aggr
<#if durchfuehrungsart="konnektorlauf">
<#if Maskennummer?exists>
select stichtagname,sem_der_pruefung,matrikel_nr,studiengang_nr,fach_nr,ch30_fach,fachname,kz_fach,ch35_ang_abschluss,abschlussname,stuart,stufrm,ects,
round(gewicht,2), <#if durchfuehrungsart=="vorschau">gewichtungs_ident,</#if> lehr,fb from tmp_sos
order by stichtagname,sem_der_pruefung,matrikel_nr,studiengang_nr,fach_nr,regelord;
</#if>
SELECT
now(),
'Anzahl Sätze in msg_abp_aggr_gew:'::CHAR(30),
count(*)
FROM msg_abp_aggr_gew
GROUP BY 1,2;
</#if> --konnektorlauf
</#if>--sourcesystem CO

123
src-modules/module/msg/hilfstabellen/msg_fkombi_aggr_fuellen.sql

@ -1,4 +1,10 @@ @@ -1,4 +1,10 @@
--freemarker template
<sqlvars>
<sqlvar name="kombi_kennz" type="hashsequence">
select id,content from sx_repository where art='MSG_FKOMBI_KENNZ' and aktiv=1 order by sort1,sort2,sort3;
</sqlvar>
</sqlvars>
<#assign max_fachnr=6 />
<#if MSG_FKOMBI_TID_STG?exists>
@ -17,12 +23,41 @@ hrst CHAR(10) , @@ -17,12 +23,41 @@ hrst CHAR(10) ,
stufrm char(10),
fach_sem_zahl SMALLINT not null,
kz_rueck_beur_ein SMALLINT not null,
kombi_kennz CHAR(10) ,
pversion_uniquename varchar(255),
kombi_kennz varchar(255),
kombi_tid_stg_2 INTEGER ,
kombi_fach_nr SMALLINT ,
kombi_fach_sem_zahl SMALLINT ,
kombi_ch30_fach CHAR(10) ,
kombi_anz smallint,
kombi_anz_spr smallint,
summe decimal(19,6)
)
;
create temp table tmp_msg_fkombi_aggr2(
matrikel_nr INTEGER ,
studiengang_nr SMALLINT not null,
fach_nr SMALLINT not null,
sem_rueck_beur_ein SMALLINT not null,
tid_stg INTEGER ,
ca12_staat SMALLINT not null,
geschlecht SMALLINT not null,
alter decimal(14,2) ,
hzbart SMALLINT ,
hrst CHAR(10) ,
stufrm CHAR(10),
fach_sem_zahl SMALLINT not null,
kz_rueck_beur_ein SMALLINT not null,
pversion_uniquename varchar(255),
kombi_kennz varchar(255),
kombi_anz smallint,
kombi_anz_spr INTEGER ,
kombi_ist_auszuschliessen INTEGER default 0,
kombi_tid_stg INTEGER ,
kombi_fach_nr SMALLINT not null,
kombi_fach_sem_zahl SMALLINT not null,
kombi_ch30_fach CHAR(10) ,
summe decimal(19,6)
)
;
@ -41,6 +76,7 @@ matrikel_nr, @@ -41,6 +76,7 @@ matrikel_nr,
stufrm,
fach_sem_zahl,
kz_rueck_beur_ein,
pversion_uniquename,
summe)
select matrikel_nr,
studiengang_nr,
@ -55,18 +91,17 @@ select matrikel_nr, @@ -55,18 +91,17 @@ select matrikel_nr,
stufrm,
fach_sem_zahl,
kz_rueck_beur_ein,
pversion_uniquename,
summe
from sos_stg_aggr S, sos_stichtag I
from sos_stg_aggr S, dim_studiengang D,sos_stichtag I
where S.stichtag=I.tid
and S.tid_stg=D.tid
and I.appl_key='0'
and ${MSG_FKOMBI_TID_STG}
;
truncate table msg_fkombi_aggr;
<#list 1..max_fachnr as fach_nr>
</#list>
insert into msg_fkombi_aggr
insert into tmp_msg_fkombi_aggr2
(matrikel_nr,
studiengang_nr,
fach_nr,
@ -80,6 +115,7 @@ insert into msg_fkombi_aggr @@ -80,6 +115,7 @@ insert into msg_fkombi_aggr
stufrm,
fach_sem_zahl,
kz_rueck_beur_ein,
pversion_uniquename,
kombi_kennz,
kombi_tid_stg,
kombi_fach_nr,
@ -100,7 +136,8 @@ T.hrst, @@ -100,7 +136,8 @@ T.hrst,
T.stufrm,
T.fach_sem_zahl,
T.kz_rueck_beur_ein,
''::varchar(10) as kombi_kennz,
T.pversion_uniquename,
''::varchar(255) as kombi_kennz,
S.tid_stg as kombi_tid_stg,
S.fach_nr as kombi_fach_nr,
S.fach_sem_zahl as kombi_fach_sem_zahl,
@ -113,10 +150,10 @@ and D.tid=S.tid_stg @@ -113,10 +150,10 @@ and D.tid=S.tid_stg
and T.matrikel_nr=S.matrikel_nr
and T.studiengang_nr=S.studiengang_nr
and T.sem_rueck_beur_ein=S.sem_rueck_beur_ein
--and T.fach_nr !=S.fach_nr
and S.tid_stg != T.tid_stg
;
update msg_fkombi_aggr F set kombi_anz=(select count(*)
update tmp_msg_fkombi_aggr2 F set kombi_anz=(select count(*)
from sos_stg_aggr S, dim_studiengang D, sos_stichtag I
where S.stichtag=I.tid
and I.appl_key='0'
@ -126,19 +163,61 @@ and S.sem_rueck_beur_ein=F.sem_rueck_beur_ein @@ -126,19 +163,61 @@ and S.sem_rueck_beur_ein=F.sem_rueck_beur_ein
and S.studiengang_nr=F.studiengang_nr
);
--TODO: Hildesheim spezifisch:
update msg_fkombi_aggr F set kombi_kennz='SPRACHE_F3'
where exists(select S.matrikel_nr
from sos_stg_aggr S, dim_studiengang D, sos_stichtag I
where S.stichtag=I.tid
and I.appl_key='0'
and D.tid=S.tid_stg
and S.matrikel_nr=F.matrikel_nr
and S.sem_rueck_beur_ein=F.sem_rueck_beur_ein
and S.studiengang_nr=F.studiengang_nr
and D.stg in ('008','150','059')
and S.fach_nr=3
);
<#if kombi_kennz?has_content>
<#foreach kennz in kombi_kennz>
update tmp_msg_fkombi_aggr2 set kombi_kennz='${kennz.id}'
where ${kennz.content};
</#foreach>
</#if>
truncate table msg_fkombi_aggr;
insert into msg_fkombi_aggr
(matrikel_nr,
studiengang_nr,
fach_nr,
sem_rueck_beur_ein,
tid_stg,
ca12_staat,
geschlecht,
alter,
hzbart,
hrst,
stufrm,
fach_sem_zahl,
kz_rueck_beur_ein,
kombi_anz,
kombi_kennz,
kombi_tid_stg,
kombi_fach_nr,
kombi_fach_sem_zahl,
kombi_ch30_fach,
summe)
select
matrikel_nr,
studiengang_nr,
fach_nr,
sem_rueck_beur_ein,
tid_stg,
ca12_staat,
geschlecht,
alter,
hzbart,
hrst,
stufrm,
fach_sem_zahl,
kz_rueck_beur_ein,
kombi_anz,
kombi_kennz,
kombi_tid_stg,
kombi_fach_nr,
kombi_fach_sem_zahl,
kombi_ch30_fach,
summe
from tmp_msg_fkombi_aggr2;
drop table tmp_msg_fkombi_aggr;

45
src-modules/module/msg/masken/160770_felderinfo.unl

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
160770^Köpfe oder Fälle ?^1^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Fälle';^
160771^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^
160772^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^
160773^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^
160774^Stichtag Prüfungen^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' order by 2;^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^
160775^Prüfungsstatus^13^0^0^140^70^1^char^30^0^1^<<SQL>> select apnr,druck from sos_k_pstatus;^hidden^ ^
160776^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \
--freemarker template\
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \
</#if>\
order by 2^ ^ ^
160777^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^
160778^Studienabschnitt^12^330^-1^130^150^1^integer^4^1^1^<<SQL>> select tid, eintrag from studienabschnitt where tid <= 2 order by 1;^hidden^<<SQL>> select tid, eintrag from studienabschnitt where tid = 2;^
160779^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^
160780^Prüfungsart^15^0^0^140^150^1^char^4^0^1^<<SQL>> select apnr,druck from sos_k_part order by 2^ ^ ^
160781^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^
160782^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\
--freemarker template\
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\
sx_tables T where F.table_name=T.name and F.currentlyused=1\
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\
and (F.table_name ='msg_abp_aggr'\
/* or F.table_name in (<<Weitere Tabellen>>) */) \
<#else>\
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\
</#if>\
order by 2;^ ^ ^
160783^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^
160784^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^
160785^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=160770 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=160770 order by ord limit 1^
160786^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^
160789^AbsolventInnen oder Abschlussprüfungen^11^0^0^100^200^1^integer^255^1^1^<<SQL>> \
select 1,'AbsolventInnen'\
union select 2,'Abschlussprüfungen'\
union select 3,'AbsolventInnenfachfälle'\
union select 4,'Teilstudienabschlussprüfungen'\
from xdummy \
order by 1^ ^<<SQL>> select 2,'Abschlussprüfungen' from xdummy^
160790^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^
160791^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^
160792^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^
160793^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^

1
src-modules/module/msg/masken/160770_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
160770^7^

22
src-modules/module/msg/masken/160770_masken_felder_bez.unl

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
160770^160770^
160770^160771^
160770^160772^
160770^160773^
160770^160774^
160770^160775^
160770^160776^
160770^160777^
160770^160778^
160770^160779^
160770^160780^
160770^160781^
160770^160782^
160770^160783^
160770^160784^
160770^160785^
160770^160786^
160770^160789^
160770^160790^
160770^160791^
160770^160792^
160770^160793^

140
src-modules/module/msg/masken/160770_maskeninfo.unl

@ -0,0 +1,140 @@ @@ -0,0 +1,140 @@
160770^Abschlussprüfungen Datenblatt^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
<#include "DatenblattSQLGenerator"/>\
\
--ram excelexport \
\
<sqlvars>\
<sqlvar name="basetable" ><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in ('msg_abp_aggr');]]>\
</sqlvar>\
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in (''\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
\
)\
order by 1;]]>\
</sqlvar>\
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\
table_name ,\
foreignkey_tab\
from sx_fields where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\
and foreignkey_tab in ('-xy'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\
;]]>\
</sqlvar>\
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\
SELECT name,\
caption,\
field_type,\
is_primarykey,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
table_name,\
foreignkey_uniquename\
from sx_fields\
where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
)\
and currentlyused=1\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
order by 2,3;]]>\
</sqlvar>\
</sqlvars>\
\
--#### Filter Abschlusstyp festlegen #########################\
--Filterbedingung für select der Prüfungsdatensätze und zu verwendendes Prüfungssemester (1,2,3: des Gesamtabschlusses, 4: des Teilstudienabschlusses) festlegen\
-- S für quelltabelle (da im Filter "Köpfe oder Fälle?" verwendet)\
<#if "<<AbsolventInnen oder Abschlussprüfungen>>" == "1" > --AbsolventInnen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\
<#assign pruefstatus = " and pstatus = 'BE' " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "2" > --Abschlussprüfungen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\
<#assign pruefstatus = " " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "3" > --AbsolventInnenfachfälle\
<#assign pruefabschlusstyp = " and ((studiengangstyp='ESG' and ${SOS_ABSCHLUSSTYP_GES}) or (studiengangstyp='TSG' and ${SOS_ABSCHLUSSTYP_TSTG})) " />\
<#assign pruefstatus = " and pstatus = 'BE' and ((studiengangstyp='TSG' and pstatus_tsg = 'BE') or studiengangstyp='ESG') " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "4" > --Teilstudienabschlussprüfungen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_TSTG} and studiengangstyp in ('TSG') " />\
<#assign pruefstatus = " " />\
<#assign pruefsemester = "sem_der_pruefung_tsg" />\
</#if>\
\
\
<#assign filter="and prueck=0\
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\
/* and stichtag = <<Stichtag Prüfungen>> */\
/* and geschlecht=<<Geschlecht>> */\
/* and part = <<Prüfungsart>> */\
/* and matrikel_nr=<<Matrikel-Nr.>> */\
" />\
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','msg_abp_aggr_gew.')/>\
<#if "<<Weitere Tabellen>>"?index_of("dim_studiengang_gew")&gt;-1>\
<#assign filter=filter+" and (dim_studiengang_gew.gewichtid is null or "+.vars["Köpfe oder Fälle ?"]?replace('S.','dim_studiengang_gew.')?replace("gewichtung_id","gewichtid")+")"/>\
</#if>\
<#elseif "<<Köpfe oder Fälle ?>>"!="">\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\
</#if>\
\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\
\
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\
\
\
/* <#assign filter=filter+ " and "+ pruefsemester+" >= <<Seit Semester>> " /> */\
/* <#assign filter=filter+ " and "+ pruefsemester+" <= <<Bis Semester>> " /> */\
<#assign filter=filter+ pruefstatus /> \
<#assign filter=filter+ pruefabschlusstyp /> \
\
\
\
\
\
\
<@generateDatenblatt \
p_basetable = basetable\
p_joinTables = getJoinTables\
p_joinWhereClauses = getJoinWhereClauses\
p_selectClause = getSelectClause\
p_aggregationsfeld ="summe"\
p_aggregatfunktion = "sum("\
p_filter = filter\
p_show_keys= <<Schlüssel anzeigen>>\
p_postProcessing= ""\
/>^--Freemarker Template \
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
<#assign i=1 />\
<#if getSelectClause?has_content >\
<#foreach myfield in getSelectClause>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
</#if>\
</#foreach>\
</#if>\
@@@^Altersgruppe^Anzahl^Abschlussprüfungen Einfach,- Mehrfach- und Teilstudiengänge^drop table tmp_tabelle;^^2^700^360^^1^ ^

1
src-modules/module/msg/masken/160770_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
16^160770^

45
src-modules/module/msg/masken/49000_felderinfo.unl

@ -0,0 +1,45 @@ @@ -0,0 +1,45 @@
49000^Köpfe oder Fälle ?^1^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag = 'Fälle';^
49001^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^
49002^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^
49003^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^
49004^Stichtag Prüfungen^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' order by 2;^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Prüfungen' and appl_key='2';^
49005^Prüfungsstatus^13^0^0^140^70^1^char^30^0^1^<<SQL>> select apnr,druck from sos_k_pstatus;^hidden^ ^
49006^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \
--freemarker template\
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \
</#if>\
order by 2^ ^ ^
49007^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^
49008^Studienabschnitt^12^330^-1^130^150^1^integer^4^1^1^<<SQL>> select tid, eintrag from studienabschnitt where tid <= 2 order by 1;^hidden^<<SQL>> select tid, eintrag from studienabschnitt where tid = 2;^
49009^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^
49010^Prüfungsart^15^0^0^140^150^1^char^4^0^1^<<SQL>> select apnr,druck from sos_k_part order by 2^ ^ ^
49011^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^
49012^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\
--freemarker template\
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\
sx_tables T where F.table_name=T.name and F.currentlyused=1\
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\
and (F.table_name ='msg_abp_aggr'\
/* or F.table_name in (<<Weitere Tabellen>>) */) \
<#else>\
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\
</#if>\
order by 2;^ ^ ^
49013^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^
49014^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^
49015^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49000 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49000 order by ord limit 1^
49016^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^
49019^AbsolventInnen oder Abschlussprüfungen^11^0^0^100^200^1^integer^255^1^1^<<SQL>> \
select 1,'AbsolventInnen'\
union select 2,'Abschlussprüfungen'\
union select 3,'AbsolventInnenfachfälle'\
union select 4,'Teilstudienabschlussprüfungen'\
from xdummy \
order by 1^ ^<<SQL>> select 2,'Abschlussprüfungen' from xdummy^
49020^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^
49021^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^
49022^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^
49023^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^

1
src-modules/module/msg/masken/49000_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
49000^370^

22
src-modules/module/msg/masken/49000_masken_felder_bez.unl

@ -0,0 +1,22 @@ @@ -0,0 +1,22 @@
49000^49000^
49000^49001^
49000^49002^
49000^49003^
49000^49004^
49000^49005^
49000^49006^
49000^49007^
49000^49008^
49000^49009^
49000^49010^
49000^49011^
49000^49012^
49000^49013^
49000^49014^
49000^49015^
49000^49016^
49000^49019^
49000^49020^
49000^49021^
49000^49022^
49000^49023^

140
src-modules/module/msg/masken/49000_maskeninfo.unl

@ -0,0 +1,140 @@ @@ -0,0 +1,140 @@
49000^Abschlussprüfungen Datenblatt^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
<#include "DatenblattSQLGenerator"/>\
\
--ram excelexport \
\
<sqlvars>\
<sqlvar name="basetable" ><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in ('msg_abp_aggr');]]>\
</sqlvar>\
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in (''\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
\
)\
order by 1;]]>\
</sqlvar>\
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\
table_name ,\
foreignkey_tab\
from sx_fields where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\
and foreignkey_tab in ('-xy'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\
;]]>\
</sqlvar>\
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\
SELECT name,\
caption,\
field_type,\
is_primarykey,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
table_name,\
foreignkey_uniquename\
from sx_fields\
where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
)\
and currentlyused=1\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
order by 2,3;]]>\
</sqlvar>\
</sqlvars>\
\
--#### Filter Abschlusstyp festlegen #########################\
--Filterbedingung für select der Prüfungsdatensätze und zu verwendendes Prüfungssemester (1,2,3: des Gesamtabschlusses, 4: des Teilstudienabschlusses) festlegen\
-- S für quelltabelle (da im Filter "Köpfe oder Fälle?" verwendet)\
<#if "<<AbsolventInnen oder Abschlussprüfungen>>" == "1" > --AbsolventInnen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\
<#assign pruefstatus = " and pstatus = 'BE' " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "2" > --Abschlussprüfungen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_GES} and studiengangstyp in ('ESG','MSG') " />\
<#assign pruefstatus = " " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "3" > --AbsolventInnenfachfälle\
<#assign pruefabschlusstyp = " and ((studiengangstyp='ESG' and ${SOS_ABSCHLUSSTYP_GES}) or (studiengangstyp='TSG' and ${SOS_ABSCHLUSSTYP_TSTG})) " />\
<#assign pruefstatus = " and pstatus = 'BE' and ((studiengangstyp='TSG' and pstatus_tsg = 'BE') or studiengangstyp='ESG') " />\
<#assign pruefsemester = "sem_der_pruefung" />\
<#elseif "<<AbsolventInnen oder Abschlussprüfungen>>" == "4" > --Teilstudienabschlussprüfungen\
<#assign pruefabschlusstyp = " and ${SOS_ABSCHLUSSTYP_TSTG} and studiengangstyp in ('TSG') " />\
<#assign pruefstatus = " " />\
<#assign pruefsemester = "sem_der_pruefung_tsg" />\
</#if>\
\
\
<#assign filter="and prueck=0\
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\
/* and stichtag = <<Stichtag Prüfungen>> */\
/* and geschlecht=<<Geschlecht>> */\
/* and part = <<Prüfungsart>> */\
/* and matrikel_nr=<<Matrikel-Nr.>> */\
" />\
<#if "<<Köpfe oder Fälle ?>>"?index_of("S.gewichtung_id=")!=-1>\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]?replace('S.','sos_abp_aggr_gew.')/>\
<#if "<<Weitere Tabellen>>"?index_of("dim_studiengang_gew")&gt;-1>\
<#assign filter=filter+" and (dim_studiengang_gew.gewichtid is null or "+.vars["Köpfe oder Fälle ?"]?replace('S.','dim_studiengang_gew.')?replace("gewichtung_id","gewichtid")+")"/>\
</#if>\
<#elseif "<<Köpfe oder Fälle ?>>"!="">\
<#assign filter=filter+" and "+.vars["Köpfe oder Fälle ?"]/>\
</#if>\
\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\
\
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\
\
\
/* <#assign filter=filter+ " and "+ pruefsemester+" >= <<Seit Semester>> " /> */\
/* <#assign filter=filter+ " and "+ pruefsemester+" <= <<Bis Semester>> " /> */\
<#assign filter=filter+ pruefstatus /> \
<#assign filter=filter+ pruefabschlusstyp /> \
\
\
\
\
\
\
<@generateDatenblatt \
p_basetable = basetable\
p_joinTables = getJoinTables\
p_joinWhereClauses = getJoinWhereClauses\
p_selectClause = getSelectClause\
p_aggregationsfeld ="summe"\
p_aggregatfunktion = "sum("\
p_filter = filter\
p_show_keys= <<Schlüssel anzeigen>>\
p_postProcessing= ""\
/>^--Freemarker Template \
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
<#assign i=1 />\
<#if getSelectClause?has_content >\
<#foreach myfield in getSelectClause>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
</#if>\
</#foreach>\
</#if>\
@@@^Altersgruppe^Anzahl^Abschlussprüfungen Einfach,- Mehrfach- und Teilstudiengänge^drop table tmp_tabelle;^^2^700^360^^1^ ^

1
src-modules/module/msg/masken/49000_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
370^49000^

34
src-modules/module/msg/masken/49040_felderinfo.unl

@ -0,0 +1,34 @@ @@ -0,0 +1,34 @@
49040^Filter Kombinationen^60^0^0^140^150^1^sql^70^0^1^<<SQL>> select id,caption from sx_repository where art='MSG_FKOMBI_FILTER' order by 2^ ^ ^
49041^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today()-365 between sem_beginn and sem_ende;^
49042^Studiengang^6^0^0^140^150^50^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Kostenstellen-Sicht', 'SOS-Studiengang-Sicht') order by 3,2;^ ^ ^
49043^Staatsangehörigkeit^36^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='SOS-Staaten-Sicht' order by 3,2;^ ^ ^
49046^Weitere Tabellen^123^0^0^140^140^10^char^30^0^1^<<SQL>> \
--freemarker template\
select name,string_not_null(caption) || ' - ' || name from sx_tables where name in ('dim_studiengang')\
<#if <<tablestylesheet>>!='tabelle_html_datenblatt.xsl'>\
and name in (select distinct tablename from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename=<<tablestylesheet>>)) \
</#if>\
order by 2^ ^ ^
49047^bis Fachsemester^20^350^-1^140^10^1^integer^30^0^0^^ ^ ^
49049^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by 1 DESC;^ ^<<SQL>> select tid, eintrag from semester where today() between sem_beginn and sem_ende;^
49051^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif WHERE cif.key = 9003 order by 2;^ ^ ^
49052^Felder^125^0^0^150^190^10^char^30^0^1^<<SQL>>\
--freemarker template\
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\
sx_tables T where F.table_name=T.name and F.currentlyused=1\
<#if <<tablestylesheet>>='tabelle_html_datenblatt.xsl'>\
and (F.table_name ='msg_fkombi_aggr'\
/* or F.table_name in (<<Weitere Tabellen>>) */) \
<#else>\
and trim(F.table_name) || '.' || F.name in (select trim(tablename)||'.'||trim(fieldname) from stylesheet_field where stylesheet_id in \
(select tid from sx_stylesheets where filename=<<tablestylesheet>>))\
</#if>\
order by 2;^ ^ ^
49053^Fächer^8^0^0^150^200^6^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^
49054^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^1^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^
49055^tablestylesheet^121^0^0^100^200^1^char^200^1^1^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49040 order by ord^ ^<<SQL>> select distinct filename,X.caption,ord from sx_stylesheets X,sx_mask_style S where X.tid=S.stylesheet_id and S.maskeninfo_id=49040 order by ord limit 1^
49056^Ausgabeformat^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and nature::smallint<100 order by nature::smallint^ ^<<SQL>> select element_value,description from menu_element where element='Ausgabeformat' and description='HTML'^
49060^##line##^10^0^0^100^100^1^char^5000^0^8^^ ^1^
49061^Abschluss^9^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') and aktiv=1 order by 3,2;^ ^ ^
49062^Matrikel-Nr.^30^350^-1^150^180^1^char^200^0^0^^ ^ ^
49063^##line##^40^0^0^100^100^1^char^5000^0^8^^ ^1^

1
src-modules/module/msg/masken/49040_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
49040^370^

17
src-modules/module/msg/masken/49040_masken_felder_bez.unl

@ -0,0 +1,17 @@ @@ -0,0 +1,17 @@
49040^49040^
49040^49041^
49040^49042^
49040^49043^
49040^49046^
49040^49047^
49040^49049^
49040^49051^
49040^49052^
49040^49053^
49040^49054^
49040^49055^
49040^49056^
49040^49060^
49040^49061^
49040^49062^
49040^49063^

109
src-modules/module/msg/masken/49040_maskeninfo.unl

@ -0,0 +1,109 @@ @@ -0,0 +1,109 @@
49040^Fächerkombinatorik Datenblatt^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
<#include "DatenblattSQLGenerator"/>\
\
--ram excelexport \
\
<sqlvars>\
<sqlvar name="basetable" ><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in ('msg_fkombi_aggr');]]>\
</sqlvar>\
<sqlvar name="getJoinTables" type="hashsequence"><![CDATA[\
SELECT distinct name\
from sx_tables\
where name in (''\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
\
)\
order by 1;]]>\
</sqlvar>\
<sqlvar name="getJoinWhereClauses" type="hashsequence"><![CDATA[\
select table_name || '.' || name || '=' || foreignkey_tab || '.' || foreignkey_col as condition,\
table_name ,\
foreignkey_tab\
from sx_fields where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)} )\
and foreignkey_tab in ('-xy'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)})\
;]]>\
</sqlvar>\
<sqlvar name="getSelectClause" type="hashsequence"><![CDATA[\
SELECT name,\
caption,\
field_type,\
is_primarykey,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
foreignkey_cond,\
foreignkey_func,\
table_name,\
foreignkey_uniquename\
from sx_fields\
where table_name in ('${basetable}'\
${DatenblattTables(<<tablestylesheet>>,"<<Weitere Tabellen>>",.vars["Weitere TabellenObject"].allKeys)}\
)\
and currentlyused=1\
${DatenblattFields(<<tablestylesheet>>,"<<Felder>>",FelderObject.allKeys)}\
order by 2,3;]]>\
</sqlvar>\
</sqlvars>\
\
\
\
<#assign filter="and 1=1\
/* AND fach_sem_zahl <= <<bis Fachsemester>> */\
/* and geschlecht=<<Geschlecht>> */\
/* and matrikel_nr=<<Matrikel-Nr.>> */\
" />\
\
\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> --<<Studiengang>> \
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.stg in "+Fächer.allNeededKeysList +")" /> --<<Fächer>> */\
\
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in " + Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\
\
\
/* <#assign filter=filter+ " and sem_rueck_beur_ein >= <<Seit Semester>> " /> */\
/* <#assign filter=filter+ " and sem_rueck_beur_ein <= <<Bis Semester>> " /> */\
\
\
\
\
\
\
<@generateDatenblatt \
p_basetable = basetable\
p_joinTables = getJoinTables\
p_joinWhereClauses = getJoinWhereClauses\
p_selectClause = getSelectClause\
p_aggregationsfeld ="summe"\
p_aggregatfunktion = "sum("\
p_filter = filter\
p_show_keys= <<Schlüssel anzeigen>>\
p_postProcessing= ""\
/>^--Freemarker Template \
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
<#assign i=1 />\
<#if getSelectClause?has_content >\
<#foreach myfield in getSelectClause>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
<#if myfield.foreignkey_tab != '' && <<Schlüssel anzeigen>>==1>\
<#assign i=i+1 />\
Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
</#if>\
</#foreach>\
</#if>\
@@@^Altersgruppe^Anzahl^Auswertung von Fächerkombinationen^drop table tmp_tabelle;^^2^700^360^^1^ ^

1
src-modules/module/msg/masken/49040_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
370^49040^

5
src-modules/module/msg/msg_modul_entfernen.x

@ -0,0 +1,5 @@ @@ -0,0 +1,5 @@
#!/bin/bash
echo "------------------------------------------------------------"
echo
module_drop.x lm $LM_PFAD

4
src-modules/module/msg/msg_modul_erzeugen.x

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
#!/bin/bash
module_install.x lm $LM_PFAD

65
src-modules/module/msg/msg_update.x

@ -0,0 +1,65 @@ @@ -0,0 +1,65 @@
#!/bin/bash
#Arbeitsverzeichnis fuer crontab
PFAD=$2
if [ "$PFAD" != "" ]
then
cd $PFAD
fi
#Umgebung einlesen:
if [ "$MSG_PFAD" = "" ]
then
echo "ACHTUNG: Die Umgebungsvariable MSG_PFAD ist nicht gesetzt. Bitte prüfen Sie $SUPERX_DIR/db/bin/SQL_ENV"
exit 1
fi
if [ "$MSG_ERRORMAIL" != "" ]
then
ERRORMAIL=$MSG_ERRORMAIL
export ERRORMAIL
fi
if [ "$MSG_LOGMAIL" != "" ]
then
LOGMAIL=$MSG_LOGMAIL
export LOGMAIL
fi
if [ "$MSG_BACKUP" != "" ]
then
MODULE_BACKUP=$MSG_BACKUP
export MODULE_BACKUP
fi
#hier geht es los
#runAndCheck.x path command (EXIT_ON_ERROR|CONT_ON_ERROR) (SEND_ERRORMAIL|NO_ERRORMAIL) (SEND_LOGMAIL|NO_LOGMAIL) [description] "
echo "msg-Update startet" >$MSG_ERRORDAT
#Tagesdatum für Systeminfo
date +'%d.%m.%Y' > $MSG_LOAD_PFAD/superx.datum
runAndCheck.x $MSG_PFAD "module_etl.x msg $MSG_PFAD $MSG_LOAD_PFAD" EXIT_ON_ERROR SEND_ERRORMAIL SEND_LOGMAIL "MSG update$MANDANTID"
cat $MSG_PFAD/L_MSG_update$MANDANTID.log >>$MSG_ERRORDAT
fgrep -s "not found" $MSG_ERRORDAT
FLAG1=$?
fgrep -i -s "error" $MSG_ERRORDAT
FLAG2=$?
fgrep -i -s "nicht gefunden" $MSG_ERRORDAT
FLAG3=$?
if [ $FLAG1 -eq 0 -o $FLAG2 -eq 0 -o $FLAG3 -eq 0 ]
then
echo "Fehler beim MSG-Update "
echo "---------------------------------------"
echo "Fehlerprotokoll in $MSG_ERRORDAT"
echo "---------------------------------------"
cp $MSG_LOAD_PFAD/superx.datum.alt $MSG_LOAD_PFAD/superx.datum
else
echo "MSG-Update erfolgreich"
fi
echo "---------------------------Beginn Prüfroutine-----------------------------------" >>$MSG_ERRORDAT
#cat $MSG_PFAD/L_msg_Test$MANDANTID.log >>$MSG_ERRORDAT
pruefmail.x $MSG_PFAD/L_msg_Test$MANDANTID.log $ERRORMAIL

18
src-modules/module/msg/msg_update_cron.x.sam

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
#!/bin/bash
#Beispielscript für cronjobs
#Im cronjob ist keine Umgebung vorhanden, deshalb vorher laden.
#Selbstredend als normaler user, nicht als root z.B.
. /home/superx/db/bin/SQL_ENV
cd $MSG_LOAD_PFAD
./msg_unload.x
$MSG_PFAD/msg_update.x $MSG_PFAD
#In der crontab sähe das so aus:
# msg-Update
# -0 4 * * 2,3,4,5,6 /home/superx/db/module/msg/msg_update_cron.x >/home/superx/db/module/msg/msg_update_cron.log 2>&1
# Bedeutung: Der MSG-Update wird Di-Sa morgens um 4:00 Uhr ausgeführt

18
src-modules/module/msg/msg_update_cron_costage.x.sam

@ -0,0 +1,18 @@ @@ -0,0 +1,18 @@
#!/bin/bash
#Beispielscript für cronjobs
#Im cronjob ist keine Umgebung vorhanden, deshalb vorher laden.
#Selbstredend als normaler user, nicht als root z.B.
. /home/superx/db/bin/SQL_ENV
cd $MSG_LOAD_PFAD
./msg_costage_unload.x
$MSG_PFAD/msg_update.x $MSG_PFAD
#In der crontab sähe das so aus:
# msg-Update
# -0 4 * * 2,3,4,5,6 /home/superx/db/module/msg/msg_update_cron.x >/home/superx/db/module/msg/msg_update_cron.log 2>&1
# Bedeutung: Der MSG-Update wird Di-Sa morgens um 4:00 Uhr ausgeführt

207
src-modules/module/msg/rohdaten/MSG_ENV.sam

@ -0,0 +1,207 @@ @@ -0,0 +1,207 @@
#!/bin/bash
#Entladeumgebung für SuperX
#Die folgenden Parameter müssen angepasst werden
# SX_CLIENT ist die Client-Anwendung zum Zugriff auf die DB
# Mögliche Werte: dbaccess (Informix), psql (Postgres), jdbc (Alle anderen)
#SX_CLIENT=dbaccess; export SX_CLIENT
SX_CLIENT=psql; export SX_CLIENT
#SX_CLIENT=jdbc; export SX_CLIENT
#Wichtig bei jdbc und psql: Die Umgebungsvariable DB_PROPERTIES gibt des Pfad zur db-xxx.properties an.
#Dies wird in allen Programmen des jdbc-Clients genutzt.
#DB_PROPERTIES=./db-sos_pg.properties
#export DB_PROPERTIES
#auch die Logging-Ausgabe kann variiert werden: (./logging.properties.sam umbenennen)
#LOGGER_PROPERTIES=./logging.properties.sam
#export LOGGER_PROPERTIES
#Für jdbc auch JAVA_OPTS: viel RAM
#JAVA_OPTS="-Xmx500M"
#export JAVA_OPTS
#Database: POSTGRES, INFORMIX
DATABASE=POSTGRES
export DATABASE
#Aus welchem System wird entladen ? SOSPOS-GX oder HISinOne?
#SOURCESYSTEM=hisinone
SOURCESYSTEM=sospos
export SOURCESYSTEM
#Achtung: Wichtig ist unter UNIX, dass LANG korrekt (auf UTF-8,ISO-8859-1 oder de_DE@euro) gesetzt ist.
#Wir haben die Variable hier nicht definiert, weil das eigentlich
#sytsemweit definiert sein muss. LANG ist bereits beim Entpacken
#den Kernmoduls massgeblich.
#LANG=de_DE@euro
#LANG=de_DE.UTF-8
#export LANG
case $SX_CLIENT in
dbaccess)
INFORMIXDIR=/home/informix
export INFORMIXDIR
INFORMIXSERVER=sospos_host
export INFORMIXSERVER
ONCONFIG=onconfig.sospos
export ONCONFIG
INF_BIN=$INFORMIXDIR/bin
export INF_BIN
DBMONEY=. ; export DBMONEY
DBDATE=DMY4. ; export DBDATE
DBDELIMITER="^" ; export DBDELIMITER
CLIENT_LOCALE=de_de.8859-1@bund
export CLIENT_LOCALE
SERVER_LOCALE=de_de.8859-1@bund
export SERVER_LOCALE
;;
psql)
PGPORT=5432
export PGPORT
#Bei Betrieb von Postgres (remote) muss für psql
#unter cygwin die Umgebungsvariable PGHOST gesetzt sein
#Sonst versucht er eine Socket Connection
#PGHOST und PGPORT müssen auf den SOS-Rechner zeigen
PGHOST=sospos_host
export PGHOST
#PGUSER: nur Datenbank, nicht Betriebssystem
PGUSER=sospos
export PGUSER
#Prüfen ob der PATH erweitert werden muss
#Standard-Installationsverz. von Postgres ist
PGPATH=/usr/local/pgsql
#Nur bei hisinone:
#JDBC_PARAM="set search_path to hisinone;"
#unter Win wäre dies PGPATH=/cygdrive/c/Programme/PostgreSQL/8.0-beta1
#unter cygwin liegen die binaries direkt in /bin
export PGPATH
#Diese Variablen dürfen nicht verändert werden:
export PGDATESTYLE=German
O_DESCR=$SUPERX_DIR/db/conf/unldescr_postgres_copy.xml
export O_DESCR
;;
esac
#SOS-Versionsnummer (Ganzzahl) 6,7,8,9,10,11
#Wenn Sie eine höhere Versionnummer einsetzen, nehmen Sie einfach
#die letztmögliche.
VERSION=11
export VERSION
#ab hier werden Daten ausgewertet:
start_stud_sem=19881; export start_stud_sem #sos-studenten und fächer
start_pruef_sem=19881; export start_pruef_sem #Prüfungen
#
#Wird immer komplett entladen, oder nur die Änderungen? (true/false)
#Bie derErstinstallation und in der Implementierungsphase empfehlen wir true
SOS_UNL_COMPLETE=true
export SOS_UNL_COMPLETE
#Transaktionen abschalten?
TRANSACTION_OFF=""
#Wenn Transaktionen eingeschaltet sind und die Protokoll-Tabellen groß sind,
#dann sollte dieses ent-kommentiert sein.
#TRANSACTION_OFF="SET ISOLATION TO DIRTY READ;"
export TRANSACTION_OFF
#Sollen die Daten bzgl. matrikelnr anonymisiert werden (Namen kommen sowieso nicht rüber)?
#Wenn Sie true wählen, müssen Sie das Script ausführen, das die Matrikelnummern
SOS_UNL_ANON=false
export SOS_UNL_ANON
#setzen Sie POS_PNR auf 0, um alle Prüfungen zu entladen:
POS_PNR=0
#Vorsicht: viele Daten...
#Sinnvoller ist es die Einzelprüfungen zu entladen, die gewünscht sind
#z.B.
#POS_PNR='9390,9490,9690,9700'
#Dies sind Prüfungsnummern, die nicht in hskonst verzeichnet sind.
export POS_PNR
#gibt es weitere Filter für die LAB oder nicht.
#Standardmäßig werden anerkannte Prüfungen gefiltert mit dem Ausdruck
LAB_FILTER="AND (lab.panerk is null or lab.panerk != 'J')"
export LAB_FILTER
#Sollen Name/Vorname/Handynr(Semesteranschrift) der Studierenden entladen werden?
#Wenn ja, dann ist der Wert "true", wenn nein, dann ist es "false"
STUD_IDENT=false
export STUD_IDENT
#Sollen Name/Vorname der Prüfer entladen werden?
#Wenn ja, dann ist der Wert "true", wenn nein, dann ist es "false"
PRUEFER_NAME=false
export PRUEFER_NAME
#Nur HISinOne-STU: sollen Personattribute entladen werden, z.B. personattributetype.id 1,2,3:
#PERSONATTRIBUTE_IDS="1,2,3"
#export PERSONATTRIBUTE_IDS
ERRORMAIL=superx@localhost
export ERRORMAIL
LOGMAIL="$ERRORMAIL"
export LOGMAIL
#Name des ausführbaren Mailprogramms, mail oder mutt:
MAILPROG="mail"
export MAILPROG
#Die folgenden Parameter müssen wahrscheinlich nicht geändert werden:
#DBNLS=2 ; export DBNLS
#PATH=${PATH}:${INFORMIXDIR}/bin ; export PATH
DBASE=sospos ; export DBASE
DBDELIMITER="^" ; export DBDELIMITER
##
DBDATE=DMY4. ; export DBDATE
##Pfad für Entladedaten:
SOS_PFAD=.
export SOS_PFAD
SOS_LOAD_PFAD=$SOS_PFAD
export SOS_LOAD_PFAD
##hier muss Unterverzeichnis unl existieren!
LOG=$SOS_PFAD/sos_unload.err
export LOG
DATEFILE=$SOS_PFAD/superx.datum
export DATEFILE
if [ "$SOS_UNL_COMPLETE" = "true" ]
then
DATUM="01.01.1900"
else
DATUM=`tail -1 $SOS_PFAD/superx.datum`
fi
#Beim Push Entladen benötigte jars nach ./lib/kopieren:
#jfor-0.7.2rc1.jar, postgresql-9.2-1002.jdbc4.jar, superx4.9.jar
#LIB_PATH=$SOS_LOAD_PFAD/lib
#JDBC_CLASSPATH="." ; for i in `ls $LIB_PATH/*.jar` ; do JDBC_CLASSPATH=$JDBC_CLASSPATH:$i ; done
#export JDBC_CLASSPATH
#XML_CLASSPATH=""
#export XML_CLASSPATH
#COPY_METHOD kann rsync oder scp sein
COPY_METHOD=rsync; export COPY_METHOD
#OPTIONEN für scp z.B.
#SCP_OPTS="-p -B -i /home/sospos/.ssh/superxkey"
#export SCP_OPTS
#Default für $SOS_LOAD_PFAD: Hier muss Unterverzeichnus unl existieren.
REMOTE_DIR="/home/superx/db/module/sos/rohdaten"
export REMOTE_DIR
#Defaultuser
REMOTE_USER="superx"
export REMOTE_USER
#Defaulthostname / IP-Nr. des SuperX-DB-Servers, auf den die Rohdaten kopiert werden
REMOTE_HOST="superx"
export REMOTE_HOST

33
src-modules/module/msg/rohdaten/msg_unload.xml

@ -0,0 +1,33 @@ @@ -0,0 +1,33 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<superx-unload version="4.0">
<module id="msg" version="1.5" systeminfo_id="7">MSG-Modul</module>
<parameters>
<!-- Gruppe Systemparameter -->
<param name="VERSION" value="13" defaultValue="13" description="Version des Vorsystems." priority="1" sourcesystem="0"
wertebereich="12" ab_version=">6.0" gruppe="Systemparameter" >
<comment>Wird nicht mehr gepflegt. Ab SOSPOS-Version 13 immer auf 13 setzen, bei HISinOne wird sie automatisch gesetzt.</comment></param>
<param name="msg_start_pruef_sem" defaultValue="19911" description="Startsemester Prüfungen:" priority="1" sourcesystem="0"
wertebereich="SEMESTER" ab_version=">6.0" gruppe="Systemparameter" >
<comment>Ab welchem Prüfungssemester sollen Prüfungen entladen werden? z.B. 20221 für SoSe 2022</comment></param>
<param name="EXTERNAL_SUBJECTS" defaultValue="false" description="Sollen externe Fächer entladen werden? "><comment> Wenn ja, dann ist der Wert "true", wenn nein, dann ist er "false"</comment></param>
</parameters>
<sourcesystems>
<sourcesystem name="sospos" description="SOSPOS-GX-Datenbank" />
<sourcesystem name="hisinone" description="HISinOne-Datenbank" default="true"/>
<sourcesystem name="co" description="CampusOnline-Datenbank" />
</sourcesystems>
<unload-job id="msg_abp" extraction-table="" extraction-script="" transfer-unload-file="unl/msg_abp.unl" >
<comment> Abschlussprüfungen</comment>
<extraction-sql sourcesystem="" database="" version="">
<![CDATA[
select * from xdummy where 1=0;
]]>
</extraction-sql>
</unload-job>
</superx-unload>

11
src-modules/module/msg/schluesseltabellen/sx_repository_fuellen.sql

@ -3,7 +3,16 @@ @@ -3,7 +3,16 @@
<#assign systeminfo_id="370" />
<#assign repos = [
{"id":"MSG_FKOMBI_TID_STG", "caption":"Studiengänge für Fächerkombinationen", "art":"MSG_TID_STG", "art2":"",
"content":" tid_stg in (select D.tid from dim_studiengang D where D.ist_lehramt=1)"}
"content":" tid_stg in (select D.tid from dim_studiengang D where D.ist_lehramt=1)"},
{"id":"SOS_ABSCHLUSSTYP_GES", "caption":"Gesamtabschluss", "art":"SOS_ABSCHLUSSTYP", "art2":"",
"content":"pnr=9000"},
{"id":"SOS_ABSCHLUSSTYP_TSTG", "caption":"Teilstudienabschluss", "art":"SOS_ABSCHLUSSTYP", "art2":"",
"content":"pnr=8600"}
{"id":"MSG_FKOMBI_KENNZ_MINT", "caption":"MINT-Fach", "art":"MSG_FKOMBI_KENNZ", "art2":"",
"content":"kombi_ch30_fach in (select distinct D.stg from dim_studiengang D where D.fgrp in (''04'',''08''))"}
] />

208
src-modules/module/msg/schluesseltabellen/sx_stylesheets_fuellen.sql

@ -0,0 +1,208 @@ @@ -0,0 +1,208 @@
--(c) 2011 Andre Knieschewski
--Freemarker Template
--Achtung: Macro fügt Inhalte ein
--Bitte nur Freemarker Variablen füllen
<#assign masken = [
{"mask":"49000", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"},
{"mask":"49040", "filename":"tabelle_html_datenblatt.xsl", "ord":"1"}
] />
<#assign stylesheet = [
] />
<#assign stylesheet_field = [
] />
--Hier eventuell notwendige updates/delete's auf die Tabellen sx_mask_style, sx_stylesheets oder stylesheet_field einfügen.
<@sx_stylesheets_insert
m_masken=masken
m_stylesheet=stylesheet
m_stylesheet_field=stylesheet_field
/>
<#macro sx_stylesheets_insert m_masken m_stylesheet m_stylesheet_field>
--Sicherstellen, dass keine Duplikate vorkommen:
--####################################################################################################
<#foreach column in m_masken>
delete from sx_mask_style where maskeninfo_id=${column.mask} and stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}') and ord=${column.ord};
</#foreach>
<#foreach column in m_stylesheet_field>
delete from stylesheet_field where stylesheet_id in (select tid from sx_stylesheets where filename ='${column.filename}');
</#foreach>
-- Stylesheets füllen
--####################################################################################################
create temp table tmp_stylesheets (
tid serial not null,
filename CHAR(255) ,
caption CHAR(255) ,
description CHAR(255) ,
relation CHAR(10) ,
useragent CHAR(255) ,
contenttype CHAR(200) ,
is_generic smallint,
toolbar_icon_filepath VARCHAR(255) ,
usage_resultset_data CHAR(10) default 'T' ,
stylesheet_type CHAR(10) default 'XSL' ,
jr_datasource CHAR(10)
);
create temp table tmp_hilf (tid integer);
insert into tmp_hilf select max(tid) from sx_stylesheets;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_stylesheet>
insert into tmp_stylesheets (tid,
filename,
caption,
description,
relation,
contenttype,
is_generic,
toolbar_icon_filepath ,
usage_resultset_data ,
stylesheet_type ,
jr_datasource)
select max(tid)+${counter_tid},'${column.filename}',
'${column.caption}',
'${column.description}',
'${column.relation}',
'${column.contenttype}',
${column.is_generic},
'${column.toolbar_icon_filepath}' ,
'${column.usage_resultset_data}' ,
'${column.stylesheet_type}' ,
'${column.jr_datasource}'
from tmp_hilf;
<#assign counter_tid = counter_tid + 1 />
</#foreach>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
update sx_stylesheets set is_generic=1
where filename in (select T.filename from tmp_stylesheets T where T.is_generic=1);
</#if>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','stylesheet_type')>
update sx_stylesheets set stylesheet_type=T.stylesheet_type,
contenttype=T.contenttype,
usage_resultset_data=T.usage_resultset_data,
jr_datasource=T.jr_datasource
from tmp_stylesheets T
where T.filename=sx_stylesheets.filename
and sx_stylesheets.filename in (select T2.filename from tmp_stylesheets T2);
</#if>
--delete für tml_stylesheets hinzugefügt #ak 06.03.2013
delete from tmp_stylesheets where filename in (select filename from sx_stylesheets);
insert into sx_stylesheets (tid,
filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
,toolbar_icon_filepath ,
usage_resultset_data ,
stylesheet_type ,
jr_datasource
</#if>
)
SELECT tid, filename, caption, description, relation, useragent, contenttype
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','is_generic')>
,is_generic
</#if>
<#if TableFieldExists?exists && TableFieldExists('sx_stylesheets','toolbar_icon_filepath')>
,toolbar_icon_filepath ,
usage_resultset_data ,
stylesheet_type ,
jr_datasource
</#if>
FROM tmp_stylesheets;
drop table tmp_stylesheets;
-- Mask Style füllen
--####################################################################################################
create temp table tmp_mask_style (
tid serial not null,
maskeninfo_id INTEGER ,
stylesheet_id INTEGER ,
ord SMALLINT,
filename char(255)
);
delete from tmp_hilf;
insert into tmp_hilf select max(tid) from sx_mask_style;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_masken>
insert into tmp_mask_style (tid,maskeninfo_id,ord,filename)
select max(tid)+${counter_tid},${column.mask},${column.ord},'${column.filename}' from tmp_hilf;
update tmp_mask_style set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>
insert into sx_mask_style ( tid, maskeninfo_id, stylesheet_id, ord)
SELECT tid, maskeninfo_id, stylesheet_id, ord
FROM tmp_mask_style;
drop table tmp_mask_style;
--Field zu Stylesheet Zuordnungen:
--####################################################################################################
CREATE temp TABLE tmp_stylesheet_field
(
tid serial NOT NULL,
stylesheet_id INTEGER,
tablename char(255),
fieldname char(255),
filename char(255)
);
delete from tmp_hilf;
insert into tmp_hilf select max(tid) from stylesheet_field;
update tmp_hilf set tid=1 where tid is null;
<#assign counter_tid = 1 />
<#foreach column in m_stylesheet_field>
INSERT INTO tmp_stylesheet_field (tid, filename, tablename, fieldname)
select max(tid)+${counter_tid}, '${column.filename}', '${column.tablename}', '${column.fieldname}' from tmp_hilf;
update tmp_stylesheet_field set stylesheet_id=(select max(tid) from sx_stylesheets where filename='${column.filename}')
where filename='${column.filename}';
<#assign counter_tid = counter_tid + 1 />
</#foreach>
insert into stylesheet_field ( tid, stylesheet_id, tablename, fieldname)
SELECT tid, stylesheet_id, tablename, fieldname
FROM tmp_stylesheet_field;
drop table tmp_stylesheet_field;
drop table tmp_hilf;
<#if SQLdialect='Postgres'>
select sp_update_sequence('sx_stylesheets');
select sp_update_sequence('sx_mask_style');
select sp_update_sequence('stylesheet_field');
</#if>
</#macro>

3
src-modules/module/msg/upgrade/msg_modul_upgrade_man.sql

@ -0,0 +1,3 @@ @@ -0,0 +1,3 @@
--
alter table msg_fkombi_aggr alter column kombi_kennz type varchar(255);
Loading…
Cancel
Save