-
-
Notifications
You must be signed in to change notification settings - Fork 18
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).
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.
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: Path to the JSON schema (adjust this 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 to16 -
32: The query filter OData expression, variablePayrunJobNamematches to27 -
33-35: Hide parameter result filter -
38-43: The report templates -
41: The template language -
42: The template file name (same folder)
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
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"
}-
PayrunJobNamewird vom Report bestimmt, JSON Zeile27 -
StartPayrunJob.Jan23stammt 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.
- Forecasts
- Payroll Automation with No-Code and Low-Code
- Payroll Testing
- Extended Functions
- Custom Actions
- Resources with documents, blogs, tests and examples
🤝 Thank you for supporting this project with a donation.
⚡ This is a pre-relase version of the initial development, please read the restrictions.
- Payroll Engine