diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml index 3e4f1fbd5b8f119ecc58649bab722422cfdf571b..7153295dc12d1b84566a0af057f0f65bf706f3e9 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ComunicationMedium_IdDatatype.xml @@ -1,7 +1,17 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="b.ulrich" id="a9f53bcd-b541-4a46-bd40-a21f7fae7aba"> - <modifyDataType columnName="MEDIUM_ID" newDataType="CHAR(36)" tableName="COMMUNICATION"/> + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet dbms="derby" author="b.ulrich" id="bd334096-a6ce-4739-b272-753a85ff103e"> + <sql> + ALTER TABLE COMMUNICATION ADD COLUMN MEDIUM_ID_NEW CHAR(36); + UPDATE COMMUNICATION SET MEDIUM_ID_NEW=MEDIUM_ID; + ALTER TABLE COMMUNICATION DROP COLUMN MEDIUM_ID; + RENAME COLUMN COMMUNICATION.MEDIUM_ID_NEW TO MEDIUM_ID; + </sql> </changeSet> + + <changeSet dbms="!derby" author="b.ulrich" id="17c1eb73-3131-4a2b-bf9a-913590767c79"> + <modifyDataType tableName="COMMUNICATION" columnName="MEDIUM_ID" newDataType="CHAR(36)"/> + </changeSet> + </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml index 14c64bfefe06b69e868de85bdf8ab9fcd6a093c1..ec607aa9383d71b3ad3c4d1bd8b785c16d489981 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml @@ -1,7 +1,16 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="b.ulrich" id="5a0d5d3f-e849-4584-8082-481b1411d1fc"> - <modifyDataType columnName="DOCUMENTTEMPLATE_ID" newDataType="CHAR(36)" tableName="DOCUMENTTEMPLATE"/> + <changeSet dbms="derby" author="b.ulrich" id="83c25119-cf41-42ab-b42f-370195f9de87"> + <sql> + ALTER TABLE DOCUMENTTEMPLATE ADD COLUMN DOCUMENTTEMPLATEID_NEW CHAR(36); + UPDATE DOCUMENTTEMPLATE SET DOCUMENTTEMPLATEID_NEW=DOCUMENTTEMPLATEID; + ALTER TABLE DOCUMENTTEMPLATE DROP COLUMN DOCUMENTTEMPLATEID; + RENAME COLUMN DOCUMENTTEMPLATE.DOCUMENTTEMPLATEID_NEW TO DOCUMENTTEMPLATEID; + </sql> + </changeSet> + + <changeSet dbms="!derby" author="b.ulrich" id="85ba6a61-9318-4118-ac4c-e33730f6581d"> + <modifyDataType tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" newDataType="CHAR(36)"/> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml index 7de92277180d51eb97a2cb562328e8e46751b43d..237c9fd9e447f01353d895dba2a7c1123e684471 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_ExportTemplateDatatype.xml @@ -1,10 +1,26 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <changeSet author="b.ulrich" id="77ee7dcd-cf5b-47ea-a59a-2b1230fad818"> - <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEPLACEOFUSE"/> - <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATEFIELD"/> - <modifyDataType columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)" tableName="EXPORTTEMPLATESELECTION"/> - + <changeSet dbms="derby" author="b.ulrich" id="9c551ee3-f4f0-46e4-a671-943b58c74432"> + <sql> + ALTER TABLE EXPORTTEMPLATEPLACEOFUSE ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36); + UPDATE EXPORTTEMPLATEPLACEOFUSE SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID; + ALTER TABLE EXPORTTEMPLATEPLACEOFUSE DROP COLUMN EXPORTTEMPLATE_ID; + RENAME COLUMN EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID; + ALTER TABLE EXPORTTEMPLATEFIELD ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36); + UPDATE EXPORTTEMPLATEFIELD SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID; + ALTER TABLE EXPORTTEMPLATEFIELD DROP COLUMN EXPORTTEMPLATE_ID; + RENAME COLUMN EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID; + ALTER TABLE EXPORTTEMPLATESELECTION ADD COLUMN EXPORTTEMPLATE_ID_NEW CHAR(36); + UPDATE EXPORTTEMPLATESELECTION SET EXPORTTEMPLATE_ID_NEW=EXPORTTEMPLATE_ID; + ALTER TABLE EXPORTTEMPLATESELECTION DROP COLUMN EXPORTTEMPLATE_ID; + RENAME COLUMN EXPORTTEMPLATESELECTION.EXPORTTEMPLATE_ID_NEW TO EXPORTTEMPLATE_ID; + </sql> + </changeSet> + + <changeSet dbms="!derby" author="b.ulrich" id="a53a2f38-3788-44a2-a151-13b3853ccb74"> + <modifyDataType tableName="EXPORTTEMPLATEPLACEOFUSE" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/> + <modifyDataType tableName="EXPORTTEMPLATEFIELD" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/> + <modifyDataType tableName="EXPORTTEMPLATESELECTION" columnName="EXPORTTEMPLATE_ID" newDataType="CHAR(36)"/> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.1.2/changelog.xml b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml index 7564d2c1056f082eed989a808b8dd3c36756a230..88aba8706e9098e1a1b35abad171c97f0dab8e9d 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/changelog.xml @@ -1,9 +1,8 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> - <include file="AlterDocumentTemplatePlaceOfUseDatatype/changelog.xml" relativeToChangelogFile="true"/> + <include file="AlterDatatypeOfKeyColumnsToChar/changelog.xml" relativeToChangelogFile="true"/> <include file="AddNullableToDateNew.xml" relativeToChangelogFile="true" /> - <include file="insert_workflowCategory_keyword.xml" relativeToChangelogFile="true"/> <include relativeToChangelogFile="true" file="drop_salesorder_unpaid.xml"/> <include relativeToChangelogFile="true" file="drop_salesorder_versnr.xml"/> </databaseChangeLog> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 80c4686210790a754e8528e02b583a833eebcfb3..dbe878d7be0c6e3f4b7dd8c645fcb4547262337b 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -1180,12 +1180,12 @@ <name>MEDIUM_ID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <title>Medium</title> <description></description> <customProperties> @@ -8237,9 +8237,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8272,10 +8272,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8529,9 +8529,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8557,10 +8557,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8647,9 +8647,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8696,10 +8696,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -8835,9 +8835,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -8954,10 +8954,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -9267,9 +9267,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -9309,10 +9309,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -11573,9 +11573,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -11601,10 +11601,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -11885,9 +11885,9 @@ <name>DATE_EDIT</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> <index v="false" /> @@ -11920,10 +11920,10 @@ <name>DATE_NEW</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> + <columnType v="91" /> + <size v="10" /> + <scale v="0" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -14019,12 +14019,12 @@ <name>EXPORTTEMPLATE_ID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -14345,12 +14345,12 @@ <name>EXPORTTEMPLATE_ID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -14400,12 +14400,12 @@ <name>EXPORTTEMPLATE_ID</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> + <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="true" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index b9e852b3b2ae077b24a41200d051dad37e408a9a..c9855622f5a88df06c57b8c307adf3df0b6b88e7 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -4,7 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation> <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/AnyContact_entity/onInit.js</onInit> + <initFilterProcess>%aditoprj%/entity/AnyContact_entity/initFilterProcess.js</initFilterProcess> <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess> <recordContainer>db</recordContainer> <entityFields> diff --git a/entity/AnyContact_entity/initFilterProcess.js b/entity/AnyContact_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..695577262bdb7ee4519993bcaf130262075e81ca --- /dev/null +++ b/entity/AnyContact_entity/initFilterProcess.js @@ -0,0 +1,19 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var statusInactive = $KeywordRegistry.contactStatus$inactive(); +var filter = { + type: "group", + operator: "AND", + childs: [{ + type: "row", + name: "STATUS", + operator: "NOT_EQUAL", + contenttype: "TEXT", + key: statusInactive, + value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive) + }] +}; + +result.string(JSON.stringify(filter)); \ No newline at end of file diff --git a/entity/AnyContact_entity/onInit.js b/entity/AnyContact_entity/onInit.js deleted file mode 100644 index a75a8d405e273b1b3e026251a305676c2ccbd9ad..0000000000000000000000000000000000000000 --- a/entity/AnyContact_entity/onInit.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.neon"); -import("Keyword_lib"); -import("system.vars"); -import("KeywordRegistry_basic"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": "TEXT" -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); \ No newline at end of file diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index 28c70af66100db91d5c2b61eea6d9ff584fb5832..c68158fb3304f71cc78829cd7f1490171a04782b 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -183,6 +183,7 @@ <entityParameter> <name>AppointmentState_param</name> <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/appointmentlinks/children/appointmentstate_param/valueProcess.js</valueProcess> + <expose v="false" /> </entityParameter> </children> </entityConsumer> diff --git a/entity/Appointment_entity/entityfields/begin/valueProcess.js b/entity/Appointment_entity/entityfields/begin/valueProcess.js index 494b5d528f0bac0d2135955a873332e8a462641b..87e3ad4739d488a6973d66b2320eac4c6e31dfd4 100644 --- a/entity/Appointment_entity/entityfields/begin/valueProcess.js +++ b/entity/Appointment_entity/entityfields/begin/valueProcess.js @@ -19,8 +19,8 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$para /** * Sets explicitly the start date when a preset is sent from the core, due to a move or resize event from the user. Do not remove. */ -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param")) -{ - let event = JSON.parse(vars.getString("$param.Entry_param")); - result.string(event[calendars.DTSTART]); -} \ No newline at end of file +//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param")) +//{ +// var event = JSON.parse(vars.getString("$param.Entry_param")); +// result.string(event[calendars.DTSTART]); +//} \ No newline at end of file diff --git a/entity/Appointment_entity/entityfields/end/valueProcess.js b/entity/Appointment_entity/entityfields/end/valueProcess.js index 23262e1a868e63515d37b22d4124b1d79728cc74..4f9cd21b8a46a565aab9140cd54114628d793305 100644 --- a/entity/Appointment_entity/entityfields/end/valueProcess.js +++ b/entity/Appointment_entity/entityfields/end/valueProcess.js @@ -19,8 +19,8 @@ if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$para /** * Sets explicitly the end date when a preset is sent from the core, due to a move or resize event from the user. Do not remove. */ -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param")) -{ - let event = JSON.parse(vars.getString("$param.Entry_param")); - result.string(event[calendars.DTEND]); -} \ No newline at end of file +//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$param.Entry_param")) +//{ +// let event = JSON.parse(vars.getString("$param.Entry_param")); +// result.string(event[calendars.DTEND]); +//} \ No newline at end of file diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index 7e8972a145953d11163f3fccc1879487dea6e31b..e56415a0faf52007f91bcc4e92f9ae20aebfa819 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -13,7 +13,25 @@ import("system.neon"); var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK"); var appointmentUids; -if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "") +/** + * Will be used, if the user is operating the calendar. + */ +if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param")) +{ + var entry = JSON.parse(vars.getString("$param.Entry_param")); + + var masterEntry = null; + if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") { + masterEntry = JSON.parse(vars.getString("$param.MasterEntry_param")); + } + + //@TODO Icon + result.object([ + buildEntry(entry, masterEntry) + ]); +} + +else if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "") { var selectedids = vars.get("$local.idvalues"); result.object([buildEntry(calendars.getEntry(selectedids, null, null), null)]); @@ -35,23 +53,6 @@ else if(vars.getString("$param.LinkedObjectId_param") != undefined) appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param") result.object(buildEntriesFromUids(appointmentSelect.table())); } -/** - * Will be used, if the user is operating the calendar. - */ -else if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param")) -{ - var entry = JSON.parse(vars.getString("$param.Entry_param")); - - var masterEntry = null; - if (vars.exists("$param.MasterEntry_param") && vars.get("$param.MasterEntry_param") != "") { - masterEntry = JSON.parse(vars.getString("$param.MasterEntry_param")); - } - - //@TODO Icon - result.object([ - buildEntry(entry, masterEntry) - ]); -} function buildEntriesFromUids(appointmentUids) { diff --git a/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js b/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js deleted file mode 100644 index 7acb3c80848f54a4c6dfee5efa7a5b8514dd4a71..0000000000000000000000000000000000000000 --- a/entity/AttributeUsage_entity/entityfields/date_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js b/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js deleted file mode 100644 index a8a5e28793c742f8f3e10907976e746faf43c67c..0000000000000000000000000000000000000000 --- a/entity/AttributeUsage_entity/entityfields/user_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/date_new/valueProcess.js b/entity/Attribute_entity/entityfields/date_new/valueProcess.js deleted file mode 100644 index 7acb3c80848f54a4c6dfee5efa7a5b8514dd4a71..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/entityfields/date_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.date")); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js b/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js deleted file mode 100644 index dc6dfca332983312b5fc1181f8a357c182ac603f..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/entityfields/keywordattributetype/children/containername_param/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string($KeywordRegistry.attributeType()); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/user_new/valueProcess.js b/entity/Attribute_entity/entityfields/user_new/valueProcess.js deleted file mode 100644 index a8a5e28793c742f8f3e10907976e746faf43c67c..0000000000000000000000000000000000000000 --- a/entity/Attribute_entity/entityfields/user_new/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.getString("$sys.user")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js deleted file mode 100644 index f5825a6c09c99e0530939a270bcd81cfbc0c2d5b..0000000000000000000000000000000000000000 --- a/entity/CampaignParticipant_entity/entityfields/participantscommrestiction/children/contactid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.getString("$field.CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js b/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js deleted file mode 100644 index 2bf64744b6548030c6db0cb825f376192bfdf5e1..0000000000000000000000000000000000000000 --- a/entity/CampaignParticipant_entity/entityfields/selectedcampaign/onValueChange.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.neon"); - - -neon.setFieldValue("$field.SYSTEMTEMPLATE", templateId); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js index b91c3634ae7fa3229e120ed364433b3f7787b276..04d8b224fd5596fc97753ed1afd61ad16cee5b4c 100644 --- a/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/campaign_id/valueProcess.js @@ -3,5 +3,5 @@ import("system.result"); import("system.vars"); //For creation of new Step in CampaignMainView -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param")) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param") && !vars.get("$this.value")) result.string(vars.get("$param.campaignId_param")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js deleted file mode 100644 index f0e8a44adee3749dafae8e5cba1b67c52701e01a..0000000000000000000000000000000000000000 --- a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/state.displayvalue/expression.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepState(), "CAMPAIGNSTEP.STATUS"); -result.string(sql); \ No newline at end of file diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index a9420fd4fbb060bb56b80f2efa888981a719029e..6f35c476eb9f55b732f36f8bf0a22a9a1cd02921 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -624,10 +624,6 @@ <name>CURRENCY.displayValue</name> <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/currency.displayvalue/expression.js</expression> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>COUNT.value</name> - <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> - </dbRecordFieldMapping> <aggregateFieldDbMapping> <name>COUNT_aggregate.value</name> <recordfield>CAMPAIGN.CAMPAIGNID</recordfield> diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 82c35b3c618ecc933e74b694daa96ad9f97cbfa4..ad05310a9dd5d918ce46a6b17a4ec7564dad10ba 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -8,8 +8,8 @@ <grantUpdateProcess>%aditoprj%/entity/Contact_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Contact_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Contact_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/Contact_entity/onInit.js</onInit> <onValidation>%aditoprj%/entity/Contact_entity/onValidation.js</onValidation> + <initFilterProcess>%aditoprj%/entity/Contact_entity/initFilterProcess.js</initFilterProcess> <iconId>VAADIN:USERS</iconId> <titlePlural>Contacts</titlePlural> <recordContainer>db</recordContainer> diff --git a/entity/Contact_entity/initFilterProcess.js b/entity/Contact_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..695577262bdb7ee4519993bcaf130262075e81ca --- /dev/null +++ b/entity/Contact_entity/initFilterProcess.js @@ -0,0 +1,19 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var statusInactive = $KeywordRegistry.contactStatus$inactive(); +var filter = { + type: "group", + operator: "AND", + childs: [{ + type: "row", + name: "STATUS", + operator: "NOT_EQUAL", + contenttype: "TEXT", + key: statusInactive, + value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive) + }] +}; + +result.string(JSON.stringify(filter)); \ No newline at end of file diff --git a/entity/Contact_entity/onInit.js b/entity/Contact_entity/onInit.js deleted file mode 100644 index ad4324c7682881b8e9ca470e334269ae822ec522..0000000000000000000000000000000000000000 --- a/entity/Contact_entity/onInit.js +++ /dev/null @@ -1,23 +0,0 @@ -import("system.neon"); -import("Keyword_lib"); -import("system.vars"); -import("KeywordRegistry_basic"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": vars.get("$property.STATUS.contentType") -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); \ No newline at end of file diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js index 55ac5773b3cb1302c26846d766e066c70d64222f..4ea71164c3cd8f2f93b39be55a3555cbf9b8090a 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -234,7 +234,7 @@ function _getEntryData(pObjectId, pDirection, pRelationType1, pRelationType2, pP if (pRelationType1 == undefined || pRelationType2 == undefined) return []; - var [myNum, otherNum] = pDirection == "normal" ? [2, 1] : [1, 2]; + var [myNum, otherNum] = pDirection == "normal" ? [1, 2] : [2, 1]; onConditionForRelationTypeJoin = newWhere("AB_OBJECTRELATIONTYPEID = AB_OBJECTRELATIONTYPE" + myNum) .and("AB_OBJECTRELATION.AB_OBJECTRELATIONTYPE1", pRelationType1) diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 26fe1fdb3d81b895c3116377537320ae54a77d70..cbd7cb44ef5d77d0e3656bfe5867f3c3f68ce8f8 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -7,8 +7,9 @@ <title>Company</title> <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/Organisation_entity/onInit.js</onInit> + <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit> <afterOperatingState>%aditoprj%/entity/Organisation_entity/afterOperatingState.js</afterOperatingState> + <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess> <iconId>VAADIN:BUILDING</iconId> <imageProcess>%aditoprj%/entity/Organisation_entity/imageProcess.js</imageProcess> <titlePlural>Companies</titlePlural> diff --git a/entity/Organisation_entity/afterUiInit.js b/entity/Organisation_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..d529418d07b0567a96364d831a8a27194c2eca23 --- /dev/null +++ b/entity/Organisation_entity/afterUiInit.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.vars"); +import("Context_lib"); +import("Attribute_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); \ No newline at end of file diff --git a/entity/Organisation_entity/initFilterProcess.js b/entity/Organisation_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..26ce7fa02bbaeaa2d25db318aa011b67278354cc --- /dev/null +++ b/entity/Organisation_entity/initFilterProcess.js @@ -0,0 +1,19 @@ +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.result"); + +var statusInactive = $KeywordRegistry.contactStatus$inactive(); +var filter = { + type: "group", + operator: "AND", + childs: [{ + type: "row", + name: "STATUS", + operator: "NOT_EQUAL", + contenttype: "TEXT", + key: statusInactive, + value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive) + }] +}; + +result.string(JSON.stringify(filter)); \ No newline at end of file diff --git a/entity/Organisation_entity/onInit.js b/entity/Organisation_entity/onInit.js deleted file mode 100644 index b9717583554415c62b48c4ad8304aceb87245938..0000000000000000000000000000000000000000 --- a/entity/Organisation_entity/onInit.js +++ /dev/null @@ -1,30 +0,0 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.neon"); -import("system.vars"); -import("Context_lib"); -import("Attribute_lib"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": "TEXT" -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); -} diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod index a238832f1d236913854ff9ffa634281c3081d5ec..c2faec477ab09d9a7d1b57c5c8f74b8f4bf4fc19 100644 --- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod +++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod @@ -96,6 +96,7 @@ <isMenuAction v="true" /> <isObjectAction v="false" /> <isSelectionAction v="false" /> + <iconId>VAADIN:USER</iconId> <state>AUTO</state> <tooltip></tooltip> </entityActionField> @@ -104,6 +105,7 @@ <title>Receive new Department Permission</title> <onActionProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/addactions/children/receivenewdepartmentpermissiondealteraction/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:GROUP</iconId> <state>AUTO</state> </entityActionField> </children> diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index cbabea32766c97f2a7d1faa4fcc2ede5fd2a3048..907d1408a4c2c5606ddcc61e47249d015939e3e3 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -10,9 +10,10 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Person_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Person_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/Person_entity/onInit.js</onInit> + <afterUiInit>%aditoprj%/entity/Person_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Person_entity/onValidation.js</onValidation> <afterOperatingState>%aditoprj%/entity/Person_entity/afterOperatingState.js</afterOperatingState> + <initFilterProcess>%aditoprj%/entity/Person_entity/initFilterProcess.js</initFilterProcess> <iconId>VAADIN:USERS</iconId> <imageProcess>%aditoprj%/entity/Person_entity/imageProcess.js</imageProcess> <usePermissions v="false" /> diff --git a/entity/Person_entity/afterUiInit.js b/entity/Person_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..d529418d07b0567a96364d831a8a27194c2eca23 --- /dev/null +++ b/entity/Person_entity/afterUiInit.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.vars"); +import("Context_lib"); +import("Attribute_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); \ No newline at end of file diff --git a/entity/Person_entity/initFilterProcess.js b/entity/Person_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..26ce7fa02bbaeaa2d25db318aa011b67278354cc --- /dev/null +++ b/entity/Person_entity/initFilterProcess.js @@ -0,0 +1,19 @@ +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.result"); + +var statusInactive = $KeywordRegistry.contactStatus$inactive(); +var filter = { + type: "group", + operator: "AND", + childs: [{ + type: "row", + name: "STATUS", + operator: "NOT_EQUAL", + contenttype: "TEXT", + key: statusInactive, + value: KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusInactive) + }] +}; + +result.string(JSON.stringify(filter)); \ No newline at end of file diff --git a/entity/Person_entity/onInit.js b/entity/Person_entity/onInit.js deleted file mode 100644 index 1958e327f289481afe51088aa62d5d57af3a782f..0000000000000000000000000000000000000000 --- a/entity/Person_entity/onInit.js +++ /dev/null @@ -1,30 +0,0 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.neon"); -import("system.vars"); -import("Context_lib"); -import("Attribute_lib"); - -var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.contactStatus$inactive(), - "contenttype": "TEXT" -}; - -statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.contactStatus(), statusFilterElement.key); - -var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] -}; - -filter = JSON.stringify(filter); -neon.setFilter("#ENTITY", filter); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); -} diff --git a/entity/Salesproject_entity/onValidation.js b/entity/Salesproject_entity/onValidation.js index e0b1e589a7543108c938f3dbb1d9c75b58908753..c9618796815b4f0e83c28c43a12320cd981a3ed9 100644 --- a/entity/Salesproject_entity/onValidation.js +++ b/entity/Salesproject_entity/onValidation.js @@ -1,3 +1,4 @@ +import("system.translate"); import("system.result"); import("Date_lib"); import("system.vars"); @@ -6,4 +7,6 @@ var startDate = vars.get("$field.STARTDATE"); var endDate = vars.get("$field.ENDDATE"); if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) - result.string(DateUtils.getValidationFailString()); \ No newline at end of file + result.string(DateUtils.getValidationFailString()); +else if(!vars.get("$field.PROJECTTITLE") && vars.get("$field.PROJECTTYPE") && vars.exists("$param.PresetTitle_param")) + result.string(translate.text("The Sales Project can only be filled when a company has been specified")); \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 14cdb18785867088dbb7220fa1bb33afc7b479a3..64f381e93f98b991c2c8502acfc95780050d98c6 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -6,8 +6,9 @@ <title>Task</title> <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/Task_entity/onInit.js</onInit> + <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation> + <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess> <iconId>VAADIN:TASKS</iconId> <iconIdProcess>%aditoprj%/entity/Task_entity/iconIdProcess.js</iconIdProcess> <titlePlural>Tasks</titlePlural> diff --git a/entity/Task_entity/afterUiInit.js b/entity/Task_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..2f108ba446930b67156ba07b5e880b1ff371117a --- /dev/null +++ b/entity/Task_entity/afterUiInit.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("ActivityTask_lib"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID"); \ No newline at end of file diff --git a/entity/Task_entity/initFilterProcess.js b/entity/Task_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..39b6e0b2e29be0e89c1cf8279ab9c9ae93a74ab9 --- /dev/null +++ b/entity/Task_entity/initFilterProcess.js @@ -0,0 +1,19 @@ +import("system.result"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + +var statusEnded = $KeywordRegistry.taskStatus$ended(); +var filter = { + type: "group", + operator: "AND", + childs: [{ + type: "row", + name: "STATUS", + operator: "NOT_EQUAL", + contenttype: "TEXT", + key: statusEnded, + value: KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusEnded) + }] +}; + +result.string(JSON.stringify(filter)); \ No newline at end of file diff --git a/entity/Task_entity/onInit.js b/entity/Task_entity/onInit.js deleted file mode 100644 index 0a610862cbb9ecae7e44e15eabbc31b0b20eceda..0000000000000000000000000000000000000000 --- a/entity/Task_entity/onInit.js +++ /dev/null @@ -1,31 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.neon"); -import("ActivityTask_lib"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var recordState = vars.get("$sys.recordstate"); -if(recordState == neon.OPERATINGSTATE_NEW) -{ - TaskUtils.addLinkRecords("$param.ObjectId_param", "$param.RowId_param", "$param.PresetLinks_param", "$field.PARENT_CONTEXT", "$field.PARENT_ID"); -} -else if (recordState != neon.OPERATINGSTATE_SEARCH) -{ - var statusFilterElement = { - "type":"row", - "name":"STATUS", - "operator":"NOT_EQUAL", - "key":$KeywordRegistry.taskStatus$ended(), - "contenttype": "TEXT" - }; - statusFilterElement.value = KeywordUtils.getViewValue($KeywordRegistry.taskStatus(), statusFilterElement.key); - - var filter = { - "type":"group", - "operator":"AND", - "childs": [statusFilterElement] - }; - filter = JSON.stringify(filter); - neon.setFilter("#ENTITY", filter); -} \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod index 1cd52f7035f12fffa8d282df67384589bd7c0eb5..db719f1fd0c9f75968b75227ffc77044223ce190 100644 --- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod +++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod @@ -7,7 +7,6 @@ <grantCreateProcess>%aditoprj%/entity/WorkflowDefinition_entity/grantCreateProcess.js</grantCreateProcess> <grantDelete v="false" /> <contentTitleProcess>%aditoprj%/entity/WorkflowDefinition_entity/contentTitleProcess.js</contentTitleProcess> - <onInit>%aditoprj%/entity/WorkflowDefinition_entity/onInit.js</onInit> <iconId>VAADIN:DROP</iconId> <titlePlural>Workflow definitions</titlePlural> <recordContainer>jdito</recordContainer> diff --git a/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js b/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d79eb290d58d4f19fbd534e91b252388749224ce --- /dev/null +++ b/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.workflowCategory()); \ No newline at end of file diff --git a/entity/WorkflowDefinition_entity/onInit.js b/entity/WorkflowDefinition_entity/onInit.js deleted file mode 100644 index 7199fd35b05e991cb7f35e577f1a7e593a28c60e..0000000000000000000000000000000000000000 --- a/entity/WorkflowDefinition_entity/onInit.js +++ /dev/null @@ -1,20 +0,0 @@ -import("system.neon"); -import("system.vars"); -import("system.translate"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && vars.get("$sys.viewmode") == neon.FRAME_VIEWMODE_DATASET) -{ - var filterOnlyUnfinished = { - type : "group", - operator : "AND", - childs : [{ - type : "row", - name : "ISFINISHED", - operator : "EQUAL", - value : translate.text("No"), - key : "false", - contenttype : "BOOLEAN" - }] - }; - neon.setFilter("Instances", JSON.stringify(filterOnlyUnfinished)); -} \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod index 37c5a337ba3fef1c5b2d8e9c3574bbea5404ef21..765793b9f379e0c813bca3b508491cf0dcba0421 100644 --- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod +++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod @@ -5,6 +5,7 @@ <documentation>%aditoprj%/entity/WorkflowInstance_entity/documentation.adoc</documentation> <title>Workflow instance</title> <contentTitleProcess>%aditoprj%/entity/WorkflowInstance_entity/contentTitleProcess.js</contentTitleProcess> + <initFilterProcess>%aditoprj%/entity/WorkflowInstance_entity/initFilterProcess.js</initFilterProcess> <titlePlural>Workflow instances</titlePlural> <recordContainer>jdito</recordContainer> <entityFields> diff --git a/entity/WorkflowInstance_entity/initFilterProcess.js b/entity/WorkflowInstance_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..80a38560e27c2236fec97c140cbce55462a7c809 --- /dev/null +++ b/entity/WorkflowInstance_entity/initFilterProcess.js @@ -0,0 +1,17 @@ +import("system.result"); +import("system.translate"); + +var filterOnlyUnfinished = { + type : "group", + operator : "AND", + childs : [{ + type : "row", + name : "ISFINISHED", + operator : "EQUAL", + value : translate.text("No"), + key : "false", + contenttype : "BOOLEAN" + }] +}; + +result.string(JSON.stringify(filterOnlyUnfinished)); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index f5bcf9949894d5335e68613b990e62b9066e0208..3ffbe846c77cc3e4d64c7ed734ff2399dc30450a 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -27,6 +27,7 @@ </entityField> <entityField> <name>FORMDEFINITION</name> + <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js</valueProcess> </entityField> <entityField> <name>FORMRESULT</name> @@ -257,9 +258,6 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>FORMDEFINITION.value</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>FORMRESULT.value</name> </jDitoRecordFieldMapping> diff --git a/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8fc3f05f70c0f41c45cc8b15489f265bfd8695d4 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/formdefinition/valueProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); +import("system.workflow"); +import("system.neon"); + +//the value of this field can be set by the onValueChange process of FORMRESULT + +if (vars.get("$this.value") == null) + result.string(workflow.getFormProperties(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js index de6e83f10c3755c6281daacaedff352aeb93ba55..ed15981f641e6ef0941c2d5298ba177b24c8a080 100644 --- a/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/WorkflowTask_entity/recordcontainers/jdito/contentProcess.js @@ -96,7 +96,6 @@ result.object((function () task.processDefinitionId, task.processInstanceId, Date.parse(task.createTime).toString(), - workflow.getFormProperties(task.id) || "", "", variables.USER_ID || "", task.description || "", diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index ed12fc0f39983f65d9e03fa38e9411b86427147a..d339195f21f074660303e10b1a80ce278c3bb123 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -6807,55 +6807,73 @@ <key>Settings</key> </entry> <entry> - <key>workflow notification</key> + <key>No new recipients found that can be added to the bulk mail.</key> </entry> <entry> - <key>Permission received</key> + <key>Add Recipients</key> </entry> <entry> - <key>leadimport notification</key> + <key>Add Participants</key> </entry> <entry> - <key>granted permission</key> + <key>Download letter and create Activity</key> </entry> <entry> - <key>bulk mail sent</key> + <key>and open Report</key> </entry> <entry> - <key>download ready</key> + <key>export</key> </entry> <entry> - <key>No new recipients found that can be added to the bulk mail.</key> + <key>export using the selected template</key> </entry> <entry> - <key>Add Recipients</key> + <key>No new recipients found that can be added to the serial letter.</key> </entry> <entry> - <key>Add Participants</key> + <key>send mail</key> </entry> <entry> - <key>Download letter and create Activity</key> + <key>and open modeler</key> </entry> <entry> - <key>and open Report</key> + <key>Create model</key> </entry> <entry> - <key>export</key> + <key>Edit workflow</key> </entry> <entry> - <key>export using the selected template</key> + <key>Receive new Department Permission</key> </entry> <entry> - <key>No new recipients found that can be added to the serial letter.</key> + <key>Receive new User Permission</key> </entry> <entry> - <key>send mail</key> + <key>workflow notification</key> </entry> <entry> - <key>Add new Department Permission</key> + <key>Permission received</key> </entry> - <entry> - <key>Add new User Permission</key> + <entry> + <key>leadimport notification</key> + </entry> + <entry> + <key>granted permission</key> + </entry> + <entry> + <key>bulk mail sent</key> + </entry> + <entry> + <key>download ready</key> + </entry> + <entry> + <key>Total in euros</key> + </entry> + <entry> + <key>Workflow Model</key> + </entry> + <entry> + <key>The Sales Project can only be filled when a company has been specified</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index a4c956a47885f4d1a8c17b2e4c016cc676c2df32..f62aa2329c256caefa04592d5baee0d201e9aae6 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -8187,6 +8187,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Send email</key> + <value>E-Mail losschicken</value> </entry> <entry> <key>Activites</key> @@ -8264,6 +8265,10 @@ Bitte Datumseingabe prüfen</value> <key>Contactreport</key> <value>Kontaktbericht</value> </entry> + <entry> + <key>The Sales Project can only be filled when a company has been specified</key> + <value>Das Vertriebsprojekt kann nur ausgefüllt werden, wenn eine Firma angegeben ist</value> + </entry> <entry> <key>Appointment planned</key> <value>Termin vereinbart</value> @@ -8578,6 +8583,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Zip</key> + <value>PLZ</value> </entry> <entry> <key>type</key> @@ -8734,67 +8740,69 @@ Bitte Datumseingabe prüfen</value> <value>gültig ab (in </value> </entry> <entry> - <key>workflow notification</key> + <key>No new recipients found that can be added to the bulk mail.</key> + <value>Keine neuen Empfänger, die zur Serienmail hinzugefügt werden können, gefunden.</value> </entry> <entry> - <key>Permission received</key> - <value>erhaltene Berechtigung</value> + <key>Add Recipients</key> + <value>Empfänger hinzufügen</value> </entry> <entry> - <key>leadimport notification</key> + <key>Add Participants</key> + <value>Teilnehmer hinzufügen</value> </entry> <entry> - <key>granted permission</key> - <value>vergebene Berechtigung</value> + <key>Download letter and create Activity</key> + <value>Brief herunterladen und Aktivität erstellen</value> </entry> <entry> - <key>bulk mail sent</key> + <key>and open Report</key> + <value>und Report öffnen</value> </entry> <entry> - <key>download ready</key> + <key>export</key> </entry> <entry> - <key>Receive new Department Permission</key> - <value>Neue Abteilungs-Berechtigung erhalten</value> + <key>export using the selected template</key> + <value>Mit der ausgewählten Vorlage Exportieren</value> </entry> <entry> - <key>Receive new User Permission</key> - <value>Neue Benutzer-Berechtigung erhalten</value> + <key>No new recipients found that can be added to the serial letter.</key> + <value>Keine neuen Empfänger, die zum Serienbrief werden können, gefunden.</value> </entry> <entry> - <key>export</key> + <key>send mail</key> + <value>E-Mail losschicken</value> </entry> <entry> - <key>No new recipients found that can be added to the serial letter.</key> - <value>Keine neuen Empfänger, die zum Serienbrief werden können, gefunden.</value> + <key>Receive new Department Permission</key> </entry> <entry> - <key>No new recipients found that can be added to the bulk mail.</key> - <value>Keine neuen Empfänger, die zur Serienmail hinzugefügt werden können, gefunden.</value> + <key>Receive new User Permission</key> </entry> <entry> - <key>export using the selected template</key> - <value>Mit der ausgewählten Vorlage Exportieren</value> + <key>workflow notification</key> </entry> <entry> - <key>send mail</key> - <value>E-Mail losschicken</value> + <key>Permission received</key> </entry> <entry> - <key>Download letter and create Activity</key> - <value>Brief herunterladen und Aktivität erstellen</value> + <key>leadimport notification</key> </entry> <entry> - <key>Add Participants</key> - <value>Teilnehmer hinzufügen</value> + <key>granted permission</key> </entry> <entry> - <key>and open Report</key> - <value>und Report öffnen</value> + <key>bulk mail sent</key> </entry> <entry> - <key>Add Recipients</key> - <value>Empfänger hinzufügen</value> + <key>download ready</key> + </entry> + <entry> + <key>Total in euros</key> + </entry> + <entry> + <key>Workflow Model</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index f795919fd82d323b6293b5b6ada7effe00920d07..dd32b2a7b3caf16d762271d43e41d228628bf79d 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -6873,55 +6873,73 @@ <key>Settings</key> </entry> <entry> - <key>workflow notification</key> + <key>No new recipients found that can be added to the bulk mail.</key> </entry> <entry> - <key>Permission received</key> + <key>Add Recipients</key> </entry> <entry> - <key>leadimport notification</key> + <key>Add Participants</key> </entry> <entry> - <key>granted permission</key> + <key>Download letter and create Activity</key> </entry> <entry> - <key>bulk mail sent</key> + <key>and open Report</key> </entry> <entry> - <key>download ready</key> + <key>export</key> </entry> <entry> - <key>No new recipients found that can be added to the bulk mail.</key> + <key>export using the selected template</key> </entry> <entry> - <key>Add Recipients</key> + <key>No new recipients found that can be added to the serial letter.</key> </entry> <entry> - <key>Add Participants</key> + <key>send mail</key> </entry> <entry> - <key>Download letter and create Activity</key> + <key>Receive new Department Permission</key> </entry> <entry> - <key>and open Report</key> + <key>Receive new User Permission</key> </entry> <entry> - <key>export</key> + <key>and open modeler</key> </entry> <entry> - <key>export using the selected template</key> + <key>Create model</key> </entry> <entry> - <key>No new recipients found that can be added to the serial letter.</key> + <key>Edit workflow</key> </entry> <entry> - <key>send mail</key> + <key>workflow notification</key> </entry> <entry> - <key>Receive new Department Permission</key> + <key>Permission received</key> </entry> <entry> - <key>Receive new User Permission</key> + <key>leadimport notification</key> + </entry> + <entry> + <key>granted permission</key> + </entry> + <entry> + <key>bulk mail sent</key> + </entry> + <entry> + <key>download ready</key> + </entry> + <entry> + <key>Total in euros</key> + </entry> + <entry> + <key>Workflow Model</key> + </entry> + <entry> + <key>The Sales Project can only be filled when a company has been specified</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/neonContext/Product/Product.aod b/neonContext/Product/Product.aod index 455bfd342154a96988ccb39462c28d9f9ddee768..7d36aaa10f0f067db17fc1a209b7905efb611917 100644 --- a/neonContext/Product/Product.aod +++ b/neonContext/Product/Product.aod @@ -8,7 +8,7 @@ <filterView>ProductFilter_view</filterView> <editView>ProductEdit_view</editView> <previewView>ProductPreview_view</previewView> - <lookupView>ProductFilter_view</lookupView> + <lookupView>ProductLookup_view</lookupView> <entity>Product_entity</entity> <references> <neonViewReference> @@ -27,5 +27,9 @@ <name>5580ead4-2257-4cdb-a3ac-5e7067c4c1ab</name> <view>ProductPreview_view</view> </neonViewReference> + <neonViewReference> + <name>ec872778-87d1-4070-a3da-3808da326119</name> + <view>ProductLookup_view</view> + </neonViewReference> </references> </neonContext> diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod index 23c9de063b24cd94a46c4d2e998832ff9c752798..727a644d89918b72ba8e573978d45cf9f7118157 100644 --- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod +++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod @@ -27,6 +27,7 @@ <organizerField>ORGANIZER</organizerField> <ownerField>OWNER</ownerField> <categoriesField>CATEGORIES</categoriesField> + <recurrenceIdField>RECURRENCEID</recurrenceIdField> <favoriteActionGroup1>PartStatActionGroup</favoriteActionGroup1> <favoriteActionGroup2>seriesActionGroup</favoriteActionGroup2> <entityField>#ENTITY</entityField> diff --git a/neonView/ProductLookup_view/ProductLookup_view.aod b/neonView/ProductLookup_view/ProductLookup_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..e038ed3765c689f36212619cc246abf2196bd6f9 --- /dev/null +++ b/neonView/ProductLookup_view/ProductLookup_view.aod @@ -0,0 +1,52 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>ProductLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/neonView/ProductLookup_view/documentation.adoc</documentation> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <tableViewTemplate> + <name>table</name> + <titleField>PRODUCTNAME</titleField> + <subtitleField>PRODUCTCODE</subtitleField> + <entityField>#ENTITY</entityField> + <linkedColumns> + <element>PRODUCTNAME</element> + </linkedColumns> + <columns> + <neonTableColumn> + <name>6d4cafea-bc73-4df1-949e-1aba224780ed</name> + <entityField>#IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>ef5fa8f0-7a72-4201-ad2e-44496490d2b2</name> + <entityField>PRODUCTCODE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>35834ce8-cd8b-452f-b558-484d2a3a8f02</name> + <entityField>PRODUCTNAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>f125dbe5-3f46-46dc-b037-4765b115997f</name> + <entityField>GROUPCODEID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>40b14795-afcb-4ae5-b5df-cd667a5b8219</name> + <entityField>STATUS</entityField> + </neonTableColumn> + <neonTableColumn> + <name>86fce471-6d2e-4066-9bdb-2ed04f940f7d</name> + <entityField>CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>2a2e74e4-dc45-4133-92d6-f2797fc3dcd7</name> + <entityField>UNIT</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/ProductLookup_view/documentation.adoc b/neonView/ProductLookup_view/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..38d4dc8ee1b0f1fd3d772287075d7adb212b09df --- /dev/null +++ b/neonView/ProductLookup_view/documentation.adoc @@ -0,0 +1,3 @@ +== ProductLookup_view + +Needed, because using the normal filterview as the lookup would result in the tileTemplate being used as the lookup. \ No newline at end of file diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index f64477390ffc247d5e6fd9768f2840dae133c1e1..81a5208ba9200da0a4296046c55485446b2f78a5 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -155,7 +155,7 @@ AttributeFilterExtensionMaker.getFilterValues = function(pFilter) var attrType = name.type; if (attrType == $AttributeTypes.VOID.toString()) attrType = $AttributeTypes.BOOLEAN.toString(); - var res = AttributeUtil.getPossibleListValues(attributeId, attrType); + var res = AttributeUtil.getPossibleListValues(attributeId, attrType, true); if (res == null) res = []; return res; diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 40eed67b874f583649eda1b1369df0ea870e9921..9fd2230221263fd1de7423ef86b50dd8fbdfe473 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -148,7 +148,7 @@ AttributeUtil.getPossibleListValues = function (pAttributeId, pAttributeType, pI { var attributeId = pAttributeId; var attrType = pAttributeType.trim(); - var onlyActives = (pIncludeInactives == undefined ? false : pIncludeInactives); + var onlyActives = !pIncludeInactives; if (attrType == $AttributeTypes.COMBO.toString()) { var valuesSelect = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_NAME") diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 83ad817a1b9487b240e512d26d127e7f2b6a74e8..59bed651862041d08e72db34ad3256cab51d8acc 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -593,20 +593,6 @@ ContextUtils.getSelectMap = function() $KeywordRegistry.taskStatus$customerChecks(), ]) .setCreationDateField("TASK.START_DATE") - ,"SupportTicket": ContextSelector.create("TICKET", "TICKETID", "TASK.SUBJECT") - .setJoinExpression("left join TASK on TASK.TASKID = TICKET.TASK_ID left join TASKLINK on TASKLINK.TASK_ID = TASK.TASKID") - .setCondition(newWhere("TICKET.TICKETTYPE", $KeywordRegistry.ticketType$supportTicket())) - .setContactIdField("TASKLINK.OBJECT_ROWID") - .setStateField("TASK.STATUS") - .setActiveStates([ - $KeywordRegistry.taskStatus$new(), - $KeywordRegistry.taskStatus$unassigned(), - $KeywordRegistry.taskStatus$assigned(), - $KeywordRegistry.taskStatus$inProgress(), - $KeywordRegistry.taskStatus$waiting(), - $KeywordRegistry.taskStatus$customerChecks(), - ]) - .setCreationDateField("TASK.START_DATE") ,"BulkMail" : ContextSelector.create("BULKMAIL", "BULKMAILID", "NAME") ,"SerialLetter" : ContextSelector.create("SERIALLETTER", "SERIALLETTERID", "TITLE") ,"Leadimport": ContextSelector.create("LEADIMPORT", "LEADIMPORTID") diff --git a/process/DocxTemplater_lib/process.js b/process/DocxTemplater_lib/process.js index e9cd6c748fa3f8ba17d1c5c13795ee659ab3459d..8306c0421438b2cdc1e8f38940979b25bb0ba41e 100644 --- a/process/DocxTemplater_lib/process.js +++ b/process/DocxTemplater_lib/process.js @@ -85,7 +85,7 @@ function _getAutoNewLineModule() if (value == null) value = options.nullGetter(part); else - value = value.replace(/(\r\n)|(\n)|(\r)/g, "\n<w:br/>"); + value = value.replace(/(\r\n)|(\n)|(\r)/g, "</w:t></w:r><w:r><w:br/></w:r><w:r><w:t xml:space=\"preserve\">"); return { value: value diff --git a/process/Email_lib/process.js b/process/Email_lib/process.js index a8645c40d5c729a1546a105048f48020e1369931..94a4ab8ba9daa08c1021663cb1d6435a661e94c7 100644 --- a/process/Email_lib/process.js +++ b/process/Email_lib/process.js @@ -28,6 +28,7 @@ function EmailWritingUtils () {} * @param {Array} [pAttachments] attachments in a array (base64 encoded). * @param {String} pSubject an optional subject. * @param {String} [pEmailFilename] filename of the email. + * @param {Placeholder[]} [pAdditionalPlaceholders] additional placeholders * @return {Array} the eml document as array with [filename, base64] */ EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments, pSubject, pEmailFilename, pAdditionalPlaceholders) @@ -169,6 +170,7 @@ Email.fromRFC = function (pBase64RFC) * @param {String} [pTemplateId] UUID of the explicit template which shall used. (optional) * @param {String} [pContactId] (required) * @param {String} [pBindata] (required) + * @param {Placeholder[]} [pAdditionalPlaceholders] additional placeholders * @return {Email} a new Email object */ Email.fromTemplate = function (pTemplateId, pContactId, pBindata, pAdditionalPlaceholders) diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index 9e6137b3ebbc088ec3a49495ac7a8b138cd5c7bd..d24d07552af5498326763f378b323980a41d0737 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -1,6 +1,7 @@ import("system.tools"); import("system.logging"); import("Sql_lib"); +import("system.datetime"); /** * object for filtering records @@ -117,6 +118,8 @@ JditoFilter.prototype.checkRecord = function (pRow) case "TIMEFRAME_EQUAL": case "TIMEFRAME_COMING": case "TIMEFRAME_PAST": + var [start, end] = datetime.resolveRelativeDateExpression(pFilterValue); + return pRowValue >= start && pRowValue <= end; } } } @@ -211,16 +214,163 @@ JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter, pCustomC */ JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColumnOrFnMap) { - var condition = newWhere(); + var filterTranslator = new FilterSqlTranslator(pFilter) + .table(pTable, pTableAlias); - var ignoreCase = JditoFilterUtils.isUserIgnoreCase(); - - if (!pFilter) + if (pColumnOrFnMap) + { + for (let fieldName in pColumnOrFnMap) + { + var columnOrFn = pColumnOrFnMap[fieldName]; + if (typeof columnOrFn === "function") + filterTranslator.addSpecialFieldConditionFn(fieldName, columnOrFn); + else + filterTranslator.addSqlFieldMapping(fieldName, columnOrFn); + } + } + return filterTranslator.getSqlCondition(); +} + +/** + * @return {boolean} the selectionIgnoreCase property of the current user, defaults to true + */ +JditoFilterUtils.isUserIgnoreCase = function () +{ + var user = tools.getCurrentUser(); + var ignoreCase = user ? user[tools.PARAMS][tools.SELECTION_IGNORECASE] : ""; + return ignoreCase == "" || /true/i.test(ignoreCase); +} + +/** + * Object for translating a filter object to a sql condition. + * + * @param {Object} pFilter the filter object that should be used + * @param {String} pTable the database table to build the condition for + */ +function FilterSqlTranslator (pFilter, pTable) +{ + this._filter = null; + this.filter(pFilter); + this._table = pTable; + this._tableAlias = null; + this._dbAlias = null; + this._sqlFieldMappings = {}; + this._fieldConditionFns = {}; + this._ignoreCase = JditoFilterUtils.isUserIgnoreCase(); +} + +/** + * Sets the filter of the object + * + * @param {Object} pFilter the filter object that should be used + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.filter = function (pFilter) +{ + if (pFilter) + { + if (typeof pFilter !== "object") + throw new TypeError("FilterSqlTranslator: Wrong type for the filter, expected 'object' but got '" + (typeof pFilter) + "'"); + this._filter = pFilter.filter || pFilter; + } + return this; +} + +/** + * Sets the filter of the object + * + * @param {String} pFilter the filter object that should be used as JSON string + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.filterJSON = function (pFilter) +{ + return this.filter(JSON.parse(pFilter)); +} + +/** + * Sets the table of the object + * + * @param {String} pTable the database table to build the condition for + * @param {String} [pTableAlias] the alias of the table + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.table = function (pTable, pTableAlias) +{ + this._table = pTable; + if (pTableAlias) + this._tableAlias = pTableAlias; + return this; +} + +/** + * Adds a special database field mapping for the given field that will be used for the sql condition + * + * @param {String} pFieldName the field name + * @param {String|String[]} pDBField the database field ("TABLE.COLUMN" or ["TABLE", "COLUMN", "alias"]) + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.addSqlFieldMapping = function (pFieldName, pDBField) +{ + this._sqlFieldMappings[pFieldName] = pDBField; + return this; +} + +/** + * Adds a special function for building the condition for the given field. The function must return a sql condition (SqlBuilder or String) + * + * @param {String} pFieldName the field name + * @param {Function} pConditionFn a function that generates the condition + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.addSpecialFieldConditionFn = function (pFieldName, pConditionFn) +{ + this._fieldConditionFns[pFieldName] = pConditionFn; + return this; +} + +/** + * Sets the database alias + * + * @param {String} pAlias the alias to be used + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.dbAlias = function (pAlias) +{ + this._dbAlias = pAlias; + return this; +} + +/** + * Changes whether the condition should be case-insensitive for text + * + * @param {boolean} [pIgnoreCase=true] if it should be case-insensitive + * @return {FilterSqlTranslator} current object + */ +FilterSqlTranslator.prototype.ignoreCase = function (pIgnoreCase) +{ + //"", 0 , false -> false, everything else is considered true + this._ignoreCase = pIgnoreCase != false; + return this; +} + +/** + * Builds the sql condition from the filter + * + * @return {SqlBuilder} the sql condition + */ +FilterSqlTranslator.prototype.getSqlCondition = function () +{ + var condition = new SqlBuilder(this._dbAlias).where(); + if (!this._filter) return condition; - if (!pColumnOrFnMap) - pColumnOrFnMap = {}; - _addCondition.call(condition, pFilter, pFilter.operator); + var table = this._table; + var tableAlias = this._tableAlias; + var ignoreCase = this._ignoreCase; + var sqlFieldMappings = this._sqlFieldMappings; + var fieldConditionFns = this._fieldConditionFns; + + _addCondition.call(condition, this._filter, this._filter.operator); return condition; @@ -230,47 +380,61 @@ JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColu { if (pFilter.type == "row") { - if (pFilter.name in pColumnOrFnMap) + var sqlField, condition; + var filterValue = (pFilter.key || pFilter.value); + if (pFilter.name in fieldConditionFns) { - pFilter.name = pColumnOrFnMap[pFilter.name]; + var conditionFn = fieldConditionFns[pFilter.name]; + + condition = conditionFn.call(null, filterValue, pFilter.operator); + if (pOperator == "AND") + this.andIfSet(condition); + else if (pOperator == "OR") + this.orIfSet(condition); + + return; + } + + if (pFilter.name in sqlFieldMappings) + { + sqlField = sqlFieldMappings[sqlField]; //possibility to explicitly set the value to null/false so that the field is ignored - if (pFilter.name === null || pFilter.name === false) + if (sqlField === null || sqlField === false) return; } - else if (pTable && pTableAlias) - pFilter.name = [pTable, pFilter.name, pTableAlias]; - else if (pTable) - pFilter.name = pTable + "." + pFilter.name; - - pFilter.value = (pFilter.key || pFilter.value); + else if (table && tableAlias) + sqlField = [table, pFilter.name, tableAlias]; + else if (table) + sqlField = table + "." + pFilter.name; - var condition; - if (typeof(pFilter.name) === "function") + var generatedCondition = _getCondition(filterValue, pFilter.operator, sqlField); + if (generatedCondition instanceof SqlBuilder || typeof generatedCondition === "string") { - condition = pFilter.name.call(null, pFilter.value, pFilter.operator); if (pOperator == "AND") - this.andIfSet(condition); + this.andIfSet(generatedCondition); else if (pOperator == "OR") - this.orIfSet(condition); + this.orIfSet(generatedCondition); } else { - let isStringType, filterValue; - [condition, filterValue, isStringType] = _getCondition(pFilter.value, pFilter.operator); + var isStringType = pFilter.contenttype != "NUMBER" + && pFilter.contenttype != "DATE" + && pFilter.contenttype != "BOOLEAN"; + [condition, filterValue] = generatedCondition; if (isStringType && ignoreCase) condition = condition.replace("#", "UPPER(#)").replace("?", "UPPER(?)"); - + if (pOperator == "AND") - this.andIfSet(pFilter.name, filterValue, condition); + this.andIfSet(sqlField, filterValue, condition); else if (pOperator == "OR") - this.orIfSet(pFilter.name, filterValue, condition); + this.orIfSet(sqlField, filterValue, condition); } } else if (pFilter.type == "group") { - let subCondition = newWhere(); - let operator = pFilter.operator; + var subCondition = newWhere(); + var operator = pFilter.operator; pFilter.childs.forEach(function (cond) { _addCondition.call(subCondition, cond, operator); @@ -282,45 +446,41 @@ JditoFilterUtils.getSqlCondition = function (pFilter, pTable, pTableAlias, pColu } } - //returns [condition, value with wildcards, is a string type] depending on the operator - function _getCondition (pValue, pOperator) + //returns [condition, value with wildcards] depending on the operator + function _getCondition (pValue, pOperator, pField) { switch (pOperator) { case "CONTAINS": - return [SqlBuilder.LIKE(), "%" + pValue + "%", true]; + return [SqlBuilder.LIKE(), "%" + pValue + "%"]; case "CONTAINSNOT": - return [SqlBuilder.NOT_LIKE(), "%" + pValue + "%", true]; + return [SqlBuilder.NOT_LIKE(), "%" + pValue + "%"]; case "STARTSWITH": - return [SqlBuilder.LIKE(), pValue + "%", true]; + return [SqlBuilder.LIKE(), pValue + "%"]; case "ENDSWITH": - return [SqlBuilder.LIKE(), "%" + pValue, true]; + return [SqlBuilder.LIKE(), "%" + pValue]; case "EQUAL": - return [SqlBuilder.EQUAL(), pValue, true]; + return [SqlBuilder.EQUAL(), pValue]; case "NOT_EQUAL": - return [SqlBuilder.NOT_EQUAL(), pValue, true]; + return [SqlBuilder.NOT_EQUAL(), pValue]; case "LESS": - return [SqlBuilder.LESS(), pValue, false]; + return [SqlBuilder.LESS(), pValue]; case "LESS_OR_EQUAL": - return [SqlBuilder.LESS_OR_EQUAL(), pValue, false]; + return [SqlBuilder.LESS_OR_EQUAL(), pValue]; case "GREATER": - return [SqlBuilder.GREATER(), pValue, false]; + return [SqlBuilder.GREATER(), pValue]; case "GREATER_OR_EQUAL": - return [SqlBuilder.GREATER_OR_EQUAL(), pValue, false]; + return [SqlBuilder.GREATER_OR_EQUAL(), pValue]; case "ISNULL": - return ["# is null", pValue, false]; + return pField + " is null"; case "ISNOTNULL": - return ["# is not null", pValue, false]; + return pField + " is not null"; + case "TIMEFRAME_EQUAL": + case "TIMEFRAME_COMING": + case "TIMEFRAME_PAST": + var [start, end] = datetime.resolveRelativeDateExpression(pValue); + return newWhere(pField, start, SqlBuilder.GREATER_OR_EQUAL()) + .and(pField, end, SqlBuilder.LESS_OR_EQUAL()); } } -} - -/** - * @return {boolean} the selectionIgnoreCase property of the current user, defaults to true - */ -JditoFilterUtils.isUserIgnoreCase = function () -{ - var user = tools.getCurrentUser(); - var ignoreCase = user ? user[tools.PARAMS][tools.SELECTION_IGNORECASE] : ""; - return ignoreCase == "" || /true/i.test(ignoreCase); -} +} \ No newline at end of file