From 43d85cbbf81867accd5d3d3354aea9ffa8b52ff4 Mon Sep 17 00:00:00 2001 From: "S.Listl" <S.Listl@SLISTL.aditosoftware.local> Date: Wed, 23 Jan 2019 08:47:02 +0100 Subject: [PATCH] =?UTF-8?q?[Projekt:=20Entwicklung=20-=20Neon][TicketNr.:?= =?UTF-8?q?=201026286][Kundenstammblatt=20-=20=C3=9Cbernahme=20aus=20Basic?= =?UTF-8?q?=20Swing]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entity/Org_entity/Org_entity.aod | 7 + .../entityfields/orgreport/onActionProcess.js | 4 + .../_____LANGUAGE_EXTRA.aod | 32 +- .../_____LANGUAGE_de/_____LANGUAGE_de.aod | 33 ++ .../_____LANGUAGE_en/_____LANGUAGE_en.aod | 32 +- process/Org_lib/Org_lib.aod | 2 +- process/Org_lib/process.js | 127 +++++++ process/Report_lib/process.js | 43 ++- report/RPTJ_OFFER/reportData.jrxml | 2 +- report/RPTJ_ORG/Aufgaben.jrxml | 54 +++ report/RPTJ_ORG/Historien.jrxml | 53 +++ report/RPTJ_ORG/Kommunikationsdaten.jrxml | 41 +++ report/RPTJ_ORG/Kontaktpersonen.jrxml | 57 ++++ report/RPTJ_ORG/RPTJ_ORG.aod | 61 ++++ report/RPTJ_ORG/icon.png | Bin 0 -> 209 bytes report/RPTJ_ORG/iconInactive.png | Bin 0 -> 193 bytes report/RPTJ_ORG/myLogo.png | Bin 0 -> 9726 bytes report/RPTJ_ORG/reportData.jrxml | 315 ++++++++++++++++++ 18 files changed, 845 insertions(+), 18 deletions(-) create mode 100644 entity/Org_entity/entityfields/orgreport/onActionProcess.js create mode 100644 report/RPTJ_ORG/Aufgaben.jrxml create mode 100644 report/RPTJ_ORG/Historien.jrxml create mode 100644 report/RPTJ_ORG/Kommunikationsdaten.jrxml create mode 100644 report/RPTJ_ORG/Kontaktpersonen.jrxml create mode 100644 report/RPTJ_ORG/RPTJ_ORG.aod create mode 100644 report/RPTJ_ORG/icon.png create mode 100644 report/RPTJ_ORG/iconInactive.png create mode 100644 report/RPTJ_ORG/myLogo.png create mode 100644 report/RPTJ_ORG/reportData.jrxml diff --git a/entity/Org_entity/Org_entity.aod b/entity/Org_entity/Org_entity.aod index 8700abafd4..0530657e99 100644 --- a/entity/Org_entity/Org_entity.aod +++ b/entity/Org_entity/Org_entity.aod @@ -449,6 +449,13 @@ <onActionProcess>%aditoprj%/entity/Org_entity/entityfields/newactivity/onActionProcess.js</onActionProcess> <iconId>NEON:HISTORY</iconId> </entityActionField> + <entityActionField> + <name>orgReport</name> + <fieldType>ACTION</fieldType> + <title>Customer Base Sheet</title> + <onActionProcess>%aditoprj%/entity/Org_entity/entityfields/orgreport/onActionProcess.js</onActionProcess> + <iconId>VAADIN:FILE_TEXT_O</iconId> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Org_entity/entityfields/orgreport/onActionProcess.js b/entity/Org_entity/entityfields/orgreport/onActionProcess.js new file mode 100644 index 0000000000..63d6aafc04 --- /dev/null +++ b/entity/Org_entity/entityfields/orgreport/onActionProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("Org_lib"); + +OrgUtils.openOrgReport(vars.get("$field.ORGID")); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index f65f9bc5d3..b5285eef30 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -1279,7 +1279,10 @@ <key>Plus Salestax</key> </entry> <entry> - <key>maturity date</key> + <key>Choose address</key> + </entry> + <entry> + <key>Customer Base Sheet</key> </entry> <entry> <key>{$TASK_STATUS}</key> @@ -1308,9 +1311,6 @@ <entry> <key>priority</key> </entry> - <entry> - <key>Choose address</key> - </entry> <entry> <key>zusagen</key> </entry> @@ -1413,6 +1413,30 @@ <entry> <key>Angebot</key> </entry> + <entry> + <key>responsible</key> + </entry> + <entry> + <key>maturity date</key> + </entry> + <entry> + <key>Contact type</key> + </entry> + <entry> + <key>Communication data</key> + </entry> + <entry> + <key>Remark</key> + </entry> + <entry> + <key>Department</key> + </entry> + <entry> + <key>Tasks</key> + </entry> + <entry> + <key>Employee</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 228867bb98..bd9a6523db 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -38,6 +38,10 @@ <key>Show all contracts</key> <value>Alle Verträge anzeigen</value> </entry> + <entry> + <key>Communication data</key> + <value>Kommunikationsdaten</value> + </entry> <entry> <key>Male</key> <value>Männlich</value> @@ -210,6 +214,10 @@ <key>Addresses</key> <value>Adressen</value> </entry> + <entry> + <key>Contact type</key> + <value>Kontaktart</value> + </entry> <entry> <key>${COMM_ADDRESS}</key> <value>Adresse</value> @@ -400,6 +408,10 @@ <key>Valid until</key> <value>gültig bis</value> </entry> + <entry> + <key>Department</key> + <value>Abteilung</value> + </entry> <entry> <key>Price list</key> <value>Preisliste</value> @@ -512,6 +524,10 @@ <key>Kgs</key> <value>Kg</value> </entry> + <entry> + <key>Employee</key> + <value>Mitarbeiter</value> + </entry> <entry> <key>CHF</key> <value>CHF</value> @@ -1104,6 +1120,10 @@ <key>Document</key> <value>Dokument</value> </entry> + <entry> + <key>Remark</key> + <value>Anmerkung</value> + </entry> <entry> <key>Competition</key> <value>Mitbewerber</value> @@ -1221,6 +1241,10 @@ <entry> <key>Budget (Project)</key> </entry> + <entry> + <key>responsible</key> + <value>verantwortlich</value> + </entry> <entry> <key>Show all Facebook posts of a user</key> <value>Alle Facebook Beiträge eines Benutzers anzeigen</value> @@ -1375,6 +1399,7 @@ </entry> <entry> <key>Relationship</key> + <value></value> </entry> <entry> <key>${BINARY_LIB_TOO_MANY_BINARIES}</key> @@ -1416,6 +1441,10 @@ <key>Offer report</key> <value>Angebotsbericht</value> </entry> + <entry> + <key>Tasks</key> + <value>Aufgaben</value> + </entry> <entry> <key>New offer</key> <value>Angebot erstellen</value> @@ -1585,6 +1614,10 @@ <key>Take price</key> <value>Preis übernehmen</value> </entry> + <entry> + <key>Customer Base Sheet</key> + <value>Kundenstammblatt</value> + </entry> <entry> <key>Twitter Feed</key> </entry> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 5ccb7ed13c..709fb0f20f 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -1296,7 +1296,10 @@ <key>Plus Salestax</key> </entry> <entry> - <key>maturity date</key> + <key>Choose address</key> + </entry> + <entry> + <key>Customer Base Sheet</key> </entry> <entry> <key>{$TASK_STATUS}</key> @@ -1325,9 +1328,6 @@ <entry> <key>priority</key> </entry> - <entry> - <key>Choose address</key> - </entry> <entry> <key>zusagen</key> </entry> @@ -1430,6 +1430,30 @@ <entry> <key>Angebot</key> </entry> + <entry> + <key>responsible</key> + </entry> + <entry> + <key>maturity date</key> + </entry> + <entry> + <key>Contact type</key> + </entry> + <entry> + <key>Communication data</key> + </entry> + <entry> + <key>Remark</key> + </entry> + <entry> + <key>Department</key> + </entry> + <entry> + <key>Tasks</key> + </entry> + <entry> + <key>Employee</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/process/Org_lib/Org_lib.aod b/process/Org_lib/Org_lib.aod index b0911d1b9c..fbe4265479 100644 --- a/process/Org_lib/Org_lib.aod +++ b/process/Org_lib/Org_lib.aod @@ -3,7 +3,7 @@ <name>Org_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Org_lib/process.js</process> - <alias>_____SYSTEMALIAS</alias> + <alias>Data_alias</alias> <variants> <element>LIBRARY</element> </variants> diff --git a/process/Org_lib/process.js b/process/Org_lib/process.js index 2bc4452b08..3a6930658b 100644 --- a/process/Org_lib/process.js +++ b/process/Org_lib/process.js @@ -1,4 +1,11 @@ +import("system.datetime"); +import("system.translate"); +import("system.db"); import("Binary_lib"); +import("Report_lib"); +import("Sql_lib"); +import("Keyword_lib"); +import("PostalAddress_lib"); /** * a static Utility class for the Org context. @@ -42,3 +49,123 @@ OrgUtils.removeImage = function(pOrgId) { return ImageUtils.remove("ORG", "IMAGE", pOrgId); } + +/** + * opens the org-report + * + * @param {String} pOrgId the id of the organization + */ +OrgUtils.openOrgReport = function(pOrgId) +{ + var relationId = pOrgId; + + //org info + var info = db.cell(SqlCondition.begin() + .andPrepare("ORG.ORGID", pOrgId) + .buildSelect("select ORG.INFO from ORG")); + + //communication data of the organization + var commSelect = "select MEDIUM_ID, ADDR from COMM"; + var commCond = SqlCondition.begin() + .andPrepare("COMM.RELATION_ID", relationId) + .and("STANDARD = 1"); + var commData = db.table(commCond.buildSelect(commSelect)); + + //resolve keyword + commData.forEach(function (row) + { + row[0] = KeywordUtils.getViewValue("COMM.MEDIUM", row[0]); + }); + commData = ReportData.begin(["KINDOFCOMM", "COMMVALUE"]).add(commData); + + //select people from the organization + //TODO: Position und Abteilung fehlen noch + var persSelect = "select SALUTATION, TITLE, FIRSTNAME, LASTNAME, '', '', '', ORG_ID, RELATIONID" + + " from PERS join RELATION on PERSID = PERS_ID"; + var persCond = SqlCondition.begin() + .andPrepare("RELATION.ORG_ID", pOrgId) + .and("RELATION.STATUS = 1"); + var persData = db.table(persCond.buildSelect(persSelect, "", " order by PERS.LASTNAME asc")); + + var mediumIds = []; + var mediums = KeywordUtils.getStandardArrayProps("COMM.MEDIUM"); + for (let i = 0; i < mediums.length; i++) + if ("category" in mediums[i][2] && (mediums[i][2].category == "PHONE" || mediums[i][2].category == "EMAIL")) + mediumIds.push(mediums[i][0]); + mediums = mediumIds.join(", "); + + for (let i = 0; i < persData.length; i++) + { + _joinArrayVals(persData[i], 0, 4); + var persCommSelect = "select MEDIUM_ID, ADDR from COMM"; + var persCommCond = SqlCondition.begin() + .andPrepare("COMM.RELATION_ID", persData[i][5]) + .and("MEDIUM_ID in (" + mediumIds + ")") + .and("STANDARD = 1"); + var persDataComm = db.table(persCommCond.buildSelect(persCommSelect)); + + persData[i][3] = persDataComm.map(function (row) + { + return KeywordUtils.getViewValue("COMM.MEDIUM", row[0]) + ": " + row[1]; + } + ).join("\n"); + } + persData = ReportData.begin(["PERSNAMECOMPLETE", "PERSFUNCTION", "PERSDEPARTMENT", "PERSCOMM", "ORG_ID", "RELATION_ID"]).add(persData); + + var histSelect = "select ENTRYDATE, CATEGORY, FIRSTNAME, LASTNAME, INFO from ACTIVITY " + + " join ACTIVITYLINK on ACTIVITYLINK.ACTIVITY_ID = ACTIVITYID " + + " join RELATION on ACTIVITYLINK.ROW_ID = RELATIONID" + + " left join PERS on RELATION.PERS_ID = PERSID"; + var histCond = SqlCondition.begin().andPrepare("RELATION.ORG_ID", pOrgId); + var histData = db.table(histCond.buildSelect(histSelect, "", "order by ENTRYDATE desc")); + + var dateFormat = translate.text("dd.MM.yyyy"); + histData.forEach(function (row) + { + row[0] = datetime.toDate(row[0], dateFormat); + row[1] = KeywordUtils.getViewValue("ACTIVITY.CATEGORY", row[1]); + _joinArrayVals(row, 2, 2); + }); + histData = ReportData.begin(["ENTRYDATE", "MEDIUM", "LOGIN", "INFO"]).add(histData); + + var attr = ""; //TODO: this should be a string with the attributes + + var taskData = ReportData.begin(["SUBJECT", "INFOTEXT", "STATUS", "RESPONSIBLE"]).add([]); //TODO: get tasks for this org + + var params = { + "ORGAddr" : AddressUtils.getAddress(relationId).toString(), //TODO: use new address logic when available + "ORGAttr" : attr, + "RELID" : relationId, + "ORGID" : pOrgId, + "INFO" : info + }; + + var orgReport = new Report("RPTJ_ORG"); + + //add subreport data + orgReport.addSubReportData("subdataComm", commData); + orgReport.addSubReportData("subdataPers", persData); + orgReport.addSubReportData("subdataHist", histData); + orgReport.addSubReportData("subdataTask", taskData); + + //add logo + //TODO: use an function to get the image when available + var imgData = [ + "meineFirma | Konrad-Zuse-Straße 4 | DE 84144 Geisenhausen", + "base64:iVBORw0KGgoAAAANSUhEUgAAAM4AAABRCAYAAACaL5lSAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyJpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYxIDY0LjE0MDk0OSwgMjAxMC8xMi8wNy0xMDo1NzowMSAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNS4xIFdpbmRvd3MiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MDA4QzAyM0IwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6MDA4QzAyM0MwREIwMTFFNEFGMDREM0VEMjExRjlBRTIiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDowMDhDMDIzOTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDowMDhDMDIzQTBEQjAxMUU0QUYwNEQzRUQyMTFGOUFFMiIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/PhF3nYoAAAlvSURBVHja7J1fjBXV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" + ]; + params["myAddr"] = imgData[0]; + orgReport.addImage("myLogo", imgData[1]); + + orgReport.addReportParams(params); + orgReport.setReportData(ReportData.begin(["e"]).add([["d"]])); + + orgReport.openReport(); + + function _joinArrayVals (pArr, pIndex, pHowMany) + { + pArr.splice(pIndex, pHowMany, + pArr.slice(pIndex, pIndex + pHowMany) + .filter(function (val) {return val;}).join(" ")); + } +} \ No newline at end of file diff --git a/process/Report_lib/process.js b/process/Report_lib/process.js index 8d958e2974..d1f68a387e 100644 --- a/process/Report_lib/process.js +++ b/process/Report_lib/process.js @@ -19,16 +19,17 @@ import("system.vars"); * logging.log(reportData.getReportData().toSource());<br> * * @class + * @param {Array} [pFieldNames=[]] the report fieldnames as an array */ function ReportData(pFieldNames) { - this._reportFields = pFieldNames; + this._reportFields = pFieldNames || []; this._reportValues = []; } /** * create a new ReportData instance. - * @param {String[]} pFieldNames the names of all fields as array + * @param {String[]} [pFieldNames=[]] the names of all fields as array * * @return {ReportData} this */ @@ -83,14 +84,16 @@ ReportData.prototype.getReportValues = function() /** * create a Report * @param {String} pReportName +* @param {Object} [pReportParams=null] the params for the report +* @param {ReportData} [pReportData=null] the data for the report * * @class */ -function Report(pReportName) +function Report(pReportName, pReportParams, pReportData) { this.reportName = pReportName; - this.reportParams = null; - this.reportData = new ReportData(); + this.reportParams = pReportParams || null; + this.reportData = pReportData || null; } /** @@ -186,7 +189,7 @@ Report.prototype.exportReport = function(pFilename, pCondition, pExportFormat, p if (pCondition == undefined) pCondition = ""; if (pWhereOrder == undefined) pWhereOrder = null; - var doc = [pFilename, report.exportToBytes(this.reportName, pCondition, pExportFormat, pWhereOrder, this.reportParams, this.reportData.getReportFields(), this.reportData.getReportValues(), pLanguage)]; + var doc = [pFilename, report.exportToBytes(this.reportName, pCondition, pExportFormat, pWhereOrder, this.reportParams, this._getReportDataFields(), this._getReportDataValues(), pLanguage)]; return doc; } @@ -198,10 +201,10 @@ Report.prototype.exportReport = function(pFilename, pCondition, pExportFormat, p * @return {Array} [filename, data_bytes] */ Report.prototype.openReport = function(pCondition, pVariables) { - if (pCondition == undefined) pCondition = ""; + if (pCondition == undefined) pCondition = null; if (pVariables == undefined) pVariables = null; - neon.openReport(this.reportName, pCondition, this.reportParams, this.reportData.getReportFields(), this.reportData.getReportValues(), pVariables); + neon.openReport(this.reportName, pCondition, this.reportParams, this._getReportDataFields(), this._getReportDataValues(), pVariables); return this; } @@ -231,4 +234,28 @@ Report.prototype._getSubReportMap = function(pFieldNames, pData) } return data; } +} + +/** + * gets the fields of the reportData of this report or null if reportData is null + * + * @return {Array} report fields or null + */ +Report.prototype._getReportDataFields = function() +{ + if (this.reportData != null) + return this.reportData.getReportFields(); + return null; +} + +/** + * gets the values of the reportData of this report or null if reportData is null + * + * @return {Array} report values or null + */ +Report.prototype._getReportDataValues = function() +{ + if (this.reportData != null) + return this.reportData.getReportValues(); + return null; } \ No newline at end of file diff --git a/report/RPTJ_OFFER/reportData.jrxml b/report/RPTJ_OFFER/reportData.jrxml index 89e47eafda..51ae16ea29 100644 --- a/report/RPTJ_OFFER/reportData.jrxml +++ b/report/RPTJ_OFFER/reportData.jrxml @@ -24,7 +24,7 @@ <parameter name="OFFERDel" class="java.lang.String"/> <parameter name="AD_Name" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> - <defaultValueExpression><![CDATA["C:\\entwicklungszweige\\0.0\\project\\xRM-Basic5.1\\report\\RPTJ_OFFER\\"]]></defaultValueExpression> + <defaultValueExpression><![CDATA["C:\\entwicklungszweige\\0.0\\project\\xRM-Basic2019\\report\\RPTJ_OFFER\\"]]></defaultValueExpression> </parameter> <parameter name="adito.datasource.subdata" class="java.lang.Object"/> <parameter name="SUMITEMSUM" class="java.lang.Double"/> diff --git a/report/RPTJ_ORG/Aufgaben.jrxml b/report/RPTJ_ORG/Aufgaben.jrxml new file mode 100644 index 0000000000..83ca1ab940 --- /dev/null +++ b/report/RPTJ_ORG/Aufgaben.jrxml @@ -0,0 +1,54 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Aufgaben" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="85abee76-0173-491f-84c2-385ecdce25bb"> + <property name="ireport.zoom" value="1.6105100000000008"/> + <property name="ireport.x" value="0"/> + <property name="ireport.y" value="0"/> + <field name="STATUS" class="java.lang.String"/> + <field name="SUBJECT" class="java.lang.String"/> + <field name="CREATEDBY" class="java.lang.String"/> + <field name="RESPONSIBLE" class="java.lang.String"/> + <field name="INFOTEXT" class="java.lang.String"/> + <background> + <band splitType="Stretch"/> + </background> + <detail> + <band height="16" splitType="Stretch"> + <textField> + <reportElement x="3" y="0" width="102" height="15" uuid="f4c173de-6106-4330-87c2-b2ce021394ed"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{SUBJECT}]]></textFieldExpression> + </textField> + <textField isStretchWithOverflow="true"> + <reportElement x="118" y="0" width="168" height="15" uuid="389fc04e-a659-4ef9-923c-3ff73f5bfd18"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{INFOTEXT}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="296" y="0" width="104" height="15" uuid="e8c8b469-8f88-47f0-8056-4a3fe23fd6e5"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{STATUS}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="445" y="0" width="100" height="15" uuid="fd1db5d1-8dc3-43ba-a723-da731405325c"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{RESPONSIBLE}]]></textFieldExpression> + </textField> + </band> + <band height="5"> + <line> + <reportElement x="0" y="1" width="555" height="1" uuid="1259315f-6fe1-4e0c-bc4a-81208ef427c6"/> + <graphicElement> + <pen lineWidth="0.75" lineStyle="Dotted"/> + </graphicElement> + </line> + </band> + </detail> +</jasperReport> diff --git a/report/RPTJ_ORG/Historien.jrxml b/report/RPTJ_ORG/Historien.jrxml new file mode 100644 index 0000000000..a01c78815f --- /dev/null +++ b/report/RPTJ_ORG/Historien.jrxml @@ -0,0 +1,53 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Historien" pageWidth="555" pageHeight="572" orientation="Landscape" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="4066531c-fd6e-4cc9-a763-20a1023e8349"> + <property name="ireport.zoom" value="1.2100000000000004"/> + <property name="ireport.x" value="0"/> + <property name="ireport.y" value="0"/> + <field name="ENTRYDATE" class="java.lang.String"/> + <field name="MEDIUM" class="java.lang.String"/> + <field name="LOGIN" class="java.lang.String"/> + <field name="INFO" class="java.lang.String"/> + <background> + <band splitType="Stretch"/> + </background> + <detail> + <band height="17" splitType="Stretch"> + <textField> + <reportElement x="0" y="1" width="100" height="15" uuid="fc8f2d06-0eb7-4fd0-a91c-cda7a85dd06e"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{ENTRYDATE}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="103" y="1" width="100" height="15" uuid="d76859d9-0766-497e-9187-33ce879dc4f3"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{MEDIUM}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="222" y="1" width="91" height="15" uuid="df383fa6-a716-4f3c-ac97-d2beb7c329ac"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{LOGIN}]]></textFieldExpression> + </textField> + <textField isStretchWithOverflow="true"> + <reportElement x="345" y="1" width="116" height="15" uuid="dd8ad103-b2e2-4fad-afea-81854bf12e47"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{INFO}]]></textFieldExpression> + </textField> + </band> + <band height="4"> + <line> + <reportElement x="0" y="2" width="555" height="1" uuid="f895ff04-ead0-48c3-85c1-5f6772d79ab3"/> + <graphicElement> + <pen lineWidth="0.75" lineStyle="Dotted"/> + </graphicElement> + </line> + </band> + </detail> +</jasperReport> diff --git a/report/RPTJ_ORG/Kommunikationsdaten.jrxml b/report/RPTJ_ORG/Kommunikationsdaten.jrxml new file mode 100644 index 0000000000..e94f3d722e --- /dev/null +++ b/report/RPTJ_ORG/Kommunikationsdaten.jrxml @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Kommunikationsdaten" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="c659b407-943a-4427-8fa5-032bff204ff4"> + <property name="ireport.zoom" value="1.6105100000000008"/> + <property name="ireport.x" value="0"/> + <property name="ireport.y" value="0"/> + <field name="KINDOFCOMM" class="java.lang.String"/> + <field name="COMMVALUE" class="java.lang.String"/> + <field name="CLIENTID" class="java.lang.String"/> + <field name="ORG_ID" class="java.lang.String"/> + <field name="RELATION_ID" class="java.lang.String"/> + <field name="COMMDATA" class="java.lang.String"/> + <background> + <band splitType="Stretch"/> + </background> + <detail> + <band height="16" splitType="Stretch"> + <textField> + <reportElement x="0" y="1" width="100" height="15" uuid="c356083f-2a5e-4a3e-9b08-c7baf2b1381e"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{KINDOFCOMM}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="103" y="1" width="100" height="15" uuid="48bf1f6b-953a-44b6-9ebf-504203afa70d"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{COMMVALUE}]]></textFieldExpression> + </textField> + </band> + <band height="6"> + <line> + <reportElement x="0" y="2" width="555" height="1" uuid="632ccf1b-5e1c-49b6-9332-e9992b53e878"/> + <graphicElement> + <pen lineWidth="0.75" lineStyle="Dotted"/> + </graphicElement> + </line> + </band> + </detail> +</jasperReport> diff --git a/report/RPTJ_ORG/Kontaktpersonen.jrxml b/report/RPTJ_ORG/Kontaktpersonen.jrxml new file mode 100644 index 0000000000..1908bb8016 --- /dev/null +++ b/report/RPTJ_ORG/Kontaktpersonen.jrxml @@ -0,0 +1,57 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Kommunikationsdaten" pageWidth="555" pageHeight="802" columnWidth="555" leftMargin="0" rightMargin="0" topMargin="0" bottomMargin="0" uuid="c659b407-943a-4427-8fa5-032bff204ff4"> + <property name="ireport.zoom" value="1.6105100000000008"/> + <property name="ireport.x" value="0"/> + <property name="ireport.y" value="0"/> + <field name="PERSNAMECOMPLETE" class="java.lang.String"/> + <field name="PERSFUNCTION" class="java.lang.String"/> + <field name="PERSDEPARTMENT" class="java.lang.String"/> + <field name="PERSCOMM" class="java.lang.String"/> + <field name="CLIENTID" class="java.lang.String"/> + <field name="ORG_ID" class="java.lang.String"/> + <field name="RELATION_ID" class="java.lang.String"/> + <field name="COMMDATA" class="java.lang.String"/> + <background> + <band splitType="Stretch"/> + </background> + <detail> + <band height="16" splitType="Stretch"> + <textField isStretchWithOverflow="true"> + <reportElement x="345" y="1" width="116" height="15" uuid="4186db31-3a25-43f2-ae39-abca90ded430"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{PERSCOMM}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="1" width="100" height="15" uuid="c356083f-2a5e-4a3e-9b08-c7baf2b1381e"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{PERSNAMECOMPLETE}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="222" y="1" width="91" height="15" uuid="03d2241a-2aa6-4dbf-bad7-94c48837eae6"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{PERSDEPARTMENT}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="103" y="1" width="100" height="15" uuid="48bf1f6b-953a-44b6-9ebf-504203afa70d"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$F{PERSFUNCTION}]]></textFieldExpression> + </textField> + </band> + <band height="6"> + <line> + <reportElement x="0" y="2" width="555" height="1" uuid="632ccf1b-5e1c-49b6-9332-e9992b53e878"/> + <graphicElement> + <pen lineWidth="0.75" lineStyle="Dotted"/> + </graphicElement> + </line> + </band> + </detail> +</jasperReport> diff --git a/report/RPTJ_ORG/RPTJ_ORG.aod b/report/RPTJ_ORG/RPTJ_ORG.aod new file mode 100644 index 0000000000..abf4c1b374 --- /dev/null +++ b/report/RPTJ_ORG/RPTJ_ORG.aod @@ -0,0 +1,61 @@ +<?xml version="1.0" encoding="UTF-8"?> +<report xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.5" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/report/1.1.5"> + <name>RPTJ_ORG</name> + <title>Kundenstammblatt</title> + <description></description> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>%aditoprj%/report/RPTJ_ORG/icon.png</icon> + <iconInactive>%aditoprj%/report/RPTJ_ORG/iconInactive.png</iconInactive> + <reportData>%aditoprj%/report/RPTJ_ORG/reportData.jrxml</reportData> + <reportType>JASPER</reportType> + <subReports> + <subreport> + <name>Kontaktpersonen</name> + <reportData>%aditoprj%/report/RPTJ_ORG/Kontaktpersonen.jrxml</reportData> + </subreport> + <subreport> + <name>Historien</name> + <reportData>%aditoprj%/report/RPTJ_ORG/Historien.jrxml</reportData> + </subreport> + <subreport> + <name>Aufgaben</name> + <reportData>%aditoprj%/report/RPTJ_ORG/Aufgaben.jrxml</reportData> + </subreport> + <subreport> + <name>Kommunikationsdaten</name> + <reportData>%aditoprj%/report/RPTJ_ORG/Kommunikationsdaten.jrxml</reportData> + </subreport> + </subReports> + <images> + <image> + <name>myLogo</name> + <fileName>myLogo.png</fileName> + <imageData>%aditoprj%/report/RPTJ_ORG/myLogo.png</imageData> + </image> + <image> + <name>icon</name> + <fileName>icon.png</fileName> + <imageData>%aditoprj%/report/RPTJ_ORG/icon.png</imageData> + </image> + <image> + <name>iconInactive</name> + <fileName>iconInactive.png</fileName> + <imageData>%aditoprj%/report/RPTJ_ORG/iconInactive.png</imageData> + </image> + </images> + <ribbon> + <name>ribbon</name> + <ribbonTasks> + <ribbonTask> + <name>TASK_REPORT</name> + <showNavigationBar v="true" /> + <showZoom v="true" /> + <showExport v="true" /> + <showAux v="true" /> + <icon>REPORT_24</icon> + <enabled v="true" /> + <layoutPosition>POSITION_TOP</layoutPosition> + </ribbonTask> + </ribbonTasks> + </ribbon> +</report> diff --git a/report/RPTJ_ORG/icon.png b/report/RPTJ_ORG/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..fb2c020b8ea6942ed59355159cff09c47b04f859 GIT binary patch literal 209 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Gdx`!Ln`9dPITmIHV|+P{-D*E zx4T%?Hp<M__54%Kn4RLKY8KOeKFfBsx3O!PIo-i&hqB?ZxEW<H3Xi+C|I3t;N%0M? z_{4Un@Zju-%MTQ?rE1n);FMRC-0`@{T=(>^t%sF#zP``qX4+d?weMB?mlL-*8*~J; zWK-U<Tu{65G$0}U?Dkr2PwDh<#s;R?bG2Rx3l2oEh8r<AFWzAnVmx6f(2We9u6{1- HoD!M<#@tVr literal 0 HcmV?d00001 diff --git a/report/RPTJ_ORG/iconInactive.png b/report/RPTJ_ORG/iconInactive.png new file mode 100644 index 0000000000000000000000000000000000000000..7d700eef9e1815add48d2ca9b986888ae0c0d3dd GIT binary patch literal 193 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`9iA?ZAr*0JCkApg81OiY+RSkO zeEjmSt@RttcC6}st@ff>NXJuc%j<s*E|ac!&M7?b(argWL?#E1uEk>mXKx7m$Rgv{ zK4x<Y6&$+^{B}P(G%0TR(KeCwO>ybnS40KE3{D7YtkPE4+N5=s>9%I_J;(XePcE~L oNvMDF?QGMb?YHN%#@}E(n8lEMebdH0KsPaXy85}Sb4q9e0H@?kB>(^b literal 0 HcmV?d00001 diff --git a/report/RPTJ_ORG/myLogo.png b/report/RPTJ_ORG/myLogo.png new file mode 100644 index 0000000000000000000000000000000000000000..1378cecbb3519bf289edcc469e43f76c3eca6f83 GIT binary patch literal 9726 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 literal 0 HcmV?d00001 diff --git a/report/RPTJ_ORG/reportData.jrxml b/report/RPTJ_ORG/reportData.jrxml new file mode 100644 index 0000000000..e6431c7828 --- /dev/null +++ b/report/RPTJ_ORG/reportData.jrxml @@ -0,0 +1,315 @@ +<?xml version="1.0" encoding="UTF-8"?> +<jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Kundenstammblatt" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> + <property name="ireport.zoom" value="1.9487171000000014"/> + <property name="ireport.x" value="0"/> + <property name="ireport.y" value="0"/> + <parameter name="myAddr" class="java.lang.String"/> + <parameter name="ORGAddr" class="java.lang.String"/> + <parameter name="ORGAttr" class="java.lang.String"/> + <parameter name="ORGComm" class="java.lang.String"/> + <parameter name="ORGID" class="java.lang.String"/> + <parameter name="RELID" class="java.lang.String"/> + <parameter name="CLIENTID" class="java.lang.String"/> + <parameter name="adito.datasource.subdataTask" class="java.lang.Object"/> + <parameter name="adito.datasource.subdataComm" class="java.lang.Object"/> + <parameter name="adito.datasource.subdataPers" class="java.lang.Object"/> + <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> + <defaultValueExpression><![CDATA["C:\\entwicklungszweige\\0.0\\project\\xRM-Basic2019\\report\\RPTJ_ORG\\"]]></defaultValueExpression> + </parameter> + <parameter name="adito.image.myLogo" class="java.lang.String"/> + <parameter name="adito.datasource.subdataHist" class="java.lang.Object"/> + <parameter name="INFO" class="java.lang.String"/> + <background> + <band splitType="Stretch"/> + </background> + <pageHeader> + <band height="106" splitType="Stretch"> + <printWhenExpression><![CDATA[true]]></printWhenExpression> + <image scaleImage="RetainShape" hAlign="Center"> + <reportElement x="182" y="0" width="174" height="50" uuid="3a34d632-09a6-44c2-b8e4-38d8138af87d"/> + <imageExpression><![CDATA[$P{adito.image.myLogo}]]></imageExpression> + </image> + <textField> + <reportElement x="0" y="70" width="555" height="20" forecolor="#999999" uuid="d8a7a770-46d6-4bd7-bc79-a98285ded43e"/> + <textElement textAlignment="Center" verticalAlignment="Middle"> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{myAddr}]]></textFieldExpression> + </textField> + <frame> + <reportElement x="0" y="70" width="555" height="20" uuid="53d00eed-675d-4f66-87c0-d945bfd92889"/> + <box> + <pen lineWidth="1.0" lineColor="#666666"/> + <topPen lineWidth="1.0" lineColor="#666666"/> + <leftPen lineWidth="1.0" lineColor="#666666"/> + <bottomPen lineWidth="1.0" lineColor="#666666"/> + <rightPen lineWidth="1.0" lineColor="#666666"/> + </box> + </frame> + </band> + </pageHeader> + <columnHeader> + <band height="80" splitType="Stretch"> + <textField> + <reportElement x="0" y="14" width="167" height="20" forecolor="#999999" uuid="db320a72-fac5-477a-8c9e-19d15a8d250f"/> + <textElement> + <font fontName="Segoe UI" size="14"/> + </textElement> + <textFieldExpression><![CDATA[$R{Customer Base Sheet}]]></textFieldExpression> + </textField> + <textField isStretchWithOverflow="true"> + <reportElement x="0" y="46" width="100" height="15" uuid="cbc5f584-e9ee-4062-b6f5-7fd3a6e918f4"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{ORGAddr}]]></textFieldExpression> + </textField> + <textField isStretchWithOverflow="true"> + <reportElement x="344" y="61" width="200" height="15" uuid="8d54ea3a-8c35-48a5-a3da-b77ff53591b7"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{INFO}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="344" y="46" width="92" height="15" uuid="a73a7562-7435-412e-b987-b8ba0980a7b7"/> + <textElement> + <font fontName="Segoe UI" size="8" isBold="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Information}]]></textFieldExpression> + </textField> + </band> + </columnHeader> + <detail> + <band height="39"> + <line> + <reportElement x="0" y="32" width="555" height="1" uuid="7a549c9f-9902-4f32-97eb-297a794d3498"/> + </line> + <textField> + <reportElement x="0" y="15" width="100" height="15" uuid="ef198107-4f82-49ad-96f6-8afb09be58f1"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Type}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="103" y="15" width="100" height="15" uuid="b42a9c7d-fd06-4e16-a32e-61aa3ffcf299"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Value}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="0" width="103" height="15" forecolor="#0033FF" uuid="7c9e61d7-c823-4fbc-85ee-5a5a73a7999c"/> + <textElement> + <font fontName="Segoe UI" size="8" isUnderline="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Communication data}]]></textFieldExpression> + </textField> + </band> + <band height="21"> + <subreport> + <reportElement x="0" y="0" width="544" height="21" uuid="d1da0bc7-7a62-4ceb-886b-dba0ebbef275"/> + <dataSourceExpression><![CDATA[$P{adito.datasource.subdataComm}]]></dataSourceExpression> + <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Kommunikationsdaten.jasper"]]></subreportExpression> + </subreport> + </band> + <band height="42" splitType="Stretch"> + <textField> + <reportElement x="0" y="0" width="100" height="15" forecolor="#0033FF" uuid="9e3a2dda-7b73-41c5-a840-f356a2373e23"/> + <textElement> + <font fontName="Segoe UI" size="8" isUnderline="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Contacts}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="15" width="100" height="15" uuid="f7f6caee-b1f5-487e-8d1a-738c533b214d"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Name}]]></textFieldExpression> + </textField> + <line> + <reportElement x="0" y="35" width="555" height="1" uuid="4b698800-cc36-4830-8bbf-d040f890ddbf"/> + </line> + <textField> + <reportElement x="103" y="15" width="100" height="15" uuid="e12cde69-8455-4dca-a760-c1eecb9a8034"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Position}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="221" y="15" width="100" height="15" uuid="0a43120b-40f3-4c5a-a7c9-15540fda5ff6"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Department}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="344" y="15" width="160" height="15" uuid="72c93546-9005-4051-9f52-28e10f8f54a5"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Communication data}]]></textFieldExpression> + </textField> + </band> + <band height="21"> + <subreport> + <reportElement x="0" y="0" width="555" height="21" uuid="f08ee4f5-2a1c-49c4-bed3-cb7d377afcd3"/> + <dataSourceExpression><![CDATA[$P{adito.datasource.subdataPers}]]></dataSourceExpression> + <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Kontaktpersonen.jasper"]]></subreportExpression> + </subreport> + </band> + <band height="40"> + <textField> + <reportElement x="0" y="2" width="100" height="15" forecolor="#0033FF" uuid="60192885-ecfd-46cd-9de1-67cd2e285d1b"/> + <textElement> + <font fontName="Segoe UI" size="8" isUnderline="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Activity}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="19" width="100" height="15" uuid="fbf2402f-6b63-48b9-814d-22d7f49d81db"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Date}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="103" y="19" width="100" height="15" uuid="652de0c2-220e-4bfc-a983-7335638307a5"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Contact type}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="221" y="19" width="100" height="15" uuid="eca234d8-ad5c-4b2e-aecd-81a9adff5f9d"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Employee}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="344" y="19" width="100" height="15" uuid="310e6639-fae6-4724-b353-d793069819b7"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Remark}]]></textFieldExpression> + </textField> + <line> + <reportElement x="0" y="36" width="555" height="1" uuid="419b9760-399c-4478-9a82-c1fd11d72994"/> + </line> + </band> + <band height="24"> + <subreport> + <reportElement x="0" y="0" width="555" height="22" uuid="a47de115-bd5f-4a9f-95a5-2cb170fa0b9a"/> + <dataSourceExpression><![CDATA[$P{adito.datasource.subdataHist}]]></dataSourceExpression> + <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Historien.jasper"]]></subreportExpression> + </subreport> + </band> + <band height="19"> + <textField> + <reportElement x="0" y="2" width="100" height="15" forecolor="#0033FF" uuid="4b8833cc-3fda-4a75-ae61-83fbfe995f72"/> + <textElement> + <font fontName="Segoe UI" size="8" isUnderline="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Attributes}]]></textFieldExpression> + </textField> + </band> + <band height="18"> + <textField isStretchWithOverflow="true"> + <reportElement x="10" y="5" width="534" height="13" uuid="1ef0e703-9180-4540-b094-e1bcc9983001"/> + <textElement textAlignment="Left" verticalAlignment="Middle"> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{ORGAttr}]]></textFieldExpression> + </textField> + <frame> + <reportElement stretchType="RelativeToBandHeight" x="0" y="2" width="555" height="16" uuid="62244829-371e-4972-b91d-cca3c857b15e"/> + <box> + <pen lineWidth="1.0"/> + <topPen lineWidth="1.0"/> + <leftPen lineWidth="1.0"/> + <bottomPen lineWidth="1.0"/> + <rightPen lineWidth="1.0"/> + </box> + </frame> + </band> + <band height="42"> + <textField> + <reportElement x="0" y="20" width="100" height="15" uuid="ea868aed-1495-42b8-a398-b0a62ac0de80"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Subject}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="117" y="20" width="161" height="15" uuid="a2509776-a2f4-465d-851b-617468e91c3c"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Description}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="295" y="20" width="100" height="15" uuid="b3260378-eced-4883-ad0b-8692a3f83547"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Status}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="444" y="20" width="100" height="15" uuid="653a5cd5-4209-4570-b6c5-037285921d1a"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{responsible}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="0" y="4" width="100" height="15" forecolor="#0033FF" uuid="41f65e5b-23a5-4d39-8f9a-267ccab96c76"/> + <textElement> + <font fontName="Segoe UI" size="8" isUnderline="true"/> + </textElement> + <textFieldExpression><![CDATA[$R{Tasks}]]></textFieldExpression> + </textField> + <line> + <reportElement x="0" y="38" width="555" height="1" uuid="a3b5c9fc-f1a8-41bf-a3a7-efaab215acb8"/> + </line> + </band> + <band height="26"> + <subreport> + <reportElement x="0" y="0" width="555" height="24" uuid="f39de822-874b-4624-89ae-d7300649f0fd"/> + <dataSourceExpression><![CDATA[$P{adito.datasource.subdataTask}]]></dataSourceExpression> + <subreportExpression><![CDATA[$P{SUBREPORT_DIR} + "Aufgaben.jasper"]]></subreportExpression> + </subreport> + </band> + </detail> + <pageFooter> + <band height="38" splitType="Stretch"> + <textField pattern="EEEEE dd MMMMM yyyy"> + <reportElement x="378" y="17" width="102" height="20" forecolor="#999999" uuid="84480a49-acb2-48cd-9885-540b816d74f1"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> + </textField> + <textField> + <reportElement x="480" y="17" width="45" height="20" forecolor="#999999" uuid="047a5366-fd18-439d-847d-8a20efb74d34"/> + <textElement textAlignment="Right"> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[$R{Seite}+" "+$V{PAGE_NUMBER}+" "+$R{von}]]></textFieldExpression> + </textField> + <textField evaluationTime="Report"> + <reportElement x="525" y="17" width="30" height="20" forecolor="#999999" uuid="fa23c12f-1e58-45d6-962d-0bbf70bc0032"/> + <textElement> + <font fontName="Segoe UI" size="8"/> + </textElement> + <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> + </textField> + <line> + <reportElement x="0" y="9" width="555" height="1" forecolor="#999999" uuid="b45a4621-34b5-4c70-85e6-4fda980647ce"/> + </line> + </band> + </pageFooter> +</jasperReport> -- GitLab