diff --git a/src-modules/module/costage/conf/costage.xml b/src-modules/module/costage/conf/costage.xml
index 9c4292a..2732ed4 100644
--- a/src-modules/module/costage/conf/costage.xml
+++ b/src-modules/module/costage/conf/costage.xml
@@ -272,7 +272,8 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
Studiengänge (CO)
-
+
+
@@ -302,7 +303,9 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
-
+
+
+
@@ -331,6 +334,14 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
+
+
+public
+costage_dim_studiengang
+tid
+1
+costage_dim_studiengang_pkey
+
@@ -548,11 +559,12 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
+
nur bei TSG
-TSG/ESG/MSG
+TSG/ESG
@@ -618,6 +630,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
+
nur bei TSG
@@ -633,7 +646,7 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
des Prüfungsdatums
-
+
Hauptprüfung/TSAB
@@ -1691,7 +1704,7 @@ parent="CO Basisdaten">Abfragen zu Studienplänen und Ordnungen
-
+
@@ -1782,7 +1795,7 @@ parent="CO Basisdaten">Abfragen zu Studienplänen und Ordnungen
-
+
diff --git a/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql b/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql
index 7a068e8..4bb18b5 100644
--- a/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql
+++ b/src-modules/module/costage/hilfstabellen/costage_st_pruef_aggr_fuellen.sql
@@ -13,6 +13,7 @@ SELECT
L.st_studium_nr,
S.st_studstamm_nr,
L.matrikelnummer::integer as matrikelnummer,
+null::integer as studiengang_tid,
null::integer as st_studiengang_nr,
null::integer as st_studiengang_nr_tsg,
null::integer as studiengang_nr,
@@ -89,6 +90,7 @@ SELECT
L.st_studium_nr,
S.st_studstamm_nr,
L.matrikelnummer::integer as matrikelnummer,
+null::integer as studiengang_tid,
null::integer as st_studiengang_nr,
null::integer as st_studiengang_nr_tsg,
null::integer as studiengang_nr,
@@ -173,6 +175,18 @@ and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr
and tmp_pruef.leistungsdetailtyp_kb='TSAB'
;
+--Studiengangs-TID ermitteln:
+update tmp_pruef set studiengang_tid=D.tid
+from costage_dim_studiengang D
+where D.st_studiengang_nr=tmp_pruef.st_studiengang_nr
+and tmp_pruef.leistungsdetailtyp_kb!='TSAB';
+
+update tmp_pruef set studiengang_tid=D.tid
+from costage_dim_studiengang D
+where D.st_studiengang_nr=tmp_pruef.st_studiengang_nr_tsg
+and tmp_pruef.leistungsdetailtyp_kb='TSAB';
+
+
--Fachsemester aus Sem. des Prüfungsdatums holen:
update tmp_pruef set
fachsemester = S.fachsemester
@@ -291,6 +305,14 @@ and T.semester_max <=tmp_pruef.semester
and tmp_pruef.leistungsdetailtyp_kb='BAKN'
;
+update tmp_pruef set fachsemester=T.fachsem_max
+from tmp_fachsem_msg T
+where T.matrikelnummer=tmp_pruef.matrikelnummer
+and T.st_studiengang_nr=tmp_pruef.st_studiengang_nr
+and T.semester_max >=tmp_pruef.semester
+and tmp_pruef.leistungsdetailtyp_kb='TSAB'
+;
+
drop table tmp_fachsem_msg;
--unikey setzen, wenn noch nicht vorhanden (z.B. bei MSG):
@@ -313,6 +335,7 @@ insert into costage_st_pruef_aggr(st_studium_nr,
semester,
semester_tsg,
semester_veranst,
+ studiengang_tid,
st_studiengang_nr,
st_studiengang_nr_tsg,
studiengang_nr,
@@ -348,6 +371,7 @@ select
(case when leistungsdetailtyp_kb='TSAB' then semester
else null::integer end) as semester_tsg ,
semester_veranst,
+ studiengang_tid,
st_studiengang_nr,
st_studiengang_nr_tsg,
studiengang_nr,
@@ -390,6 +414,25 @@ select
--group by leistungsdatum,studiengangs_typ_kb,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30
;
+
+--TSG Daten nachtragen:
+update costage_st_pruef_aggr set
+studiengang_nr=S.studiengang_nr,
+st_studiengang_nr=S.st_studiengang_nr,
+st_studiengang_nr_tsg=S.st_studiengang_nr_tsg,
+fach_nr=S.fach_nr,
+unikey=S.unikey,
+fachsemester_tsg=S.fachsemester
+from costage_st_studien_aggr S
+where 1=1
+and S.st_studium_nr_tsg=costage_st_pruef_aggr.st_studium_nr
+and S.matrikelnummer=costage_st_pruef_aggr.matrikelnummer
+and costage_st_pruef_aggr.leistungsdetailtyp_kb ='TSAB'
+and costage_st_pruef_aggr.semester_tsg=S.semester
+;
+
drop table tmp_pruef;
drop table tmp_pruef2;
+
+
diff --git a/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql b/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql
index 3b52684..de9e830 100644
--- a/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql
+++ b/src-modules/module/costage/hilfstabellen/costage_st_studien_aggr_fuellen.sql
@@ -1194,6 +1194,18 @@ and A.st_adresse_typ='H'
and costage_st_studien_aggr.semester >= ${beginn_semester}
;
+--Studiengangs-TID ermitteln:
+update costage_st_studien_aggr set studiengang_tid=D.tid
+from costage_dim_studiengang D
+where D.st_studiengang_nr=costage_st_studien_aggr.st_studiengang_nr
+and costage_st_studien_aggr.studiengangs_typ_kb='ESG';
+
+update costage_st_studien_aggr set studiengang_tid= D.tid
+from costage_dim_studiengang D
+where D.st_studiengang_nr=costage_st_studien_aggr.st_studiengang_nr_tsg
+and costage_st_studien_aggr.studiengangs_typ_kb='TSG';
+
+
select 300,timestamp_str(now()) from xdummy;
diff --git a/src-modules/module/costage/masken/43040_maskeninfo.unl b/src-modules/module/costage/masken/43040_maskeninfo.unl
index 0423496..cf22663 100644
--- a/src-modules/module/costage/masken/43040_maskeninfo.unl
+++ b/src-modules/module/costage/masken/43040_maskeninfo.unl
@@ -69,8 +69,8 @@ SELECT name,\
/* and semester <= <> */\
/* AND fachsemester <= <> */\
/* and statustyp in(<>) */\
-/* and costage_st_studien_aggr.st_studiengang_nr in (select G.st_studiengang_nr from costage_st_studiengaenge G where G.abschluss in (<>)) */\
-/* and costage_st_studien_aggr.st_studiengang_nr in (select G.st_studiengang_nr from costage_st_studiengaenge G where G.skz_key in (<>)) */\
+/* and costage_st_studien_aggr.studiengang_tid in (select G.tid from costage_st_studiengaenge G where G.abschluss in (<>)) */\
+/* and costage_st_studien_aggr.studiengang_tid in (select G.tid from costage_st_studiengaenge G where G.skz_key in (<>)) */\
/* and studiengang_nr =<> */\
/* and fach_nr =<> */\
/* and costage_st_studien_aggr.st_studstamm_nr in (select S.st_studstamm_nr from costage_st_studierendenstammdaten S where S.st_land1_nr in (<>) ) */\
@@ -84,7 +84,7 @@ SELECT name,\
#if>\
\
\
-/* <#assign filter = filter + " and 's_' || costage_st_studien_aggr.st_studiengang_nr in "+Studiengang.allNeededKeysList /> --<> */ \
+/* <#assign filter = filter + " and costage_st_studien_aggr.studiengang_tid in (select D.tid from costage_dim_studiengang D where 's_' ||D.st_studiengang_nr in "+Studiengang.allNeededKeysList +")" /> --<> */ \
\
\
<@generate_resultset_multitable tabellen=table_list\
diff --git a/src-modules/module/costage/masken/43080_maskeninfo.unl b/src-modules/module/costage/masken/43080_maskeninfo.unl
index a49f67d..3d5dd19 100644
--- a/src-modules/module/costage/masken/43080_maskeninfo.unl
+++ b/src-modules/module/costage/masken/43080_maskeninfo.unl
@@ -67,7 +67,7 @@ SELECT name,\
/* and hrst in (<>) */\
/* AND leistungsdetailtyp_kb in (<>) */\
/* and leistungsstatus_map_kb in(<>) */\
-/* and costage_st_pruef_aggr.st_studiengang_nr in (select G.st_studiengang_nr from costage_st_studiengaenge G where G.abschluss in (<>)) */\
+/* and costage_st_pruef_aggr.studiengang_tid in (select G.tid from costage_st_studiengaenge G where G.abschluss in (<>)) */\
/* and studiengang_nr =<> */\
/* and fach_nr =<> */\
/* and costage_st_pruef_aggr.st_studstamm_nr in (select S.st_studstamm_nr from costage_st_studierendenstammdaten S where S.st_land1_nr in (<>) ) */\
@@ -75,11 +75,12 @@ SELECT name,\
/* and costage_st_pruef_aggr.unikey=<> */\
" />\
\
+/* <#assign filter = filter + " and costage_st_pruef_aggr.studiengang_tid in (select D.tid from costage_dim_studiengang D where 's_' ||D.st_studiengang_nr in "+Studiengang.allNeededKeysList +")" /> --<> */ \
+\
\
<#if "<>"!="">\
<#assign filter=filter+" and costage_st_pruef_aggr.matrikelnummer in (<>)"?replace("'","")/>\
#if>\
-/* <#assign filter = filter + " and 's_' || costage_st_pruef_aggr.st_studiengang_nr in "+Studiengang.allNeededKeysList /> --<> */ \
\
--Feld Auswertungsebene Prüfungen\
--Was wird ausgewertet? Welche Leistungsdetailtypen sin betroffen? Welches Prüfungsdatum/Semester soll ausgewertet werden?\
@@ -92,7 +93,7 @@ SELECT name,\
\
<#assign fach_filter="1=1" />\
--Default: \
-/* <#assign fach_filter="costage_st_pruef_aggr.st_studiengang_nr in (select G.st_studiengang_nr from costage_st_studiengaenge G where G.skz_key in (<>)) "/> \
+/* <#assign fach_filter="costage_st_pruef_aggr.studiengang_tid in (select G.tid from costage_st_studiengaenge G where G.skz_key in (<>)) "/> \
*/\
\
\
@@ -100,16 +101,17 @@ SELECT name,\
<#assign ldt_filter="1=1" />\
<#if <>=="G">\
<#assign ldt_filter="leistungsdetailtyp_kb in ('BAKN', 'MAGN', 'STEX', 'ERGAB')" />\
-<#assign semester_feld="semester_msg" />\
+<#assign semester_feld="semester" />\
\
\
#if> \
<#if <>=="F">\
<#assign ldt_filter="leistungsdetailtyp_kb in ('TSAB')" />\
-<#assign semester_feld="semester_msg" />\
+<#assign semester_feld="semester" />\
#if> \
<#if <>=="T">\
<#assign ldt_filter="leistungsdetailtyp_kb in ('TSAB')" />\
+<#assign semester_feld="semester_tsg" />\
#if> \
\
\
diff --git a/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml b/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
index 9cd383b..15b3270 100644
--- a/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
+++ b/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
@@ -294,9 +294,10 @@ SELECT
P.matrikelnummer,
P.studiengang_nr,
P.fach_nr,
-G.abschluss,
-(case when leistungsdetailtyp_kb='TSAB' then P.semester_tsg
-else P.semester end) as semester,
+G.abschluss_code as abschluss,
+--(case when leistungsdetailtyp_kb='TSAB' then P.semester_tsg
+--else P.semester end) as semester,
+P.semester,
P.leistungsdatum,
G.skz_key as stg,
null::integer as vert,
@@ -325,14 +326,14 @@ null::integer as pstatkennz,
null::CHAR(1), --stuart
G.stufrm,
null::CHAR(1), --stutyp
-st_studium_nr as degree_program_id,
+P.st_studium_nr as degree_program_id,
semester_tsg,
leistungsdatum_tsg,
leistungsstatus_map_kb_tsg as pstatus_tsg,
note_tsg,
fachsemester_tsg as fach_sem_zahl_tsg
-FROM costage_st_pruef_aggr P, costage_st_studiengaenge G
-where G.st_studiengang_nr=P.st_studiengang_nr
+FROM costage_st_pruef_aggr P, costage_dim_studiengang G
+where G.tid=P.studiengang_tid
and ($EXTERNAL_SUBJECTS ='true'
or P.unikey=(select H.hs_nr::char(10) from hochschulinfo H)
)
diff --git a/src-modules/module/costage/schluesseltabellen/costage_dim_studiengang_fuellen.sql b/src-modules/module/costage/schluesseltabellen/costage_dim_studiengang_fuellen.sql
index d8ba077..2414063 100644
--- a/src-modules/module/costage/schluesseltabellen/costage_dim_studiengang_fuellen.sql
+++ b/src-modules/module/costage/schluesseltabellen/costage_dim_studiengang_fuellen.sql
@@ -1,7 +1,40 @@
+create temp table tmp_costage_dim_studiengang (tid serial,
+ tid_orig integer,
+ st_studiengang_nr integer,
+ studiengangs_identifikator character varying(255),
+ studiengangs_bezeichnung character varying(255),
+ st_absz_nr integer,
+ st_skz_nr integer,
+ fachkennzeichen character varying(255),
+ st_std_art_nr integer,
+ studiengangs_typ_name character varying(255),
+ studiengangs_typ_kb character varying(255),
+ studientyp_name character varying(255),
+ studientyp_kb character varying(10),
+ stp_stp_nr integer,
+ stuart character(10),
+ stufrm character(10),
+ pversion character varying(255),
+ rsz integer,
+ skz_key character(10),
+ skz_name character varying(255),
+ unikey character varying(255),
+ fakultaet_key character varying(255),
+ abschluss_code character varying(255),
+ abschluss_name character varying(255),
+ fakultaet_kurztext character varying(255),
+ fakultaet_drucktext character varying(255),
+ stort_nr character varying(4),
+ stort_name character varying(255),
+ ist_neu smallint
+);
+
+
+
-truncate table costage_dim_studiengang;
-insert into costage_dim_studiengang(st_studiengang_nr,
+insert into tmp_costage_dim_studiengang(
+st_studiengang_nr,
studiengangs_identifikator,
studiengangs_bezeichnung,
st_absz_nr,
@@ -26,7 +59,8 @@ insert into costage_dim_studiengang(st_studiengang_nr,
fakultaet_kurztext,
fakultaet_drucktext,
stort_nr,
- stort_name)
+ stort_name,
+ ist_neu)
SELECT G.st_studiengang_nr,
substring(G.studiengangs_identifikator from 1 for 255) as studiengangs_identifikator,
@@ -54,11 +88,88 @@ A.name as abschluss_name,
null::varchar(255) as fakultaet_kurztext,
null::varchar(255) as fakultaet_drucktext,
G.stort_nr,
-G.stort_name
-FROM costage_st_studiengaenge G left outer join costage_st_studienkennzahlen SKZ
+G.stort_name,
+0
+FROM costage_st_studiengaenge G left outer join costage_st_studienkennzahlen SKZ
on ( SKZ.st_skz_nr=G.st_skz_nr)
left outer join costage_st_abschlussziele_lokal A on (A.st_absz_nr=G.st_absz_nr);
+update tmp_costage_dim_studiengang set tid_orig=D.tid
+from costage_dim_studiengang D
+where D.st_studiengang_nr=tmp_costage_dim_studiengang.st_studiengang_nr;
+
+update tmp_costage_dim_studiengang set ist_neu=1
+where tid_orig is null;
+
+
+create temp table tmp_hilf(
+maxtid integer);
+
+insert into tmp_hilf select max(tid) from costage_dim_studiengang;
+
+update tmp_costage_dim_studiengang set tid_orig=tid+(select maxtid from tmp_hilf)
+where ist_neu=1;
+
+drop table tmp_hilf;
+
+truncate table costage_dim_studiengang;
+
+insert into costage_dim_studiengang(tid,
+st_studiengang_nr,
+ studiengangs_identifikator,
+ studiengangs_bezeichnung,
+ st_absz_nr,
+ st_skz_nr,
+ fachkennzeichen,
+ st_std_art_nr,
+ studiengangs_typ_name,
+ studiengangs_typ_kb,
+ studientyp_name,
+ studientyp_kb,
+ stp_stp_nr,
+ stuart,
+ stufrm,
+ pversion,
+ rsz,
+ skz_key,
+ skz_name,
+ unikey,
+ fakultaet_key,
+ abschluss_code,
+ abschluss_name,
+ fakultaet_kurztext,
+ fakultaet_drucktext,
+ stort_nr,
+ stort_name)
+select tid_orig,
+st_studiengang_nr,
+ studiengangs_identifikator,
+ studiengangs_bezeichnung,
+ st_absz_nr,
+ st_skz_nr,
+ fachkennzeichen,
+ st_std_art_nr,
+ studiengangs_typ_name,
+ studiengangs_typ_kb,
+ studientyp_name,
+ studientyp_kb,
+ stp_stp_nr,
+ stuart,
+ stufrm,
+ pversion,
+ rsz,
+ skz_key,
+ skz_name,
+ unikey,
+ fakultaet_key,
+ abschluss_code,
+ abschluss_name,
+ fakultaet_kurztext,
+ fakultaet_drucktext,
+ stort_nr,
+ stort_name
+ from tmp_costage_dim_studiengang;
+
update costage_dim_studiengang set fakultaet_kurztext=F.fakultaet_bezeichnung,
fakultaet_drucktext=F.fakultaet_name
from costage_st_fakultaeten F
diff --git a/src-modules/module/costage/upgrade/costage_pre_upgrade_pg.sql b/src-modules/module/costage/upgrade/costage_pre_upgrade_pg.sql
new file mode 100644
index 0000000..8c1978d
--- /dev/null
+++ b/src-modules/module/costage/upgrade/costage_pre_upgrade_pg.sql
@@ -0,0 +1,8 @@
+--freemarker template
+
+<#if TableFieldExists?exists && TableFieldExists('costage_dim_studiengang','tid')>
+--do nothing
+<#else>
+drop table if exists costage_dim_studiengang cascade;
+#if>
+