diff --git a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_CommunicationMedium.xml b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_CommunicationMedium.xml index f03f93fd3ed0c0c9a3c284fbab8d866be95b26bd..137e041d59495cba2873ec54f05d020c8d62e9e3 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_CommunicationMedium.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_CommunicationMedium.xml @@ -45,7 +45,7 @@ <column name="CONTAINER" value="CommunicationMedium"/> <column name="SORTING" valueNumeric="1"/> <column name="ISACTIVE" valueNumeric="1"/> - <column name="ISESSENTIAL" valueNumeric="0"/> + <column name="ISESSENTIAL" valueNumeric="1"/> </insert> <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="ace352ee-b9ba-47eb-a55d-4619a4b41e61"/> diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index acaa21293a751fcc1a7d6942c4ec0ee74ad5ba69..64aebbbac9df4cdc3d77b7f594fec75f63610525 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -138,6 +138,7 @@ </entityActionField> <entityActionField> <name>newSupportticket</name> + <title>New Supportticket</title> <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsupportticket/onActionProcess.js</onActionProcess> <iconId>VAADIN:QUESTION</iconId> </entityActionField> diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index df5bf8a86616cf31cfd889ccb6ec3aca37805909..b333645e3d46e87cff240e0a14dca2f228eaa0e4 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -493,22 +493,27 @@ <dbRecordFieldMapping> <name>DIRECTION.value</name> <recordfield>ACTIVITY.DIRECTION</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>INFO.value</name> <recordfield>ACTIVITY.INFO</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>SUBJECT.value</name> <recordfield>ACTIVITY.SUBJECT</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ENTRYDATE.value</name> <recordfield>ACTIVITY.ENTRYDATE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CATEGORY.value</name> <recordfield>ACTIVITY.CATEGORY</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DIRECTION.displayValue</name> @@ -549,6 +554,7 @@ <dbRecordFieldMapping> <name>RESPONSIBLE.value</name> <recordfield>ACTIVITY.RESPONSIBLE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>entryDateTimelineDate.value</name> diff --git a/entity/Activity_entity/entityfields/direction/displayValueProcess.js b/entity/Activity_entity/entityfields/direction/displayValueProcess.js index db0eefa7c09b3968b41810ad94bc54cdbdff1cef..75deea02b4efd83a4bac92ddd3cb7bf8c9e86787 100644 --- a/entity/Activity_entity/entityfields/direction/displayValueProcess.js +++ b/entity/Activity_entity/entityfields/direction/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("KeywordRegistry_basic"); import("Keyword_lib"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.activityDirection(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.activityDirection(), vars.get("$field.DIRECTION"))); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/entrydate/onValidation.js b/entity/Activity_entity/entityfields/entrydate/onValidation.js index 63235b240b7df91d447c5f2f5a2cc371c51f4c23..0f2440a7724b5f1cb7425fad3b4bcac1ffaf246a 100644 --- a/entity/Activity_entity/entityfields/entrydate/onValidation.js +++ b/entity/Activity_entity/entityfields/entrydate/onValidation.js @@ -4,6 +4,6 @@ import("system.vars"); import("system.result"); import("Entity_lib"); -var entryDate = ProcessHandlingUtils.getOnValidationValue(); +var entryDate = vars.get("local.value"); if (Number(datetime.clearTime(entryDate)) > Number(vars.get("$sys.today"))) result.string(translate.text("Entrydate must not be in the future")); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/responsible/displayValueProcess.js b/entity/Activity_entity/entityfields/responsible/displayValueProcess.js index 0dde82e7728286629b1c210326725aac2ebb92c5..4a1a4bf92b1c7ff37398bec253e24f100e3259af 100644 --- a/entity/Activity_entity/entityfields/responsible/displayValueProcess.js +++ b/entity/Activity_entity/entityfields/responsible/displayValueProcess.js @@ -2,7 +2,6 @@ import("system.result"); import("system.vars"); import("Contact_lib"); -var id = vars.get("$this.value"); //show the simpel title since this will be later an employee-entry and therefore no organisation is needed -var title = ContactUtils.getTitleByContactId(id); +var title = ContactUtils.getTitleByContactId(vars.get("$field.RESPONSIBLE")); result.string(title); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/address/displayValueProcess.js b/entity/Address_entity/entityfields/address/displayValueProcess.js index de2c5e835eaf4fe6dd8b3521b3e17a39c9ac23c1..361195b279eff3c671bdb2c410cc0ea875750c88 100644 --- a/entity/Address_entity/entityfields/address/displayValueProcess.js +++ b/entity/Address_entity/entityfields/address/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.result"); // needed for instant display name change if value set by neon.setFieldValue -result.string(vars.get("$this.value")) \ No newline at end of file +result.string(vars.get("$field.ADDRESS")); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/addresssearch/displayValueProcess.js b/entity/Address_entity/entityfields/addresssearch/displayValueProcess.js index de2c5e835eaf4fe6dd8b3521b3e17a39c9ac23c1..a621c8b6d25a011f206268b568b9ffd80ec5c820 100644 --- a/entity/Address_entity/entityfields/addresssearch/displayValueProcess.js +++ b/entity/Address_entity/entityfields/addresssearch/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.result"); // needed for instant display name change if value set by neon.setFieldValue -result.string(vars.get("$this.value")) \ No newline at end of file +result.string(vars.get("$field.AddressSearch")); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/city/displayValueProcess.js b/entity/Address_entity/entityfields/city/displayValueProcess.js index feac45906bc212c120bbc05a111433398994ddf2..3dfaf91d9c4e40070e6eece3bab75996c23f453e 100644 --- a/entity/Address_entity/entityfields/city/displayValueProcess.js +++ b/entity/Address_entity/entityfields/city/displayValueProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); - -// needed for instant display name change if value set by neon.setFieldValue -result.string(vars.get("$this.value")) \ No newline at end of file +import("system.vars"); +import("system.result"); + +// needed for instant display name change if value set by neon.setFieldValue +result.string(vars.get("$field.CITY")); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/country/valueProcess.js b/entity/Address_entity/entityfields/country/valueProcess.js index 0bbec92588a0d5155ba8f200c1c8699e0c106ed7..ed4f8415e482aab730551c90508dd80dc5d7779c 100644 --- a/entity/Address_entity/entityfields/country/valueProcess.js +++ b/entity/Address_entity/entityfields/country/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string("DE"); } \ No newline at end of file diff --git a/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js b/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js index 210aab5135161a47229a09613e2ed186ebf9528f..6cd3c4544e56fa57ad04b119be620aa650f4a849 100644 --- a/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js +++ b/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$this.value")) \ No newline at end of file +result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/zip/displayValueProcess.js b/entity/Address_entity/entityfields/zip/displayValueProcess.js index feac45906bc212c120bbc05a111433398994ddf2..199cb7a79d5033b7f6a5328d0c8c85c9fdd79e62 100644 --- a/entity/Address_entity/entityfields/zip/displayValueProcess.js +++ b/entity/Address_entity/entityfields/zip/displayValueProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); - -// needed for instant display name change if value set by neon.setFieldValue -result.string(vars.get("$this.value")) \ No newline at end of file +import("system.vars"); +import("system.result"); + +// needed for instant display name change if value set by neon.setFieldValue +result.string(vars.get("$field.ZIP")); \ No newline at end of file diff --git a/entity/Address_entity/entityfields/zip/onValidation.js b/entity/Address_entity/entityfields/zip/onValidation.js index 4ab5fababa786a02ee290896bd38c6b648fb2150..d676d5911b0c9fbe9ad578821db2c08f56e1b5df 100644 --- a/entity/Address_entity/entityfields/zip/onValidation.js +++ b/entity/Address_entity/entityfields/zip/onValidation.js @@ -6,7 +6,7 @@ import("Entity_lib"); var countryCode = vars.get("$field.COUNTRY"); -var zipCode = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ZIP")); +var zipCode = vars.get("local.value"); var message = ""; var isValid = AddressValidationUtils.isValidZip(countryCode, zipCode); if (!isValid) diff --git a/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js b/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js index 210aab5135161a47229a09613e2ed186ebf9528f..6cd3c4544e56fa57ad04b119be620aa650f4a849 100644 --- a/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js +++ b/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$this.value")) \ No newline at end of file +result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 54aefdb83c0f3ff25fdb018152f29e24fbcd475d..d8496c418d8180c531be3c01ae84dc97f1e5e0b0 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -50,6 +50,12 @@ <fieldName>Contacts</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>471b6e37-13ce-4e84-a797-82bccbe4e39a</name> + <entityName>UnlinkedMailMappingLink_entity</entityName> + <fieldName>AnyContacts</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> @@ -144,6 +150,11 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> </entityParameter> </children> </entityProvider> + <entityParameter> + <name>WithPrivatePersons_param</name> + <valueProcess>%aditoprj%/entity/AnyContact_entity/entityfields/withprivatepersons_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js b/entity/AnyContact_entity/entityfields/withprivatepersons_param/valueProcess.js similarity index 54% rename from entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js rename to entity/AnyContact_entity/entityfields/withprivatepersons_param/valueProcess.js index 4f08839a6a4d79cdb90175f7b7f194a9902ec27f..40effa0178464da0c7850912345f19c7fa95975a 100644 --- a/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js +++ b/entity/AnyContact_entity/entityfields/withprivatepersons_param/valueProcess.js @@ -1,2 +1,3 @@ -import("system.result"); -result.string(0) \ No newline at end of file +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js index 565287dccb22ad6f19f9b527caa276b87dd618bd..72bf4814198ca16718074a516805a6d7c2c1565f 100644 --- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js @@ -16,15 +16,18 @@ if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) } } +var conditionPrivateOrganisation = SqlCondition.begin() + .andPrepare("CONTACT.ORGANISATION_ID", "0", "# != ?"); + +if (vars.getString("$param.WithPrivatePersons_param") == "true") + conditionPrivateOrganisation.orSqlCondition(SqlCondition.begin() + .andPrepare("CONTACT.ORGANISATION_ID", "0") + .and("CONTACT.PERSON_ID is not null") + ); + //exclude private organisation var cond = SqlCondition.begin() - .andSqlCondition(SqlCondition.begin() - .andPrepare("CONTACT.ORGANISATION_ID", "0", "# != ?") - .orSqlCondition(SqlCondition.begin() - .andPrepare("CONTACT.ORGANISATION_ID", "0") - .and("CONTACT.PERSON_ID is not null") - ) - ) + .andSqlCondition(conditionPrivateOrganisation) .andPrepareIfSet("CONTACT.ORGANISATION_ID", orgContactId); result.string(db.translateCondition(cond.build())); \ No newline at end of file diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod index b9f898507f435bd3fb437adaebf0fb4be3e177ab..e1b12bd5bf548dee9f0c9736d60333255cabc6ed 100644 --- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod +++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod @@ -2,6 +2,8 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> <name>AppointmentLink_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Connection</title> + <titlePlural>Connections</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -21,6 +23,7 @@ <title>{$OBJECTLINK_OBJECT}</title> <consumer>Objects</consumer> <linkedContext>Object</linkedContext> + <stateProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objectid/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js</displayValueProcess> <onValueChangeTypes> <element>MASK</element> @@ -33,6 +36,7 @@ <title>{$OBJECTLINK_TYPE}</title> <consumer>Context</consumer> <linkedContext>Context</linkedContext> + <stateProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objecttype/stateProcess.js</stateProcess> <displayValueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objecttype/displayValueProcess.js</displayValueProcess> </entityField> <entityParameter> @@ -92,6 +96,12 @@ <description>PARAMETER </description> </entityParameter> + <entityConsumer> + <name>AppointmentId</name> + <dependency> + <name>dependency</name> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/AppointmentLink_entity/entityfields/objectid/stateProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b9f041ffd36ba432fd379ce605d4bae3e36e61f4 --- /dev/null +++ b/entity/AppointmentLink_entity/entityfields/objectid/stateProcess.js @@ -0,0 +1,30 @@ +import("system.logging"); +import("system.result"); +import("system.tools"); +import("system.neon"); +import("system.vars"); +import("system.calendars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) + result.object(neon.COMPONENTSTATE_DISABLED); + +else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.AppointmentId_param")) +{ + var entry = calendars.getEntry(vars.get("$param.AppointmentId_param"), null, null); + doCalc(entry); +} + +else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + var entryy = calendars.getEntry(vars.get("$field.APPOINTMENT_ID"), null, null); + doCalc(entryy); +} + + +function doCalc(entry) +{ + if(entry[calendars.ORGANIZER2]["paramvalue"] == "mailto:" + tools.getCurrentUser()["params"]["email"]) + result.object(neon.COMPONENTSTATE_EDITABLE); + else + result.object(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file diff --git a/entity/AppointmentLink_entity/entityfields/objecttype/stateProcess.js b/entity/AppointmentLink_entity/entityfields/objecttype/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7eaf72f92dabfc36787821a134eea15221903adf --- /dev/null +++ b/entity/AppointmentLink_entity/entityfields/objecttype/stateProcess.js @@ -0,0 +1,30 @@ +import("system.logging"); +import("system.result"); +import("system.tools"); +import("system.neon"); +import("system.vars"); +import("system.calendars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) + result.object(neon.COMPONENTSTATE_DISABLED); + +else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.AppointmentId_param")) +{ + var entry = calendars.getEntry(vars.get("$param.AppointmentId_param"), null, null); + doCalc(entry); +} + +else if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + var entryy = calendars.getEntry(vars.get("$field.APPOINTMENT_ID"), null, null); + doCalc(entryy); +} + + +function doCalc(entry) +{ + if(entry[calendars.ORGANIZER2]["paramvalue"] == "mailto:" + tools.getCurrentUser()["params"]["email"]) + result.object(neon.COMPONENTSTATE_EDITABLE); + else + result.object(neon.COMPONENTSTATE_DISABLED); +} \ No newline at end of file diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 90f3b32a681e47388a5eb1255ed7ea4c524f2191..5e2d6bbd82333a958ba173c9e29a1db5f1de856d 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -108,6 +108,7 @@ <mandatoryProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/value/mandatoryProcess.js</mandatoryProcess> <dropDownProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/value/dropDownProcess.js</dropDownProcess> <stateProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/value/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/value/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/value/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> diff --git a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/valueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/valueProcess.js index d275fe78758974383fb7699c954e3f72cbdf5c3e..10be88dcbfaf76cace1f3b58644b421caf116da8 100644 --- a/entity/AttributeRelation_entity/entityfields/ab_attribute_id/valueProcess.js +++ b/entity/AttributeRelation_entity/entityfields/ab_attribute_id/valueProcess.js @@ -1,5 +1,5 @@ import("system.vars"); import("system.result"); -if (vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param") && !vars.get("$this.value")) +if (vars.exists("$param.AttributeId_param") && vars.get("$param.AttributeId_param") && vars.get("$this.value") == null) result.string(vars.get("$param.AttributeId_param")); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/value/valueProcess.js b/entity/AttributeRelation_entity/entityfields/value/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..938b26f2b636941ca480c11525662c41bf43cc57 --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/value/valueProcess.js @@ -0,0 +1,9 @@ +import("Attribute_lib"); +import("system.vars"); +import("system.result"); + + +var attributeType = AttributeUtil.getAttributeType(vars.get("$field.AB_ATTRIBUTE_ID")); +var contentType = AttributeTypeUtil.getContentType(attributeType); +if (vars.get("$this.value") == null && contentType == "BOOLEAN") + result.string("0"); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js b/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js index 8d45182f23c7ed4583c8b410ab827802792cf959..f1159a248acb0d346960c575a29530e1bcb5a622 100644 --- a/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js +++ b/entity/AttributeUsage_entity/entityfields/max_count/displayValueProcess.js @@ -2,5 +2,5 @@ import("system.translate"); import("system.result"); import("system.vars"); -var minCount = vars.get("$this.value"); +var minCount = vars.get("$field.MAX_COUNT"); result.string(minCount != 0 ? translate.text("Maximal") + " " + minCount : ""); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/max_count/onValidation.js b/entity/AttributeUsage_entity/entityfields/max_count/onValidation.js index 96735194f37f6ce825c6d1ad41109100193ae56f..0a2f0bdb56a56e509e8977dfd6e93d0eb02994c3 100644 --- a/entity/AttributeUsage_entity/entityfields/max_count/onValidation.js +++ b/entity/AttributeUsage_entity/entityfields/max_count/onValidation.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.translate"); import("Entity_lib"); -var maxCount = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.MAX_COUNT")); +var maxCount = vars.get("local.value"); if (maxCount) { diff --git a/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js b/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js index 891ef3951fb86a9caa2840f3d731797fdbb3577f..93dcdeb41607c332bef72f8af48d3447a7123500 100644 --- a/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js +++ b/entity/AttributeUsage_entity/entityfields/min_count/displayValueProcess.js @@ -2,5 +2,5 @@ import("system.translate"); import("system.result"); import("system.vars"); -var minCount = vars.get("$this.value"); +var minCount = vars.get("$field.MIN_COUNT"); result.string(minCount != 0 ? translate.text("Minimal") + " " + minCount : ""); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/min_count/onValidation.js b/entity/AttributeUsage_entity/entityfields/min_count/onValidation.js index 2f28221a1b6275fe7bf3dc84a2fe25b49f54f1c7..2536dedb73b98b6155d33b75f36cc5df94bc0b63 100644 --- a/entity/AttributeUsage_entity/entityfields/min_count/onValidation.js +++ b/entity/AttributeUsage_entity/entityfields/min_count/onValidation.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.translate"); import("Entity_lib"); -var minCount = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.MIN_COUNT")); +var minCount = vars.get("local.value"); if (minCount) { diff --git a/entity/Attribute_entity/entityfields/attribute_parent_id/valueProcess.js b/entity/Attribute_entity/entityfields/attribute_parent_id/valueProcess.js index 640e5c1e11de0afafb7076b438e0532b6f1ea64c..cada69ce4bb12fb1c3f603cdb78d2e532ada95aa 100644 --- a/entity/Attribute_entity/entityfields/attribute_parent_id/valueProcess.js +++ b/entity/Attribute_entity/entityfields/attribute_parent_id/valueProcess.js @@ -1,6 +1,6 @@ -import("system.neon"); -import("system.result"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.AttrParentId_param") && vars.get("$param.AttrParentId_param") && !vars.get("$this.value")) +import("system.neon"); +import("system.result"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.AttrParentId_param") && vars.get("$this.value") == null) result.string(vars.get("$param.AttrParentId_param")); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js b/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js index 680e7f2e1063cd169abc39d20c8f69490eace3f4..278f8b879ba6692db695c4a0c2122a6396042227 100644 --- a/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js +++ b/entity/Attribute_entity/entityfields/attribute_type/onValueChange.js @@ -3,6 +3,6 @@ import("system.vars"); import("Attribute_lib"); import("Entity_lib"); -var type = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ATTRIBUTE_TYPE")) || ""; +var type = vars.get("local.value") || ""; if (type.trim() != $AttributeTypes.KEYWORD && vars.get("$field.DROPDOWNDEFINITION")) neon.setFieldValue("$field.DROPDOWNDEFINITION", ""); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/entityfields/contact_id/onValidation.js b/entity/BulkMailRecipient_entity/entityfields/contact_id/onValidation.js index daf048a226388656f81bfd8e002d9ff6ec83dfa4..04a7f4500024b4df8a6ef0324ee20a4ae4bf0ad4 100644 --- a/entity/BulkMailRecipient_entity/entityfields/contact_id/onValidation.js +++ b/entity/BulkMailRecipient_entity/entityfields/contact_id/onValidation.js @@ -6,7 +6,7 @@ import("system.result"); import("KeywordRegistry_basic"); import("Entity_lib"); -var contactId = ProcessHandlingUtils.getOnValidationValue(); +var contactId = vars.get("local.value"); if (BulkMailUtils.isRecipient(vars.get("$field.BULKMAIL_ID"), contactId)) result.string(translate.text("The contact is already a recipient!")); else if (ContactUtils.hasCommRestriction(contactId, $KeywordRegistry.communicationMediumCampaign$mail())) diff --git a/entity/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod index eed32e047eeee11830af5758f92e36931aa249c1..650f4c8e4d069bb6dacebfa14a434e26254513e4 100644 --- a/entity/BulkMail_entity/BulkMail_entity.aod +++ b/entity/BulkMail_entity/BulkMail_entity.aod @@ -1,222 +1,216 @@ -<?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.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> - <name>BulkMail_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <icon>VAADIN:AT</icon> - <title>Bulk mail</title> - <contentTitleProcess>%aditoprj%/entity/BulkMail_entity/contentTitleProcess.js</contentTitleProcess> - <titlePlural>Bulk mails</titlePlural> - <recordContainer>db</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - <dependencies> - <entityDependency> - <name>88f8ded7-fe8f-41ef-8e01-030bae0867ee</name> - <entityName>BulkMailAddRecipients_entity</entityName> - <fieldName>BulkMails</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - </entityProvider> - <entityField> - <name>BULKMAILID</name> - </entityField> - <entityField> - <name>NAME</name> - <title>Name</title> - <mandatory v="true" /> - </entityField> - <entityField> - <name>SUBJECT</name> - <title>Subject</title> - </entityField> - <entityField> - <name>DESCRIPTION</name> - <title>Description</title> - </entityField> - <entityField> - <name>DOCUMENTTEMPLATE_ID</name> - <title>Document Template</title> - <consumer>Templates</consumer> - <mandatory v="false" /> - <onValueChange>%aditoprj%/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js</onValueChange> - </entityField> - <entityConsumer> - <name>Recipients</name> - <dependency> - <name>dependency</name> - <entityName>BulkMailRecipient_entity</entityName> - <fieldName>BulkMailRecipients</fieldName> - </dependency> - <children> - <entityParameter> - <name>BulkMailId_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>Templates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> - <children> - <entityParameter> - <name>DocumentTemplateType_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>DocumentTemplateTypeClassification_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>STATUS</name> - <title>Status</title> - <consumer>StatusKeyword</consumer> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/status/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/status/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>SENDER</name> - <title>Sender address</title> - <mandatory v="true" /> - <onValidation>%aditoprj%/entity/BulkMail_entity/entityfields/sender/onValidation.js</onValidation> - </entityField> - <entityActionField> - <name>sendMail</name> - <title>Send</title> - <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/onActionProcess.js</onActionProcess> - <iconId>VAADIN:PAPERPLANE</iconId> - <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/stateProcess.js</stateProcess> - </entityActionField> - <entityField> - <name>ICON</name> - <contentType>IMAGE</contentType> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/icon/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>preview</name> - <contentType>HTML</contentType> - <displayValueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/preview/displayValueProcess.js</displayValueProcess> - </entityField> - <entityConsumer> - <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityField> - <name>BINDATA</name> - <contentType>FILE</contentType> - <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bindata/stateProcess.js</stateProcess> - </entityField> - <entityFieldGroup> - <name>subjectPreview</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/subjectpreview/valueProcess.js</valueProcess> - <fields> - <element>SUBJECT</element> - </fields> - </entityFieldGroup> - <entityActionField> - <name>openAdminView</name> - <title>Open admin view</title> - <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> - <iconId>VAADIN:CURLY_BRACKETS</iconId> - <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/openadminview/stateProcess.js</stateProcess> - </entityActionField> - <entityParameter> - <name>PresetRecipients_param</name> - <expose v="true" /> - </entityParameter> - <entityField> - <name>content</name> - <title>Content</title> - <contentType>HTML</contentType> - <contentTypeProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js</contentTypeProcess> - <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/valueProcess.js</valueProcess> - </entityField> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <fromClauseProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> - <onDBInsert>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js</onDBInsert> - <onDBUpdate>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> - <onDBDelete>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBDelete.js</onDBDelete> - <linkInformation> - <linkInformation> - <name>6444866d-42ee-4b7b-8536-6dc8f6437c45</name> - <tableName>BULKMAIL</tableName> - <primaryKey>BULKMAILID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - <linkInformation> - <name>914d6373-4409-44e5-882a-3f795b196d7b</name> - <tableName>DOCUMENTTEMPLATE</tableName> - <primaryKey>DOCUMENTTEMPLATEID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>BULKMAILID.value</name> - <recordfield>BULKMAIL.BULKMAILID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DESCRIPTION.value</name> - <recordfield>BULKMAIL.DESCRIPTION</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DOCUMENTTEMPLATE_ID.value</name> - <recordfield>BULKMAIL.DOCUMENTTEMPLATE_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>NAME.value</name> - <recordfield>BULKMAIL.NAME</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SUBJECT.value</name> - <recordfield>BULKMAIL.SUBJECT</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SENDER.value</name> - <recordfield>BULKMAIL.SENDER</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DOCUMENTTEMPLATE_ID.displayValue</name> - <recordfield>DOCUMENTTEMPLATE.NAME</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>STATUS.value</name> - <recordfield>BULKMAIL.STATUS</recordfield> - <isFilterable v="true" /> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>STATUS.displayValue</name> - <expression>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - </recordContainers> -</entity> +<?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.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> + <name>BulkMail_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:AT</icon> + <title>Bulk mail</title> + <contentTitleProcess>%aditoprj%/entity/BulkMail_entity/contentTitleProcess.js</contentTitleProcess> + <titlePlural>Bulk mails</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>88f8ded7-fe8f-41ef-8e01-030bae0867ee</name> + <entityName>BulkMailAddRecipients_entity</entityName> + <fieldName>BulkMails</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>BULKMAILID</name> + </entityField> + <entityField> + <name>NAME</name> + <title>Name</title> + <mandatory v="true" /> + </entityField> + <entityField> + <name>SUBJECT</name> + <title>Subject</title> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + </entityField> + <entityField> + <name>DOCUMENTTEMPLATE_ID</name> + <title>Document Template</title> + <consumer>Templates</consumer> + <mandatory v="false" /> + <onValueChange>%aditoprj%/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js</onValueChange> + </entityField> + <entityConsumer> + <name>Recipients</name> + <dependency> + <name>dependency</name> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>BulkMailRecipients</fieldName> + </dependency> + <children> + <entityParameter> + <name>BulkMailId_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityConsumer> + <name>Templates</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>DocumentTemplateType_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>DocumentTemplateTypeClassification_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>STATUS</name> + <title>Status</title> + <consumer>StatusKeyword</consumer> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/status/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/status/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>SENDER</name> + <title>Sender address</title> + <mandatory v="true" /> + <onValidation>%aditoprj%/entity/BulkMail_entity/entityfields/sender/onValidation.js</onValidation> + </entityField> + <entityActionField> + <name>sendMail</name> + <title>Send</title> + <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/onActionProcess.js</onActionProcess> + <iconId>VAADIN:PAPERPLANE</iconId> + <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/sendmail/stateProcess.js</stateProcess> + </entityActionField> + <entityField> + <name>ICON</name> + <contentType>IMAGE</contentType> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/icon/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>StatusKeyword</name> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>BINDATA</name> + <contentType>FILE</contentType> + <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bindata/stateProcess.js</stateProcess> + </entityField> + <entityFieldGroup> + <name>subjectPreview</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/subjectpreview/valueProcess.js</valueProcess> + <fields> + <element>SUBJECT</element> + </fields> + </entityFieldGroup> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/BulkMail_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> + <entityParameter> + <name>PresetRecipients_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>content</name> + <title>Content</title> + <contentTypeProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js</contentTypeProcess> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/content/displayValueProcess.js</displayValueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <fromClauseProcess>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <onDBInsert>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <onDBDelete>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <linkInformation> + <linkInformation> + <name>6444866d-42ee-4b7b-8536-6dc8f6437c45</name> + <tableName>BULKMAIL</tableName> + <primaryKey>BULKMAILID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + <linkInformation> + <name>914d6373-4409-44e5-882a-3f795b196d7b</name> + <tableName>DOCUMENTTEMPLATE</tableName> + <primaryKey>DOCUMENTTEMPLATEID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>BULKMAILID.value</name> + <recordfield>BULKMAIL.BULKMAILID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DESCRIPTION.value</name> + <recordfield>BULKMAIL.DESCRIPTION</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DOCUMENTTEMPLATE_ID.value</name> + <recordfield>BULKMAIL.DOCUMENTTEMPLATE_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>NAME.value</name> + <recordfield>BULKMAIL.NAME</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBJECT.value</name> + <recordfield>BULKMAIL.SUBJECT</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SENDER.value</name> + <recordfield>BULKMAIL.SENDER</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DOCUMENTTEMPLATE_ID.displayValue</name> + <recordfield>DOCUMENTTEMPLATE.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STATUS.value</name> + <recordfield>BULKMAIL.STATUS</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STATUS.displayValue</name> + <expression>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js b/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js index e7996a89667933fc400f3fe807ef1a03e8b71f57..af9657e3dd0e8e678b257e83dd8f9c5955e21e3f 100644 --- a/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js +++ b/entity/BulkMail_entity/entityfields/content/contentTypeProcess.js @@ -1,15 +1,28 @@ +import("Bulkmail_lib"); import("system.result"); import("Document_lib"); import("system.vars"); +import("DocumentTemplate_lib"); var upload = vars.get("$field.BINDATA"); -var filename = DocumentUtil.getFilenameFromUpload(upload); -var type = DocumentUtil.getFileExtensionFromUpload(filename); -result.string( - ({ +var contentType, type, filename, template; +if (upload) +{ + filename = DocumentUtil.getFilenameFromUpload(upload); + type = DocumentUtil.getFileExtensionFromUpload(filename); + contentType = ({ "txt" : "LONG_TEXT", "html" : "HTML", "htm" : "HTML", "eml" : "HTML" - })[type] || "LONG_TEXT" -); \ No newline at end of file + })[type] || "LONG_TEXT"; +} +else +{ + template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID")); + type = template.type; + contentType = type == DocumentTemplate.types.HTML || type == DocumentTemplate.types.EML + ? "HTML" + : "LONG_TEXT"; +} +result.string(contentType); \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/preview/displayValueProcess.js b/entity/BulkMail_entity/entityfields/content/displayValueProcess.js similarity index 97% rename from entity/BulkMail_entity/entityfields/preview/displayValueProcess.js rename to entity/BulkMail_entity/entityfields/content/displayValueProcess.js index 2befdfd6ae93c13f5766876054b51e28c7c606c6..d676eae7a0822b5beea69cae722adc4b4cd7c67e 100644 --- a/entity/BulkMail_entity/entityfields/preview/displayValueProcess.js +++ b/entity/BulkMail_entity/entityfields/content/displayValueProcess.js @@ -1,19 +1,19 @@ -import("Bulkmail_lib"); -import("system.text"); -import("Employee_lib"); -import("system.vars"); -import("system.result"); -import("system.neon"); -import("DocumentTemplate_lib"); - -//if this was done for every row, like in a lookup, the performance would be very bad -if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_MASK) -{ - var template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID")); - - var contactId = EmployeeUtils.getCurrentContactId(); - var preview = template.getReplacedEmailsByContactIds([contactId]); - - result.string(preview[contactId].body); -} - +import("Bulkmail_lib"); +import("system.text"); +import("Employee_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); +import("DocumentTemplate_lib"); + +//if this was done for every row, like in a lookup, the performance would be very bad +if (vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_MASK) +{ + var template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID")); + + var contactId = EmployeeUtils.getCurrentContactId(); + var preview = template.getReplacedEmailsByContactIds([contactId]); + + result.string(preview[contactId].body); +} + diff --git a/entity/BulkMail_entity/entityfields/content/stateProcess.js b/entity/BulkMail_entity/entityfields/content/stateProcess.js deleted file mode 100644 index 3556de9c2f8a50d3a7d0eaee2900e769c1eb2a9c..0000000000000000000000000000000000000000 --- a/entity/BulkMail_entity/entityfields/content/stateProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(neon.COMPONENTSTATE_EDITABLE); -else - result.string(neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/content/valueProcess.js b/entity/BulkMail_entity/entityfields/content/valueProcess.js index 7b157c6cc8c6ee66d4083c68bee963b411b2748e..7abb9759cf4b8f7cfc718bdc8b234d2f526c63ea 100644 --- a/entity/BulkMail_entity/entityfields/content/valueProcess.js +++ b/entity/BulkMail_entity/entityfields/content/valueProcess.js @@ -1,24 +1,28 @@ -import("Document_lib"); -import("system.util"); -import("system.result"); -import("system.vars"); -import("system.db"); -import("DocumentTemplate_lib"); - -if (vars.get("$this.value") == null) -{ - var upload = vars.get("$field.BINDATA"); - var binData = DocumentUtil.getBindataFromUpload(upload); - var filename = DocumentUtil.getFilenameFromUpload(upload); - var type = DocumentUtil.getFileExtensionFromUpload(filename); - type = ({ - "txt" : DocumentTemplate.types.TXT, - "html" : DocumentTemplate.types.HTML, - "htm" : DocumentTemplate.types.HTML, - "eml" : DocumentTemplate.types.EML - })[type]; - var template = new DocumentTemplate(binData, type); - var content = template.getReplacedContent({}, true); - - result.string(content); -} +import("system.neon"); +import("Document_lib"); +import("system.util"); +import("system.result"); +import("system.vars"); +import("system.db"); +import("DocumentTemplate_lib"); +import("Bulkmail_lib"); + +if (vars.get("$this.value") == null) +{ + var upload = vars.get("$field.BINDATA"); + var template; + if (upload) + { + var binData = DocumentUtil.getBindataFromUpload(upload); + var filename = DocumentUtil.getFilenameFromUpload(upload); + var type = DocumentUtil.getFileExtensionFromUpload(filename); + template = new DocumentTemplate(binData, DocumentTemplate.types.fromFileExtension(type)); + } + else + { + template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID")); + } + var content = template.getReplacedContent({}, true); + + result.string(content); +} \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js index 6d1fe433a0ad7b27289c152edd86ce47b2c096f7..c2d0c4e5323ea1219d1f6f0085a624f996609e54 100644 --- a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js +++ b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js @@ -7,7 +7,7 @@ import("Entity_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { - var templateId = ProcessHandlingUtils.getOnValidationValue(); + var templateId = vars.get("local.value"); var template = DocumentTemplate.loadTemplate(templateId); if (template.type == DocumentTemplate.types.EML) { diff --git a/entity/BulkMail_entity/entityfields/sender/onValidation.js b/entity/BulkMail_entity/entityfields/sender/onValidation.js index a07daba57f94e4328ff3907479205d93e38a93db..429ec70614bd74bcba194b44a61640f3b7a2e779 100644 --- a/entity/BulkMail_entity/entityfields/sender/onValidation.js +++ b/entity/BulkMail_entity/entityfields/sender/onValidation.js @@ -1,11 +1,11 @@ -import("system.result"); -import("Communication_lib"); -import("Entity_lib"); - -var message; -var sender = ProcessHandlingUtils.getOnValidationValue(); -var fn = CommValidationUtil.makeValidationFn("EMAIL"); -if (fn !== null) - message = fn.call(null, sender); -if (message) +import("system.result"); +import("Communication_lib"); +import("Entity_lib"); + +var message; +var sender = vars.get("local.value"); +var fn = CommValidationUtil.makeValidationFn("EMAIL"); +if (fn !== null) + message = fn.call(null, sender); +if (message) result.string(message); \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/status/displayValueProcess.js b/entity/BulkMail_entity/entityfields/status/displayValueProcess.js index 0dd6bd59e0bb7db1bba471167d20ae5a41cb8423..e134a0c97aea832acd32fe66be3806770b33d1c7 100644 --- a/entity/BulkMail_entity/entityfields/status/displayValueProcess.js +++ b/entity/BulkMail_entity/entityfields/status/displayValueProcess.js @@ -3,4 +3,4 @@ import("KeywordRegistry_basic"); import("system.result"); import("Keyword_lib"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.bulkMailStatus(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.bulkMailStatus(), vars.get("$field.STATUS"))); \ No newline at end of file diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js index 1a0d7b3b5e8ed56dc8088006903a9851f1bbef62..dd2d0ecc46f46ab5786a9679f05a1c8d9ef54fa8 100644 --- a/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js +++ b/entity/BulkMail_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,4 @@ +import("DocumentTemplate_lib"); import("system.result"); import("system.vars"); import("system.db"); @@ -9,13 +10,26 @@ import("Bulkmail_lib"); var content = vars.get("$field.content"); var originalBinData = vars.get("$field.BINDATA"); -var filename; +var filename, type, template; if(vars.get("$field.BINDATA")) +{ filename = DocumentUtil.getFilenameFromUpload(vars.get("$field.BINDATA")); + type = DocumentUtil.getFileExtensionFromUpload(filename); + type = ({ + "txt" : DocumentTemplate.types.TXT, + "html" : DocumentTemplate.types.HTML, + "htm" : DocumentTemplate.types.HTML, + "eml" : DocumentTemplate.types.EML + })[type]; +} +else +{ + template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENTTEMPLATE_ID")); + type = template.type; +} -var type = DocumentUtil.getFileExtensionFromUpload(filename); -if (type == "html" || type == "eml") +if (type == DocumentTemplate.types.EML || type == DocumentTemplate.types.HTML) content = "<html>" + content + "</html>"; var bindata = util.encodeBase64String(content); diff --git a/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js b/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js index 4b8b28c49a9c31968b3cc5b34883d746bdc50193..345ac72193ed9867d666b67ab0b1106d78408aa2 100644 --- a/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/BulkMail_entity/recordcontainers/db/onDBUpdate.js @@ -1,28 +1,44 @@ -import("Sql_lib"); -import("system.result"); -import("system.vars"); -import("system.db"); -import("system.util"); -import("Document_lib"); - -//TODO - Function - -var upload = vars.get("$field.BINDATA"); -var bindataUpload = DocumentUtil.getBindataFromUpload(upload); -var filename = ""; -var bindata = ""; - -if(bindataUpload != "") -{ - filename = DocumentUtil.getFilenameFromUpload(upload); - bindata = bindataUpload; -} - -if(bindata != "" && filename != "") -{ - let sysAlias = "_____SYSTEMALIAS"; - var binaryId = db.cell(SqlCondition.begin(sysAlias) - .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.BULKMAILID") - .buildSql("select ID from ASYS_BINARIES", "1=2"), sysAlias); - db.updateBinary(binaryId, "", bindata, filename, "", "", sysAlias); -} \ No newline at end of file +import("system.neon"); +import("Sql_lib"); +import("DocumentTemplate_lib"); +import("system.result"); +import("system.vars"); +import("system.db"); +import("system.util"); +import("Document_lib"); +import("Bulkmail_lib"); + +//TODO - Function + +var content = vars.get("$field.content"); +var originalBinData = vars.get("$field.BINDATA"); +var filename, type, template; + +if(vars.get("$field.BINDATA")) +{ + filename = DocumentUtil.getFilenameFromUpload(vars.get("$field.BINDATA")); + type = DocumentUtil.getFileExtensionFromUpload(filename); + type = DocumentTemplate.types.fromFileExtension(type); +} +else +{ + template = BulkMailUtils.getBulkMailTemplate(vars.get("$field.BULKMAILID"), vars.get("$field.DOCUMENTTEMPLATE_ID")); + type = template.type; +} + +if (type == DocumentTemplate.types.EML || type == DocumentTemplate.types.HTML) + content = "<html>" + content + "</html>"; + +var bindata = util.encodeBase64String(content); +if (!filename) + filename = vars.get("$field.NAME") + ".txt"; + +if(bindata != "") +{ + let sysAlias = "_____SYSTEMALIAS"; + var binaryId = db.cell(SqlCondition.begin(sysAlias) + .andPrepareVars("ASYS_BINARIES.ROW_ID", "$field.BULKMAILID") + .buildSql("select ID from ASYS_BINARIES", "1=2"), sysAlias); + db.updateBinary(binaryId, "", bindata, filename, "", "", sysAlias); + neon.refresh(["$field.content"]); +} diff --git a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod b/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod deleted file mode 100644 index 08401d57a8c587f818a90a58309df3ddcccc9a55..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/CampaignCost_entitiy.aod +++ /dev/null @@ -1,299 +0,0 @@ -<?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.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> - <name>CampaignCost_entitiy</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <afterOperatingState>%aditoprj%/entity/CampaignCost_entitiy/afterOperatingState.js</afterOperatingState> - <recordContainer>db</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>CAMPAIGNCOSTID</name> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>CAMPAIGN_ID</name> - <title>Campaign</title> - <consumer>Campaigns</consumer> - <groupable v="true" /> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>CAMPAIGNSTEP_ID</name> - <title>Campaign Step</title> - <consumer>CampaignSteps</consumer> - <groupable v="true" /> - <mandatoryProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js</mandatoryProcess> - <stateProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js</displayValueProcess> - <onValueChange>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js</onValueChange> - <onValueChangeTypes> - <element>MASK</element> - </onValueChangeTypes> - </entityField> - <entityField> - <name>CATEGORY</name> - <title>Category</title> - <consumer>KeywordCampaignManagementCostCategory</consumer> - <groupable v="true" /> - <mandatory v="true" /> - <displayValueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js</displayValueProcess> - </entityField> - <entityField> - <name>NET</name> - <title>Cost</title> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <inputFormat>#,##0.00</inputFormat> - <mandatory v="true" /> - </entityField> - <entityField> - <name>USER_NEW</name> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>DATE_NEW</name> - <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>USER_EDIT</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>DATE_EDIT</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js</valueProcess> - </entityField> - <entityProvider> - <name>CampaignCosts</name> - <dependencies> - <entityDependency> - <name>7131288b-af5c-4914-96f5-c5d70217fc23</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - <children> - <entityParameter> - <name>CampaignStepId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>Uid_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>CampaignId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>CampaignSteps_param</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaigncosts/children/campaignsteps_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityProvider> - <entityProvider> - <name>StepCosts</name> - <dependencies> - <entityDependency> - <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - <children> - <entityParameter> - <name>CampaignStepId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Uid_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>CampaignId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>CampaignSteps_param</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityProvider> - <entityConsumer> - <name>Campaigns</name> - <dependency> - <name>dependency</name> - <entityName>Campaign_entity</entityName> - <fieldName>Campaigns</fieldName> - </dependency> - </entityConsumer> - <entityConsumer> - <name>CampaignSteps</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> - <children> - <entityParameter> - <name>campaignId_param</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignsteps/children/campaignid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCampaignManagementCostCategory</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ExcludedKeyIdsSubquery_param</name> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityActionGroup> - <name>alter</name> - <children> - <entityActionField> - <name>edit</name> - <onActionProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js</onActionProcess> - <isSelectionAction v="true" /> - <iconId>NEON:PENCIL</iconId> - </entityActionField> - </children> - </entityActionGroup> - <entityParameter> - <name>CampaignId_param</name> - <expose v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>CampaignStepId_param</name> - <expose v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>Uid_param</name> - <expose v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityField> - <name>netPerParticipant</name> - <contentType>NUMBER</contentType> - <outputFormat>#,##0.00</outputFormat> - <inputFormat>#,##0.00</inputFormat> - <state>READONLY</state> - <titleProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/netperparticipant/titleProcess.js</titleProcess> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js</valueProcess> - </entityField> - <entityField> - <name>countParticipants</name> - <title>Participants</title> - <contentType>NUMBER</contentType> - <outputFormat>#0</outputFormat> - <inputFormat>#0</inputFormat> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/CampaignCost_entitiy/entityfields/countparticipants/valueProcess.js</valueProcess> - </entityField> - <entityParameter> - <name>CampaignSteps_param</name> - <title></title> - <expose v="true" /> - <documentation>%aditoprj%/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc</documentation> - <description>PARAMETER</description> - </entityParameter> - </entityFields> - <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <fromClauseProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> - <conditionProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js</conditionProcess> - <orderClauseProcess>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> - <linkInformation> - <linkInformation> - <name>70c2db20-0695-4189-92cb-7da585bff401</name> - <tableName>CAMPAIGNCOST</tableName> - <primaryKey>CAMPAIGNCOSTID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - <linkInformation> - <name>b97b7f67-86ea-4d0a-8303-abc05863ed66</name> - <tableName>CAMPAIGNSTEP</tableName> - <primaryKey>CAMPAIGNSTEPID</primaryKey> - <isUIDTable v="false" /> - <readonly v="true" /> - </linkInformation> - </linkInformation> - <recordFieldMappings> - <dbRecordFieldMapping> - <name>CAMPAIGN_ID.value</name> - <recordfield>CAMPAIGNCOST.CAMPAIGN_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CAMPAIGNCOSTID.value</name> - <recordfield>CAMPAIGNCOST.CAMPAIGNCOSTID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CAMPAIGNSTEP_ID.value</name> - <recordfield>CAMPAIGNCOST.CAMPAIGNSTEP_ID</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CATEGORY.value</name> - <recordfield>CAMPAIGNCOST.CATEGORY</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DATE_EDIT.value</name> - <recordfield>CAMPAIGNCOST.DATE_EDIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>DATE_NEW.value</name> - <recordfield>CAMPAIGNCOST.DATE_NEW</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>NET.value</name> - <recordfield>CAMPAIGNCOST.NET</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>USER_EDIT.value</name> - <recordfield>CAMPAIGNCOST.USER_EDIT</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>USER_NEW.value</name> - <recordfield>CAMPAIGNCOST.USER_NEW</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CATEGORY.displayValue</name> - <expression>%aditoprj%/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - </recordFieldMappings> - </dbRecordContainer> - </recordContainers> -</entity> diff --git a/entity/CampaignCost_entitiy/afterOperatingState.js b/entity/CampaignCost_entitiy/afterOperatingState.js deleted file mode 100644 index aadf712515f2c07c00aac89451d56b6cd77bdf39..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/afterOperatingState.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) -{ - neon.refreshAll(); -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js b/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js deleted file mode 100644 index 5808a7a781c569c67472b7a91f7892363330b39a..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/alter/children/edit/onActionProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.neon"); -import("system.vars"); - -var params = { - "Uid_param" : vars.get("$sys.uid") -} -neon.openContext("CampaignCost", "CampaignCostEdit_view", null, neon.OPERATINGSTATE_EDIT, params); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js deleted file mode 100644 index 2e2d6acf76ae6b1ea51cbcc77db98483695bcbf8..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaign_id/displayValueProcess.js +++ /dev/null @@ -1,9 +0,0 @@ -import("system.result"); -import("system.db"); -import("system.vars"); -import("Campaign_lib"); - -var campaignId = vars.get("$field.CAMPAIGN_ID"); -var campaignName = CampaignUtils.getCampaignNameById(campaignId); - -result.string(campaignName); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js deleted file mode 100644 index 4037fcb024927b70e5a6ca6f7753c70c0cea0728..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaign_id/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.CampaignId_param") && vars.get("$param.CampaignId_param")) -{ - result.string(vars.get("$param.CampaignId_param")); -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js deleted file mode 100644 index f05a19497e25fe0dc5771521a787dbac10fb5489..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/displayValueProcess.js +++ /dev/null @@ -1,20 +0,0 @@ -import("system.neon"); -import("system.translate"); -import("system.result"); -import("system.db"); -import("system.vars"); -import("Campaign_lib"); - -if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) -{ - var campaignStepId = vars.get("$field.CAMPAIGNSTEP_ID"); - if (campaignStepId) - { - var campaignStepName = CampaignUtils.getCampaignStepNameById(campaignStepId); - result.string(translate.text("Step") + ": " + campaignStepName); - } - else - { - result.string(translate.text("Fix cost")); - } -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js deleted file mode 100644 index 32de11947a0d476bc467050c0a740461be22b2f7..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/mandatoryProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -result.object((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && - vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1" && - vars.exists("$param.CampaignStepId_param") && !vars.get("$param.CampaignStepId_param"))); diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js deleted file mode 100644 index 6483cdd91c7941e5997f3405fffbddcf3893f23a..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/onValueChange.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.neon"); - -neon.setFieldValue("$field.CATEGORY", ""); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js deleted file mode 100644 index a3d6f4f4d26c42171f5dfaf152074f7039f95afd..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/stateProcess.js +++ /dev/null @@ -1,13 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && - vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1" && - vars.exists("$param.CampaignStepId_param") && !vars.get("$param.CampaignStepId_param")) -{ - result.string(neon.COMPONENTSTATE_AUTO); -} -else -{ - result.string(neon.COMPONENTSTATE_INVISIBLE); -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js deleted file mode 100644 index 30896ea50e4ae6bbc69bb7baaca294418004cb84..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignstep_id/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.CampaignStepId_param") && vars.get("$param.CampaignStepId_param")) -{ - result.string(vars.get("$param.CampaignStepId_param")); -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignsteps/children/campaignid_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/campaignsteps/children/campaignid_param/valueProcess.js deleted file mode 100644 index dc855dd051409b0f79372cc2e34d294a1a57c72d..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignsteps/children/campaignid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$param.CampaignId_param")) \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc b/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc deleted file mode 100644 index d74c862542faa32b0e558fa69c33edc0000980f6..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/campaignsteps_param/documentation.adoc +++ /dev/null @@ -1,2 +0,0 @@ -if 0: show only fix costs -if 1: show only campaign steps \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js b/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js deleted file mode 100644 index c8d7303fadeec6339bcd9065205606caa49e415c..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/category/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepCostCategory(), vars.get("$this.value"))); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/countparticipants/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/countparticipants/valueProcess.js deleted file mode 100644 index c8cec9a46f4ad458f2dfb3f8525644fb1a1d5244..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/countparticipants/valueProcess.js +++ /dev/null @@ -1,12 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Campaign_lib"); - -if (vars.get("$field.CAMPAIGNSTEP_ID")) -{ - result.string(CampaignUtils.getParticipantCountForStep(vars.get("$field.CAMPAIGNSTEP_ID"))); -} -else -{ - result.string(CampaignUtils.getParticipantCount(vars.get("$field.CAMPAIGN_ID"))); -} \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js deleted file mode 100644 index 96630036eca528560c85d9a237044931e7a9197b..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/date_edit/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js deleted file mode 100644 index 1b1ea7c082a78ebd6e793a5dc644d8920f9522c2..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/date_new/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js deleted file mode 100644 index 621fdd82097282d2e949cb0402cf1edcbf5610ce..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/containername_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.campaignStepCostCategory()); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js deleted file mode 100644 index 7bf0f39ed06188503867bd1ecca206fece100bc0..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js +++ /dev/null @@ -1,18 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.db"); -import("Sql_lib"); -import("system.result"); - -var cond = SqlCondition.begin() - .andPrepareVars("CAMPAIGNCOST.CAMPAIGN_ID", "$field.CAMPAIGN_ID"); - -if (vars.get("$field.CAMPAIGNSTEP_ID")) - cond.andPrepareVars("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$field.CAMPAIGNSTEP_ID"); -else - cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null") - -if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) - cond.andPrepareVars("CAMPAIGNCOST.CAMPAIGNCOSTID", "$field.CAMPAIGNCOSTID", "# <> ?"); - -result.string(db.translateStatement(cond.buildSql("select CATEGORY from CAMPAIGNCOST", "1=2", "group by CATEGORY"))); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/netperparticipant/titleProcess.js b/entity/CampaignCost_entitiy/entityfields/netperparticipant/titleProcess.js deleted file mode 100644 index c5ea14f73ec9a5870c7c5e3a7a58e3358107e15d..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/netperparticipant/titleProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.translate"); -import("system.result"); - -result.string(translate.text("Cost") + " " + translate.text("per") + " " + translate.text("Participant")); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js deleted file mode 100644 index eea808176cb74be09b41f29a60bb1105115c5af4..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/netperparticipant/valueProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.eMath"); - -var netto = parseFloat(vars.get("$field.NET")); -var countParticipants = parseFloat(vars.get("$field.countParticipants")); - -if (netto && countParticipants &&countParticipants > 0) - result.string(eMath.roundDec(netto / countParticipants, 2, eMath.ROUND_HALF_UP)); -else - result.string(0); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js deleted file mode 100644 index 8a93ff7e16a82fb332cf1f6f30c95bec0c74d929..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/user_edit/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) - result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js b/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js deleted file mode 100644 index 2615c2bbe71788eb05f1ff93ea8afaa05b40f6fb..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/entityfields/user_new/valueProcess.js +++ /dev/null @@ -1,7 +0,0 @@ -import("system.util"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js deleted file mode 100644 index f553af6bac573d4226067d0bf246eada7d0d1dc5..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/recordcontainers/db/conditionProcess.js +++ /dev/null @@ -1,22 +0,0 @@ -import("system.vars"); -import("system.db"); -import("system.result"); -import("Sql_lib"); - -var cond = SqlCondition.begin() - .andPrepareVars("CAMPAIGNCOST.CAMPAIGNCOSTID", "$param.Uid_param") - .andPrepareVars("CAMPAIGNCOST.CAMPAIGN_ID", "$param.CampaignId_param") - .andPrepareVars("CAMPAIGNCOST.CAMPAIGNSTEP_ID", "$param.CampaignStepId_param"); - -if (vars.exists("$param.CampaignSteps_param") && vars.get("$param.CampaignSteps_param") == "1") -{ - // only step costs - cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is not null"); -} -else -{ - // only fix costs - cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null"); -} - -result.string(db.translateCondition(cond.build("1=2"))); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js deleted file mode 100644 index e075c4e894903b135e4bd4281da91bdb84c90538..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/recordcontainers/db/fromClauseProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.result"); - -result.string("CAMPAIGNCOST left join CAMPAIGNSTEP on CAMPAIGNCOST.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID") \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js b/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js deleted file mode 100644 index e8abc388f8ef2e8b95dcb0d800030fcfc52701d0..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/recordcontainers/db/orderClauseProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.db"); - -result.object({"CAMPAIGNSTEP.SORTING": db.ASCENDING}); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js b/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js deleted file mode 100644 index 4f14958aedfdf8daa195607c5b86e2e66e097ce5..0000000000000000000000000000000000000000 --- a/entity/CampaignCost_entitiy/recordcontainers/db/recordfieldmappings/category.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepCostCategory(), "CAMPAIGNCOST.CATEGORY"); -result.string(sql); \ No newline at end of file diff --git a/entity/CampaignCost_entity/entityfields/category/displayValueProcess.js b/entity/CampaignCost_entity/entityfields/category/displayValueProcess.js index 96536279ef0b858b99687c397622da45f831fa14..ea066328168d83b9c725e0628005f160d86d9d21 100644 --- a/entity/CampaignCost_entity/entityfields/category/displayValueProcess.js +++ b/entity/CampaignCost_entity/entityfields/category/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("Keyword_lib"); import("KeywordRegistry_basic"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepCostCategory(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepCostCategory(), vars.get("$field.CATEGORY"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index 92d59a1b933c236b6a986171d830aa136e2da2bb..8f1eb9cea2846eae246e5cf1a21e9ead325fcb6b 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -38,6 +38,10 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaign_id/displayValueProcess.js</displayValueProcess> <onValueChange>%aditoprj%/entity/CampaignStep_entity/entityfields/campaign_id/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>EMPLOYEE_CONTACT_ID</name> diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/displayValueProcess.js index c876f777295c165cd1b38cba358bfd6a8a6920a7..e97c4268951b37afbff8afad70b80a07822a1bca 100644 --- a/entity/CampaignStep_entity/entityfields/campaign_id/displayValueProcess.js +++ b/entity/CampaignStep_entity/entityfields/campaign_id/displayValueProcess.js @@ -1,7 +1,7 @@ -import("system.result"); -import("system.vars"); -import("Campaign_lib"); - -var campaignId = vars.get("$this.value"); -var campaignName = CampaignUtils.getCampaignNameById(campaignId) +import("system.result"); +import("system.vars"); +import("Campaign_lib"); + +var campaignId = vars.get("$field.CAMPAIGN_ID"); +var campaignName = CampaignUtils.getCampaignNameById(campaignId) result.string(campaignName); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/date_end/valueProcess.js b/entity/CampaignStep_entity/entityfields/date_end/valueProcess.js index b0c6f5d3b5240543f6fefcccee25cd50d5151524..8048460efdebae9db5983abdcf0ecda0b6b2911f 100644 --- a/entity/CampaignStep_entity/entityfields/date_end/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/date_end/valueProcess.js @@ -1,10 +1,10 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); -import("system.datetime"); - -var threeWeeks = datetime.ONE_WEEK * 3; -var inThreeWeeks = datetime.date() + threeWeeks; - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.datetime"); + +var threeWeeks = datetime.ONE_WEEK * 3; +var inThreeWeeks = datetime.date() + threeWeeks; + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(inThreeWeeks); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/date_start/valueProcess.js b/entity/CampaignStep_entity/entityfields/date_start/valueProcess.js index 1a1d714cdde1413809445e51e0dd6cc841219099..5232be0ad0ad84c3ddc067506c9a9c7e6f3e4bd2 100644 --- a/entity/CampaignStep_entity/entityfields/date_start/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/date_start/valueProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.vars"); import("system.result"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(DateUtils.getTodayUTC()); } diff --git a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js index 7363c5fb269c99197ae38d1032b278818de80d8e..fd6b6aef2f69c7be604ebcf0512609e3dfdff3cb 100644 --- a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js +++ b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js @@ -1,10 +1,10 @@ -import("Campaign_lib"); -import("system.result"); -import("Entity_lib"); -import("system.vars"); - -var currentParticipantsCount = parseInt(vars.get("$field.CurrentMaxParticipantsInfo")[0]); -var newMaxParticipantsCount = parseInt(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.MAXPARTICIPANTS"))); - -if(newMaxParticipantsCount < currentParticipantsCount) +import("Campaign_lib"); +import("system.result"); +import("Entity_lib"); +import("system.vars"); + +var currentParticipantsCount = parseInt(vars.get("$field.CurrentMaxParticipantsInfo")[0]); +var newMaxParticipantsCount = parseInt(vars.get("local.value")); + +if(newMaxParticipantsCount < currentParticipantsCount) result.string(CampaignUtils.getMaxParticipantsValidationMessage()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js index 4eda9361751ab1a50266d6fb8264a35cb808a077..eda9e4ac40f21a62ec1025510c6dcbcfe91877d0 100644 --- a/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js +++ b/entity/CampaignStep_entity/entityfields/state/displayValueProcess.js @@ -1,6 +1,6 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$this.value"))); \ No newline at end of file +import("system.result"); +import("system.vars"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$field.STATE"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/state/valueProcess.js b/entity/CampaignStep_entity/entityfields/state/valueProcess.js index da244c96b11edb16fbfeb5e0a812d5315ae5b659..dc5efe1d6fe6cca00ad15ff17d26d7fe16a98a55 100644 --- a/entity/CampaignStep_entity/entityfields/state/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/state/valueProcess.js @@ -1,7 +1,7 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); -import("KeywordRegistry_basic"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.vars"); +import("system.result"); +import("system.neon"); +import("KeywordRegistry_basic"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.campaignStepState$open()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js index c030c5382afe5f1237d122200fc5f028a702d7fb..429287a14cde6238f380ff76c6b30c2e6ca93f05 100644 --- a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js +++ b/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js @@ -1,6 +1,6 @@ -import("system.result"); -import("system.vars"); -import("KeywordRegistry_basic"); -import("Keyword_lib"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.communicationMediumCampaign(), vars.get("$this.value"))); +import("system.result"); +import("system.vars"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); + +result.string(KeywordUtils.getViewValue($KeywordRegistry.communicationMediumCampaign(), vars.get("$field.STEPMEDIUM"))); diff --git a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js index 0d83e155507cb0955f8ebc5a4ff4af836b96977e..4711a17716cf559c48c73cd7ea780b2ffe5e2e03 100644 --- a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js +++ b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js @@ -1,7 +1,7 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); -import("Employee_lib"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Employee_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/state/valueProcess.js b/entity/Campaign_entity/entityfields/state/valueProcess.js index 9dff88d91d83c29412096ee051941114a92f82b1..0c370f2eb587056a5e1f0235f84bcaf137c6d883 100644 --- a/entity/Campaign_entity/entityfields/state/valueProcess.js +++ b/entity/Campaign_entity/entityfields/state/valueProcess.js @@ -1,7 +1,7 @@ -import("system.neon"); -import("system.vars"); -import("system.result"); -import("KeywordRegistry_basic"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.neon"); +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.campaignState$planning()); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js index a5717eabb76417046c488939aadcfa7beb915dcd..4fb0aeb79a76fae66af37083cc83e38fc26d051e 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(translate.text(vars.get("$this.value"))); \ No newline at end of file +result.string(translate.text(vars.get("$field.CLASSIFICATIONGROUP"))); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js index 54c0a302da1fbc5e4e536a7ffd0f80778cc1986c..b22708772a0282ee6afb72989395043a5a80ff50 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js @@ -7,7 +7,7 @@ import("Entity_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { - var newGroup = ProcessHandlingUtils.getOnValidationValue(); + var newGroup = vars.get("local.value"); // use param if available or current selectionRows var classificationType = ClassificationUtils.getUsageType("$param.ClassificationType_param", "$sys.selectionRows"); diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js index e56601c615178505648345adeb253d9b3dea9e77..9a93d9382887643fcc081de68214ba526ed930ac 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("Keyword_lib"); import("KeywordRegistry_basic"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$field.CLASSIFICATIONTYPE"))); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtype_id/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtype_id/valueProcess.js index 3886bb2dbefafdfd50c83b824fe2c1efd190f31e..aaef9be6b3921ec62b37843d0c65b43aeedd7fdf 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtype_id/valueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtype_id/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) && !vars.get("$this.value")) +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) && vars.get("$this.value") == null) { result.string(vars.get("$field.CLASSIFICATIONTYPEID")); } \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/object_rowid/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/object_rowid/valueProcess.js index d15a596ff1090502ac8cd6afd63e12893ce05625..00c91dc0b75c8cb002fa9eafe58ad40ab16a0e3a 100644 --- a/entity/ClassificationAdmin_entity/entityfields/object_rowid/valueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/object_rowid/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$this.value") == null) { result.string(vars.get("$param.ObjectRowid_param")); } \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js index b532aa65a135891c68363e05f02e3420967f409a..6a340688081d8317de45c8b656f6ffcbe9520e1e 100644 --- a/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$this.value") == null) { result.string(vars.get("$param.ObjectType_param")); } \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js index a5717eabb76417046c488939aadcfa7beb915dcd..87d569a0e2dc50c0ef3859fdbc0f22c3d9ac89e3 100644 --- a/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(translate.text(vars.get("$this.value"))); \ No newline at end of file +result.string(translate.text(vars.get("$field.SCORETYPE"))); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/uid/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/uid/displayValueProcess.js index b92bfbc2e35eba18a9e8daf1ba5ab25180d8a837..62451165d8d832fb9359a2696e3f32d16a585149 100644 --- a/entity/ClassificationAdmin_entity/entityfields/uid/displayValueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/uid/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("Keyword_lib"); import("KeywordRegistry_basic"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$this.value"))) \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$field.UID"))) \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/score/onValidation.js b/entity/ClassificationScore_entity/entityfields/score/onValidation.js index be6e4157430034d74f2785dcd3c5198b8dfe6a17..83ad4d951b6ef20e15e38a4e4ad81c1ba7738e3b 100644 --- a/entity/ClassificationScore_entity/entityfields/score/onValidation.js +++ b/entity/ClassificationScore_entity/entityfields/score/onValidation.js @@ -4,5 +4,5 @@ import("system.result"); import("system.vars"); var max = parseFloat(vars.getString("$field.MaxValue")); -if (parseFloat(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.SCORE"))) > max) +if (parseFloat(vars.get("local.value")) > max) result.string(translate.withArguments("${HIGHER_THAN_MAX} max: %0", [max])); \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js index c5738f7687d5ea12365963b822d86b9d09968bdd..6f677fee2cb374dfea6c759cd9611407428f8b89 100644 --- a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js +++ b/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js @@ -6,6 +6,6 @@ import("system.vars"); if (vars.getString("$field.CLASSIFICATIONGROUP")) { var score = vars.getString("$field.GroupScore"); - result.string(translate.text(vars.get("$this.value")) + ": " + score + " " + translate.text("points") + " = " + ClassificationUtils.mapToClass(score)); + result.string(translate.text(vars.get("$field.CLASSIFICATIONGROUP")) + ": " + score + " " + translate.text("points") + " = " + ClassificationUtils.mapToClass(score)); } diff --git a/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js index e56601c615178505648345adeb253d9b3dea9e77..9a93d9382887643fcc081de68214ba526ed930ac 100644 --- a/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js +++ b/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("Keyword_lib"); import("KeywordRegistry_basic"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$field.CLASSIFICATIONTYPE"))); \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js b/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js index 3886bb2dbefafdfd50c83b824fe2c1efd190f31e..aaef9be6b3921ec62b37843d0c65b43aeedd7fdf 100644 --- a/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js +++ b/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) && !vars.get("$this.value")) +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) && vars.get("$this.value") == null) { result.string(vars.get("$field.CLASSIFICATIONTYPEID")); } \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/object_rowid/valueProcess.js b/entity/Classification_entity/entityfields/object_rowid/valueProcess.js index d15a596ff1090502ac8cd6afd63e12893ce05625..00c91dc0b75c8cb002fa9eafe58ad40ab16a0e3a 100644 --- a/entity/Classification_entity/entityfields/object_rowid/valueProcess.js +++ b/entity/Classification_entity/entityfields/object_rowid/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$this.value") == null) { result.string(vars.get("$param.ObjectRowid_param")); } \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/object_type/valueProcess.js b/entity/Classification_entity/entityfields/object_type/valueProcess.js index b532aa65a135891c68363e05f02e3420967f409a..6a340688081d8317de45c8b656f6ffcbe9520e1e 100644 --- a/entity/Classification_entity/entityfields/object_type/valueProcess.js +++ b/entity/Classification_entity/entityfields/object_type/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$this.value") == null) { result.string(vars.get("$param.ObjectType_param")); } \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js b/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js index a5717eabb76417046c488939aadcfa7beb915dcd..87d569a0e2dc50c0ef3859fdbc0f22c3d9ac89e3 100644 --- a/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js +++ b/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(translate.text(vars.get("$this.value"))); \ No newline at end of file +result.string(translate.text(vars.get("$field.SCORETYPE"))); \ No newline at end of file diff --git a/entity/CommRestriction_Entity/entityfields/employee_involved/valueProcess.js b/entity/CommRestriction_Entity/entityfields/employee_involved/valueProcess.js index 0d83e155507cb0955f8ebc5a4ff4af836b96977e..4711a17716cf559c48c73cd7ea780b2ffe5e2e03 100644 --- a/entity/CommRestriction_Entity/entityfields/employee_involved/valueProcess.js +++ b/entity/CommRestriction_Entity/entityfields/employee_involved/valueProcess.js @@ -1,7 +1,7 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); -import("Employee_lib"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Employee_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/CommRestriction_Entity/entityfields/startdate/valueProcess.js b/entity/CommRestriction_Entity/entityfields/startdate/valueProcess.js index 3e186c747bfbb6719878872798de7bcea5ab7794..c6997b853583045d68eeca542145fc44b42c54f9 100644 --- a/entity/CommRestriction_Entity/entityfields/startdate/valueProcess.js +++ b/entity/CommRestriction_Entity/entityfields/startdate/valueProcess.js @@ -1,7 +1,7 @@ -import("system.datetime"); -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && ars.getString("$this.value") == null) result.string(datetime.date()); \ No newline at end of file diff --git a/entity/Communication_entity/entityfields/addr/onValidation.js b/entity/Communication_entity/entityfields/addr/onValidation.js index 4724d9c2314f8dff5bc5bfe56efac49e98db0548..2a7c905a42a446fcb30b0ba10d64d62e458c1aee 100644 --- a/entity/Communication_entity/entityfields/addr/onValidation.js +++ b/entity/Communication_entity/entityfields/addr/onValidation.js @@ -17,7 +17,7 @@ var commCategory = keywordAttributes.contentType || "TEXT"; var fn = CommValidationUtil.makeValidationFn(commCategory); if (fn != null) { - var commAddr = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ADDR")); + var commAddr = vars.get("local.value"); var additional = CommValidationUtil.getExtensionsBlueprint(); additional.countryCode = vars.get("$param.ContactsMainCountry_param");//TODO: try to use users language first and then the companies diff --git a/entity/Contact_entity/entityfields/organisation_id/onValidation.js b/entity/Contact_entity/entityfields/organisation_id/onValidation.js index 414972ba58306e857d7bf27cd11c1175bf96cae3..2d8449de821c3519c108f09d553f73d05a70be1a 100644 --- a/entity/Contact_entity/entityfields/organisation_id/onValidation.js +++ b/entity/Contact_entity/entityfields/organisation_id/onValidation.js @@ -7,13 +7,7 @@ import("Entity_lib"); import("Sql_lib"); var personId = vars.getString("$field.PERSON_ID"); -var organisationId = ProcessHandlingUtils.getOnValidationValue("$field.ORGANISATION_ID"); - -//workaround for organisationId: $local.value will return the name of the organisation which is not what we want -//but the field already contains the changed value; so let's load the field instead of the $local.value-variable -//this is a bug within the ADITO-kernel -//TODO: change the workaround behaviour when $local.value is retrieved correct -organisationId = vars.getString("$field.ORGANISATION_ID"); +var organisationId = vars.get("$local.value"); //a entry within the Contact_enity can never be edited only created (it's edited within the Person_entity) //so no need to provide our own CONTACTID since it does not exist in the database right now => provide null instead diff --git a/entity/Contact_entity/entityfields/person_id/valueProcess.js b/entity/Contact_entity/entityfields/person_id/valueProcess.js index 7803b90af373762f4ae921f51bdadf4386ac9469..86dc70467464d41a428886dd7830cf7432470cde 100644 --- a/entity/Contact_entity/entityfields/person_id/valueProcess.js +++ b/entity/Contact_entity/entityfields/person_id/valueProcess.js @@ -3,5 +3,5 @@ import("system.result"); import("system.neon"); var presetValue = vars.get("$param.PersonId_param"); -if (presetValue && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (presetValue && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(presetValue); \ No newline at end of file diff --git a/entity/Contact_entity/entityfields/status/valueProcess.js b/entity/Contact_entity/entityfields/status/valueProcess.js index ab590b059440372f55b8c6d73d0c47eae06ca396..13218c16514d81765c7e5dfd47c099996adfe063 100644 --- a/entity/Contact_entity/entityfields/status/valueProcess.js +++ b/entity/Contact_entity/entityfields/status/valueProcess.js @@ -3,5 +3,5 @@ import("system.result"); import("system.neon"); import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.contactStatus$active()); \ No newline at end of file diff --git a/entity/Contract_entity/entityfields/contact_id/fieldIdProcess.js b/entity/Contract_entity/entityfields/contact_id/fieldIdProcess.js index c354a6b460cbecf0233c20761c02c66415c20e72..6cd3c4544e56fa57ad04b119be620aa650f4a849 100644 --- a/entity/Contract_entity/entityfields/contact_id/fieldIdProcess.js +++ b/entity/Contract_entity/entityfields/contact_id/fieldIdProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string (vars.get("$this.value")); \ No newline at end of file +result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/Contract_entity/entityfields/contractcode/onValidation.js b/entity/Contract_entity/entityfields/contractcode/onValidation.js index c9c46837558c4f545d61a8861b63a8a3d32dd0df..4d3cfa688f691b265b2348d492a123d2ef8f47e4 100644 --- a/entity/Contract_entity/entityfields/contractcode/onValidation.js +++ b/entity/Contract_entity/entityfields/contractcode/onValidation.js @@ -5,7 +5,7 @@ import("Contract_lib"); import("Entity_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW - && !ContractUtils.validateContractNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTCODE")))) + && !ContractUtils.validateContractNumber(vars.get("local.value"))) { vars.set("$field.CONTRACTCODE", ContractUtils.getNextContractNumber().toString()); } \ No newline at end of file diff --git a/entity/Contract_entity/entityfields/contractstart/onValueChange.js b/entity/Contract_entity/entityfields/contractstart/onValueChange.js index f2e29fdda8f9227616cd3dc7f3879867b2bfbaa8..2039e005c8ccdb8235ffcf4ca8f465749cbff12f 100644 --- a/entity/Contract_entity/entityfields/contractstart/onValueChange.js +++ b/entity/Contract_entity/entityfields/contractstart/onValueChange.js @@ -2,7 +2,7 @@ import("system.vars"); import("Util_lib"); import("Entity_lib"); -var cStart = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTSTART")); +var cStart = vars.get("local.value"); var cDue = vars.get("$field.CONTRACTDUE"); if (cDue < cStart && cDue != "") diff --git a/entity/Contract_entity/entityfields/contractstart/valueProcess.js b/entity/Contract_entity/entityfields/contractstart/valueProcess.js index fde00cab2ad74643d42064d1ae353c92972deeca..072560acb2f89d72012c5d3539c293cbf02b86a8 100644 --- a/entity/Contract_entity/entityfields/contractstart/valueProcess.js +++ b/entity/Contract_entity/entityfields/contractstart/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.neon"); import("Date_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(DateUtils.getTodayUTC()); } \ No newline at end of file diff --git a/entity/Contract_entity/onValidation.js b/entity/Contract_entity/onValidation.js index 77648d016858294bd4ed08ac0ffe845efddd9bac..07ec6d5c095b971e0fa242207390a0244a0a65f5 100644 --- a/entity/Contract_entity/onValidation.js +++ b/entity/Contract_entity/onValidation.js @@ -13,7 +13,7 @@ if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) errorMessage = DateUtils.getValidationFailString(); // check Duedate -var cDue = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTRACTDUE")); +var cDue = vars.get("local.value"); if (cDue && (startDate && !DateUtils.validateBeginnBeforeEnd(startDate, cDue) || endDate && !DateUtils.validateBeginnBeforeEnd(cDue, endDate))) { if (errorMessage != "") diff --git a/entity/DSGVOInfo_entity/entityfields/datasource/displayValueProcess.js b/entity/DSGVOInfo_entity/entityfields/datasource/displayValueProcess.js index e91f2e9dc43773355e826bdaa6e5c554824054a9..c2256cb6f59e99e189b508df819ad5918c25e700 100644 --- a/entity/DSGVOInfo_entity/entityfields/datasource/displayValueProcess.js +++ b/entity/DSGVOInfo_entity/entityfields/datasource/displayValueProcess.js @@ -4,4 +4,4 @@ import("Contact_lib"); import("system.neon"); -result.string(ContactUtils.getFullTitleByContactId(vars.getString("$this.value"))); \ No newline at end of file +result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.DATASOURCE"))); \ No newline at end of file diff --git a/entity/DSGVOInfo_entity/entityfields/deadline/onValueChange.js b/entity/DSGVOInfo_entity/entityfields/deadline/onValueChange.js index e140a66ed292bb53fa196996a562b4665d68a5cc..c263317ed2ea71d8651496cd0ae151cb95119144 100644 --- a/entity/DSGVOInfo_entity/entityfields/deadline/onValueChange.js +++ b/entity/DSGVOInfo_entity/entityfields/deadline/onValueChange.js @@ -2,7 +2,7 @@ import("KeywordRegistry_basic"); import("system.vars"); import("system.neon"); -if (vars.get("$this.value") == $KeywordRegistry.dsgvoDeadline$onTime()) +if (vars.get("$local.value") == $KeywordRegistry.dsgvoDeadline$onTime()) { neon.setFieldValues({ "$field.dateDeadline": "" diff --git a/entity/DSGVOInfo_entity/entityfields/recipient/displayValueProcess.js b/entity/DSGVOInfo_entity/entityfields/recipient/displayValueProcess.js index e91f2e9dc43773355e826bdaa6e5c554824054a9..e4a926b3553d60c50e0a71d742ff99600de691a5 100644 --- a/entity/DSGVOInfo_entity/entityfields/recipient/displayValueProcess.js +++ b/entity/DSGVOInfo_entity/entityfields/recipient/displayValueProcess.js @@ -4,4 +4,4 @@ import("Contact_lib"); import("system.neon"); -result.string(ContactUtils.getFullTitleByContactId(vars.getString("$this.value"))); \ No newline at end of file +result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.RECIPIENT"))); \ No newline at end of file diff --git a/entity/DSGVOInfo_entity/entityfields/transmission/onValueChange.js b/entity/DSGVOInfo_entity/entityfields/transmission/onValueChange.js index e18fabe80d94934695e3f3fe46ffdd18d631ef15..ac3985df8a878fe44c1179c4e8fc9ace5a6530f5 100644 --- a/entity/DSGVOInfo_entity/entityfields/transmission/onValueChange.js +++ b/entity/DSGVOInfo_entity/entityfields/transmission/onValueChange.js @@ -2,7 +2,7 @@ import("KeywordRegistry_basic"); import("system.vars"); import("system.neon"); -if (vars.get("$this.value") == $KeywordRegistry.dsgvoTransmission$none()) +if (vars.get("$local.value") == $KeywordRegistry.dsgvoTransmission$none()) { neon.setFieldValues({ "$field.RECIPIENT": "", diff --git a/entity/DSGVO_entity/entityfields/dsgvotype/displayValueProcess.js b/entity/DSGVO_entity/entityfields/dsgvotype/displayValueProcess.js index 72549ead1c6c1898f7c35f84a8abb36ce4595ccf..a91ec572c02a941012ad8eb50f3a4999485c5daa 100644 --- a/entity/DSGVO_entity/entityfields/dsgvotype/displayValueProcess.js +++ b/entity/DSGVO_entity/entityfields/dsgvotype/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.result"); import("Keyword_lib"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.dsgvoType(), vars.get("$this.value"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.dsgvoType(), vars.get("$field.DSGVOTYPE"))); \ No newline at end of file diff --git a/entity/DescriptionTranslation_entity/entityfields/lang/displayValueProcess.js b/entity/DescriptionTranslation_entity/entityfields/lang/displayValueProcess.js index ac0f29fc259baae6d6042a83e588737d6c76fd31..471293a21aa1604884698461618f2e15e142da92 100644 --- a/entity/DescriptionTranslation_entity/entityfields/lang/displayValueProcess.js +++ b/entity/DescriptionTranslation_entity/entityfields/lang/displayValueProcess.js @@ -6,5 +6,5 @@ import("KeywordRegistry_basic"); import("Keyword_lib"); import("Sql_lib"); -result.string(translate.text(db.cell(SqlCondition.begin().andPrepareVars("AB_LANGUAGE.ISO3", "$this.value") +result.string(translate.text(db.cell(SqlCondition.begin().andPrepareVars("AB_LANGUAGE.ISO3", "$field.LANG") .buildSql("select NAME_LATIN from AB_LANGUAGE", "1=2")))); \ No newline at end of file diff --git a/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js b/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js index 7ed1a7ee612295e7f22d6941fa6fd4c442a91004..3ccf1ac0d361997eb045d92a3ab014b5da4e4b13 100644 --- a/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js +++ b/entity/DocumentTemplate_entity/entityfields/bindata/onValueChange.js @@ -3,7 +3,7 @@ import("system.neon"); import("Entity_lib"); import("Document_lib"); -var uploadValue = DocumentUtil.getFilenameFromUpload(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.BINDATA"))); +var uploadValue = DocumentUtil.getFilenameFromUpload(vars.get("local.value")); if(!(vars.get("$field.NAME") != null && vars.get("$field.NAME") != "")) { diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 0ade69252f6dcd3d64214a57ab3a182c4d6bd7f0..4ad9aefbd202f5812cc623566522252908ec9d44 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -67,6 +67,7 @@ <children> <entityActionField> <name>downloadFilesAction</name> + <title>Download</title> <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/document_actions/children/downloadfilesaction/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> <isSelectionAction v="true" /> @@ -129,6 +130,7 @@ </entityParameter> <entityActionField> <name>downloadSingleFileAction</name> + <title>Download</title> <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/downloadsinglefileaction/onActionProcess.js</onActionProcess> <iconId>VAADIN:DOWNLOAD</iconId> </entityActionField> @@ -258,6 +260,12 @@ <fieldName>MainDocuments</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>056f943d-2ad2-4359-9825-7b445f0267ff</name> + <entityName>SupportTicket_entity</entityName> + <fieldName>MainDocuments</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/Document_entity/entityfields/bindata_upload/onValueChange.js b/entity/Document_entity/entityfields/bindata_upload/onValueChange.js index bac80becd0f9e237b82c178ca5eaa60957a29662..c0b7a0db07072a7f30d5bfdd1afef3713e5a9d72 100644 --- a/entity/Document_entity/entityfields/bindata_upload/onValueChange.js +++ b/entity/Document_entity/entityfields/bindata_upload/onValueChange.js @@ -3,5 +3,5 @@ import("system.neon"); import("Entity_lib"); import("Document_lib"); -var uploadValue = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.BINDATA_UPLOAD")); +var uploadValue = vars.get("local.value"); neon.setFieldValue("$field.NAME", DocumentUtil.getFilenameFromUpload(uploadValue)); diff --git a/entity/Document_entity/entityfields/is_main_document/onValueChange.js b/entity/Document_entity/entityfields/is_main_document/onValueChange.js index 9b24b45926f8c5a61e02a09fcdfbb1a1dcb4de76..6a0b8cbb98df8907007380f60a24c2f3fde360a6 100644 --- a/entity/Document_entity/entityfields/is_main_document/onValueChange.js +++ b/entity/Document_entity/entityfields/is_main_document/onValueChange.js @@ -2,8 +2,7 @@ import("system.neon"); import("system.vars"); import("Entity_lib"); -var value = vars.exists("$field.IS_MAIN_DOCUMENT") ? vars.get("$field.IS_MAIN_DOCUMENT") : ""; -value = ProcessHandlingUtils.getOnValidationValue(value); +var value = vars.get("$local.value") ? vars.get("$local.value") : ""; if(value == "1") neon.setFieldValue("$field.KEYWORD", "MAINDOCUMENT"); diff --git a/entity/Email_entity/entityfields/recipient/displayValueProcess.js b/entity/Email_entity/entityfields/recipient/displayValueProcess.js index 465e0a9f7198021c0d439c55cbeaff0d5c566f89..8e2f689eb15234549c8e1586c5aeba949ada2d62 100644 --- a/entity/Email_entity/entityfields/recipient/displayValueProcess.js +++ b/entity/Email_entity/entityfields/recipient/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.neon"); import("system.vars"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$this.value")); \ No newline at end of file + result.string(vars.get("$field.RECIPIENT")); \ No newline at end of file diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js index 1115022a7a85a8c8283ab6429fa117100664a2c9..e83561d0e54fb7ff062c4157e4c6b6bd718f86b6 100644 --- a/entity/Email_entity/entityfields/recipient/valueProcess.js +++ b/entity/Email_entity/entityfields/recipient/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) result.string(vars.get("$param.Recipient_param")); diff --git a/entity/Email_entity/recordcontainers/jdito/onInsert.js b/entity/Email_entity/recordcontainers/jdito/onInsert.js index a3ba13d26fb085a33bea5f1eb3344b4300da3bf9..d0a851b561749859c1d3facc086380da8aa2c3de 100644 --- a/entity/Email_entity/recordcontainers/jdito/onInsert.js +++ b/entity/Email_entity/recordcontainers/jdito/onInsert.js @@ -5,7 +5,7 @@ import("system.vars"); import("Email_lib"); var contactId = vars.get("$param.ContactId_param"); -var eml = EmailUtils.openMailTemplate( +var eml = EmailWritingUtils.openMailTemplate( vars.get("$field.RECIPIENT"), EmployeeUtils.getCurrentContactId(), vars.get("$field.DOCUMENT_TEMPLATE"), diff --git a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js index 388cdc2289d3f69159f7d2f346d983e0a338071c..3f92b2d22659c0b37d58f51750ddfcb1eda385c9 100644 --- a/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js +++ b/entity/EmployeeRole_entity/entityfields/role/displayValueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.tools"); var allRoles = tools.getAllRoles(); -var roleTitle = vars.get("$this.value"); +var roleTitle = vars.get("$field.ROLE"); if (roleTitle in allRoles) roleTitle = allRoles[roleTitle][0]; diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index 16747940d818c1837cc984e1b5775d370bb1ea49..710e72e1084548fd73238c4d4248fac4ea05fe14 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -250,6 +250,12 @@ <fieldName>EmployeeInvolved</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>773cd8d0-c4e2-4e2e-b910-a1f4e4b87801</name> + <entityName>UnlinkedMailMappingWrapper_entity</entityName> + <fieldName>Employees</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> <children> <entityParameter> diff --git a/entity/Employee_entity/entityfields/contact_id/onValueChange.js b/entity/Employee_entity/entityfields/contact_id/onValueChange.js index 26cac2df6b6b30fe19726b66e078f286f4d7400b..3aed4b3e8d16c7f7b496b2d05531b9532cf87f3a 100644 --- a/entity/Employee_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Employee_entity/entityfields/contact_id/onValueChange.js @@ -7,7 +7,7 @@ import("system.vars"); import("Sql_lib"); import("Employee_lib"); -var contactId = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")); +var contactId = vars.get("local.value"); if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && contactId) { diff --git a/entity/Employee_entity/entityfields/email_address/onValidation.js b/entity/Employee_entity/entityfields/email_address/onValidation.js index 764555dd20f91fd2aa2ffe24759cc4e9ae954a30..c9ac4ef72de7b9c1de1c4acc80300c00f671ea03 100644 --- a/entity/Employee_entity/entityfields/email_address/onValidation.js +++ b/entity/Employee_entity/entityfields/email_address/onValidation.js @@ -1,13 +1,13 @@ -import("Entity_lib"); -import("system.result"); -import("system.vars"); -import("system.tools"); -import("system.translate"); - -var email = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.EMAIL_ADDRESS")); -var isTaken = tools.getUserByAttribute(tools.EMAIL, [email]); -isTaken = isTaken - ? isTaken[tools.NAME] != vars.get("$field.UID") - : false; -if (email && isTaken) +import("Entity_lib"); +import("system.result"); +import("system.vars"); +import("system.tools"); +import("system.translate"); + +var email = vars.get("local.value"); +var isTaken = tools.getUserByAttribute(tools.EMAIL, [email]); +isTaken = isTaken + ? isTaken[tools.NAME] != vars.get("$field.UID") + : false; +if (email && isTaken) result.string(translate.text("Email must be unique!")); \ No newline at end of file diff --git a/entity/Employee_entity/entityfields/title/onValidation.js b/entity/Employee_entity/entityfields/title/onValidation.js index c2f5d678bf70ff8cd9f8b9ae68c94ea9eef3dfe3..90091b0551710d07ce191daaf18db8a5d88e83ca 100644 --- a/entity/Employee_entity/entityfields/title/onValidation.js +++ b/entity/Employee_entity/entityfields/title/onValidation.js @@ -1,17 +1,17 @@ -import("system.translate"); -import("system.neon"); -import("system.result"); -import("system.vars"); -import("system.tools"); -import("Entity_lib"); - -var title = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.TITLE")); -var isOldTitle = false; -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) -{ - let oldTitle = tools.getUserByAttribute(tools.NAME, [vars.get("$field.UID")], tools.PROFILE_TITLE); - oldTitle = oldTitle && oldTitle[tools.TITLE]; - isOldTitle = title == oldTitle; -} -if (!isOldTitle && title != "" && tools.existUsers(title)) +import("system.translate"); +import("system.neon"); +import("system.result"); +import("system.vars"); +import("system.tools"); +import("Entity_lib"); + +var title = vars.get("local.value"); +var isOldTitle = false; +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + let oldTitle = tools.getUserByAttribute(tools.NAME, [vars.get("$field.UID")], tools.PROFILE_TITLE); + oldTitle = oldTitle && oldTitle[tools.TITLE]; + isOldTitle = title == oldTitle; +} +if (!isOldTitle && title != "" && tools.existUsers(title)) result.string(translate.text("Username already exists!")); \ No newline at end of file diff --git a/entity/Forecast_entity/entityfields/date_start/valueProcess.js b/entity/Forecast_entity/entityfields/date_start/valueProcess.js index f7576b74fcf4e58d5a6e9b1098994ba76e9b3ef1..072560acb2f89d72012c5d3539c293cbf02b86a8 100644 --- a/entity/Forecast_entity/entityfields/date_start/valueProcess.js +++ b/entity/Forecast_entity/entityfields/date_start/valueProcess.js @@ -1,9 +1,9 @@ -import("system.result"); -import("system.vars"); -import("system.neon"); -import("Date_lib"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) -{ - result.string(DateUtils.getTodayUTC()); +import("system.result"); +import("system.vars"); +import("system.neon"); +import("Date_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ + result.string(DateUtils.getTodayUTC()); } \ No newline at end of file diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index b8c02ae79bc5f5130103f832df4d2dd04e89d205..770faadea2c766788b2025b061f66e924a272781 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -34,6 +34,10 @@ <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/displayValueProcess.js</displayValueProcess> <onValueChange>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/ab_keyword_attribute_id/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> </entityField> <entityField> <name>AB_KEYWORD_ENTRY_ID</name> diff --git a/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js b/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js index a7be1f9f79d40b07b0c63110ff6feac8cd30d8f8..3ee601ff33d6e21bd26fcfb138ba550d96036322 100644 --- a/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js +++ b/entity/KeywordAttributeRelation_entity/entityfields/valueproxy/onValueChange.js @@ -3,7 +3,7 @@ import("system.vars"); import("Entity_lib"); var type = vars.get("$field.attributeType"); -var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.valueProxy")); +var value = vars.get("$local.value"); switch (type) { case "BOOL_VALUE": diff --git a/entity/KeywordAttribute_entity/entityfields/name/onValidation.js b/entity/KeywordAttribute_entity/entityfields/name/onValidation.js index 6a2c9b1a35a48af4deb4794848269fca517e8b50..8711e91f305852080a4d2c2b093e33b85a04c0e9 100644 --- a/entity/KeywordAttribute_entity/entityfields/name/onValidation.js +++ b/entity/KeywordAttribute_entity/entityfields/name/onValidation.js @@ -13,7 +13,7 @@ var validation = (function(){ var container = vars.get("$field.CONTAINER"); if (container == "") return null; - var name = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.NAME")); + var name = vars.get("local.value"); if (name == "") return null; diff --git a/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js b/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js index a0830f5196463702be757aa76d46e9b3d3c1c8f4..c617b930c473204ff932028051fbe2c1faccaa75 100644 --- a/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js +++ b/entity/KeywordEntry_entity/entityfields/keyid/onValidation.js @@ -6,7 +6,7 @@ import("Sql_lib"); import("Entity_lib"); var container = vars.get("$field.CONTAINER"); -var keyId = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.KEYID")).trim(); +var keyId = vars.get("local.value").trim(); //a KEY has always to be unique within one container and since the user can specify the key on insert we've to ensure that it's unique if (container && keyId) diff --git a/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js b/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js index 2fc41228ab188dc70af71478adb1d1afd7c1cb77..e0c496f09541a007c74f8acb385b21ae51fb44a6 100644 --- a/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js +++ b/entity/KeywordEntry_entity/entityfields/keyid/valueProcess.js @@ -3,5 +3,5 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/LetterRecipient_entity/entityfields/contact_id/onValidation.js b/entity/LetterRecipient_entity/entityfields/contact_id/onValidation.js index cd3b65e526da177350c9829a3fa222f493c1df9d..90813bac7ff03f5b86e747b684bd48dc2384ab29 100644 --- a/entity/LetterRecipient_entity/entityfields/contact_id/onValidation.js +++ b/entity/LetterRecipient_entity/entityfields/contact_id/onValidation.js @@ -6,7 +6,7 @@ import("system.result"); import("KeywordRegistry_basic"); import("Entity_lib"); -var contactId = ProcessHandlingUtils.getOnValidationValue(); +var contactId = vars.get("local.value"); if (SerialLetterUtils.isRecipient(vars.get("$field.SERIALLETTER_ID"), contactId)) result.string(translate.text("The contact is already a recipient!")); if (ContactUtils.hasCommRestriction(contactId, $KeywordRegistry.communicationMediumCampaign$letter())) diff --git a/entity/Member_entity/entityfields/decider/valueProcess.js b/entity/Member_entity/entityfields/decider/valueProcess.js index 158a9a427401e0428fb203b103a374d9eb4b68c9..0c7813ac64d6597ae9dd37694b9c1dc8784b6284 100644 --- a/entity/Member_entity/entityfields/decider/valueProcess.js +++ b/entity/Member_entity/entityfields/decider/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string("0"); } \ No newline at end of file diff --git a/entity/Notification_entity/entityfields/state/displayValueProcess.js b/entity/Notification_entity/entityfields/state/displayValueProcess.js index 2949bf1ee7fe19f3a377bf38a6fc31c4192d3c22..821d9d45de78b483fa133576251beae4f9388f91 100644 --- a/entity/Notification_entity/entityfields/state/displayValueProcess.js +++ b/entity/Notification_entity/entityfields/state/displayValueProcess.js @@ -3,7 +3,7 @@ import("system.translate"); import("system.result"); import("system.vars"); -var value = vars.get("$this.value"); +var value = vars.get("$field.STATE"); switch(value) { diff --git a/entity/ObjectRelationType_entity/entityfields/icon/valueProcess.js b/entity/ObjectRelationType_entity/entityfields/icon/valueProcess.js index baceaf10d4f15fd4c3ebfa98d86bb557ea630041..9719f33bf3aa06c3472cbe7572a478a27771e330 100644 --- a/entity/ObjectRelationType_entity/entityfields/icon/valueProcess.js +++ b/entity/ObjectRelationType_entity/entityfields/icon/valueProcess.js @@ -2,5 +2,5 @@ import("system.neon"); import("system.vars"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string("VAADIN:CUBE"); \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js index 9264282cd7b4f9b9dca1cdd33aff00bb63064dd5..28182c2e1cddb274b7ea6b797f903764a9a66515 100644 --- a/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js +++ b/entity/ObjectTree_entity/entityfields/objectrelationtypeid/onValueChange.js @@ -1,38 +1,3 @@ -import("system.vars"); -import("system.db"); -import("system.result"); import("system.neon"); -import("Sql_lib"); -import("Entity_lib"); -var selectedObjectRelationTypeId = vars.exists("$field.selectedObjectRelationTypeIdProxy") ? vars.get("$field.selectedObjectRelationTypeIdProxy") : ""; -selectedObjectRelationTypeId = ProcessHandlingUtils.getOnValidationValue(selectedObjectRelationTypeId); - -var relationTypeData = db.array(db.ROW, SqlCondition.begin() - .andPrepare("AB_OBJECTRELATIONTYPE.AB_OBJECTRELATIONTYPEID", selectedObjectRelationTypeId) - .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2")); - -if (relationTypeData[0]) -{ - var otherRelationTypeData = db.array(db.ROW, SqlCondition.begin() - .andPrepare("AB_OBJECTRELATIONTYPE.RELATION_TYPE", relationTypeData[3]) - .andPrepare("AB_OBJECTRELATIONTYPE.SIDE", (relationTypeData[4] == "1" ? "2" : "1")) - .buildSql("select AB_OBJECTRELATIONTYPEID, OBJECT_TYPE, RELATION_TITLE, RELATION_TYPE, SIDE from AB_OBJECTRELATIONTYPE", "1=2")) - if (!otherRelationTypeData[0]) - { - otherRelationTypeData = relationTypeData; - } - - if (relationTypeData[4] == "2") - { - //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", relationTypeData[0]); - //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", otherRelationTypeData[0]); - } - else if (relationTypeData[4] == "1") - { - //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE1", relationTypeData[0]); - //neon.setFieldValue("$field.AB_OBJECTRELATIONTYPE2", otherRelationTypeData[0]); - } - - // neon.setFieldValue("$field.MySide", otherRelationTypeData[4]); -} +neon.setFieldValue("$field.TARGET_ID", ""); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js b/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js index 698ddd21921ba4623f9eeae0c1a61f579da714f5..7bef71f89d75304d3bed9240efe3059ee5112dee 100644 --- a/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/chosenaddress/displayValueProcess.js @@ -2,4 +2,4 @@ import("system.vars"); import("PostalAddress_lib"); import("system.result"); -result.string(AddressUtils.getFormattedOnlineAddressById(vars.get("$this.value"))) \ No newline at end of file +result.string(AddressUtils.getFormattedOnlineAddressById(vars.get("$field.ChosenAddress"))) \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js b/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js index e27804413bf71f873429b24b7a2865b03a23475b..c5042eb3c792dc79cbcb37089325e653139870f5 100644 --- a/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js +++ b/entity/Offer_entity/entityfields/chosenaddress/onValueChange.js @@ -3,7 +3,7 @@ import("system.neon"); import("PostalAddress_lib"); import("Entity_lib"); -var newAddressId = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.ChosenAddress")); +var newAddressId = vars.get("local.value"); if (newAddressId) { diff --git a/entity/Offer_entity/entityfields/contact_id/onValidation.js b/entity/Offer_entity/entityfields/contact_id/onValidation.js index ba0b5ac64592823f2c7ffdf581644839c9e7691c..98c4fef71d31b5027c234773c7223421117a54a6 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValidation.js +++ b/entity/Offer_entity/entityfields/contact_id/onValidation.js @@ -6,7 +6,7 @@ //import("Entity_lib"); //import("Contact_lib"); // -//if (ContactUtils.getContactTypeByContactId(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) != 2 && ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID"))) == 0) { -// logging.log(ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")))); +//if (ContactUtils.getContactTypeByContactId(vars.get("$local.value")) != 2 && ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), vars.get("$local.value")) == 0) { +// logging.log(ContextUtils.getCountByContactId(vars.get("$field.OBJECT_TYPE"), vars.get("local.value"))); // result.string(translate.text("This contact has no possible link.")) //} \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/contact_id/onValueChange.js b/entity/Offer_entity/entityfields/contact_id/onValueChange.js index cc8fab26f942a1a6e83f581c2e9c26bf57b72903..c90065cca07269ff73a623755b297c7f4531b442 100644 --- a/entity/Offer_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Offer_entity/entityfields/contact_id/onValueChange.js @@ -6,7 +6,7 @@ import("Util_lib"); import("Entity_lib"); import("Contact_lib"); -var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")); +var contactid = vars.get("local.value"); if(contactid != "") { //Language Preset diff --git a/entity/Offer_entity/entityfields/contact_id/valueProcess.js b/entity/Offer_entity/entityfields/contact_id/valueProcess.js index b863ff7acbd9288619e659d702561f52db3cafa0..82e4042d04ee5e0a82d63848e74e053985eaab2f 100644 --- a/entity/Offer_entity/entityfields/contact_id/valueProcess.js +++ b/entity/Offer_entity/entityfields/contact_id/valueProcess.js @@ -5,7 +5,7 @@ import("system.vars"); import("Sql_lib"); import("Context_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) var contactId = ""; if ((!vars.exists("$param.ContactId_param") || !vars.get("$param.ContactId_param")) && (vars.exists("$param.ObjectType_param") diff --git a/entity/Offer_entity/entityfields/currency/valueProcess.js b/entity/Offer_entity/entityfields/currency/valueProcess.js index 2f2451289c947c75e2bba4dcdb3f224de3c01881..bd7b097a841c4b70a17700906fb733cf7d06a330 100644 --- a/entity/Offer_entity/entityfields/currency/valueProcess.js +++ b/entity/Offer_entity/entityfields/currency/valueProcess.js @@ -7,7 +7,7 @@ if (vars.exists("$param.OfferCurrency_param") && vars.get("$param.OfferCurrency_ { result.string(vars.get("$param.OfferCurrency_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string($KeywordRegistry.currency$eur()); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/language/valueProcess.js b/entity/Offer_entity/entityfields/language/valueProcess.js index 826184267b67f23cecfd90a51ce0ee526800072a..07ae010d4acde2cafc0da5475aaa9f459b5db105 100644 --- a/entity/Offer_entity/entityfields/language/valueProcess.js +++ b/entity/Offer_entity/entityfields/language/valueProcess.js @@ -6,7 +6,7 @@ if (vars.exists("$param.OfferLanguage_param") && vars.get("$param.OfferLanguage_ { result.string(vars.get("$param.OfferLanguage_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string("deu"); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/lettersalutation/valueProcess.js b/entity/Offer_entity/entityfields/lettersalutation/valueProcess.js index 2c0266cbac1c8c8e575ade5d92b84fba9d7c474a..c3b78386885faaaf9b3dcfe18c659d6bb76d9c46 100644 --- a/entity/Offer_entity/entityfields/lettersalutation/valueProcess.js +++ b/entity/Offer_entity/entityfields/lettersalutation/valueProcess.js @@ -3,7 +3,7 @@ import("system.neon"); import("system.vars"); import("Address_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { var addrobj = new AddrObject(vars.get("$field.CONTACT_ID")); var salutation = addrobj.getFormattedAddress(false, "{letter_salutation},"); diff --git a/entity/Offer_entity/entityfields/net/displayValueProcess.js b/entity/Offer_entity/entityfields/net/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..450ae0cfd9fa1701eeb4d4e7c049a3c8fb8fc7a0 100644 --- a/entity/Offer_entity/entityfields/net/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/net/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.NET"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js index 56d86282f48b1a4469aa61f7817b24edde6e5123..fe2b7c72502d9937add9b539ed38483e6ca4bd51 100644 --- a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js @@ -4,7 +4,7 @@ import("system.db"); import("system.result"); import("Context_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) { +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.OBJECT_ROWID") == null) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); diff --git a/entity/Offer_entity/entityfields/object_type/valueProcess.js b/entity/Offer_entity/entityfields/object_type/valueProcess.js index 2ef4eb50b1095a48985b177800f92eb867078128..daa858c3b8f879a069f5a131a3e0e9f433345f1f 100644 --- a/entity/Offer_entity/entityfields/object_type/valueProcess.js +++ b/entity/Offer_entity/entityfields/object_type/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.result"); import("Context_lib") -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param")) { diff --git a/entity/Offer_entity/entityfields/offercode/onValidation.js b/entity/Offer_entity/entityfields/offercode/onValidation.js index 3b9c0b76f65fa2b8ae4026d17b1e78d5197d919f..4d9d2f8a307e5bfe834ba5defbbe845b46d279fd 100644 --- a/entity/Offer_entity/entityfields/offercode/onValidation.js +++ b/entity/Offer_entity/entityfields/offercode/onValidation.js @@ -8,7 +8,7 @@ import("Entity_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.exists("$param.OfferCode_param") - && !OfferUtils.validateOfferNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.OFFERCODE"))) ) + && !OfferUtils.validateOfferNumber(vars.get("local.value")) ) { vars.set( "$field.OFFERCODE", OfferUtils.getNextOfferNumber().toString() ); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js index 9232f51b2e090002d80c469239ab003444411400..dd50ed1f48cd0a080b399dbe7c5eb4cd6aa579e0 100644 --- a/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js +++ b/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); -import("Entity_lib"); - -result.string(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ORG_ID"))); +import("system.vars"); +import("system.result"); +import("Entity_lib"); + +result.string(vars.get("local.value")); diff --git a/entity/Offer_entity/entityfields/totalgross/displayValueProcess.js b/entity/Offer_entity/entityfields/totalgross/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..7e05663a8bc4754d820b79c99b32536c38cb3916 100644 --- a/entity/Offer_entity/entityfields/totalgross/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/totalgross/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalGross"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/vat/displayValueProcess.js b/entity/Offer_entity/entityfields/vat/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..47ebfd7ecabcff3e202bfc72a540623de1e484fd 100644 --- a/entity/Offer_entity/entityfields/vat/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/vat/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.VAT"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/discount/onValidation.js b/entity/Offeritem_entity/entityfields/discount/onValidation.js index 2864ac016f3a9b00e8cc491bcf3fac9204e2ec90..595a5d9aae549242aaa2246e2e4b6e6d602249a0 100644 --- a/entity/Offeritem_entity/entityfields/discount/onValidation.js +++ b/entity/Offeritem_entity/entityfields/discount/onValidation.js @@ -3,7 +3,7 @@ import("system.vars"); import("Util_lib"); import("Entity_lib"); -var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.DISCOUNT")); +var value = vars.get("local.value"); var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100); if (validationResult) diff --git a/entity/Offeritem_entity/entityfields/price/displayValueProcess.js b/entity/Offeritem_entity/entityfields/price/displayValueProcess.js index f9efef77b57bed78b2a0f2694905aed7cf5957f0..8cf3fa67d2e1761ddf525f8535cb788f057d7dbf 100644 --- a/entity/Offeritem_entity/entityfields/price/displayValueProcess.js +++ b/entity/Offeritem_entity/entityfields/price/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.PRICE"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js index b3cc01ab49bbd4ddc910037d3319e4ebb11ce25b..6f96be4201ed5ce7eda37e4f6b7225bd3c07393e 100644 --- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js @@ -8,7 +8,7 @@ import("Util_lib"); import("Entity_lib"); import("Attribute_lib"); -var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); +var pid = vars.get("local.value"); if(pid != "") { var currency = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; diff --git a/entity/Offeritem_entity/entityfields/quantity/onValidation.js b/entity/Offeritem_entity/entityfields/quantity/onValidation.js index a7fe04aaf506c2edfba1e2d74b644c3da785a6d1..0e56a1cc6269ecd23927fb2ef9746b2cc41b0c03 100644 --- a/entity/Offeritem_entity/entityfields/quantity/onValidation.js +++ b/entity/Offeritem_entity/entityfields/quantity/onValidation.js @@ -3,8 +3,7 @@ import("system.result"); import("system.vars"); import("Entity_lib"); -var quatity = vars.exists("$field.QUANTITY") ? vars.get("$field.QUANTITY") : ""; -quatity = ProcessHandlingUtils.getOnValidationValue(quatity); +var quatity = vars.get("$local.value") ? vars.get("$local.value") : ""; if (parseInt(quatity) <= 0) { diff --git a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js index 7b7bf4c94ca3639b0f3e6acf5c5950eaf5c9fc3b..ff55fb2f6178b863ff7edef2306dccd39c83efaf 100644 --- a/entity/Offeritem_entity/entityfields/quantity/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/quantity/onValueChange.js @@ -8,7 +8,7 @@ import("Entity_lib"); import("Attribute_lib"); var pid = vars.get("$field.PRODUCT_ID"); -var newQuantity = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.QUANTITY")); +var newQuantity = vars.get("local.value"); if(pid != "" && newQuantity != "") { var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; @@ -28,8 +28,7 @@ if(pid != "" && newQuantity != "") //checks if the value is <= 0, if so fallback to 1 -var quatity = vars.exists("$field.QUANTITY") ? vars.get("$field.QUANTITY") : ""; -quatity = ProcessHandlingUtils.getOnValidationValue(quatity); +var quatity = vars.get("$local.value") ? vars.get("$local.value") : ""; if (parseInt(quatity) <= 0) { diff --git a/entity/Offeritem_entity/entityfields/totalprice/displayValueProcess.js b/entity/Offeritem_entity/entityfields/totalprice/displayValueProcess.js index f9efef77b57bed78b2a0f2694905aed7cf5957f0..add7660232f235687ce8f1aa31faed4207c47264 100644 --- a/entity/Offeritem_entity/entityfields/totalprice/displayValueProcess.js +++ b/entity/Offeritem_entity/entityfields/totalprice/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalPrice"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/contact_id/onValueChange.js b/entity/Order_entity/entityfields/contact_id/onValueChange.js index 5ce78e6a9056118e8368c2c2d9acf2a620cfd52a..d2b9a2a8a4a879bab144368702d866d37a4f5da8 100644 --- a/entity/Order_entity/entityfields/contact_id/onValueChange.js +++ b/entity/Order_entity/entityfields/contact_id/onValueChange.js @@ -3,7 +3,7 @@ import("system.db"); import("Util_lib"); import("Entity_lib"); -var contactid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.CONTACT_ID")); +var contactid = vars.get("local.value"); if(contactid != "") { var relData = db.array(db.ROW, "select LANGUAGE from CONTACT where CONTACTID = '" + contactid + "'"); diff --git a/entity/Order_entity/entityfields/net/displayValueProcess.js b/entity/Order_entity/entityfields/net/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..450ae0cfd9fa1701eeb4d4e7c049a3c8fb8fc7a0 100644 --- a/entity/Order_entity/entityfields/net/displayValueProcess.js +++ b/entity/Order_entity/entityfields/net/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.NET"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/salesordercode/onValidation.js b/entity/Order_entity/entityfields/salesordercode/onValidation.js index 7913eec27eac7305ad380c20034691581d7fd08e..c63410c146bcc432613b0654d8132edc382aa78d 100644 --- a/entity/Order_entity/entityfields/salesordercode/onValidation.js +++ b/entity/Order_entity/entityfields/salesordercode/onValidation.js @@ -5,7 +5,7 @@ import("Order_lib"); import("Entity_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW - && !OrderUtils.validateOrderNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.SALESORDERCODE")))) + && !OrderUtils.validateOrderNumber(vars.get("local.value"))) { vars.set("$field.SALESORDERCODE", OrderUtils.getNextOrderNumber().toString()); } \ No newline at end of file diff --git a/entity/Order_entity/entityfields/totalgross/displayValueProcess.js b/entity/Order_entity/entityfields/totalgross/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..7e05663a8bc4754d820b79c99b32536c38cb3916 100644 --- a/entity/Order_entity/entityfields/totalgross/displayValueProcess.js +++ b/entity/Order_entity/entityfields/totalgross/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalGross"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Order_entity/entityfields/vat/displayValueProcess.js b/entity/Order_entity/entityfields/vat/displayValueProcess.js index b1c561c1f00014cbcd0669f0d810bd9fdb5ba052..47ebfd7ecabcff3e202bfc72a540623de1e484fd 100644 --- a/entity/Order_entity/entityfields/vat/displayValueProcess.js +++ b/entity/Order_entity/entityfields/vat/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.VAT"), translate.text("#,##0.00"), vars.get("$field.CURRENCY"))); \ No newline at end of file diff --git a/entity/Orderitem_entity/entityfields/price/displayValueProcess.js b/entity/Orderitem_entity/entityfields/price/displayValueProcess.js index f9efef77b57bed78b2a0f2694905aed7cf5957f0..8cf3fa67d2e1761ddf525f8535cb788f057d7dbf 100644 --- a/entity/Orderitem_entity/entityfields/price/displayValueProcess.js +++ b/entity/Orderitem_entity/entityfields/price/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.PRICE"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file diff --git a/entity/Orderitem_entity/entityfields/product_id/onValueChange.js b/entity/Orderitem_entity/entityfields/product_id/onValueChange.js index b7739bae3a139c87c5804d78580226529f26c66a..a4607b977dda36678b0975d1b7091055d63a080a 100644 --- a/entity/Orderitem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Orderitem_entity/entityfields/product_id/onValueChange.js @@ -4,7 +4,7 @@ import("Product_lib"); import("Util_lib"); import("Entity_lib"); -var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); +var pid = vars.get("local.value"); if(pid != "") { var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; diff --git a/entity/Orderitem_entity/entityfields/quantity/onValueChange.js b/entity/Orderitem_entity/entityfields/quantity/onValueChange.js index f6cb10a4585c3152a0d78ab4bed989186d609b63..5fbe3952a65b6081c9a845b0ec03e4092303c315 100644 --- a/entity/Orderitem_entity/entityfields/quantity/onValueChange.js +++ b/entity/Orderitem_entity/entityfields/quantity/onValueChange.js @@ -5,7 +5,7 @@ import("Util_lib"); import("Entity_lib"); var pid = vars.get("$field.PRODUCT_ID"); -var newQuantity = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.QUANTITY")); +var newQuantity = vars.get("local.value"); if(pid != "" && newQuantity != "") { var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; diff --git a/entity/Orderitem_entity/entityfields/totalprice/displayValueProcess.js b/entity/Orderitem_entity/entityfields/totalprice/displayValueProcess.js index f9efef77b57bed78b2a0f2694905aed7cf5957f0..add7660232f235687ce8f1aa31faed4207c47264 100644 --- a/entity/Orderitem_entity/entityfields/totalprice/displayValueProcess.js +++ b/entity/Orderitem_entity/entityfields/totalprice/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.TotalPrice"), translate.text("#,##0.00"), vars.get("$param.Currency_param"))); \ No newline at end of file diff --git a/entity/Orderitem_entity/entityfields/vat/displayValueProcess.js b/entity/Orderitem_entity/entityfields/vat/displayValueProcess.js index 4991d571f2dca899a63b77eb17141e6f3072c719..9fbe06edf7c2e2de85392c110e9b55afc6431fc0 100644 --- a/entity/Orderitem_entity/entityfields/vat/displayValueProcess.js +++ b/entity/Orderitem_entity/entityfields/vat/displayValueProcess.js @@ -3,5 +3,5 @@ import("system.vars"); import("system.translate"); import("system.result"); -if (vars.get("$this.value")) - result.string(text.formatDouble(vars.get("$this.value"), "0.00") + "%"); \ No newline at end of file +if (vars.get("$field.VAT")) + result.string(text.formatDouble(vars.get("$field.VAT"), "0.00") + "%"); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index a2a3e3a443b5da3cb138567b08ca4c5f940c79c9..9fb0cca23a7261a5ff1041faee543438f1cc2b4d 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -771,6 +771,8 @@ <entityActionField> <name>addToSerialLetter</name> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/campaignactiongroup/children/addtoserialletter/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> @@ -888,22 +890,27 @@ <dbRecordFieldMapping> <name>ADDRESS_ID.value</name> <recordfield>CONTACT.ADDRESS_ID</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CUSTOMERCODE.value</name> <recordfield>ORGANISATION.CUSTOMERCODE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>INFO.value</name> <recordfield>ORGANISATION.INFO</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>LANGUAGE.value</name> <recordfield>CONTACT.LANGUAGE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>NAME.value</name> <recordfield>ORGANISATION.NAME</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATIONID.value</name> @@ -920,20 +927,24 @@ <dbRecordFieldMapping> <name>STATUS.value</name> <recordfield>CONTACT.STATUS</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>TYPE.value</name> <recordfield>ORGANISATION.TYPE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name> <recordfield></recordfield> <expression>%aditoprj%/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_PHONE_COMMUNICATION.displayValue</name> <recordfield></recordfield> <expression>%aditoprj%/entity/Organisation_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STATUS.displayValue</name> @@ -979,6 +990,14 @@ <name>PICTURE.value</name> <recordfield>ORGANISATION.PICTURE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STANDARD_EMAIL_COMMUNICATION.value</name> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STANDARD_PHONE_COMMUNICATION.value</name> + <isFilterable v="true" /> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> <indexRecordContainer> diff --git a/entity/Organisation_entity/entityfields/newemail/onActionProcess.js b/entity/Organisation_entity/entityfields/newemail/onActionProcess.js index 1da710e798dadf34a91770a741d4fa6dd837936f..cd7548548702791f8f81ec290a532fd19feaeafa 100644 --- a/entity/Organisation_entity/entityfields/newemail/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/newemail/onActionProcess.js @@ -1,4 +1,4 @@ -import("system.vars"); -import("Email_lib"); - -EmailUtils.openNewMail(vars.getString("$field.CONTACTID")); \ No newline at end of file +import("system.vars"); +import("Email_lib"); + +EmailWritingUtils.openNewMail(vars.getString("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/status/valueProcess.js b/entity/Organisation_entity/entityfields/status/valueProcess.js index ae552040e295ab248c1b09dfffe818f5b4d26612..13218c16514d81765c7e5dfd47c099996adfe063 100644 --- a/entity/Organisation_entity/entityfields/status/valueProcess.js +++ b/entity/Organisation_entity/entityfields/status/valueProcess.js @@ -1,7 +1,7 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); -import("KeywordRegistry_basic"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.vars"); +import("system.result"); +import("system.neon"); +import("KeywordRegistry_basic"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.contactStatus$active()); \ No newline at end of file diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 79e3168c9d96eadd9b9224a7c71b0ee08e82a792..258a1f494bba1e93ab8143d97e17d3cb733d7e96 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -960,18 +960,22 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>DATEOFBIRTH.value</name> <recordfield>PERSON.DATEOFBIRTH</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>FIRSTNAME.value</name> <recordfield>PERSON.FIRSTNAME</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>GENDER.value</name> <recordfield>PERSON.GENDER</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>LANGUAGE.value</name> <recordfield>CONTACT.LANGUAGE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PERSON_ID.value</name> @@ -980,10 +984,12 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>LASTNAME.value</name> <recordfield>PERSON.LASTNAME</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MIDDLENAME.value</name> <recordfield>PERSON.MIDDLENAME</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACTID.value</name> @@ -992,22 +998,27 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>SALUTATION.value</name> <recordfield>PERSON.SALUTATION</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>TITLE.value</name> <recordfield>PERSON.TITLE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>TITLESUFFIX.value</name> <recordfield>PERSON.TITLESUFFIX</recordfield> + <isFilterable v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_ID.value</name> <recordfield>CONTACT.ORGANISATION_ID</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>REL_RELATIONSHIP.value</name> <recordfield>CONTACT.RELATIONSHIP</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name> @@ -1020,6 +1031,7 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>ADDRESS_ID.value</name> <recordfield>CONTACT.ADDRESS_ID</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_ID.displayValue</name> @@ -1044,18 +1056,22 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>STATUS.value</name> <recordfield>CONTACT.STATUS</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>POSITION.value</name> <recordfield>CONTACT.POSITION</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>DEPARTMENT.value</name> <recordfield>CONTACT.DEPARTMENT</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACTROLE.value</name> <recordfield>CONTACT.CONTACTROLE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_NAME.value</name> @@ -1088,11 +1104,32 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <dbRecordFieldMapping> <name>ADDRESS_ID.displayValue</name> <expression>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/address_id.displayvalue/expression.js</expression> + <isFilterable v="false" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>PICTURE.value</name> <recordfield>PERSON.PICTURE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STANDARD_EMAIL_COMMUNICATION.value</name> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STANDARD_PHONE_COMMUNICATION.value</name> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <consumerMapping> + <name>Organisations</name> + <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisations/filterConditionProcess.js</filterConditionProcess> + <isFilterable v="true" /> + <filtertype>BASIC</filtertype> + </consumerMapping> + <consumerMapping> + <name>Activities</name> + <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js</filterConditionProcess> + <isFilterable v="true" /> + <filtertype>EXTENDED</filtertype> + </consumerMapping> </recordFieldMappings> </dbRecordContainer> <indexRecordContainer> diff --git a/entity/Person_entity/entityfields/dateofbirth/onValidation.js b/entity/Person_entity/entityfields/dateofbirth/onValidation.js index 9da0a7497bd26a10627d66a89a67f3b863cde608..c21866aca67aec0fddeeb6bef3ff7b017023cc0f 100644 --- a/entity/Person_entity/entityfields/dateofbirth/onValidation.js +++ b/entity/Person_entity/entityfields/dateofbirth/onValidation.js @@ -4,6 +4,6 @@ import("system.vars"); import("system.result"); import("Entity_lib"); -var dob = ProcessHandlingUtils.getOnValidationValue(); +var dob = vars.get("local.value"); if (Number(datetime.clearTime(dob)) > Number(vars.get("$sys.today"))) result.string(translate.text("date of birth must not be in the future")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/language/valueProcess.js b/entity/Person_entity/entityfields/language/valueProcess.js index 44dcbc3f04bb4fc3788fb890bf97db622e520008..8be4c28401d63e681cbff0a6929e7d472ebf9042 100644 --- a/entity/Person_entity/entityfields/language/valueProcess.js +++ b/entity/Person_entity/entityfields/language/valueProcess.js @@ -3,5 +3,5 @@ import("system.vars"); import("system.db"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) result.string("deu"); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/newemail/onActionProcess.js b/entity/Person_entity/entityfields/newemail/onActionProcess.js index cd08784b868ada5103f3dbcb0bef4d984c823074..cd7548548702791f8f81ec290a532fd19feaeafa 100644 --- a/entity/Person_entity/entityfields/newemail/onActionProcess.js +++ b/entity/Person_entity/entityfields/newemail/onActionProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("Email_lib"); -EmailUtils.openNewMail(vars.getString("$field.CONTACTID")); \ No newline at end of file +EmailWritingUtils.openNewMail(vars.getString("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/organisation_id/onValidation.js b/entity/Person_entity/entityfields/organisation_id/onValidation.js index daba90e666e30baec493136b062e2f20f1f13cf4..d81b26a77cd1d51e4ab694eba2692239c65b9c2f 100644 --- a/entity/Person_entity/entityfields/organisation_id/onValidation.js +++ b/entity/Person_entity/entityfields/organisation_id/onValidation.js @@ -7,14 +7,8 @@ import("Contact_lib"); if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW) { var personId = vars.getString("$field.PERSONID"); - var organisationId = ProcessHandlingUtils.getOnValidationValue("$field.ORGANISATION_ID"); + var organisationId = vars.get("$local.value"); var contactId = vars.get("$field.CONTACTID");//in EDIT we have to exclude our own CONTACTID since we do not want a message for our own contactentry - - //workaround for organisationId: $local.value will return the name of the organisation which is not what we want - //but the field already contains the changed value; so let's load the field instead of the $local.value-variable - //this is a bug within the ADITO-kernel - //TODO: change the workaround behaviour when $local.value is retrieved correct - organisationId = vars.getString("$field.ORGANISATION_ID"); var validationMsg = ContactUtils.validateIfAlreadyExists(personId, organisationId, contactId); if (validationMsg) diff --git a/entity/Person_entity/entityfields/organisation_id/valueProcess.js b/entity/Person_entity/entityfields/organisation_id/valueProcess.js index 6f44e6e6c6e93c530f1ba2446ad7cb026e04c6ce..7d921c6a57d7d9aa6d020ba2a6fe3eb3d1256be8 100644 --- a/entity/Person_entity/entityfields/organisation_id/valueProcess.js +++ b/entity/Person_entity/entityfields/organisation_id/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.vars"); import("system.neon"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { if (vars.exists("$param.OrgId_param") && vars.get("$param.OrgId_param") != null) { diff --git a/entity/Person_entity/entityfields/picture/displayValueProcess.js b/entity/Person_entity/entityfields/picture/displayValueProcess.js index d6cead6d01f7240a25145197dbead464a0f0aaf6..2ad6742677b7f0a685be75783483833b35bebfc0 100644 --- a/entity/Person_entity/entityfields/picture/displayValueProcess.js +++ b/entity/Person_entity/entityfields/picture/displayValueProcess.js @@ -3,8 +3,8 @@ import("system.result"); import("system.neon"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) { - if (vars.get("$this.value")) - result.string(vars.get("$this.value")); + if (vars.get("$field.PICTURE")) + result.string(vars.get("$field.PICTURE")); else result.string(vars.get("$param.AvatarText_param")); } diff --git a/entity/Person_entity/entityfields/status/valueProcess.js b/entity/Person_entity/entityfields/status/valueProcess.js index ab590b059440372f55b8c6d73d0c47eae06ca396..13218c16514d81765c7e5dfd47c099996adfe063 100644 --- a/entity/Person_entity/entityfields/status/valueProcess.js +++ b/entity/Person_entity/entityfields/status/valueProcess.js @@ -3,5 +3,5 @@ import("system.result"); import("system.neon"); import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.contactStatus$active()); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/onDBInsert.js b/entity/Person_entity/recordcontainers/db/onDBInsert.js index 157ddf8314dc0dcbcad97150a81ff52e25c50f7b..e9c6aaf6f72398df97745ae9e1ac87fd4e976392 100644 --- a/entity/Person_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Person_entity/recordcontainers/db/onDBInsert.js @@ -1,4 +1,4 @@ import("system.vars"); import("DataPrivacy_lib"); -DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$field.CONTACTID")); \ No newline at end of file +DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$local.uid")); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/onDBUpdate.js b/entity/Person_entity/recordcontainers/db/onDBUpdate.js index 530c2f5d46b93d85f6ee09373a336219671aad49..243f0443fb13fbf4db44de0800dbf415e2e973da 100644 --- a/entity/Person_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Person_entity/recordcontainers/db/onDBUpdate.js @@ -1,3 +1,4 @@ +import("system.logging"); import("DataPrivacy_lib"); import("system.tools"); import("system.vars"); @@ -6,8 +7,10 @@ import("Communication_lib"); import("Entity_lib"); import("StandardObject_lib"); +var rowdata = vars.get("$local.rowdata"); +logging.log(JSON.stringify(rowdata, null, "\t")) // TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023 -var uid = vars.get("$sys.uid"); +var uid = rowdata["CONTACT.CONTACTID"]; FieldChanges.assimilateChangeAndDispose("$field.STANDARD_EMAIL_COMMUNICATION", function(state, value){ CommUtil.setStandardMail(uid, value); }); @@ -16,8 +19,8 @@ FieldChanges.assimilateChangeAndDispose("$field.STANDARD_PHONE_COMMUNICATION", f CommUtil.setStandardPhone(uid, value); }); -new StandardObject("Address", vars.get("$field.ADDRESS_ID"), "Person", vars.get("$field.CONTACTID")) - .onPersonUpdate(vars.get("$field.ORGANISATION_ID")); +new StandardObject("Address", rowdata["CONTACT.ADDRESS_ID"], "Person", uid) + .onPersonUpdate(rowdata["CONTACT.ORGANISATION_ID"]); var updates = []; @@ -26,12 +29,15 @@ vars.get("$local.changed").forEach(function(fieldName) { switch (fieldName) { case "PERSON.FIRSTNAME": case "PERSON.LASTNAME": - var user = tools.getUserByAttribute(tools.CONTACTID, [vars.get("$field.CONTACTID")], tools.PROFILE_FULL); - user[tools.PARAMS][tools.FIRSTNAME] = vars.get("$field.FIRSTNAME"); - user[tools.PARAMS][tools.LASTNAME] = vars.get("$field.LASTNAME"); - tools.updateUser(user); + var user = tools.getUserByAttribute(tools.CONTACTID, [uid], tools.PROFILE_FULL); + if (user) + { + user[tools.PARAMS][tools.FIRSTNAME] = rowdata[fieldName]; + user[tools.PARAMS][tools.LASTNAME] = rowdata[fieldName]; + tools.updateUser(user); + } break; } }) -DataPrivacyUtils.notifyNeedDataPrivacyUpdate(vars.get("$field.CONTACTID")); \ No newline at end of file +DataPrivacyUtils.notifyNeedDataPrivacyUpdate(uid); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b292f850f8af18154fac6b30ea88235192ed3eae --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +var from = "CONTACT join ACTIVITYLINK on ACTIVITYLINK.OBJECT_ROWID = CONTACT.CONTACTID and ACTIVITYLINK.OBJECT_TYPE = 'Person' join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID"; + + +result.string("PERSONID in (select CONTACT.PERSON_ID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisations/filterConditionProcess.js b/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisations/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..839c81be84965ac009016c67636d4e43704f9dfb --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/recordfieldmappings/organisations/filterConditionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +var from = "CONTACT join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID)"; + + +result.string("PERSONID in (select CONTACT.PERSON_ID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file diff --git a/entity/Prod2prod_entity/entityfields/takeprice/valueProcess.js b/entity/Prod2prod_entity/entityfields/takeprice/valueProcess.js index a26e8321a9bc322bca5ef91f34b4d7628d796ee2..dc9a97223e617545f18ae934740a4f2c7012764a 100644 --- a/entity/Prod2prod_entity/entityfields/takeprice/valueProcess.js +++ b/entity/Prod2prod_entity/entityfields/takeprice/valueProcess.js @@ -2,5 +2,5 @@ import("system.vars"); import("system.result"); import("system.neon"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) result.string("0"); \ No newline at end of file diff --git a/entity/Product_entity/entityfields/picture/displayValueProcess.js b/entity/Product_entity/entityfields/picture/displayValueProcess.js index 61071fa5de14d9b69e322e75eed3c546b8ab9e8b..95ecf3b8e6ea13af26782fa35711a7d1f6bdfb2d 100644 --- a/entity/Product_entity/entityfields/picture/displayValueProcess.js +++ b/entity/Product_entity/entityfields/picture/displayValueProcess.js @@ -3,8 +3,8 @@ import("system.result"); import("system.neon"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW) { - if (vars.get("$this.value")) - result.string(vars.get("$this.value")); + if (vars.get("$field.PICTURE")) + result.string(vars.get("$field.PICTURE")); else result.string(vars.get("$param.ProductText_param")); } diff --git a/entity/Product_entity/entityfields/productcode/onValidation.js b/entity/Product_entity/entityfields/productcode/onValidation.js index 1dc5b4f996393023dd1f9e0f4070aad491cf515b..81b90e9b479276bb7057bfd12d6890d50fdde20b 100644 --- a/entity/Product_entity/entityfields/productcode/onValidation.js +++ b/entity/Product_entity/entityfields/productcode/onValidation.js @@ -7,7 +7,7 @@ import("Entity_lib"); var codeCount, productCode; -productCode = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCTCODE")); +productCode = vars.get("local.value"); codeCount = db.cell("select count(PRODUCTCODE) from PRODUCT where PRODUCTCODE = '" + productCode + "'" + " and PRODUCTID <> '" + vars.get("$field.PRODUCTID") + "'"); if(codeCount > 0) diff --git a/entity/Product_entity/entityfields/unit/valueProcess.js b/entity/Product_entity/entityfields/unit/valueProcess.js index 680bcb0016ceba4de1b98d2b92924a820ba2bc4d..4502026f046d1a80ea2ce3c4a2f3c6b625abc457 100644 --- a/entity/Product_entity/entityfields/unit/valueProcess.js +++ b/entity/Product_entity/entityfields/unit/valueProcess.js @@ -4,5 +4,5 @@ import("system.db"); import("system.result"); import("KeywordRegistry_basic"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) result.string($KeywordRegistry.quantityUnit$pieces()); \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/product_id/fieldIdProcess.js b/entity/Productprice_entity/entityfields/product_id/fieldIdProcess.js index c354a6b460cbecf0233c20761c02c66415c20e72..6cd3c4544e56fa57ad04b119be620aa650f4a849 100644 --- a/entity/Productprice_entity/entityfields/product_id/fieldIdProcess.js +++ b/entity/Productprice_entity/entityfields/product_id/fieldIdProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string (vars.get("$this.value")); \ No newline at end of file +result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/valid_from/valueProcess.js b/entity/Productprice_entity/entityfields/valid_from/valueProcess.js index fde00cab2ad74643d42064d1ae353c92972deeca..072560acb2f89d72012c5d3539c293cbf02b86a8 100644 --- a/entity/Productprice_entity/entityfields/valid_from/valueProcess.js +++ b/entity/Productprice_entity/entityfields/valid_from/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.neon"); import("Date_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(DateUtils.getTodayUTC()); } \ No newline at end of file diff --git a/entity/Productprice_entity/entityfields/vat/onValidation.js b/entity/Productprice_entity/entityfields/vat/onValidation.js index 463ab50e2073e791ddbacc028d50b9c1abc06589..e95e841a1fd4f5c5ab19e8358cca8efca492f7fe 100644 --- a/entity/Productprice_entity/entityfields/vat/onValidation.js +++ b/entity/Productprice_entity/entityfields/vat/onValidation.js @@ -3,7 +3,7 @@ import("system.vars"); import("Util_lib"); import("Entity_lib"); -var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VAT")); +var value = vars.get("local.value"); var validationResult = NumberUtils.validateIsBetweenFloat("VAT", value, 0, 100); diff --git a/entity/Productprice_entity/entityfields/vat/valueProcess.js b/entity/Productprice_entity/entityfields/vat/valueProcess.js index d3ae757ad3cd88baacbe57711bcef341c43ea6f4..6a149abd471bbbe7fe5a7b63a8a15b98e43ff89d 100644 --- a/entity/Productprice_entity/entityfields/vat/valueProcess.js +++ b/entity/Productprice_entity/entityfields/vat/valueProcess.js @@ -1,6 +1,6 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string("0"); \ No newline at end of file diff --git a/entity/SalesprojectForecast_entity/entityfields/date_start/valueProcess.js b/entity/SalesprojectForecast_entity/entityfields/date_start/valueProcess.js index e2eb1642a6585c84aed1018bc17273b0b2b2f048..fc81fc3498b7b24b3ca94c69d034bdfd708ef5d2 100644 --- a/entity/SalesprojectForecast_entity/entityfields/date_start/valueProcess.js +++ b/entity/SalesprojectForecast_entity/entityfields/date_start/valueProcess.js @@ -1,11 +1,11 @@ -import("system.result"); -import("system.vars"); -import("system.neon"); -import("Date_lib"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) -{ - result.string(DateUtils.getTodayUTC()); -} -else +import("system.result"); +import("system.vars"); +import("system.neon"); +import("Date_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ + result.string(DateUtils.getTodayUTC()); +} +else result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js b/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js index 651bbe1ba274ee0bea9f70ef309afe11a883b175..4f2202c6ae0a7cf767176ab29c830936649489dc 100644 --- a/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js +++ b/entity/SalesprojectSource_entity/entityfields/entrydate/valueProcess.js @@ -3,5 +3,5 @@ import("system.vars"); import("system.result"); import("system.neon"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.getString("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.getString("$this.value") == null) result.string(datetime.date()); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/enddate/valueProcess.js b/entity/Salesproject_entity/entityfields/enddate/valueProcess.js index 4cfebdb8acb8403994a4c535f0319cca81bd7017..dd2908f617fb7c3700b361fd97933bd758d985cd 100644 --- a/entity/Salesproject_entity/entityfields/enddate/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/enddate/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("Date_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(DateUtils.getDateIncrementedByYears(DateUtils.getTodayUTC(), 1)); } \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/phase/valueProcess.js b/entity/Salesproject_entity/entityfields/phase/valueProcess.js index c8e9543ca52fa6a3dd2d2760ca1d551447bfc032..7ff3aa7c6b2ad21f43934b9e4ff5131980b35005 100644 --- a/entity/Salesproject_entity/entityfields/phase/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/phase/valueProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.vars"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) - result.string($KeywordRegistry.salesprojectPhase$nqc()); //NQC \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string($KeywordRegistry.salesprojectPhase$nqc()); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js index 92d5d098b6ccc7ca75bbfd0b38a64c063c8d33d5..2c9020b283b0fdbbbd8053aa313d14b19c347bf8 100644 --- a/entity/Salesproject_entity/entityfields/projectcode/onValidation.js +++ b/entity/Salesproject_entity/entityfields/projectcode/onValidation.js @@ -6,7 +6,7 @@ import("Util_lib"); import("Entity_lib"); if( vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW - && !Salesproject.validateProjectNumber(ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PROJECTCODE"))) ) + && !Salesproject.validateProjectNumber(vars.get("local.value")) ) { vars.set( "$field.PROJECTCODE", Salesproject.getNextProjectNumber().toString("1 = 1") ); } \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/startdate/valueProcess.js b/entity/Salesproject_entity/entityfields/startdate/valueProcess.js index e4ef3a804fc5b107cf7312e8133b2ee149882fdd..047e11fdb49fe7a57518e928bd5e6436d9f10065 100644 --- a/entity/Salesproject_entity/entityfields/startdate/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/startdate/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("Date_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(DateUtils.getTodayUTC()); } \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/state/valueProcess.js b/entity/Salesproject_entity/entityfields/state/valueProcess.js index a4457905d6e53c4ca6b3ac93001932fbdd6ae3c0..7da8d5f0142bc3fa41e1ca0b4d99c19194261594 100644 --- a/entity/Salesproject_entity/entityfields/state/valueProcess.js +++ b/entity/Salesproject_entity/entityfields/state/valueProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.vars"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string($KeywordRegistry.salesprojectState$open()); //Open \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js index 679d5eb17d8ddfa54d8c8b068b22321548416e09..376c72c136a831f2fb6215c6474c1918fbc798de 100644 --- a/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js +++ b/entity/Salesproject_entity/entityfields/volume/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.translate"); import("system.result"); -result.string(NumberUtils.formatWithCurrency(vars.get("$this.value"), translate.text("#0"), translate.text("${EURO_SIGN}"))); \ No newline at end of file +result.string(NumberUtils.formatWithCurrency(vars.get("$field.VOLUME"), translate.text("#0"), translate.text("${EURO_SIGN}"))); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/volume/onValidation.js b/entity/Salesproject_entity/entityfields/volume/onValidation.js index bf0a8f97253cff58d9188c390b044ecc2f1c26d5..410b72014ab2ce31519900fc218a7e064e0a2b05 100644 --- a/entity/Salesproject_entity/entityfields/volume/onValidation.js +++ b/entity/Salesproject_entity/entityfields/volume/onValidation.js @@ -7,7 +7,7 @@ import("Entity_lib"); // TODO: displayValue + contentType number crashes so we use TEXT and validate ourselve // Workaround for 1035861 -var volume = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.VOLUME")); +var volume = vars.get("local.value"); var message = ""; if (!/^\d+\.?\d*$/.test(volume)) message = translate.text("Only numbers are allowed."); diff --git a/entity/Salutation_entity/entityfields/sex/valueProcess.js b/entity/Salutation_entity/entityfields/sex/valueProcess.js index de822d0de5f1aa434a54ff3b48d13a94613b0d55..ce31dcbede0d54a6db9b46ee1b4e0dbcb3b30752 100644 --- a/entity/Salutation_entity/entityfields/sex/valueProcess.js +++ b/entity/Salutation_entity/entityfields/sex/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("KeywordRegistry_basic"); import("system.result"); -/*if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && !vars.get("$this.value")) +/*if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && vars.get("$this.value") == null) { result.string($KeywordRegistry.personGender$other()); }*/ \ No newline at end of file diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod index b5e3e6dd8591c73f6d4e30c6bc5ced712ccebb1c..75d3b975145ff68967e8f49d8cfc19e74cf1a9f3 100644 --- a/entity/SupportTicket_entity/SupportTicket_entity.aod +++ b/entity/SupportTicket_entity/SupportTicket_entity.aod @@ -158,7 +158,7 @@ <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>#PROVIDER</fieldName> + <fieldName>MainDocuments</fieldName> </dependency> <children> <entityParameter> diff --git a/entity/SupportTicket_entity/contentTitleProcess.js b/entity/SupportTicket_entity/contentTitleProcess.js index 42200983cd942d93065d3728601f40eb2cc2d4ad..d46871e0448b31bbfb5511705ca9f4ebcfffc3b6 100644 --- a/entity/SupportTicket_entity/contentTitleProcess.js +++ b/entity/SupportTicket_entity/contentTitleProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.TYPE.displayValue")) \ No newline at end of file +result.string(vars.get("$field.TICKETTYPE.displayValue")) \ No newline at end of file diff --git a/entity/SupportTicket_entity/entityfields/task_editor_contact_id/displayValueProcess.js b/entity/SupportTicket_entity/entityfields/task_editor_contact_id/displayValueProcess.js index 0dde82e7728286629b1c210326725aac2ebb92c5..40f8e064ba6a9d3248e9100abc4f52693effb034 100644 --- a/entity/SupportTicket_entity/entityfields/task_editor_contact_id/displayValueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_editor_contact_id/displayValueProcess.js @@ -2,7 +2,6 @@ import("system.result"); import("system.vars"); import("Contact_lib"); -var id = vars.get("$this.value"); //show the simpel title since this will be later an employee-entry and therefore no organisation is needed -var title = ContactUtils.getTitleByContactId(id); +var title = ContactUtils.getTitleByContactId(vars.get("$field.TASK_EDITOR_CONTACT_ID")); result.string(title); \ No newline at end of file diff --git a/entity/SupportTicket_entity/entityfields/task_maturity_date/valueProcess.js b/entity/SupportTicket_entity/entityfields/task_maturity_date/valueProcess.js index f86620cd5deb97d5d66c61ef83d177d2da85f3ea..aefaa534ffadaee5803fd9278a26a25e2c8adff4 100644 --- a/entity/SupportTicket_entity/entityfields/task_maturity_date/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_maturity_date/valueProcess.js @@ -4,7 +4,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { var startDate = vars.get("$field.TASK_START_DATE"); var presetVal = eMath.addInt(startDate, datetime.ONE_WEEK); diff --git a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js index 0dde82e7728286629b1c210326725aac2ebb92c5..35ee9d5af270f7b70e4827ca1717b9d96882cea6 100644 --- a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/displayValueProcess.js @@ -2,7 +2,6 @@ import("system.result"); import("system.vars"); import("Contact_lib"); -var id = vars.get("$this.value"); -//show the simpel title since this will be later an employee-entry and therefore no organisation is needed -var title = ContactUtils.getTitleByContactId(id); +//show the simpel title since this is an employee-entry and therefore no organisation is needed +var title = ContactUtils.getTitleByContactId(vars.get("$field.TASK_REQUESTOR_CONTACT_ID")); result.string(title); \ No newline at end of file diff --git a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/valueProcess.js b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/valueProcess.js index 1e62e7551ccb20b0b0d7aca34f64b6e448b5dda7..4711a17716cf559c48c73cd7ea780b2ffe5e2e03 100644 --- a/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_requestor_contact_id/valueProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.vars"); import("Employee_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/SupportTicket_entity/entityfields/task_start_date/valueProcess.js b/entity/SupportTicket_entity/entityfields/task_start_date/valueProcess.js index 5b098ba003d06ee9125c54f3f53559b2155ea8e3..6ac754253490d29b5f2653fdbdc335e381b475aa 100644 --- a/entity/SupportTicket_entity/entityfields/task_start_date/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_start_date/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { var presetVal = datetime.date(); //TODO: depending on what happens in #1032274 we need to manually set the resolution to MINUTES or not (which means we've to set everything smaller than MINUTES (Seconds, etc.) to zero) diff --git a/entity/SupportTicket_entity/entityfields/task_status/valueProcess.js b/entity/SupportTicket_entity/entityfields/task_status/valueProcess.js index caf782637394f5505b64eff69edd7685a80fabdc..b21b65e67884b19c3247e934aa7c8a00b3ca6b0f 100644 --- a/entity/SupportTicket_entity/entityfields/task_status/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_status/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(TicketUtils.begin(vars.get("$field.TICKETTYPE")).getDefaultStatus()); } \ No newline at end of file diff --git a/entity/SupportTicket_entity/entityfields/task_type/valueProcess.js b/entity/SupportTicket_entity/entityfields/task_type/valueProcess.js index 68c9898c516c39fd154e5c53f6e22ee2dd4e16e6..157831e6cbf022ac7d952e8367f39df6f89dd8c8 100644 --- a/entity/SupportTicket_entity/entityfields/task_type/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/task_type/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.neon"); import("KeywordRegistry_basic"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { // Sets the type to "Task" as default value. result.string($KeywordRegistry.taskType$ticket()); diff --git a/entity/SupportTicket_entity/entityfields/tickettype/valueProcess.js b/entity/SupportTicket_entity/entityfields/tickettype/valueProcess.js index c3e6ca34b7a1586f84141392adfffe8fb2b6dc38..d2dd15c5483608ffaceb4af7a6c7585431f24862 100644 --- a/entity/SupportTicket_entity/entityfields/tickettype/valueProcess.js +++ b/entity/SupportTicket_entity/entityfields/tickettype/valueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(vars.get("$param.TicketType_param")); } \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_editor_contact_id.displayvalue/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_editor_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..8e7ea35c7f489e257f771a9f67d1672d35817c4b --- /dev/null +++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_editor_contact_id.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Person_lib"); + +var subSql = PersUtils.getResolvingDisplaySubSql("TASK.EDITOR_CONTACT_ID"); +result.string(subSql); \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_requestor_contact_id.displayvalue/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_requestor_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..10b4b9967c878d5caeccc5ca25a4d897570bc185 --- /dev/null +++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/task_requestor_contact_id.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Person_lib"); + +var subSql = PersUtils.getResolvingDisplaySubSql("TASK.REQUESTOR_CONTACT_ID"); +result.string(subSql); \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 505dab0bc4e8aaed36eb6aac298e5caa3d1c6f49..94d957bc5f6450e133c5e62f1a75554aca80ab86 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -53,6 +53,7 @@ <title>{$TASK_EDITOR}</title> <consumer>ContactEditors</consumer> <linkedContext>Person</linkedContext> + <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> diff --git a/entity/Task_entity/entityfields/documents/children/assignmentname_param/valueProcess.js b/entity/Task_entity/entityfields/documents/children/assignmentname_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js index 0dde82e7728286629b1c210326725aac2ebb92c5..ad1d3c7d63b681688b3deaafd83db7a89b24dc03 100644 --- a/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js +++ b/entity/Task_entity/entityfields/editor_contact_id/displayValueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.vars"); import("Contact_lib"); -var id = vars.get("$this.value"); +var id = vars.get("$field.EDITOR_CONTACT_ID"); //show the simpel title since this will be later an employee-entry and therefore no organisation is needed var title = ContactUtils.getTitleByContactId(id); result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/maturity_date/valueProcess.js b/entity/Task_entity/entityfields/maturity_date/valueProcess.js index d205c6478586ec9f272f1abe52d5fdd3414d7634..a318ed2990a73b3a88aff036446a1ab01f0c1fdd 100644 --- a/entity/Task_entity/entityfields/maturity_date/valueProcess.js +++ b/entity/Task_entity/entityfields/maturity_date/valueProcess.js @@ -1,12 +1,12 @@ -import("system.eMath"); -import("system.datetime"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) -{ - var startDate = vars.get("$field.START_DATE"); - var presetVal = eMath.addInt(startDate, datetime.ONE_WEEK); - result.string(presetVal); +import("system.eMath"); +import("system.datetime"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ + var startDate = vars.get("$field.START_DATE"); + var presetVal = eMath.addInt(startDate, datetime.ONE_WEEK); + result.string(presetVal); } \ No newline at end of file diff --git a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js index 0dde82e7728286629b1c210326725aac2ebb92c5..a54eaa531bb911d666ce220e8ecf41da9f740c9e 100644 --- a/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js +++ b/entity/Task_entity/entityfields/requestor_contact_id/displayValueProcess.js @@ -2,7 +2,7 @@ import("system.result"); import("system.vars"); import("Contact_lib"); -var id = vars.get("$this.value"); +var id = vars.get("$field.REQUESTOR_CONTACT_ID"); //show the simpel title since this will be later an employee-entry and therefore no organisation is needed var title = ContactUtils.getTitleByContactId(id); result.string(title); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/start_date/valueProcess.js b/entity/Task_entity/entityfields/start_date/valueProcess.js index 331eb9c3b542df4d726b2e1c2bb1c5718f93fa1b..6ac754253490d29b5f2653fdbdc335e381b475aa 100644 --- a/entity/Task_entity/entityfields/start_date/valueProcess.js +++ b/entity/Task_entity/entityfields/start_date/valueProcess.js @@ -1,12 +1,12 @@ -import("system.datetime"); -import("system.result"); -import("system.neon"); -import("system.vars"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) -{ - var presetVal = datetime.date(); - //TODO: depending on what happens in #1032274 we need to manually set the resolution to MINUTES or not (which means we've to set everything smaller than MINUTES (Seconds, etc.) to zero) - presetVal = Math.floor(presetVal / datetime.ONE_MINUTE) * datetime.ONE_MINUTE; - result.string(presetVal); +import("system.datetime"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ + var presetVal = datetime.date(); + //TODO: depending on what happens in #1032274 we need to manually set the resolution to MINUTES or not (which means we've to set everything smaller than MINUTES (Seconds, etc.) to zero) + presetVal = Math.floor(presetVal / datetime.ONE_MINUTE) * datetime.ONE_MINUTE; + result.string(presetVal); } \ No newline at end of file diff --git a/entity/Task_entity/entityfields/status/valueProcess.js b/entity/Task_entity/entityfields/status/valueProcess.js index db358521bc070d2a6bf07582bdf12573673a1ec4..3d13b59e80dd18b9ad676efea25ce97b1f973bb5 100644 --- a/entity/Task_entity/entityfields/status/valueProcess.js +++ b/entity/Task_entity/entityfields/status/valueProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.neon"); import("system.vars"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string($KeywordRegistry.taskStatus$new()); } \ No newline at end of file diff --git a/entity/Task_entity/entityfields/type/valueProcess.js b/entity/Task_entity/entityfields/type/valueProcess.js index 04149ad63a18b650dc2e75a1792c870d88a55f43..b16e2dd8468175445cdd6a9f9d0437c87c73560e 100644 --- a/entity/Task_entity/entityfields/type/valueProcess.js +++ b/entity/Task_entity/entityfields/type/valueProcess.js @@ -3,7 +3,7 @@ import("system.vars"); import("system.neon"); import("KeywordRegistry_basic"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { // Sets the type to "Task" as default value. result.string($KeywordRegistry.taskType$task()); diff --git a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js index e5961584dd2e3bd5741ac96032105a8cc43ec58b..8e7ea35c7f489e257f771a9f67d1672d35817c4b 100644 --- a/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js +++ b/entity/Task_entity/recordcontainers/db/recordfieldmappings/editor_contact_id.displayvalue/expression.js @@ -1,6 +1,5 @@ import("system.result"); import("Person_lib"); -//TODO: try to find a better solution for this -> #TITLE-mechanic when available var subSql = PersUtils.getResolvingDisplaySubSql("TASK.EDITOR_CONTACT_ID"); result.string(subSql); \ No newline at end of file diff --git a/entity/Timetracking_entity/entityfields/date/valueProcess.js b/entity/Timetracking_entity/entityfields/date/valueProcess.js index 126ef5d056360ae2b27ee6712dc76ce696250aba..1bf123d91e52048f5e9077c2bd51591b156c92f3 100644 --- a/entity/Timetracking_entity/entityfields/date/valueProcess.js +++ b/entity/Timetracking_entity/entityfields/date/valueProcess.js @@ -2,7 +2,7 @@ import("system.vars"); import("system.result"); import("system.neon"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) { result.string(vars.getString("$sys.date")); } diff --git a/entity/Timetracking_entity/entityfields/minutes/onValidation.js b/entity/Timetracking_entity/entityfields/minutes/onValidation.js index 8080e185f4cc8a1f4b3a3dc07081b6b04cf036eb..2c109d356e606c0e2306e09a2fef39a4d3a4b3fe 100644 --- a/entity/Timetracking_entity/entityfields/minutes/onValidation.js +++ b/entity/Timetracking_entity/entityfields/minutes/onValidation.js @@ -7,7 +7,7 @@ import("Entity_lib"); // TODO: displayValue + contentType number crashes so we use TEXT and validate ourselve // 1035861 -var minutes = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.MINUTES")); +var minutes = vars.get("local.value"); var message = ""; if (!/^\d+$/.test(minutes)) message = translate.text("Only numbers are allowed."); diff --git a/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod b/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..6a0a2a7ab6bd8cd638e6e6a6c4841323dffbe261 --- /dev/null +++ b/entity/UnlinkedMailMappingLink_entity/UnlinkedMailMappingLink_entity.aod @@ -0,0 +1,71 @@ +<?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.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> + <name>UnlinkedMailMappingLink_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</title> + <titlePlural>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>9958543a-9e47-4f7f-8f06-8f18757f8586</name> + <entityName>UnlinkedMailMappingWrapper_entity</entityName> + <fieldName>UnlinkedMailMappingLinks</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>MailAsText_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>UID</name> + <valueProcess>%aditoprj%/entity/UnlinkedMailMappingLink_entity/entityfields/uid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>CONTACT_ID</name> + <title>Contact</title> + <consumer>AnyContacts</consumer> + </entityField> + <entityField> + <name>EMAILADDR</name> + <title>(optional) E-Mail to store in contact</title> + <dropDownProcess>%aditoprj%/entity/UnlinkedMailMappingLink_entity/entityfields/emailaddr/dropDownProcess.js</dropDownProcess> + </entityField> + <entityConsumer> + <name>AnyContacts</name> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>CONTEXT_NAME</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/UnlinkedMailMappingLink_entity/entityfields/context_name/valueProcess.js</valueProcess> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js</onInsert> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CONTACT_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>EMAILADDR.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/UnlinkedMailMappingLink_entity/entityfields/context_name/valueProcess.js b/entity/UnlinkedMailMappingLink_entity/entityfields/context_name/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0a7fbd404908c94e73b6736881dcc7bab8ebbbf6 --- /dev/null +++ b/entity/UnlinkedMailMappingLink_entity/entityfields/context_name/valueProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); + +var res = ""; +var contactId = vars.get("$field.CONTACT_ID"); +if (contactId) + res = ContactUtils.getContextByContactId(contactId); + +result.string(res); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingLink_entity/entityfields/emailaddr/dropDownProcess.js b/entity/UnlinkedMailMappingLink_entity/entityfields/emailaddr/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2feaa275931a1341d40ee0b4870ba6cf2be8fb07 --- /dev/null +++ b/entity/UnlinkedMailMappingLink_entity/entityfields/emailaddr/dropDownProcess.js @@ -0,0 +1,36 @@ +import("EmailUtil_lib"); +import("IncomingEmailExecutor_lib"); +import("system.mail"); +import("system.util"); +import("system.db"); +import("system.vars"); +import("system.result"); + +var mailObject = null; +var res = []; + +var mailB64 = vars.get("$param.MailAsText_param"); +if (mailB64) +{ + mailObject = mail.parseRFC(mailB64); +} + +if (mailObject) +{ + var sender = mailObject[mail.MAIL_SENDER]; + var recipientsTo = mailObject[mail.RECIPIENT_TO].split(";"); + var recipientsCc = mailObject[mail.RECIPIENT_CC].split(";"); + var recipientsBcc = mailObject[mail.RECIPIENT_BCC].split(";"); + + var mapperFn = function (addr) { + if (addr) + res.push([EmailUtils.extractAddress(addr), addr]); + }; + + res.push([EmailUtils.extractAddress(sender), sender]); + recipientsTo.forEach(mapperFn); + recipientsCc.forEach(mapperFn); + recipientsBcc.forEach(mapperFn); +} + +result.object(res); \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js b/entity/UnlinkedMailMappingLink_entity/entityfields/uid/valueProcess.js similarity index 58% rename from entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js rename to entity/UnlinkedMailMappingLink_entity/entityfields/uid/valueProcess.js index 622e00f05f77bd63405f4487831518087cc38d27..9fcbf8892c84afa4d8fc30dbd7b6fd0f2ce026cd 100644 --- a/entity/CampaignCost_entitiy/entityfields/campaigncostid/valueProcess.js +++ b/entity/UnlinkedMailMappingLink_entity/entityfields/uid/valueProcess.js @@ -1,7 +1,7 @@ -import("system.neon"); -import("system.util"); -import("system.vars"); -import("system.result"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.util"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/contentProcess.js b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cfd1bf845e20edbe7cc993e39fec6fa9837b72c0 --- /dev/null +++ b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,11 @@ +import("IncomingEmailExecutor_lib"); +import("system.mail"); +import("system.util"); +import("system.db"); +import("system.vars"); +import("system.result"); + +var mailObject = null; +var res = []; + +result.object(res); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..d162d2aeccc9d9c33903a3940185471e91d01b19 --- /dev/null +++ b/entity/UnlinkedMailMappingLink_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,2 @@ +/*nothing happens here, everything is done within the UnlinkedMailMappingWrapper + --do not remove this comment otherwhile the kernel will detect that this process is empty and throws an error--*/ \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..2a5c16c01b0d4a3d75a47c87fc84faae6fb16105 --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod @@ -0,0 +1,76 @@ +<?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.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> + <name>UnlinkedMailMappingWrapper_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Link unlinked e-mail</title> + <recordContainer>dummyJdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>ForUnlinkedMail</name> + <children> + <entityParameter> + <name>UnlinkedMailId_param</name> + <expose v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityParameter> + <name>UnlinkedMailId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>MailAsText_param</name> + <valueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js</valueProcess> + </entityParameter> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>RESPONSIBLE_ID</name> + <title>Responsible</title> + <consumer>Employees</consumer> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>Employees</name> + <dependency> + <name>dependency</name> + <entityName>Employee_entity</entityName> + <fieldName>Employees</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>UnlinkedMailMappingLinks</name> + <dependency> + <name>dependency</name> + <entityName>UnlinkedMailMappingLink_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + <children> + <entityParameter> + <name>MailAsText_param</name> + <valueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>dummyJdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/contentProcess.js</contentProcess> + <rowCountProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/rowCountProcess.js</rowCountProcess> + <onUpdate>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js</onUpdate> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..036eb71d8f5787718937584df763395322889b3c --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/entityfields/mailastext_param/valueProcess.js @@ -0,0 +1,15 @@ +import("system.result"); +import("system.db"); +import("system.vars"); +import("Sql_lib"); + +var res = ""; +var unlinkedMailId = vars.get("$param.UnlinkedMailId_param"); +if (unlinkedMailId) +{ + var mailDataSql = SqlCondition.begin() + .andPrepare("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", unlinkedMailId) + .buildSql("select AB_UNLINKEDMAIL.MAIL from AB_UNLINKEDMAIL"); + res = db.cell(mailDataSql); +} +result.string(res); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/displayValueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..20d91b76f0fa90bd11c7b40976112c0f62aebce2 --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/displayValueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); + +var id = vars.get("$field.RESPONSIBLE_ID"); +//show the simpel title since this will be later an employee-entry and therefore no organisation is needed +var title = ContactUtils.getTitleByContactId(id); +result.string(title); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/valueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..607eea3984823d552830b30448a952a7fc192958 --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/entityfields/responsible_id/valueProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Employee_lib"); + +if (vars.get("$this.value") == null && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) +{ + result.string(EmployeeUtils.getCurrentContactId()); +} \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c36f8417f07a2bb7a9ff602a81d856ba0a6a464a --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.MailAsText_param")); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/contentProcess.js b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9a4d854baa7ad851819c3d3d1c99bfb59d72e551 --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/contentProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.object([["1"]]); \ No newline at end of file diff --git a/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..bc84a0f141f0a431c8e7063a312c83270bbfe391 --- /dev/null +++ b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/onUpdate.js @@ -0,0 +1,70 @@ +import("system.datetime"); +import("KeywordRegistry_basic"); +import("system.util"); +import("system.db"); +import("Contact_lib"); +import("system.neon"); +import("Employee_lib"); +import("IncomingEmailExecutor_lib"); +import("system.mail"); +import("system.logging"); +import("system.vars"); +import("system.entities"); + +var activityLinks = []; +var changedRows = vars.get("$field.UnlinkedMailMappingLinks.insertedRows"); + +var communicationsToInsert = []; +var communicationCols = ["COMMUNICATIONID", "ADDR", "CONTACT_ID", "STANDARD", "MEDIUM_ID", "USER_NEW", "DATE_NEW"]; +var communicationTypes = db.getColumnTypes("COMMUNICATION", communicationCols); + +if (changedRows.length > 0) +{ + //collect relevant uids + var contactIds = []; + var newCommNecessaryIdMap = {}; + changedRows.forEach(function (changedRow){ + var contactId = changedRow["CONTACT_ID"]; + if (changedRow["CONTACT_ID"]) + contactIds.push(contactId); + if (changedRow["EMAILADDR"]) + newCommNecessaryIdMap[contactId] = changedRow["EMAILADDR"]; + }); + //load relevant data + var loadingConfig = entities.createConfigForLoadingRows().entity("AnyContact_entity") + .uids(contactIds) + .fields(["CONTACTID", "ORGANISATION_ID", "PERSON_ID", "STANDARD_EMAIL_COMMUNICATION"]); + var contactRows = entities.getRows(loadingConfig); + //decide what to do with the data + + for (var i = 0, l = contactRows.length; i < l; i++) + { + //first create a link + var contactId = contactRows[i]["CONTACTID"]; + var contextName = ContactUtils.getContextByPersOrg(contactRows[i]["PERSON_ID"], contactRows[i]["ORGANISATION_ID"]); + activityLinks.push([contextName, contactId]); + + //then prepare insert statements for new comms + var emailAddrToAdd = newCommNecessaryIdMap[contactId]; + if (emailAddrToAdd) + { + var standardFlag = contactRows[i]["STANDARD_EMAIL_COMMUNICATION"] ? "0" : "1";//when no standard mail exists already: set it + var vals = [util.getNewUUID(), emailAddrToAdd, contactId, standardFlag, $KeywordRegistry.communicationMedium$mail(), vars.get("$sys.user"), datetime.date()]; + communicationsToInsert.push(["COMMUNICATION", communicationCols, communicationTypes, vals]); + //TODO: insert the COMM via a entities.***-method when available + } + } +} + +var mailObj = mail.parseRFC(vars.get("$param.MailAsText_param")); +var unlinkedMailId = vars.get("$param.UnlinkedMailId_param"); + +var incomingMailExec = new IncomingEmailExecutor(mailObj); +incomingMailExec.setActivityEmployeeContactId(EmployeeUtils.getCurrentContactId()); +var activityRes = incomingMailExec.createActivity(activityLinks); +incomingMailExec.deleteUnlinkedMail(unlinkedMailId); + +if (communicationsToInsert.length > 0) + db.inserts(communicationsToInsert); + +neon.refreshAll();//this is needed for the dashboard: other elements are refreshed and display for example unlinkedMails \ No newline at end of file diff --git a/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/rowCountProcess.js similarity index 93% rename from entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js rename to entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/rowCountProcess.js index 4336563e79c0a64b263cca325ed6285fbbededa7..b92babf55f612058ae7ca82d2aed85746492cfe6 100644 --- a/entity/CampaignCost_entitiy/entityfields/stepcosts/children/campaignsteps_param/valueProcess.js +++ b/entity/UnlinkedMailMappingWrapper_entity/recordcontainers/dummyjdito/rowCountProcess.js @@ -1,3 +1,2 @@ -import("system.result"); - +import("system.result"); result.string(1); \ No newline at end of file diff --git a/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod b/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod index b00b2993c273183f6f2ad6c008929ddff0c4790c..7c228edfc1435f9156c678f264de362ff1ae2d2b 100644 --- a/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod +++ b/entity/UnlinkedMail_entity/UnlinkedMail_entity.aod @@ -2,10 +2,12 @@ <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.10" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.10"> <name>UnlinkedMail_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Unlinked e-mail</title> <grantCreate v="false" /> <grantUpdate v="false" /> <iconId>VAADIN:AT</iconId> <imageProcess>%aditoprj%/entity/UnlinkedMail_entity/imageProcess.js</imageProcess> + <titlePlural>Unlinked e-mails</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -34,18 +36,11 @@ </entityField> <entityField> <name>MAIL</name> + <contentType>FILE</contentType> </entityField> <entityActionGroup> <name>ToActivity_ActionGroup</name> <children> - <entityActionField> - <name>ToActivity_action</name> - <title>Link automatically</title> - <onActionProcess>%aditoprj%/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js</onActionProcess> - <isSelectionAction v="true" /> - <iconIdProcess>%aditoprj%/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/iconIdProcess.js</iconIdProcess> - <tooltip>Try to link the e-mail automatically</tooltip> - </entityActionField> <entityActionField> <name>DownloadMail_action</name> <title>Download Mail</title> @@ -54,6 +49,14 @@ <iconId>VAADIN:DOWNLOAD_ALT</iconId> <tooltip>Download e-mail</tooltip> </entityActionField> + <entityActionField> + <name>ToActivity_action</name> + <title>Create activity</title> + <onActionProcess>%aditoprj%/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js</onActionProcess> + <isSelectionAction v="true" /> + <iconIdProcess>%aditoprj%/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/iconIdProcess.js</iconIdProcess> + <tooltip>Try to create activity automatically and ask for more information if necessary</tooltip> + </entityActionField> </children> </entityActionGroup> </entityFields> diff --git a/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js b/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js index ec00b9911e3a32e27d003cdb19f40c030846610a..38238664039762ee14eb60459947c46d3e12dd0c 100644 --- a/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js +++ b/entity/UnlinkedMail_entity/entityfields/toactivity_actiongroup/children/toactivity_action/onActionProcess.js @@ -1,9 +1,21 @@ +import("Employee_lib"); import("system.neon"); import("system.mail"); import("system.vars"); import("IncomingEmailExecutor_lib"); var mailObj = mail.parseRFC(vars.get("$field.MAIL")); -IncomingEmailExecutor.mailToActivity(mailObj, vars.get("$field.AB_UNLINKEDMAILID")); -//refresh is needed for the dashboard: other elements are refreshed and display for example a new activity in the filter view while the own record (=ulinked mail) is removed -neon.refreshAll(); \ No newline at end of file +var incomingMailExec = new IncomingEmailExecutor(mailObj); +if (incomingMailExec.isUnlinkable()) +{ + //helper context and entity for configuring the linking, further working (linking, creating activities, etc.) is done there + neon.openContext("UnlinkedMailMappingWrapper", null, ["1"], neon.OPERATINGSTATE_EDIT, {"UnlinkedMailId_param": vars.get("$sys.uid")}); +} +else +{ + incomingMailExec.setActivityEmployeeContactId(EmployeeUtils.getCurrentContactId()); + incomingMailExec.createActivity(); + incomingMailExec.deleteUnlinkedMail(vars.get("$sys.uid")); + //refresh is needed for the dashboard: other elements are refreshed and display for example a new activity in the filter view while the own record (=ulinked mail) is removed + neon.refreshAll(); +} \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 5e58b29c1c4e713fbfcda5b145baf6e72c63ea64..4d777ed8470bdf5be4af131b6f7517fbcf3aef9c 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -3654,9 +3654,6 @@ <entry> <key>Search for new Entries</key> </entry> - <entry> - <key>Additional link</key> - </entry> <entry> <key>Salesproject member</key> </entry> @@ -5061,6 +5058,36 @@ <entry> <key>Write bulk mail</key> </entry> + <entry> + <key>Unlinked e-mail</key> + </entry> + <entry> + <key>(optional) E-Mail to store in contact</key> + </entry> + <entry> + <key>Link unlinked e-mail</key> + </entry> + <entry> + <key>Link e-mail addresses to contacts</key> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</key> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</key> + </entry> + <entry> + <key>Unlinked mails</key> + </entry> + <entry> + <key>Create activity</key> + </entry> + <entry> + <key>Unlinked e-mails</key> + </entry> + <entry> + <key>Download</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 11ccd000ad0997ff5e1fbdacb9e983c3ba551de7..01e9d9ac0b235e95b90df6af601b60f875fe5eb8 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -784,10 +784,6 @@ <key>Office address</key> <value>Firmenadresse</value> </entry> - <entry> - <key>Additional link</key> - <value>Zusätzliche Verknüpfung</value> - </entry> <entry> <key>Contact</key> <value>Kontakt</value> @@ -6328,6 +6324,7 @@ </entry> <entry> <key>Download letter</key> + <value>Brief herunterladen</value> </entry> <entry> <key>Phase progression</key> @@ -6367,6 +6364,46 @@ <entry> <key>Test DuplicateSearch</key> </entry> + <entry> + <key>Unlinked e-mail</key> + <value>Unverknüpfte E-Mail</value> + </entry> + <entry> + <key>(optional) E-Mail to store in contact</key> + <value>(optional) E-Mail bei Kontakt speichern</value> + </entry> + <entry> + <key>Link unlinked e-mail</key> + <value>Verknüpfe E-Mail</value> + </entry> + <entry> + <key>Link e-mail addresses to contacts</key> + <value>Verknüpfe E-Mail-Adressen zu Kontakten</value> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</key> + <value>Weitere Verknüpfungen</value> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</key> + <value>Weitere Verknüpfung</value> + </entry> + <entry> + <key>Unlinked mails</key> + <value>Unverknüpfte E-Mails</value> + </entry> + <entry> + <key>Create activity</key> + <value>Erstelle Aktivität</value> + </entry> + <entry> + <key>Unlinked e-mails</key> + <value>Unverknüpfte E-Mails</value> + </entry> + <entry> + <key>Download</key> + <value>Herunterladen</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 6bf4dd13547b5bb362ca517dd2a635d7aec76a1b..15d6919df1bbc0efd4de6637800012ccfb007a36 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -3703,9 +3703,6 @@ <entry> <key>Search for new Entries</key> </entry> - <entry> - <key>Additional link</key> - </entry> <entry> <key>Salesproject member</key> </entry> @@ -5110,6 +5107,36 @@ <entry> <key>Write bulk mail</key> </entry> + <entry> + <key>Unlinked e-mail</key> + </entry> + <entry> + <key>(optional) E-Mail to store in contact</key> + </entry> + <entry> + <key>Link unlinked e-mail</key> + </entry> + <entry> + <key>Link e-mail addresses to contacts</key> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</key> + </entry> + <entry> + <key>${UNLINKEDMAILMAPPING_ADDITIONAL_LINK}</key> + </entry> + <entry> + <key>Unlinked mails</key> + </entry> + <entry> + <key>Create activity</key> + </entry> + <entry> + <key>Unlinked e-mails</key> + </entry> + <entry> + <key>Download</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/BulkMail/BulkMail.aod b/neonContext/BulkMail/BulkMail.aod index 8001515cc6c87991d8701f4cfe4ffd8168388acb..ae4fd6a6791f4b9330470b0107eb1069f9c818f9 100644 --- a/neonContext/BulkMail/BulkMail.aod +++ b/neonContext/BulkMail/BulkMail.aod @@ -27,7 +27,7 @@ </neonViewReference> <neonViewReference> <name>6b057fb0-94ac-4bca-88b2-c97fdfcf9d6e</name> - <view>BulkMailTest_view</view> + <view>BulkMailContent_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/UnlinkedMailMappingLink/UnlinkedMailMappingLink.aod b/neonContext/UnlinkedMailMappingLink/UnlinkedMailMappingLink.aod new file mode 100644 index 0000000000000000000000000000000000000000..6546416194e47b77440f69a3e60cd392caf267b9 --- /dev/null +++ b/neonContext/UnlinkedMailMappingLink/UnlinkedMailMappingLink.aod @@ -0,0 +1,12 @@ +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>UnlinkedMailMappingLink</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>UnlinkedMailMappingLink_entity</entity> + <references> + <neonViewReference> + <name>dd9bfc47-a38c-4d54-89a1-2e95323a1ceb</name> + <view>UnlinkedMailMappingLinkList_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/UnlinkedMailMappingWrapper/UnlinkedMailMappingWrapper.aod b/neonContext/UnlinkedMailMappingWrapper/UnlinkedMailMappingWrapper.aod new file mode 100644 index 0000000000000000000000000000000000000000..d270b74d5ea0f79aadbc5f879922644c3d03cc79 --- /dev/null +++ b/neonContext/UnlinkedMailMappingWrapper/UnlinkedMailMappingWrapper.aod @@ -0,0 +1,13 @@ +<?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.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0"> + <name>UnlinkedMailMappingWrapper</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editview>UnlinkedMailMappingWrapperMapping_view</editview> + <entity>UnlinkedMailMappingWrapper_entity</entity> + <references> + <neonViewReference> + <name>22ac623a-2cb6-46f2-ac22-561ad7e9a0da</name> + <view>UnlinkedMailMappingWrapperMapping_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/BulkMailTest_view/BulkMailTest_view.aod b/neonView/BulkMailContent_view/BulkMailContent_view.aod similarity index 87% rename from neonView/BulkMailTest_view/BulkMailTest_view.aod rename to neonView/BulkMailContent_view/BulkMailContent_view.aod index c6442e56b066bfb47f58b9154ef3e9fa9d2a2fcb..43b3a83deac1f10a78b02010622d17bd77c92eb3 100644 --- a/neonView/BulkMailTest_view/BulkMailTest_view.aod +++ b/neonView/BulkMailContent_view/BulkMailContent_view.aod @@ -1,7 +1,7 @@ <?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> - <name>BulkMailTest_view</name> - <title>Preview</title> + <name>BulkMailContent_view</name> + <title>Content</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <noneLayout> @@ -32,8 +32,8 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>13d21d66-6f52-4535-9cb9-3b26db11dfbf</name> - <entityField>preview</entityField> + <name>af0d45a2-a96f-4031-a93d-62ac177efb43</name> + <entityField>content</entityField> </entityFieldLink> </fields> </genericViewTemplate> diff --git a/neonView/BulkMailMain_view/BulkMailMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod index d95de24eecea5c322aae2a0490112c1c92f3590c..128f5bdff472e2ac37fefca22c182bb0b5ec5382 100644 --- a/neonView/BulkMailMain_view/BulkMailMain_view.aod +++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod @@ -22,7 +22,7 @@ <neonViewReference> <name>3222ace8-c6d6-4dab-ada1-1f50b983e7e7</name> <entityField>#ENTITY</entityField> - <view>BulkMailTest_view</view> + <view>BulkMailContent_view</view> </neonViewReference> </children> </neonView> diff --git a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..37dcfb4dc0563c7d97c21318490f3e5674d2d54f --- /dev/null +++ b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod @@ -0,0 +1,35 @@ +<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>UnlinkedMailMappingLinkList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <drawerLayout> + <name>layout</name> + <layoutCaption>${UNLINKEDMAILMAPPING_ADDITIONAL_LINKS}</layoutCaption> + </drawerLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <autoNewRow v="true" /> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>0f4fc4e4-2a1f-404e-84c0-6ede00e89a09</name> + <entityField>CONTACT_ID</entityField> + <width v="100" /> + <expandRatio v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>bd45c8bc-bb7b-4109-a42d-b25feda0977b</name> + <entityField>EMAILADDR</entityField> + <width v="100" /> + </neonTableColumn> + <neonTableColumn> + <name>7bae119d-a760-450b-9b51-b17d97af1ed3</name> + <entityField>CONTEXT_NAME</entityField> + </neonTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..7cce6b8d744d27f349e35820e8953a38dac348b4 --- /dev/null +++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod @@ -0,0 +1,31 @@ +<?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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1"> + <name>UnlinkedMailMappingWrapperMapping_view</name> + <title>Link e-mail addresses to contacts</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <isSmall v="true" /> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Generic</header> + </headerFooterLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>52ee726e-fcad-43fd-8b08-29cd31bfa1ba</name> + <entityField>RESPONSIBLE_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>10cbd0dc-4297-4703-ad84-b52312700f2e</name> + <entityField>UnlinkedMailMappingLinks</entityField> + <view>UnlinkedMailMappingLinkList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index dbcfb36a91297076174750b3f86105e75e375448..f182936863c5909b8ce50614de09b34363e5d2f3 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -52,7 +52,42 @@ DocumentTemplate.types = { EML : "eml", ODT : "odt", DOCX : "docx", - PLAIN : "plain" //for simple strings + PLAIN : "plain", //for simple strings + fromFileExtension : function (pFileExtension) + { + switch (pFileExtension) + { + case "html": + case "htm": + return this.HTML; + case "eml": + return this.EML; + case "odt": + return this.ODT; + case "docx": + return this.DOCX; + case "txt": + default: + return this.TXT; + } + }, + fromMimetype : function (pMimetype) + { + switch (pMimetype) + { + case "text/html": + return this.HTML; + case "message/rfc822": + return this.EML; + case "application/vnd.oasis.opendocument.text": + return this.ODT; + case "application/vnd.openxmlformats-officedocument.wordprocessingml.document": + return this.DOCX; + case "text/plain": + default: + return this.TXT; + } + } }; /** @@ -76,16 +111,7 @@ DocumentTemplate.loadTemplate = function (pAssignmentRowId, pAssignmentTable) var binaryId = templateDocument[0][db.BINARY_ID]; var filename = templateDocument[0][db.BINARY_FILENAME]; var mimetype = templateDocument[0][db.BINARY_MIMETYPE]; - var typeMap = { - "text/plain" : DocumentTemplate.types.TXT, - "text/html" : DocumentTemplate.types.HTML, - "message/rfc822" : DocumentTemplate.types.EML, - "application/vnd.oasis.opendocument.text" : DocumentTemplate.types.ODT, - "application/vnd.openxmlformats-officedocument.wordprocessingml.document" : DocumentTemplate.types.DOCX - }; - var type = typeMap[mimetype]; - if (type === undefined) - throw new Error("Invalid mime type for document template"); + var type = DocumentTemplate.types.fromMimetype(mimetype); return new DocumentTemplate(db.getBinaryContent(binaryId, alias), type, filename); } diff --git a/process/EmailUtil_lib/EmailUtil_lib.aod b/process/EmailUtil_lib/EmailUtil_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..04b24ec7e102599577d29f2cea0cc85e7c4f048d --- /dev/null +++ b/process/EmailUtil_lib/EmailUtil_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.1"> + <name>EmailUtil_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/EmailUtil_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/EmailUtil_lib/process.js b/process/EmailUtil_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..27a46014b55280ce441be0474dbbf7e84dd80283 --- /dev/null +++ b/process/EmailUtil_lib/process.js @@ -0,0 +1,24 @@ +import("system.mail"); + +/** + * functions for various emailing-functionalities + * Do not create an instance of this! + * + * @static + */ +function EmailUtils () {} + +/** + * Extracts the email address (x[at]x.x) from a complete address that may contain a readable part. + * Does some additional checkings on top of the extractAddress-method + * + * @param {String} pFullMailAddress the complete address. + * + * @return {String} addr-spec part of the mail, e.g. "info@adito.de" + */ +EmailUtils.extractAddress = function (pFullMailAddress) +{ + var mailAddress = pFullMailAddress.replace("<'", "<").replace("'>", ">");//special treatment for crazy illegal addresses which can be sent in Outlook + mailAddress = mail.extractAddress(mailAddress); + return mailAddress; +}; \ No newline at end of file diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js index eeb0b8a3124b77105f62e7808fd46f93653d716a..8de0df67a0fd66b5f9a2d3ded4084895dc138bc6 100644 --- a/process/Email_lib/process.js +++ b/process/Email_lib/process.js @@ -8,7 +8,7 @@ import("DocumentTemplate_lib"); import("system.neon"); import("system.mail"); -function EmailUtils () {} +function EmailWritingUtils () {} /** * creates a new E-Mail-Object and ask for a download of a eml where all fields are prefilled @@ -23,7 +23,7 @@ function EmailUtils () {} * * @return {Array} the eml document as array with [filename, base64] */ -EmailUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId) +EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId) { var email = new Email(pToRecipients); if (pTemplateId) @@ -39,7 +39,7 @@ EmailUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTempla * @param {String} pToContactId contactId with contacts to filter the communication-addresses * @param {String} [pToEmailAddress] email address as string that shall be used as recipient-preset */ -EmailUtils.openNewMail = function (pToContactId, pToEmailAddress) +EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress) { var params = { "ContactId_param" : pToContactId diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js index 6db3b2deba0ad67d82b693ba8cd5e421a7f547d0..24029d5a797948b8987ff7fe7ff346d1d8e15630 100644 --- a/process/Entity_lib/process.js +++ b/process/Entity_lib/process.js @@ -11,22 +11,20 @@ import("system.vars"); function ProcessHandlingUtils() {} /** -* In onValidation-Process a local variable called "$local.value" is made available from kernel. -* It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")). -* The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available, -* but the entered value now is the present one because the field has already been validated before. -* Otherwise a "variable not found" error would occur. -* -* @param {String} [fieldValue=current field value] value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") ) -* -* @return {String} Field value for onValidation-Process -*/ + * @deprecated THIS ERROR IS FIXED. YOU SHOULD USE vars.get("$local.value") DIRECTLY NOW + * + * In onValidation-Process a local variable called "$local.value" is made available from kernel. + * It contains the entered value - the field contains the value only after successfull validation (vars.get("$field.Fieldname")). + * The onValidation-Process is running again before saving the entity, at this point there's "$local.value" varialbe no longer available, + * but the entered value now is the present one because the field has already been validated before. + * Otherwise a "variable not found" error would occur. + * + * @param {String} [fieldValue=current field value] value of the field onValidation-Process is executed ( e.g. vars.get("$field.Fieldname") ) + * + * @return {String} Field value for onValidation-Process + */ ProcessHandlingUtils.getOnValidationValue = function(fieldValue) { - if (fieldValue == undefined) { - fieldValue = vars.get("$this.value"); - } - - return (vars.exists("$local.value") && vars.get("$local.value") != null) ? vars.get("$local.value") : fieldValue; + return vars.get("$local.value"); } /** diff --git a/process/IncomingEmailExecutor_lib/process.js b/process/IncomingEmailExecutor_lib/process.js index 783a4a805ee1d103fec4e804f77747da8cb87c83..e83681a138b0396b51a2ff14b1eb5026acf7bfd5 100644 --- a/process/IncomingEmailExecutor_lib/process.js +++ b/process/IncomingEmailExecutor_lib/process.js @@ -1,3 +1,5 @@ +import("EmailUtil_lib"); +import("Util_lib"); import("system.logging"); import("system.question"); import("system.datetime"); @@ -14,12 +16,208 @@ import("KeywordRegistry_basic"); //TODO: comment library +function IncomingEmailExecutor(pMail) +{ + //whenver this function is called it may not be in a context where a alias is given: the mail-importing-entity for example has no alias. + //therefore set it here manually + this._alias = null; + this.setAlias(); + this.rawMail = pMail; + this.mailSubject = this.rawMail[mail.MAIL_SUBJECT] || ""; + this.mailSender = this.rawMail[mail.MAIL_SENDER]; + this.mailSentDate = this.rawMail[mail.MAIL_SENTDATE]; + this.mailSender = this.rawMail[mail.MAIL_SENDER]; + + var mailRecipientsTo = this.rawMail[mail.RECIPIENT_TO].split(";"); + var mailRecipientsCc = this.rawMail[mail.RECIPIENT_CC].split(";"); + var mailRecipientsBcc = this.rawMail[mail.RECIPIENT_BCC].split(";"); + this.mailRecipients = mailRecipientsTo.concat(mailRecipientsCc, mailRecipientsBcc).filter(function (elem){ + return elem != "" && elem != null; + }); + + this.senderInfo = null; + this._collectSenderInformation(); + + //activity data and failbackActivityData will be merged later to get all the data we need + //we always want to prefer contacts that are active to those who are inactive (that applies to the sender and to the recipients) + this.activityData = { + links: [] + }; + this.failbackActivityData = { + employeeContactId: "", + direction: $KeywordRegistry.activityDirection$incoming() + }; +} + +IncomingEmailExecutor.prototype.setActivityEmployeeContactId = function (pId) +{ + this.activityData.employeeContactId = pId; +}; + +IncomingEmailExecutor.prototype.setAlias = function(pAlias) +{ + this._alias = pAlias || db.getCurrentAlias(); +}; + +IncomingEmailExecutor.prototype.getMailtextAsHtml = function() +{ + var htmlMailText = this.rawMail[mail.MAIL_ATTACHMENTCOUNT] + " Attachement(s)<br/><br/>\n"; + //since the activity has always and only a HTML-content-field we need to ensure that there will be always a HTML-content + if (this.rawMail[mail.MAIL_HTMLTEXT]) + htmlMailText += this.rawMail[mail.MAIL_HTMLTEXT]; + else + htmlMailText += text.text2html(this.rawMail[mail.MAIL_TEXT], true); + return htmlMailText; +}; + +IncomingEmailExecutor.prototype.insertUnlinkedMail = function () +{ + var unlinkedMailId = util.getNewUUID(); + var cols = ["AB_UNLINKEDMAILID", "SUBJECT", "SENTDATE", "SENDER", "RECIPIENTS", "MAIL", "USER_NEW", "DATE_NEW"]; + var vals = [unlinkedMailId, this.mailSubject, this.mailSentDate, this.mailSender, recipients.join(", "), mail.toRFC(this.rawMail), vars.get("$sys.user"), datetime.date()]; + db.insertData("AB_UNLINKEDMAIL", cols, null, vals, this._alias); + + return { + unlinkedMailId: unlinkedMailId + }; +}; + +IncomingEmailExecutor.prototype._collectSenderInformation = function () +{ + this.senderInfo = this.mailSender ? IncomingEmailExecutor.getContactDataByEmail(this.mailSender, this._alias) : []; +} + +IncomingEmailExecutor.prototype.isUnlinkable = function () +{ + return this.senderInfo.length == 0; +} + +IncomingEmailExecutor.getContactDataByEmail = function (pMailAddress, pAlias) +{ + var mailAddress = EmailUtils.extractAddress(pMailAddress).toUpperCase(); + var sql = SqlCondition.begin(pAlias) + .andPrepare("COMMUNICATION.ADDR", mailAddress, "upper(#) = ?") + .buildSql("select CONTACT.CONTACTID, CONTACT.STATUS, CONTACT.PERSON_ID \n\ + from COMMUNICATION \n\ + join CONTACT on (COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID)"); + var res = db.table(sql, pAlias); + return res; +}; + +IncomingEmailExecutor.prototype.createActivity = function(pAdditionalLinks) +{ + var senderContacts = { + prefered: [], + failback: [] + }; + this.senderInfo.forEach(this._getProcessingFunction(true, senderContacts), this); + this.activityData.links = this.activityData.links.concat(senderContacts.prefered.length > 0 ? senderContacts.prefered : senderContacts.failback); + + for (var i = 0, l = this.mailRecipients.length; i < l; i++) + { + var recipientsInfo = IncomingEmailExecutor.getContactDataByEmail(this.mailRecipients[i], this._alias); + + var recipientContacts = { + prefered: [], + failback: [] + }; + recipientsInfo.forEach(this._getProcessingFunction(false, recipientContacts), this); + this.activityData.links = this.activityData.links.concat(recipientContacts.prefered.length > 0 ? recipientContacts.prefered : recipientContacts.failback); + } + + //collecting all the information and combine it for the creation + var activityDataForInsert = { + subject: this.mailSubject, + content: this.getMailtextAsHtml(), + categoryKeywordId: $KeywordRegistry.activityCategory$mail(), + directionKeywordId: this.activityData.direction || this.failbackActivityData.direction, + responsibleContactId: this.activityData.employeeContactId || this.failbackActivityData.employeeContactId + }; + var activityLinks = this.activityData.links || this.failbackActivityData.links; + if (pAdditionalLinks) + activityLinks = activityLinks.concat(pAdditionalLinks); + activityLinks = ArrayUtils.distinct2d(activityLinks);//TODO: better check before adding the elements into the array if it already exists there + var activityDocs = [["mail.eml", util.encodeBase64String(mail.toRFC(this.rawMail)), true]]; + + var activityRes = ActivityUtils.insertNewActivity(activityDataForInsert, activityLinks, activityDocs, this._alias); + return activityRes; +}; + +IncomingEmailExecutor.prototype.deleteUnlinkedMail = function (pUnlinkedMailId) +{ + if (pUnlinkedMailId) + { + db.deleteData("AB_UNLINKEDMAIL", SqlCondition.begin().andPrepare("AB_UNLINKEDMAIL.AB_UNLINKEDMAILID", pUnlinkedMailId).build(), this._alias); + } +}; + +IncomingEmailExecutor.prototype.autoProcess = function(pUnlinkedMailId) +{ + if (this.isUnlinkable()) + { + if (pUnlinkedMailId) + return { + unlinkedMailId: pUnlinkedMailId + }; + else + return this.insertUnlinkedMail(); + } + + var activityRes = this.createActivity(); + this.deleteUnlinkedMail(pUnlinkedMailId); + return activityRes; +}; + +IncomingEmailExecutor.prototype._getProcessingFunction = function (pIsSender, pTargetArray) +{ + return function(contactInfoRow) { + var contactId, contactStatus, contactPersonId; + [contactId, contactStatus, contactPersonId] = contactInfoRow; + + //there *should* only exist no or one user per contactid, never two or more - so getUser (not getUsers) should be fine + var user = tools.getUserByAttribute(tools.CONTACTID, [contactId]); + var isEmployee = user != null; + var isContactActive = contactStatus == $KeywordRegistry.contactStatus$active(); + + //if a user was already found we can skip determining the correct user since only one user can be set as "RESPONSIBLE" in the activity + if (isEmployee && !this.activityData.employeeContactId) + { + var direction = pIsSender ? $KeywordRegistry.activityDirection$outgoing() : $KeywordRegistry.activityDirection$incoming(); + if (isContactActive) + { + this.activityData.employeeContactId = contactId; + this.activityData.direction = direction; + } + else + { + //if the user is inactive, we may find a better (=active) user later + this.failbackActivityData.employeeContactId = contactId; + this.failbackActivityData.direction = direction; + } + } + else + { + var link = [(contactPersonId == "" ? "Organisation" : "Person"), contactId]; + if (isContactActive) + pTargetArray["prefered"].push(link); + else + pTargetArray["failback"].push(link); + } + }; +}; + + +//TODO: comment library +/* function IncomingEmailExecutor(){ } -IncomingEmailExecutor._getContactDataByEmail = function (pMailAddress, pAlias) +IncomingEmailExecutor.getContactDataByEmail = function (pMailAddress, pAlias) { +// logging.log("pMailAddress>>" + pMailAddress); + var mailAddress = pMailAddress//.replace("<'", "<").replace(">'", ">");//special treatment for crazy illegal addresses which can be sent in Outlook + mailAddress = mail.extractAddress(mailAddress).toUpperCase(); var sql = SqlCondition.begin(pAlias) - .andPrepare("COMMUNICATION.ADDR", mail.extractAddress(pMailAddress).toUpperCase(), "upper(#) = ?") + .andPrepare("COMMUNICATION.ADDR", mailAddress, "upper(#) = ?") .buildSql("select CONTACT.CONTACTID, CONTACT.STATUS, CONTACT.PERSON_ID \n\ from COMMUNICATION \n\ join CONTACT on (COMMUNICATION.CONTACT_ID = CONTACT.CONTACTID)"); @@ -27,7 +225,7 @@ IncomingEmailExecutor._getContactDataByEmail = function (pMailAddress, pAlias) return res; }; -IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) +IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias, pOverrideConfig, pAdditionalLinks) { //whenver this function is called it may not be in a context where a alias is given: the mail-importing-entity for example has no alias. //therefore set it here manually @@ -51,17 +249,20 @@ IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) htmlMailText += text.text2html(mailObj[mail.MAIL_TEXT], true); var sentdate = mailObj[mail.MAIL_SENTDATE]; - var senderInfo = sender ? IncomingEmailExecutor._getContactDataByEmail(sender, alias) : []; + var senderInfo = sender ? IncomingEmailExecutor.getContactDataByEmail(sender, alias) : []; if (senderInfo.length == 0) { + var unlinkedMailId; if (!pUnlinkedMailId) { - var unlinkedMailId = util.getNewUUID(); + unlinkedMailId = util.getNewUUID(); var cols = ["AB_UNLINKEDMAILID", "SUBJECT", "SENTDATE", "SENDER", "RECIPIENTS", "MAIL", "USER_NEW", "DATE_NEW"]; var vals = [unlinkedMailId, subject, sentdate, sender, recipients.join(", "), mail.toRFC(mailObj), vars.get("$sys.user"), datetime.date()]; db.insertData("AB_UNLINKEDMAIL", cols, null, vals, alias); } + else + unlinkedMailId = pUnlinkedMailId; return { unlinkedMailId: unlinkedMailId @@ -73,6 +274,9 @@ IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) var activityData = { links: [] }; + if (pOverrideConfig.employeeContactId) + activityData.employeeContactId = pOverrideConfig.employeeContactId; + var failbackActivityData = { employeeContactId: "", direction: $KeywordRegistry.activityDirection$incoming() @@ -88,7 +292,7 @@ IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) var contactInfoProcessingFn = _getProcessingFunction(false); for (var i = 0, l = recipients.length; i < l; i++) { - var recipientsInfo = IncomingEmailExecutor._getContactDataByEmail(recipients[i], alias); + var recipientsInfo = IncomingEmailExecutor.getContactDataByEmail(recipients[i], alias); var recipientContacts = { prefered: [], @@ -107,6 +311,9 @@ IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) responsibleContactId: activityData.employeeContactId || failbackActivityData.employeeContactId }; var activityLinks = activityData.links || failbackActivityData.links; + if (pAdditionalLinks) + activityLinks.push(pAdditionalLinks); + activityLinks = ArrayUtils.distinct2d(activityLinks);//TODO: better check before adding the elements into the array if it already exists there var activityDocs = [["mail.eml", util.encodeBase64String(mail.toRFC(pMail)), true]]; var activityRes = ActivityUtils.insertNewActivity(activityDataForInsert, activityLinks, activityDocs, pAlias); @@ -154,4 +361,21 @@ IncomingEmailExecutor.mailToActivity = function(pMail, pUnlinkedMailId, pAlias) } }; } -}; \ No newline at end of file +}; +*/ +function IncomingEmailDataOverrides() +{ +} + +IncomingEmailDataOverrides.load = function() +{ + return new IncomingEmailDataOverrides(); +} + +IncomingEmailDataOverrides.prototype.employeeContactId = function(pValue) +{ + if (pValue) + this.employeeContactId = pValue; + return this; +}; + diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index 0b30594ebabee3603c112641ef3857607d332ab3..974c5c3b34731047b35399ecca6e3d8722be68c9 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -92,7 +92,10 @@ $KeywordRegistry.addressType$private = function(){return $KeywordRegistry._autoP $KeywordRegistry.addressType$office = function(){return $KeywordRegistry._autoPad("OFFICEADDR");}; $KeywordRegistry.offerProbability = function(){return "OfferProbability";}; + $KeywordRegistry.communicationMedium = function(){return "CommunicationMedium";}; +$KeywordRegistry.communicationMedium$mail = function(){return $KeywordRegistry._autoPad("COMMEMAIL");}; + $KeywordRegistry.salesprojectPricePolitics = function(){return "SalesprojectPricePolitics";}; $KeywordRegistry.salesprojectWeakness = function(){return "SalesprojectWeakness";}; $KeywordRegistry.salesprojectStrenght = function(){return "SalesprojectStrenght";}; diff --git a/process/Product_lib/process.js b/process/Product_lib/process.js index 8f96db44736d2078070910d37bef26cead064c05..fdfb811d504c69f14e7e3247008df81f223d5006 100644 --- a/process/Product_lib/process.js +++ b/process/Product_lib/process.js @@ -100,7 +100,7 @@ ProductUtils.getStockCount = function(pid) { * (Subqueries are also possible) * * @example //Product_entity, Field: PRODUCT_ID, Process: onValueChange - * var pid = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.PRODUCT_ID")); + * var pid = vars.get("local.value"); * var curr = vars.exists("$param.Currency_param") ? vars.get("$param.Currency_param") : ""; * var contactid = vars.exists("$param.ContactId_param") ? vars.get("$param.ContactId_param") : ""; * var pUtils = new ProductUtils(); diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 97349505c724ec2fa47c9315e6a33f7c6078fb1b..96fad8157daf52446aaf45d30932f3e1e99568d7 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -851,8 +851,8 @@ SqlBuilder.prototype._getClause = function (pElement, pPrefix, pAutoJoin) pElement = _getElement(pElement); } } - - if (pPrefix) + + if (pPrefix && pElement) pElement = pPrefix + " " + pElement; return [pElement.toString(), preparedValues]; diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index de5d265459ddeb922c5c7dc07c679a00daaa4c77..de713fa6707bd85988ac250dc3873bb6006970c4 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -88,7 +88,7 @@ NumberUtils.isInside = function(pValue, pMin, pMax, pIgnoreNull) * @return {String|False} returns the error message or false * * @example - * var value = ProcessHandlingUtils.getOnValidationValue(vars.get("$field.DISCOUNT")); <br> + * var value = vars.get("local.value"); <br> * <br> * var validationResult = NumberUtils.validateIsBetweenFloat("Discount", value, 0, 100); <br> * <br> diff --git a/process/WsValidation_lib/process.js b/process/WsValidation_lib/process.js index dfeb7e0835ca991790f377433728af7be78b6f2f..c5ad40dd0c210d20016709f1b867a8fc211d75ae 100644 --- a/process/WsValidation_lib/process.js +++ b/process/WsValidation_lib/process.js @@ -266,14 +266,14 @@ WsValidationUtils.validate = function(pValue, pType, pCountry, pCity) } /** - * set all address-fields by the value of $this.value, which should contain an object of all values as JSON + * set all address-fields by the value of $local.value, which should contain an object of all values as JSON * @param {String} [pFieldToSetToValue=undefined] the field which should be set to data.value */ WsValidationUtils.setAddressFields = function(pFieldToSetToValue) { try { - var data = JSON.parse(vars.getString("$this.value")); + var data = JSON.parse(vars.getString("$local.value")); } catch (exception) { // if no valid json, it is a direct user input and not a uuid. // ignore error diff --git a/process/ctiServerEvents/process.js b/process/ctiServerEvents/process.js index 81944a4a3f936190a74d104935f068e5fe0004aa..0375f23402be095c7856026594d7ed536cb87f36 100644 --- a/process/ctiServerEvents/process.js +++ b/process/ctiServerEvents/process.js @@ -57,7 +57,11 @@ var ringingHandlerFn = function() notificationConfig.description(desc).caption(title); if (this.contactsCall.length > 0) - notificationConfig.linkInfo(text.encodeMS(["AnyContact", affectedContactId/*this.contactsCall[0].CONTACTID*/])); + { + var affectedContext = this.contactsCall[0].PERSON_ID.trim() == "" ? "Organisation" : "Person"; + notificationConfig.linkInfo(text.encodeMS([affectedContext, affectedContactId])); + } + notification.addNotificationWith(notificationConfig); return null; @@ -109,7 +113,7 @@ var disconnectingHandlerFn = function() else { var contactTitleMissed = this.contactsCall[0].PERSON_FULL_NAME + ", " + this.contactsCall[0].ORGANISATION_NAME; - title = translate.withArguments("Call from %0", [this.callData.callAddress], targetLocale); + title = translate.withArguments("Call from %0", [contactTitleMissed], targetLocale); desc = translate.withArguments("Missed call from %0 (%1) to %2", [this.getFormattedCallAddress(), contactTitleMissed, this.getFormattedLocalAddress()], targetLocale); } } diff --git a/process/emailWrite/process.js b/process/emailWrite/process.js index b182346d55839c37604dccd5eef31237e210d2ae..d69b5720af1f95d2c213a0ae7c42b94dacc1680b 100644 --- a/process/emailWrite/process.js +++ b/process/emailWrite/process.js @@ -17,7 +17,7 @@ if (entity == "Communication_entity") .andPrepare("COMMUNICATION.COMMUNICATIONID", uid) .buildSql("select COMMUNICATION.CONTACT_ID from COMMUNICATION"); var contactId = db.cell(contactSql) - EmailUtils.openNewMail(contactId, address); + EmailWritingUtils.openNewMail(contactId, address); } else neon.openUrl("mailto:" + encodeURIComponent(address), false); \ No newline at end of file diff --git a/process/mailbridge/process.js b/process/mailbridge/process.js index 210f2c5fc8ef057aa5b26430ac13c320dc483933..88f17d8b32509fd74629bb49748cf66968984268 100644 --- a/process/mailbridge/process.js +++ b/process/mailbridge/process.js @@ -8,4 +8,5 @@ var sender = text.decodeFirst(vars.getString("$local.sender")); var recipients = text.decodeMS(vars.getString("$local.recipients")); var mailObj = mail.resolveMail(vars.getString("$local.mail")); -IncomingEmailExecutor.mailToActivity(mailObj); +var incomingMailExec = new IncomingEmailExecutor(mailObj); +incomingMailExec.autoProcess(); \ No newline at end of file