Skip to content

Reports

Jani Giannoudis edited this page Jul 3, 2023 · 18 revisions

Payroll Reports

Die Erstellung eines Reports mit der Payroll Engine ist unterteilt:

  • Backend: Aufbereitung der Reportdaten
  • Client: Transformation der Reportdaten mittels Report Template

Die Engine ist so konzipiert, dass jedes Reporting-Tool als Client fungieren kann, welches ADO.NET DataSets als Datenquelle unterstützt. Das Datenformat im Report-Template kann vom Client bestimmt werden z.B. .docx (Word Mail Merge), .frx (FastReport) or .rdlc (SQL Server).



FastReport

Die Report-Konsole und Web-Applikation setzen als Report-Client das Open-Source Reporting-Tool FastReport Open Source ein.

Zu visuellen Gestaltung von Reports bietet FastReport den kostenlosen Community-Edition Report Designer an. Bitte den Download FastReport.Community.{Version}.zip starten, das Archiv lokal entpacken und das Programm Designer.exe starten.



Regulation Report

Im folgenden wird zum Basic Payroll Beispiel ein PDF-Report der Lohnlaufresultate eines Monats erstellt. Als Report-Parameter wird ein Payrun Jobname erwartet.

Der Report wird als Regulierungsobjekt erfasst und besteht aus:

  • Queries: Abfrage von REST-API Endpunkten
  • Parameters: Lausfzeitwerte um den Report zu steuern
  • Templates: Vorlagen zur Transformation der Reportdaten in Dokumente

Beispiel Payroll Report Report.json:

1{
2  "$schema": "PayrollEngine.Exchange.schema.json",
3  "createdObjectDate": "2023-01-01T00:00:00.0Z",
4  "tenants": [
5    {
6      "identifier": "StartTenant",
7      "updateMode": "NoUpdate",
8      "regulations": [
9        {
10          "name": "StartRegulation",
11          "updateMode": "NoUpdate",
12          "reports": [
13            {
14              "name": "StartReport",
15              "queries": {
16                "Results": "QueryPayrollResultValues"
17              },
18              "parameters": [
19                {
20                  "name": "TenantId",
21                  "parameterType": "TenantId",
22                  "attributes": {
23                    "input.hidden": true
24                  }
25                },
26                {
27                  "name": "PayrunJobName",
28                  "mandatory": true
29                },
30                {
31                  "name": "Results.Filter",
32                  "value": "jobName eq '$PayrunJobName$'",
33                  "attributes": {
34                    "input.hidden": true
35                  }
36                }
37              ],
38              "templates": [
39                {
40                  "name": "StartReportTemplate",
41                  "language": "English",
42                  "contentFile": "Report.frx"
43                }
44              ]
45            }
46          ]
47        }
48      ]
49    }
50  ]
51}

Die Bestandteile des Reports im Detail:

  • 2: Adjust the JSON schema path to your local environment
  • 3: Default creation date for any object
  • 7: Do not update the tenant (see Basic-Payroll Test)
  • 11: Do not update the payroll (see Basic-Payroll Test)
  • 13-45: Report definition
  • 14: The report name
  • 15-17: The report queries
  • 16: Query for the payroll results
  • 18-37: The report parameters
  • 19-25: Report parameter tenant id
  • 21: Parameter type tenant id
  • 22-24: Hide parameter tenant id
  • 26-29: Report parameter payrun job name
  • 30-36: Report parameter for the result query filter
  • 31: The query filter name, matches to 16
  • 32: The query filter OData expression, variable PayrunJobName matches to 27
  • 33-35: Hide parameter result filter
  • 38-43: The report templates
  • 41: The template language
  • 42: The template file name (same folder)


Report Template

Das FastReport Report Template ist eine XML Datei. Um ein DataSet als Datenquelle zu nutzen, muss die TableDataSource verwendet weden.

Beispiel Report Template Report.frx:

1<?xml version="1.0" encoding="utf-8"?>
2<Report ScriptLanguage="CSharp" ReportInfo.Created="06/20/2009 22:40:42" 
3        ReportInfo.Modified="06/23/2023 15:23:19" ReportInfo.CreatorVersion="2023.2.0.0">
4  <Dictionary>
5    <TableDataSource Name="Results" ReferenceName="Data.Results" DataType="System.Int32" Enabled="true">
6      <Column Name="Id" DataType="System.Int32"/>
7      <Column Name="Status" DataType="System.String"/>
8      <Column Name="Created" DataType="System.DateTime"/>
9      <Column Name="Updated" DataType="System.DateTime"/>
10     <Column Name="PeriodName" DataType="System.String"/>
11     <Column Name="EmployeeIdentifier" DataType="System.String"/>
12     <Column Name="DivisionName" DataType="System.String"/>
13     <Column Name="ResultKind" DataType="System.String"/>
14     <Column Name="KindName" DataType="System.String"/>
15     <Column Name="ResultValue" DataType="System.String"/>
16     <Column Name="ResultNumericValue" DataType="System.Decimal"/>
17   </TableDataSource>
18  </Dictionary>
19  <ReportPage Name="StartPage" Watermark.Font="Arial, 60pt">
20    <DataBand Name="Data" Top="65.33" Width="720" Height="20" DataSource="Results">
21      <TextObject Name="Period" Left="20" Width="95" Height="20" Text="[Results.PeriodName]" Font="Arial, 9pt"/>
22      <TextObject Name="Employee" Left="130" Width="245" Height="20" Text="[Results.EmployeeIdentifier]" Font="Arial, 9pt"/>
23      <TextObject Name="Kind" Left="415" Width="130" Height="20" Text="[Results.KindName]" Font="Arial, 9pt"/>
24      <TextObject Name="Value" Left="570" Width="110" Height="20" Text="[Results.ResultNumericValue]" 
25                  Format="Currency" Format.UseLocale="true" Format.DecimalDigits="2" HorzAlign="Right" 
26                  WordWrap="false" Font="Arial, 9pt" Trimming="EllipsisCharacter"/>
27    </DataBand>
28  </ReportPage>
29</Report>

Die Bestandteile des FastReport Templates:

  • 5-17: The data source declaration
  • 6-16: Columns matching the report data table columns
  • 19-28: Report row for each result
  • 21-26: Row column values


Execute Report

Mit der Payroll Konsole müssen die Report Parameter in einer JSON Datei erfasst sein.

Beispiel JSON Report Parameters Report.Parameters.json:

{
  "PayrunJobName": "StartPayrunJob.Jan23"
}
  • PayrunJobName wird vom Report bestimmt, JSON Zeile 27
  • StartPayrunJob.Jan23 stammt vom Payroll Test.

Die Erstellung des Reports erfolgt mit dem Shell Kommandos:

  • Report.Setup.cmd: Erstellt die Firma, generiert Testdaten und erstellt einen PDF Report [Initial]
  • Report.Pdf.cmd: Erstellt einen PDF Report
  • Report.Excel.cmd: Erstellt einen Excel Report
  • Report.XmlRaw.cmd: Erstellt einen XML Rohdaten-Report

Neben den integrierten Formate XmlRaw und Excel bestimmt die Client Implementierung welche Formate zur Verfügung stehen.

In Report Dialog der Web Applikation werden Parameter und Zielformat bestimmt und der Report als Download bereitgestellt.



See also

Clone this wiki locally