Browse Source

Primärkosten xcube, Megrekonflikt Studierende behoben #1

xcube0.1
Daniel Quathamer 1 year ago
parent
commit
73d917081a
  1. 14
      src-modules/module/xcube/conf/xcube.xml
  2. 45
      src-modules/module/xcube/masken/21000_felderinfo.unl
  3. 2
      src-modules/module/xcube/masken/21000_maskeninfo.unl
  4. 27
      src-modules/module/xcube/masken/21500_felderinfo.unl
  5. 3
      src-modules/module/xcube/masken/21500_masken_felder_bez.unl
  6. 142
      src-modules/module/xcube/masken/21500_maskeninfo.unl
  7. 2
      src-modules/module/xcube/schluesseltabellen/xcube_install.sql
  8. 3
      src-modules/module/xcube/schluesseltabellen/xcube_install_restrictions.sql

14
src-modules/module/xcube/conf/xcube.xml

@ -2,7 +2,7 @@ @@ -2,7 +2,7 @@
<!--<!DOCTYPE module SYSTEM "../../../conf/superx-module.dtd">-->
<module name="xcube" version="0.1" sachgebiet_id="1000" sachgebiet="xcube" systeminfo_id="1000" system="xcube" thema="xCubes" thema_parent="">
<database name="superx" version="2.1" system="superx">
<table name="xcube">
<table name="xcube" thema="Kreuztabellen" typ="Datentabelle" caption="Kreuztabellen">
<columns>
<column name="tid" type ="SERIAL" size ="" default ="" notnull ="true" isKey="true" description=""><comment>Primärschlüssel</comment></column>
<column name="uniquename" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Schlüssel"><comment>nur nachrichtlicher Schlüssel für den Würfel</comment></column>
@ -13,7 +13,7 @@ @@ -13,7 +13,7 @@
<column name="restriction" type ="TEXT" size ="" default ="" notnull ="false" description="Einschränkung"><comment> (where-Bedingung) des Würfels</comment></column>
</columns>
</table>
<table name="xcube_kennzahl">
<table name="xcube_kennzahl" thema="Kreuztabellen" typ="Datentabelle" caption="Kennzahlen Kreuztabellen">
<columns>
<column name="tid" type ="SERIAL" size ="" default ="" notnull ="true" isKey="true" description=""><comment>Primärschlüssel</comment></column>
<column name="maskeninfo_id" type ="INTEGER" size ="10" default ="" notnull ="true" description="Maske"><comment>tid der Würfelmaske</comment></column>
@ -26,7 +26,7 @@ @@ -26,7 +26,7 @@
<column name="sortnr" type ="SMALLINT" size ="5" default ="" notnull ="false" description="Sortiernr."><comment>Sortierung für das Auswahlfeld Kennzahl</comment></column>
</columns>
</table>
<table name="xcube_dimconfig">
<table name="xcube_dimconfig" thema="Kreuztabellen" typ="Schlüsseltabelle" caption="Dimensionseigenschaften">
<columns>
<column name="tid" type ="SERIAL" size ="" default ="" notnull ="true" isKey="true" description=""><comment>Primärschlüssel</comment></column>
<column name="maskeninfo_id" type ="INTEGER" size ="10" default ="" notnull ="true" description="Maske"><comment>Nummer der Würfelmaske</comment></column>
@ -67,7 +67,7 @@ @@ -67,7 +67,7 @@
</rs></privileges>
</table>
<table name="xcube_dims">
<table name="xcube_dims" thema="Kreuztabellen" typ="Datentabelle" caption="Dimensionen">
<columns>
<column name="id" type ="VARCHAR" size ="255" default ="" notnull ="false" description=""><comment>ID für die Art der Dimension</comment></column>
<column name="apnr" type ="VARCHAR" size ="255" default ="" notnull ="false" description="Schlüssel"><comment>Einzelner Schlüssel</comment></column>
@ -183,6 +183,12 @@ parent="xCubes">Abfragen zur Administration von xCubes </thema> @@ -183,6 +183,12 @@ parent="xCubes">Abfragen zur Administration von xCubes </thema>
<dbsystem>POSTGRES</dbsystem>
</src>
</maske>
<maske tid="21500" name="Primärkosten XCUBE" thema="xCubes">
<src>
<path>$XCUBE_PFAD/masken</path>
<dbsystem>POSTGRES</dbsystem>
</src>
</maske>
</masken>
<data-integrity>
<!--xcube-->

