Browse Source

Neue virtuelle Tabelle + Maske Beschäftigungsverhältnisse #13

master
Daniel Quathamer 4 days ago
parent
commit
f6ae3305c7
  1. 1
      src-modules/module/rpta/conf/includes.txt
  2. 14
      src-modules/module/rpta/conf/rpta.xml
  3. 10
      src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql
  4. 2
      src-modules/module/rpta/masken/48000_felderinfo.unl
  5. 4
      src-modules/module/rpta/masken/48000_maskeninfo.unl
  6. 8
      src-modules/module/rpta/masken/48080_felderinfo.unl
  7. 27
      src-modules/module/rpta/masken/48080_maskeninfo.unl
  8. 29
      src-modules/module/rpta/masken/48250_felderinfo.unl
  9. 1
      src-modules/module/rpta/masken/48250_maske_system_bez.unl
  10. 14
      src-modules/module/rpta/masken/48250_masken_felder_bez.unl
  11. 122
      src-modules/module/rpta/masken/48250_maskeninfo.unl
  12. 1
      src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl
  13. 10
      src-modules/module/rpta/schluesseltabellen/fm_templates.unl
  14. 472
      src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql
  15. 63
      src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql
  16. 4
      superx/xml/rpta_groupLayout.xml
  17. 606
      superx/xml/rpta_templates.xsl
  18. 9
      superx/xml/rpta_templates_final.xsl
  19. 217
      superx/xml/sx_stylesheets_einfuegen.sql

1
src-modules/module/rpta/conf/includes.txt

@ -8,6 +8,7 @@ WEB-INF/lib/superx-rpta.jar @@ -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

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

@ -342,18 +342,24 @@ parent="Berichtsassistent">Abfragen zur Administration von Berichtsassistent </t @@ -342,18 +342,24 @@ parent="Berichtsassistent">Abfragen zur Administration von Berichtsassistent </t
<path>$RPTA_PFAD/masken</path>
</src>
</maske>
<maske tid="48180" name="Tabellenausgabe Studierende (amtlich und intern) optimiert" thema="Berichtsassistent">
<!--<maske tid="48180" name="Tabellenausgabe Studierende (amtlich und intern) optimiert" thema="Berichtsassistent">
<description>Performance-Optimiert</description>
<src>
<path>$RPTA_PFAD/masken</path>
</src>
</maske>
</maske>-->
<maske tid="48220" name="Management-Bericht Kennzahlen" thema="Berichtsassistent">
<description>Performance-Optimiert</description>
<src>
<path>$RPTA_PFAD/masken</path>
</src>
</maske>
<maske tid="48250" name="Beschäftigungsverhältnisse" thema="Berichtsassistent">
<description></description>
<src>
<path>$RPTA_PFAD/masken</path>
</src>
</maske>
<!--<maske tid="48140" name="Leistungen und Studiengänge (Makro)" thema="Berichtsassistent">
<description>Leistungen und Studiengänge</description>
@ -520,6 +526,7 @@ scriptfile="" database=""/> @@ -520,6 +526,7 @@ scriptfile="" database=""/>
<!--nun sind die Metadaten vorhanden-->
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/studierende_datenblatt_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/stellen_besetzung_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/personal_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/pruefungen_nach_ppruef_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/management_datenblatt_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_exam_unit_dim_studiengang_virtuell.sql" database=""/>
@ -569,6 +576,7 @@ scriptfile="" database=""/> @@ -569,6 +576,7 @@ scriptfile="" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/studierende_datenblatt_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/absolvierende_datenblatt_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/stellen_besetzung_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/personal_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/pruefungen_nach_ppruef_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/management_datenblatt_virtuell.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_exam_unit_dim_studiengang_virtuell.sql" database=""/>
@ -579,6 +587,8 @@ scriptfile="" database=""/> @@ -579,6 +587,8 @@ scriptfile="" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_astat_stip_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_column_layout_sos_stud_astat_stip_meldung_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_column_layout_man_kennz_aggr_studiengang.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql" database=""/>
<nativeaction sql="" scriptfile="$RPTA_PFAD/schluesseltabellen/macro_masken_bez_fuellen.sql" database=""/>
</action>

10
src-modules/module/rpta/hilfstabellen/fill_rpta_resultset.sql

@ -77,7 +77,7 @@ drop table if exists ${basetable.runtime_tablename}; @@ -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}, @@ -85,6 +85,8 @@ ${basetable_column.name},
sum(${basetable_column.name})::float as ${basetable_column.name},
</#if>
</#if>
</#foreach>
creation_date
from tmp_${basetable.runtime_tablename}
@ -101,10 +103,14 @@ drop table 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);
</#if>
</#if>
</#foreach>

2
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 @@ -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^<<SQL>> select tid, eintrag from semester order by tid DESC;^ ^<<SQL>> 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^<<SQL>> 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^<<SQL>> select apnr, druck from cifx where key=35 order by 2;^ ^ ^
48003^Abschluss^40^0^0^100^200^3^char^1500^0^12^<<SQL>> 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^<<SQL>> select 1,'nur Sommersemester' from xdummy union select 2,'nur Wintersemester' from xdummy^ ^<<SQL>> select 2,'nur Wintersemester' from xdummy^
48006^Hochschulzugangsberechtigung^120^300^-1^200^200^1^sql^30^0^1^hs_zugangsber^ ^ ^

4
src-modules/module/rpta/masken/48000_maskeninfo.unl

