diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index 6f51538041ffc0b890e44450ea85fd73235b5185..2b98d6bd2c33292ef54ca82d1d5c8f624b353cbf 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -171,11 +171,6 @@ </entityParameter> <entityConsumer> <name>AppointmentLinks</name> - <dependency> - <name>dependency</name> - <entityName>AppointmentLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>AppointmentId_param</name> @@ -187,6 +182,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AppointmentLink_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteSeries</name> @@ -254,6 +254,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e5bfa3bbe7f58d2ffaf401248014a6d1a560d2de --- /dev/null +++ b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("true"); \ No newline at end of file diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index 3d5ff22eafe395331b6e6d52bf359b60c6d91098..709bfac8d00e3b805a383dc0c78c0cb8b91a07d1 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("Employee_lib"); import("system.tools"); import("system.db"); @@ -28,14 +29,14 @@ if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param")) //@TODO Icon result.object([ - buildEntry(entry, masterEntry) + CalendarUtil.buildEntry(entry, masterEntry) ]); } else if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "") { var selectedids = vars.get("$local.idvalues"); - result.object([buildEntry(calendars.getEntry(selectedids, null, null), null)]); + result.object([CalendarUtil.buildEntry(calendars.getEntry(selectedids, null, null), null)]); } else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) @@ -43,7 +44,7 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) var contactid = EmployeeUtils.getCurrentContactId(); appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", contactid) - result.object(buildEntriesFromUids(appointmentSelect.table())); + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); } /** @@ -52,78 +53,5 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if(vars.getString("$param.LinkedObjectId_param") != undefined) { appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param") - result.object(buildEntriesFromUids(appointmentSelect.table())); -} - -function buildEntriesFromUids(appointmentUids) -{ - var entryArray = new Array(appointmentUids.length); - - for(var i = 0; i < appointmentUids.length; i++) - entryArray[i] = buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); - - return entryArray; -} - - -function buildEntry(pEntry, pMasterentry) -{ - var uid = pEntry[calendars.ID]; - var summary = pEntry[calendars.SUMMARY]; - var attendees = pEntry[calendars.AFFECTEDUSERS]; - var startdate = pEntry[calendars.DTSTART]; - var enddate = pEntry[calendars.DTEND]; - var links = pEntry[calendars.LINKS]; - var description = pEntry[calendars.DESCRIPTION]; - if(pEntry[calendars.ORGANIZER2] != undefined) - var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; - if(pEntry[calendars.USER2] != undefined) - var owner = JSON.stringify(pEntry[calendars.USER2]); - var status = pEntry[calendars.STATUS]; - var location = pEntry[calendars.LOCATION]; - var reminder = pEntry[calendars.REMINDER_DURATION]; - var remindercheck = pEntry[calendars.HASREMINDER] - var classification = pEntry[calendars.CLASSIFICATION]; - var transparency = pEntry[calendars.TRANSPARENCY]; - var categories = pEntry[calendars.CATEGORIES]; - var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; - - var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null - var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null - - // Recurrence - var recurrenceID = pEntry[calendars.RECURRENCEID]; - var rrule = null; - if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master - rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; - } else { - rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; - } - - return [ - uid, - attendees.length, - startdate, - enddate, - summary, - organizer, - owner, - attendees, - status, - description, - location, - '', - isAllDay, - classification, - transparency, - categories, - reminder, - remindercheck, - rrule, - recurrenceID, - null, - masterBegin, - masterEnd, - null - ]; + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); } diff --git a/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js index afff252f743faff586199e13333a707e5d52c51e..d6495461f9409c2d28cd62951d09cc6797a4eb69 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("system.db"); import("Employee_lib"); import("Sql_lib"); @@ -5,7 +6,7 @@ import("system.vars"); import("system.result"); var rowCount = "0"; -var cond = newSelect("count(APPOINTMENT_ID)") +var cond = newSelect("APPOINTMENT_ID") .from("AB_APPOINTMENTLINK"); if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) @@ -13,7 +14,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", EmployeeUtils.getCurrentContactId()); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** @@ -22,7 +23,7 @@ else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if (vars.getString("$param.LinkedObjectId_param") != undefined) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param"); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** * Will be used, if the user is operating the calendar. diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod index bae83161b6a2b2580cbc7734093346ce3596a028..60d85496e220808f40709d4fd7fc80bbba176c0a 100644 --- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -121,6 +121,13 @@ <iconId>VAADIN:BAN</iconId> <tooltipProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/removewithcommrestriction/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing mailing</title> + <onActionProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> + </entityActionField> </children> </entityActionGroup> <entityField> diff --git a/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cbe91449e5c258643491b9020a7bc6d1b534e7ec --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,34 @@ +import("Util_lib"); +import("system.entities"); +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +var rows = vars.get("$sys.selectionRows"); +var filter = vars.get("$sys.filter").filter; +var targets = []; + +if (Utils.isNullOrEmpty(rows)) +{ + let loadConfig = entities.createConfigForLoadingRows() + .entity("BulkMailRecipient_entity") + .provider("BulkMailRecipients") + .fields(["CONTACT_ID", "TARGETCONTEXT"]) + .addParameter("BulkMailId_param", vars.get("$param.BulkMailId_param")); + + if (filter) + loadConfig.filter(JSON.stringify(filter)); + + rows = entities.getRows(loadConfig); +} + +rows = rows.map(function (row) +{ + return [row["CONTACT_ID"], row["TARGETCONTEXT"]]; +}); + + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(rows), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 3c8e5a5655f3c8320c4188939e9588988e7b9b44..4d3b86ba02c4c01afcd977df57bbd15e493c3c08 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -177,6 +177,13 @@ <tooltip>Update campaign step</tooltip> <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing mailing</title> + <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> + </entityActionField> </children> </entityActionGroup> <entityField> diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..40e60ff20d2ca20af3b447981c2a988959d2de63 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,36 @@ +import("Util_lib"); +import("system.entities"); +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +var rows = vars.get("$sys.selectionRows"); +var filter = vars.get("$sys.filter").filter; +var targets = []; + +if (Utils.isNullOrEmpty(rows)) +{ + let loadConfig = entities.createConfigForLoadingRows() + .entity("CampaignParticipant_entity") + .provider("CampaignParticipantsProvider") + .fields(["CONTACT_ID", "CONTACTCONTEXT"]) + .addParameter("CampaignId_param", vars.get("$param.CampaignId_param")) + .addParameter("CampaignStepId_param", vars.get("$param.CampaignStepId_param")) + .addParameter("ContactId_param", vars.get("$param.ContactId_param")); + + if (filter) + loadConfig.filter(JSON.stringify(filter)); + + rows = entities.getRows(loadConfig); +} + +rows = rows.map(function (row) +{ + return [row["CONTACT_ID"], row["CONTACTCONTEXT"]]; +}); + + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(rows), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod index 9cf1d9cca301bb4240acea90684327824bbd201d..dbb9e49a3b635be85e5615422520d9f08d387aac 100644 --- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod +++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod @@ -321,6 +321,7 @@ <entityConsumer> <name>DocumentTemplatePlaceOfUse</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js</onValidation> <dependency> <name>dependency</name> <entityName>DocumentTemplatePlaceOfUse_entity</entityName> diff --git a/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..a40be7eb7d8e21b088a3cf4683b41849239e35ee --- /dev/null +++ b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js @@ -0,0 +1,14 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +var usages = EntityConsumerRowsHelper.getCurrentConsumerRows("DocumentTemplatePlaceOfUse", ["PLACEOFUSE"]); +var hasMarketingWorkflowUsage = usages.some(function (usage) +{ + return usage["PLACEOFUSE"] == "MarketingWorkflowLauncher"; +}); +if (hasMarketingWorkflowUsage && !vars.get("$field.Content").includes("{@workflowActionLink@}")) +{ + result.string(translate.text("The template must contain the placeholder for the worklow-link to use it with the marketing workflow")); +} diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 420157a37135f2b6b3fd1105810584e32ac6935e..cba9173b17cbedf17fc79b500cd69af232cb8c10 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -144,6 +144,26 @@ <entityProvider> <name>Documents</name> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>AssignmentName_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <expose v="true" /> + <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AssignmentTable_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Keyword_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1eae1907-53ea-4d6f-bcf1-772052365020</name> @@ -225,7 +245,7 @@ </entityDependency> <entityDependency> <name>2e6fcf27-ee98-4f7d-a99d-7ce02774076b</name> - <entityName>UserhelpResources</entityName> + <entityName>UserhelpResources_entity</entityName> <fieldName>Documents</fieldName> <isConsumer v="false" /> </entityDependency> @@ -242,12 +262,23 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>MainDocuments</name> + <recordContainer>jdito</recordContainer> <children> + <entityParameter> + <name>Keyword_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> + </entityParameter> <entityParameter> <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> @@ -258,14 +289,10 @@ <expose v="true" /> </entityParameter> <entityParameter> - <name>Keyword_param</name> - <expose v="true" /> + <name>DisallowCreate_param</name> + <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>MainDocuments</name> - <recordContainer>jdito</recordContainer> <dependencies> <entityDependency> <name>87d738a5-5d5e-425e-b013-007371475a38</name> @@ -310,33 +337,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Keyword_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> - <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>AssignmentRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisallowCreate_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DisallowCreate_param</name> @@ -346,14 +346,6 @@ <entityProvider> <name>SingleDocument</name> <titlePlural>Document</titlePlural> - <dependencies> - <entityDependency> - <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> - <entityName>SerialLetter_entity</entityName> - <fieldName>Documents</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AssignmentName_param</name> @@ -365,6 +357,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> + <entityName>SerialLetter_entity</entityName> + <fieldName>Documents</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/EmployeeToken_entity/EmployeeToken_entity.aod b/entity/EmployeeToken_entity/EmployeeToken_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..0303a7a0bc5d1bd5989b3bdc68d335f64e921ad4 --- /dev/null +++ b/entity/EmployeeToken_entity/EmployeeToken_entity.aod @@ -0,0 +1,131 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>EmployeeToken_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>User token</title> + <titlePlural>User tokens</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>ID</name> + <title>Token</title> + </entityField> + <entityField> + <name>VALID_STATUS_ICON</name> + <title>Valid</title> + <colorProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/valid_status_icon/colorProcess.js</colorProcess> + <contentType>IMAGE</contentType> + <mandatory v="false" /> + <displayValueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/valid_status_icon/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>VALID_TO</name> + <title>Valid to</title> + <contentType>DATE</contentType> + <mandatory v="false" /> + </entityField> + <entityField> + <name>GROUP_ID</name> + <title>Group</title> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id/dropDownProcess.js</dropDownProcess> + <textInputAllowed v="true" /> + <stateProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>LOGIN_USER_ID</name> + <title>User</title> + <valueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/login_user_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>VALID_FROM</name> + <title>Valid from</title> + <contentType>DATE</contentType> + <mandatory v="false" /> + <valueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/valid_from/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>EmployeeTokenProvider</name> + <dependencies> + <entityDependency> + <name>08c3e88c-5119-477e-8374-3f89bbc4ded0</name> + <entityName>Employee_entity</entityName> + <fieldName>EmployeeTokens</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>employeeId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>VALID</name> + <title>Valid</title> + <contentType>BOOLEAN</contentType> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/valid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>GROUP_ID_DISPLAY</name> + <title>Group</title> + <stateProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id_display/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/EmployeeToken_entity/entityfields/group_id_display/displayValueProcess.js</displayValueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>_____SYSTEMALIAS</alias> + <conditionProcess>%aditoprj%/entity/EmployeeToken_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <linkInformation> + <linkInformation> + <name>98f70a7c-4e43-4984-ad69-44339150f1ee</name> + <tableName>ASYS_USERTOKEN</tableName> + <primaryKey>ID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>ID.value</name> + <recordfield>ASYS_USERTOKEN.ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VALID_STATUS_ICON.value</name> + <recordfield>ASYS_USERTOKEN.VALID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VALID_TO.value</name> + <recordfield>ASYS_USERTOKEN.VALID_TO</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>GROUP_ID.value</name> + <recordfield>ASYS_USERTOKEN.GROUP_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>LOGIN_USER_ID.value</name> + <recordfield>ASYS_USERTOKEN.LOGIN_USER_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VALID_FROM.value</name> + <recordfield>ASYS_USERTOKEN.VALID_FROM</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>VALID.value</name> + <recordfield>ASYS_USERTOKEN.VALID</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/EmployeeToken_entity/entityfields/group_id/displayValueProcess.js b/entity/EmployeeToken_entity/entityfields/group_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b8857b8ffd70bbb62ff1dce0e3eff18072071bc1 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.translate"); +import("system.result"); + +result.string(translate.text(vars.get("$this.value"))); diff --git a/entity/EmployeeToken_entity/entityfields/group_id/dropDownProcess.js b/entity/EmployeeToken_entity/entityfields/group_id/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..623334e4f6e5cbcc5bfb6cd3b81bcd2c5e77c935 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id/dropDownProcess.js @@ -0,0 +1,16 @@ +import("system.vars"); +import("system.logging"); +import("system.translate"); +import("system.result"); + + +var rawElements = ["#login"]; + +var resultName = [[]]; + +for (var i = 0; i < rawElements.length; i++) +{​​​​​ + var translation = translate.text(rawElements[i]); + resultName[i] = [rawElements[i], translation]; +}​​​​​ +result.object(resultName); \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/group_id/stateProcess.js b/entity/EmployeeToken_entity/entityfields/group_id/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..95a51884cfd65c5baad3dfd7052b2eaa8d88c014 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id/stateProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +if (vars.get("$this.value") == "#rememberme") +{ + result.object(neon.COMPONENTSTATE_INVISIBLE); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/group_id/valueProcess.js b/entity/EmployeeToken_entity/entityfields/group_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0a5687a87183f89fa8fb0bc1eb973c624f8bf550 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id/valueProcess.js @@ -0,0 +1,12 @@ +import("system.translate"); +import("system.datetime"); +import("system.neon"); +import("system.result"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +{ + result.string("#login"); +} + + \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/group_id_display/displayValueProcess.js b/entity/EmployeeToken_entity/entityfields/group_id_display/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bcdae240e819ca56b8698b135a391247a52abf12 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id_display/displayValueProcess.js @@ -0,0 +1,4 @@ +import("system.translate"); +import("system.result"); + +result.string(translate.text("#rememberme")); diff --git a/entity/EmployeeToken_entity/entityfields/group_id_display/stateProcess.js b/entity/EmployeeToken_entity/entityfields/group_id_display/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3193715cde37ad50aa8d4e379ad0e1ef98d80919 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/group_id_display/stateProcess.js @@ -0,0 +1,13 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("system.neon"); + +if (vars.get("$field.GROUP_ID") == "#rememberme") +{ + vars.set("$field.GROUP_ID_DISPLAY", translate.text("#rememberme")); + result.object(neon.COMPONENTSTATE_READONLY); + +} else { + result.object(neon.COMPONENTSTATE_INVISIBLE); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/login_user_id/valueProcess.js b/entity/EmployeeToken_entity/entityfields/login_user_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3559d3173e4aec628d202cba352b9d1dacd36ebb --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/login_user_id/valueProcess.js @@ -0,0 +1,9 @@ +import("system.util"); +import("system.neon"); +import("system.result"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) // &&!vars.get("$this.value")) +{ + result.string(vars.get("$param.employeeId_param")); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/valid/valueProcess.js b/entity/EmployeeToken_entity/entityfields/valid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..365ab4d8ed55e67e2976d51f5f344c39b87fb03c --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/valid/valueProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +{ + result.string("1"); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/valid_from/valueProcess.js b/entity/EmployeeToken_entity/entityfields/valid_from/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0859e9d5c4e7d5b3df77c352c2aa455d1d0ff090 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/valid_from/valueProcess.js @@ -0,0 +1,9 @@ +import("system.datetime"); +import("system.neon"); +import("system.result"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +{ + result.object(datetime.date()); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/entityfields/valid_status_icon/colorProcess.js b/entity/EmployeeToken_entity/entityfields/valid_status_icon/colorProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..deb8250edaf71db8d987585811d8032aefac62f5 --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/valid_status_icon/colorProcess.js @@ -0,0 +1,13 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +if(vars.get("$field.VALID") == 1) +{ + result.string(neon.PRIORITY_LOW_COLOR); +} +else +{ + result.string(neon.PRIORITY_HIGH_COLOR); +} + diff --git a/entity/EmployeeToken_entity/entityfields/valid_status_icon/displayValueProcess.js b/entity/EmployeeToken_entity/entityfields/valid_status_icon/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..db3e32fd16f6d4023d039fcff0f6b950f0e517df --- /dev/null +++ b/entity/EmployeeToken_entity/entityfields/valid_status_icon/displayValueProcess.js @@ -0,0 +1,12 @@ +import("system.result"); +import("system.vars"); + +// Now show warning always, if any commrestriction exists. No matter which medium the current step has. +if (vars.get("$field.VALID") == 1) +{ + result.string("VAADIN:CHECK"); +} +else +{ + result.string("VAADIN:CLOSE"); +} \ No newline at end of file diff --git a/entity/EmployeeToken_entity/recordcontainers/db/conditionProcess.js b/entity/EmployeeToken_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1fdb9ffc999c069fc4cd2092f6ad030980580319 --- /dev/null +++ b/entity/EmployeeToken_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,23 @@ +import("system.db"); +import("system.neon"); +import("system.result"); +import("system.vars"); +import("Employee_lib"); +import("Sql_lib"); + + +var userTitle = vars.get("$param.employeeId_param"); +if(userTitle) +{ + result.string(newWhere("ASYS_USERTOKEN.LOGIN_USER_ID", vars.get("$param.employeeId_param")).toString()); +//} else if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { +// var condition = new SqlBuilder() +// .whereIfSet("STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") +// .andIfSet("STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") +// ; +// +// result.string(condition.toString()); +//} else { +// +// result.string(newWhere().toString()); +} \ No newline at end of file diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index c3144f1349c9b1618e1f5d48999a1152564db3a8..c6c1df49e89ca1dde5d9de14f50e8f38a120fe4c 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Employee_entity/documentation.adoc</documentation> <title>Employee</title> + <siblings /> <grantDeleteProcess>%aditoprj%/entity/Employee_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Employee_entity/contentTitleProcess.js</contentTitleProcess> <afterUiInit>%aditoprj%/entity/Employee_entity/afterUiInit.js</afterUiInit> @@ -395,6 +396,20 @@ <name>DepartmentAttrIdByEmployeeContactId_param</name> <expose v="true" /> </entityParameter> + <entityConsumer> + <name>EmployeeTokens</name> + <dependency> + <name>dependency</name> + <entityName>EmployeeToken_entity</entityName> + <fieldName>EmployeeTokenProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>employeeId_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js b/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..470eab86ed8cf58f3bffe0ee46e6b1f68163ac3f --- /dev/null +++ b/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.TITLE")); diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod index 40b9b39c8993d2b421f368b11fca27d80abb24f5..791b08d72b2e85a807d11a6c47284056ae16a977 100644 --- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -14,7 +14,7 @@ </entityProvider> <entityField> <name>DOCUMENTTEMPLATE_ID</name> - <title>Document template</title> + <title>Document Template</title> <consumer>EmailTemplates</consumer> <mandatory v="true" /> <state>EDITABLE</state> @@ -80,6 +80,7 @@ <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js index b81df3d4fb93fc9608febd7783247052a61d4acd..cea637a710a0e3e0903248241654aec944c88137 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js @@ -2,6 +2,7 @@ import("system.vars"); import("system.result"); var variables = { - documentTemplate: vars.get("$field.DOCUMENTTEMPLATE_ID") + documentTemplateId: vars.get("$field.DOCUMENTTEMPLATE_ID"), + originUrl: vars.get("$sys.origin") }; result.string(JSON.stringify(variables)); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js index 6a28aafa528aa4130e913b642f80e04cfadc8b19..cca5f0e8d7ce5b6b8bb2ad60f3ffb068c4c6f1a1 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js @@ -1,13 +1,17 @@ import("Util_lib"); import("system.vars"); import("system.result"); +import("FilterViewAction_lib"); var context = vars.get("$param.ObjectType_param"); -var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")) || []; -targets = targets.map(function (targetId) +var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")); +var filter = Utils.parseJSON(vars.get("$param.ObjectFilter_param")); + +targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (targetId) { if (Utils.isString(targetId)) return [targetId, context]; //todo: context dynamic (eg for participants) return targetId; }); + result.string(JSON.stringify(targets)); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 4d5db6ed1a8789383791d9793b7c5791ae8f30a6..50afcd2e32295cc01c67e21a154d33520e99a7ce 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -812,6 +812,10 @@ <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityConsumer> @@ -955,6 +959,13 @@ <tooltip>Export fields of this table</tooltip> <tooltipProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing mailing</title> + <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> + </entityActionField> </children> </entityActionGroup> <entityActionField> diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2b04867cc90fd72a300747605800b32664d4b5b4 --- /dev/null +++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,9 @@ +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..15b1f8d0322593145f40d707c61dfdfd9babf0fe --- /dev/null +++ b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index c66ce949329c5b9e71486cb5802b41b0b2244ddf..42f436e7093dbe2303fabd9df2a098fc792ca049 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -884,6 +884,10 @@ <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityField> @@ -1099,9 +1103,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Marketing Workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> diff --git a/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..15b1f8d0322593145f40d707c61dfdfd9babf0fe --- /dev/null +++ b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js index 3e462ab4498eb4215bac2daa8457aee59ae8cd2a..2b04867cc90fd72a300747605800b32664d4b5b4 100644 --- a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js +++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -4,5 +4,6 @@ import("system.neon"); neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), "ObjectType_param": ContextUtils.getCurrentContextId() }); \ No newline at end of file diff --git a/entity/UserhelpResources/UserhelpResources.aod b/entity/UserhelpResources_entity/UserhelpResources_entity.aod similarity index 70% rename from entity/UserhelpResources/UserhelpResources.aod rename to entity/UserhelpResources_entity/UserhelpResources_entity.aod index 7775d3fd5a4ba8d43ec112062c7772b437bd68c9..32f253d41162e3e5c8b4e33f1bcba45bdc803965 100644 --- a/entity/UserhelpResources/UserhelpResources.aod +++ b/entity/UserhelpResources_entity/UserhelpResources_entity.aod @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>UserhelpResources</name> + <name>UserhelpResources_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/UserhelpResources/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/UserhelpResources_entity/documentation.adoc</documentation> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -12,21 +12,21 @@ </entityField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UserhelpResources/documentation.adoc b/entity/UserhelpResources_entity/documentation.adoc similarity index 100% rename from entity/UserhelpResources/documentation.adoc rename to entity/UserhelpResources_entity/documentation.adoc diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod index f1640dc1aacfcbb6ebd9de2ce5afb3d6ca8b92c9..e5749fe5101007e83c45d26c9f24bd15561458b1 100644 --- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -88,6 +88,7 @@ <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/WorkflowTask_entity/afterSave.js b/entity/WorkflowTask_entity/afterSave.js index 383331b295d04ac28a4ea7a170827b2ce9d6e4c2..61b54c53434b45f42ffd7184e88c153966cfac5c 100644 --- a/entity/WorkflowTask_entity/afterSave.js +++ b/entity/WorkflowTask_entity/afterSave.js @@ -30,9 +30,9 @@ if (entityData["FORMRESULT"]) else { var params = { - "TaskTitle_param" : rowData["NAME"] + "TaskTitle_param": entityData["NAME"] }; //if you try to open the task now, it will display "Task done" - neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [rowData["UID"]], neon.OPERATINGSTATE_VIEW, params); + neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [entityData["UID"]], neon.OPERATINGSTATE_VIEW, params); } } \ No newline at end of file diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b563a3076d29b855c8dfeda7e01fccac5bb6025d..5ae81ef6a8a2856d375b73be7156726e401553e4 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -2795,6 +2795,10 @@ <key>new</key> <value>neu</value> </entry> + <entry> + <key>Start marketing mailing</key> + <value>Marketing Mailing starten</value> + </entry> <entry> <key>Adviser</key> <value>Berater</value> @@ -6568,7 +6572,7 @@ </entry> <entry> <key>Print reminder</key> - <value>Mahnung drucken</value> + <value>Mahnung anzeigen</value> </entry> <entry> <key>Rech.-Betrag</key> @@ -6628,7 +6632,7 @@ </entry> <entry> <key>This error should never appear - contact administrator (PermissionDetail_entity.PermissionAction.onValidation).</key> - <value>Dieser Fehler sollte nie erscheinen - kontaktieren sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> + <value>Dieser Fehler sollte nie erscheinen - kontaktieren Sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> </entry> <entry> <key>Empty actions are invalid!</key> @@ -9678,6 +9682,14 @@ Bitte Datumseingabe prüfen</value> <key>Outstanding Amount</key> <value>Offener Betrag</value> </entry> + <entry> + <key>#rememberme</key> + <value>Angemeldet bleiben</value> + </entry> + <entry> + <key>#login</key> + <value>Login Token</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index cf8d0df31f43a9a569871c3e265165a6bf38e44a..193aaea85b4963c84362c964b8e24578e77c0212 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7377,6 +7377,14 @@ <entry> <key>Outstanding Amount</key> </entry> + <entry> + <key>#rememberme</key> + <value>Stay logged in</value> + </entry> + <entry> + <key>#login</key> + <value>Login token</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/EmployeeToken/EmployeeToken.aod b/neonContext/EmployeeToken/EmployeeToken.aod new file mode 100644 index 0000000000000000000000000000000000000000..61348f1c4bae1052b4a292c41da61cd4309f34ae --- /dev/null +++ b/neonContext/EmployeeToken/EmployeeToken.aod @@ -0,0 +1,18 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>EmployeeToken</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>EmployeeTokenFilter_view</filterView> + <editView>EmployeeTokenEdit_view</editView> + <entity>EmployeeToken_entity</entity> + <references> + <neonViewReference> + <name>3ba4cdfb-ed9e-4bdf-bb03-4a9106ef67d6</name> + <view>EmployeeTokenEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>88ca4edd-e890-4052-b66a-ec277956853f</name> + <view>EmployeeTokenFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod index bad0c03850983d94a74b3d3af4896308fb1e2086..e200a8a70f878ecb8c691752d3585cf3880e5bef 100644 --- a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod +++ b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MarketingWorkflowLauncher</name> - <title>f</title> + <title>Marketing workflow</title> <majorModelMode>DISTRIBUTED</majorModelMode> <entity>MarketingWorkflowLauncher_entity</entity> <references> diff --git a/neonContext/Userhelp/Userhelp.aod b/neonContext/Userhelp/Userhelp.aod index 435de68c2c1e230ca426a074593bb1004a7ebf6d..057b38dda494f9366cb2e2f617314104f8fd2dd3 100644 --- a/neonContext/Userhelp/Userhelp.aod +++ b/neonContext/Userhelp/Userhelp.aod @@ -3,7 +3,7 @@ <name>Userhelp</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>Userhelp_FilterView</filterView> - <entity>UserhelpResources</entity> + <entity>UserhelpResources_entity</entity> <references> <neonViewReference> <name>2a1dd62b-0f30-442b-aa1d-969b46312d2a</name> diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod index f52e1c289cf5fed0abf7fa7768073a8d76e778fe..94d73c9fd2ed4bcec0c7792bdfd856e732d35ea0 100644 --- a/neonView/EmployeeMain_view/EmployeeMain_view.aod +++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod @@ -34,5 +34,10 @@ <entityField>#ENTITY</entityField> <view>EmployeePermission_view</view> </neonViewReference> + <neonViewReference> + <name>6d6a2677-8be1-41a8-923a-030a72e370cd</name> + <entityField>EmployeeTokens</entityField> + <view>EmployeeTokenFilter_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..9a0bad8cead47190e646443b59d950cd3120f835 --- /dev/null +++ b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod @@ -0,0 +1,38 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>EmployeeTokenEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>EditForm</name> + <editMode v="true" /> + <fields> + <entityFieldLink> + <name>516cda4b-3ea2-4631-ad90-cbaeb778830b</name> + <entityField>VALID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>08577880-9ef5-4c54-bf5f-599125407904</name> + <entityField>VALID_FROM</entityField> + </entityFieldLink> + <entityFieldLink> + <name>b2e11525-ad9a-4efc-90ee-1bfd4d00a13c</name> + <entityField>VALID_TO</entityField> + </entityFieldLink> + <entityFieldLink> + <name>82c4cfd3-8448-4758-af64-553a3d64ddf3</name> + <entityField>GROUP_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>542417a1-2ec7-472f-99fa-359d1e7d3ae3</name> + <entityField>GROUP_ID_DISPLAY</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..852a0eed7cce66f29cb3aeebab709d526a7898a7 --- /dev/null +++ b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>EmployeeTokenFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <groupLayout> + <name>layout</name> + </groupLayout> + </layout> + <children> + <tableViewTemplate> + <name>TokenTable</name> + <linkedColumns /> + <fixedFilterFields /> + <title>Token</title> + <columns> + <neonTableColumn> + <name>eee2b9fd-89c2-454c-a589-6b5b83e4f538</name> + <entityField>VALID_STATUS_ICON</entityField> + </neonTableColumn> + <neonTableColumn> + <name>b89778da-071e-4a8c-8009-582d5cd31f1a</name> + <entityField>VALID_FROM</entityField> + </neonTableColumn> + <neonTableColumn> + <name>7ae721f4-21d9-4b71-a414-abf1cd411c01</name> + <entityField>VALID_TO</entityField> + </neonTableColumn> + <neonTableColumn> + <name>c6e2c00a-368d-4f16-aef3-579876a236a5</name> + <entityField>GROUP_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>e511fc55-3c97-4230-a816-38613e448376</name> + <entityField>ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js index 0a9a4b99e7c0c1abbe9d41af4f6ca2b2a734cab1..e9f96a4a9089f1ff65bb69dfb21ff41063f90ab8 100644 --- a/process/Calendar_lib/process.js +++ b/process/Calendar_lib/process.js @@ -538,4 +538,113 @@ CalendarUtil.getCalendarSystemType = function(pScope) // Everything is none return calendars.BACKEND_NONE; +} + +CalendarUtil.buildEntriesFromUids = function(appointmentUids) +{ + var entryArray = new Array(appointmentUids.length); + + for(var i = 0; i < appointmentUids.length; i++) + { + var hasPermission = true; + + if(vars.get("$param.ErrorOnPermissionDenied") == "false" || vars.getString("$param.LinkedAppointmentsFromDashlet_param")) + hasPermission = hasUserPermissionForReadingEntry(getEntryOwnerCn(appointmentUids[i])); + + if(hasPermission) + entryArray[i] = CalendarUtil.buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); + } + + //filter out all null + var filteredEntryArray = entryArray.filter(function (el) { + return el != null; + }); + + return filteredEntryArray; +} + + +CalendarUtil.countEntriesFromUids = function(appointmentUids) +{ + return CalendarUtil.buildEntriesFromUids(appointmentUids).length; +} + +CalendarUtil.buildEntry = function (pEntry, pMasterentry) +{ + var uid = pEntry[calendars.ID]; + var summary = pEntry[calendars.SUMMARY]; + var attendees = pEntry[calendars.AFFECTEDUSERS]; + var startdate = pEntry[calendars.DTSTART]; + var enddate = pEntry[calendars.DTEND]; + var links = pEntry[calendars.LINKS]; + var description = pEntry[calendars.DESCRIPTION]; + if(pEntry[calendars.ORGANIZER2] != undefined) + var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; + if(pEntry[calendars.USER2] != undefined) + var owner = JSON.stringify(pEntry[calendars.USER2]); + var status = pEntry[calendars.STATUS]; + var location = pEntry[calendars.LOCATION]; + var reminder = pEntry[calendars.REMINDER_DURATION]; + var remindercheck = pEntry[calendars.HASREMINDER] + var classification = pEntry[calendars.CLASSIFICATION]; + var transparency = pEntry[calendars.TRANSPARENCY]; + var categories = pEntry[calendars.CATEGORIES]; + var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; + + var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null + var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null + + // Recurrence + var recurrenceID = pEntry[calendars.RECURRENCEID]; + var rrule = null; + if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master + rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; + } else { + rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; + } + + return [ + uid, + attendees.length, + startdate, + enddate, + summary, + organizer, + owner, + attendees, + status, + description, + location, + '', + isAllDay, + classification, + transparency, + categories, + reminder, + remindercheck, + rrule, + recurrenceID, + null, + masterBegin, + masterEnd, + null + ]; +} + + +function hasUserPermissionForReadingEntry(calUserCn) +{ + return calendars.hasPermission(calUserCn, calendars.VEVENT, "READ"); +} + +function getEntryOwnerCn(appointmentUid) +{ + + var owner = newSelect("ASYS_CALENDARBACKEND.OWNER", "_____SYSTEMALIAS") + .from("ASYS_CALENDARBACKEND") + .whereIfSet("ASYS_CALENDARBACKEND.ELEMENTUID", appointmentUid) + .cell(true); + + var ownerArr = text.decodeMS(owner); + return ownerArr[1].split(":")[1]; } \ No newline at end of file diff --git a/process/FilterViewAction_lib/process.js b/process/FilterViewAction_lib/process.js index b0fa04291d03107498b6eaf03adbe5aa17326186..afd89d4d6d45e7afbd01146356a20eadd053896f 100644 --- a/process/FilterViewAction_lib/process.js +++ b/process/FilterViewAction_lib/process.js @@ -40,7 +40,7 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) { return new SqlBuilder() .selectDistinct("CONTACT.CONTACTID") - .from("PERSON") + .from("ORGANISATION") .join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null")) .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") @@ -52,7 +52,10 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) var loadRowsConfig = entities.createConfigForLoadingRows() .entity(ContextUtils.getEntity(pContext)) .fields(["#UID"]) - .filter(JSON.stringify(pFilter.filter || pFilter)); + if (pFilter.filter) + loadRowsConfig.filter(JSON.stringify(pFilter.filter)); + else if (pFilter) + loadRowsConfig.filter(JSON.stringify(pFilter)); return entities.getRows(loadRowsConfig).map(function (row) { diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index d6938458c59687ef679f1d437661ec456e01f2e8..bcb1b8428693ab99e51713ecb61a1b44fc6a4857 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -545,7 +545,8 @@ OrderUtils.buildReminderReport = function (pOrderID) "Ordernumber": translate.text("Order number",language), "Orderdate": translate.text("Order date",language), "Orderamount": translate.text("Order amount",language), - "Dunninglevel": translate.text("Dunning level",language) + "Dunninglevel": translate.text("Dunning level",language), + "OutstandingAmount": translate.text("Outstanding Amount",language) }; diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index 6ccbfe3e76006ca51544b503453320d416d35951..14247ad4e4b3dda3ab4be65989fa896e1434a894 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -10,19 +10,24 @@ import("Workflow_lib"); var processInstanceId = vars.get("$local.uid"); var variables = JSON.parse(vars.get("$local.value")); -var recipientContactId = variables.recipientContactId; +var recipientContactId = variables.recipientContactId || variables.targetId; var documentTemplateId = variables.documentTemplateId; var senderName = variables.senderName; var mailSubject = variables.mailSubject; +var aditoUrl = variables.originUrl; var actionParams = Utils.clone(variables); actionParams.processInstanceId = processInstanceId; -var linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () +var additionalPlaceholders = []; +if (aditoUrl) { - return WorkflowLinkActions.getActionLink("https://localhost:8443", actionParams.linkActionType, actionParams.redirectLink, actionParams); -}); + additionalPlaceholders.push(linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () + { + return WorkflowLinkActions.getActionLink(aditoUrl, actionParams.linkActionType, actionParams.redirectLink, actionParams); + })); +} -var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, [linkPlaceholder]); +var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders); email.subject = mailSubject; email.toRecipients = [CommUtil.getStandardMail(recipientContactId)]; diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index ca529152a3fbd0034322ba26a655361e685a1ac9..1347b1ef959b34c58be528e8eecfb4bc139ff51a 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <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="Mahnung" 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="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="57"/> + <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -22,6 +22,7 @@ <parameter name="Due" class="java.lang.String"/> <parameter name="DUEDATE" class="java.lang.String"/> <parameter name="Dunninglevel" class="java.lang.String"/> + <parameter name="OutstandingAmount" class="java.lang.String"/> <field name="PAYED" class="java.lang.String"/> <field name="RELATION_ID" class="java.lang.String"/> <field name="CURRENCY" class="java.lang.String"/> @@ -59,13 +60,6 @@ </textElement> <textFieldExpression><![CDATA[$P{DueDate}]]></textFieldExpression> </textField> - <textField> - <reportElement x="408" y="0" width="103" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> - <textElement textAlignment="Right"> - <font size="8"/> - </textElement> - <textFieldExpression><![CDATA[$P{Outstanding Amount}]]></textFieldExpression> - </textField> <line> <reportElement x="13" y="33" width="527" height="1" uuid="d5108302-191f-4e27-8920-fcd330d335e8"/> </line> @@ -125,6 +119,13 @@ </textElement> <textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression> </textField> + <textField> + <reportElement x="430" y="0" width="81" height="15" uuid="8eee46c0-f3c3-4563-b1b1-746aeb7e73c6"/> + <textElement> + <font size="8"/> + </textElement> + <textFieldExpression><![CDATA[$P{OutstandingAmount}]]></textFieldExpression> + </textField> </band> </groupHeader> </group>