45
src-modules/module/xcube/masken/21000_felderinfo.unl

@ -1,8 +1,8 @@ @@ -1,8 +1,8 @@
21000^Köpfe oder Fälle ?^0^0^0^140^150^1^sql^70^0^1^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag not like 'gewichtet nach%' order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from koepfe_oder_faelle where eintrag='Köpfe';^
21001^Seit Semester^3^0^0^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
21002^Stichtag^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^
21003^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;^^^
21004^Status^14^350^-1^140^180^1^sql^30^0^1^<<SQL>> select apnr,eintrag from sos_status order by 2^^<<SQL>> select apnr,eintrag from sos_status where eintrag='Alle ohne Beurl.';^
21002^Stichtag^1^350^-1^140^100^1^sql^30^0^1^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende';^ ^<<SQL>> select tid, name from sos_stichtag where stichtagsart='Studierende' and appl_key='0';^
21003^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;^ ^ ^
21004^Status^14^350^-1^140^180^1^sql^30^0^1^<<SQL>> select apnr,eintrag from sos_status order by 2^ ^<<SQL>> select apnr,eintrag from sos_status where eintrag='Alle ohne Beurl.';^
21005^Hörerstatus^33^0^0^140^170^1^sql^30^0^1^<<SQL>> select apnr, eintrag from hoererstatus order by 2^apnr, eintrag^<<SQL>> select apnr, eintrag from hoererstatus where eintrag='alle';^
21006^Weitere Tabellen^123^0^0^140^140^10^char^30^0^999^<<SQL>> \
--freemarker template\
@ -10,11 +10,12 @@ select name,string_not_null(caption) || ' - ' || name from sx_tables where name @@ -10,11 +10,12 @@ select name,string_not_null(caption) || ' - ' || name from sx_tables where name
<#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^^^
21007^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^0^^^^
order by 2^ ^ ^
21007^bis Fachsemester^35^350^-1^140^100^1^integer^30^0^0^^ ^ ^
21008^Fächer^8^0^0^130^150^10^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^
21009^Bis Semester^4^350^-1^140^80^1^integer^30^0^1^<<SQL>> select tid, eintrag from semester order by tid DESC;^Eintrag^<<SQL>> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^
21010^Filter Studierende^119^0^0^140^150^1^sql^20^0^1^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^^^
21011^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^
21010^Filter Studierende^119^0^0^140^150^1^sql^20^0^1^<<SQL>> SELECT id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SOS_STUD_FILTER' order by 2;^ ^ ^
21011^Geschlecht^37^0^0^140^80^1^integer^30^0^1^<<SQL>> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^ ^ ^
21012^Felder^125^0^0^150^190^10^char^30^0^999^<<SQL>>\
--freemarker template\
select trim(F.table_name) || '.' || F.name,trim(T.caption) || ':' || trim(F.caption) || ' - ' || trim(F.name) from sx_fields F,\
@ -30,23 +31,23 @@ and apnr=1)) \ @@ -30,23 +31,23 @@ and apnr=1)) \
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;^^^
21013^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;^^^
21014^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^999^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^^<<SQL>> select 1,'Ja' from xdummy^
21015^Ansicht in Ergebniszeilen^121^0^0^100^200^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^
21016^Ansicht in Ergebnisspalten^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^
21017^Zivilstatus^41^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Status');^^^
21018^Jahrgang^42^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Jahrgang');^^^
order by 2;^ ^ ^
21013^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;^ ^ ^
21014^Schlüssel anzeigen^150^0^0^100^100^1^integer^30^1^999^<<SQL>> select 1,'Ja' from xdummy union select 0,'Nein' from xdummy^ ^<<SQL>> select 1,'Ja' from xdummy^
21015^Ansicht in Ergebniszeilen^121^0^0^100^200^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^ ^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^
21016^Ansicht in Ergebnisspalten^2001^0^0^100^150^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^ ^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^
21017^Zivilstatus^41^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Status');^ ^ ^
21018^Jahrgang^42^350^-1^140^180^1^sql^30^0^13^<<SQL>> select attributevalue from personattribute_value_list where personattributetype_id = (select personattributetype_id from personattributetype where attributevalue = 'Jahrgang');^ ^ ^
21019^Leere Zeilen ausblenden^130^350^-1^140^80^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<<SQL>> select 'ja','ja' from xdummy^
21020^Leere Spalten ausblenden^2020^0^0^100^100^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^^<<SQL>> select 'ja','ja' from xdummy^
21021^Abschluss^7^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') order by 3,2;^^^
21020^Leere Spalten ausblenden^2020^0^0^100^100^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<<SQL>> select 'ja','ja' from xdummy^
21021^Abschluss^7^0^0^140^170^5^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('SOS-Abschluss-Sicht') order by 3,2;^ ^ ^
21022^Kennzahl^3000^350^-1^150^180^1^integer^200^1^1^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^hidden^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^
21023^2.Ansicht in Zeilen^125^0^0^100^100^1^char^50^0^999^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_secondrowdim=1 order by 1^hidden^1^
21024^Wohnort^38^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Wohnort-Sicht') order by 3,2;^^^
21025^Alter^39^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Alter-Sicht') order by 3,2;^^^
21026^HZB-Note^40^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-HZB-Note-Sicht') order by 3,2;^^^
21027^Hörerstatus (intern)^43^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Hörerstatus-Sicht') order by 3,2;^^^
21024^Wohnort^38^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Wohnort-Sicht') order by 3,2;^ ^ ^
21025^Alter^39^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Alter-Sicht') order by 3,2;^ ^ ^
21026^HZB-Note^40^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-HZB-Note-Sicht') order by 3,2;^ ^ ^
21027^Hörerstatus (intern)^43^0^0^140^80^1^char^30^0^12^<<SQL>> select tid,name,sortnr from sichten where art in ('XCUBE-Hörerstatus-Sicht') order by 3,2;^ ^ ^
21028^Spaltenvisualisierung^10000^0^0^140^80^1^char^30^0^1^<<SQL>> select '_graph','Balken (horiz. linksb.)' from xdummy\
union select '_graphbarright','Balken (horiz. rechtsb.)' from xdummy\
union select '_graphbaralternating','Balken (horiz. rechtsb./linksb.)' from xdummy^^^
21029^Zeilenfilter bis Ebene^140^0^0^140^10^1^integer^30^0^0^ ^^^
union select '_graphbaralternating','Balken (horiz. rechtsb./linksb.)' from xdummy^ ^ ^
21029^Zeilenfilter bis Ebene^140^0^0^140^10^1^integer^30^0^0^^ ^ ^