@ -114,7 +114,6 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\ @@ -114,7 +114,6 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\
/* and stichtag = <<Stichtag>> */\
/* and <<Hochschulzugangsberechtigung>> */\
/* and <<Hörerstatus>>*/\
/* and abschluss in (<<Abschluss>>) */\
/* and geschlecht = <<Geschlecht>> */\
/* and fach_sem_zahl <= <<bis Fachsemester>> */\
/* and substring('' || sem_rueck_beur_ein from 5 for 1)='<<Semestertyp>>' */\
@ -129,6 +128,7 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\ @@ -129,6 +128,7 @@ and substring('' || tid from 5 for 1)='<<Semestertyp>>'\
<#assign filter = filter + " and 's_' || tid_stg in "+Studiengang.allNeededKeysList /> \
/* <#assign filter = filter + " and '' || ca12_staat in "+Staatsangehörigkeit.allNeededKeysList /> --<<Staatsangehörigkeit>> */\
/* <#assign filter = filter + " and stg in "+Fächer.allNeededKeysList /> --<<Fächer>> */\
/* <#assign filter = filter + " and tid_stg in (select L2.tid from lehr_stg_ab L2 where L2.abschluss in "+Abschluss.allNeededKeysList +")" /> --<<Abschluss>> */\
\
<#if columns?has_content>\
\
@ -145,7 +145,7 @@ and ${filter}\ @@ -145,7 +145,7 @@ and ${filter}\
</#if>\
\
\
<@rpta_interpret_column_layout />\
<@rpta_interpret_column_layout nonvirtualTableFilter=filter/>\
\
</#if> --wenn columns?has_content^--Freemarker Template\
XIL List\

8
src-modules/module/rpta/masken/48080_felderinfo.unl

@ -1,6 +1,6 @@ @@ -1,6 +1,6 @@
48080^Institution (Stelle)^1^0^0^150^150^0^char^30^0^12^<<SQL>>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^^^<<SQL>> select today() from xdummy^
48082^Stellenkategorie^2^0^0^150^150^3^char^30^0^12^<<SQL>>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^<<SQL>>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^<<SQL>>\
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=<<Spaltenlayout>>) order by 2;^^^
@ -24,12 +24,12 @@ and R.systeminfo_id=6)\ @@ -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^<<SQL>> 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^<<SQL>> 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^<<SQL>>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^<<SQL>>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^<<SQL>>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^<<SQL>> 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^<<SQL>> select id,caption from sx_repository where art='SVA_FINANZIERUNGSQUELLE' and aktiv=1 and gueltig_seit<=date_val(<<Datum>>) and gueltig_bis>=date_val(<<Datum>>) order by sort1^hidden^^
48096^Besetzung anzeigen^150^0^0^150^120^1^sql^30^1^1^<<SQL>> select 'z','einschl. zukünftige' from xdummy union select 'a','nur aktuelle' from xdummy;^^<<SQL>>select 'z','einschl. zukünftige' from xdummy^
48097^Personalkategorie^310^0^0^100^200^3^char^30^0^1^<<SQL>> select id,caption from sx_repository where art='SVA_PERSONALKATEGORIE' and aktiv=1 and gueltig_seit<=date_val(<<Datum>>) and gueltig_bis>=date_val(<<Datum>>) order by sort1^hidden^^
48098^Stellenanzeige^1000^0^0^100^200^1^char^20^0^1^<<SQL>> 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^<<SQL>> select 'besetzt','nur besetzte' from xdummy union select 'frei','nur freie' from xdummy union select 'z','einschl. zukünftige' from xdummy^ ^<<SQL>> select 'z','einschl. zukünftige' from xdummy^
48099^Stellen-Nr. im HHPlan^52^350^-1^150^80^1^char^25^0^0^^^^

27
src-modules/module/rpta/masken/48080_maskeninfo.unl

@ -64,8 +64,13 @@ order by CL.sortnr\ @@ -64,8 +64,13 @@ order by CL.sortnr\
</sqlvars>\
\
<#assign filter="sva_sgd_aggr.d_gueltig_anfang <= date_val(<<Datum>>) \
and sva_sgd_aggr.d_gueltig_ende >= date_val(<<Datum>>)\
\
and sva_sgd_aggr.d_gueltig_ende >= date_val(<<Datum>>) "/>\
\
<#if "<<Stellenanzeige>>"="'z'">\
<#assign filter="sva_sgd_aggr.d_gueltig_ende >= date_val(<<Datum>>) "/>\
</#if>\
\
<#assign filter = filter + "\
/* and sva_sgd_aggr.ca115_haushverm in <@printkeys .vars["Haushaltsvermerk"].allNeededKeys /> -- <<Haushaltsvermerk>> */\
/* and sva_sgd_aggr.ca107_dienstart in <@printkeys .vars["Dienstart"].allNeededKeys /> --<<Dienstart>>= */\
/* and sva_sgd_aggr.ca259_kategorie in <@printkeys .vars["Stellenkategorie"].allNeededKeys /> -- <<Stellenkategorie>> */\
@ -81,7 +86,14 @@ order by CL.sortnr\ @@ -81,7 +86,14 @@ order by CL.sortnr\
<#assign filter = filter + "and sva_sgd_aggr.haushalt_nr like '"+hn+"%'" />\
</#if>\
\
\
<#if "<<Stellenanzeige>>"="'besetzt'">\
<#assign filter = filter + " and 0 < (select count(*) from sva_pbe_aggr PB where S.stellen_nr =PB.stellen_nr and date_val(<<Datum>>) between PB.d_besetz_anfang \
and PB.d_besetz_ende )" />\
</#if>\
<#if "<<Stellenanzeige>>"="'frei'">\
<#assign filter = filter + " and 0 = (select count(*) from sva_pbe_aggr PB where S.stellen_nr =PB.stellen_nr and date_val(<<Datum>>) between PB.d_besetz_anfang \
and PB.d_besetz_ende )" />\
</#if>\
\
<#assign filter = filter + " and sva_sgd_aggr.ch110_besch_st in "+.vars["Institution (Stelle)"].allNeededKeysList /> \
\
@ -101,8 +113,13 @@ and ${filter}\ @@ -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(<<Datum>>)\
or sva_pbe_aggr_d_besetz_ende < date_val(<<Datum>>);\
where <#if '<<Besetzung anzeigen>>'='a'>\
--nur aktuelle, ohne zukünftig:\
sva_pbe_aggr_d_besetz_anfang > date_val(<<Datum>>)\
or \
</#if>\
sva_pbe_aggr_d_besetz_ende < date_val(<<Datum>>)\
;\
\
select \
--zuerst die Basisdaten:\

29
src-modules/module/rpta/masken/48250_felderinfo.unl

