diff --git a/src-modules/module/costage/conf/costage.xml b/src-modules/module/costage/conf/costage.xml
index ffdd9e8..b4cd4ab 100644
--- a/src-modules/module/costage/conf/costage.xml
+++ b/src-modules/module/costage/conf/costage.xml
@@ -197,8 +197,9 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
-
-
+
+
+
@@ -570,11 +571,15 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
Wenn TSG vor MSG beendet wird, werden TSG-Sätze generiert
-
+
Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab)
-
+
+
+ Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab)
+
+
Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab)
@@ -589,8 +594,8 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
-
-
+
+
ESG oder, bei TSG, der Status des MSG
@@ -616,7 +621,21 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -634,15 +653,25 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
nur bei TSG
-
+
+
+TSG/ESG
-
+
+
+ Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab)
+
+
Lookup via: st_studium_nr - costage_st_studien_spoversionen.st_studium_nr, hierbei die jeweils letzte (max(gueltig_ab)
+
+
+
-
+
+
des Prüfungsdatums
@@ -1168,7 +1197,17 @@ rightname="CS_BIA_STANDARDREPORTS_ADMIN[CO]" />
Teilstudiengangsnummer zu der eine Abschlussarbeit zugeordnet ist
-
+
+
+
+
+
+
+
+
+
+
+
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 4bb18b5..79e81f5 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
@@ -23,6 +23,7 @@ null::integer as semester,
E.semester_tid as semester_veranst,
null::integer as fachsemester,
null::integer as fachsemester_tsg,
+null::integer as st_studium_nr_tsg,
null::varchar(255) as unikey,
L.leistung_nr,
L.leistungstyp_nr,
@@ -60,10 +61,16 @@ null::float as note_msg,
null::integer as pnr,
null::integer as leistung_nr_msg,
null::integer as st_studiengang_nr_msg,
+null::varchar as studienidentifikator_esg_msg,
null::date as leistungsdatum_msg,
null::integer as semester_msg,
-L.spov_abschluss as po_stp_stp_version_kb ,
-null::char(10) as studiengangs_typ_kb
+L.spov_abschluss as po_stp_stp_version_kb_esg_tsg_msg,
+null::varchar as po_stp_stp_version_kb,
+null::varchar as po_stp_stp_version_kb_tsg,
+null::char(10) as studiengangs_typ_kb,
+0::integer as abschlussarbeit,
+null:: CHAR(10) as skz_key_abschlussarbeit,
+null::VARCHAR(255) as po_stp_stp_version_kb_abschlussarbeit
into temp tmp_pruef
FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S
where E.semester_id=L.veranstaltung_semester
@@ -100,6 +107,7 @@ E.semester_tid as semester,
null::integer as semester_veranst,
null::integer as fachsemester,
null::integer AS fachsemester_tsg,
+null::integer as st_studium_nr_tsg,
null::varchar(255) as unikey,
L.leistung_nr,
L.leistungstyp_nr,
@@ -137,10 +145,16 @@ null::float as note_msg,
null::integer as pnr,
null::integer as leistung_nr_msg,
null::integer as st_studiengang_nr_msg,
+null::varchar as studienidentifikator_esg_msg,
null::date as leistungsdatum_msg,
null::integer as semester_msg,
-L.spov_abschluss,
-null::char(10) as studiengangs_typ_kb
+L.spov_abschluss as po_stp_stp_version_kb_esg_tsg_msg,
+null::Varchar as po_stp_stp_version_kb,
+null::varchar as po_stp_stp_version_kb_tsg,
+null::char(10) as studiengangs_typ_kb,
+0::integer as abschlussarbeit,
+null:: CHAR(10) as skz_key_abschlussarbeit,
+null::VARCHAR(255) as po_stp_stp_version_kb_abschlussarbeit
FROM costage_st_semester E, costage_leistungen_typen T, costage_leistungen L, costage_st_studierendenstammdaten S
where L.leistungsdatum between E.semester_anfang and E.semester_ende
and L.veranstaltung_semester is null
@@ -168,13 +182,32 @@ where S.st_studium_nr=tmp_pruef.st_studium_nr
and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr
and tmp_pruef.leistungsdetailtyp_kb!='TSAB'
;
-update tmp_pruef set st_studiengang_nr_tsg=S.st_studiengang_nr
+update tmp_pruef set st_studiengang_nr_tsg=S.st_studiengang_nr,
+st_studium_nr_tsg=S.st_studium_nr
from costage_st_studien S
where S.st_studium_nr=tmp_pruef.st_studium_nr
and S.st_studstamm_nr=tmp_pruef.st_studstamm_nr
and tmp_pruef.leistungsdetailtyp_kb='TSAB'
;
+--studiengangs_typ_kb ermitteln:
+update tmp_pruef set studiengangs_typ_kb=G.studiengangs_typ_kb
+from costage_st_studiengaenge G
+where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr;
+
+update tmp_pruef set studiengangs_typ_kb=G.studiengangs_typ_kb
+from costage_st_studiengaenge G
+where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr_tsg;
+
+--bei TSG die Nr. des pers. Studiums zuweisen, in dem die Abschlussarbeit war:
+update tmp_pruef set abschlussarbeit=1
+from costage_leistungen L
+where L.leistungsdetailtyp_kb='BAKARBN'
+and tmp_pruef.st_studium_nr_tsg=L.abs_fach_st_studium_nr
+and tmp_pruef.studiengangs_typ_kb='TSG'
+and tmp_pruef.leistungsdetailtyp_kb='TSAB'
+;
+
--Studiengangs-TID ermitteln:
update tmp_pruef set studiengang_tid=D.tid
from costage_dim_studiengang D
@@ -204,6 +237,17 @@ and S.matrikelnummer=tmp_pruef.matrikelnummer
and leistungsdetailtyp_kb ='TSAB'
;
+--bei TSAB die Nr. des persönlichen Studiums aus dem Studienverlauf holen:
+update tmp_pruef set st_studium_nr=S.st_studium_nr,
+st_studiengang_nr=S.st_studiengang_nr,
+studienidentifikator=S.studiengangs_identifikator
+from costage_st_studien_aggr S
+where S.semester=tmp_pruef.semester
+and S.st_studiengang_nr_tsg=tmp_pruef.st_studiengang_nr_tsg
+and S.matrikelnummer=tmp_pruef.matrikelnummer
+and leistungsdetailtyp_kb ='TSAB'
+;
+
--Prüfung kann nach letztem eingeschr. Semester sein, daher zuerst letztes Sem. ermitteln:
select S.st_studium_nr,
S.matrikelnummer,
@@ -242,8 +286,8 @@ st_studienstatus_nr=S.st_studienstatus_nr,
--fachsemester = S.fachsemester, --wird oben ermittelt, ab 0.6 nicht mehr aus letztem Studiums-Semester
studiengang_nr=S.studiengang_nr,
st_studiengang_nr=S.st_studiengang_nr,
-fach_nr=S.fach_nr,
-unikey=S.unikey
+fach_nr=S.fach_nr --,
+--unikey=S.unikey
from tmp_max_sem M, costage_st_studien_aggr S
where S.matrikelnummer=M.matrikelnummer
and S.st_studium_nr=M.st_studium_nr
@@ -252,6 +296,7 @@ and S.st_studium_nr=tmp_pruef.st_studium_nr
and S.matrikelnummer=tmp_pruef.matrikelnummer
and leistungsdetailtyp_kb !='TSAB'
;
+--TODO: bei MSG leer, bei EST und TSG gefüllt
drop table tmp_max_sem;
@@ -267,7 +312,10 @@ update tmp_pruef set leistung_nr_msg=T.leistung_nr,
leistungsdatum_msg=T.leistungsdatum,
semester_msg=T.semester,
leistungsstatus_map_kb_msg=T.leistungsstatus_map_kb,
-note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end)
+note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end),
+studienidentifikator_esg_msg=T.studienidentifikator,
+st_studium_nr=T.st_studium_nr,
+po_stp_stp_version_kb=T.po_stp_stp_version_kb_esg_tsg_msg
from tmp_pruef2 T
where tmp_pruef.st_studiengang_nr=T.st_studiengang_nr
and tmp_pruef.leistungsdetailtyp_kb ='TSAB'
@@ -275,6 +323,24 @@ and T.matrikelnummer=tmp_pruef.matrikelnummer
;
+--Fallback wenn der MSG bei TSG nicht gefunden wird, weil der MSG gewechselt hat oder der TSG im jew. Semester der Prüfung geschlossen wurde:
+--nach allen verfügbaren MSG gehen
+update tmp_pruef set leistung_nr_msg=T.leistung_nr,
+leistungsdatum_msg=T.leistungsdatum,
+semester_msg=T.semester,
+leistungsstatus_map_kb_msg=T.leistungsstatus_map_kb,
+note_msg=(case when T.pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7') or T.pv_notenskala_typ_kb is null then T.note_zahl else null::float end),
+studienidentifikator_esg_msg=T.studienidentifikator,
+st_studium_nr=T.st_studium_nr,
+po_stp_stp_version_kb=T.po_stp_stp_version_kb_esg_tsg_msg
+from tmp_pruef2 T, costage_st_studiengaenge_mtsg M
+where tmp_pruef.st_studiengang_nr_tsg=M.st_studiengang_nr_tsg
+and M.st_studiengang_nr_msg=T.st_studiengang_nr
+and tmp_pruef.leistungsdetailtyp_kb ='TSAB'
+and tmp_pruef.leistung_nr_msg is null
+and T.matrikelnummer=tmp_pruef.matrikelnummer
+;
+
--Leistungsdatum determiniert Semester auch bei MSG:
-- update tmp_pruef set semester=E.semester_tid
-- FROM costage_st_semester E
@@ -285,7 +351,8 @@ and T.matrikelnummer=tmp_pruef.matrikelnummer
update tmp_pruef set leistung_nr_msg=leistung_nr,
leistungsdatum_msg=leistungsdatum,
semester_msg=semester,
-leistungsstatus_map_kb_msg=leistungsstatus_map_kb
+leistungsstatus_map_kb_msg=leistungsstatus_map_kb,
+studienidentifikator_esg_msg=studienidentifikator
where tmp_pruef.leistungsdetailtyp_kb !='TSAB'
;
--Fachsemester bei MSG gibt es in CO nicht. Daher die Regel:
@@ -322,7 +389,44 @@ where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr
and K.st_skz_nr=G.st_skz_nr
and tmp_pruef.unikey is null
;
+--Nun bei TSG:
+update tmp_pruef set unikey=K.unikey
+from costage_st_studiengaenge G, costage_st_studienkennzahlen K
+where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr_tsg
+and K.st_skz_nr=G.st_skz_nr
+and tmp_pruef.unikey is null
+;
+
+
+--MSG Prüfungen können keine Fachnr. haben, daher entfernen:
+update tmp_pruef set fach_nr=null
+where tmp_pruef.leistungsdetailtyp_kb!='TSAB'
+and exists (select G.st_studiengang_nr
+from costage_st_studiengaenge G
+where G.st_studiengang_nr=tmp_pruef.st_studiengang_nr
+and G.studiengangs_typ_kb='MSG')
+;
+
+--bei MSG das Fach und SPO-Version der abschlussarbeit ermitteln:
+
+--zuerst Kopie nur mit TSG der Abschlussarbeit:
+select * into temp tmp_pruef3
+from tmp_pruef
+where leistungsdetailtyp_kb ='TSAB'
+and abschlussarbeit=1
+;
+create index tmp_ix_123 on tmp_pruef3(studiengang_tid);
+create index tmp_ix_1234 on tmp_pruef3(st_studium_nr);
+
+
+update tmp_pruef set skz_key_abschlussarbeit=G.skz_key,
+po_stp_stp_version_kb_abschlussarbeit=T.po_stp_stp_version_kb
+from tmp_pruef3 T, costage_dim_studiengang G
+where G.tid=T.studiengang_tid
+and T.st_studium_nr=tmp_pruef.st_studium_nr
+and tmp_pruef.studiengangs_typ_kb='MSG'
+;
delete from costage_st_pruef_aggr
@@ -330,6 +434,7 @@ where semester >= ${beginn_semester}
or semester_tsg >= ${beginn_semester};
insert into costage_st_pruef_aggr(st_studium_nr,
+st_studium_nr_tsg,
st_studstamm_nr,
matrikelnummer,
semester,
@@ -339,9 +444,11 @@ insert into costage_st_pruef_aggr(st_studium_nr,
st_studiengang_nr,
st_studiengang_nr_tsg,
studiengang_nr,
+ studiengangs_typ_kb,
fach_nr,
unikey,
studienidentifikator,
+ studienidentifikator_tsg,
fachsemester,
fachsemester_tsg,
leistungstyp_nr,
@@ -350,6 +457,7 @@ insert into costage_st_pruef_aggr(st_studium_nr,
abschnitt,
stp_sp_nr,
po_stp_stp_version_kb,
+ po_stp_stp_version_kb_tsg,
note,
note_tsg,
credits,
@@ -361,9 +469,12 @@ insert into costage_st_pruef_aggr(st_studium_nr,
leistung_nr_tsg,
leistungsdatum,
leistungsdatum_tsg,
+ skz_key_abschlussarbeit,
+ po_stp_stp_version_kb_abschlussarbeit,
summe)
select
st_studium_nr,
+ st_studium_nr_tsg,
st_studstamm_nr,
matrikelnummer,
(case when leistungsdetailtyp_kb='TSAB' then semester_msg
@@ -375,9 +486,12 @@ select
st_studiengang_nr,
st_studiengang_nr_tsg,
studiengang_nr,
+ studiengangs_typ_kb,
fach_nr,
unikey,
- substring(studienidentifikator from 1 for 255),
+ substring(studienidentifikator_esg_msg from 1 for 255) as studienidentifikator,
+ (case when leistungsdetailtyp_kb='TSAB' then substring(studienidentifikator from 1 for 255)
+ else null::varchar(255) end) as studienidentifikator_tsg,
fachsemester,
fachsemester_tsg,
leistungstyp_nr,
@@ -385,7 +499,9 @@ select
pnr,
abschnitt,
stp_sp_nr,
- po_stp_stp_version_kb,
+ (case when leistungsdetailtyp_kb='TSAB' then po_stp_stp_version_kb else po_stp_stp_version_kb_esg_tsg_msg end) as po_stp_stp_version_kb,
+ (case when leistungsdetailtyp_kb='TSAB' then po_stp_stp_version_kb_esg_tsg_msg
+ else null::varchar end) as po_stp_stp_version_kb_tsg ,
(case when leistungsdetailtyp_kb='TSAB' then note_msg
else (
case when pv_notenskala_typ_kb in ('DE1','DE2','DE3','DE4','DE5','DE6','DE7')
@@ -409,6 +525,8 @@ select
else leistungsdatum end) as leistungsdatum ,
(case when leistungsdetailtyp_kb='TSAB' then leistungsdatum
else null::date end) as leistungsdatum_tsg ,
+ skz_key_abschlussarbeit,
+ po_stp_stp_version_kb_abschlussarbeit,
1 as summe
from tmp_pruef
--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
@@ -420,12 +538,12 @@ 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,
+--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.st_studium_nr_tsg=costage_st_pruef_aggr.st_studium_nr_tsg
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
@@ -433,6 +551,7 @@ and costage_st_pruef_aggr.semester_tsg=S.semester
drop table tmp_pruef;
drop table tmp_pruef2;
+drop table tmp_pruef3;
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 217b4c8..3dc0d55 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
@@ -121,7 +121,15 @@ st_studienstatus_nr,
beginn_datum,
gueltig_ab,
semester,
+<#if K_CO_interpret_primaerflag==1>
primaerflag_studien,
+<#else>
+
+dense_rank () over (partition by semester, st_studstamm_nr,studiengang_nr order by
+ (studiengangs_identifikator)
+ )
+ as primaerflag_studien,
+#if>
hrst,
null::char(10) as abm_art_s
into temp tmp_studien_msg
@@ -156,12 +164,31 @@ from tmp_studien T left outer join costage_st_hauptstudien H
and H.st_studium_nr=T.st_studium_nr
and H.st_sem_nr=T.st_sem_nr)
where T.status_historie=1
+<#if K_CO_interpret_primaerflag==1>
and T.studiengangs_typ_kb in ('ESG','TSG')
+ <#else>
+ and T.studiengangs_typ_kb in ('ESG')
+ #if>
and T.primaerflag_studien=0
;
-
+<#if K_CO_interpret_primaerflag==0>
+ --Ohne Primärflag::
+insert into tmp_studien_esg_tsg
+select T.*,
+primaerflag_studien as primaerflag,
+null::integer as letztes_tsg_semester,
+null::integer as st_studium_nr_msg
+from tmp_studien T
+ where T.status_historie=1
+ and T.studiengangs_typ_kb in ('TSG')
+-- and T.primaerflag_studien=0
+ ;
+ #if>
-update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr
+update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr
+<#if K_CO_interpret_primaerflag==0>
+,fach_nr=MTSG.studienfach_sortierung
+#if>
from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG
where tmp_studien_esg_tsg.studiengangs_typ_kb in ('TSG')
and tmp_studien_esg_tsg.semester=MSG.semester
@@ -175,8 +202,10 @@ and MSG.primaerflag_studien=1
select 20,timestamp_str(now()) from xdummy;
-update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr
-from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG
+update tmp_studien_esg_tsg set st_studium_nr_msg=MSG.st_studium_nr <#if K_CO_interpret_primaerflag==0>
+,fach_nr=MTSG.studienfach_sortierung
+#if>
+ from tmp_studien_msg MSG, costage_st_studiengaenge_mtsg MTSG
where tmp_studien_esg_tsg.st_studium_nr_msg is null
and tmp_studien_esg_tsg.studiengangs_typ_kb in ('TSG')
and tmp_studien_esg_tsg.semester=MSG.semester
@@ -184,7 +213,7 @@ and tmp_studien_esg_tsg.semester=MSG.semester
and tmp_studien_esg_tsg.st_studiengang_nr=MTSG.st_studiengang_nr_tsg
and tmp_studien_esg_tsg.st_absz_nr=MSG.st_absz_nr
and MSG.st_studiengang_nr=MTSG.st_studiengang_nr_msg
-and MSG.primaerflag_studien=0
+and MSG.primaerflag_studien!=1
;
select 30,timestamp_str(now()) from xdummy;
@@ -296,6 +325,16 @@ and MTSG.st_studiengang_nr_msg=MSG.st_studiengang_nr
and ETSG.studiengangs_typ_kb in ('TSG');
+<#if K_CO_interpret_primaerflag==0>
+update tmp_studien_tsg set primaerflag_studien=1
+where fach_Nr=1
+and primaerflag_studien_msg=1;
+
+update tmp_studien_tsg set studiengang_nr=1
+where primaerflag_studien_msg=1;
+
+#if>
+
create index tmp_ix3 on tmp_studien(studiengangs_typ_kb);
create index tmp_ix5 on tmp_studien(status_historie);
create index tmp_ix6 on tmp_studien(primaerflag_studien);
@@ -759,9 +798,21 @@ where H.st_studstamm_nr=tmp_studien2.st_studstamm_nr
and H.st_sem_nr=tmp_studien2.st_sem_nr
;
+<#if K_CO_interpret_primaerflag==1>
update tmp_studien2 set studiengang_nr=1 where primaerflag=1;
+<#else>
+
+update tmp_studien2 set studiengang_nr=1 where fach_nr=1
+and primaerflag_studien_msg=1;
+
+update tmp_studien2 set studiengang_nr=1 where primaerflag=1
+and studiengangs_typ_kb ='ESG'
+and studiengang_nr is null;
+
+#if>
+
drop table if exists tmp_primaer_msg;
--Wenn Studium mit Primärflag ein TSG ist, wird die studiengang_nr auf alle anderen TSG des MSG ausgedehnt:
select st_studstamm_nr,semester,st_studiengang_nr_msg
@@ -772,9 +823,21 @@ and st_studiengang_nr_msg is not null
--and primaerflag=1
and primaerflag_studien_msg=1
;
+create index tmp_ixz1 on tmp_primaer_msg(st_studstamm_nr);
+create index tmp_ixz12 on tmp_primaer_msg(semester);
+create index tmp_ixz13 on tmp_primaer_msg(st_studiengang_nr_msg);
--select * from tmp_primaer_msg;
+select 145,timestamp_str(now()) from xdummy;
+
+
+select * into temp tmp_studien3 from tmp_studien2;
+create index tmp_ix4443 on tmp_studien3(st_studstamm_nr);
+create index tmp_ix4443a on tmp_studien3(semester);
+create index tmp_ix4443b on tmp_studien3(studiengang_nr);
+
+
update tmp_studien2 set studiengang_nr=1 where primaerflag=0
and studiengangs_typ_kb ='TSG'
and primaerflag_studien_msg=1
@@ -784,9 +847,19 @@ where T.st_studstamm_nr=tmp_studien2.st_studstamm_nr
and T.semester=tmp_studien2.semester
and T.st_studiengang_nr_msg=tmp_studien2.st_studiengang_nr_msg
)
+--es kann schon passieren dass ein vorheriger ESG das Primärflag hat,
+--während alle generierten TSG kein Primärflag haben können
+--daher hier nicht den studiengang_nr=1 nehmen:
+and not exists(select T.st_studstamm_nr,T.semester
+from tmp_studien3 T
+where T.st_studstamm_nr =tmp_studien2.st_studstamm_nr
+and T.semester=T.semester
+and T.studiengang_nr=1)
;
select 150,timestamp_str(now()) from xdummy;
+drop table if exists tmp_studien3;
+
--zweite Prio: TSG Primärflag
drop table if exists tmp_primaer_msg;
@@ -862,13 +935,15 @@ unikey,
kz_rueck_beur_ein,
endedat,
endedat_tsg,
-null::char(10) as po_stp_stp_version_kb,
+null::varchar(255) as po_stp_stp_version_kb,
+null::varchar(255) as po_stp_stp_version_kb_tsg,
null::integer as po_regelstudienzeit,
-null::integer as kz_rueck_beur_ein_tsg,
+null::integer as kz_rueck_beur_ein_tsg,
+null::date as spo_max_gueltig_ab_tsg,
max(SPO.gueltig_ab) as spo_max_gueltig_ab
into temp tmp_studien3
from tmp_studien2 T left outer join costage_st_studien_spoversionen SPO
-on (SPO.st_studium_nr=T.st_studium_nr
+on (SPO.st_studium_nr=T.st_studium_nr_msg
and SPO.gueltig_ab < T.semester_ende)
group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45 ,46, 47,48,49 --,50,51,52
;
@@ -878,18 +953,97 @@ select 160,timestamp_str(now()) from xdummy;
update tmp_studien3 set po_stp_stp_version_kb= SPO.po_stp_stp_version_kb,
po_regelstudienzeit=SPO.po_regelstudienzeit
from costage_st_studien_spoversionen SPO
-where SPO.st_studium_nr=tmp_studien3.st_studium_nr
+where SPO.st_studium_nr=tmp_studien3.st_studium_nr_msg
and tmp_studien3.spo_max_gueltig_ab =SPO.gueltig_ab;
-update tmp_studien3 set kz_rueck_beur_ein_tsg=(select val(astat)
+select 162,timestamp_str(now()) from xdummy;
+
+--nun TSG SPO Version
+--SPO-Version (letzte im jew. Semester) ermitteln:
+select
+semester,
+semester_anfang,
+semester_ende,
+st_absz_nr,
+st_skz_nr,
+studiengangs_identifikator,
+studiengangs_bezeichnung,
+st_sem_nr,
+T.st_studium_nr,
+T.st_studium_nr_msg,
+st_studstamm_nr,
+studienstatustyp,
+st_studienstatus_nr,
+beginn_datum,
+T.gueltig_ab,
+matrikelnummer,
+geschlecht,
+ca12_staat,
+second_nationality,
+fachkennzeichen,
+studienform_statistik_code,
+st_studiengang_nr_msg,
+studiengangs_identifikator_msg,
+st_studiengang_nr,
+hrst,
+hssem,
+statustyp_tsg,
+tsg_generated,
+primaerflag,
+hzb_art_nr,
+hzb_land_sub_r_nr ,
+hzb_jahr,
+hzb_datum ,
+hzb_note,
+hzb_land_nr,
+abm_art_s,
+abm_art_s_msg,
+fachsemester,
+praxissemester,
+klinsem,
+studienfach_sortierung,
+letztes_tsg_semester,
+studiengangs_typ_kb,
+fach_nr,
+studiengang_nr,
+unikey,
+kz_rueck_beur_ein,
+endedat,
+endedat_tsg,
+T.po_stp_stp_version_kb,
+null::varchar(255) as po_stp_stp_version_kb_tsg,
+null::integer as po_regelstudienzeit,
+null::integer as kz_rueck_beur_ein_tsg,
+--null::date as spo_max_gueltig_ab_tsg,
+max(SPO.gueltig_ab) as spo_max_gueltig_ab_tsg
+into temp tmp_studien4
+from tmp_studien3 T left outer join costage_st_studien_spoversionen SPO
+on (SPO.st_studium_nr=T.st_studium_nr
+and SPO.gueltig_ab < T.semester_ende)
+group by 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45 ,46, 47,48,49 ,50 --,51,52
+;
+
+select 164,timestamp_str(now()) from xdummy;
+
+update tmp_studien4 set po_stp_stp_version_kb_tsg= SPO.po_stp_stp_version_kb
+from costage_st_studien_spoversionen SPO
+where SPO.st_studium_nr=tmp_studien4.st_studium_nr
+and tmp_studien4.spo_max_gueltig_ab_tsg =SPO.gueltig_ab
+and tmp_studien4.studiengangs_typ_kb='TSG';
+
+select 166,timestamp_str(now()) from xdummy;
+
+
+update tmp_studien4 set kz_rueck_beur_ein_tsg=(select val(astat)
from cifx where key=400
-and apnr=tmp_studien3.statustyp_tsg
+and apnr=tmp_studien4.statustyp_tsg
);
select 170,timestamp_str(now()) from xdummy;
drop table tmp_studien2;
+drop table tmp_studien3;
delete from costage_st_studien_aggr
@@ -897,7 +1051,7 @@ delete from costage_st_studien_aggr
where ${COSTAGE_STUDENT_FILTER}
and semester >= ${beginn_semester};
-create index ix_tmp_studien2 on tmp_studien3(kz_rueck_beur_ein)
+create index ix_tmp_studien2 on tmp_studien4(kz_rueck_beur_ein)
;
insert into costage_st_studien_aggr(
st_studium_nr,
@@ -937,6 +1091,7 @@ st_studium_nr_tsg,
abm_art_s,
abm_art_s_tsg,
po_stp_stp_version_kb,
+ po_stp_stp_version_kb_tsg,
po_regelstudienzeit,
studiengangs_identifikator,
studiengangs_identifikator_tsg,
@@ -1001,13 +1156,14 @@ select (case when studiengangs_typ_kb='TSG' then st_studium_nr_msg
(case when studiengangs_typ_kb='TSG' then abm_art_s
else null::char(10) end) as abm_art_s_tsg ,
po_stp_stp_version_kb,
+ po_stp_stp_version_kb_tsg,
po_regelstudienzeit,
(case when studiengangs_typ_kb='TSG' then studiengangs_identifikator_msg
else studiengangs_identifikator end) as studiengangs_identifikator,
(case when studiengangs_typ_kb='TSG' then studiengangs_identifikator
else null::varchar(255) end) as studiengangs_identifikator_tsg,
1 as summe
- from tmp_studien3
+ from tmp_studien4
where kz_rueck_beur_ein is not null
;
@@ -1051,6 +1207,7 @@ st_studium_nr_tsg,
abm_art_s,
abm_art_s_tsg,
po_stp_stp_version_kb,
+ po_stp_stp_version_kb_tsg,
po_regelstudienzeit,
studiengangs_identifikator,
studiengangs_identifikator_tsg,
@@ -1116,13 +1273,14 @@ cast (NULL as int) as studiengang_nr2,
(case when studiengangs_typ_kb='TSG' then abm_art_s
else null::char(10) end) as abm_art_s_tsg ,
po_stp_stp_version_kb,
+ po_stp_stp_version_kb_tsg,
po_regelstudienzeit,
(case when studiengangs_typ_kb='TSG' then studiengangs_identifikator_msg
else studiengangs_identifikator end) as studiengangs_identifikator,
(case when studiengangs_typ_kb='TSG' then studiengangs_identifikator
else null::varchar(255) end) as studiengangs_identifikator_tsg,
1 as summe
- from tmp_studien3
+ from tmp_studien4
where kz_rueck_beur_ein is null
;
select 180,timestamp_str(now()) from xdummy;
@@ -1241,7 +1399,7 @@ select 300,timestamp_str(now()) from xdummy;
-- and costage_st_studien_aggr.studiengangs_typ_kb='TSG'
-- ;
-drop table tmp_studien3;
+drop table tmp_studien4;
drop table tmp_primaer_msg;
diff --git a/src-modules/module/costage/masken/43080_maskeninfo.unl b/src-modules/module/costage/masken/43080_maskeninfo.unl
index a1c7842..97b0b7c 100644
--- a/src-modules/module/costage/masken/43080_maskeninfo.unl
+++ b/src-modules/module/costage/masken/43080_maskeninfo.unl
@@ -9,60 +9,52 @@
<#include "SQL_multitable_output"/>\
\
\
-\
+\
+>,"<>",.vars["Weitere TabellenObject"].allKeys)}\
\
)\
- order by 2;]]>\
+ order by 1;]]>\
\
->,"<>",.vars["Weitere TabellenObject"].allKeys)} )\
-and foreignkey_tab in ('costage_st_pruef_aggr'\
+and foreignkey_tab in ('-xy'\
${DatenblattTables(<>,"<>",.vars["Weitere TabellenObject"].allKeys)})\
;]]>\
\
->,"<>",.vars["Weitere TabellenObject"].allKeys)}\
)\
and currentlyused=1\
${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
order by 2,3;]]>\
\
->,"<>",.vars["Weitere TabellenObject"].allKeys)}\
- )\
- and currentlyused=1\
- ${DatenblattFields(<>,"<>",FelderObject.allKeys)}\
- order by 2,3;]]>\
-\
\
\
-<@generate_multitable_list />\
-<@generate_field_list_multitable aggregationsfeld="summe" aggregatfunktion="sum(" />\
-<@generate_foreign_fields_multitable />\
-\
-\
<#assign filter="\
/* and hrst in (<>) */\
/* AND leistungsdetailtyp_kb in (<>) */\
@@ -82,9 +74,11 @@ SELECT name,\
<#assign filter=filter+" and costage_st_pruef_aggr.matrikelnummer in (<>)"?replace("'","")/>\
#if>\
\
+<#assign postprocessing="" />\
+\
--Feld Auswertungsebene Prüfungen\
--Was wird ausgewertet? Welche Leistungsdetailtypen sin betroffen? Welches Prüfungsdatum/Semester soll ausgewertet werden?\
---G=Gesamtabschluss=BAKN, MAGN, STEX, ERGAB Prüfungsdatum/Semester\
+--G=Gesamtabschluss='BAKN','MAGN','STEX','ERGAB','RIGZP' Prüfungsdatum/Semester\
--F=Absolvent*innenfachfälle=TSAB Prüfungsdatum/Semester des MSG\
--T=Teilstudienabschluss=TSAB Prüfungsdatum/Semester\
\
@@ -100,13 +94,14 @@ SELECT name,\
\
<#assign ldt_filter="1=1" />\
<#if <>=="G">\
-<#assign ldt_filter="leistungsdetailtyp_kb in ('BAKN', 'MAGN', 'STEX', 'ERGAB')" />\
+<#assign ldt_filter="leistungsdetailtyp_kb in ('BAKN','MAGN','STEX','ERGAB','RIGZP')" />\
<#assign semester_feld="semester" />\
\
\
+\
#if> \
<#if <>=="F">\
-<#assign ldt_filter="leistungsdetailtyp_kb in ('TSAB')" />\
+<#assign ldt_filter="(leistungsdetailtyp_kb in ('TSAB') or (leistungsdetailtyp_kb in ('BAKN','MAGN','STEX','ERGAB','RIGZP') and ${basetable}.studiengangs_typ_kb!='MSG'))" />\
<#assign semester_feld="semester" />\
#if> \
<#if <>=="T">\
@@ -121,47 +116,31 @@ SELECT name,\
\
<#assign filter=filter+" and "+ldt_filter + " and " + semester_filter +" and " + fach_filter />\
\
- <@generate_resultset_multitable tabellen=table_list\
-p_show_keys=<>\
-p_field_list_select=field_list_select\
-p_foreign_fields=foreign_fields\
-p_filter=filter\
-p_field_list_groupby=field_list_groupby\
-p_join_clause=join_clause\
+<@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= <>\
+p_postProcessing= postprocessing\
/>^--Freemarker Template \
-\
-select 'costage_st_pruef_aggr' from xdummy\
->,"<>",.vars["Weitere TabellenObject"].allKeys)/>;\
-select '${restrict?replace("\\x0027","\\x0027\\x0027")}' from xdummy;]]>\
-\
->,"<>",FelderObject.allKeys)}\
-order by 1;]]>\
-\
-\
XIL List\
sizable_columns horizontal_scrolling\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
<#assign i=1 />\
-<#if get_felder?has_content >\
-<#foreach myfield in get_felder>\
+<#if getSelectClause?has_content >\
+<#foreach myfield in getSelectClause>\
<#assign i=i+1 />\
-Column CID=${i} heading_text="${myfield.key}" explanation="${myfield.strukturStr}" center_heading\
+Column CID=${i} heading_text="${myfield.caption}" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
-<#if myfield.name != '' && <>==1>\
+<#if myfield.foreignkey_tab != '' && <>==1>\
<#assign i=i+1 />\
-Column CID=${i} heading_text="${myfield.key}\\n(Schlüssel)" explanation="Schlüssel des Feldes ${myfield.key}" center_heading\
+Column CID=${i} heading_text="${myfield.caption}\\n(Schlüssel)" explanation="" center_heading\
row_selectable col_selectable rightJust heading_platform readonly\
width=20\
#if>\
diff --git a/src-modules/module/costage/rohdaten/costage_unload.xml b/src-modules/module/costage/rohdaten/costage_unload.xml
index 8ab18ed..5ac6e6f 100644
--- a/src-modules/module/costage/rohdaten/costage_unload.xml
+++ b/src-modules/module/costage/rohdaten/costage_unload.xml
@@ -189,6 +189,7 @@ SELECT S.st_sem_nr,
S.semester_anfang,
S.semester_ende,
S.semester_bezeichnung,
+ S.semester_bezeichnung_en,
S.studienjahr
FROM px_st_semester_v S
where to_number('20' || replace(replace(S.semester_id,'S','1'),'W','2')) >= $COSTAGE_start_st_sem
@@ -734,7 +735,7 @@ SELECT leistung_nr,
zusatzleistung_flag,
leistungsstatus_nr,
null ,--leistungsstatus_map_kb,
- null --abs_fach_st_studium_nr
+ abs_fach_st_studium_nr
FROM px_leistungen_v
--da das Semester bei Leistungen nicht immer gefuellt ist bzw. der Datum der Leistung nach dem Studium sein kann, hier keine Where Bedingung aufs Startsemester
;
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 6964c32..20668b1 100644
--- a/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
+++ b/src-modules/module/costage/rohdaten_sos/sos_costage_unload.xml
@@ -204,6 +204,8 @@ G.skz_key as stg,
G.fachkennzeichen,
'' ,--fb,
F.po_stp_stp_version_kb as pversion,
+F.po_stp_stp_version_kb as spoversion,
+F.po_stp_stp_version_kb_tsg as pversion_tsg,
F.semester,
F.studiengang_nr,
F.fach_nr,
@@ -243,7 +245,9 @@ F.kz_rueck_beur_ein_tsg,
endedat_tsg,
abm_art_s as abmeldegrund,
abm_art_s_tsg as abmeldegrund_tsg,
-G.studiengangs_identifikator as degree_program_uniquename
+F.studiengangs_identifikator as degree_program_uniquename,
+F.studiengangs_identifikator_tsg as degree_program_uniquename_tsg,
+F.st_studium_nr_tsg as degree_program_id_tsg
FROM costage_dim_studiengang G, costage_st_studien_aggr F
WHERE G.tid=F.studiengang_tid
@@ -299,14 +303,17 @@ G.abschluss_code as abschluss,
--else P.semester end) as semester,
P.semester,
P.leistungsdatum,
-G.skz_key as stg,
+(case when P.studiengangs_typ_kb='MSG' and skz_key_abschlussarbeit is not null then skz_key_abschlussarbeit
+else G.skz_key end) as stg,
null::integer as vert,
null::integer as schwp,
string_not_null(G.fachkennzeichen),
P.note,
null::char(7), --pruefungsamt_nr
P.abschnitt as pnr,
-P.po_stp_stp_version_kb as pversion,
+(case when leistungsdetailtyp_kb='TSAB' then P.po_stp_stp_version_kb_tsg
+when P.studiengangs_typ_kb='MSG' and po_stp_stp_version_kb_abschlussarbeit is not null then po_stp_stp_version_kb_abschlussarbeit
+else P.po_stp_stp_version_kb end) as pversion,
P.leistungsstatus_map_kb as pstatus,
P.fachsemester,
P.leistungsdetailtyp_kb as part,
@@ -327,11 +334,14 @@ null::CHAR(1), --stuart
G.stufrm,
null::CHAR(1), --stutyp
P.st_studium_nr as degree_program_id,
+P.st_studium_nr_tsg as degree_program_id_tsg,
semester_tsg,
leistungsdatum_tsg,
leistungsstatus_map_kb_tsg as pstatus_tsg,
note_tsg,
-fachsemester_tsg as fach_sem_zahl_tsg
+fachsemester_tsg as fach_sem_zahl_tsg ,
+P.studienidentifikator,
+P.studienidentifikator_tsg
FROM costage_st_pruef_aggr P, costage_dim_studiengang G
where G.tid=P.studiengang_tid
and ($EXTERNAL_SUBJECTS ='true'
@@ -1014,7 +1024,7 @@ SELECT distinct substring(G.studiengangs_identifikator from 1 for 10) ,--abstgv,
null::integer, -- ects,
G.skz_name
FROM costage_dim_studiengang G, costage_st_studien_aggr A
- where A.st_studiengang_nr=G.st_studiengang_nr
+ where G.tid=A.studiengang_tid
and ($EXTERNAL_SUBJECTS ='true'
or G.unikey=(select H.hs_nr::char(10) from hochschulinfo H)
)
diff --git a/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml b/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml
index 54f8637..846098e 100644
--- a/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml
+++ b/src-modules/module/costage/rohdaten_zul/zul_costage_unload.xml
@@ -158,7 +158,7 @@ null,--bew_efh,
null, --zvs_ekritpaket_18,
null --zvs_spezkrit
FROM
- costage_bw_antr_aggr B left outer join costage_st_studierendenstammdaten_neu S
+ costage_bw_antr_aggr B left outer join costage_st_studierendenstammdaten S
on (S.st_studstamm_nr=B.st_studstamm_nr)
left outer join
costage_st_laender L
@@ -276,7 +276,8 @@ A.nr as satzid,
null, --B.eingangdat
null, -- pversion
null, --zvs_ekritpaket_01,
- null --zvs_ekritpaket_02
+ null , --zvs_ekritpaket_02
+ null --updated_admission_relevant_data_at
FROM costage_bw_antr_aggr A, costage_st_studiengaenge G
where A.st_studiengang_nr=G.st_studiengang_nr
and A.bw_typ_kb !='MBW'
@@ -294,7 +295,7 @@ or exists(select id from sx_repository R where R.id='COSTAGE_STORT' and aktiv=1)
hzb-Saetze aus zul
diff --git a/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql b/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql
index be033de..3329b71 100755
--- a/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql
+++ b/src-modules/module/costage/schluesseltabellen/konstanten_fuellen.sql
@@ -98,6 +98,31 @@ beschreibung,
'Datenquelle, Entladestartzeitpunkt, -umfang',
310);
+
+ insert into tmp_konstanten(apnr,
+beschreibung,
+ defaultvalue,
+ description,
+ systeminfo_id,
+ doku_link,
+ read_only,
+ wertebereich,
+ ab_version,
+ gruppe,
+ sachgebiete_id)
+ values (1,
+'CO_interpret_primaerflag',
+ 1,
+ 'Primärflag auswerten',
+ 310,
+
+ 'https://www.superx-projekt.de/doku/costage_modul/admin/f_Konstanten.htm',
+
+1 ,
+'1,Ja'|| ${newline} || '0,Nein',
+ '0.7',
+ 'Datenquelle, Entladestartzeitpunkt, -umfang',
+ 310);
--vorhandene Schlüssel Metadaten updaten:
<#if SQLdialect='Postgres'>