2
src-modules/module/xcube/masken/21000_maskeninfo.unl

@ -433,4 +433,4 @@ Column CID=1 heading_text="${spalte.name}" center_heading\ @@ -433,4 +433,4 @@ Column CID=1 heading_text="${spalte.name}" center_heading\
width=12\
</#foreach>\
@@@^Altersgruppe^Anzahl^Dynamische Darstellung von Studierendenzahlen^drop table tmp_erg;\
drop table tmp_cellmax;^ ^3^700^360^0^1^ ^
drop table tmp_cellmax;^^3^700^360^^1^^

27
src-modules/module/xcube/masken/21500_felderinfo.unl

@ -1,13 +1,18 @@ @@ -1,13 +1,18 @@
21500^Geldgeber^9^300^-1^100^100^1^char^30^0^12^<<SQL>>select tid,type,name,sortnr from sichten where art ='Geldgeber-Sicht (COB)' and aktiv=1 order by sortnr,type,name;^^ ^
21501^Kostenstelle^0^0^0^100^250^1^char^4^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenstellen-Sicht' and aktiv=1 order by type,name^^^
21502^Haushaltsjahr^10^0^0^100^50^1^integer^30^0^1^<<SQL>> SELECT distinct ord,name FROM aggregierung where kategorie='COB-Jahr' order by 1;^^<<SQL>> SELECT ord,name FROM aggregierung where kategorie='COB-Jahr' and ord=year(today()) ;^
21503^Zeitraum^20^300^-1^100^100^1^sql^30^0^1^<<SQL>> select wert, name from aggregierung where kategorie = 'ZeitraumCob';^^^
21504^Kostenarten^1^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kosten-/Erlösarten-Sicht' and aktiv=1 order by type,name^^^
21505^Monat von^30^0^0^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^^^
21506^Monat bis^40^300^-1^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^^^
21507^Ansicht in Ergebniszeilen^1000^0^0^100^200^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^
21508^Ansicht in Ergebnisspalten^1020^0^0^100^150^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^
21500^Geldgeber^9^300^-1^100^100^1^char^30^0^12^<<SQL>>select tid,type,name,sortnr from sichten where art ='Geldgeber-Sicht (COB)' and aktiv=1 order by sortnr,type,name;^ ^ ^
21501^Kostenstelle^0^0^0^100^250^1^char^4^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenstellen-Sicht' and aktiv=1 order by type,name^ ^ ^
21502^Jahr von^10^0^0^100^50^1^integer^30^0^1^<<SQL>> SELECT distinct ord,name FROM aggregierung where kategorie='COB-Jahr' order by 1;^ ^<<SQL>> SELECT ord,name FROM aggregierung where kategorie='COB-Jahr' and ord=year(today()) ;^
21503^Zeitraum^20^300^-1^100^100^1^sql^30^0^1^<<SQL>> select wert, name from aggregierung where kategorie = 'ZeitraumCob' order by 2;^ ^ ^
21504^Kostenarten^1^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kosten-/Erlösarten-Sicht' and aktiv=1 order by type,name^ ^ ^
21505^Monat von^30^0^0^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^ ^ ^
21506^Monat bis^40^300^-1^100^100^1^integer^30^0^1^<<SQL>> select ord,name from aggregierung where kategorie = 'ZeitraumCob' and ord <=13 order by 1;^ ^ ^
21507^Ansicht in Ergebniszeilen^1000^0^0^100^200^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdim=1 order by 2^ ^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_rowdefault=1^
21508^Ansicht in Ergebnisspalten^1020^0^0^100^150^1^char^200^1^1^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldim=1 order by 2^ ^<<SQL>> select name,caption from xcube_dimconfig where maskeninfo_id=${Maskennummer} and is_coldefault=1^
21509^Leere Zeilen ausblenden^1010^350^-1^140^80^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<<SQL>> select 'ja','ja' from xdummy^
21510^Leere Spalten ausblenden^1030^0^0^100^100^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^^<<SQL>> select 'ja','ja' from xdummy^
21510^Leere Spalten ausblenden^1030^0^0^100^100^1^char^30^0^1^<<SQL>> select 'ja','ja' from xdummy union select 'nein','nein' from xdummy^ ^<<SQL>> select 'ja','ja' from xdummy^
21511^Kennzahl^1050^350^-1^150^180^1^integer^200^1^1^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} order by sortnr,name;^hidden^<<SQL>> select tid,name from xcube_kennzahl where maskeninfo_id=${Maskennummer} and is_default=1^
21512^Kostenträger^5^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenträger-Sicht' and aktiv=1 order by type,name^^^
21512^Kostenträger^5^0^0^100^250^1^char^30^0^12^<<SQL>> select tid,type,name from sichten where art='Kostenträger-Sicht' and aktiv=1 order by type,name^ ^ ^
21513^Jahr bis^15^0^0^150^50^1^integer^4^0^1^<<SQL>>SELECT distinct ord,name FROM aggregierung where kategorie='COB-Jahr' order by 1;^^<<SQL>> SELECT ord,name FROM aggregierung where kategorie='COB-Jahr' and ord=year(today()) ;^
21514^Spaltenvisualisierung^1500^0^0^140^80^1^char^30^0^1^<<SQL>> select '_graph','Balken (horiz. linksb.)' from xdummy\
union select '_graphbarright','Balken (horiz. rechtsb.)' from xdummy\
union select '_graphbaralternating','Balken (horiz. rechtsb./linksb.)' from xdummy^^^
21515^Zeilenfilter bis Ebene^1400^0^0^140^10^1^integer^30^0^0^ ^^^