@ -0,0 +1,29 @@ @@ -0,0 +1,29 @@
48250^Beschäftigungsstelle (Person)^1^0^0^200^150^1^char^30^0^12^<<SQL>>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^^^<<SQL>> select today() from xdummy^
48252^Vertragsart^10^380^-1^200^160^3^char^30^0^12^<<SQL>>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^<<SQL>>\
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=<<Spaltenlayout>>) order by 2;^^^
48254^Geschlecht^81^310^-1^100^70^1^integer^4^0^1^<<SQL>> 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^<<SQL>>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^<<SQL>> 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^<<SQL>>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\
;^^<<SQL>>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^<<SQL>>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^<<SQL>>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^<<SQL>> select id,caption from sx_repository where art='SVA_PERSONALKATEGORIE' and aktiv=1 and gueltig_seit<=date_val(<<Datum>>) and gueltig_bis>=date_val(<<Datum>>) order by sort1^hidden^^
48269^Alter (von)^20^0^0^80^70^1^integer^4^0^0^^^^

1
src-modules/module/rpta/masken/48250_maske_system_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
48250^6^

14
src-modules/module/rpta/masken/48250_masken_felder_bez.unl

@ -0,0 +1,14 @@ @@ -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^

122
src-modules/module/rpta/masken/48250_maskeninfo.unl

@ -0,0 +1,122 @@ @@ -0,0 +1,122 @@
48250^Beschäftigungsverhältnisse^--Freemarker Template\
<#include "SQL_lingua_franca"/>\
<#include "SuperX_general"/>\
--\
--Autor D. Quathamer 2024\
<sqlvars>\
<sqlvar name="basetable" type="hash"><![CDATA[\
<#assign my_base_rs='sva_pbv_aggr_pgd' />\
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}'\
;\
]]>\
</sqlvar>\
<sqlvar name="rpta_resultset" type="hash"><![CDATA[\
select caption,\
uniquename,\
fieldclause,\
joinclause,\
whereclause,\
systeminfo_id\
from rpta_resultset\
where uniquename='${basetable.name}';\
\
]]></sqlvar>\
<sqlvar name="rpta_column_layout" type="hash"><![CDATA[\
select L.uniquename,\
L.caption,\
L.whereclause,\
L.sortclause\
from rpta_resultset R, rpta_column_layout L\
where L.resultset_id=R.tid\
and R.uniquename='${basetable.name}'\
and L.tid=<<Spaltenlayout>>;\
\
]]></sqlvar>\
<sqlvar name="columns" type="hashsequence"><![CDATA[\
SELECT C.srcfieldname,\
(case when string_not_null(C.targetfieldname)='' then C.srcfieldname else C.targetfieldname end) as targetfieldname,\
T.uniquename as coltype,\
C.is_aggregate,\
(case when string_not_null(CL.caption)='' then C.caption else CL.caption end) as caption,\
CL.is_visible,\
CL.visible_size as visible_width,\
(select F.sql_code from rpta_format_code F where F.tid=CL.format_code_id) as format_sql,\
C.col_function as colfunction,\
(case when string_not_null(CL.description)='' then C.description else CL.description end) as description\
FROM rpta_column_layout L, rpta_column2layout CL, rpta_column C, rpta_column_type T\
where L.tid=CL.layout_id\
and C.tid=CL.column_id\
and T.tid=C.column_type\
and L.tid=<<Spaltenlayout>>\
/* and C.uniquename in (<<Spalten>>) */\
order by CL.sortnr\
;\
]]></sqlvar>\
</sqlvars>\
\
<#assign filter="sva_pbv_aggr.d_besch_von <= date_val(<<Datum>>) \
and sva_pbv_aggr.d_besch_bis >= date_val(<<Datum>>) "/>\
\
<#assign filter= filter + "\
and sva_pbv_aggr.ch110_besch_st in "+.vars["Beschäftigungsstelle (Person)"].allNeededKeysList + "\
/* and kapitel = <<Kapitel>> */\
/* and titel = <<Titel>> */\
/* and d_befristung <= date_val(<<Befristet bis>>)*/\
/* and teilzeitart in (<<Teilzeitart>>) */\
/* and ca501_staat <<Staatsangehörigkeit>> */\
/* and geschlecht= <<Geschlecht>> */\
/* and ${<<Filter Personal>>} */\
" />\
\
/* <#assign filter = filter + " and sva_pbv_aggr.kostenstelle in "+.vars["Kostenstelle (Person)"].allNeededKeysList /> -- <<Kostenstelle (Person)>> */\
/* <#assign filter = filter + " and sva_pbv_aggr.ca107_dienstart in "+.vars["Dienstart"].allNeededKeysList /> -- <<Dienstart>> */\
/* <#assign filter = filter + " and sva_pbv_aggr.ca108_amtsbez in "+.vars["Amtsbezeichnung"].allNeededKeysList /> -- <<Amtsbezeichnung>> */\
/* <#assign filter = filter + " and sva_pbv_aggr.ch212_geldgeber in "+.vars["Geldgeber"].allNeededKeysList /> -- <<Geldgeber>> */\
/* <#assign filter = filter + " and sva_pbv_aggr.vertart in "+.vars["Vertragsart"].allNeededKeysList /> -- <<Vertragsart>> */\
\
\
\
\
\
<#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} </#if>\
and ${filter}\
;\
</#if>\
\
\
<@rpta_interpret_column_layout nonvirtualTableFilter=filter/>\
\
</#if> --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\
</#if>\
</#foreach>\
@@@^^^Informationen über Stellen und deren Besetzung zu einem bel. Zeitpunkt^ ^^2^700^500^^1^<<SQL>> select 'Achtung: Das Datum des Buttons Institution bzw OrgEinheit (Stelle) unterscheidet sich vom ausgewählten Datum im Maskenfeld.' from xdummy where <<Institution (Stelle)-Stand>> != date_val(<<Datum>>)^

1
src-modules/module/rpta/masken/48250_sachgeb_maske_bez.unl

@ -0,0 +1 @@ @@ -0,0 +1 @@
100^48250^

10
src-modules/module/rpta/schluesseltabellen/fm_templates.unl

@ -1,4 +1,4 @@ @@ -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;\ @@ -262,7 +262,7 @@ drop TABLE tmp_rpta_column_layout;\
drop TABLE tmp_rpta_column2layout;\
</#macro>\
\
<#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;\ @@ -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>\
<#if basetable.is_virtual==0>\
and ${nonvirtualTableFilter}\
</#if>\
;\
\

472
src-modules/module/rpta/schluesseltabellen/personal_virtuell.sql

@ -0,0 +1,472 @@ @@ -0,0 +1,472 @@
--freemarker template
<sqlvars>
<sqlvar name="sva_pbv_aggr_exists">
select sp_table_exists('sva_pbv_aggr') from xdummy;
</sqlvar>
<sqlvar name="fact_table_source">
select name
from sx_tables where name ='sva_pbv_aggr'
</sqlvar>
<sqlvar name="added_tables" type="hashsequence"><![CDATA[
--Vorbereitung:
UPDATE sx_tables
SET caption = 'Personen-Grunddaten'
WHERE name='sva_pgd';
UPDATE sx_tables
SET caption = 'Arbeitszeit'
WHERE name='sva_paz';
UPDATE sx_tables
SET caption = 'Finanzierung'
WHERE name='sva_pfi';
select 1::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_pgd.pgd_join_id=sva_pbv_aggr.personal_nr' as joinclause
from sx_tables where name in ('sva_pgd')
union select 5::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_paz.pgd_join_id=sva_pbv_aggr.personal_nr and sva_paz.pbv_nr=sva_pbv_aggr.besch_verh_nr and sva_pbv_aggr.d_besch_von between sva_paz.von and sva_paz.bis' as joinclause
from sx_tables where name in ('sva_paz')
union select 7::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_pfi.pfi_serial=sva_pbv_aggr.pfi_serial ' as joinclause
from sx_tables where name in ('sva_pfi')
union select 10::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_k_dienstart.apnr=sva_pbv_aggr.ca107_dienstart' as joinclause
from sx_tables where name in ('sva_k_dienstart')
union select 20::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_k_amtsdienst.apnr=sva_pbv_aggr.ca108_amtsbez' as joinclause
from sx_tables where name in ('sva_k_amtsdienst')
union select 30::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_k_vertragsart.apnr=sva_pbv_aggr.vertart' as joinclause
from sx_tables where name in ('sva_k_vertragsart')
union select 40::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_k_bvlgruppe.apnr=sva_pbv_aggr.ca109_key_bvl' as joinclause
from sx_tables where name in ('sva_k_bvlgruppe')
union select 50::smallint as sortnr,
name, trim(name) ||'_' as prefix,
caption,
'sva_k_funktionsart.apnr=sva_pbv_aggr.funktionsart' as joinclause
from sx_tables where name in ('sva_k_funktionsart')
]]></sqlvar>
<sqlvar name="fields_target" type="hashsequence"><![CDATA[
<#if fact_table_source?exists>
select tid, table_name,
name,
name as targetname
from sx_fields where table_name ='${fact_table_source}'
and currentlyused=1
union
</#if>
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
]]>
</sqlvar>
</sqlvars>
<#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;
</#foreach>
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},
</#foreach>
null::varchar as dummy',
joinclause='${fact_table_source}
<#foreach added_table in added_tables>
left outer join ${added_table.name} on (${added_table.joinclause})
</#foreach>';
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;
</#if> --wenn sva_pbv_aggr_exists=1

