From f6ae3305c74227cd9ccee3141a5a632e79021605 Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Thu, 3 Jul 2025 09:10:21 +0200 Subject: [PATCH] =?UTF-8?q?Neue=20virtuelle=20Tabelle=20+=20Maske=20Besch?= =?UTF-8?q?=C3=A4ftigungsverh=C3=A4ltnisse=20#13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src-modules/module/rpta/conf/includes.txt | 1 + src-modules/module/rpta/conf/rpta.xml | 14 +- .../hilfstabellen/fill_rpta_resultset.sql | 10 +- .../module/rpta/masken/48000_felderinfo.unl | 2 +- .../module/rpta/masken/48000_maskeninfo.unl | 4 +- .../module/rpta/masken/48080_felderinfo.unl | 8 +- .../module/rpta/masken/48080_maskeninfo.unl | 27 +- .../module/rpta/masken/48250_felderinfo.unl | 29 + .../rpta/masken/48250_maske_system_bez.unl | 1 + .../rpta/masken/48250_masken_felder_bez.unl | 14 + .../module/rpta/masken/48250_maskeninfo.unl | 122 ++++ .../rpta/masken/48250_sachgeb_maske_bez.unl | 1 + .../rpta/schluesseltabellen/fm_templates.unl | 10 +- .../schluesseltabellen/personal_virtuell.sql | 472 ++++++++++++++ .../rpta_column_layout__pbv__dm_fuellen.sql | 63 ++ superx/xml/rpta_groupLayout.xml | 4 + superx/xml/rpta_templates.xsl | 606 +++++++++++++++++- superx/xml/rpta_templates_final.xsl | 9 + superx/xml/sx_stylesheets_einfuegen.sql | 217 ------- 19 files changed, 1360 insertions(+), 254 deletions(-) create mode 100644 src-modules/module/rpta/masken/48250_felderinfo.unl create mode 100644 src-modules/module/rpta/masken/48250_maske_system_bez.unl create mode 100644 src-modules/module/rpta/masken/48250_masken_felder_bez.unl create mode 100644 src-modules/module/rpta/masken/48250_maskeninfo.unl create mode 100644 src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl create mode 100644 src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql create mode 100644 src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql create mode 100644 superx/xml/rpta_groupLayout.xml create mode 100644 superx/xml/rpta_templates_final.xsl delete mode 100755 superx/xml/sx_stylesheets_einfuegen.sql diff --git a/src-modules/module/rpta/conf/includes.txt b/src-modules/module/rpta/conf/includes.txt index f5d574f..b41d316 100644 --- a/src-modules/module/rpta/conf/includes.txt +++ b/src-modules/module/rpta/conf/includes.txt @@ -8,6 +8,7 @@ WEB-INF/lib/superx-rpta.jar WEB-INF/reports/simple_table.jrtx WEB-INF/reports/48110_leistungen_und_studiengaenge.jrxml WEB-INF/reports/48110_leistungen_und_studiengaenge_shortcomment.jrxml +xml/rpta_groupLayout.xml xml/tabelle_jrxml_a4_quer.xsl xml/tabelle_jrxml_book_without_cover.xsl xml/tabelle_xls_48140.xsl diff --git a/src-modules/module/rpta/conf/rpta.xml b/src-modules/module/rpta/conf/rpta.xml index cc4a4a0..c06424f 100644 --- a/src-modules/module/rpta/conf/rpta.xml +++ b/src-modules/module/rpta/conf/rpta.xml @@ -342,18 +342,24 @@ parent="Berichtsassistent">Abfragen zur Administration von Berichtsassistent $RPTA_PFAD/masken - + Performance-Optimiert $RPTA_PFAD/masken + + + + $RPTA_PFAD/masken + + + @@ -569,6 +576,7 @@ scriptfile="" database=""/> + @@ -579,6 +587,8 @@ scriptfile="" database=""/> + + diff --git a/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql b/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql index 34405fe..5c1ea53 100644 --- a/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql +++ b/src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql @@ -77,7 +77,7 @@ drop table if exists ${basetable.runtime_tablename}; create table ${basetable.runtime_tablename} as select <#foreach basetable_column in basetable_columns> - +<#if basetable_column.rpta_name=basetable.uniquename> <#if basetable_column.is_sum=0> <#assign groupby=groupby+1 /> ${basetable_column.name}, @@ -85,6 +85,8 @@ ${basetable_column.name}, sum(${basetable_column.name})::float as ${basetable_column.name}, + + creation_date from tmp_${basetable.runtime_tablename} @@ -101,10 +103,14 @@ drop table tmp_${basetable.runtime_tablename}; --TODO: indizes <#foreach basetable_column in basetable_columns> +<#if basetable_column.rpta_name=basetable.uniquename> + <#if basetable_column.is_sum=0> -create index ix_${basetable_column.name}_dashboard on ${basetable.runtime_tablename}(${basetable_column.name}); +create index ix_${basetable.runtime_tablename}_${basetable_column.name} on ${basetable.runtime_tablename}(${basetable_column.name}); --create index ix_tid_stg_dashboard_mw on ${basetable.runtime_tablename}(tid_stg); --create index ix_sem_rueck_beur_ein_dashboard_mw on ${basetable.runtime_tablename}(sem_rueck_beur_ein); + + diff --git a/src-modules/module/rpta/masken/48000_felderinfo.unl b/src-modules/module/rpta/masken/48000_felderinfo.unl index ff8ee17..8988de0 100644 --- a/src-modules/module/rpta/masken/48000_felderinfo.unl +++ b/src-modules/module/rpta/masken/48000_felderinfo.unl @@ -11,7 +11,7 @@ where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='so and R.systeminfo_id=7) and uniquename='sos_stud_astat_rsz';^ 48001^Seit Semester^10^0^0^140^80^1^integer^30^0^1^<> select tid, eintrag from semester order by tid DESC;^ ^<> select tid,eintrag from semester where today() between sem_beginn and sem_ende;^ 48002^Fächer^30^0^0^130^200^6^integer^1000^0^12^<> select tid,name,sortnr from sichten where art='Fächer-Sicht' order by 3,2;^ ^ ^ -48003^Abschluss^40^0^0^100^200^3^char^1500^0^1^<> select apnr, druck from cifx where key=35 order by 2;^ ^ ^ +48003^Abschluss^40^0^0^100^200^3^char^1500^0^12^<> select tid,name,sortnr from sichten where art='SOS-Abschluss-Sicht' order by 3,2;^ ^ ^ 48004^bis Fachsemester^1000^300^-1^200^100^1^integer^30^0^0^^ ^ ^ 48005^Semestertyp^22^350^-1^140^80^1^integer^255^0^1^<> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^ ^<> select 2,'nur Wintersemester' from xdummy^ 48006^Hochschulzugangsberechtigung^120^300^-1^200^200^1^sql^30^0^1^hs_zugangsber^ ^ ^ diff --git a/src-modules/module/rpta/masken/48000_maskeninfo.unl b/src-modules/module/rpta/masken/48000_maskeninfo.unl index e6bb60d..546f22a 100644 --- a/src-modules/module/rpta/masken/48000_maskeninfo.unl +++ b/src-modules/module/rpta/masken/48000_maskeninfo.unl @@ -114,7 +114,6 @@ and substring('' || tid from 5 for 1)='<>'\ /* and stichtag = <> */\ /* and <> */\ /* and <>*/\ -/* and abschluss in (<>) */\ /* and geschlecht = <> */\ /* and fach_sem_zahl <= <> */\ /* and substring('' || sem_rueck_beur_ein from 5 for 1)='<>' */\ @@ -129,6 +128,7 @@ and substring('' || tid from 5 for 1)='<>'\ <#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \ /* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<> */\ /* <#assign filter = filter + " and stg in "+Fächer.allNeededKeysList /> --<> */\ +/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in "+Abschluss.allNeededKeysList +")" /> --<> */\ \ <#if columns?has_content>\ \ @@ -145,7 +145,7 @@ and ${filter}\ \ \ \ -<@rpta_interpret_column_layout />\ +<@rpta_interpret_column_layout nonvirtualTableFilter=filter/>\ \ --wenn columns?has_content^--Freemarker Template\ XIL List\ diff --git a/src-modules/module/rpta/masken/48080_felderinfo.unl b/src-modules/module/rpta/masken/48080_felderinfo.unl index 1632a68..a331f76 100644 --- a/src-modules/module/rpta/masken/48080_felderinfo.unl +++ b/src-modules/module/rpta/masken/48080_felderinfo.unl @@ -1,6 +1,6 @@ 48080^Institution (Stelle)^1^0^0^150^150^0^char^30^0^12^<>select tid,type,name,sortnr from sichten where art in ('SVA-Kostenstellen-Sicht','SVA-spez-Besch./Kostenstellen-Sicht','SVA-spez-Kostenstellen-Sicht') and aktiv=1 order by sortnr,type,name;^^^ 48081^Datum^0^350^-1^150^80^1^date^10^1^0^^^<> select today() from xdummy^ -48082^Stellenkategorie^2^0^0^150^150^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Kategorie' and aktiv=1 order by type,name;^hidden^^ +48082^Stellenkategorie^2^0^0^150^150^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Kategorie' and aktiv=1 order by type,name;^ ^^ 48083^Spalten^3001^0^0^150^190^10^char^30^0^1^<>\ select C.uniquename, C.caption ,L.layout_id from rpta_column C, rpta_column2layout L where C.tid=L.column_id and layout_id in\ (select tid from rpta_column_layout where tid=<>) order by 2;^^^ @@ -24,12 +24,12 @@ and R.systeminfo_id=6)\ order by sortnr, caption\ limit 1 \ ;^ -48091^Filter Stellen^120^350^-1^150^150^1^sql^20^0^1^<> select id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SVA_STELL_FILTER' order by 2;^hidden^^ +48091^Filter Stellen^120^350^-1^150^150^1^sql^20^0^1^<> select id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SVA_RPTA_STELL_FILTER' order by 2;^ ^^ 48092^Dienstart^3^350^-1^150^150^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Dienstart' and aktiv=1 order by type,name;^hidden^^ 48093^BVL-Gruppe (Stelle)^74^0^0^150^120^10^char^30^0^12^<>select tid,type,name from sichten where art ='SVA BVL-Gruppen' and aktiv=1 order by type,name;^hidden^^ 48094^BVL-Gruppe (Person)^80^350^-1^150^120^10^char^30^0^12^<>select tid,type,name from sichten where art ='SVA BVL-Gruppen' and aktiv=1 order by type,name;^hidden^^ 48095^Filter Besetzung^130^0^0^150^150^1^sql^20^0^1^<> select id,caption from sx_repository where aktiv =1 and today() between gueltig_seit and gueltig_bis and art='SVA_BESETZ_FILTER' order by 2;^hidden^^ -48096^Finanzierungsquelle^302^0^0^100^200^3^char^30^0^1^<> select id,caption from sx_repository where art='SVA_FINANZIERUNGSQUELLE' and aktiv=1 and gueltig_seit<=date_val(<>) and gueltig_bis>=date_val(<>) order by sort1^hidden^^ +48096^Besetzung anzeigen^150^0^0^150^120^1^sql^30^1^1^<> select 'z','einschl. zukünftige' from xdummy union select 'a','nur aktuelle' from xdummy;^^<>select 'z','einschl. zukünftige' from xdummy^ 48097^Personalkategorie^310^0^0^100^200^3^char^30^0^1^<> select id,caption from sx_repository where art='SVA_PERSONALKATEGORIE' and aktiv=1 and gueltig_seit<=date_val(<>) and gueltig_bis>=date_val(<>) order by sort1^hidden^^ -48098^Stellenanzeige^1000^0^0^100^200^1^char^20^0^1^<> select 'besetzt','nur besetzte' from xdummy union select 'frei','nur freie' from xdummy^hidden^^ +48098^Stellenanzeige^1000^0^0^100^200^1^char^20^0^1^<> select 'besetzt','nur besetzte' from xdummy union select 'frei','nur freie' from xdummy union select 'z','einschl. zukünftige' from xdummy^ ^<> select 'z','einschl. zukünftige' from xdummy^ 48099^Stellen-Nr. im HHPlan^52^350^-1^150^80^1^char^25^0^0^^^^ diff --git a/src-modules/module/rpta/masken/48080_maskeninfo.unl b/src-modules/module/rpta/masken/48080_maskeninfo.unl index eeaa0af..c52a626 100644 --- a/src-modules/module/rpta/masken/48080_maskeninfo.unl +++ b/src-modules/module/rpta/masken/48080_maskeninfo.unl @@ -64,8 +64,13 @@ order by CL.sortnr\ \ \ <#assign filter="sva_sgd_aggr.d_gueltig_anfang <= date_val(<>) \ - and sva_sgd_aggr.d_gueltig_ende >= date_val(<>)\ - \ + and sva_sgd_aggr.d_gueltig_ende >= date_val(<>) "/>\ +\ +<#if "<>"="'z'">\ + <#assign filter="sva_sgd_aggr.d_gueltig_ende >= date_val(<>) "/>\ +\ + \ +<#assign filter = filter + "\ /* and sva_sgd_aggr.ca115_haushverm in <@printkeys .vars["Haushaltsvermerk"].allNeededKeys /> -- <> */\ /* and sva_sgd_aggr.ca107_dienstart in <@printkeys .vars["Dienstart"].allNeededKeys /> --<>= */\ /* and sva_sgd_aggr.ca259_kategorie in <@printkeys .vars["Stellenkategorie"].allNeededKeys /> -- <> */\ @@ -81,7 +86,14 @@ order by CL.sortnr\ <#assign filter = filter + "and sva_sgd_aggr.haushalt_nr like '"+hn+"%'" />\ \ \ -\ +<#if "<>"="'besetzt'">\ +<#assign filter = filter + " and 0 < (select count(*) from sva_pbe_aggr PB where S.stellen_nr =PB.stellen_nr and date_val(<>) between PB.d_besetz_anfang \ + and PB.d_besetz_ende )" />\ +\ +<#if "<>"="'frei'">\ +<#assign filter = filter + " and 0 = (select count(*) from sva_pbe_aggr PB where S.stellen_nr =PB.stellen_nr and date_val(<>) between PB.d_besetz_anfang \ + and PB.d_besetz_ende )" />\ +\ \ <#assign filter = filter + " and sva_sgd_aggr.ch110_besch_st in "+.vars["Institution (Stelle)"].allNeededKeysList /> \ \ @@ -101,8 +113,13 @@ and ${filter}\ \ --Daten außerhalb des Berichtszeitraums entfernen:\ delete from ${basetable.runtime_tablename}\ -where sva_pbe_aggr_d_besetz_anfang > date_val(<>)\ -or sva_pbe_aggr_d_besetz_ende < date_val(<>);\ +where <#if '<>'='a'>\ +--nur aktuelle, ohne zukünftig:\ +sva_pbe_aggr_d_besetz_anfang > date_val(<>)\ +or \ +\ +sva_pbe_aggr_d_besetz_ende < date_val(<>)\ +;\ \ select \ --zuerst die Basisdaten:\ diff --git a/src-modules/module/rpta/masken/48250_felderinfo.unl b/src-modules/module/rpta/masken/48250_felderinfo.unl new file mode 100644 index 0000000..c1a3f6b --- /dev/null +++ b/src-modules/module/rpta/masken/48250_felderinfo.unl @@ -0,0 +1,29 @@ +48250^Beschäftigungsstelle (Person)^1^0^0^200^150^1^char^30^0^12^<>select tid,type,name,sortnr from sichten where art in ('SVA-Kostenstellen-Sicht','SVA-spez-Besch./Kostenstellen-Sicht') and aktiv=1 order by sortnr,type,name;^^^ +48251^Datum^0^350^-1^150^80^1^date^10^1^0^^^<> select today() from xdummy^ +48252^Vertragsart^10^380^-1^200^160^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA-Vertragsart-Sicht' and aktiv=1 order by type,name;^^^ +48253^Spalten^3001^0^0^150^190^10^char^30^0^1^<>\ +select C.uniquename, C.caption ,L.layout_id from rpta_column C, rpta_column2layout L where C.tid=L.column_id and layout_id in\ +(select tid from rpta_column_layout where tid=<>) order by 2;^^^ +48254^Geschlecht^81^310^-1^100^70^1^integer^4^0^1^<> SELECT apnr,druck FROM cif where key = 9003 and apnr between 1 and 4 order by 1;^^^ +48255^Personal-Nr.^50^350^-1^150^80^1^integer^10^0^0^^^^ +48256^Amtsbezeichnung^55^0^0^150^160^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Amtsdienstbez.' and aktiv=1 order by type,name;^hidden^^ +48258^Kostenstelle (Person)^70^350^-1^150^150^1^char^30^0^12^<> select tid,type,name,sortnr from sichten where art in ('SVA-Kostenstellen-Sicht','SVA-spez-Kostenstellen-Sicht','SVA-Kst-spezial') and aktiv=1 order by sortnr,type,name;^hidden^^ +48259^Alter (bis)^21^170^-1^100^70^1^integer^5^0^0^^^^ +48260^Spaltenlayout^3000^350^-1^140^180^1^integer^50^1^1^<>SELECT tid,\ + caption\ +FROM rpta_column_layout \ +where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sva_pbv_aggr_pgd'\ +and R.systeminfo_id=6)\ +order by sortnr, caption\ + ;^^<>SELECT tid,\ + caption\ +FROM rpta_column_layout \ +where resultset_id in (select R.tid from rpta_resultset R where R.uniquename='sva_pbv_aggr_pgd'\ +and R.systeminfo_id=6)\ +order by sortnr, caption\ +limit 1 \ + ;^ +48262^Dienstart^3^350^-1^150^150^3^char^30^0^12^<>select tid,type,name from sichten where art ='SVA Dienstart' and aktiv=1 order by type,name;^hidden^^ +48264^BVL-Gruppe^80^350^-1^150^120^10^char^30^0^12^<>select tid,type,name from sichten where art ='SVA BVL-Gruppen' and aktiv=1 order by type,name;^hidden^^ +48267^Personalkategorie^310^0^0^100^200^3^char^30^0^1^<> select id,caption from sx_repository where art='SVA_PERSONALKATEGORIE' and aktiv=1 and gueltig_seit<=date_val(<>) and gueltig_bis>=date_val(<>) order by sort1^hidden^^ +48269^Alter (von)^20^0^0^80^70^1^integer^4^0^0^^^^ diff --git a/src-modules/module/rpta/masken/48250_maske_system_bez.unl b/src-modules/module/rpta/masken/48250_maske_system_bez.unl new file mode 100644 index 0000000..f7e6175 --- /dev/null +++ b/src-modules/module/rpta/masken/48250_maske_system_bez.unl @@ -0,0 +1 @@ +48250^6^ diff --git a/src-modules/module/rpta/masken/48250_masken_felder_bez.unl b/src-modules/module/rpta/masken/48250_masken_felder_bez.unl new file mode 100644 index 0000000..4195fb8 --- /dev/null +++ b/src-modules/module/rpta/masken/48250_masken_felder_bez.unl @@ -0,0 +1,14 @@ +48250^48250^ +48250^48251^ +48250^48252^ +48250^48253^ +48250^48254^ +48250^48255^ +48250^48256^ +48250^48258^ +48250^48259^ +48250^48260^ +48250^48262^ +48250^48264^ +48250^48267^ +48250^48269^ diff --git a/src-modules/module/rpta/masken/48250_maskeninfo.unl b/src-modules/module/rpta/masken/48250_maskeninfo.unl new file mode 100644 index 0000000..9e5e666 --- /dev/null +++ b/src-modules/module/rpta/masken/48250_maskeninfo.unl @@ -0,0 +1,122 @@ +48250^Beschäftigungsverhältnisse^--Freemarker Template\ +<#include "SQL_lingua_franca"/>\ +<#include "SuperX_general"/>\ +--\ +--Autor D. Quathamer 2024\ +\ +\ +SELECT distinct name,\ +0::smallint as is_virtual,\ +name as runtime_tablename\ + from sx_tables\ + where name in ('${my_base_rs}')\ + and 0=(select count(*) from rpta_resultset R where R.uniquename='${my_base_rs}')\ + union\ + select R.uniquename,\ + 1::smallint as is_virtual,\ + 'tmp_' || R.uniquename as runtime_tablename\ + from rpta_resultset R where R.uniquename='${my_base_rs}'\ + ;\ + ]]>\ +\ +\ +>;\ +\ +]]>\ +>\ +/* and C.uniquename in (<>) */\ +order by CL.sortnr\ + ;\ +]]>\ +\ +\ +<#assign filter="sva_pbv_aggr.d_besch_von <= date_val(<>) \ + and sva_pbv_aggr.d_besch_bis >= date_val(<>) "/>\ +\ +<#assign filter= filter + "\ + and sva_pbv_aggr.ch110_besch_st in "+.vars["Beschäftigungsstelle (Person)"].allNeededKeysList + "\ +/* and kapitel = <> */\ +/* and titel = <> */\ +/* and d_befristung <= date_val(<>)*/\ +/* and teilzeitart in (<>) */\ +/* and ca501_staat <> */\ +/* and geschlecht= <> */\ +/* and ${<>} */\ +" />\ +\ +/* <#assign filter = filter + " and sva_pbv_aggr.kostenstelle in "+.vars["Kostenstelle (Person)"].allNeededKeysList /> -- <> */\ +/* <#assign filter = filter + " and sva_pbv_aggr.ca107_dienstart in "+.vars["Dienstart"].allNeededKeysList /> -- <> */\ +/* <#assign filter = filter + " and sva_pbv_aggr.ca108_amtsbez in "+.vars["Amtsbezeichnung"].allNeededKeysList /> -- <> */\ +/* <#assign filter = filter + " and sva_pbv_aggr.ch212_geldgeber in "+.vars["Geldgeber"].allNeededKeysList /> -- <> */\ +/* <#assign filter = filter + " and sva_pbv_aggr.vertart in "+.vars["Vertragsart"].allNeededKeysList /> -- <> */\ +\ +\ +\ + \ +\ +<#if columns?has_content>\ +\ +\ +<#if basetable.is_virtual==1>\ +\ +create temp table ${basetable.runtime_tablename} as\ +select ${rpta_resultset.fieldclause} \ +from ${rpta_resultset.joinclause} \ +where 1=1\ +<#if rpta_resultset.whereclause != ""> \ +${rpta_resultset.whereclause} \ +and ${filter}\ +;\ +\ +\ +\ +<@rpta_interpret_column_layout nonvirtualTableFilter=filter/>\ +\ + --wenn columns?has_content^--Freemarker Template\ + XIL List\ + sizable_columns horizontal_scrolling\ + drop_and_delete movable_columns \ + white_space_color=COLOR_WHITE fixed_columns=1\ + min_heading_height=55\ +<#foreach column in columns>\ +<#if column.is_visible!=0>\ +Column CID=0 heading_text="${column.caption}" center_heading explanation="${column.description}"\ + row_selectable heading_platform readonly\ + width=${column.visible_width} text_size=60\ +\ +\ +@@@^^^Informationen über Stellen und deren Besetzung zu einem bel. Zeitpunkt^ ^^2^700^500^^1^<> select 'Achtung: Das Datum des Buttons Institution bzw OrgEinheit (Stelle) unterscheidet sich vom ausgewählten Datum im Maskenfeld.' from xdummy where <> != date_val(<>)^ diff --git a/src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl b/src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl new file mode 100644 index 0000000..77e1bbc --- /dev/null +++ b/src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl @@ -0,0 +1 @@ +100^48250^ diff --git a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl index 8f49b9d..fb4eff6 100644 --- a/src-modules/module/rpta/schluesseltabellen/fm_templates.unl +++ b/src-modules/module/rpta/schluesseltabellen/fm_templates.unl @@ -1,4 +1,4 @@ -116^RPTA-Makros^<#macro rpta_column_layout_fuellen>\ +91^RPTA-Makros^<#macro rpta_column_layout_fuellen>\ CREATE temp TABLE tmp_rpta_column\ (\ uniquename varchar(255) NOT NULL,\ @@ -262,7 +262,7 @@ drop TABLE tmp_rpta_column_layout;\ drop TABLE tmp_rpta_column2layout;\ \ \ -<#macro rpta_interpret_column_layout>\ +<#macro rpta_interpret_column_layout nonvirtualTableFilter>\ select \ --zuerst die Basisdaten:\ <#foreach column in columns>\ @@ -281,8 +281,12 @@ drop TABLE tmp_rpta_column2layout;\ null::char(1) as dummycol\ into temp tmp_stud\ from ${basetable.runtime_tablename}\ + where 1=1 \ <#if rpta_column_layout.whereclause !="">\ - where ${rpta_column_layout.whereclause}\ + and ${rpta_column_layout.whereclause}\ + \ + <#if basetable.is_virtual==0>\ + and ${nonvirtualTableFilter}\ \ ;\ \ diff --git a/src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql b/src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql new file mode 100644 index 0000000..b6206a3 --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql @@ -0,0 +1,472 @@ + +--freemarker template + + +select sp_table_exists('sva_pbv_aggr') from xdummy; + + +select name + from sx_tables where name ='sva_pbv_aggr' + + + + +select tid, table_name, + name, + name as targetname + from sx_fields where table_name ='${fact_table_source}' + and currentlyused=1 + + union + + select tid,table_name, + name, + 'sva_pgd_' || name as targetname + from sx_fields where table_name ='sva_pgd' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_paz_' || name as targetname + from sx_fields where table_name ='sva_paz' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_pfi_' || name as targetname + from sx_fields where table_name ='sva_pfi' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_k_vertragsart_' || name as targetname + from sx_fields where table_name ='sva_k_vertragsart' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_k_dienstart_' || name as targetname + from sx_fields where table_name ='sva_k_dienstart' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_k_funktionsart_' || name as targetname + from sx_fields where table_name ='sva_k_funktionsart' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_k_amtsdienst_' || name as targetname + from sx_fields where table_name ='sva_k_amtsdienst' + and currentlyused=1 + union + select tid,table_name, + name, + 'sva_k_bvlgruppe_' || name as targetname + from sx_fields where table_name ='sva_k_bvlgruppe' + and currentlyused=1 + order by 1 + +]]> + + + +<#if sva_pbv_aggr_exists==1 && fact_table_source?exists > + +<#assign fact_table_target = {"name":"sva_pbv_aggr_pgd", "caption":"Personal"} + /> + + +CREATE temp table tmp_tables( +name CHAR(255) , +caption CHAR(255) , +description CHAR(255) , +table_type CHAR(255) , +systeminfo_id INTEGER , +systeminfo_orig INTEGER , +thema CHAR(255) , +sachgebiete_id CHAR(255) +); +CREATE temp TABLE tmp_fields( +tid serial NOT NULL, +table_name VARCHAR(255) not null, +name VARCHAR(255) not null, +caption VARCHAR(255) , +description VARCHAR(255) , +field_type VARCHAR(255) not null, +field_size VARCHAR(255) , +field_not_null smallint, +currentlyused SMALLINT , +is_primarykey SMALLINT default 0 , +foreignkey_tab VARCHAR(255) , +foreignkey_col VARCHAR(255) , +foreignkey_int VARCHAR(255) , +foreignkey_cap VARCHAR(255) , +foreignkey_cond VARCHAR(255) , +foreignkey_func VARCHAR(255) , +check_integrity SMALLINT, +is_sum SMALLINT default 1, +foreignkey_uniquename VARCHAR(255) + +); + + + +update sx_fields set + is_sum=0 + where table_name='sva_pbv_aggr' + and name!='vzae'; +update sx_fields set + is_sum=1 + where table_name='sva_pbv_aggr' + and name='vzae'; + + +insert into tmp_tables ( +name, +caption, +description, +table_type, +systeminfo_id, +thema, +sachgebiete_id +) +select +'${fact_table_target.name}', +'${fact_table_target.caption}', +description, +table_type, +systeminfo_id, +thema, +sachgebiete_id +from sx_tables where name='${fact_table_source}' +; + + +insert into tmp_fields (table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename) +select '${fact_table_target.name}' as table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename + from sx_fields where table_name ='${fact_table_source}' + and currentlyused=1; +<#foreach added_table in added_tables> +insert into tmp_fields (table_name, + name, + caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename) +select '${fact_table_target.name}' as table_name, + '${added_table.prefix}' || name, + '${added_table.caption}: ' || caption, + description, + field_type, + field_size, + field_not_null, + currentlyused, + is_primarykey, + foreignkey_tab, + foreignkey_col, + foreignkey_int, + foreignkey_cap, + foreignkey_cond, + foreignkey_func, + check_integrity, + is_sum, + foreignkey_uniquename + from sx_fields where table_name ='${added_table.name}' + and currentlyused=1; + + +CREATE temp TABLE tmp_rpta_resultset +( + caption varchar(255), + uniquename varchar(255), + fieldclause text, + joinclause text, + whereclause text, + systeminfo_id integer +); + +insert into tmp_rpta_resultset(caption, + uniquename, + systeminfo_id) + select '${fact_table_target.caption}', + '${fact_table_target.name}', + 6 +; + + +update tmp_rpta_resultset set fieldclause=' +<#foreach field_target in fields_target> +${field_target.table_name}.${field_target.name} as ${field_target.targetname}, + +null::varchar as dummy', +joinclause='${fact_table_source} +<#foreach added_table in added_tables> +left outer join ${added_table.name} on (${added_table.joinclause}) +'; + +select * into temp tmp_rs1 +from rpta_resultset +; + +update rpta_resultset set caption=T.caption, + fieldclause=T.fieldclause, + joinclause=T.joinclause, + whereclause=T.whereclause + from tmp_rpta_resultset T + where T.systeminfo_id=rpta_resultset.systeminfo_id + and T.uniquename=rpta_resultset.uniquename + ; + +insert into rpta_resultset(caption, + uniquename, + fieldclause, + joinclause, + whereclause, + systeminfo_id) +select caption, + uniquename, + fieldclause, + joinclause, + whereclause, + systeminfo_id + from tmp_rpta_resultset + where 0=(select count(*) + from tmp_rs1 T + where T.systeminfo_id=tmp_rpta_resultset.systeminfo_id + and T.uniquename=tmp_rpta_resultset.uniquename) + ; +drop table tmp_rpta_resultset; +drop table tmp_rs1; + +delete from sx_tables where name +in (select T.name from tmp_tables T); + +insert into sx_tables (name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id) +select name,caption,description,table_type,systeminfo_id,systeminfo_orig,thema,sachgebiete_id +from tmp_tables; + + +delete from sx_fields where table_name +in (select T.table_name from tmp_fields T); + +insert into sx_fields (table_name,name,caption,description,field_type, +field_size, +field_not_null, +currentlyUsed, +foreignkey_tab, +foreignkey_col, +foreignkey_cap, +foreignkey_int, +foreignkey_cond, +foreignkey_func, +check_integrity, +is_sum, +foreignkey_uniquename +) +select +F.table_name,F.name,F.caption,F.description,F.field_type, +F.field_size, +F.field_not_null, +F.currentlyUsed, +F.foreignkey_tab, +F.foreignkey_col, +F.foreignkey_cap, +F.foreignkey_int, +F.foreignkey_cond, +F.foreignkey_func, +F.check_integrity, +F.is_sum, +F.foreignkey_uniquename + +from tmp_fields F; + + +drop table tmp_fields; +drop table tmp_tables; + + +--rpta_column füllen: +select * into temp tmp_rc1 +from rpta_column; + + +create temp table tmp_rpta_column( + uniquename varchar(255) NOT NULL, + caption varchar(255), + srcfieldname varchar(255), + column_type integer, + col_function text, + is_aggregate smallint, + resultset_id integer, + description text, + custom integer default 0 + ); + +insert into tmp_rpta_column( uniquename, + caption, + srcfieldname, + column_type, + col_function, + is_aggregate, + resultset_id, + description) + select F.name as uniquename, + coalesce(T.caption,T.name) || ' - ' || F.caption, + F.name as srcfieldname, + 1 as column_type, + (case when F.is_sum=1 then 'sum' else null::varchar end) as col_function, + (case when F.is_sum=1 then 1 else 0 end) as is_aggregate, + R.tid as resultset_id, + F.description +from rpta_resultset R, sx_fields F left outer join sx_tables T on (T.name=F.table_name) +where F.table_name='${fact_table_target.name}' +and R.uniquename='${fact_table_target.name}' +and F.currentlyused=1 +; + +update rpta_column set + caption=T.caption, + srcfieldname=T.srcfieldname, + column_type=T.column_type, + col_function=T.col_function, + is_aggregate=T.is_aggregate, + resultset_id=R.tid, + description=T.description, + custom=T.custom + from tmp_rpta_column T, rpta_resultset R +where T.uniquename=rpta_column.uniquename +and rpta_column.resultset_id=R.tid +and R.uniquename='${fact_table_target.name}' +; +insert into rpta_column( uniquename, + caption, + srcfieldname, + column_type, + col_function, + is_aggregate, + resultset_id, + description, + custom) +select T.uniquename, +T.caption, +T.srcfieldname, +T.column_type, +T.col_function, +T.is_aggregate, +R.tid as resultset_id, +T.description, +T.custom + from tmp_rpta_column T, rpta_resultset R + where R.uniquename='${fact_table_target.name}' + and 0=(select count(*) from tmp_rc1 C + where C.uniquename=T.uniquename + and C.resultset_id=R.tid) + ; + +drop table tmp_rpta_column; +drop table tmp_rc1; + + --wenn sva_pbv_aggr_exists=1 diff --git a/src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql new file mode 100644 index 0000000..c26d0a6 --- /dev/null +++ b/src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql @@ -0,0 +1,63 @@ +--freemarker template +<#include "RPTA-Makros"/> + + +select count(*) from systeminfo where tid=330; + + +<#assign rpta_column_layout = {"uniquename":"pbv_dm_kurz", +"caption":"Personal Drittmittel", +"rpta_resultset":"sva_pbv_aggr_pgd", +"whereclause":"", +"description":"VZÄ nach Geldgeber Drittmittel ja/nein" +} + /> + +<#assign rpta_columns = [ +{"uniquename":"ch110_besch_st", +"caption":"Beschäftigungsstelle (Schlüssel)", +"srcfieldname":"ch110_besch_st", +"column_type":"physicalColumn", +"col_function":"", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Beschäftigungsstelle (Schlüssel)" +}, +{"uniquename":"ch110_besch_st_str", +"caption":"Beschäftigungsstelle", +"srcfieldname":"ch110_besch_st_str", +"column_type":"lookupColumn", +"col_function":"select C.druck from cifx C where C.key=110 and C.apnr=ch110_besch_st", +"is_visible":"1", +"visible_size":"10", +"is_aggregate":"0", +"description":"Beschäftigungsstelle (Name)" +}, +{"uniquename":"drittmittel", +"caption":"Drittmittel", +"srcfieldname":"drittmittel", +"targetfieldname":"drittmittel_str", +"column_type":"logicalColumn", +"col_function":"(case when drittmittel=1 then ''ja'' else ''nein'' end)::varchar", +"is_visible":"1", +"visible_size":"2", +"is_aggregate":"0", +"description":"Finanzierung aus Drittmitteln" +}, +{"uniquename":"vzae", +"caption":"VZÄ (Beschäftigung)", +"srcfieldname":"vzae", +"column_type":"physicalColumn", +"col_function":"sum", +"is_visible":"1", +"visible_size":"5", +"is_aggregate":"1", +"description":"" +} +] + /> + +<#if rpta_installed==1> +<@rpta_column_layout_fuellen /> + diff --git a/superx/xml/rpta_groupLayout.xml b/superx/xml/rpta_groupLayout.xml new file mode 100644 index 0000000..01f9299 --- /dev/null +++ b/superx/xml/rpta_groupLayout.xml @@ -0,0 +1,4 @@ + + + + diff --git a/superx/xml/rpta_templates.xsl b/superx/xml/rpta_templates.xsl index 8fbf400..0b11e01 100644 --- a/superx/xml/rpta_templates.xsl +++ b/superx/xml/rpta_templates.xsl @@ -4,6 +4,8 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://jasperreports.sourceforge.net/jasperreports"> +' +" @@ -24,7 +26,9 @@ xmlns="http://jasperreports.sourceforge.net/jasperreports"> - + + + @@ -52,8 +56,10 @@ bottomMargin="{$bottomMargin}" isIgnorePagination="{$runTimePagination}" > - - + + + + @@ -78,12 +84,65 @@ isIgnorePagination="{$runTimePagination}" > - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -98,15 +157,19 @@ isIgnorePagination="{$runTimePagination}" > treeTable + +simple + listAlternatingBg - + - + @@ -155,6 +218,20 @@ isIgnorePagination="{$runTimePagination}" > + + + + + + + + + + + + + + @@ -263,6 +340,63 @@ isIgnorePagination="{$runTimePagination}" > + + + + + + +Fülle für + + + + + + + + + + + + + + + + + + + + + + + + + + + +true + + +false + + + + + + + + + + + + + + @@ -492,6 +626,9 @@ isIgnorePagination="{$runTimePagination}" > weil es Rundungsfehler bei der Spaltenbreite geben kann.--> + +0 + @@ -543,7 +680,14 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> + + + + + + + @@ -590,7 +734,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> - + + + + +Group + +Now + + + + + + + @@ -598,6 +755,7 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> + @@ -608,10 +766,34 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> - - - - + + + + + + + + + + + + + + ' + + + ' + + + '' + + + + + + + + @@ -622,6 +804,8 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> + + @@ -633,15 +817,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> "" - + - + - + +": "+ @@ -751,6 +940,8 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> + + @@ -772,6 +963,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> + @@ -798,6 +990,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> + @@ -813,7 +1006,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> - + @@ -835,11 +1028,254 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +1 + + +2 + + + + + + +simple + + + + + + + + + + + + + +true + + +false + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -906,11 +1342,28 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> + + + + + + + + + + + + + + + + + <band height="75"> @@ -920,7 +1373,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> </textField> <textField> <reportElement style="ReportTitle" x="0" y="30" width="{$druckbreite}" height="45" /> - <textFieldExpression><![CDATA[$F{Berichtsname}]]></textFieldExpression> + <textFieldExpression><xsl:value-of select="$ReportTitle" /></textFieldExpression> </textField> </band> @@ -978,7 +1431,19 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> <xsl:when test="$flavorTableRowStyle='treeTable'"> <xsl:value-of select="concat('TableRowLevel',$tableRowLevel)" /> </xsl:when> -<xsl:otherwise></xsl:otherwise> +<xsl:when test="$flavorTableRowStyle='simple'"> +<xsl:choose> +<xsl:when test="$tableRowLevel=''"> +<xsl:text>TableRowStandard</xsl:text> +</xsl:when> +<xsl:otherwise> +<xsl:value-of select="concat('TableRowLevel',$tableRowLevel)" /> +</xsl:otherwise> +</xsl:choose> +</xsl:when> +<xsl:otherwise> +<xsl:text><!--other styles possible--></xsl:text> +</xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template name="querystring"> @@ -1220,4 +1685,109 @@ d.h. genau ein "+" bedeutet, dass es die letzte Spalte ist. </band> </pageFooter> </xsl:template> +<xsl:template name="sumLabel" > +<xsl:param name="level" /> +<xsl:choose> +<xsl:when test="$level=1"> +<xsl:text>Gesamtsumme</xsl:text> +</xsl:when> +<xsl:otherwise> +<xsl:text>Summe</xsl:text> +</xsl:otherwise> +</xsl:choose> +</xsl:template> +<xsl:template name="isFieldDeclaredInGroupBand"> +<xsl:param name="fieldName" /> +<xsl:param name="groupbyField" /> +<xsl:param name="groupLayoutElem" /> +<xsl:param name="headerOrFooter" /> +<xsl:choose> +<xsl:when test="$headerOrFooter='header'"> +<xsl:choose> +<xsl:when test="count($groupLayoutElem/groupLayout/group/header/field[@name=$fieldName])=0"> +<xsl:text>false</xsl:text> +</xsl:when> +<xsl:otherwise> +<xsl:text>true</xsl:text> +</xsl:otherwise> +</xsl:choose> +</xsl:when> +<xsl:when test="$headerOrFooter='footer'"> +<xsl:choose> +<xsl:when test="count($groupLayoutElem/groupLayout/group/footer/field[@name=$fieldName])=0"> +<xsl:text>false</xsl:text> +</xsl:when> +<xsl:otherwise> +<xsl:text>true</xsl:text> +</xsl:otherwise> +</xsl:choose> +</xsl:when> +<xsl:otherwise> +<xsl:text>false</xsl:text> +</xsl:otherwise> +</xsl:choose> + +</xsl:template> +<xsl:template name="getDeclaredWidthInGroupBand"> +<xsl:param name="fieldName" /> +<xsl:param name="groupbyField" /> +<xsl:param name="groupLayoutElem" /> +<xsl:param name="headerOrFooter" /> +<xsl:param name="druckbreite"/> +<xsl:param name="std_spaltenbreite" /> +<xsl:param name="ergebniselementOrdnr" select="'0'"/> +<xsl:param name="colCount" /> +<xsl:param name="previousX"/> + +<xsl:variable name="replacesFieldName"> +<xsl:choose> +<xsl:when test="$headerOrFooter='header'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group/header/field[@name=$fieldName]/@replaces"/> +</xsl:when> +<xsl:when test="$headerOrFooter='footer'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group/footer/field[@name=$fieldName]/@replaces"/> +</xsl:when> +<xsl:otherwise> +</xsl:otherwise> +</xsl:choose> +</xsl:variable> +<xsl:call-template name="getColumnwidth"> +<xsl:with-param name="druckbreite" select="$druckbreite"/> +<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite"/> +<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/> +<xsl:with-param name="colId" select="/ergebnisse/ergebnis[@ordnr=$ergebniselementOrdnr]/ergebniselement/sqlerg/complete_headers/header[wert=$replacesFieldName]/@id" /> +<xsl:with-param name="colCount" select="$colCount"/> +<xsl:with-param name="previousX" select="$previousX"/> +</xsl:call-template> +<!-- +<xsl:choose> +<xsl:when test="$headerOrFooter='header'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group/header/field[@name=$fieldName]/@width"/> +</xsl:when> +<xsl:when test="$headerOrFooter='footer'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group/footer/field[@name=$fieldName]/@width"/> +</xsl:when> +<xsl:otherwise> +<xsl:text>0</xsl:text> +</xsl:otherwise> +</xsl:choose> +--> +</xsl:template> +<xsl:template name="getDeclaredFieldPrefixInGroupBand"> +<xsl:param name="fieldName" /> +<xsl:param name="groupbyField" /> +<xsl:param name="groupLayoutElem" /> +<xsl:param name="headerOrFooter" /> + +<xsl:choose> +<xsl:when test="$headerOrFooter='header'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group[@name=$groupbyField]/header/field[@name=$fieldName]/@prefix"/> +</xsl:when> +<xsl:when test="$headerOrFooter='footer'"> +<xsl:value-of select="$groupLayoutElem/groupLayout/group[@name=$groupbyField]/footer/field[@name=$fieldName]/@prefix"/> +</xsl:when> +<xsl:otherwise> +</xsl:otherwise> +</xsl:choose> +</xsl:template> </xsl:stylesheet> diff --git a/superx/xml/rpta_templates_final.xsl b/superx/xml/rpta_templates_final.xsl new file mode 100644 index 0000000..ca37d3b --- /dev/null +++ b/superx/xml/rpta_templates_final.xsl @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<xsl:stylesheet version="1.0" +xmlns:xsl="http://www.w3.org/1999/XSL/Transform" +xmlns="http://jasperreports.sourceforge.net/jasperreports" +> +<!--In diesem Stylesheet können Sie individuelle templates unterbringen, + die in ihrer Präzedenz das normale Stylesheet + rpta_templates.xsl überragt. --> +</xsl:stylesheet> diff --git a/superx/xml/sx_stylesheets_einfuegen.sql b/superx/xml/sx_stylesheets_einfuegen.sql deleted file mode 100755 index 21fd73a..0000000 --- a/superx/xml/sx_stylesheets_einfuegen.sql +++ /dev/null @@ -1,217 +0,0 @@ ---Freemarker Template ---Achtung: Macro fügt Inhalte ein ---Bitte nur Freemarker Variablen füllen - -<#assign masken = [ -] /> - -<#assign stylesheet = [ -{"filename":"tabelle_jrxml_a4_quer.xsl", -"caption":"Gener. Standardlayout JR (A4 quer)", -"description":"Gener. Standardlayout JR (A4 quer)", -"relation":"table", -"contenttype":"text/xml", -"is_generic":"1", -"toolbar_icon_filepath":"", -"usage_resultset_data":"T", -"stylesheet_type":"XSL_JRXML", -"jr_datasource":"" -}, -{"filename":"rpta_assistent.xsl", -"caption":"Berichtsassistent", -"description":"Export als formatierter Bericht", -"relation":"table", -"contenttype":"text/html", -"is_generic":"1", -"toolbar_icon_filepath":"images/icons/magic.svg", -"usage_resultset_data":"T", -"stylesheet_type":"XSL", -"jr_datasource":"" -} -] /> - -<#assign stylesheet_field = [ - - -] /> - ---Hier eventuell notwendige 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> - - ---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>