3
src-modules/module/xcube/masken/21500_masken_felder_bez.unl

@ -11,3 +11,6 @@ @@ -11,3 +11,6 @@
21500^21510^
21500^21511^
21500^21512^
21500^21513^
21500^21514^
21500^21515^

142
src-modules/module/xcube/masken/21500_maskeninfo.unl

@ -1,40 +1,61 @@ @@ -1,40 +1,61 @@
21500^Primärbuchungswürfel^--freemarker template\
21500^Primärkosten/Erlöse XCUBE^--freemarker template\
-- Maskenfelder -Leere Zeilen ausblenden, leere SPalten ausblenden?\
<sqlvars>\
<sqlvar name="table_name">select table_name from xcube where maskeninfo_id=${Maskennummer}</sqlvar>\
<sqlvar name="aggrfunction">select aggrfunction from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\
<sqlvar name="aggrfunction_restriction">select nvl(restriction,''::char(1)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\
<sqlvar name="datatype">select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\
--benoetigt falls Kennzahlen in Zeilen oder Splaten\
<sqlvar name="kennzahlen" type="hashsequence">select apnr,aggrfunction,nvl(restriction,''::char(1)) as restriction from xcube_kennzahl where maskeninfo_id=${Maskennummer}</sqlvar>\
<sqlvar name="aggrfunction_restriction">select nvl(restriction,''::char(1)) from xcube_kennzahl \
where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>>\
</sqlvar>\
<sqlvar name="datatype">select nvl(datatype,'decimal(17,2)'::varchar(30)) from xcube_kennzahl \
where maskeninfo_id=${Maskennummer} and tid=<<Kennzahl>></sqlvar>\
--benoetigt falls Kennzahlen in Zeilen oder Spalten\
<sqlvar name="kennzahlen" type="hashsequence">select apnr,aggrfunction,\
nvl(restriction,''::char(1)) as restriction \
from xcube_kennzahl where maskeninfo_id=${Maskennummer}</sqlvar>\
<sqlvar name="restriction" type="string"><![CDATA[<sximport>select restriction from xcube where maskeninfo_id=<<Maskennummer>></sximport>]]></sqlvar>\
<sqlvar name="coldef" type="hash"><![CDATA[select name,caption,foreignkey_tab,foreignkey_col,\
foreignkey_cap,nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\
<sqlvar name="coldef" type="hash"><![CDATA[select name,\
caption,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
nvl(foreignkey_cond,''::varchar(1))\
as foreignkey_cond,\
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\
sortfield,is_sicht,calc_gesamt,is_virtual,vcsql,nvl(attrib_nachbearbeitung,''::char(1)) as attrib_nachbearbeitung\
sortfield,\
is_sicht,\
calc_gesamt,\
is_virtual,\
vcsql,\
nvl(attrib_nachbearbeitung,''::char(1)) as attrib_nachbearbeitung\
from xcube_dimconfig where \
maskeninfo_id=${Maskennummer} \
and name=<<Ansicht in Ergebnisspalten>>]]>\
</sqlvar>\
<sqlvar name="nichtsicht_ergspalten" type='hashsequence'><![CDATA[\
<#if coldef.is_sicht=0>\
select distinct ${coldef.foreignkey_col} as apnr,${coldef.foreignkey_cap} as name,\
1::smallint as detailgesamtsort,${coldef.sortfield} as tmp_sortfield\
select distinct ${coldef.foreignkey_col} as apnr,\
${coldef.foreignkey_cap} as name,\
1::smallint as detailgesamtsort,\
${coldef.sortfield} as tmp_sortfield\
from ${coldef.foreignkey_tab} where \
1=1 \
<#if coldef.foreignkey_cond!=''> and ${coldef.foreignkey_cond} </#if>\
--{coldef.specific_restriction} \
--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen, geht derzeit nicht für virtuelle Spalten, -> Kernmodul\
<#if coldef.is_virtual?number=0&&"<<Leere Spalten ausblenden>>"="'ja'">\
--ausblenden von Spalten, die gar nicht in konkretem Teilergebnis vorkommen, geht derzeit nicht für virtuelle Spalten und nachbearbeitung, -> Kernmodul\
<#if coldef.is_virtual?number=0&&coldef.attrib_nachbearbeitung=''&&"<<Leere Spalten ausblenden>>"="'ja'">\
and ${coldef.foreignkey_col}::varchar(255) in (select distinct ${coldef.name}::varchar(255) from ${table_name} where \
${restriction} \
)\
</#if>\
<#if coldef.calc_gesamt?number=1> \
union\
select 'gesamt','Gesamt',2::smallint as detailgesamtsort,null as tmp_sortfield from xdummy\
select 'gesamt','Gesamt',\
2::smallint as detailgesamtsort,\
null as tmp_sortfield from xdummy\
</#if>\
order by detailgesamtsort,tmp_sortfield,name;\
order by detailgesamtsort,\
tmp_sortfield,\
name;\
<#else>\
select 'Sichtspalten aktiv' from xdummy;\
</#if>\
@ -52,8 +73,11 @@ from xcube_dimconfig C where maskeninfo_id=${Maskennummer} and name=<<Ansicht in @@ -52,8 +73,11 @@ from xcube_dimconfig C where maskeninfo_id=${Maskennummer} and name=<<Ansicht in
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\
<sqlvar name="nichtsicht_ergzeilen" type='hashsequence'><![CDATA[\
<#if rowdef.is_sicht=0>\
select 1::smallint as level, ${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
${rowdef.foreignkey_cap} as name,${rowdef.sortfield} as tmp_sortfield from ${rowdef.foreignkey_tab}\
select 1::smallint as level, \
${rowdef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
${rowdef.foreignkey_cap} as name,\
${rowdef.sortfield} as tmp_sortfield \
from ${rowdef.foreignkey_tab}\
where 1=1\
<#if rowdef.foreignkey_cond!=''> and ${rowdef.foreignkey_cond} </#if>\
--{rowdef.specific_restriction} \
@ -69,7 +93,12 @@ select 'nicht relevant' from xdummy;</#if>\ @@ -69,7 +93,12 @@ select 'nicht relevant' from xdummy;</#if>\
\
<sqlvar name="zweiteRowDef" type="hash"><![CDATA[\
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">\
select name,caption,is_sicht,calc_gesamt,foreignkey_tab,foreignkey_col,foreignkey_cap,\
select name,caption,\
is_sicht,\
calc_gesamt,\
foreignkey_tab,\
foreignkey_col,\
foreignkey_cap,\
nvl(foreignkey_cond,''::varchar(1)) as foreignkey_cond,\
--nvl(C.specific_restriction,''::varchar(1)) as specific_restriction,\
C.sortfield\
@ -82,8 +111,11 @@ select 'keine zweite RowDef' from xdummy;\ @@ -82,8 +111,11 @@ select 'keine zweite RowDef' from xdummy;\
--nur bei wenn Ergzeilen_def nicht vom Typ Sicht relevant\
<sqlvar name="zweiteRow_nichtsicht_ergzeilen" type='hashsequence'><![CDATA[\
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>"&&zweiteRowDef.is_sicht=0>\
select 1::smallint as level, ${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
${zweiteRowDef.foreignkey_cap} as name,${zweiteRowDef.sortfield} as tmp_sortfield from ${zweiteRowDef.foreignkey_tab}\
select 1::smallint as level, \
${zweiteRowDef.foreignkey_col}::varchar(255) as key,--hier wird zur Vereinheitlichung mit Sichten Bezeichung "key" für eigentlichen Schluessel benoetigt\
${zweiteRowDef.foreignkey_cap} as name,\
${zweiteRowDef.sortfield} as tmp_sortfield \
from ${zweiteRowDef.foreignkey_tab}\
where 1=1\
<#if zweiteRowDef.foreignkey_cond!=''> and ${zweiteRowDef.foreignkey_cond} </#if>\
--{zweiteRowDef.specific_restriction} \
@ -109,6 +141,13 @@ select 'nicht relevant' from xdummy;</#if>\ @@ -109,6 +141,13 @@ select 'nicht relevant' from xdummy;</#if>\
--TODO auch 2. Dimension in Zeilen/Spalten\
<#if coldef.is_virtual?number=1||rowdef.is_virtual?number=1> <#return 1><#else> return <#return 0> </#if>\
</#function>\
<#assign graph_col= "col" />\
/* <#assign graph_col=<<Spaltenvisualisierung>> /> */\
\
create temp table tmp_cellmax (maxvalue ${datatype} );\
insert into tmp_cellmax values(0);\
\
\
\
\
<#if hasVirtualColumns()=1||kennzahlInRowOrCol()=1>\
@ -148,7 +187,7 @@ create index ix_tmp_roh1 on tmp_cache (colattrib,rowattrib,row2attrib);\ @@ -148,7 +187,7 @@ create index ix_tmp_roh1 on tmp_cache (colattrib,rowattrib,row2attrib);\
\
--moegliche attrib_nachbearbeitung\
<#if kennzahlInRowOrCol()=0> \
<#assign tmp_table="tmp_cache"/> <#assign rowfield="rowattrib"/> <#assign colfield="rowattrib"/> \
<#assign tmp_table="tmp_cache"/> <#assign rowfield="rowattrib"/> <#assign colfield="colattrib"/> \
<#else>\
<#assign tmp_table="tmp_rohdaten"/> <#assign rowfield=rowdef.name/> <#assign colfield=coldef.name/> \
</#if>\
@ -205,6 +244,7 @@ create index ix_tmp_erg on tmp_erg (sortnr);\ @@ -205,6 +244,7 @@ create index ix_tmp_erg on tmp_erg (sortnr);\
</#foreach>\
</#foreach>\
<#else>\
/* <#if zeile.level &lt;= <<Zeilenfilter bis Ebene>> > */\
<#assign sortnr=sortnr+1/>\
insert into tmp_erg (ebene,col1,name,sortnr)\
values (${zeile.level},'${zeile.key}','${zeile.name}',${sortnr});\
@ -213,6 +253,7 @@ create index ix_tmp_erg on tmp_erg (sortnr);\ @@ -213,6 +253,7 @@ create index ix_tmp_erg on tmp_erg (sortnr);\
<#assign i=i+1/>\
<@updateval i=i col=spalte row=zeile row2='' sortnr=sortnr/>\
</#foreach>\
/* </#if> --<<Zeilenfilter bis Ebene>> */\
</#if> \
</#foreach>\
\
@ -268,8 +309,9 @@ update tmp_erg T set c${i}=\ @@ -268,8 +309,9 @@ update tmp_erg T set c${i}=\
<#macro colrestriction col colattribname='R.colattrib'>\
<#if coldef.is_sicht==1>\
and ${colattribname}::varchar(255) in ${col.subkeys}\
<#elseif coldef.is_sicht=2>\
and (${col.strukturStr?replace('$1',' '+colattribname+"::varchar(255)")}) \
<#else>\
--TODO Sicht=2\
<#if col.apnr!='gesamt'>\
and ${colattribname}::varchar(255)='${col.apnr}' \
</#if>\
@ -298,6 +340,21 @@ drop table if exists tmp_rohdaten;\ @@ -298,6 +340,21 @@ drop table if exists tmp_rohdaten;\
update tmp_erg set c${i}=0 where c${i} is null; \
</#foreach>\
\
<#assign lastcol=i />\
\
--Wenn Grafikfunktion eingeschaltet ist, wird Maximalwert ermittelt:\
<#if i != 0 && graph_col != "col" >\
\
<#assign i=0/>\
<#foreach spalte in ergspalten>\
<#assign i=i+1/>\
<#if i == lastcol>\
update tmp_cellmax set maxvalue = (select max(c${i}) from tmp_erg) \
where tmp_cellmax.maxvalue < (select max(c${i}) from tmp_erg) ;\
</#if> \
</#foreach>\
\
</#if>\
<#if "<<Leere Zeilen ausblenden>>"="'ja'">\
delete from tmp_erg where\
<#assign i=0/>\
@ -306,7 +363,7 @@ delete from tmp_erg where\ @@ -306,7 +363,7 @@ delete from tmp_erg where\
c${i}=0 <#if spalte_has_next> and </#if>\
</#foreach>;\
</#if>\
<#if "<<Ansicht in Ergebniszeilen>>"="'institution'">\
<#if "<<Ansicht in Ergebniszeilen>>"="'ch110_institut'">\
update tmp_erg set name=replace(name,col1||' - ','');\
update tmp_erg set col1=(select max(uniquename) from organigramm where col1=trim(key_apnr))\
where substring(col1 from 1 for 1)='_';\
@ -318,21 +375,36 @@ update tmp_erg set name=replace(name,col1||' - ','');\ @@ -318,21 +375,36 @@ update tmp_erg set name=replace(name,col1||' - ','');\
\
\
select \
<#if rowdef.is_sicht&gt;0>ebene,col1,</#if>\
name,\
<#if rowdef.is_sicht&gt;0>\
<#if graph_col=="col">\
ebene,\
<#else>\
ebene as level, --bei Grafiken keine Ebenenanzeige\
</#if>\
</#if>\
name\
<#if "<<2.Ansicht in Zeilen>>"!=""&&"<<2.Ansicht in Zeilen>>"!="<<2.Ansicht in Zeilen>>">col2,</#if>\
<#assign i=0/>\
<#foreach spalte in ergspalten>\
<#assign i=i+1/>\
c${i}::${datatype} <#if spalte_has_next>,</#if>\
</#foreach>\
<#if i != lastcol && graph_col != "col" >\
<#if graph_col == "_graphbaralternating">\
--bei symmetr. Balken jeder 2. Balken rechtsbündig\
<#if i % 2 == 0>\
, '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as _graph${i}\
<#else>\
, '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as _graphbarright${i}\
</#if>\
<#else>\
, '' || c${i}::${datatype} || '|' || tmp_cellmax.maxvalue as ${graph_col}${i}\
</#if>\
\
from tmp_erg order by sortnr;^--freemarker Template\
XIL List\
sizable_columns horizontal_scrolling\
drop_and_delete movable_columns\
white_space_color=COLOR_WHITE fixed_columns=1\
min_heading_height=35\
<#else>\
, c${i}::${datatype} as col${i}\
</#if>\
\
</#foreach>\
from tmp_erg, tmp_cellmax order by sortnr;^--freemarker Template\
XIL List\
sizable_columns horizontal_scrolling\
drop_and_delete movable_columns\
@ -342,9 +414,6 @@ XIL List\ @@ -342,9 +414,6 @@ XIL List\
Column CID=0 heading_text="Ebene" center_heading\
row_selectable heading_platform readonly\
width=10 text_size=8\
Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}Nr" center_heading\
row_selectable heading_platform readonly\
width=10 text_size=10\
</#if>\
Column CID=20 heading_text="${.vars["Ansicht in ErgebniszeilenObject"].selectedItems[0].name}" center_heading\
row_selectable heading_platform readonly\
@ -366,4 +435,5 @@ Column CID=1 heading_text="${spalte.name}" center_heading\ @@ -366,4 +435,5 @@ Column CID=1 heading_text="${spalte.name}" center_heading\
</#foreach>\
\
\
@@@^^^Dynamische Auswertungen von Primärbuchungen^drop table tmp_erg;^^2^600^400^0^1^^
@@@^ ^ ^Dynamische Auswertungen von Primärbuchungen^drop table tmp_erg;\
drop table tmp_cellmax;^^2^600^400^^1^^

2
src-modules/module/xcube/schluesseltabellen/xcube_install.sql

@ -53,7 +53,7 @@ @@ -53,7 +53,7 @@
"sortnr":1},
{ "maskeninfo_id":21500,
"apnr":"kosten",
"name":"Kosten",
"name":"Kosten/Erlöse",
"aggrfunction":"sum(betrag*kokl_faktor)",
"restriction":"",
"is_default":1,

3
src-modules/module/xcube/schluesseltabellen/xcube_install_restrictions.sql

@ -68,7 +68,8 @@ update xcube set restriction='<<Köpfe oder Fälle ?>> @@ -68,7 +68,8 @@ update xcube set restriction='<<Köpfe oder Fälle ?>>
update xcube set restriction='
(bukz!=''PE'' or bukz is null)
/* and jahr=<<Haushaltsjahr>> */
/* and jahr >= <<Jahr von>> */
/* and jahr <= <<Jahr bis>> */
and fikrkey in <@printkeys Kostenarten.allNeededKeys />
and ch110_institut in <@printkeys Kostenstelle.allNeededKeys/>
/* AND <<Zeitraum>> */

Loading…
Cancel
Save