63
src-modules/module/rpta/schluesseltabellen/rpta_column_layout__pbv__dm_fuellen.sql

@ -0,0 +1,63 @@ @@ -0,0 +1,63 @@
--freemarker template
<#include "RPTA-Makros"/>
<sqlvars>
<sqlvar name="rpta_installed">
select count(*) from systeminfo where tid=330;
</sqlvar>
</sqlvars>
<#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 />
</#if>

4
superx/xml/rpta_groupLayout.xml

@ -0,0 +1,4 @@ @@ -0,0 +1,4 @@
<?xml version="1.0" encoding="UTF-8"?>
<groupLayout>
</groupLayout>

606
superx/xml/rpta_templates.xsl

@ -4,6 +4,8 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform" @@ -4,6 +4,8 @@ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://jasperreports.sourceforge.net/jasperreports">
<xsl:param name="font" select="'Liberation Sans'" /><!--TODO {$font} als style-->
<xsl:output method="xml" encoding="UTF-8"/>
<xsl:variable name="quote"><xsl:text>'</xsl:text></xsl:variable>
<xsl:variable name="doubleQuote"><xsl:text>"</xsl:text></xsl:variable>
<xsl:template name="generateJasperReport">
<xsl:param name="isMainReport" select="'true'" />
@ -24,7 +26,9 @@ xmlns="http://jasperreports.sourceforge.net/jasperreports"> @@ -24,7 +26,9 @@ xmlns="http://jasperreports.sourceforge.net/jasperreports">
<xsl:param name="std_zeilenhoehe_header" select="30" />
<xsl:param name="std_zeilenhoehe_tablerow" select="25" />
<xsl:param name="RPTContentype" />
<xsl:param name="defaultdataadapter" />
<xsl:param name="groupBy" />
<xsl:param name="groupLayout" select="'rpta_groupLayout.xml'"/>
<xsl:variable name="isMacroReport" select="/ergebnisse/@isMakro" />
<!-- bei Excel Erzeugung wird Paginierung ausgeschaltet:-->
<xsl:variable name="runTimePagination">
@ -52,8 +56,10 @@ bottomMargin="{$bottomMargin}" @@ -52,8 +56,10 @@ bottomMargin="{$bottomMargin}"
isIgnorePagination="{$runTimePagination}" >
<xsl:call-template name="jr_properties" />
<!-- zum Testen-->
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="TUHH_kennz_bericht_ba"/>
<xsl:if test="$defaultdataadapter!=''">
<property name="com.jaspersoft.studio.data.defaultdataadapter" value="{$defaultdataadapter}"/>
</xsl:if>
<!--<property name="com.jaspersoft.studio.property.dataset.dialog.DatasetDialog.sash.w1" value="466"/>
<property name="com.jaspersoft.studio.property.dataset.dialog.DatasetDialog.sash.w2" value="522"/>-->
<template><xsl:value-of select="concat('&quot;',$stylesFile,'&quot;')" /></template>
@ -78,12 +84,65 @@ isIgnorePagination="{$runTimePagination}" > @@ -78,12 +84,65 @@ isIgnorePagination="{$runTimePagination}" >
<variable name="tabellennr" class="java.lang.Integer">
<variableExpression><xsl:value-of select="$ergebniselementOrdnr"/></variableExpression>
</variable>
<xsl:call-template name="generateGroupHeaderBandSimple">
<xsl:variable name="groupLayoutElem">
<xsl:copy-of select="document($groupLayout)/groupLayout"/>
</xsl:variable>
<xsl:choose>
<xsl:when test="count($groupLayoutElem/groupLayout/group)=0">
<xsl:call-template name="generateTopGroupBand">
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="std_zeilenhoehe_header" select="$std_zeilenhoehe_header" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!--gruppierter Bericht:-->
<!--TODO:derzeit geht nur eine Ebene-->
<xsl:call-template name="jr_group_variables" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/>
<xsl:with-param name="isMacroReport" select="$isMacroReport" />
<xsl:with-param name="isMainReport" select="$isMainReport" />
<xsl:with-param name="groupbyField" select="'tabellennr'" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
</xsl:call-template>
<xsl:if test="$groupBy !=''" >
<xsl:call-template name="jr_group_variables" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr"/>
<xsl:with-param name="isMacroReport" select="$isMacroReport" />
<xsl:with-param name="isMainReport" select="$isMainReport" />
<xsl:with-param name="groupbyField" select="$groupBy" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
</xsl:call-template>
</xsl:if>
<xsl:call-template name="generateTopGroupBand">
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="std_zeilenhoehe_header" select="$std_zeilenhoehe_header" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
</xsl:call-template>
<xsl:call-template name="generateGroupBand">
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="std_zeilenhoehe_header" select="$std_zeilenhoehe_header" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
<xsl:with-param name="groupbyField" select="$groupBy" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
<xsl:if test="$isMainReport='true'">
<xsl:call-template name="generateTitleBand" >
<xsl:with-param name="druckbreite" select="$druckbreite" />
@ -98,15 +157,19 @@ isIgnorePagination="{$runTimePagination}" > @@ -98,15 +157,19 @@ isIgnorePagination="{$runTimePagination}" >
<xsl:when test="sqlerg/@istreetable='true'">
<xsl:text>treeTable</xsl:text>
</xsl:when>
<xsl:when test="count($groupLayoutElem/groupLayout/group)!=0">
<xsl:text>simple</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>listAlternatingBg</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<band height="{$std_zeilenhoehe_tablerow}" splitType="Stretch">
<band height="{$std_zeilenhoehe_tablerow}" splitType="Stretch"><!--alle Felder außer unsichtbar / Breite =0:-->
<xsl:variable name="colCount"><xsl:value-of select="count(sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ])"/></xsl:variable>
<xsl:for-each select="sqlerg/headers/header[not(starts-with(f_name,'hidden')) and not(starts-with(f_name,'next')) ]">
<xsl:for-each select="sqlerg/headers/header[not(starts-with(f_name,'hidden'))
and not(starts-with(f_name,'next')) ]">
<xsl:variable name="columnX">
<xsl:call-template name="getColumnX">
<xsl:with-param name="druckbreite" select="$druckbreite"/>
@ -155,6 +218,20 @@ isIgnorePagination="{$runTimePagination}" > @@ -155,6 +218,20 @@ isIgnorePagination="{$runTimePagination}" >
<xsl:with-param name="tableRowLevel" select="1" />
<xsl:with-param name="maxLevel" select="10"/>
</xsl:call-template>
</xsl:when>
<xsl:when test="$flavorTableRowStyle='simple'">
<!--Keine Detaileinfärbung, weil in einer Gruppe -->
<xsl:call-template name="jr_textField">
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="colName" select="f_name" />
<xsl:with-param name="colId" select="@id" />
<xsl:with-param name="x" select="$columnX" />
<xsl:with-param name="width" select="$columnWidth" />
<xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" />
<xsl:with-param name="flavorTableRowStyle" select="'simple'" />
<xsl:with-param name="tableRowLevel" select="''" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
@ -263,6 +340,63 @@ isIgnorePagination="{$runTimePagination}" > @@ -263,6 +340,63 @@ isIgnorePagination="{$runTimePagination}" >
<fieldDescription><xsl:text><![CDATA[/ergebnisse/generalinfo/REPORT_DOCUMENTATION_URL]]></xsl:text></fieldDescription>
</field>
</xsl:template>
<xsl:template name="jr_group_variables">
<xsl:param name="ergebniselementOrdnr" select="0"/>
<xsl:param name="isMainReport" />
<xsl:param name="isMacroReport" />
<xsl:param name="groupbyField" />
<xsl:param name="groupLayoutElem" />
<xsl:comment>Fülle <xsl:value-of select="$groupbyField"/> für <xsl:value-of select="$ergebniselementOrdnr"/>
<xsl:value-of select="count($groupLayoutElem/groupLayout/group/*/field)" />
</xsl:comment>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]">
<xsl:variable name="ordnr"><xsl:value-of select="@ordnr"/></xsl:variable>
<xsl:for-each select="sqlerg/complete_headers/header">
<xsl:variable name="fieldName" select="wert" />
<xsl:variable name="jasperFieldname">
<xsl:call-template name="createJasperFieldname">
<xsl:with-param name="fieldName_orig" select="$fieldName"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="fldPrefix">
<xsl:if test="$groupbyField!=''">
<xsl:value-of select="$groupbyField" /><!--<xsl:text>tab_</xsl:text>-->
</xsl:if>
</xsl:variable>
<xsl:variable name="fieldType">
<xsl:call-template name="getJavaType">
<xsl:with-param name="ordnr"><xsl:value-of select="$ordnr"/></xsl:with-param>
<xsl:with-param name="col_id"><xsl:value-of select="@id"/></xsl:with-param></xsl:call-template>
</xsl:variable>
<xsl:variable name="isNumericField">
<xsl:choose>
<xsl:when test="$fieldType='java.lang.Double' or $fieldType='java.lang.Integer'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="normalize-space($jasperFieldname)!='' and $isNumericField='true'
and count($groupLayoutElem/groupLayout/group/*/field [@name=$fieldName]) != 0"> <!-- keine leeren Feldnamen-->
<variable name="{concat($fldPrefix,$jasperFieldname)}"
class="{$fieldType}"
resetType="Group"
resetGroup="{$groupbyField}"
calculation="{$groupLayoutElem/groupLayout/group/*/field [@name=$fieldName]/@aggrFunction }" >
<variableExpression><xsl:value-of select="concat('$F{',$jasperFieldname,'}')" /></variableExpression>
</variable>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="jr_fields">
<xsl:param name="ergebniselementOrdnr" select="0"/>
<xsl:param name="isMainReport" />
@ -492,6 +626,9 @@ isIgnorePagination="{$runTimePagination}" > @@ -492,6 +626,9 @@ isIgnorePagination="{$runTimePagination}" >
weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<xsl:value-of select="$druckbreite - $previousX"/>
</xsl:when>
<xsl:when test="$width = '0'">
<xsl:text>0</xsl:text>
</xsl:when>
<xsl:when test="$width != ''">
<xsl:variable name="spbreite"><xsl:value-of select="$druckbreite*($width div $gesamtbreite)" />
</xsl:variable>
@ -543,7 +680,14 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -543,7 +680,14 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<xsl:param name="height" select="'30'" />
<xsl:param name="flavorTableRowStyle" select="'listAlternatingBg'" />
<xsl:param name="tableRowLevel" select="10" />
<xsl:param name="expressionType" select="'F'" />
<xsl:param name="groupbyField" select="''" />
<xsl:param name="groupExpressionPrefix" select="''" />
<xsl:param name="headerOrFooter" select="''" />
<xsl:if test="$width !='0'">
<xsl:variable name="jasperFieldname">
<xsl:call-template name="createJasperFieldname">
<xsl:with-param name="fieldName_orig" select="$fieldName"/>
</xsl:call-template>
@ -590,7 +734,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -590,7 +734,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<!-- normales Textfeld: -->
<textField isStretchWithOverflow="true" isBlankWhenNull="true">
<reportElement stretchType="ContainerHeight" x="{$x}" y="0" width="{$width}" height="{$height}" >
<xsl:attribute name="evaluationTime">
<xsl:choose>
<xsl:when test="$expressionType='V'">
<!--gruppiertes Feld_-->
<xsl:text>Group</xsl:text>
</xsl:when>
<xsl:otherwise>Now</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<xsl:if test="$expressionType='V'">
<xsl:attribute name="evaluationGroup"><xsl:value-of select="$groupbyField"/></xsl:attribute>
</xsl:if>
<!--{$height}30 -->
<reportElement stretchType="ContainerHeight" x="{$x}" y="0" width="{$width}" height="14" >
<xsl:attribute name="style">
<xsl:call-template name="getTableRowStyle" >
<xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle"/>
@ -598,6 +755,7 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -598,6 +755,7 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr" />
<xsl:with-param name="fieldType" select="$fieldType" />
</xsl:call-template>
<xsl:value-of select="$headerOrFooter"/>
</xsl:attribute>
<xsl:if test="$flavorTableRowStyle='treeTable'">
<xsl:variable name="ColNameEbene">
@ -608,10 +766,34 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -608,10 +766,34 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<printWhenExpression><xsl:value-of select="concat('$F{',$ColNameEbene,'}==',$tableRowLevel)" /></printWhenExpression>
</xsl:if>
</reportElement>
<xsl:if test="$fieldType!='3' and $fieldType!='4' "><!--Zahlen immer rechtsbündig, alles andere links-->
<textElement textAlignment="Left"/>
</xsl:if>
<textFieldExpression><xsl:value-of select="concat('$F{',$fldPrefix,$jasperFieldname,'}')" /></textFieldExpression>
<xsl:comment><xsl:value-of select="$fieldType" /></xsl:comment>
<xsl:choose>
<xsl:when test="$fieldType='3' or $fieldType='4' "><!--Zahlen immer rechtsbündig, alles andere links-->
<textElement textAlignment="Right"/>
</xsl:when>
<xsl:otherwise>
<textElement textAlignment="Left"/>
</xsl:otherwise>
</xsl:choose>
<xsl:variable name="textFieldExpression">
<xsl:choose>
<xsl:when test="$expressionType='SUM_LABEL'">
<xsl:text>'</xsl:text><xsl:call-template name="sumLabel">
<xsl:with-param name="level" select="$tableRowLevel" />
</xsl:call-template>
<xsl:text>'</xsl:text>
</xsl:when>
<xsl:when test="$expressionType='EMPTY'">
<xsl:text>''</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat($doubleQuote,$groupExpressionPrefix,$doubleQuote,'+','$',$expressionType,'{',$groupbyField,$fldPrefix,$jasperFieldname,'}')" />
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:comment><xsl:value-of select="$expressionType" /></xsl:comment>
<textFieldExpression><xsl:value-of select="$textFieldExpression" /></textFieldExpression>
<xsl:call-template name="tableCellPatternExpression">
<xsl:with-param name="fieldType" select="$fieldType" />
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebnisElementOrdnr"/>
@ -622,6 +804,8 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -622,6 +804,8 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
</xsl:otherwise><!-- ende normales Textfeld-->
</xsl:choose>
</xsl:if>
<!-- Ende width !=0 -->
</xsl:template>
<xsl:template name="getFieldType">
<xsl:param name="ergebnisElementOrdnr" />
@ -633,15 +817,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.--> @@ -633,15 +817,20 @@ weil es Rundungsfehler bei der Spaltenbreite geben kann.-->
<xsl:param name="ergebniselementOrdnr" select="0"/>
<xsl:text>""</xsl:text>
<!-- <xsl:for-each select="distinct-values(//ergebnisse/ergebnis[@ordnr = 1 ]/completefields/feld/@varname)">-->
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr = $ergebniselementOrdnr ]/felder/feld/@varname">
<xsl:for-each select="/ergebnisse/ergebnis[@ordnr = $ergebniselementOrdnr ]/felder/feld[@varname !='tablestylesheet'
and @varname !='Schlüssel anzeigen'
and @varname !='Ausgabeformat'
and @art !='13'
and @art !='999'
and @art !='18']">
<xsl:variable name="jasperFieldname">
<xsl:call-template name="createJasperFieldname">
<xsl:with-param name="fieldName_orig" select="."/>
<xsl:with-param name="fieldName_orig" select="@varname"/>
</xsl:call-template>
</xsl:variable>
<xsl:variable name="varname">
<xsl:value-of select="." />
<xsl:value-of select="@varname" />
</xsl:variable>
<xsl:value-of select="concat('+(($F{','legende_',$jasperFieldname,'_value','}==null || $F{','legende_',$jasperFieldname,'_value','}==&quot;&quot;)?','&quot;&quot;:(')" />
<xsl:value-of select="concat('$F{','legende_',$jasperFieldname,'_label','}')" /><xsl:text>+": "+</xsl:text>
@ -751,6 +940,8 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -751,6 +940,8 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$computedWidth!='0'">
<textField isStretchWithOverflow="true">
<!--<xsl:comment><xsl:value-of select="concat('ROW ' ,$rowCounter ,'-', $rowspan)"/>
</xsl:comment>-->
@ -772,6 +963,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -772,6 +963,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
</textFieldExpression>
</textField>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:when>
@ -798,6 +990,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -798,6 +990,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
</xsl:call-template>
</xsl:variable>
<xsl:if test="$columnWidth!='0'">
<textField isStretchWithOverflow="true">
@ -813,7 +1006,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -813,7 +1006,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
</textFieldExpression>
</textField>
</xsl:if>
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
@ -835,11 +1028,254 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -835,11 +1028,254 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
</xsl:otherwise>
</xsl:choose>
</xsl:template>
<xsl:template name="generateGroupHeaderBandSimple">
<xsl:template name="generateGroupBand">
<xsl:param name="ergebniselementOrdnr" select="0" />
<xsl:param name="std_zeilenhoehe_header" />
<xsl:param name="druckbreite" />
<xsl:param name="std_spaltenbreite" />
<xsl:param name="groupbyField" />
<xsl:param name="groupLayoutElem" />
<xsl:variable name="isMacroReport" select="/ergebnisse/@isMakro" />
<xsl:variable name="legendLabelHeight" select="20" />
<xsl:variable name="legendContentHeight" select="10" />
<xsl:variable name="hinweisContentHeight" select="10" />
<group name="{$groupbyField}" keepTogether="true">
<groupExpression><xsl:value-of select="concat('$F{',$groupbyField,'}')"/></groupExpression>
<xsl:variable name="showHeader">
<xsl:value-of select="$groupLayoutElem/groupLayout/group[@name=$groupbyField]/@showHeader"/>
</xsl:variable>
<xsl:variable name="showFooter">
<xsl:value-of select="$groupLayoutElem/groupLayout/group[@name=$groupbyField]/@showFooter"/>
</xsl:variable>
<xsl:if test="$showHeader='true'">
<groupHeader>
<band height="{$groupLayoutElem/groupLayout/group[@name=$groupbyField]/header/@height}" splitType="Stretch">
<xsl:call-template name="generateGroupBandContent" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
<xsl:with-param name="groupbyField" select="$groupbyField"/>
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
<xsl:with-param name="headerOrFooter" select="'header'" />
</xsl:call-template>
</band></groupHeader>
</xsl:if>
<xsl:if test="$showFooter='true'">
<groupFooter>
<band height="{$groupLayoutElem/groupLayout/group[@name=$groupbyField]/footer/@height}" splitType="Stretch">
<xsl:call-template name="generateGroupBandContent" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
<xsl:with-param name="groupbyField" select="$groupbyField"/>
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
<xsl:with-param name="headerOrFooter" select="'footer'" />
</xsl:call-template>
</band>
</groupFooter>
</xsl:if>
</group>
</xsl:template>
<xsl:template name="generateGroupBandContent">
<xsl:param name="ergebniselementOrdnr" select="0" />
<xsl:param name="druckbreite" />
<xsl:param name="std_spaltenbreite" />
<xsl:param name="groupbyField" />
<xsl:param name="groupLayoutElem" />
<xsl:param name="headerOrFooter" />
<xsl:variable name="tableRowLevel">
<xsl:choose>
<xsl:when test="$groupbyField='tabellennr'">
<xsl:text>1</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>2</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:for-each select="/ergebnisse/ergebnis/ergebniselement[@ordnr=$ergebniselementOrdnr]">
<xsl:variable name="flavorTableRowStyle">
<xsl:text>simple</xsl:text>
</xsl:variable>
<xsl:variable name="colCount"><xsl:value-of select="count(sqlerg/headers/header[not(starts-with(f_name,'hidden'))
and not(starts-with(f_name,'next')) ])"/></xsl:variable>
<xsl:for-each select="sqlerg/headers/header[not(starts-with(f_name,'hidden'))
and not(starts-with(f_name,'next')) ]">
<xsl:variable name="fieldType">
<xsl:call-template name="getJavaType">
<xsl:with-param name="ordnr"><xsl:value-of select="$ergebniselementOrdnr"/></xsl:with-param>
<xsl:with-param name="col_id"><xsl:value-of select="@id"/></xsl:with-param></xsl:call-template>
</xsl:variable>
<xsl:variable name="isNumericField">
<xsl:choose>
<xsl:when test="$fieldType='java.lang.Double' or $fieldType='java.lang.Integer'">
<xsl:text>true</xsl:text>
</xsl:when>
<xsl:otherwise>
<xsl:text>false</xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:variable name="columnX">
<xsl:call-template name="getColumnX">
<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="@id" />
<xsl:with-param name="colCount" select="$colCount"/>
</xsl:call-template>
</xsl:variable>
<!-- ist das Feld im Band vorgesehen? -->
<xsl:variable name="isDeclared">
<xsl:call-template name="isFieldDeclaredInGroupBand">
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="groupbyField" select="$groupbyField" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:variable>
<xsl:variable name="groupExpressionPrefix">
<xsl:if test="$isDeclared='true' and $isNumericField='false'">
<xsl:call-template name="getDeclaredFieldPrefixInGroupBand">
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="groupbyField" select="$groupbyField" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:if>
</xsl:variable>
<xsl:variable name="columnWidth">
<xsl:choose>
<xsl:when test="$isDeclared='true' and $isNumericField='false'">
<xsl:call-template name="getDeclaredWidthInGroupBand">
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="groupbyField" select="$groupbyField" />
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
<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="colCount" select="$colCount"/>
<xsl:with-param name="previousX" select="$columnX"/>
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<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="@id" />
<xsl:with-param name="colCount" select="$colCount"/>
<xsl:with-param name="previousX" select="$columnX"/>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:variable>
<xsl:if test="$isDeclared='true'">
<xsl:choose>
<xsl:when test="$isNumericField='true'">
<xsl:call-template name="jr_textField">
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="colName" select="f_name" />
<xsl:with-param name="colId" select="@id" />
<xsl:with-param name="x" select="$columnX" />
<xsl:with-param name="width" select="$columnWidth" />
<xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" />
<xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" />
<xsl:with-param name="tableRowLevel" select="$tableRowLevel" />
<xsl:with-param name="expressionType" select="'V'" />
<xsl:with-param name="groupbyField" select="$groupbyField" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:when>
<xsl:when test="$isNumericField='false' and @width !='0' and $groupbyField='tabellennr'">
<xsl:call-template name="jr_textField">
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="colName" select="f_name" />
<xsl:with-param name="colId" select="@id" />
<xsl:with-param name="x" select="$columnX" />
<xsl:with-param name="width" select="$columnWidth" />
<xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" />
<xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" />
<xsl:with-param name="tableRowLevel" select="$tableRowLevel" />
<xsl:with-param name="expressionType" select="'SUM_LABEL'" />
<xsl:with-param name="groupbyField" select="''" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:when>
<xsl:when test="wert=$groupbyField">
<xsl:call-template name="jr_textField">
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="colName" select="f_name" />
<xsl:with-param name="colId" select="@id" />
<xsl:with-param name="x" select="$columnX" />
<xsl:with-param name="width" select="$columnWidth" />
<xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" />
<xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" />
<xsl:with-param name="tableRowLevel" select="$tableRowLevel" />
<xsl:with-param name="expressionType" select="'F'" />
<xsl:with-param name="groupbyField" select="''" />
<xsl:with-param name="groupExpressionPrefix" select="$groupExpressionPrefix" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:when>
<xsl:otherwise>
<!-- sum-label field -->
<xsl:call-template name="jr_textField">
<xsl:with-param name="ergebnisElementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="fieldName" select="wert" />
<xsl:with-param name="colName" select="f_name" />
<xsl:with-param name="colId" select="@id" />
<xsl:with-param name="x" select="$columnX" />
<xsl:with-param name="width" select="$columnWidth" />
<xsl:with-param name="height" select="$std_zeilenhoehe_tablerow" />
<xsl:with-param name="flavorTableRowStyle" select="$flavorTableRowStyle" />
<xsl:with-param name="tableRowLevel" select="$tableRowLevel" />
<xsl:with-param name="expressionType" select="'SUM_LABEL'" />
<xsl:with-param name="groupbyField" select="''" />
<xsl:with-param name="headerOrFooter" select="$headerOrFooter" />
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:if>
</xsl:for-each>
</xsl:for-each>
</xsl:template>
<xsl:template name="generateTopGroupBand">
<xsl:param name="ergebniselementOrdnr" select="0" />
<xsl:param name="std_zeilenhoehe_header" />
<xsl:param name="druckbreite" />
<xsl:param name="std_spaltenbreite" />
<xsl:param name="groupLayoutElem" />
<xsl:variable name="isMacroReport" select="/ergebnisse/@isMakro" />
<xsl:variable name="legendLabelHeight" select="20" />
<xsl:variable name="legendContentHeight" select="10" />
@ -906,11 +1342,28 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -906,11 +1342,28 @@ genommen. Wenn nicht, wird mit colspan multipliziert.-->
<xsl:with-param name="y_offset" select="0"/>
</xsl:call-template>
</band>
<!--kein weiterer Inhalt im Top-Header-->
</groupHeader>
<xsl:if test="count($groupLayoutElem/groupLayout/group[@name='tabellennr' and @showFooter='true']) !=0" >
<groupFooter>
<band height="{$std_zeilenhoehe_tablerow}" splitType="Stretch">
<xsl:call-template name="generateGroupBandContent" >
<xsl:with-param name="ergebniselementOrdnr" select="$ergebniselementOrdnr" />
<xsl:with-param name="druckbreite" select="$druckbreite" />
<xsl:with-param name="std_spaltenbreite" select="$std_spaltenbreite" />
<xsl:with-param name="groupbyField" select="'tabellennr'"/>
<xsl:with-param name="groupLayoutElem" select="$groupLayoutElem"/>
<xsl:with-param name="headerOrFooter" select="'footer'" />
</xsl:call-template>
</band>
</groupFooter>
</xsl:if>
</group>
</xsl:template>
<xsl:template name="generateTitleBand">
<xsl:param name="druckbreite" select="812" />
<xsl:param name="ReportTitle" select="'$F{Berichtsname}'" />
<title>
<band height="75">
@ -920,7 +1373,7 @@ genommen. Wenn nicht, wird mit colspan multipliziert.--> @@ -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.--> @@ -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. @@ -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>

9
superx/xml/rpta_templates_final.xsl

@ -0,0 +1,9 @@ @@ -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>

217
superx/xml/sx_stylesheets_einfuegen.sql

@ -1,217 +0,0 @@ @@ -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>
Loading…
Cancel
Save