diff --git a/.liquibase/Data_alias/basic/2020.2.0/Classification/changelog.xml b/.liquibase/Data_alias/basic/2020.2.0/Classification/changelog.xml index 1fe0427646f1ce44ab3c7f9285b3591a0cfd7c16..be74e7af353709892982cd0f24e7bcde5a848e36 100644 --- a/.liquibase/Data_alias/basic/2020.2.0/Classification/changelog.xml +++ b/.liquibase/Data_alias/basic/2020.2.0/Classification/changelog.xml @@ -2,5 +2,8 @@ <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 relativeToChangelogFile="true" file="update_keywordClassificationOrganisation.xml"/> - <include relativeToChangelogFile="true" file="add_classificationGrading.xml"/> + <include relativeToChangelogFile="true" file="create_classificationGrading.xml"/> + <include relativeToChangelogFile="true" file="create_classificationGroup.xml"/> + <include relativeToChangelogFile="true" file="create_classificationStorage.xml"/> + <include relativeToChangelogFile="true" file="rename_ClassificationTypeToObjectType.xml"/> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGrading.xml b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGrading.xml new file mode 100644 index 0000000000000000000000000000000000000000..ee954ba55816f5683a8ac27b33cd4c6f162ddc61 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGrading.xml @@ -0,0 +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="094af11f-c308-42bf-a78e-99d55883900a"> + <createTable tableName="CLASSIFICATIONGRADING"> + <column name="CLASSIFICATIONGRADINGID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_CLASSIFICATIONGRADING_CLASSIFICATIONGRADINGID"/> + </column> + <column name="GRADING" type="NVARCHAR(1)"/> + <column name="MAXGRADEFORSCORE" type="INTEGER"/> + <column name="CLASSIFICATIONGROUP_ID" type="CHAR(36)"/> + </createTable> + <createIndex indexName="IDX_CLASSIFICATION_GRADING" tableName="CLASSIFICATIONGRADING"> + <column name="CLASSIFICATIONGROUP_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGroup.xml b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGroup.xml new file mode 100644 index 0000000000000000000000000000000000000000..2072d1c79a09263757dcef3fa2c51710ca3a5945 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationGroup.xml @@ -0,0 +1,20 @@ +<?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="7d965008-8161-45bd-bb5c-a2d4e623324d"> + <createTable tableName="CLASSIFICATIONGROUP"> + <column name="CLASSIFICATIONGROUPID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_CLASSIFICATIONGROUP_CLASSIFICATIONGROUPID"/> + </column> + <column name="TITLE" type="VARCHAR(36)"/> + <column name="SORTING" type="SMALLINT"/> + </createTable> + <addColumn tableName="CLASSIFICATIONTYPE"> + <column name="CLASSIFICATIONGROUP_ID" type="CHAR(36)"/> + </addColumn> + <dropColumn tableName="CLASSIFICATIONTYPE" columnName="CLASSIFICATIONGROUP"/> + <createIndex indexName="IDX_CLASSIFICATION_TYPE" tableName="CLASSIFICATIONTYPE"> + <column name="CLASSIFICATIONGROUP_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationStorage.xml b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationStorage.xml new file mode 100644 index 0000000000000000000000000000000000000000..33fe07cd6a5a9a104081b1ca0d4452450a6edd6c --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.0/Classification/create_classificationStorage.xml @@ -0,0 +1,22 @@ +<?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="7d965008-8161-45bd-bb5c-a2d4e623324d"> + <createTable tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_CLASSIFICATIONSTORAGE_CLASSIFICATIONSTORAGEID"/> + </column> + <column name="CLASSIFICATIONVALUE" type="VARCHAR(20)"/> + <column name="OBJECT_ROWID" type="CHAR(36)"/> + <column name="OBJECT_TYPE" type="VARCHAR(63)"/> + </createTable> + <addUniqueConstraint + columnNames="OBJECT_ROWID, OBJECT_TYPE" + constraintName="const_classificationstrage" + tableName="CLASSIFICATIONSTORAGE" + validate="true"/> + <createIndex indexName="IDX_CLASSIFICATION_STORAGE" tableName="CLASSIFICATIONSTORAGE"> + <column name="OBJECT_ROWID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.0/Classification/rename_ClassificationTypeToObjectType.xml b/.liquibase/Data_alias/basic/2020.2.0/Classification/rename_ClassificationTypeToObjectType.xml new file mode 100644 index 0000000000000000000000000000000000000000..d0e3475b1c899ac66901c9745179180f9cdf6cef --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.0/Classification/rename_ClassificationTypeToObjectType.xml @@ -0,0 +1,11 @@ +<?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="b693a8ff-3267-4813-9a89-e17120e1346a"> + <renameColumn + columnDataType="VARCHAR(63)" + newColumnName="OBJECT_TYPE" + oldColumnName="CLASSIFICATIONTYPE" + tableName="CLASSIFICATIONTYPE"/> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/changelog.xml b/.liquibase/Data_alias/basic/_demoData/changelog.xml index f1d01f3712f99836e9d61885132ae52d6423b4a1..22fe51ac97046f0037d1bbe244ce1d5b2751ca28 100644 --- a/.liquibase/Data_alias/basic/_demoData/changelog.xml +++ b/.liquibase/Data_alias/basic/_demoData/changelog.xml @@ -52,4 +52,6 @@ <include file="generatedData/documenttemplateplaceofuse.xml" relativeToChangelogFile="true"/> <include file="generatedData/visitplan.xml" relativeToChangelogFile="true"/> <include file="generatedData/classificationgrading.xml" relativeToChangelogFile="true"/> + <include file="generatedData/classificationgroup.xml" relativeToChangelogFile="true"/> + <include file="generatedData/classificationstorage.xml" relativeToChangelogFile="true"/> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml index be1edc314be39595844d14e1b85e91bf8e0f86d5..a083c7e957cff30050be004082832eeaf65e4886 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classification.xml @@ -4,60 +4,471 @@ <delete tableName="classification"/> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="028181fe-5687-4904-b7cb-c4a1befe7eed"/> - <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> - <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="CLASSIFICATIONSCORE_ID" value="90361317-d80e-4466-a45b-3021bf02e2f9"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="13771cd8-3694-4a44-8793-cd0fc3fb4b53"/> - <column name="CLASSIFICATIONSCORE_ID" value="636af750-fcd3-4480-bfe7-ead42bf85280"/> - <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="CLASSIFICATIONSCORE_ID" value="35d8ae15-8993-4ab2-99f6-e57c2ebf0bb3"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="13985a1a-1660-4a85-86c1-612bd62df8d7"/> - <column name="CLASSIFICATIONSCORE_ID" value="ed6a38f7-97bf-4e3d-a34c-4a1e636fa6a7"/> - <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="166f3484-53a8-4c44-aad7-ef47a268ae71"/> - <column name="CLASSIFICATIONSCORE_ID" value="61fe4e4f-e64d-4195-87b5-658f36ce1736"/> - <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="421cdeeb-a5d6-4612-b47b-49db966de27f"/> - <column name="CLASSIFICATIONSCORE_ID" value="7e569319-5885-452e-9331-a507f3365236"/> - <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="440d25a3-39c1-412e-90c7-c0a6366f0794"/> - <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> - <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="CLASSIFICATIONSCORE_ID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="81d75e31-673b-426e-827f-c505b386ce0e"/> - <column name="CLASSIFICATIONSCORE_ID" value="ec51d975-bda6-415e-9b91-32f0e981ecd8"/> - <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="c7b46dff-956a-47e1-8a7f-7d3f56c81da1"/> - <column name="CLASSIFICATIONSCORE_ID" value="b1c55bcd-16c6-4b2f-8f73-e16397b40e93"/> - <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1743c169-ef67-42b9-81af-99fc753d7a64"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0a7ec07b-d429-4b0a-aebb-0a194e76428e"/> + <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b6d36680-909d-4470-9bf4-0a8b8a7807b1"/> + <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> <column name="OBJECT_TYPE" value="Salesproject"/> </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="93f4dfdf-b07b-4dc5-91a3-7db80cc314fc"/> + <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1180d429-0453-4b67-a805-7dc101e6ead2"/> + <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b38101bf-3d36-4509-9637-a428beb9999a"/> + <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c28d914e-ad91-4202-9fe6-0d0d41e53836"/> + <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0969044c-33eb-41eb-9aec-fa3795d8c49f"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6e187a9b-2e57-4da2-8132-9f576a28d6f7"/> + <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="4d67d40e-4656-46b0-b5a0-9c299c1ef9d3"/> + <column name="CLASSIFICATIONSCORE_ID" value="f1534026-34cc-4898-8711-41cbe4accb60"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="58642867-f8fc-45c1-a926-06306498a9c8"/> + <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6bbe5de0-4302-4467-9f3b-a0292485b214"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1ec41224-e21c-4adf-8b7c-235eca10801c"/> + <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="4164397b-a129-4e37-9586-af6e6133befd"/> + <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6111dd76-4786-43bf-b6ce-74b36415ad03"/> + <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9cc46dc2-f40a-4c3b-aabd-c77858f5d770"/> + <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="045365c1-9561-4e4f-ad9b-9ce6ef0d0279"/> + <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="cd531b73-1390-498e-a83d-a50c964c24ea"/> + <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="8f44739a-7103-4dd3-8f1f-25afbae07cd0"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="02f2f9a4-0d34-472a-b8b2-461fad057c4e"/> + <column name="CLASSIFICATIONSCORE_ID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3f410195-bca5-41ac-a819-a8d29506f9e5"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="77a11bd3-a521-4701-b564-7f8b07000f0b"/> + <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9aa3789c-bc9d-43cf-a121-2575090c2dc4"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="fbc32ea9-8350-463a-846e-71a30851f15a"/> + <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3e9b7598-39a6-4ebc-aa49-8ec3a20f9eb4"/> + <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="80beaf88-415d-49da-ae0b-c4d6528747a2"/> + <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="053f18d1-8fe2-4a79-978d-03cc37454ffe"/> + <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="208c8324-e7f9-41b9-93ec-ac7e7f7262b7"/> + <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9f85a0f0-6576-4077-99fc-953d8ab53352"/> + <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c4dc8a62-edc1-4af6-b7c6-f91f6ab700c5"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="122116f6-e858-4605-af18-6c8b21da6455"/> + <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3da8549a-762a-438f-9878-271c52943fd2"/> + <column name="CLASSIFICATIONSCORE_ID" value="7e569319-5885-452e-9331-a507f3365236"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="28405f79-a635-4ede-8b11-11284c5e7190"/> + <column name="CLASSIFICATIONSCORE_ID" value="636af750-fcd3-4480-bfe7-ead42bf85280"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="905cae71-9e4b-48f2-9de3-fcb8607d01a1"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d33aeb65-0c28-48a1-9a81-105faa882a4c"/> + <column name="CLASSIFICATIONSCORE_ID" value="c9d4e28d-7935-42c5-9da5-5ce0b51b425a"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="da44d022-9ea6-4fcb-9491-c5b7236c642f"/> + <column name="CLASSIFICATIONSCORE_ID" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3672003e-0624-4a51-bb15-48f93bbd4342"/> + <column name="CLASSIFICATIONSCORE_ID" value="39547328-ccc6-47ad-b31a-d6a149081c44"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a027bccd-c894-443e-bdde-f32ee0b88285"/> + <column name="CLASSIFICATIONSCORE_ID" value="1f924d71-c500-4cdd-bc52-4718a6b88e45"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="e10a5ecb-b0f3-4b08-a380-de1a04fbc87f"/> + <column name="CLASSIFICATIONSCORE_ID" value="a177b155-4665-4af1-b50e-0b59e8ac2752"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b7d6e658-96b3-4664-b7db-139b73add7e3"/> + <column name="CLASSIFICATIONSCORE_ID" value="e70a23b4-f2a9-4438-8ba6-742c6c17e5cc"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6382b5d7-06a3-4584-8314-e00abdd8e8e9"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="94a83ec1-8e6d-4c1b-90a0-54eeac52277b"/> + <column name="CLASSIFICATIONSCORE_ID" value="ba5d70c3-e77a-45ff-828b-7b3e0a61eec2"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6017fea2-7e31-4220-86f4-cf72123af805"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ec3dbf-f8f6-4418-8dc2-0062510c1a28"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="dfaec9c0-d9fa-4362-a955-341addc3a76d"/> + <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a28dd724-cd0b-48f4-afd5-840ddc611026"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="25bfa0ce-433a-4bb9-992c-df66b02a76da"/> + <column name="CLASSIFICATIONSCORE_ID" value="6bd19de4-691b-4e78-84dc-cf6f41231978"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b06e62a0-53b0-4046-b024-b00293e632f2"/> + <column name="CLASSIFICATIONSCORE_ID" value="b3792b08-4b07-4ed2-9bee-4673182b7349"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="58671a19-6522-46e6-93ba-8f62bf580048"/> + <column name="CLASSIFICATIONSCORE_ID" value="3c9ceefa-5c98-4629-9c6d-d46b6cad8b78"/> + <column name="CLASSIFICATIONTYPE_ID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="2a9353ec-78c3-42ae-836f-dcec0a4cfaad"/> + <column name="CLASSIFICATIONSCORE_ID" value="3fe9f04b-6a85-4a73-a138-ca90b6d8e61c"/> + <column name="CLASSIFICATIONTYPE_ID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="2abfbf1f-8f2c-4713-a61b-13ba593d1055"/> + <column name="CLASSIFICATIONSCORE_ID" value="2fdb4d7e-24d5-4eb1-a130-3a0aaeebd8db"/> + <column name="CLASSIFICATIONTYPE_ID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a3e22367-c33f-4f2c-ad0c-8f9eb6ab572a"/> + <column name="CLASSIFICATIONSCORE_ID" value="3dc5fc76-d2d5-4911-891a-3aacc5a9c925"/> + <column name="CLASSIFICATIONTYPE_ID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="297cc1a1-1813-4f30-ad70-b452292c3371"/> + <column name="CLASSIFICATIONSCORE_ID" value="3e1e21b0-c10d-4bcb-882c-ac1b239b9cb2"/> + <column name="CLASSIFICATIONTYPE_ID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0521dd6e-49ca-4a3a-9906-12e8359e3db9"/> + <column name="CLASSIFICATIONSCORE_ID" value="2f4fddd2-be83-4190-99c3-6de8a7e328c5"/> + <column name="CLASSIFICATIONTYPE_ID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0fcfa75f-9844-49d7-a088-56e570be4cd0"/> + <column name="CLASSIFICATIONSCORE_ID" value="f1534026-34cc-4898-8711-41cbe4accb60"/> + <column name="CLASSIFICATIONTYPE_ID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9452b219-64af-4c27-8f35-0ba81210abf3"/> + <column name="CLASSIFICATIONSCORE_ID" value="d5beb18f-c53e-438d-8b0b-7699aa20fba7"/> + <column name="CLASSIFICATIONTYPE_ID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="4e96b522-209b-48ca-b04d-f328416aacdd"/> + <column name="CLASSIFICATIONSCORE_ID" value="a0c55ee2-0d15-4779-a5a6-93774d5bc393"/> + <column name="CLASSIFICATIONTYPE_ID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f47c0ea2-3a6d-4d7b-8f89-bb2d9799fd0e"/> + <column name="CLASSIFICATIONSCORE_ID" value="bf6b1757-11da-49a9-a02c-8340139968ee"/> + <column name="CLASSIFICATIONTYPE_ID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="e90c4086-db5f-4099-ba26-67799eb25e44"/> + <column name="CLASSIFICATIONSCORE_ID" value="c328cb9e-5cef-4052-a3c1-98e1898eeb63"/> + <column name="CLASSIFICATIONTYPE_ID" value="f4d3791e-1717-4473-987b-0cd751805387"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="35b79ed1-7002-44f1-af61-891cdf863ac9"/> @@ -189,7 +600,7 @@ <insert tableName="classification"> <column name="CLASSIFICATIONID" value="f7f7022f-57a2-4944-a9d3-e092e1be43b3"/> - <column name="CLASSIFICATIONSCORE_ID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/> + <column name="CLASSIFICATIONSCORE_ID" value="2119cb62-b57c-40be-aff8-ace8e40378d4"/> <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/> <column name="OBJECT_TYPE" value="Organisation"/> @@ -203,7 +614,7 @@ </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="008ac315-31ab-4320-bf29-6681708eda88"/> - <column name="CLASSIFICATIONSCORE_ID" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/> <column name="OBJECT_TYPE" value="Organisation"/> @@ -233,7 +644,7 @@ <column name="CLASSIFICATIONID" value="5f0cdce4-81b4-4c05-9011-4d76bdc21b65"/> <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> - <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> + <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/> <column name="OBJECT_TYPE" value="Organisation"/> </insert> <insert tableName="classification"> @@ -442,6 +853,70 @@ <column name="OBJECT_TYPE" value="Organisation"/> </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3cc8a674-7934-4b8f-b200-bd19ddcb4689"/> + <column name="CLASSIFICATIONSCORE_ID" value="618bf0d1-18d4-4a96-900c-80a5a616da9b"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="57a2e5d3-0aa9-48a1-89f8-2db8967ffed6"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a3081728-77d9-4c92-96b5-6fa21659a33f"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="342c7c38-ca79-4e46-9677-5da074ceb60b"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a3e2d764-bd51-4f06-a0a0-0e5f4b37d41b"/> + <column name="CLASSIFICATIONSCORE_ID" value="a60aaf2d-88aa-4c72-9606-0eb3ac9493cf"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f7504a50-2748-434a-ae08-cff2f4f8035a"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="cea579d4-35fa-4376-b791-8b91cbe05d3a"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c6fe5361-777d-4047-99dd-e8495ebb8c73"/> + <column name="CLASSIFICATIONSCORE_ID" value="5be4d454-1f3e-4a3d-b8a4-3eb49ce1bc35"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="aa291e2a-646d-4b73-b826-85bd357fd5c0"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> <column name="CLASSIFICATIONID" value="d70e23a7-bc3c-43ae-8b2c-44d85fc7a2d3"/> <column name="CLASSIFICATIONSCORE_ID" value="3eb18b76-f51e-4ad2-9080-74b4a603667b"/> @@ -458,9 +933,9 @@ </insert> <insert tableName="classification"> <column name="CLASSIFICATIONID" value="a63b089c-f856-4513-8691-57422e400dc4"/> - <column name="CLASSIFICATIONSCORE_ID" value="b41e180f-db8c-44c3-9fbb-179ab58d5852"/> - <column name="CLASSIFICATIONTYPE_ID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/> - <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/> <column name="OBJECT_TYPE" value="Organisation"/> </insert> <insert tableName="classification"> @@ -506,7 +981,836 @@ <column name="OBJECT_TYPE" value="Organisation"/> </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a5ce852a-83e6-4b0e-b3fa-310ea99c7e87"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="fc10831b-65ea-4ecb-b52e-98c6f54b2a9a"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="058a9ef7-adca-4278-840a-720665fa3cd3"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f11eeaac-645d-416e-a50d-259f6ead0c30"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="cb7df4e3-e15c-4e65-92f4-ecd5cda09f95"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="dccab9b9-5306-4325-896f-99646139b5ba"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="03bb8bbb-0644-4376-99fb-b21fc2807f14"/> + <column name="CLASSIFICATIONSCORE_ID" value="29134094-66f2-4331-9f14-fc6a27ab111e"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="5ce0c1b0-c040-462e-bd19-c8e109449b8e"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a728d498-dd75-4b96-a5e5-cbdccd10b0b2"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b923621f-e48e-4a77-9f67-f63f5a0b0fbb"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9c457191-c7c7-4a4f-bb91-8a48d27add92"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d6d64590-9299-4348-8e21-0cac9f84f51a"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="da16c6c0-3bdf-4af5-b810-e85babe83e69"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9fcf5382-f070-4698-a011-748c8584733b"/> + <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a0120295-79d1-429f-aef4-b9cce9c92de2"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="8c792586-2d2d-41a3-933b-6f679dd4011e"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="7d131f29-0430-44ad-b4ec-7044a67e0e3b"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="5c1b2604-da33-4268-8400-5fb4b23c436b"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f25ef82a-6466-49c7-aa35-1f4d750218ca"/> + <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="fd0fea13-2322-4664-bf15-8026a91bebd2"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a7b9862c-6a25-4bbc-92ec-7bfb25cdb6c0"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="eba1581a-1235-4139-a33a-687513436777"/> + <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c61069c1-fe41-4585-9d75-cef27d534ceb"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="81deaf11-9f63-4cc8-b83c-8711f5e3f734"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a7d7fd5c-624c-4d64-929b-2b0eb146ab9d"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d3b5f0ad-1a66-4eee-a40d-36daf317d510"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="597de33c-b223-4d55-bed7-aeb1d161fc2e"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6d3464fa-eadd-4afd-b4e1-3031726770d5"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1ac75382-0af9-42d2-8fe5-22295a93e8b3"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="522566b0-6eca-40bb-977c-c9a26f730890"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="caaa6b4e-34e3-4337-b65f-abe761a8c24c"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="e4d83d98-fcf8-402e-9d81-17f374654df7"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="62b9dacc-7d6f-4e05-81f8-6a425e369489"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="77941d3d-e876-44b3-b824-3a075d7dd398"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a03201a8-0858-45e0-a0e2-9b70f5a35061"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3056c0b4-5e4b-4580-ab89-75ac80920415"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="00c30050-c850-46b0-8e1d-d70f889655e3"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="4444b22f-02d1-4e8f-9073-82d61eba18e0"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f5e4ebc2-e0a7-4ab0-b7e1-dc43c2913135"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b6ed4614-ea3d-4b2d-a9c3-44d146724b71"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="e7a7da18-7283-4d75-ab9f-06f62972293c"/> + <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d6443737-e23b-42fa-81a8-d5e86636fb79"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="94a737b7-d4f6-4a13-b06b-05a225d9225b"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="319dec0d-5ed5-40f8-8c98-b912582a8817"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="22429945-9c82-493c-a0a6-ff31ecaa4b56"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a898ffe5-96ec-4eef-9e0c-6a2622fc74fc"/> + <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0f77577a-7a45-4c3f-be39-35ec364e8242"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="cf051c11-5f8e-401c-8e57-aabc55496eb8"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d18a0dec-5161-488d-958d-3d9ea88f32f3"/> + <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0359b7b8-7526-4165-8b01-e90403b206eb"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="91cd0603-ac46-420b-81d4-0e1c72a916bf"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="62cc115a-f80e-4a0f-899e-8060e9ed575e"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="31a22039-ac7d-4bb9-9f36-d1f91c6c4052"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="289cea03-2c65-4557-b0f9-0dd29b26cecc"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="e27e1f4b-bca2-4928-9652-950762723531"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="95f0f027-799b-48fd-b1b5-49f70760a008"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="52c6bccc-1055-48dc-ad5d-311e80a12d2a"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="5dd419ab-971f-42fd-9bb6-2247a6b4175b"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="beb7f0ec-3331-49f9-b440-0099f62205c0"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="359fddf8-baae-497f-8ad6-d2cab1438473"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="2314864a-76f7-4fe9-a01f-c5be6ba0669e"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="203fb867-ee2f-4c01-8fb5-8e49da32be64"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a51c9515-80bc-4902-8d9b-115179ab40df"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9260ed8f-3b4a-4c5a-9077-0fe59105883b"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1a093afe-066e-4bbc-b6c9-b913ab8dfdc0"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="bc61586b-a63e-4d69-82ad-62b02ea2b28a"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="051e9f0f-fc99-4046-90b9-6cfb403844e9"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="32b4f1b2-6cc2-4702-a9e0-0a75184c5698"/> + <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f5dd89ed-f6ae-4676-aa83-906211570a5b"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b3846b7c-e70a-43fe-9637-ea74ed1fe0d7"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f60f8fe8-5ee9-43b4-a0cd-50b0f354bf79"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="83d2e0f5-b7f5-4305-8da7-69e27da99f98"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="717dfb2c-2e2c-46c8-b72c-8d81e61b94c1"/> + <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="0423c091-7e65-43eb-9ab3-f5a847350845"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d9cce938-36d9-4a80-9bc2-9e37e6ed64ce"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9ec7bc3e-dc4c-40e4-bcee-bd59ab949d42"/> + <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="14f31249-544a-46f9-a2e4-c3bdcf3e49a3"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="3807eda2-aa0f-4caf-b3ab-0ff341eb887b"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="36b1ed8c-a4d4-4203-aa20-52cf10f8d8a0"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d74914a9-05f6-4433-9121-87755b724fb4"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a69faa8d-afaa-40cd-97e6-65a851f5dde1"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c179fe12-4bb0-495d-99d0-0159d0466bc0"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="ed2a3c86-814d-4212-a2da-5875d0d3c598"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="688cdc0d-d1a7-46ad-95c3-7503c054ee2c"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="77f0f0bd-eaca-44ef-abfa-9156eac6eb7e"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9f5975c7-3df6-4fa4-87e4-7a1c0dbd967c"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="d03c3aa2-c97f-4bd4-b92f-7e09d594cdb8"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6800e69f-33b1-44ae-b3a2-d7362bfddbf8"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="218f1794-26e6-45f2-a26d-98185a49bf4f"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="f738a3d6-b4e0-491e-8d51-a83ce039fbc8"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a653069f-927d-425a-8956-aeb15a2c4bc8"/> + <column name="CLASSIFICATIONSCORE_ID" value="4d868dc5-747a-4f22-9134-638198d3084a"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a8c2d3c5-423f-45fa-a8db-cd2ab59c5045"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="fa07168c-6aa5-4b9d-935e-6ece6e1c5bdb"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="14148c9a-8afb-42ad-a4c5-d1102241e9f8"/> + <column name="CLASSIFICATIONSCORE_ID" value="22581c2e-bb4d-43cb-b6b3-80244425e209"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="2b0e75e0-0a36-4397-988d-2ae60e5d2658"/> + <column name="CLASSIFICATIONSCORE_ID" value="5564a330-8c13-424f-a24b-5f97185a9036"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b828dfb2-943a-4f81-b950-fbe4db3d19b7"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="5a5e780b-01af-4a0f-bcd6-74c0c588210a"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="1dc7de76-80d9-4240-97ae-cab241301a68"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="a76fcafb-a84d-4505-8c68-1b221482e292"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9ea74c40-7732-4d0a-a489-f50bc60caf8b"/> + <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="2c644b64-0404-4eac-841c-d8579ff25fa6"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="ac0944d2-b184-45f5-983a-6c873aadfb8e"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="5bb5e000-5bba-4895-a5b8-374c2c5bd3a4"/> + <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b49911f5-fccc-4dba-a46a-32fd56cf8b8f"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="65f45f0d-ab41-4a83-b5f7-795dc21d0fd4"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="13f634ef-70ba-440b-91af-e6324cdb20bb"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="555a280b-a2e4-4eb5-bbec-87bca3987395"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="c58b5e5a-b4fe-4dec-a93d-79848e564b87"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="85b54389-50f9-4bd3-838b-d3941bda2cc1"/> + <column name="CLASSIFICATIONSCORE_ID" value="92708239-fd7f-4699-8aaa-b6290fedaac0"/> + <column name="CLASSIFICATIONTYPE_ID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="9286af56-8942-4e30-8ed3-cde6bf2e77d5"/> + <column name="CLASSIFICATIONSCORE_ID" value="47ca5b54-423f-4bf1-a4d6-a0c55a2488e6"/> + <column name="CLASSIFICATIONTYPE_ID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="445ccf23-4d44-489a-8054-b46194e104e7"/> + <column name="CLASSIFICATIONSCORE_ID" value="b7b763d4-994d-483d-9a1c-6eb85786d61a"/> + <column name="CLASSIFICATIONTYPE_ID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="46065d3f-a811-430d-8fa2-e048aee894c7"/> + <column name="CLASSIFICATIONSCORE_ID" value="4c8cfcec-f183-4d82-8a59-ae743ec772b4"/> + <column name="CLASSIFICATIONTYPE_ID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="7884869d-85ab-458f-9078-e2dd7234be91"/> + <column name="CLASSIFICATIONSCORE_ID" value="4285d598-06c0-435d-bb5e-28dec5f31521"/> + <column name="CLASSIFICATIONTYPE_ID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="6a6dfe13-6fcc-4ae9-b12b-dced4a55daef"/> + <column name="CLASSIFICATIONSCORE_ID" value="893720f9-3780-4868-af0c-cbef5a564024"/> + <column name="CLASSIFICATIONTYPE_ID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="740bcc4c-b621-458e-874e-034cf70965bc"/> + <column name="CLASSIFICATIONSCORE_ID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> + <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="20092371-2723-45e2-aae0-3a697b1265fc"/> + <column name="CLASSIFICATIONSCORE_ID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> + <column name="CLASSIFICATIONTYPE_ID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="classification"> + <column name="CLASSIFICATIONID" value="b1cb759c-f17c-4277-bee1-e50717d8934a"/> + <column name="CLASSIFICATIONSCORE_ID" value="4ed5e22f-222a-4a51-83d3-597fa035d2df"/> + <column name="CLASSIFICATIONTYPE_ID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml index 43958c7b369419319b20c4e13c0023d936972a11..ad66344241be6327710070a36e7995a24f0e6ca2 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgrading.xml @@ -6,122 +6,122 @@ <column name="CLASSIFICATIONGRADINGID" value="68dd4d91-d472-477d-935c-70cbe5606c51"/> <column name="GRADING" value="A"/> <column name="MAXGRADEFORSCORE" valueNumeric="100"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="9437f368-bea1-47f4-b76e-d6a391af438d"/> <column name="GRADING" value="B"/> <column name="MAXGRADEFORSCORE" valueNumeric="75"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="348a2af8-ec01-4a58-8ff6-5e3a837852a4"/> <column name="GRADING" value="C"/> <column name="MAXGRADEFORSCORE" valueNumeric="50"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="9a823957-0ca9-4972-95df-d894d4e4fc25"/> <column name="GRADING" value="D"/> <column name="MAXGRADEFORSCORE" valueNumeric="25"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="4ef54a02-ddf8-4238-b9fd-f5a043032b7d"/> <column name="GRADING" value="A"/> <column name="MAXGRADEFORSCORE" valueNumeric="100"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="748ef65c-af41-42d8-8ac4-480bc9390591"/> <column name="GRADING" value="B"/> <column name="MAXGRADEFORSCORE" valueNumeric="75"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="8e73dd97-4428-4316-882d-7b2af56330ef"/> <column name="GRADING" value="C"/> <column name="MAXGRADEFORSCORE" valueNumeric="50"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="76af9750-a714-4a35-bfd2-6eab3c316e5b"/> <column name="GRADING" value="D"/> <column name="MAXGRADEFORSCORE" valueNumeric="25"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="c021718f-b6ca-4d4d-87f7-e4450d103fe2"/> <column name="GRADING" value="A"/> <column name="MAXGRADEFORSCORE" valueNumeric="100"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="3. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="8f702450-83fc-4085-92c2-ac09f96dcd6b"/> <column name="GRADING" value="B"/> <column name="MAXGRADEFORSCORE" valueNumeric="75"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="3. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="14da2618-88be-425c-92c3-68d8584aa0bf"/> <column name="GRADING" value="C"/> <column name="MAXGRADEFORSCORE" valueNumeric="50"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="3. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="5e5c3ffe-3fa6-41e3-8659-1b03e7e1a1cd"/> <column name="GRADING" value="D"/> <column name="MAXGRADEFORSCORE" valueNumeric="25"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="3. Classification"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="5e46e499-00c2-4cc2-9f4c-952290484623"/> <column name="GRADING" value="D"/> <column name="MAXGRADEFORSCORE" valueNumeric="25"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Target group"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="8c982beb-bc53-4bcf-8b76-7ee919bbf653"/> <column name="GRADING" value="C"/> <column name="MAXGRADEFORSCORE" valueNumeric="50"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Target group"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="a89c81df-9380-41b1-9c7c-52d3a1862ac7"/> <column name="GRADING" value="B"/> <column name="MAXGRADEFORSCORE" valueNumeric="75"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Target group"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="7afd58ad-6eae-4d6b-8d4b-2ca4bdd177e6"/> <column name="GRADING" value="A"/> <column name="MAXGRADEFORSCORE" valueNumeric="100"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="1. Target group"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="8408ca43-a4dc-4767-8127-e52c08276815"/> <column name="GRADING" value="D"/> <column name="MAXGRADEFORSCORE" valueNumeric="25"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Customer value"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="03aa277d-873b-4913-9051-d44aa4f77627"/> <column name="GRADING" value="C"/> <column name="MAXGRADEFORSCORE" valueNumeric="50"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Customer value"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="29226adf-eb79-4696-a4b8-7be73c9488e6"/> <column name="GRADING" value="B"/> <column name="MAXGRADEFORSCORE" valueNumeric="75"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Customer value"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> </insert> <insert tableName="classificationgrading"> <column name="CLASSIFICATIONGRADINGID" value="f8e1c5a4-b0d0-4b73-9700-11ff916adfdd"/> <column name="GRADING" value="A"/> <column name="MAXGRADEFORSCORE" valueNumeric="100"/> - <column name="CLASSIFICATIONTYPE_GROUP" value="2. Customer value"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> </insert> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgroup.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgroup.xml new file mode 100644 index 0000000000000000000000000000000000000000..73d7c48a4deb1285b92370ea121501217089f2d6 --- /dev/null +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationgroup.xml @@ -0,0 +1,31 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="autogenerated" id="c71ca120-5de6-4a44-a795-1127653c25df"> + <delete tableName="classificationgroup"/> + <insert tableName="classificationgroup"> + <column name="CLASSIFICATIONGROUPID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> + <column name="TITLE" value="1. Classification"/> + <column name="SORTING" valueNumeric="1"/> + </insert> + <insert tableName="classificationgroup"> + <column name="CLASSIFICATIONGROUPID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> + <column name="TITLE" value="2. Classification"/> + <column name="SORTING" valueNumeric="2"/> + </insert> + <insert tableName="classificationgroup"> + <column name="CLASSIFICATIONGROUPID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="TITLE" value="3. Classification"/> + <column name="SORTING" valueNumeric="3"/> + </insert> + <insert tableName="classificationgroup"> + <column name="CLASSIFICATIONGROUPID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> + <column name="TITLE" value="1. Target group"/> + <column name="SORTING" valueNumeric="1"/> + </insert> + <insert tableName="classificationgroup"> + <column name="CLASSIFICATIONGROUPID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="TITLE" value="2. Customer value"/> + <column name="SORTING" valueNumeric="2"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml index 7e855d0f6b7fb44938100cba91fdc499d0f74874..69ade9eca1dc3ec054bef0ae3121314a9c234b2e 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationscore.xml @@ -646,35 +646,35 @@ <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORE" valueNumeric="0.00"/> <column name="SORT" valueNumeric="10"/> - <column name="TITLE" value="0-49 T€"/> + <column name="TITLE" value="0-49 D€"/> </insert> <insert tableName="CLASSIFICATIONSCORE"> <column name="CLASSIFICATIONSCOREID" value="07f21cf8-c369-45f3-88fe-40ca586ed11b"/> <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORE" valueNumeric="10.00"/> <column name="SORT" valueNumeric="30"/> - <column name="TITLE" value="100-199 T€"/> + <column name="TITLE" value="100-199 D€"/> </insert> <insert tableName="CLASSIFICATIONSCORE"> <column name="CLASSIFICATIONSCOREID" value="733323d6-ff3d-4ccb-b179-ad1fea05dfe8"/> <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORE" valueNumeric="15.00"/> <column name="SORT" valueNumeric="40"/> - <column name="TITLE" value="200-349 T€"/> + <column name="TITLE" value="200-349 D€"/> </insert> <insert tableName="CLASSIFICATIONSCORE"> <column name="CLASSIFICATIONSCOREID" value="839cd672-5981-4207-8a82-caddd00107e4"/> <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORE" valueNumeric="5.00"/> <column name="SORT" valueNumeric="20"/> - <column name="TITLE" value="50-99 T€"/> + <column name="TITLE" value="50-99 D€"/> </insert> <insert tableName="CLASSIFICATIONSCORE"> <column name="CLASSIFICATIONSCOREID" value="f02cfd28-5a09-42ca-b805-07b7b38e3363"/> <column name="CLASSIFICATIONTYPE_ID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORE" valueNumeric="20.00"/> <column name="SORT" valueNumeric="50"/> - <column name="TITLE" value="ab 350 T€"/> + <column name="TITLE" value="ab 350 D€"/> </insert> <insert tableName="CLASSIFICATIONSCORE"> <column name="CLASSIFICATIONSCOREID" value="4982ab85-0961-4d85-8fee-2b55887add96"/> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml new file mode 100644 index 0000000000000000000000000000000000000000..aa7419f65cf9a1919623b21eee01fbba8a344b18 --- /dev/null +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationstorage.xml @@ -0,0 +1,162 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="autogenerated" id="c71ca120-5de6-4a44-a795-1127653c25df"> + <delete tableName="CLASSIFICATIONSTORAGE"/> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="166e729d-45c6-4dab-bff2-940d2b618f6b"/> + <column name="CLASSIFICATIONVALUE" value="BBB"/> + <column name="OBJECT_ROWID" value="438537db-0dc6-4aed-b1d1-813011baf88c"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="1aafcbf6-6feb-4916-a4fd-58c138eb8f8f"/> + <column name="CLASSIFICATIONVALUE" value="DBA"/> + <column name="OBJECT_ROWID" value="6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="04b4ac80-a316-437a-b113-e7de14e181a8"/> + <column name="CLASSIFICATIONVALUE" value="ABB"/> + <column name="OBJECT_ROWID" value="7e2680f6-a438-45aa-956a-787363f85923"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="42cc772e-53c6-4849-be29-ebb4e18ab860"/> + <column name="CLASSIFICATIONVALUE" value="ACB"/> + <column name="OBJECT_ROWID" value="d422ad81-717f-42b0-bd64-fc892744aac7"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="7f7dfe1d-cb98-44c8-8106-858d991d2b06"/> + <column name="CLASSIFICATIONVALUE" value="ACA"/> + <column name="OBJECT_ROWID" value="ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="471aafd5-a348-453f-8b2a-64bb365fd0ee"/> + <column name="CLASSIFICATIONVALUE" value="ACB"/> + <column name="OBJECT_ROWID" value="ef7f4726-4476-4f59-97c2-706dc1e0046f"/> + <column name="OBJECT_TYPE" value="Salesproject"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="63dd36bb-74b8-487b-811f-521438ef9491"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="019651a4-503e-4e06-aefd-e7e631bf3144"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="4ce62df5-f0ea-4593-a152-6704c61d7cef"/> + <column name="CLASSIFICATIONVALUE" value="BD"/> + <column name="OBJECT_ROWID" value="2c14fb05-d48e-4eeb-8a7f-85d423746848"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="821c7eed-7bee-4879-97ec-44d2014a192b"/> + <column name="CLASSIFICATIONVALUE" value="BD"/> + <column name="OBJECT_ROWID" value="33ae2997-7bff-4c3c-8038-2fa6781dbe9d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="7e59d485-01a8-4e43-9655-ba751d5983a4"/> + <column name="CLASSIFICATIONVALUE" value="BC"/> + <column name="OBJECT_ROWID" value="449080f6-b714-4189-a261-37439d0d4010"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="c64c9f31-a108-4df9-b515-6e523b1341c1"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="5a52304e-65e8-40ed-9aca-a76af6c8c3a0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="1251e4b0-195d-4556-a10e-7942f1b0e337"/> + <column name="CLASSIFICATIONVALUE" value="AB"/> + <column name="OBJECT_ROWID" value="6efb4fab-64f9-4d8e-aa6f-a158d13fc273"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="3893da8a-f357-46e0-a0b9-65aa58b0dfa6"/> + <column name="CLASSIFICATIONVALUE" value="BC"/> + <column name="OBJECT_ROWID" value="777246d5-7a73-4c52-af14-84df66128e5d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="84a92c36-88df-4c06-a36a-650ed92d4d0a"/> + <column name="CLASSIFICATIONVALUE" value="BD"/> + <column name="OBJECT_ROWID" value="8707accf-b1fd-4bde-97b1-ab44b75f66f9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="f451479f-97dc-4570-b342-c8d53f04b493"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="8eecb5e5-40d9-4bf0-a152-1ca456795563"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="80eac6e6-f237-455e-96fd-8484722a79d4"/> + <column name="CLASSIFICATIONVALUE" value="BD"/> + <column name="OBJECT_ROWID" value="a3fd3c23-12e1-4820-b76e-2cd70103d94d"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="25a1b340-538d-4c4f-8b1e-25126286cd53"/> + <column name="CLASSIFICATIONVALUE" value="BB"/> + <column name="OBJECT_ROWID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="bbc19466-8d76-4f35-be56-8458f677d4a9"/> + <column name="CLASSIFICATIONVALUE" value="BC"/> + <column name="OBJECT_ROWID" value="cabf6192-f9c3-4bd4-9366-ad2b073bdfa3"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="0adb8953-1685-45cf-bcf7-c2c2098aa215"/> + <column name="CLASSIFICATIONVALUE" value="BB"/> + <column name="OBJECT_ROWID" value="dec94545-2487-46d5-978d-26ee0fcf0f5f"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="b4d2847f-0548-4cc8-b002-7723b5fc9184"/> + <column name="CLASSIFICATIONVALUE" value="BD"/> + <column name="OBJECT_ROWID" value="e450d126-eab8-4517-ba7c-8b6804f8c859"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="e2142492-eeab-482d-a37e-b1c8fe7b2545"/> + <column name="CLASSIFICATIONVALUE" value="BC"/> + <column name="OBJECT_ROWID" value="e6da1393-f46b-41a4-826b-2c7d22de2246"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="7a4762f5-90a3-4b6c-8a5d-93125381c18a"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="e83c45e0-c30b-436e-b445-00a8b58383b0"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="fc665249-9efc-4d90-839d-cdffb4c3f407"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="7b2eb62a-b686-4eaf-bde1-2e1dd1028f65"/> + <column name="CLASSIFICATIONVALUE" value="BC"/> + <column name="OBJECT_ROWID" value="fb07cb0e-c391-4503-9c47-a39ec7388f4f"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="2ab913d3-e1a8-4fe2-904b-77b02f6be689"/> + <column name="CLASSIFICATIONVALUE" value="BB"/> + <column name="OBJECT_ROWID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + <insert tableName="CLASSIFICATIONSTORAGE"> + <column name="CLASSIFICATIONSTORAGEID" value="8db70618-5840-4d4b-90e2-66e1919fc6c1"/> + <column name="CLASSIFICATIONVALUE" value="AC"/> + <column name="OBJECT_ROWID" value="fd082db5-be43-4219-a705-588f9c06e59b"/> + <column name="OBJECT_TYPE" value="Organisation"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml index 9b58008a928bf4c00f64805ed0bdf678df616d1c..f758025469ed08e0bb3af66cdd6e83883584e8fd 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/classificationtype.xml @@ -3,126 +3,125 @@ <changeSet author="autogenerated" id="de26cf22-891e-4584-97cd-fe877ebc790c"> <delete tableName="classificationtype"/> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="2. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="2031525e-6ca3-46b4-91d4-7f90cd31a630"/> <column name="SCORETYPE" value="ScoreCustomizing"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="2. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="2a702a31-9907-4f1b-abfd-3342640f1c9e"/> <column name="SCORETYPE" value="ScoreStandard"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="3. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="31c169aa-ba5b-4f9d-9dd3-b0d0e8d1b632"/> <column name="SCORETYPE" value="ScoreDepartment"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="1. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="382b311e-b2b2-49da-b6e1-339afae92657"/> <column name="SCORETYPE" value="ScoreUsers"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="1. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="4977ba88-074c-4fe5-b04a-97c9a5eae982"/> <column name="SCORETYPE" value="ScoreBranch"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="1. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="00cc7b8f-d99e-46bf-90c3-74e05b5af685"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="54128957-c80b-4b5a-ad1b-cfce665dfb10"/> <column name="SCORETYPE" value="ScoreBased"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="3. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="57604bc1-d99f-4d61-b28d-55218a72045b"/> <column name="SCORETYPE" value="ScoreDecisionPhase"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="3. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="8c1e8f81-145f-4efe-936f-3f4147f4d59a"/> <column name="SCORETYPE" value="ScoreCloud"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="3. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="a43189fc-b712-45ed-9398-58d6e15760ca"/> <column name="SCORETYPE" value="ScorePosition"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="2. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="b2126d9d-8d18-46d4-a48f-1a03fc456ddd"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="d8091374-f3fd-41dc-8468-91469618c6fc"/> <column name="SCORETYPE" value="ScoreBudget"/> </insert> <insert tableName="classificationtype"> - <column name="CLASSIFICATIONGROUP" value="3. Classification"/> - <column name="CLASSIFICATIONTYPE" value="SALESPROJ"/> + <column name="CLASSIFICATIONGROUP_ID" value="c1305d16-320e-44f8-95f9-e4cff05d3cfb"/> + <column name="OBJECT_TYPE" value="Salesproject"/> <column name="CLASSIFICATIONTYPEID" value="f4d3791e-1717-4473-987b-0cd751805387"/> <column name="SCORETYPE" value="ScoreProjectStart"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="1. Target group"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="4b72857e-863d-4254-accf-25281bb7bb64"/> <column name="SCORETYPE" value="Number of employees"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="1. Target group"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="970b251c-ca6e-43f4-9162-ebc5d1142a8b"/> <column name="SCORETYPE" value="Product preference"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="1. Target group"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="037a9de1-fa6d-4895-9db3-82f7769682ae"/> <column name="SCORETYPE" value="Headquarters"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="1. Target group"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="e3b0a84f-d2a7-4d7c-b734-82ab4b262e84"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="d67397c5-5e05-433b-b61d-12807906aa5a"/> <column name="SCORETYPE" value="Industry"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="2. Customer value"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="80c6ec8b-eb54-4d25-a4f5-0adaf4cdc84e"/> <column name="SCORETYPE" value="Creditworthiness"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="2. Customer value"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="4d878689-15c0-46cc-acc8-3c524463db5c"/> <column name="SCORETYPE" value="Loyalty"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="2. Customer value"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="f581dcb9-db6f-4a82-995c-695d0a7393d3"/> <column name="SCORETYPE" value="Purchasing potential p. a."/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="2. Customer value"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="be76dab1-c6ab-4b1e-8322-8b052ccda4d9"/> <column name="SCORETYPE" value="Current supply share"/> </insert> <insert tableName="CLASSIFICATIONTYPE"> - <column name="CLASSIFICATIONGROUP" value="2. Customer value"/> - <column name="CLASSIFICATIONTYPE" value="ORGANISATION"/> + <column name="CLASSIFICATIONGROUP_ID" value="fb1349b6-6dc1-44b7-b7ea-03d5483e7fac"/> + <column name="OBJECT_TYPE" value="Organisation"/> <column name="CLASSIFICATIONTYPEID" value="95396ee7-f0e2-41b4-995e-bac5749709ec"/> <column name="SCORETYPE" value="Business development"/> </insert> - </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/visitplan.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/visitplan.xml index 88789b1a243c8597ec5c325cb989656794d7d19f..5c29131bd08edb8207a519d7a5ca4b9d2f930ee4 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/visitplan.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/visitplan.xml @@ -1,7 +1,7 @@ <?xml version="1.1" encoding="UTF-8" standalone="no"?> <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> <changeSet author="autogenerated" id="62ad16a9-7312-4dda-9e4b-460673b9af82"> - + <!-- <insert tableName="VISITPLANEMPLOYEEWEEK"> <column name="VISITPLANEMPLOYEEWEEKID" value="821b3424-b6d2-41f8-b0b2-6a7c2c050214"/> <column name="VISITPLAN_YEAR" valueNumeric="2020"/> @@ -96,6 +96,6 @@ <column name="CONTACT_ID" value="fc465f2f-803b-4a1f-b79d-7b466d7ecff4"/> <column name="INFO" value="Kontrolltermin"/> </insert> - + --> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 34e089b535a8e2450dda8818ee8c04589a2b7271..4bb598459a46fe027558f6c3c5da8c4e3d392366 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -9424,25 +9424,25 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>CLASSIFICATIONTYPE</name> + <name>CLASSIFICATIONGROUP_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="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> </entityFieldDb> <entityFieldDb> - <name>CLASSIFICATIONGROUP</name> + <name>OBJECT_TYPE</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="80" /> + <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -14987,25 +14987,163 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>CLASSIFICATIONTYPE_GROUP</name> + <name>GRADING</name> <dbName></dbName> <primaryKey v="false" /> <columnType v="1" /> + <size v="1" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MAXGRADEFORSCORE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="4" /> + <size v="10" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CLASSIFICATIONGROUP_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>CLASSIFICATIONSTORAGE</name> + <dbName></dbName> + <idColumn>CLASSIFICATIONSTORAGEID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>OBJECT_ROWID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CLASSIFICATIONVALUE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="20" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> <index v="false" /> <documentation></documentation> <title></title> <description></description> </entityFieldDb> <entityFieldDb> - <name>GRADING</name> + <name>CLASSIFICATIONSTORAGEID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>OBJECT_TYPE</name> <dbName></dbName> <primaryKey v="false" /> + <columnType v="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>CLASSIFICATIONGROUP</name> + <dbName></dbName> + <idColumn>CLASSIFICATIONGROUPID</idColumn> + <idGeneratorType v="0" /> + <idGeneratorInterval v="1" /> + <documentation></documentation> + <title></title> + <description></description> + <auditSyncConfig> + <name>auditSyncConfig</name> + <auditMode v="0" /> + <syncActive v="false" /> + <syncComplete v="true" /> + <syncDirection v="1" /> + <syncIds></syncIds> + </auditSyncConfig> + <entityFields> + <entityFieldDb> + <name>CLASSIFICATIONGROUPID</name> + <dbName></dbName> + <primaryKey v="true" /> <columnType v="1" /> - <size v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SORTING</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="5" /> + <size v="5" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -15015,11 +15153,11 @@ <description></description> </entityFieldDb> <entityFieldDb> - <name>MAXGRADEFORSCORE</name> + <name>TITLE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> + <columnType v="12" /> + <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> diff --git a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod index b974517f78bbbf2b848fb0c49c12dec9b0e0c9b4..2ceed05d81c4a6e9e8c9a6c4e5376d38b040f6eb 100644 --- a/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod +++ b/entity/ClassificationAdmin_entity/ClassificationAdmin_entity.aod @@ -5,14 +5,16 @@ <documentation>%aditoprj%/entity/ClassificationAdmin_entity/documentation.adoc</documentation> <icon>VAADIN:LIST_OL</icon> <title>Classification</title> + <grantUpdateProcess>%aditoprj%/entity/ClassificationAdmin_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/ClassificationAdmin_entity/grantDeleteProcess.js</grantDeleteProcess> - <contentTitleProcess>%aditoprj%/entity/ClassificationAdmin_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:LIST_OL</iconId> <titlePlural>Classifications</titlePlural> - <recordContainer>db</recordContainer> + <recordContainer>jDito</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <targetContextField>TARGET_CONTEXT</targetContextField> + <targetIdField>TARGET_ID</targetIdField> </entityProvider> <entityParameter> <name>ClassificationType_param</name> @@ -34,128 +36,130 @@ </entityParameter> <entityField> <name>CLASSIFICATIONTYPEID</name> + <title>Indicator</title> + <mandatory v="true" /> + <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>CLASSIFICATIONGROUP</name> - <title>Group</title> + <title>Classification</title> <contentType>TEXT</contentType> <groupable v="true" /> - <mandatoryProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/mandatoryProcess.js</mandatoryProcess> + <mandatory v="true" /> <dropDownProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js</dropDownProcess> <textInputAllowed v="true" /> - <titleProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js</displayValueProcess> - <onValidation>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js</onValidation> </entityField> - <entityConsumer> - <name>KeywordClassificationTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityConsumer> - <name>ClassificationScores</name> - <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>ClassificationScore_entity</entityName> - <fieldName>ClassificationScores</fieldName> - </dependency> + <entityParameter> + <name>group_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityField> + <name>CLASSIFICATION_PARENT_ID</name> + </entityField> + <entityField> + <name>UID</name> + <linkedContextProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/uid/linkedContextProcess.js</linkedContextProcess> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + <title>Place Of Use</title> + <mandatory v="true" /> + <dropDownProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/dropDownProcess.js</dropDownProcess> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js</valueProcess> + <onValueChange>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/object_type/onValueChange.js</onValueChange> + <onValueChangeTypes> + <element>MASK</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>TARGET_CONTEXT</name> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/target_context/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TARGET_ID</name> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/target_id/valueProcess.js</valueProcess> + </entityField> + <entityActionGroup> + <name>FilterviewActionGroup</name> <children> - <entityParameter> - <name>ClassificationGroup_param</name> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ClassificationTypeId_param</name> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>ClassificationType_param</name> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js</valueProcess> - </entityParameter> + <entityActionField> + <name>UpdateClassification</name> + <title>Recalculate all Classifications</title> + <onActionProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/filterviewactiongroup/children/updateclassification/onActionProcess.js</onActionProcess> + <iconId>VAADIN:AUTOMATION</iconId> + </entityActionField> </children> - </entityConsumer> + </entityActionGroup> <entityField> - <name>CLASSIFICATIONTYPE</name> - <title>Usage</title> - <consumer>KeywordClassificationTypes</consumer> - <groupable v="true" /> + <name>SORTING</name> + <title>Sorting</title> + <contentType>NUMBER</contentType> <mandatory v="true" /> - <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtype/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtype/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js</displayValueProcess> + <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js</valueProcess> </entityField> <entityField> - <name>SCORETYPE</name> - <title>Scoretype</title> + <name>CLASSIFICATIONTYPEIDDISPLAYVALUE</name> + <title>Indicator</title> <mandatory v="true" /> - <displayValueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js</displayValueProcess> + <stateProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>recordCategory</name> + <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/recordcategory/valueProcess.js</valueProcess> </entityField> - <entityConsumer> - <name>ClassificationGradings</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationGrading_entity</entityName> - <fieldName>ClassificationGradings</fieldName> - </dependency> - <children> - <entityParameter> - <name>ClassificationTypeId_param</name> - <valueProcess>%aditoprj%/entity/ClassificationAdmin_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> - </entityConsumer> - <entityParameter> - <name>group_param</name> - <expose v="true" /> - </entityParameter> <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> </entityFields> <recordContainers> - <dbRecordContainer> - <name>db</name> - <alias>Data_alias</alias> - <orderClauseProcess>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> - <linkInformation> - <linkInformation> - <name>2f70bf47-42e3-40a2-b076-0da34cfb80d9</name> - <tableName>CLASSIFICATIONTYPE</tableName> - <primaryKey>CLASSIFICATIONTYPEID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> - </linkInformation> + <jDitoRecordContainer> + <name>jDito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <hasDependentRecords v="false" /> + <onInsert>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js</onDelete> <recordFieldMappings> - <dbRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATION_PARENT_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> <name>CLASSIFICATIONGROUP.value</name> - <recordfield>CLASSIFICATIONTYPE.CLASSIFICATIONGROUP</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>SCORETYPE.value</name> - <recordfield>CLASSIFICATIONTYPE.SCORETYPE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CLASSIFICATIONTYPE.value</name> - <recordfield>CLASSIFICATIONTYPE.CLASSIFICATIONTYPE</recordfield> - </dbRecordFieldMapping> - <dbRecordFieldMapping> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATIONGROUP.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> <name>CLASSIFICATIONTYPEID.value</name> - <recordfield>CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID</recordfield> - </dbRecordFieldMapping> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATIONTYPEID.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>OBJECT_TYPE.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>SORTING.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>recordCategory.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> - </dbRecordContainer> + </jDitoRecordContainer> </recordContainers> </entity> diff --git a/entity/ClassificationAdmin_entity/contentTitleProcess.js b/entity/ClassificationAdmin_entity/contentTitleProcess.js deleted file mode 100644 index 2031cfeaec00a131c455e4152bb6917b74d6e85f..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/contentTitleProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONTYPE.displayValue")) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/documentation.adoc b/entity/ClassificationAdmin_entity/documentation.adoc index f54fafb3971823af90b05751146b05b0840ba92e..390fb4c5dca8e222225334788788753279bc5d4b 100644 --- a/entity/ClassificationAdmin_entity/documentation.adoc +++ b/entity/ClassificationAdmin_entity/documentation.adoc @@ -1,3 +1,75 @@ = ClassificationAdmin_entity -The administrative representation of the classification which is used among other things in the sales project (see also Classification_entity) \ No newline at end of file +Definition: + + The administrative representation of the classification which is used among other things in the sales project and organisation (see also Classification_entity) + The classification can be dynamically configured at runtime. + +Purpose: + + This Entity gives the administrators an easy way to change the classification. + Classifications get stored in the Classification table with their own uid, the ids of the classification type, classification score, object_rowId and object_type. + + This entity displays the classifications (classificationGroup) and indicators (classificationType) grouped with the usage (object_type) in an treetable. + with the usage (object_type) as the first group, followed by the classifications (classificationgroup) of that group and it's indicators. + The grading of the classification can be changed in the preview of an classification. + The possible values of an indicator can be changed when opening the preview of the indicator. + + TreeTable Example: + + USAGE CLASSIFICATION INDICATOR + Organisation + 1. Target Group + Industry + Headquarters + Product preference + 2. Customer value + Salesproject + 1. Classification + 2. Classification + 3. Classification + +Particularities: + + The classification gets updated via the "updateClassifications_serverProcess", which runs periodically, + you can also start it manually using the action of this entity (currently invisible). + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service + +Adding the classification to other modules: + + The Classification is only implemented for Organisation and Salesproject at the moment but can easily be used in other modules aswell by doing the following: + + Add the Consumers "Classifications" and "ClassificationGroups" to the module you want to add the classification functionality + and configure them the same way as in organisation and salesproject. + If you want to also have the classification in the preview and Filterview you also have to add the field "CLASSIFICATIONSTORAGE_ID" + and configure the following things: + -add CLASSIFICATIONSTORAGE at the Linkinformation of the recordContainer (Primary key: CLASSIFICATIONSTORAGEID, UID Table: false, Read only: true) + -add the left join in the fromClauseProcess to CLASSIFICATIONSTORAGE using CLASSIFICATIONSTORAGE.OBJECT_ROWID = TableName.TableUid + -add the recordfieldmapping to the field (CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID) + -add the CLASSIFICATIONSTORAGE_ID to the Filterview and Preview + Add the reference to the ClassificationView to the Mainview Context (see als organsiation and salesproject) + + Extend the Keywordregistry and the classificationTypes in AB_KEYWORD_ENTRY by the new Module you are implementing the classification for. + Also extend the CLASSIFICATIONADMIN_entity.CLASSIFICATIONTYPEPLACEOFUSE DropDownProcess. + Add ClassificationUtils.insertEmptyClassification() with the Uid und vars.get("$sys.currentcontextname") to the onInsert of the Module + and also add the delete conditon to the onDelete (newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", eigeneUid).deleteData();) + !Important: if you are adding or deleting these datasets you always have to also insert/delete the dataset into CLASSIFICATIONSTORAGE entry, + so add the above mentioned delete condition and onInsertFunction to all actions that delete/create those datasets.! + + Now you can either configure your classifications in the client or via liquibase \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js deleted file mode 100644 index 199c2e918d4673239e59167d4b95f64bbe9a3331..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONGROUP")); \ 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 4fb0aeb79a76fae66af37083cc83e38fc26d051e..ebda1413e2f9de5fcc2e42e7d505fe0ac1a1d786 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/displayValueProcess.js @@ -1,5 +1,9 @@ import("system.vars"); -import("system.translate"); +import("Context_lib"); import("system.result"); -result.string(translate.text(vars.get("$field.CLASSIFICATIONGROUP"))); \ No newline at end of file +var groupId = vars.get("$field.CLASSIFICATIONGROUP"); +if(groupId != "" && groupId != undefined) + result.string(ContextUtils.loadContentTitle("ClassificationGroup_entity", groupId)); +else + result.string("") \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js index 6c4ff0ba3d89251bc6d64bbce56aed7d53932d33..917fbdf4fd535892b9a297d66d82bd0e16e21c92 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/dropDownProcess.js @@ -1,13 +1,16 @@ -import("system.logging"); import("Classification_lib"); import("system.neon"); import("system.vars"); -import("system.db"); import("system.result"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +//no Translation since the same logic as in the Keywords applies (Admin User is able to change the title) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { - var classificationType = vars.get("$field.CLASSIFICATIONTYPE") - if (classificationType) - result.object(ClassificationUtils.getAllGroups(classificationType, true)); + var objectType = vars.get("$field.OBJECT_TYPE") + if (objectType) + { + var obj = ClassificationUtils.getAllGroups(objectType); + + result.object(obj); + } } \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/mandatoryProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/mandatoryProcess.js deleted file mode 100644 index 7bbc5aa02d8beaf00c4458e4297646209f00ad91..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/mandatoryProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.neon"); -import("system.result"); -import("system.vars"); - -result.object(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js deleted file mode 100644 index 52077bf9d455c013960c8ec4d139b1fb1be0861b..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/onValidation.js +++ /dev/null @@ -1,28 +0,0 @@ -import("system.neon"); -import("system.translate"); -import("system.result"); -import("system.vars"); -import("Classification_lib"); -import("Entity_lib"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) -{ - var newGroup = vars.get("local.value"); - - // use param if available or current selectionRows - var classificationType = ClassificationUtils.getUsageType("$param.ClassificationType_param", "$sys.selectionRows"); - - if (classificationType) - { - var groups = ClassificationUtils.getAllGroups(classificationType, false) - - if (groups.indexOf(newGroup, 0) != -1 && ClassificationUtils.getGroupFromDb(vars.get("$field.CLASSIFICATIONTYPEID")) != newGroup) - { - //result.string(translate.text("The new Classification name already exists.")); - } - } - else - { - result.string(translate.text("Could not determine the current Classification type (usage).")); - } -} diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/titleProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/titleProcess.js deleted file mode 100644 index de080516afe4fe1620bf99bbd2dd36fe97d7e62a..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/titleProcess.js +++ /dev/null @@ -1,13 +0,0 @@ -import("system.neon"); -import("system.translate"); -import("system.vars"); -import("system.result"); - -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - result.string(translate.text("Group")); -} -else -{ - result.string(translate.text("Group name")); -} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js index dbfd2f7ec70efe4af8fe07026907e734dec515ae..cffd6f2044378635903b26620a407559cbe19f58 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js +++ b/entity/ClassificationAdmin_entity/entityfields/classificationgroup/valueProcess.js @@ -1,5 +1,34 @@ +import("system.neon"); import("system.vars"); import("system.result"); +import("system.text"); +import("Sql_lib"); -if(vars.get("$param.group_param")) - result.string(vars.get("$param.group_param")); +if(!vars.get("$this.value") && vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT) +{ + var sysSelection = vars.get("$sys.selection"); + var uid = vars.get("$field.UID"); + var id; + if(sysSelection.length > 0) + { + var res; + var value = vars.get("$field.CLASSIFICATION_PARENT_ID"); + if(value) + { + if(value.charAt(0) != ";" && value.charAt(value.length) != ";") + id = text.decodeMS(uid)[1]; + else + { + decodedIdvalues = text.decodeMS(value); + if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") + id = text.decodeMS(text.decodeMS(uid)[0])[1]; + } + var classificationGroupId = newSelect("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .from("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id) + .cell(); + + result.string(classificationGroupId); + } + } +} diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js deleted file mode 100644 index 199c2e918d4673239e59167d4b95f64bbe9a3331..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONGROUP")); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js deleted file mode 100644 index d3275a8eaa916bbbb9604617cb2fb5385bc01cfe..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONTYPE")) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtype/displayValueProcess.js deleted file mode 100644 index 9a93d9382887643fcc081de68214ba526ed930ac..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtype/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.classificationType(), vars.get("$field.CLASSIFICATIONTYPE"))); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtype/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtype/stateProcess.js deleted file mode 100644 index bcc88cc57c128d8971d6880133fb2584129a802e..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtype/stateProcess.js +++ /dev/null @@ -1,11 +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_READONLY); -} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/displayValueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b340e81667db36f7dffb5a63892cd49786faba16 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.loadContentTitle("ClassificationType_entity", vars.get("$this.value"))); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..04d6ba3c02af036fc51b33769653aaf8c06e1088 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_EDIT && vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW) + result.string(neon.COMPONENTSTATE_EDITABLE) +else + result.string(neon.COMPONENTSTATE_INVISIBLE) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..97abbd14640708a9dd1004bded626fbd89c6a7d5 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypeid/valueProcess.js @@ -0,0 +1,10 @@ +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Classification_lib"); + +if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) + result.string(util.getNewUUID()); +else if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT && !vars.get("$this.value")) + result.string($ClassificationPlaceholder.TOPSECRETPLACEHOLDER()); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9366c2e0e8a8d10e0f2e70beb8f3c82662b588a1 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/stateProcess.js @@ -0,0 +1,12 @@ +import("Classification_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +if((vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) + && vars.get("$this.value") != $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) +{ + result.string(neon.COMPONENTSTATE_EDITABLE) +} +else + result.string(neon.COMPONENTSTATE_INVISIBLE) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..85208cfbe4e8e978e2a67702710029f6fbb49a71 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/classificationtypeiddisplayvalue/valueProcess.js @@ -0,0 +1,21 @@ +import("system.result"); +import("system.vars"); +import("system.translate"); +import("Sql_lib"); +import("Classification_lib"); + +var res = vars.get("$this.value"); +if(!res) +{ + var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPEID"); + if(classificationTypeId != $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) + { + res = newSelect("CLASSIFICATIONTYPE.SCORETYPE") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId) + .cell(); + } + else + res = $ClassificationPlaceholder.TOPSECRETPLACEHOLDER(); +} +result.string(res); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/filterviewactiongroup/children/updateclassification/onActionProcess.js b/entity/ClassificationAdmin_entity/entityfields/filterviewactiongroup/children/updateclassification/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f1a169ba0ebfedb7c8278fc11103f02750888169 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/filterviewactiongroup/children/updateclassification/onActionProcess.js @@ -0,0 +1,21 @@ +import("system.process"); +import("system.question"); +import("system.text"); +import("system.translate"); +import("system.util"); +import("system.vars"); + +var execute = question.askYesNo(translate.text("Start Serveprocess"), translate.text("Are you sure you want to reload all classifications using the current classificationgradings?"), false); +if(execute) +{ + var processConfig = process.createStartAsyncConfig() + .setName("updateClassifications_serverProcess") + .setUser( vars.get("$sys.user")) + .setThreadPriority(process.THREADPRIORITY_LOW) + .setTimerType(process.TIMERTYPE_SERVER); + + + process.startAsync(processConfig); + + question.showMessage(translate.text("Serverprocess has been started"), question.INFORMATION, translate.text("Classification")); +} diff --git a/entity/ClassificationAdmin_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js deleted file mode 100644 index b5e82ac38396ff9ccda20b257c1d0820f5294683..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("KeywordRegistry_basic") - -result.string($KeywordRegistry.classificationType()) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/object_type/dropDownProcess.js b/entity/ClassificationAdmin_entity/entityfields/object_type/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..560b0480a1fe6f4ed45d7a8e68a6f4387f1f2178 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/object_type/dropDownProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.translate"); +import("Context_lib"); + +result.object([["Salesproject", ContextUtils.getTitle("Salesproject", true)], + ["Organisation", ContextUtils.getTitle("Organisation", true)]]); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/object_type/onValueChange.js b/entity/ClassificationAdmin_entity/entityfields/object_type/onValueChange.js new file mode 100644 index 0000000000000000000000000000000000000000..a2973102df1e5d7e7eb825ed08e9fb82890ef992 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/object_type/onValueChange.js @@ -0,0 +1,4 @@ +import("system.neon"); + +neon.setFieldValue("$field.CLASSIFICATIONGROUP", ""); +neon.refresh("$field.CLASSIFICATIONGROUP") \ 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 new file mode 100644 index 0000000000000000000000000000000000000000..66c794c838207d952cf4cbd9bd2a07461762d83e --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/object_type/valueProcess.js @@ -0,0 +1,27 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.text"); +import("Sql_lib"); + +if(!vars.get("$this.value") && vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT) +{ + var sysSelection = vars.get("$sys.selection"); + var uid = vars.get("$field.UID"); + var id; + if(sysSelection.length > 0) + { + var res; + var value = vars.get("$field.CLASSIFICATION_PARENT_ID"); + if(value.charAt(0) != ";" && value.charAt(value.length) != ";") + res = text.decodeMS(uid)[0]; + else + { + decodedIdvalues = text.decodeMS(value); + if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") + res = text.decodeMS(text.decodeMS(uid)[0])[0]; + } + + result.string(res); + } +} diff --git a/entity/ClassificationAdmin_entity/entityfields/recordcategory/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/recordcategory/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ec5e2a1a830a6627d578f34e9759d0bfd7df9a55 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/recordcategory/valueProcess.js @@ -0,0 +1,34 @@ +import("Classification_lib"); +import("system.util"); +import("system.result"); +import("system.neon"); +import("system.vars"); + +var res; + +if(vars.get("$sys.operatingstate") != neon.OPERATINGSTATE_NEW) +{ + if(vars.get("$field.CLASSIFICATIONTYPEID") && vars.get("$field.CLASSIFICATIONTYPEID") != $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) + { + res = $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE(); + } + else if(vars.get("$field.CLASSIFICATIONGROUP")) + { + res = $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP(); + } + else + { + res = $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE(); + } +} +else if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) +{ + var classificationGroup = vars.get("$field.CLASSIFICATIONGROUP"); + if(classificationGroup.length == 36 && ((classificationGroup.match(/-/g) || []).length == 4)) + res = $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS(); + else + res = $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS(); +} + +if(res) + result.string(res); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js b/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2cd13f04b8ed1f8cd3f762168f0b3208ada7cf1e --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/sorting/stateProcess.js @@ -0,0 +1,16 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("Classification_lib"); + +var state; +var recordCategory = vars.get("$field.recordCategory"); + +if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()) + state = neon.COMPONENTSTATE_INVISIBLE; +else if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS()) + state = neon.COMPONENTSTATE_DISABLED; +else + state = neon.COMPONENTSTATE_EDITABLE; + +result.string(state); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6eaad20db1e0a95b1bfa4842971a4e69a037b151 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/sorting/valueProcess.js @@ -0,0 +1,43 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.text"); +import("Sql_lib"); + +if(!vars.get("$this.value")) +{ + var sysSelection = vars.get("$sys.selection"); + var uid = vars.get("$field.UID"); + var id; + if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT ) + { + if(sysSelection.length > 0) + { + var res; + var value = vars.get("$field.CLASSIFICATION_PARENT_ID"); + if(value) + { + if(value.charAt(0) != ";" && value.charAt(value.length) != ";") + id = text.decodeMS(uid)[1]; + else + { + decodedIdvalues = text.decodeMS(value); + if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") + id = text.decodeMS(text.decodeMS(uid)[0])[1]; + } + } + } + } + else if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_NEW) + id = vars.get("$field.CLASSIFICATIONGROUP"); + + var sorting = newSelect("CLASSIFICATIONGROUP.SORTING") + .from("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id) + .cell(); + if(sorting) + result.string(sorting); + else + result.string("1"); +} + diff --git a/entity/ClassificationAdmin_entity/entityfields/target_context/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/target_context/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..163b952b7230f5054874557333c9639947c0a158 --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/target_context/valueProcess.js @@ -0,0 +1,16 @@ +import("system.neon"); +import("Classification_lib"); +import("system.result"); +import("system.vars"); + +var sysSelection = vars.get("$sys.selection"); + +if(sysSelection.length > 0) +{ + var value = vars.get("$field.CLASSIFICATION_PARENT_ID"); + + res = ClassificationUtils.decode(value) + if(res) + result.string(res); +} + diff --git a/entity/ClassificationAdmin_entity/entityfields/target_id/valueProcess.js b/entity/ClassificationAdmin_entity/entityfields/target_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b6727d8fca61a92e76b5c7332d494e2ad00797ba --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/target_id/valueProcess.js @@ -0,0 +1,28 @@ +import("system.neon"); +import("system.result"); +import("system.text"); +import("system.vars"); +import("Classification_lib"); + +if(vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_VIEW) +{ + var recordCategory = vars.get("$field.recordCategory"); + var sysSelection = vars.get("$sys.selection"); + if(sysSelection.length > 0) + { + var res; + switch(recordCategory) + { + case $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP(): + res = vars.get("$field.CLASSIFICATIONGROUP"); + break; + case $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE(): + res = vars.get("$field.CLASSIFICATIONTYPEID"); + break; + default: + break; + } + if(res) + result.string(res); + } +} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/uid/linkedContextProcess.js b/entity/ClassificationAdmin_entity/entityfields/uid/linkedContextProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7f329d1a50578f9ffb0d21a71b95493888ca0e9f --- /dev/null +++ b/entity/ClassificationAdmin_entity/entityfields/uid/linkedContextProcess.js @@ -0,0 +1,24 @@ +//import("system.neon"); +//import("system.text"); +//import("system.vars"); +//import("system.result"); +//import("system.logging"); +// +//var value = vars.get("$this.value"); +// +//if(value) +//{ +// var res; +// if(value.charAt(0) != ";" && value.charAt(value.length) != ";") +// res = "ClassificationGroup"; +// else +// { +// decodedIdvalues = text.decodeMS(value); +// if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") +// res = "ClassificationGrading"; +// else +// res = "ClassificationScore"; +// } +// neon.setFieldValue("$field.TARGET_CONTEXT" , res) +// logging.log(res) +//} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/grantDeleteProcess.js b/entity/ClassificationAdmin_entity/grantDeleteProcess.js index 4e17fa5f17ffabc50c3fdc60bf6e268c36233869..8cec1516432afced32ec5a217377b69e2507f93e 100644 --- a/entity/ClassificationAdmin_entity/grantDeleteProcess.js +++ b/entity/ClassificationAdmin_entity/grantDeleteProcess.js @@ -1,11 +1,9 @@ import("system.result"); -import("system.db"); import("system.vars"); -import("Sql_lib"); +import("Classification_lib"); -var count = newSelect("count(*)") - .from("CLASSIFICATION") - .whereIfSet("CLASSIFICATION.CLASSIFICATIONTYPE_ID", "$field.CLASSIFICATIONTYPEID") - .cell(true, "0"); - -result.object(parseInt(count) <= 0); \ No newline at end of file +var recordCategory = vars.get("$field.recordCategory"); +if(recordCategory != $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()) + result.string(true); +else + result.string(false); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/grantUpdateProcess.js b/entity/ClassificationAdmin_entity/grantUpdateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8cec1516432afced32ec5a217377b69e2507f93e --- /dev/null +++ b/entity/ClassificationAdmin_entity/grantUpdateProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.vars"); +import("Classification_lib"); + +var recordCategory = vars.get("$field.recordCategory"); +if(recordCategory != $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()) + result.string(true); +else + result.string(false); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/db/orderClauseProcess.js b/entity/ClassificationAdmin_entity/recordcontainers/db/orderClauseProcess.js deleted file mode 100644 index 519d6f1ab431849ac7f43915cf1e4a5756e1f193..0000000000000000000000000000000000000000 --- a/entity/ClassificationAdmin_entity/recordcontainers/db/orderClauseProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.db"); - -result.object({ - "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP": db.ASCENDING -}) \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..62e3899f1be13fb9086e3539720f58b0a177adc3 --- /dev/null +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,81 @@ +import("Classification_lib"); +import("Sql_lib"); +import("system.result"); +import("system.text"); +import("system.translate"); +import("system.util"); +import("system.vars"); + +var idvalues = vars.get("$local.idvalues"); +var decodedIdvalues; +var res = []; +if(idvalues) +{ + if(idvalues[0].charAt(0) != ";" && idvalues[0].charAt(idvalues[0].length) != ";") + res.push([idvalues[0], "", "", "", "", "", idvalues[0], translate.text(idvalues[0]), + "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()]) + else + { + decodedIdvalues = text.decodeMS(idvalues[0]); + if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") + { + var groupName = newSelect("CLASSIFICATIONGROUP.TITLE") + .from("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", decodedIdvalues[1]) + .cell(); + res.push([idvalues[0], decodedIdvalues[0], decodedIdvalues[1], translate.text(groupName), "", "", "", + "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()]); + } + + else + { + var scoreType = newSelect("CLASSIFICATIONTYPE.SCORETYPE") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", decodedIdvalues[1]) + .orderBy("CLASSIFICATIONTYPE.SCORETYPE") + .cell(); + res.push([idvalues[0], decodedIdvalues[0], "", "",decodedIdvalues[1], translate.text(scoreType), + "", "","", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()]); + } + } +} +else +{ + var savedData = {}; + var classificationData = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\ + CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.SCORETYPE") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.SORTING") + .table() + + var objectType, classificationGroupId, classificationGroupName, classificationTypeId, classificationScoreType, uidClassificationGroup, uidClassificationType; + for (let i = 0; i < classificationData.length; i++) + { + [objectType, classificationGroupId, classificationGroupName, classificationTypeId, classificationScoreType] = classificationData[i]; + + uidClassificationGroup = text.encodeMS([objectType, classificationGroupId]); + uidClassificationType = text.encodeMS([uidClassificationGroup, classificationTypeId]); + + + if(!savedData.hasOwnProperty(classificationData[i][0])) //objectType + { + res.push([objectType, "", "", "", "", "", objectType, translate.text(objectType), + "", $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE()]); + savedData[classificationData[i][0]] = ""; + } + if(!savedData.hasOwnProperty(classificationData[i][1])) //classificationGroup + { + res.push([uidClassificationGroup, objectType, classificationGroupId, translate.text(classificationGroupName), "", "", "", + "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()]); + savedData[classificationData[i][1]] = ""; + } + if(!savedData.hasOwnProperty(classificationData[i][3])) //classificationType + { + res.push([uidClassificationType, uidClassificationGroup, "", "", classificationTypeId, translate.text(classificationScoreType), + "", "", "", $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()]); + savedData[classificationData[i][3]] = ""; + } + } +} +result.object(res); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..b0b953dde1e57131c6c8c5eade9b4d7d9fdada09 --- /dev/null +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1,78 @@ +import("system.entities"); +import("Classification_lib"); +import("Sql_lib"); +import("system.util"); +import("system.db"); +import("system.vars"); + +try +{ + _delete(); +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //dependecies are deleted so the cache needs to be updated + entities.invalidateCache("ClassificationGrading_entity", "db"); + entities.invalidateCache("ClassificationGroup_entity", "db"); + entities.invalidateCache("ClassificationScore_entity", "db"); +} + +//private helper function for better code readability +function _delete() +{ + var rowData = vars.get("$local.rowdata"); + var groupID; + var groupValue = rowData["CLASSIFICATIONGROUP.value"]; + var classificationType = rowData["CLASSIFICATIONTYPEID.value"]; + var objectType = rowData["OBJECT_TYPE.value"]; + var table; + var columns; + var values; + var classificationGroup = rowData["CLASSIFICATIONGROUP.value"]; + var recordCategory = rowData["recordCategory.value"]; + + + if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE()) // the deleted dataset must be an classificationType + { + classificationGroup = ClassificationUtils.getClassificationGroup(classificationType); //get the group before deleting the classificationtype dataset + newWhere("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationType).deleteData(); //deletes the classificationscores that are linked to the classificationtype + newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationType).deleteData(); //deletes the classificationtype + newWhere("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationType).deleteData(); //deletes all the classifications + + var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); + + var maxScore = ClassificationUtils.getMaxScore(classificationGroup) //important to do this AFTER deleting the classificationscores to get the new value + + if(gradingTable[0][1] != maxScore) + { + var column = ["MAXGRADEFORSCORE"]; + table = ["CLASSIFICATIONGRADING"]; + var multiplicand = maxScore/gradingTable[0][1]; + var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); + + for (let i = 1; i < gradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradingTable[i][1] * multiplicand)]); + } + } + } + + else if(recordCategory == $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP()) //the deleted dataset must be an classificationGroup + { + var classificationTypes = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", classificationGroup) + + //delete the classificationscores, types and that are linked to the classificationtypes of te classificationgroup + newWhere("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypes, SqlBuilder.IN()).deleteData(true, "CLASSIFICATIONSCORE"); + newWhere("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationTypes, SqlBuilder.IN()).deleteData(true, "CLASSIFICATION"); + classificationTypes.deleteData(true, "CLASSIFICATIONTYPE"); + + newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroup).deleteData(); + newWhere("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", classificationGroup).deleteData(); + } +} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..62d83bc0564f53c4c851555ceaf91d428fe5a234 --- /dev/null +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,78 @@ +import("system.entities"); +import("system.util"); +import("system.db"); +import("system.vars"); + +try +{ + _insert(); +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //Grading-values are dependent since they are inserted within this process (maxgrade) + entities.invalidateCache("ClassificationGrading_entity", "db"); + //groups are dependent since they are inserted within this process + entities.invalidateCache("ClassificationGroup_entity", "db"); +} + +//private helper function for better code readability +function _insert() +{ + var rowData = vars.get("$local.rowdata"); + var groupID; + var groupValue = rowData["CLASSIFICATIONGROUP.value"]; + if(groupValue.length != 36 && (groupValue.match(/-/g) || []).length != 4) //if classificationGroup is no Id -> insert new group + { + groupID = util.getNewUUID(); + var groupValues = [ + groupValue, + groupID, + rowData["SORTING.value"] + ]; + + var groupColumns = [ + "TITLE", + "CLASSIFICATIONGROUPID", + "SORTING" + ]; + + db.insertData("CLASSIFICATIONGROUP", groupColumns, null, groupValues); + + var gradingColumns = [ + "CLASSIFICATIONGRADINGID", + "GRADING", + "MAXGRADEFORSCORE", + "CLASSIFICATIONGROUP_ID" + ]; + + var gradingValues = [ + util.getNewUUID(), + "A", + 0, + groupID + ]; + + db.insertData("CLASSIFICATIONGRADING", gradingColumns, null, gradingValues); // insert a "dummy" classificationGradingValue + } + else{ + groupID = groupValue; //else the groupValue is the groupId + } + + var typeValues = [ + vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE"), + util.getNewUUID(), + groupID, + rowData["OBJECT_TYPE.value"] + ] + + var typeColumns = [ + "SCORETYPE", + "CLASSIFICATIONTYPEID", + "CLASSIFICATIONGROUP_ID", + "OBJECT_TYPE" + ]; + + db.insertData("CLASSIFICATIONTYPE", typeColumns, null, typeValues); // always insert the classificationtype +} \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..b5eae575a499261c58669f1e479afebed20e73e4 --- /dev/null +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1,203 @@ +import("system.entities"); +import("system.util"); +import("system.text"); +import("system.neon"); +import("system.db"); +import("Sql_lib"); +import("system.vars"); +import("Classification_lib"); +import("system.eMath"); + +try +{ + _update(); +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //Grading-values are dependent since they are modified within this process (maxgrade) + entities.invalidateCache("ClassificationGrading_entity", "db"); + //groups are dependent since they are modified within this process + entities.invalidateCache("ClassificationGroup_entity", "db"); +} + +//private helper function for better code readability +function _update() +{ + var rowdata = vars.get("$local.rowdata"); + var uid = vars.get("$field.UID"); + + //for changes of the place of use (object_type), group, and title of an scoretpye dataset + var dbFields = { + "OBJECT_TYPE.value": "OBJECT_TYPE", + "CLASSIFICATIONTYPEID.value" : "CLASSIFICATIONTYPEID", + "CLASSIFICATIONGROUP.value": "CLASSIFICATIONGROUP_ID", + "CLASSIFICATIONTYPEID.displayValue": "SCORETYPE", + "SORTING.value": "SORTING", + "CLASSIFICATIONTYPEIDDISPLAYVALUE.value": "CLASSIFICATIONTYPEID" + }; + + var table = "CLASSIFICATIONTYPE"; + var cond; + var values = []; + var columns = []; + + var i; + var isGroupDataSet = false; + if(rowdata["CLASSIFICATIONTYPEID.value"] == $ClassificationPlaceholder.TOPSECRETPLACEHOLDER()) + isGroupDataSet = true; + + + + vars.get("$local.changed").forEach(function (field, i) + { + var dbField = dbFields[field]; + if (dbField) + { + columns[i] = dbField; + values[i] = rowdata[field] || ""; + } + }); + + + if(!isGroupDataSet) //-> update the classification type dataset + { + var groupIds = ClassificationUtils.getAllGroups(vars.get("$field.OBJECT_TYPE")); + var newGroupId; + var newGroupName; + var insertGroup = false; + var groupchange = true; + var newId; + for (i = 0; i < columns.length; i++) { + if(columns[i] == "CLASSIFICATIONGROUP_ID") + { + if(!groupIds.toString().includes(values[i])) + { + newGroupName = values[i]; + newGroupId = util.getNewUUID(); + values[i] = newGroupId; + insertGroup = true; + groupchange = true; + } + else if(values[i] == text.decodeMS(text.decodeMS(uid)[0])[1]) + { + groupchange = false; + insertGroup = true; + break; + } + } + else if(columns[i] == "CLASSIFICATIONTYPEID") + { + columns.splice(i, 1); + values.splice(i, 1); + i = i-1 + } + else if(columns[i] == "SORTING") + { + columns.splice(i, 1); + values.splice(i, 1); + i = i-1 + } + } + + + if(groupchange == true) + { + var gradeColumn, gradeTable, multiplicand, update, gradingTable; + var oldGroup = ClassificationUtils.getClassificationGroup(text.decodeMS(uid)[1]); + var newMax = ClassificationUtils.getMaxScoreExcludeType(oldGroup, text.decodeMS(uid)[1]); + gradingTable = ClassificationUtils.getGradingTableByGroupId(oldGroup); + var lostScore = parseInt(newSelect("max(SCORE)").from("CLASSIFICATIONSCORE").where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", text.decodeMS(uid)[1]).cell()); + if(insertGroup) + { + var maxSorting = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", vars.get("$field.OBJECT_TYPE")) + .orderBy("CLASSIFICATIONGROUP.SORTING desc") + .table()[0][1]; + db.insertData("CLASSIFICATIONGROUP", ["CLASSIFICATIONGROUPID", "TITLE", "SORTING"], null, [newGroupId, newGroupName, eMath.addInt(maxSorting, 1)]) //insert the new group + + var gradingColumns = [ + "CLASSIFICATIONGRADINGID", + "GRADING", + "MAXGRADEFORSCORE", + "CLASSIFICATIONGROUP_ID" + ]; + + var gradingValues = [ + util.getNewUUID(), + "A", + lostScore, + newGroupId + ]; + + db.insertData("CLASSIFICATIONGRADING", gradingColumns, null, gradingValues); // insert a "dummy" classificationGradingValue + } + else + { + newId = vars.get("$field.CLASSIFICATIONGROUP"); + newGradingTable = ClassificationUtils.getGradingTableByGroupId(newId); + newNewMax = eMath.addInt(newMax, lostScore) + if(newGradingTable[0][1] != newNewMax) //update existing classificationGrading if the maxValue has changed + { + gradeColumn = ["MAXGRADEFORSCORE"]; + gradeTable = "CLASSIFICATIONGRADING"; + multiplicand = newNewMax/newGradingTable[0][1]; + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", newGradingTable[0][0]) + .updateData(true, gradeTable, gradeColumn, null, [parseInt(newGradingTable[0][1] * multiplicand)]); + + for (i = 1; i < newGradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", newGradingTable[i][0]) + .updateData(true, gradeTable, gradeColumn, null, [parseInt(newGradingTable[i][1] * multiplicand)]); + } + } + + } + + if(gradingTable[0][1] != newMax) //update old classificationGrading if the maxValue has changed + { + gradeColumn = ["MAXGRADEFORSCORE"]; + gradeTable = "CLASSIFICATIONGRADING"; + multiplicand = newMax/gradingTable[0][1]; + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) + .updateData(true, gradeTable, gradeColumn, null, [newMax]); + + for (i = 0; i < gradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) + .updateData(true, gradeTable, gradeColumn, null, [parseInt(gradingTable[i][1] * multiplicand)]); + } + } + } + + + cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = '" + text.decodeMS(uid)[1] + "'"); + columns.push("SCORETYPE"); + values.push(vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE")); + cond.updateData(true, table, columns, null, values); + } + else //-> update the classification group dataset + { + var value = vars.get("$field.CLASSIFICATION_PARENT_ID"); + + if(value.charAt(0) != ";" && value.charAt(value.length) != ";") + id = text.decodeMS(uid)[1]; + + var classificationGroupId = newSelect("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .from("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id) + .cell(); + + cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = '" + classificationGroupId + "'"); + + var groupTable = "CLASSIFICATIONGROUP"; + var groupColumns = ["SORTING", "TITLE"]; + var groupName = rowdata["CLASSIFICATIONGROUP.value"] == classificationGroupId ? rowdata["CLASSIFICATIONGROUP.displayValue"] : rowdata["CLASSIFICATIONGROUP.value"]; + var groupValues = [vars.get("$field.SORTING"), groupName]; + var groupCond = newWhereIfSet("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = '" + classificationGroupId + "'"); + groupCond.updateData(true, groupTable, groupColumns, null, groupValues); + } +} \ No newline at end of file diff --git a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod index 891ee3d61304929d1c65bf1b23eb5ca25c916d43..e82162ec53830890f0318084f9f519df8e11eb08 100644 --- a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod +++ b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod @@ -20,8 +20,7 @@ </entityField> <entityField> <name>MAXGRADEFORSCORE</name> - <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc</documentation> - <title>Till Score</title> + <title>Max Value</title> <contentType>NUMBER</contentType> <outputFormat>#####</outputFormat> <inputFormat>#####</inputFormat> @@ -29,9 +28,9 @@ <onValidation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js</onValidation> </entityField> <entityField> - <name>CLASSIFICATIONTYPE_GROUP</name> - <title>Group</title> - <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationtype_group/valueProcess.js</valueProcess> + <name>CLASSIFICATIONGROUP_ID</name> + <title>Classification</title> + <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgroup_id/valueProcess.js</valueProcess> </entityField> <entityParameter> <name>ClassificationTypeId_param</name> @@ -42,8 +41,8 @@ <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/documentation.adoc</documentation> <dependencies> <entityDependency> - <name>31a0ee6d-b6e3-4a7c-82a7-598c9a12c4aa</name> - <entityName>ClassificationAdmin_entity</entityName> + <name>e0c6b86e-dcc1-43e1-9581-2b10c5c3d0cd</name> + <entityName>ClassificationGroup_entity</entityName> <fieldName>ClassificationGradings</fieldName> <isConsumer v="false" /> </entityDependency> @@ -65,8 +64,11 @@ <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> <conditionProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <cacheType>GLOBAL</cacheType> + <cacheKeyProcess>%aditoprj%/entity/ClassificationGrading_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> <linkInformation> <linkInformation> <name>9a9482d5-005a-4dc5-8b58-e07c44420b64</name> @@ -77,22 +79,22 @@ </linkInformation> </linkInformation> <recordFieldMappings> - <dbRecordFieldMapping> - <name>CLASSIFICATIONTYPE_GROUP.value</name> - <recordfield>CLASSIFICATIONGRADING.CLASSIFICATIONTYPE_GROUP</recordfield> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MAXGRADEFORSCORE.value</name> <recordfield>CLASSIFICATIONGRADING.MAXGRADEFORSCORE</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CLASSIFICATIONGRADINGID.value</name> - <recordfield>CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID</recordfield> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>GRADING.value</name> <recordfield>CLASSIFICATIONGRADING.GRADING</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONGROUP_ID.value</name> + <recordfield>CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONGRADINGID.value</name> + <recordfield>CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/ClassificationGrading_entity/documentation.adoc b/entity/ClassificationGrading_entity/documentation.adoc index f87c483ab85d928cb87bfc5c3f24aafcadf0376d..faa566900db907439f90781456e63e894d2ccf2d 100644 --- a/entity/ClassificationGrading_entity/documentation.adoc +++ b/entity/ClassificationGrading_entity/documentation.adoc @@ -1,3 +1,56 @@ = ClassificationGrading_entity -This entity is used for storing the classification grading and making it possible for the admin to change the grading of the classification scores. \ No newline at end of file +Definition: + + This entity is used for storing the classification grading and making it possible for the admin to change the grading of the clasification (classificationGroup). + The classification can be dynamically configured at runtime. + (For more information about the classification see also Classification_entity) + +Purpose: + + This Entity gives the administrators an easy way to change the classification grading in the preview of classificationAdmin + when selecting a classification (classificationGroup). + The classificationgrading gets stored in the table classificationgrading with it's own classificationgradingId, the classificationGroup_id, + the grading (e.g. "A", "B", "C") and the max score you this grade for. + + This entity only has one view: the ClassificationGradingMultipleEdit_view which has both the MaxGradeForScore and the grading column. + making it possible for the admin to configure something like this: + + ClassificationAdminPreviewOfClassification Example: + + USAGE: Organisation + CLASSIFICATION: 1. Target Group + SORTING: 1 + A 100 + B 75 + C 50 + D 25 + + --> The Score "72" would lead to the grade "B" (<<<not included in the preview, just for easier understanding of how this works) + +Particularities: + + The MaxGradeForScore of the best possible score (in our example for "A") has to always be the largest possibly achievable value, + otherwise it would lead to errors, which is why this field always get's the maximum value set as default + and it's not possible to save something greater than that (validationProcess). + + Also, since the indicators under the classification and the possible values of those indicators can be changed: + The grading get's updated automatically after changes to the maximum possible value, + using the rule of three (see onInsert-, onUpdate- and onDelete- processes of classificationScore). + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service \ No newline at end of file diff --git a/entity/ClassificationGrading_entity/entityfields/classificationtype_group/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/classificationgroup_id/valueProcess.js similarity index 100% rename from entity/ClassificationGrading_entity/entityfields/classificationtype_group/valueProcess.js rename to entity/ClassificationGrading_entity/entityfields/classificationgroup_id/valueProcess.js diff --git a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js index 7d3a67af6347a759f66eac4e9580980747c5bad5..1e60bc18fdb2d3ec65ba10aa47ce63f7e225e579 100644 --- a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js +++ b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/onValidation.js @@ -1,12 +1,13 @@ import("Classification_lib"); -import("Entity_lib"); -import("system.translate"); import("system.result"); +import("system.translate"); import("system.vars"); -var classificationTypeGroup = vars.get("$field.CLASSIFICATIONTYPE_GROUP"); +var classificationTypeGroup = vars.get("$field.CLASSIFICATIONGROUP_ID"); var maxValue = ClassificationUtils.getMaxScore(classificationTypeGroup); + if (maxValue == "") maxValue = 100; -if (parseFloat(vars.get("local.value")) > maxValue) \ No newline at end of file +if (parseFloat(vars.get("local.value")) > maxValue) + result.string(translate.withArguments("${HIGHER_THAN_MAX} max: %0", [maxValue])); \ No newline at end of file diff --git a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js index 6e8504b68f6b20ff2bbad5873cd5bdbcb5acdd33..24571535a888b634c3f4381ed280eda6321a0555 100644 --- a/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js +++ b/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/valueProcess.js @@ -6,6 +6,6 @@ import("system.result"); if(((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) && (vars.get("$this.value") == null || vars.get("$this.value") == undefined))) { - var group = vars.getString("$param.ClassificationTypeId_param") + var group = vars.getString("$param.ClassificationTypeId_param"); result.string(ClassificationUtils.getMaxScore(group)); } \ No newline at end of file diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/cacheKeyProcess.js b/entity/ClassificationGrading_entity/recordcontainers/db/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2bf96b8a4fe5e3cbd59023cdb58325511d518059 --- /dev/null +++ b/entity/ClassificationGrading_entity/recordcontainers/db/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getCommonKey("$param.ClassificationTypeId_param"); +result.string(res); diff --git a/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js index 8739d3dce8c466d11d8a1c185f2a327b2ae60ca9..83116f272303015e6b9d02504d4adb0a326ca3be 100644 --- a/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ClassificationGrading_entity/recordcontainers/db/conditionProcess.js @@ -2,6 +2,6 @@ import("system.vars"); import("system.result"); import("Sql_lib"); -var cond = newWhereIfSet("CLASSIFICATIONGRADING.CLASSIFICATIONTYPE_GROUP", "$param.ClassificationTypeId_param"); +var cond = newWhereIfSet("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", "$param.ClassificationTypeId_param"); result.string(cond.toString()); diff --git a/entity/ClassificationGroupAnalyses_entity/ClassificationGroupAnalyses_entity.aod b/entity/ClassificationGroupAnalyses_entity/ClassificationGroupAnalyses_entity.aod deleted file mode 100644 index c43b27125f6a85fa8c98c64f86188fe3e6c43668..0000000000000000000000000000000000000000 --- a/entity/ClassificationGroupAnalyses_entity/ClassificationGroupAnalyses_entity.aod +++ /dev/null @@ -1,83 +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.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>ClassificationGroupAnalyses_entity</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/ClassificationGroupAnalyses_entity/documentation.adoc</documentation> - <contentTitleProcess>%aditoprj%/entity/ClassificationGroupAnalyses_entity/contentTitleProcess.js</contentTitleProcess> - <recordContainer>jdito</recordContainer> - <entityFields> - <entityProvider> - <name>#PROVIDER</name> - </entityProvider> - <entityField> - <name>UID</name> - </entityField> - <entityParameter> - <name>ClassificationType_param</name> - <expose v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityParameter> - <name>ObjectRowid_param</name> - <expose v="true" /> - <mandatory v="true" /> - <description>PARAMETER</description> - </entityParameter> - <entityProvider> - <name>GroupAnalyses</name> - <documentation>%aditoprj%/entity/ClassificationGroupAnalyses_entity/entityfields/groupanalyses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>8dfbe502-aa7a-4514-aaed-a1decf2b4344</name> - <entityName>Salesproject_entity</entityName> - <fieldName>ClassificationGroups</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>ccd9d58a-6175-4f67-a80a-88aeac1cad3a</name> - <entityName>Organisation_entity</entityName> - <fieldName>ClassificationGroups</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> - </entityProvider> - <entityField> - <name>SCORE</name> - </entityField> - <entityField> - <name>GROUP</name> - </entityField> - <entityProvider> - <name>#PROVIDER_AGGREGATES</name> - <useAggregates v="true" /> - </entityProvider> - </entityFields> - <recordContainers> - <jDitoRecordContainer> - <name>jdito</name> - <jDitoRecordAlias>Data_alias</jDitoRecordAlias> - <contentProcess>%aditoprj%/entity/ClassificationGroupAnalyses_entity/recordcontainers/jdito/contentProcess.js</contentProcess> - <recordFieldMappings> - <jDitoRecordFieldMapping> - <name>UID.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>GROUP.value</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>GROUP.displayValue</name> - </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>SCORE.value</name> - </jDitoRecordFieldMapping> - </recordFieldMappings> - </jDitoRecordContainer> - </recordContainers> -</entity> diff --git a/entity/ClassificationGroupAnalyses_entity/contentTitleProcess.js b/entity/ClassificationGroupAnalyses_entity/contentTitleProcess.js deleted file mode 100644 index ce766e6646d01313ec7914dd4c9a2d110db92ef1..0000000000000000000000000000000000000000 --- a/entity/ClassificationGroupAnalyses_entity/contentTitleProcess.js +++ /dev/null @@ -1,3 +0,0 @@ -import("system.vars"); -import("system.result"); -result.string(vars.get("$field.UID")) \ No newline at end of file diff --git a/entity/ClassificationGroupAnalyses_entity/documentation.adoc b/entity/ClassificationGroupAnalyses_entity/documentation.adoc deleted file mode 100644 index ba6c7d1f310c1eb7fd791cd0bc612c80d4aa8a66..0000000000000000000000000000000000000000 --- a/entity/ClassificationGroupAnalyses_entity/documentation.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= ClassificationGroupAnalyses_entity - -This entity is there for grouping the information in the classification_entity \ No newline at end of file diff --git a/entity/ClassificationGroupAnalyses_entity/entityfields/groupanalyses/documentation.adoc b/entity/ClassificationGroupAnalyses_entity/entityfields/groupanalyses/documentation.adoc deleted file mode 100644 index f5014870cb87669b987f575b44ecc6c0c15638ad..0000000000000000000000000000000000000000 --- a/entity/ClassificationGroupAnalyses_entity/entityfields/groupanalyses/documentation.adoc +++ /dev/null @@ -1,3 +0,0 @@ -= ClassificationGroupAnalyses_entity - GroupAnalyses - -Provides the information to display them in the Classification \ No newline at end of file diff --git a/entity/ClassificationGroupAnalyses_entity/recordcontainers/jdito/contentProcess.js b/entity/ClassificationGroupAnalyses_entity/recordcontainers/jdito/contentProcess.js deleted file mode 100644 index 160dc5a4c4f3af969ac2f92a7ef649f9a2442ab4..0000000000000000000000000000000000000000 --- a/entity/ClassificationGroupAnalyses_entity/recordcontainers/jdito/contentProcess.js +++ /dev/null @@ -1,13 +0,0 @@ -import("system.translate"); -import("system.result"); -import("system.vars"); -import("Classification_lib"); - -var scores = ClassificationUtils.getScore(vars.get("$param.ClassificationType_param"), vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowid_param")); -var data = []; - -for (var i = 0; i < scores.length; i++) { - data.push([scores[i][1], scores[i][1], translate.text(scores[i][1]), scores[i][0]]); -} - -result.object(data); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..546a64d948001e538ed6a971478016d6ae568b0f --- /dev/null +++ b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod @@ -0,0 +1,112 @@ +<?xml version="1.0" encoding="UTF-8"?> +<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> + <name>ClassificationGroup_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/ClassificationGroup_entity/documentation.adoc</documentation> + <title>Classification</title> + <contentTitleProcess>%aditoprj%/entity/ClassificationGroup_entity/contentTitleProcess.js</contentTitleProcess> + <titlePlural>Classifications</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>CLASSIFICATIONGROUPID</name> + <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/classificationgroupid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TITLE</name> + <title>Classification</title> + <displayValueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>ClassificationGroups</name> + <dependency> + <name>dependency</name> + <entityName>ClassificationType_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>ClassificationGradings</name> + <dependency> + <name>dependency</name> + <entityName>ClassificationGrading_entity</entityName> + <fieldName>ClassificationGradings</fieldName> + </dependency> + <children> + <entityParameter> + <name>ClassificationTypeId_param</name> + <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>SORTING</name> + <title>Sorting</title> + </entityField> + <entityField> + <name>object_type</name> + <title>Place Of Use</title> + <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/object_type/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>SpecificObjectTypeGroups</name> + <documentation>%aditoprj%/entity/ClassificationGroup_entity/entityfields/specificobjecttypegroups/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> + </entityProvider> + <entityField> + <name>translatedTitle</name> + <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/translatedtitle/valueProcess.js</valueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <isPageable v="false" /> + <conditionProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <cacheType>GLOBAL</cacheType> + <cacheKeyProcess>%aditoprj%/entity/ClassificationGroup_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> + <linkInformation> + <linkInformation> + <name>b0606861-e080-4441-94ac-fce33bbf7747</name> + <tableName>CLASSIFICATIONGROUP</tableName> + <primaryKey>CLASSIFICATIONGROUPID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>TITLE.value</name> + <recordfield>CLASSIFICATIONGROUP.TITLE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SORTING.value</name> + <recordfield>CLASSIFICATIONGROUP.SORTING</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONGROUPID.value</name> + <recordfield>CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/ClassificationGroup_entity/contentTitleProcess.js b/entity/ClassificationGroup_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1f578714f795a0c4eefd533ba9c4b9b11e43d470 --- /dev/null +++ b/entity/ClassificationGroup_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.translatedTitle")); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/documentation.adoc b/entity/ClassificationGroup_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..457450a735bf0dbd9e574703697e18a531d46c67 --- /dev/null +++ b/entity/ClassificationGroup_entity/documentation.adoc @@ -0,0 +1,49 @@ += ClassificationGroup_entity + +Definition: + + Used to make it possible to store the classification groups in their own table with their own UUID instead of using the title as the key. + The classification can be dynamically configured at runtime. + (For more information about the classification see also Classification_entity) + +Purpose: + + This entity is used for storing the classification groups and making it possible for the admin to change + the details of the clasification (classificationGroup) like the name, sorting or it's usage + or to change the classification of an indicator without affecting the classification itself. + In the past the classificationgroup was only a name, which limited the functionality, which is why it got changed. + + This entity only has one view: the ClassificationGroupPreview which has the usage (object_type), title, and sorting fields + and the ClassificationGradingMultipleEdit_view. + making it possible for the admin to configure something like this: + + ClassificationAdminPreviewOfClassification Example: + + USAGE: Organisation + CLASSIFICATION: 1. Target Group + SORTING: 1 + A 100 + B 75 + C 50 + D 25 + + (For more information about the grading see also ClassifiactionGrading_entity) + +Particularities: + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..955830d8a9b4611e081d03a118f0dfa0b3427682 --- /dev/null +++ b/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.CLASSIFICATIONGROUPID")); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationtype/valueProcess.js b/entity/ClassificationGroup_entity/entityfields/classificationgroupid/valueProcess.js similarity index 61% rename from entity/ClassificationAdmin_entity/entityfields/classificationtype/valueProcess.js rename to entity/ClassificationGroup_entity/entityfields/classificationgroupid/valueProcess.js index 2bccd5eb7fbb2311971da0e6ae2ed3b56ed21268..16c47d8b58490ac63829673a531ffce4e6896745 100644 --- a/entity/ClassificationAdmin_entity/entityfields/classificationtype/valueProcess.js +++ b/entity/ClassificationGroup_entity/entityfields/classificationgroupid/valueProcess.js @@ -1,8 +1,10 @@ +import("system.util"); import("system.result"); import("system.neon"); import("system.vars"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { - result.string(vars.get("$param.ClassificationType_param")); + var newId = util.getNewUUID(); + result.string(newId); } \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/entityfields/object_type/valueProcess.js b/entity/ClassificationGroup_entity/entityfields/object_type/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d24b532449fc6ef9f0f016d27e0d277bb202d0c2 --- /dev/null +++ b/entity/ClassificationGroup_entity/entityfields/object_type/valueProcess.js @@ -0,0 +1,14 @@ +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var groupId = vars.get("$field.CLASSIFICATIONGROUPID") + +if(groupId) +{ + var res = newSelect("distinct CLASSIFICATIONTYPE.OBJECT_TYPE") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", vars.get("$field.CLASSIFICATIONGROUPID")) + .cell(); + result.string(res); +} \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/entityfields/specificobjecttypegroups/documentation.adoc b/entity/ClassificationGroup_entity/entityfields/specificobjecttypegroups/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..69ef4700107cb6e201bec2c78d205421cf124623 --- /dev/null +++ b/entity/ClassificationGroup_entity/entityfields/specificobjecttypegroups/documentation.adoc @@ -0,0 +1,2 @@ +Provider that returns ClassificationGroups of one given Object_type (e.g. `Organisation`) +This may be used for `entities.getRows`. \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js b/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1bd5882b79ef1bdc97ba4ed6d408b4401eeb35a2 --- /dev/null +++ b/entity/ClassificationGroup_entity/entityfields/title/displayValueProcess.js @@ -0,0 +1,4 @@ +import("system.result") +import("system.vars") + +result.string(vars.get("$this.value")); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/entityfields/translatedtitle/valueProcess.js b/entity/ClassificationGroup_entity/entityfields/translatedtitle/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c7ea27ae7a5b7b3be6958633bda20ec4b71c2f57 --- /dev/null +++ b/entity/ClassificationGroup_entity/entityfields/translatedtitle/valueProcess.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("system.result"); +import("system.translate"); + +var res; +var title = vars.get("$field.TITLE"); +if (title) + res = translate.text(title); +else + res = ""; +result.string(res); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/cacheKeyProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..944498d6bd81fef429957cc685756728ced7dbee --- /dev/null +++ b/entity/ClassificationGroup_entity/recordcontainers/db/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getCommonKey("$param.ObjectType_param"); +result.string(res); diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2d43dba815cd2dea8e2a5eeb8335aa36c8e3746c --- /dev/null +++ b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,20 @@ +import("Employee_lib"); +import("AttributeRegistry_basic"); +import("Attribute_lib"); +import("system.logging"); +import("system.vars"); +import("system.db"); +import("system.result"); +import("Sql_lib"); +import("Context_lib"); + +var cond = newWhere(); + +var objectType = vars.get("$param.ObjectType_param"); +if (objectType) + cond.and("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectType), SqlBuilder.IN()); + +//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/orderClauseProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d4100626b34a30ef46be15f8132398218b1ec81e --- /dev/null +++ b/entity/ClassificationGroup_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,7 @@ +import("system.db"); +import("system.result"); + +var res = { + "CLASSIFICATIONGROUP.TITLE": db.ASCENDING +}; +result.object(res); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/ClassificationScore_entity.aod b/entity/ClassificationScore_entity/ClassificationScore_entity.aod index 4d930ad8b01cbdac43c27a484009f726f1fab68c..51332fbd2ec4c92c2c75f876709dd9275bc39931 100644 --- a/entity/ClassificationScore_entity/ClassificationScore_entity.aod +++ b/entity/ClassificationScore_entity/ClassificationScore_entity.aod @@ -33,11 +33,12 @@ </entityField> <entityField> <name>SCORE</name> - <title>Score</title> + <title>Points</title> <contentType>NUMBER</contentType> <outputFormat>#,##0.00</outputFormat> <inputFormat>#,##0.00</inputFormat> <mandatory v="true" /> + <onValidation>%aditoprj%/entity/ClassificationScore_entity/entityfields/score/onValidation.js</onValidation> </entityField> <entityProvider> <name>ClassificationScores</name> @@ -51,6 +52,7 @@ </entityParameter> <entityParameter> <name>ClassificationTypeId_param</name> + <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js</valueProcess> <expose v="true" /> <mandatory v="true" /> </entityParameter> @@ -66,10 +68,6 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> - <entityField> - <name>MaxValue</name> - <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/maxvalue/valueProcess.js</valueProcess> - </entityField> <entityParameter> <name>ClassificationGroup_param</name> <expose v="true" /> @@ -84,16 +82,28 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>classificationgroup_id</name> + <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/classificationgroup_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/classificationgroup_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>translatedTitle</name> + <valueProcess>%aditoprj%/entity/ClassificationScore_entity/entityfields/translatedtitle/valueProcess.js</valueProcess> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> <conditionProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBInsert>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <onDBUpdate>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> <onDBDelete>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js</onDBDelete> + <cacheType>GLOBAL</cacheType> + <cacheKeyProcess>%aditoprj%/entity/ClassificationScore_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> <linkInformation> <linkInformation> <name>e2fecaf8-bc95-4a4d-bd96-88731568b1a4</name> diff --git a/entity/ClassificationScore_entity/documentation.adoc b/entity/ClassificationScore_entity/documentation.adoc index 89c3ea4f996f8537873b516195a6e80cdb00fe15..b726994060331781c42824c0019eb30c1f2df4b6 100644 --- a/entity/ClassificationScore_entity/documentation.adoc +++ b/entity/ClassificationScore_entity/documentation.adoc @@ -1,3 +1,47 @@ = ClassificationScore_entity -Presentation of the grouping via ScoreCard \ No newline at end of file +Definition: + + Stores the possible Values of Classification score types and their score and the sorting value. + (For more information about the classification see also Classification_entity) + +Purpose: + + This Entity gives the administrators an easy way to edit the possible values, their scoring and sorting in the preview of classificationAdmin + when selecting a indicator (classificationType). + The values gets stored in the table classificationscore with their own classificationScoreId, the classificationType_Id, title, score und sort. + + This entity only has one view: the ClassificationScoreMultipleEdit_view which has title as the title field and score and sort as columns + making it possible for the admin to configure something like this: + + ClassificationAdminPreviewOfIndicator Example: + + USAGE: Organisation + CLASSIFICATION: 1. Target Group + INDICATOR: Headquarters + Germany 35,00, 10 + Austria 35,00 20 + Switzerland 25,00, 30 + Other 0,00, 40 + +Particularities: + + The biggest possible score is being used by classificationGrading to calculate the value for the best possible grade, + if this value is changed the grading get's updated using the rule of three (see onInsert-, onUpdate- and onDelete- processes). + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/classificationgroup_id/displayValueProcess.js b/entity/ClassificationScore_entity/entityfields/classificationgroup_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..98e4c5bc2b43a98addc28f2a80374c3e81721c5c --- /dev/null +++ b/entity/ClassificationScore_entity/entityfields/classificationgroup_id/displayValueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("Context_lib"); +import("system.result"); + +var groupId = vars.get("$field.classificationgroup_id"); +if(groupId != "" && groupId != undefined) + result.string(ContextUtils.loadContentTitle("ClassificationGroup_entity", groupId)); +else + result.string("") \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/classificationgroup_id/valueProcess.js b/entity/ClassificationScore_entity/entityfields/classificationgroup_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..65f65e71046bb7d45bb66d599db775f3e4274b4a --- /dev/null +++ b/entity/ClassificationScore_entity/entityfields/classificationgroup_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("Sql_lib"); +import("system.result"); + +var groupId = vars.get("$param.ClassificationGroup_param"); +if(groupId) + result.string(groupId); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/classificationscoreid/valueProcess.js b/entity/ClassificationScore_entity/entityfields/classificationscoreid/valueProcess.js index 2e1eadc780ee959ee845885c8bca4d35d4eece3d..394e2a4a036323a90283bed48ca7ee378dd6200c 100644 --- a/entity/ClassificationScore_entity/entityfields/classificationscoreid/valueProcess.js +++ b/entity/ClassificationScore_entity/entityfields/classificationscoreid/valueProcess.js @@ -3,7 +3,5 @@ import("system.util"); import("system.result"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - result.string(util.getNewUUID()); -} \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$this.value")) + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationScore_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f87c7071f1ad16f7349cb6c114f0b32548c75b00 --- /dev/null +++ b/entity/ClassificationScore_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CLASSIFICATIONTYPE_ID")); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/classificationtype_id/valueProcess.js b/entity/ClassificationScore_entity/entityfields/classificationtype_id/valueProcess.js index 419fe78a30db83fdeda7d426e0f4083b914a555e..8806f470d922646ce6c4127ee42e945e86119076 100644 --- a/entity/ClassificationScore_entity/entityfields/classificationtype_id/valueProcess.js +++ b/entity/ClassificationScore_entity/entityfields/classificationtype_id/valueProcess.js @@ -3,6 +3,4 @@ import("system.neon"); import("system.vars"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - result.string(vars.get("$param.ClassificationTypeId_param")); -} \ No newline at end of file + result.string(vars.get("$param.ClassificationTypeId_param")); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/maxvalue/valueProcess.js b/entity/ClassificationScore_entity/entityfields/maxvalue/valueProcess.js deleted file mode 100644 index d46b81f5b8e7d48b7aa69224399a0a67feb5502d..0000000000000000000000000000000000000000 --- a/entity/ClassificationScore_entity/entityfields/maxvalue/valueProcess.js +++ /dev/null @@ -1,22 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.db"); -import("Sql_lib"); - -if (!vars.get("$this.value")) -{ - var classificationTypeId = vars.get("$param.ClassificationTypeId_param"); - var maxValue = newSelect("100.0 - sum(maxScore)") - .from(newSelect("max(SCORE) maxScore") - .from("CLASSIFICATIONTYPE") - .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") - .whereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId, SqlBuilder.NOT_EQUAL()) - .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP", "$param.ClassificationGroup_param") - .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", "$param.ClassificationType_param") - .groupBy("CLASSIFICATIONTYPE.SCORETYPE"), "maxScores") - .cell(); - if (maxValue == "") - maxValue = 100; - - result.string(maxValue); -} \ No newline at end of file diff --git a/entity/ClassificationScore_entity/entityfields/score/onValidation.js b/entity/ClassificationScore_entity/entityfields/score/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/entity/ClassificationScore_entity/entityfields/translatedtitle/valueProcess.js b/entity/ClassificationScore_entity/entityfields/translatedtitle/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c6340e758de70df1385e315040916acaded94e84 --- /dev/null +++ b/entity/ClassificationScore_entity/entityfields/translatedtitle/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); + +result.string(translate.text(vars.get("$field.TITLE"))); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/recordcontainers/db/cacheKeyProcess.js b/entity/ClassificationScore_entity/recordcontainers/db/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1edaa2e881b707c23ac3baf2d780bf5d77fd795f --- /dev/null +++ b/entity/ClassificationScore_entity/recordcontainers/db/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getCommonKey("$param.ClassificationGroup_param", "$param.ClassificationTypeId_param", "$param.ClassificationType_param"); +result.string(res); diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js index 6f34bda69d967ac170131ef53e8f55f093fc51a0..4feb1dc30761452716df0f169ffef60f0945c21a 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js @@ -3,27 +3,37 @@ import("system.db"); import("system.vars"); import("Classification_lib"); import("system.eMath"); +import("system.entities"); -newWhere("CLASSIFICATION.CLASSIFICATIONSCORE_ID", "$field.CLASSIFICATIONSCOREID").deleteData(); - -var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID"); +try +{ + newWhere("CLASSIFICATION.CLASSIFICATIONSCORE_ID", "$field.CLASSIFICATIONSCOREID").deleteData(); + var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID") -var gradingTable = ClassificationUtils.getGradingTableByScoreId(classificationScoreId); -var classificationGroup = ClassificationUtils.getClassificationGroup(classificationScoreId); -var maxScore = ClassificationUtils.getMaxScore(classificationGroup); + var classificationType = ClassificationUtils.getClassificationType(classificationScoreId); + var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType); + var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); + var maxScore = ClassificationUtils.getMaxScore(classificationGroup) -//checks if the maxscore has to be updated after the data has been deleted -if(gradingTable[0][1] != maxScore) -{ - var column = ["MAXGRADEFORSCORE"]; - var table = ["CLASSIFICATIONGRADING"]; - var multiplier = maxScore/gradingTable[0][1]; - var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); - - for (var i = 1; i < gradingTable.length; i++) + if(gradingTable[0][1] != maxScore) //the gradingTable is already sorted, so gradingTable[0][1] is the maxGradeForScore of the best possible Grade { - update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradingTable[i][1] * multiplier)]); + var column = ["MAXGRADEFORSCORE"]; + var table = ["CLASSIFICATIONGRADING"]; + var multiplicand = maxScore/gradingTable[0][1]; + var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); + + for (let i = 1; i < gradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradingTable[i][1] * multiplicand)]); + } } -} \ No newline at end of file +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //Grading-values are dependent since they are modified within this process (maxgrade) + entities.invalidateCache("ClassificationGrading_entity", "db"); +} diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js index eddf0f09ffef46937ad6ae864e91a9886318d02c..0dfe964c1e25974c57ac6b79e9f09adf783cdc26 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBInsert.js @@ -1,30 +1,41 @@ +import("system.entities"); import("system.db"); import("Sql_lib"); import("system.vars"); import("Classification_lib"); -import("system.eMath"); +import("system.eMath") -var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID"); +try +{ + var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID") -var gradingTable = ClassificationUtils.getGradingTableByScoreId(classificationScoreId); -var classificationGroup = ClassificationUtils.getClassificationGroup(classificationScoreId); -var maxScore = ClassificationUtils.getMaxScore(classificationGroup); + var classificationType = ClassificationUtils.getClassificationType(classificationScoreId); + var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType); + var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); + var maxScore = ClassificationUtils.getMaxScore(classificationGroup) -//checks if the maxscore has to be updated after inserting data -if(gradingTable.length > 0 && gradingTable != undefined && gradingTable != null) -{ - if(gradingTable[0][1] != maxScore) + if(gradingTable.length > 0 && gradingTable != undefined && gradingTable != null) { - var column = ["MAXGRADEFORSCORE"]; - var table = ["CLASSIFICATIONGRADING"]; - var multiplier = maxScore/gradingTable[0][1]; - var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); - - for (var i = 1; i < gradingTable.length; i++) + if(gradingTable[0][1] != maxScore) { - update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradengTable[i][1] * multiplier)]); + var column = ["MAXGRADEFORSCORE"]; + var table = ["CLASSIFICATIONGRADING"]; + var multiplicand = maxScore/gradingTable[0][1]; + var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) + .updateData(true, table, column, null, [maxScore]); + + for (let i = 1; i < gradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) + .updateData(true, table, column, null, [parseInt(gradingTable[i][1] * multiplicand)]); + } } } +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //Grading-values are dependent since they are modified within this process (maxgrade) + entities.invalidateCache("ClassificationGrading_entity", "db"); } \ No newline at end of file diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js index fb8657adbce952d10cffd25e8a08ef0713371eb8..5cfa69ab83d180289ed03ff802d37ecd44d023b5 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBUpdate.js @@ -1,27 +1,38 @@ +import("system.entities"); import("system.db"); import("Sql_lib"); import("system.vars"); import("Classification_lib"); -import("system.eMath"); +import("system.eMath") -var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID"); +try +{ + var classificationScoreId = vars.get("$field.CLASSIFICATIONSCOREID") -var gradingTable = ClassificationUtils.getGradingTableByScoreId(classificationScoreId); -var classificationGroup = ClassificationUtils.getClassificationGroup(classificationScoreId); -var maxScore = ClassificationUtils.getMaxScore(classificationGroup); + var classificationType = ClassificationUtils.getClassificationType(classificationScoreId); + var classificationGroup = ClassificationUtils.getClassificationGroup(classificationType); + var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); + var maxScore = ClassificationUtils.getMaxScore(classificationGroup) -//checks if the maxscore has to be updated after updating data -if(gradingTable[0][1] != maxScore) -{ - var column = ["MAXGRADEFORSCORE"]; - var table = ["CLASSIFICATIONGRADING"]; - var multiplier = maxScore/gradingTable[0][1]; - var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); - - for (var i = 1; i < gradingTable.length; i++) + if(gradingTable[0][1] != maxScore) { - update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) - .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradingTable[i][1] * multiplier)]); + var column = ["MAXGRADEFORSCORE"]; + var table = ["CLASSIFICATIONGRADING"]; + var multiplicand = maxScore/gradingTable[0][1]; + var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [maxScore]); + + for (let i = 1; i < gradingTable.length; i++) + { + update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[i][0]) + .updateData(true, table, column, db.getColumnTypes("CLASSIFICATIONGRADING", column, db.getCurrentAlias()), [parseInt(gradingTable[i][1] * multiplicand)]); + } } +} +finally //always make sure that the cache is as valid as possible +{ + //ClassificationType_entity accesses the CLASSIFICATIONSCORE (max value of scores) so we need to update the cache to prevent inconsesty + entities.invalidateCache("ClassificationType_entity", "db"); + //Grading-values are dependent since they are modified within this process (maxgrade) + entities.invalidateCache("ClassificationGrading_entity", "db"); } \ No newline at end of file diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod index 016b698256decb8bb09a66398cd725c6bb308634..d86c079f7b68f2f527fb56ee8044e50dab3afbbf 100644 --- a/entity/ClassificationType_entity/ClassificationType_entity.aod +++ b/entity/ClassificationType_entity/ClassificationType_entity.aod @@ -3,36 +3,97 @@ <name>ClassificationType_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/ClassificationType_entity/documentation.adoc</documentation> + <title>Indicator</title> + <contentTitleProcess>%aditoprj%/entity/ClassificationType_entity/contentTitleProcess.js</contentTitleProcess> <recordContainer>db</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>908ca339-4dca-41c6-a32b-472617e1742e</name> + <entityName>ClassificationGroup_entity</entityName> + <fieldName>ClassificationGroups</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>CLASSIFICATIONTYPEID</name> + <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationtypeid/valueProcess.js</valueProcess> </entityField> <entityField> - <name>TYPE</name> + <name>OBJECT_TYPE</name> + <title>Place Of Use</title> + <displayValueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> </entityField> <entityField> - <name>CLASS</name> + <name>SCORETYPE</name> + <title>Indicator</title> + <displayValueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/scoretype/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>CLASSIFICATIONGROUP_ID</name> + <title>Classification</title> + <displayValueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationgroup_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>ClassificationScores</name> + <dependency> + <name>dependency</name> + <entityName>ClassificationScore_entity</entityName> + <fieldName>ClassificationScores</fieldName> + </dependency> + <children> + <entityParameter> + <name>ClassificationTypeId_param</name> + <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ClassificationGroup_param</name> + <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityField> + <name>infoField</name> + <title>Hint</title> + <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>maxScore</name> + <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js</valueProcess> </entityField> <entityParameter> - <name>ClassificationTypeIds_param</name> + <name>ClassificationGroupId_param</name> <expose v="true" /> </entityParameter> <entityProvider> - <name>#PROVIDER_AGGREGATES</name> - <useAggregates v="true" /> + <name>ClassificationTypesForGroup</name> + <documentation>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationtypesforgroup/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ClassificationGroupId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> </entityProvider> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> + <isPageable v="false" /> + <conditionProcess>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <cacheType>GLOBAL</cacheType> + <cacheKeyProcess>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/cacheKeyProcess.js</cacheKeyProcess> <linkInformation> <linkInformation> - <name>0a0944fd-a72f-4c95-8c42-b1e7d3e17721</name> + <name>0c764b72-f55b-4b87-8dc1-9a491a143f44</name> <tableName>CLASSIFICATIONTYPE</tableName> <primaryKey>CLASSIFICATIONTYPEID</primaryKey> <isUIDTable v="true" /> @@ -45,12 +106,20 @@ <recordfield>CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>CLASS.value</name> - <recordfield>CLASSIFICATIONTYPE.CLASS</recordfield> + <name>OBJECT_TYPE.value</name> + <recordfield>CLASSIFICATIONTYPE.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONGROUP_ID.value</name> + <recordfield>CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SCORETYPE.value</name> + <recordfield>CLASSIFICATIONTYPE.SCORETYPE</recordfield> </dbRecordFieldMapping> <dbRecordFieldMapping> - <name>TYPE.value</name> - <recordfield>CLASSIFICATIONTYPE.TYPE</recordfield> + <name>maxScore.value</name> + <expression>%aditoprj%/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js</expression> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js b/entity/ClassificationType_entity/contentTitleProcess.js similarity index 100% rename from entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js rename to entity/ClassificationType_entity/contentTitleProcess.js index 87d569a0e2dc50c0ef3859fdbc0f22c3d9ac89e3..4bb76faf06af8296cc8290169d0de052f10976f1 100644 --- a/entity/ClassificationAdmin_entity/entityfields/scoretype/displayValueProcess.js +++ b/entity/ClassificationType_entity/contentTitleProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); import("system.translate"); +import("system.vars"); import("system.result"); result.string(translate.text(vars.get("$field.SCORETYPE"))); \ No newline at end of file diff --git a/entity/ClassificationType_entity/documentation.adoc b/entity/ClassificationType_entity/documentation.adoc index 4b63abbd0ed13d766d3a223ac89f4707a3555f9b..a09562ce3a4c852c52ff3a616d3838531b041890 100644 --- a/entity/ClassificationType_entity/documentation.adoc +++ b/entity/ClassificationType_entity/documentation.adoc @@ -1,3 +1,48 @@ = ClassificationType_entity -Defines types for the classifications (see Classification_entity) \ No newline at end of file +Definition: + + Stores the possible Indicators (classificationTypes). + (For more information about the classification see also Classification_entity) + +Purpose: + + This entity is used for storing the indicators and making it possible for the admin to change + the details of the indicator (classificationType) like the name, it's usage or it's classification (classificationGroup) + + This entity only has one view: the ClassificationTypePreview which has the usage (object_type), + classification (classificationgroup_Id), and title (scoretype) + and the ClassificationScoreMultipleEdit_view. + making it possible for the admin to configure something like this: + + ClassificationAdminPreviewOfIndicator Example: + + USAGE: Organisation + CLASSIFICATION: 1. Target Group + INDICATOR: Headquarters + Germany 35,00, 10 + Austria 35,00 20 + Switzerland 25,00, 30 + Other 0,00, 40 + +Particularities: + + The biggest possible score of the subordinated classificationScores is being used by classificationGrading to calculate the value for the best possible grade, + if this value is changed the grading get's updated using the rule of three (see onInsert-, onUpdate- and onDelete- processes of classificationScore_entity). + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/classificationgroup_id/displayValueProcess.js b/entity/ClassificationType_entity/entityfields/classificationgroup_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dcd3cf5a9c6467169516adeb67ef468628df172a --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/classificationgroup_id/displayValueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("Context_lib"); +import("system.result"); + +var groupId = vars.get("$field.CLASSIFICATIONGROUP_ID"); +if(groupId != "" && groupId != undefined) + result.string(ContextUtils.loadContentTitle("ClassificationGroup_entity", groupId)); +else + result.string("") \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js b/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..83df30fd1c6821c89dcf48519ebec595fc7078c3 --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CLASSIFICATIONGROUP_ID")); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js similarity index 100% rename from entity/ClassificationAdmin_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js rename to entity/ClassificationType_entity/entityfields/classificationscores/children/classificationtypeid_param/valueProcess.js diff --git a/entity/ClassificationType_entity/entityfields/classificationtypeid/valueProcess.js b/entity/ClassificationType_entity/entityfields/classificationtypeid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..268ab03c9af220bfb8b2ac3915197667b73f18b2 --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/classificationtypeid/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result") +import("system.vars") + +if(vars.exists("ObjectRowid_param")) + result.string(vars.get("ObjectRowid_param")); \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/classificationtypesforgroup/documentation.adoc b/entity/ClassificationType_entity/entityfields/classificationtypesforgroup/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..15bbce2b2ee994c354076d1b836c2384ebfde656 --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/classificationtypesforgroup/documentation.adoc @@ -0,0 +1 @@ +Used for providing classification types per group. \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js b/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..07815a1f88e787ef8647c0580f565279772f5efc --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js @@ -0,0 +1,75 @@ +import("system.translate"); +import("Entity_lib"); +import("system.result"); +import("Sql_lib"); +import("system.vars"); +import("Classification_lib"); +import("system.eMath"); + +//references needed for auto refresh: +"$field.ClassificationScores.insertedRows"; +"$field.ClassificationScores.changedRows"; +"$field.ClassificationScores.deletedRows"; + +var rows = EntityConsumerRowsHelper.getCurrentConsumerRows("ClassificationScores", ["SCORE"]); +var maxScore = 0; +var i; +var randomScoreId; + +result.string(translate.text("Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!")) +if(rows.length > 0) +{ + for (i = 0; i < rows.length; i++) + { + randomScoreId = rows[i]["#UID"]; + break; + } + var classificationGroup = vars.get("$field.CLASSIFICATIONGROUP_ID"); + var classificationType = ClassificationUtils.getClassificationType(randomScoreId); + var gradingTable = ClassificationUtils.getGradingTableByGroupId(classificationGroup); + for (i = 0; i < rows.length; i++) + { + if(parseFloat(rows[i]["SCORE"]) > maxScore) + maxScore = parseFloat(rows[i]["SCORE"]); + } + if(classificationType.length > 0) + { + maxScore = eMath.addDec(parseFloat(maxScore), parseFloat(ClassificationUtils.getMaxScoreExcludeType(classificationGroup, classificationType))); + } + else + { + maxScore = eMath.addDec(parseFloat(maxScore), parseFloat(ClassificationUtils.getMaxScore(classificationGroup))); + } + + if(gradingTable.length > 0 && gradingTable != undefined && gradingTable != null) + { + var greatestGrading = gradingTable[0][1]; + if(gradingTable[0][1] != maxScore) + { + var multiplicand; + var oldToNewValueString = ""; + if(greatestGrading != 0) + { + multiplicand = maxScore/greatestGrading; + for (i = 0; i < gradingTable.length; i++) + { + oldToNewValueString += gradingTable[i][2] + ": " + gradingTable[i][1] + "->" + parseInt(gradingTable[i][1] * multiplicand) + "\n\ + "; + } + } + else + { + greatestGrading = maxScore; + multiplicand = 1; + for (i = 0; i < gradingTable.length; i++) + { + oldToNewValueString += gradingTable[i][2] + ": " + gradingTable[i][1] + "->" + greatestGrading * multiplicand + "\n\ + "; + } + } + var resString = translate.text("This is how the Classification Gradings of the Classification will get affected by these changes:") + "\n\ + "+ oldToNewValueString; + result.string(resString); + } + } +} \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js b/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..49d9c5de791ae6d83bb8a6f61da2927d509ebddd --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/maxscore/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("Sql_lib"); +import("system.vars"); + +var classificationTypeId = vars.get("$field.CLASSIFICATIONTYPEID"); + +var score = null; +if (classificationTypeId) +{ + score = newSelect("max(CLASSIFICATIONSCORE.SCORE)") + .from("CLASSIFICATIONSCORE") + .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypeId) + .cell(); +} + +result.string(score); \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/object_type/displayValueProcess.js b/entity/ClassificationType_entity/entityfields/object_type/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..86c8786764dfb70e4874f95658d07af7aae99d50 --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/object_type/displayValueProcess.js @@ -0,0 +1,9 @@ +import("system.translate"); +import("Sql_lib"); +import("Classification_lib"); +import("system.result"); +import("system.vars"); + +var classificationType = vars.get("$this.value"); + +result.string(translate.text(classificationType)); \ No newline at end of file diff --git a/entity/ClassificationType_entity/entityfields/scoretype/displayValueProcess.js b/entity/ClassificationType_entity/entityfields/scoretype/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..29c6cf6dc29eb3898120f2e480fecc0cc2edbeec --- /dev/null +++ b/entity/ClassificationType_entity/entityfields/scoretype/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); + +result.string(translate.text(vars.get("$this.value"))); \ No newline at end of file diff --git a/entity/ClassificationType_entity/recordcontainers/db/cacheKeyProcess.js b/entity/ClassificationType_entity/recordcontainers/db/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d6595b81408d7f508732c607760733e4e410da36 --- /dev/null +++ b/entity/ClassificationType_entity/recordcontainers/db/cacheKeyProcess.js @@ -0,0 +1,5 @@ +import("CachedRecordContainer_lib"); +import("system.result") + +var res = CachedRecordContainerUtils.getCommonKey("$param.ClassificationGroupId_param"); +result.string(res); diff --git a/entity/ClassificationType_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationType_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..14721e02d30f3d70942c9a5cafa2b346958bb754 --- /dev/null +++ b/entity/ClassificationType_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", "$param.ClassificationGroupId_param"); +result.string(cond.toString()); + diff --git a/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js b/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..80e8d7e14a4b25f9f4c2461a0d736d5e03ae45ad --- /dev/null +++ b/entity/ClassificationType_entity/recordcontainers/db/recordfieldmappings/maxscore.value/expression.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.result"); +import("Sql_lib"); + +var statement = newSelect("max(CLASSIFICATIONSCORE.SCORE)") + .from("CLASSIFICATIONSCORE") + .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID"); + +logging.log("statement.toString()>>" + statement.toString()) +result.string(statement.toString()); \ No newline at end of file diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod index 5cdeeb7889b00980739f1a9f7b2194c4c7f66d05..011426f28c49b46e51582e167bf98d6a18abd991 100644 --- a/entity/Classification_entity/Classification_entity.aod +++ b/entity/Classification_entity/Classification_entity.aod @@ -51,7 +51,7 @@ <isConsumer v="false" /> </entityDependency> <entityDependency> - <name>c1521dc3-ba97-4e00-8d9b-a6fa46bef42d</name> + <name>ed17d4ca-1bdd-45b2-8a38-d7a73b1669e7</name> <entityName>Organisation_entity</entityName> <fieldName>Classifications</fieldName> <isConsumer v="false" /> @@ -64,7 +64,8 @@ </entityField> <entityField> <name>CLASSIFICATIONGROUP</name> - <title>Group name</title> + <documentation>%aditoprj%/entity/Classification_entity/entityfields/classificationgroup/documentation.adoc</documentation> + <title>Classification</title> <contentType>TEXT</contentType> <groupable v="true" /> <mandatoryProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationgroup/mandatoryProcess.js</mandatoryProcess> @@ -144,7 +145,7 @@ </entityConsumer> <entityField> <name>SCORETYPE</name> - <title>Scoretype</title> + <title>Indicator</title> <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/Classification_entity/entityfields/scoretype/displayValueProcess.js</displayValueProcess> </entityField> @@ -159,6 +160,9 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>CLASSIFICATIONGROUP_ID</name> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -178,9 +182,18 @@ <jDitoRecordFieldMapping> <name>CLASSIFICATIONGROUP.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATIONGROUP.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATIONGROUP_ID.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>CLASSIFICATIONSCORE_ID.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CLASSIFICATIONSCORE_ID.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>CLASSIFICATIONTYPEID.value</name> </jDitoRecordFieldMapping> @@ -188,10 +201,10 @@ <name>CLASSIFICATIONTYPE_ID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>OBJECT_ROWID.value</name> + <name>OBJECT_TYPE.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>OBJECT_TYPE.value</name> + <name>OBJECT_ROWID.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>SCORETYPE.value</name> @@ -202,6 +215,9 @@ <jDitoRecordFieldMapping> <name>SCORE_RESULTS.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>GroupScore.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Classification_entity/afterOperatingState.js b/entity/Classification_entity/afterOperatingState.js index 09213cf5619c0ad05c151b3eb5bcb3db792aba72..6ce8bdeeee1b7858a4475e780bc7ea61de0b3aa3 100644 --- a/entity/Classification_entity/afterOperatingState.js +++ b/entity/Classification_entity/afterOperatingState.js @@ -1,8 +1,9 @@ -import("system.vars"); -import("system.neon"); +/* + *this refresh should not be necessary: + */ -// "$local.value" contains the previous operationg state -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && vars.get("$local.value") == neon.OPERATINGSTATE_EDIT) -{ - neon.refreshAll() -} +//// "$local.value" contains the previous operationg state +//if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW && vars.get("$local.value") == neon.OPERATINGSTATE_EDIT) +//{ +// neon.refreshAll(); +//} diff --git a/entity/Classification_entity/documentation.adoc b/entity/Classification_entity/documentation.adoc index a233f0ddd65b389f852dd38257a5a091755c6da4..6fb30333ca4369806f0dd63d76773d4e580df977 100644 --- a/entity/Classification_entity/documentation.adoc +++ b/entity/Classification_entity/documentation.adoc @@ -1,3 +1,45 @@ = Classification_entity -Offers the possibility to flexibly classify sales projects. The classification can be dynamically configured at runtime. \ No newline at end of file +Definition: + + Offers the possibility to flexibly classify sales projects, organisations, or any other data. + The classification can be dynamically configured at runtime. + +Purpose: + + Classifications get stored in the Classification table with their own uid, the ids of the classification type, classification score, object_rowId and object_type. + + This entity displays the classification of an dataset in an treetable, + with the classification (classificationgroup), including the archieved and possible points and the resulting grading, as the groupfield. + And Columns for the indicators (classificationtype) and the selected values (selection). + + Example: + INDICATOR SELECTION + 1. Target Group: 60/100Points = B + Industry Service + Headquarters Germany + Product preference Commodity group 1 + + 2. Customer value: 15/100Points = D + Current supply share High + Purchasing potential p. a. 100-199 D? + Loyalty Low + +Particularities: + + The Classification consists of the following entities: + Classification_entity, + ClassificationAdmin_entity, + ClassificationGrading_entity, + ClassificationGroup_entity, + ClassificationScore_entity, + ClassificationType_entity + + Our terms in the db and entity structure differ from the technical terms the user gets to see, to make it easier to understand + for the developer that doesn't have the technical know-how: + + Our term: Technical term: Example: + Object_Type Usage Organisation + ClassificationGroup Classification 1. Target Group + ClassificationType Indicator Industry + ClassificationScore (Possible-)Value/Selection Service diff --git a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js index deb00e8d5e8728ec0a1711fe5ab7752224af0646..d0b202c003896906849e53907d10e67333faf168 100644 --- a/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js +++ b/entity/Classification_entity/entityfields/classificationgroup/displayValueProcess.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("Classification_lib"); import("system.translate"); import("system.result"); @@ -7,8 +8,7 @@ if (vars.getString("$field.CLASSIFICATIONGROUP")) { var score = vars.getString("$field.GroupScore"); var group = vars.getString("$field.CLASSIFICATIONGROUP"); - var maxScore = ClassificationUtils.getMaxScore(group); - var classifications = ClassificationUtils.getClassifications(score, group); - - result.string(translate.withArguments("%0: %1/%2points = %3", [group, score, maxScore, classifications])); + var groupName = vars.getString("$field.CLASSIFICATIONGROUP_ID.displayValue"); + var res = ClassificationUtils.formatDisplaySummaryForGroup(score, group, groupName); + result.string(res); } diff --git a/entity/Classification_entity/entityfields/classificationgroup/documentation.adoc b/entity/Classification_entity/entityfields/classificationgroup/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..93bd1542a90b5187c8e0d0da47bfd24b144d9973 --- /dev/null +++ b/entity/Classification_entity/entityfields/classificationgroup/documentation.adoc @@ -0,0 +1 @@ +This is the field that is used for automatic grouping. \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js b/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js index 7865e4544cd6eaba5d15e15937bffca31e2675fa..5f69ddae0ef78a61fc8be88201023c420f4dfb09 100644 --- a/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js +++ b/entity/Classification_entity/entityfields/classificationscore_id/titleProcess.js @@ -6,4 +6,4 @@ import("system.translate"); if (vars.get("$sys.recordstate") && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_VIEW) { result.string(translate.text(vars.get("$field.SCORETYPE"))); -} \ No newline at end of file +} diff --git a/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js b/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js index d3275a8eaa916bbbb9604617cb2fb5385bc01cfe..66d1a9ae5a70ffada860ab15cf8caffd67aea623 100644 --- a/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js +++ b/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CLASSIFICATIONTYPE")) \ No newline at end of file +result.string(vars.get("$field.OBJECT_TYPE")) \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js b/entity/Classification_entity/entityfields/classificationtype/displayValueProcess.js index 9a93d9382887643fcc081de68214ba526ed930ac..55fc33359a0fc8b9496e9dc12f56e15eb3a7b4ce 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("$field.CLASSIFICATIONTYPE"))); \ No newline at end of file +result.string(KeywordUtils.getViewValue($KeywordRegistry.classificationType(), vars.get("$field.OBJECT_TYPE"))); \ No newline at end of file diff --git a/entity/Classification_entity/entityfields/classificationtype/stateProcess.js b/entity/Classification_entity/entityfields/classificationtype/stateProcess.js index bcc88cc57c128d8971d6880133fb2584129a802e..2a616f4edfa3c6e68a81c8d99b17d08c353ceb69 100644 --- a/entity/Classification_entity/entityfields/classificationtype/stateProcess.js +++ b/entity/Classification_entity/entityfields/classificationtype/stateProcess.js @@ -1,11 +1,9 @@ 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_READONLY); -} \ No newline at end of file + result.string(neon.COMPONENTSTATE_READONLY); \ 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 aaef9be6b3921ec62b37843d0c65b43aeedd7fdf..e294cffd162af0b88230b7052c38c407862add9e 100644 --- a/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js +++ b/entity/Classification_entity/entityfields/classificationtype_id/valueProcess.js @@ -2,7 +2,6 @@ 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") == null) -{ - result.string(vars.get("$field.CLASSIFICATIONTYPEID")); -} \ No newline at end of file +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 00c91dc0b75c8cb002fa9eafe58ad40ab16a0e3a..fe14f896ec8a83c8570a94ad6b64c9585c122e99 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") == null) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$this.value") == null && vars.get("$param.ObjectRowid_param")) { 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 6a340688081d8317de45c8b656f6ffcbe9520e1e..f51252e64ad7fb10b50c67ab339385859219f11b 100644 --- a/entity/Classification_entity/entityfields/object_type/valueProcess.js +++ b/entity/Classification_entity/entityfields/object_type/valueProcess.js @@ -3,6 +3,4 @@ import("system.neon"); import("system.vars"); 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 + result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js index 3c8b450298caee22b60b1f32337514057927164d..0827f9f533b96112b07307a62f704bdde271f52a 100644 --- a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js @@ -1,62 +1,165 @@ -import("JditoFilter_lib"); +import("system.text"); import("Classification_lib"); -import("system.vars"); +import("Contact_lib"); +import("JditoFilter_lib"); import("Sql_lib"); import("system.db"); import("system.result"); +import("system.util"); +import("system.vars"); +import("system.translate"); -var scores = JSON.stringify(ClassificationUtils.getScoreAsObject(vars.get("$param.ClassificationType_param"), vars.get("$param.ObjectType_param"), vars.get("$param.ObjectRowid_param"))); +//helper object for coding/decoding the uid of a record in this entity +function _UidEncoder(){} -var classificationId = null; -var classificationTypeId = null; +_UidEncoder.encode = function (pClassifactionTypeId, pObjectRowId, pObjectType) +{ + var res = text.encodeMS(Array.from(arguments)); + return res; +} -// if the id starts with "C," it is a classificationId. If it starts with "T,", it is a classificationtypeId -if (vars.exists("$local.idvalues") && vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0) +_UidEncoder.decode = function (pEncodedUid) { - var selected = vars.get("$local.idvalues")[0].split(","); - if (selected.length == 2) - { - if (selected[0] == 'C') - classificationId = selected[1] - else if (selected[0] == 'T') - classificationTypeId = selected[1] - } + var vals = text.decodeMS(pEncodedUid); + return { + classifactionTypeId: vals[0], + objectRowId: vals[1], + objectType: vals[2] + }; } +//grouping is not done in this recordContainer but in it is done in the ClassificaitonTree_view via the defaultGroupFields + +var objectRowIdParam = vars.get("$param.ObjectRowid_param"); +var objectTypeParam = vars.get("$param.ObjectType_param"); +var scoresPerGroup = ClassificationUtils.getScoreAsObject(objectTypeParam, objectRowIdParam); + var masking = new SqlMaskingUtils(); -var select = newSelect("case when CLASSIFICATIONID is not null then " + masking.concat(["'C,'", "CLASSIFICATIONID"], "", false) + " else " + masking.concat(["'T,'", "CLASSIFICATIONTYPEID"], "", false) + " end, CLASSIFICATIONID, CLASSIFICATIONGROUP, CLASSIFICATIONSCORE_ID, CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE_ID, OBJECT_TYPE, OBJECT_ROWID, SCORETYPE, CLASSIFICATIONTYPE.CLASSIFICATIONTYPE") +//store the content of $local.idValues depending on the provided type in the idvalues +var filterClassificationIds = []; +var filterClassificationTypeIds = []; +// if the id starts with "C," it is a classificationId. If it starts with "T,", it is a classificationtypeId +if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) +{ + vars.get("$local.idvalues").forEach(function (pIdValue) { + var decodedId = _UidEncoder.decode(pIdValue); + filterClassificationTypeIds.push(decodedId.classifactionTypeId); + }); +} + +//this is the main select for the data +var select = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID \n\ + ,CLASSIFICATION.CLASSIFICATIONID, CLASSIFICATION.CLASSIFICATIONSCORE_ID, CLASSIFICATION.OBJECT_ROWID \n\ + ,CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONTYPE.SCORETYPE \n\ + ,CLASSIFICATIONSCORE.TITLE\n\ + ,CLASSIFICATIONGROUP.TITLE ") .from("CLASSIFICATION") .rightJoin("CLASSIFICATIONTYPE", newWhere() - .and("CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPEID") + .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") .andIfSet("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param") - .andIfSet("CLASSIFICATION.OBJECT_ROWID", "$param.ObjectRowid_param")) - .orderBy("CLASSIFICATIONGROUP asc") - .whereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", "$param.ClassificationType_param") - .andIfSet("CLASSIFICATION.CLASSIFICATIONID", classificationId) + .andIfSet("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam)) + .join("CLASSIFICATIONGROUP", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID") + .whereIfSet("CLASSIFICATIONTYPE.OBJECT_TYPE", "$param.ClassificationType_param") + .andIfSet( + newWhereIfSet("CLASSIFICATION.CLASSIFICATIONID", filterClassificationIds, SqlBuilder.IN()) + .orIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", filterClassificationTypeIds, SqlBuilder.IN()) + ) + .orderBy("CLASSIFICATIONGROUP.SORTING"); -if (!classificationId) +if (filterClassificationIds.length == 0 && filterClassificationTypeIds.length == 0)//no idvalues for filtering { - select.andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationTypeId) - .and(newWhereIfSet("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param") + select.and(newWhereIfSet("CLASSIFICATION.OBJECT_TYPE", "$param.ObjectType_param") .or("CLASSIFICATION.OBJECT_TYPE is null")) - .and(newWhereIfSet("CLASSIFICATION.OBJECT_ROWID", "$param.ObjectRowid_param") + .and(newWhereIfSet("CLASSIFICATION.OBJECT_ROWID", objectRowIdParam) .or("CLASSIFICATION.OBJECT_ROWID is null")); } -if (vars.exists("$local.filter") && vars.get("$local.filter")) +_addLocalFilter(); +_updateScore(); + +/* After loading the data from the database the data some preparation for the record container is done like translating display values into the + * correct locale or calculating some values + */ +var classificationTypeGroupDisplayCache = {}; +var resultSet = []; +//declaration needs to be separated because if declaration is done in the deconstructioning the IDE (designer) autocomplete does not work anymore +var uid, classificationId, classificationScoreId, classificationObjectRowId, classificationTypeGroupId, classificationTypeId + , classificationTypeObjectType, classificationTypeScoreType, classificationScoreTitle, classificationGroupTitle; +select.table().forEach(function (pRow){ + //deconstructioning for easy access when the selected data changes + [uid, classificationId, classificationScoreId, classificationObjectRowId, classificationTypeGroupId, classificationTypeId + , classificationTypeObjectType, classificationTypeScoreType, classificationScoreTitle, classificationGroupTitle] = pRow; + + uid = _UidEncoder.encode(uid, objectRowIdParam, objectTypeParam); + if (classificationScoreTitle) + classificationScoreTitle = translate.text(classificationScoreTitle); + if (classificationGroupTitle) + classificationGroupTitle = translate.text(classificationGroupTitle); + + var currentGroupScore = scoresPerGroup[classificationTypeGroupId] || 0; + + //display value is the same for every groupId, so let's cache it that we do not need to load it in every row => better performance + if (classificationTypeGroupDisplayCache[classificationTypeGroupId] == undefined) + { + classificationTypeGroupDisplayCache[classificationTypeGroupId] = ClassificationUtils.formatDisplaySummaryForGroup(currentGroupScore + , classificationTypeGroupId, classificationGroupTitle); + } + var classificationTypeGroupDisplay = classificationTypeGroupDisplayCache[classificationTypeGroupId]; + + //a field can only contain a string so format complex data into string + scoresPerGroup = JSON.stringify(scoresPerGroup); + + resultSet.push([uid, classificationId, classificationTypeGroupId, classificationTypeGroupDisplay, classificationGroupTitle + , classificationScoreId, classificationScoreTitle, classificationTypeId, classificationTypeId, classificationTypeObjectType + , objectRowIdParam, classificationTypeScoreType, classificationTypeObjectType, scoresPerGroup, currentGroupScore]); +}); + +result.object(resultSet); + +/* private helper functions for better readability are following now + * variable scope is shared so there is no need to pass the values as parameters + */ + +/** + * adds the $local.filter to the sql condition + */ +function _addLocalFilter() { - var filter = vars.get("$local.filter"); - if (filter.filter) - select.andIfSet((JditoFilterUtils.getSqlCondition(filter.filter, "CLASSIFICATION", undefined, { - CLASSIFICATIONTYPE : "CLASSIFICATIONTYPE.CLASSIFICATIONTYPE" - }))); + if (vars.exists("$local.filter") && vars.get("$local.filter")) + { + var filter = vars.get("$local.filter"); + if (filter.filter) + select.andIfSet((JditoFilterUtils.getSqlCondition(filter.filter, "CLASSIFICATION", undefined, { + OBJECT_TYPE : "CLASSIFICATIONTYPE.OBJECT_TYPE" + }))); + } } -result.object(select.table() - .map(function(pRow) - { - pRow.push(scores); - return pRow; - })); \ No newline at end of file + +/** + * performs an update in the precalculated classification-stoarge information if there is a missmatch between the IS-value and the SHOULD-BE-value + */ +function _updateScore() +{ + var calculatedScore = ClassificationUtils.getScore(objectTypeParam, objectRowIdParam) + + var calculatedClassification = ""; + for (let i = 0; i < calculatedScore.length; i++) { + calculatedClassification += ClassificationUtils.getClassifications(calculatedScore[i][0], calculatedScore[i][1]); + } + + var storedClassification = newSelect("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID, CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE ") + .from("CLASSIFICATIONSTORAGE") + .where("CLASSIFICATIONSTORAGE.OBJECT_ROWID", objectRowIdParam) + .arrayRow(); + + var table = "CLASSIFICATIONSTORAGE"; + var columns = ["CLASSIFICATIONVALUE"]; + var values = [calculatedClassification]; + + if(storedClassification[1] != undefined && calculatedClassification != storedClassification[1]) //Update the stored classification if the freshly calculated one differs + newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values); +} \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index 4a37e03e28c89a8118fe06dec3daea05a3b1e002..2d7eb1b4f14ab3e046d8ec7cbe51e4b26917b75c 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -385,12 +385,6 @@ <fieldName>KeywordCampaignManagementCostCategory</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>63bd7284-e9a0-4576-afe8-299d412e8def</name> - <entityName>ClassificationAdmin_entity</entityName> - <fieldName>KeywordClassificationTypes</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>3a81e886-0d83-47f0-9ec7-c864ffc57cda</name> <entityName>Classification_entity</entityName> diff --git a/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js b/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js index dcb435b5f5508a654ce8c39f81aa6dd9c74fb323..c2ad10b5f03f2c193bf611ba705dbf9c081f29eb 100644 --- a/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js +++ b/entity/KeywordEntry_entity/entityfields/expanded/valueProcess.js @@ -1,3 +1,3 @@ import("system.result"); -result.object(false); \ No newline at end of file +result.object(true); \ No newline at end of file diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index 0f90322477a103240fcb2b2bcf842b516baf0c92..c6d31ac7fdd70706d675966e937757d9e2957097 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -176,13 +176,6 @@ <orderClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> <onDBDelete>%aditoprj%/entity/Notification_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> - <linkInformation> - <name>c4e34b96-6081-4d04-8377-040a8ed3e14c</name> - <tableName>ASYS_NOTIFICATIONS</tableName> - <primaryKey>ID</primaryKey> - <isUIDTable v="true" /> - <readonly v="false" /> - </linkInformation> <linkInformation> <name>38bfb16c-bfe9-45dd-8ce7-692ebba030a9</name> <tableName>ASYS_NOTIFICATIONCONTENTS</tableName> diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 8a881b9f62138901232fcd975438b502ec4cb77f..c46cee54a67ba71293b60433d3473dd8c5fcda90 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -248,6 +248,7 @@ </entityConsumer> <entityProvider> <name>#PROVIDER</name> + <sortingField>NAME</sortingField> <dependencies> <entityDependency> <name>1a472ca0-4d27-453c-8de5-a046b86f22fb</name> @@ -825,11 +826,6 @@ <colorProcess>%aditoprj%/entity/Organisation_entity/entityfields/lastactivity/colorProcess.js</colorProcess> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/lastactivity/valueProcess.js</valueProcess> </entityField> - <entityField> - <name>OpenTasks</name> - <title>Open tasks</title> - <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/opentasks/valueProcess.js</valueProcess> - </entityField> <entityActionField> <name>openEditDefaultsView</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/openeditdefaultsview/documentation.adoc</documentation> @@ -1112,6 +1108,7 @@ </entityActionField> <entityConsumer> <name>Classifications</name> + <refreshParent v="false" /> <dependency> <name>dependency</name> <entityName>Classification_entity</entityName> @@ -1135,31 +1132,6 @@ </entityParameter> </children> </entityConsumer> - <entityConsumer> - <name>ClassificationGroups</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationGroupAnalyses_entity</entityName> - <fieldName>GroupAnalyses</fieldName> - </dependency> - <children> - <entityParameter> - <name>ClassificationType_param</name> - <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/classificationgroups/children/classificationtype_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectRowid_param</name> - <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/classificationgroups/children/objectrowid_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/classificationgroups/children/objecttype_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> - </entityConsumer> <entityField> <name>COUNT</name> <title>Count</title> @@ -1170,6 +1142,11 @@ <parentField>COUNT</parentField> <title>Count</title> </entityAggregateField> + <entityField> + <name>CLASSIFICATIONSTORAGE_ID</name> + <title>Classification</title> + <groupable v="true" /> + </entityField> <entityProvider> <name>OrganisationsViaIndex</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationsviaindex/documentation.adoc</documentation> @@ -1267,26 +1244,33 @@ <onDBDelete>%aditoprj%/entity/Organisation_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>5808a4a3-f2c1-4ccd-bad1-4e8a834ec7a4</name> + <name>f63d7d1a-118a-4cc1-9963-495f57468f8d</name> <tableName>ORGANISATION</tableName> <primaryKey>ORGANISATIONID</primaryKey> <isUIDTable v="false" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>5cd93c60-47e5-4eaa-90a4-69990f6a7d00</name> + <name>3cca93ac-fb3b-4dae-933e-0ee1e8c84260</name> <tableName>CONTACT</tableName> <primaryKey>CONTACTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>23fa4717-b401-48db-92ed-285aeab71f08</name> + <name>c0bcece8-306a-47ac-a406-7e42014fa4d7</name> <tableName>ADDRESS</tableName> <primaryKey>ADDRESSID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>c00213e6-4f5d-41df-a5f3-fd751a46e94b</name> + <tableName>CLASSIFICATIONSTORAGE</tableName> + <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -1465,6 +1449,12 @@ <recordfield>ORGANISATION.ORGANISATIONID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONSTORAGE_ID.value</name> + <recordfield>CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_LAT.value</name> <recordfield>ADDRESS.LAT</recordfield> @@ -1482,6 +1472,24 @@ <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> + <filterExtensionSet> + <name>ClassificationType_filter</name> + <filterFieldsProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js</filterFieldsProcess> + <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js</groupQueryProcess> + <filtertype>BASIC</filtertype> + </filterExtensionSet> + <filterExtensionSet> + <name>ClassificationGroup_filter</name> + <filterFieldsProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js</filterFieldsProcess> + <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js</groupQueryProcess> + <filtertype>BASIC</filtertype> + </filterExtensionSet> </filterExtensions> </dbRecordContainer> <indexRecordContainer> diff --git a/entity/Organisation_entity/entityfields/classificationgroups/children/classificationtype_param/valueProcess.js b/entity/Organisation_entity/entityfields/classificationgroups/children/classificationtype_param/valueProcess.js deleted file mode 100644 index 051bc0a8272ab51e6ed2062791876bbf88fb349d..0000000000000000000000000000000000000000 --- a/entity/Organisation_entity/entityfields/classificationgroups/children/classificationtype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("KeywordRegistry_basic"); -import("system.result"); - -result.string($KeywordRegistry.classificationType$organisation()); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/classificationgroups/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/classificationgroups/children/objectrowid_param/valueProcess.js deleted file mode 100644 index 533f8ec837ea2f9b588ddf05545ac47cdda23d18..0000000000000000000000000000000000000000 --- a/entity/Organisation_entity/entityfields/classificationgroups/children/objectrowid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$sys.uid")); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/classificationgroups/children/objecttype_param/valueProcess.js b/entity/Organisation_entity/entityfields/classificationgroups/children/objecttype_param/valueProcess.js deleted file mode 100644 index 008915f61deac19ccdd40fff81701de63eb3b6a2..0000000000000000000000000000000000000000 --- a/entity/Organisation_entity/entityfields/classificationgroups/children/objecttype_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/classifications/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/classifications/children/objectrowid_param/valueProcess.js index 533f8ec837ea2f9b588ddf05545ac47cdda23d18..7b6137b4d105e9ba592cf8ef6e796fb838a32b09 100644 --- a/entity/Organisation_entity/entityfields/classifications/children/objectrowid_param/valueProcess.js +++ b/entity/Organisation_entity/entityfields/classifications/children/objectrowid_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$sys.uid")); \ No newline at end of file +result.string(vars.get("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/classificationstorage_id/valueProcess.js b/entity/Organisation_entity/entityfields/classificationstorage_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f7db7e7050addd11b9d00962df938b3586435a4b --- /dev/null +++ b/entity/Organisation_entity/entityfields/classificationstorage_id/valueProcess.js @@ -0,0 +1,10 @@ +//import("Sql_lib"); +//import("system.result"); +//import("system.vars"); +// +//var classification = newSelect("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE") +// .from("CLASSIFICATIONSTORAGE") +// .where("CLASSIFICATIONSTORAGE.OBJECT_ROWID", vars.get("$field.ORGANISATIONID")) +// .cell(); +// +//result.string(classification); diff --git a/entity/Organisation_entity/entityfields/opentasks/valueProcess.js b/entity/Organisation_entity/entityfields/opentasks/valueProcess.js deleted file mode 100644 index 496146a7378b47fc4c6dd676665f5bc8c4ee8e83..0000000000000000000000000000000000000000 --- a/entity/Organisation_entity/entityfields/opentasks/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.vars"); -import("Context_lib"); -import("ActivityTask_lib"); -import("system.result"); - -result.string(TaskUtils.getOpenTaskCount(vars.get("$field.CONTACTID"), ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ef0d44ef34942a6219d4ae0f3c5cb66f34847555 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var sqlCond = ClassificationGroupFilterUtils.makeFilterConditionSql(); + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f4082997e0ffed652aa150ae87c52a258d0b481c --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +//this filterExtensionSet is for the Classifications (ClassificationGroups, e.g. 1. Target Group, Customer Value...) +var fields = ClassificationGroupFilterUtils.makeFilterFields(); + +result.string(fields); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..447f4c037255ee7dcbeb6eb0a39007733806d71c --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var values = ClassificationGroupFilterUtils.makeFilterValues(); +result.object(values); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..343227e54a7b289f7954ede7bbe7f405a2890e40 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js @@ -0,0 +1,23 @@ +import("system.translate"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); +import("system.logging"); +logging.log("classificationgroup_filter.groupQueryProcess"); +var isCount = vars.get("$local.count"); // TRUE if the count of the records is needed +var columns = vars.get("$local.columnlist"); // The column, expected from the querry, see also AttributeFilter_lib +var condition = vars.get("$local.condition"); // The Condition that's beeing used, includes the grouphirachy +var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for grouping +var order = vars.get("$local.order"); // The order of the result +var classificationId = vars.get("$local.name"); +classificationId = classificationId.slice(classificationId.lastIndexOf(".") + 1, classificationId.length); + +var stmt = newSelect(isCount ? groupedColumns : columns) + .from("ORGANISATION") + .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID and PERSON_ID is null") + .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID and OBJECT_TYPE = 'Organisation'") + .where(condition) + .groupBy(groupedColumns) + .toString(); + +result.string(stmt); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5875efb7699dfc5aaa3b567c912990895b03eded --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var sqlCond = ClassificationTypeFilterUtils.makeFilterConditionSql(); + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..eebe4d838230a9702e630d919349e7c5aceefb9f --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("ClassificationFilter_lib"); + +//this filterExtensionSet is for the Indicators (ClassificationTypes, e.g. Industry, Loyality, Number of employees...) +var fields = ClassificationTypeFilterUtils.getFilterFields(vars.get("$sys.currentcontextname")); + +result.string(fields); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..488499064a9bdd69b939b834b9a8c642bae09484 --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var values = ClassificationTypeFilterUtils.makeFilterFields(); +result.object(values); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ccf8f498ce2171f22150fbf2c26e89f495ba169b --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -0,0 +1,25 @@ +import("system.translate"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); +import("system.logging"); + +var isCount = vars.get("$local.count"); // TRUE if the count of the records is needed +var columns = vars.get("$local.columnlist"); // The column, expected from the querry, see also AttributeFilter_lib +var condition = vars.get("$local.condition"); // The Condition that's beeing used, includes the grouphirachy +var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for grouping +var order = vars.get("$local.order"); // The order of the result +var classificationId = vars.get("$local.name"); +classificationId = classificationId.slice(classificationId.lastIndexOf(".") + 1, classificationId.length); +var valuefield = "''" +var stmt = ""; + +stmt = newSelect(isCount ? "1" : columns) + .from("ORGANISATION") + .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID and PERSON_ID is null") + .leftJoin("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = CONTACT.CONTACTID and OBJECT_TYPE = 'Organisation' and CLASSIFICATION.CLASSIFICATIONTYPE_ID = '" + classificationId + "' ") + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID " + (condition != " " ? " WHERE " + condition : "")) + .groupBy(groupedColumns + (order != null && !isCount ? " ORDER BY " + order : "")) + .toString(); + +result.string(stmt); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js b/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js index 81779a42ee9e845df049275fd8bdf352063e1d4a..f743fde17b2c783b6afdd3f016d19e3cef97d592 100644 --- a/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/fromClauseProcess.js @@ -1,6 +1,8 @@ import("system.result"); //ADDRESS is necessary to display standard address fast within organisation lists +//CLASSIFICATIONSTORAGE is necessaray to make it possible to get the classifications of the organisations and making it possible to group by them result.string("ORGANISATION \n\ join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)\n\ - left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"); \ No newline at end of file + left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID)"); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/onDBDelete.js b/entity/Organisation_entity/recordcontainers/db/onDBDelete.js index ea3ae0e08a4540d451f6330b612f0612092c49f6..4286e03eb2abd75c156c4b4c45eda9f16f8e084e 100644 --- a/entity/Organisation_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Organisation_entity/recordcontainers/db/onDBDelete.js @@ -15,5 +15,6 @@ new AttributeRelationQuery(contactId, null, ContextUtils.getCurrentContextId()) newWhere("COMMUNICATION.CONTACT_ID", contactId).deleteData(); newWhere("ADDRESS.CONTACT_ID", contactId).deleteData(); newWhere("COMMRESTRICTION.CONTACT_ID", contactId).deleteData(); +newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", vars.get("$field.CONTACTID")).deleteData(); WorkflowSignalSender.deleted(); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js index 54f0349c9f1ddaab6b25f85f758d52928df41847..434601a60b8df854ee2910909a9c22d187266dd9 100644 --- a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,13 @@ +import("system.vars"); +import("Classification_lib"); import("Workflow_lib"); + +var uid = vars.get("$sys.uid"); +var contextname = vars.get("$sys.currentcontextname"); + +ClassificationUtils.insertEmptyClassification(uid, contextname); + +//start the execution in afterOperatingState, because here the dataset is not yet inserted +vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js index b42325af7f5803de7cbc28f16d39f8a15e6eed4f..e860656afa302d7770bf1415039757fa9d833d48 100644 --- a/entity/Organisation_entity/recordcontainers/index/query.js +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -50,7 +50,7 @@ var querySelect = newSelect([ .and(["COMMUNICATION", "MEDIUM_ID", "phone"], commMediumPhoneIds, SqlBuilder.IN()), "phone") .where("CONTACT.STATUS", $KeywordRegistry.contactStatus$inactive(), SqlBuilder.NOT_EQUAL()); -if (vars.exists("$local.idvalue")) - querySelect.whereIfSet("CONTACT.CONTACTID", "$local.idvalue"); +if (vars.exists("$local.idvalue") && vars.get("$local.idvalue") && vars.get("$local.idvalue").length > 0) + querySelect.and("CONTACT.CONTACTID", "$local.idvalue"); result.string(querySelect.toString()); diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index e176d149515c400570a4bb5259ade420b24ae6b0..cdbe5d085655eebc2915926c2bb6b6e658496edf 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -595,6 +595,7 @@ </entityConsumer> <entityConsumer> <name>Classifications</name> + <refreshParent v="true" /> <dependency> <name>dependency</name> <entityName>Classification_entity</entityName> @@ -625,13 +626,6 @@ <title>Days running</title> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/runtime/valueProcess.js</valueProcess> </entityField> - <entityField> - <name>ClassificationResult</name> - <title>Classification</title> - <groupable v="false" /> - <state>READONLY</state> - <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js</valueProcess> - </entityField> <entityConsumer> <name>SalesprojectForecastCharts</name> <dependency> @@ -676,8 +670,6 @@ <name>ClassificationGroups</name> <dependency> <name>dependency</name> - <entityName>ClassificationGroupAnalyses_entity</entityName> - <fieldName>GroupAnalyses</fieldName> </dependency> <children> <entityParameter> @@ -774,6 +766,10 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>CLASSIFICATIONSTORAGE_ID</name> + <title>Classification</title> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -787,19 +783,26 @@ <onDBDelete>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> - <name>02eb2f4c-3b85-409f-ac13-c8b26804da44</name> + <name>c8b6f1e0-630c-45d1-bdfb-d1eb3f6d6bef</name> <tableName>SALESPROJECT</tableName> <primaryKey>SALESPROJECTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> <linkInformation> - <name>485af2f8-d91d-442f-89c7-c44915dda990</name> + <name>5f687ee0-15eb-4e19-aa5a-461c446e7d91</name> <tableName>ORGANISATION</tableName> <primaryKey>ORGANISATIONID</primaryKey> <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>1c73b0de-0e70-421e-a8aa-660dbd177f81</name> + <tableName>CLASSIFICATIONSTORAGE</tableName> + <primaryKey>CLASSIFICATIONSTORAGEID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -906,6 +909,12 @@ <recordfield>SALESPROJECT.SALESPROJECTID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>CLASSIFICATIONSTORAGE_ID.value</name> + <recordfield>CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -916,17 +925,20 @@ <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> - <name>ClassificationSummary_filter</name> - <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterFieldsProcess.js</filterFieldsProcess> - <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterConditionProcess.js</filterConditionProcess> + <name>ClassificationType_filter</name> + <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js</filterFieldsProcess> + <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> - <name>ClassificationScore_filter</name> - <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterFieldsProcess.js</filterFieldsProcess> - <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterConditionProcess.js</filterConditionProcess> + <name>ClassificationGroup_filter</name> + <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js</filterFieldsProcess> + <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> <filtertype>BASIC</filtertype> </filterExtensionSet> </filterExtensions> diff --git a/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js b/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js deleted file mode 100644 index ec7e306ee9580b62b61f879c1acac71f7c0872ad..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/entityfields/classificationresult/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("KeywordRegistry_basic"); -import("system.vars"); -import("system.result"); -import("Classification_lib") -import("Context_lib") - -var classes = ClassificationUtils.getClass($KeywordRegistry.classificationType$salesproject(), ContextUtils.getCurrentContextId(), vars.get("$sys.uid")) -result.string(classes); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4d7f34b4b38482879c13a7b2677b58adb17cd897 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterConditionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("ClassificationFilter_lib"); + +var sqlCond = ClassificationGroupFilterUtils.makeFilterConditionSql(vars.get("$sys.currentcontextname")); + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b066dbd2bd3d29c633bbb50a3ebe7bf680572ca9 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterFieldsProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("ClassificationFilter_lib"); + +//this filterExtensionSet is for the Classifications (ClassificationGroups, e.g. 1. Target Group, Customer Value...) +var fields = ClassificationTypeFilterUtils.getFilterFieldsGroup(vars.get("$sys.currentcontextname")); + +result.string(fields); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0b91eddce8f2e9807f5ff51f8c9316056a36a350 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationgroup_filter/filterValuesProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("ClassificationFilter_lib"); + +var values = ClassificationGroupFilterUtils.makeFilterValues(vars.get("$sys.currentcontextname")); +result.object(values); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterConditionProcess.js deleted file mode 100644 index a9a81e734d1d5832c87848fa6b12650b9af03993..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterConditionProcess.js +++ /dev/null @@ -1,33 +0,0 @@ -import("Sql_lib"); -import("system.logging"); -import("AttributeFilter_lib"); -import("Entity_lib"); -import("Context_lib"); -import("system.vars"); -import("system.result"); - - -var operator = vars.get("$local.operator"); -var rawvalue = vars.get("$local.rawvalue"); -var columnPlaceholder = vars.get("$local.columnPlaceholder"); -var filterCond = vars.get("$local.condition"); -var classificationtypeid = AttributeSearchNameCoder.decode(vars.getString("$local.name")).id; -var sqlCond; - - -var subsqlclosed = newSelect("OBJECT_ROWID").from("CLASSIFICATION").where("CLASSIFICATION.OBJECT_TYPE", "Salesproject"); -var subsqlExtra2 = subsqlclosed.andIfSet("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationtypeid); -var subsqlExtra = subsqlclosed.andIfSet("CLASSIFICATION.CLASSIFICATIONSCORE_ID", rawvalue); - -if (operator == "1")//equal - sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra, SqlBuilder.IN()).toString(); -else if (operator == "2")//not equal - sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra, SqlBuilder.NOT_IN()).toString(); -else if (operator == "11")//is not empty - sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra2, SqlBuilder.IN()).toString(); -else if (operator == "12")//is empty - sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subsqlExtra2, SqlBuilder.NOT_IN()).toString(); -else sqlCond = "1=1"; - - -result.string(sqlCond); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterFieldsProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterFieldsProcess.js deleted file mode 100644 index a2733262042f5986d7d3cae681ed536f454fffbd..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterFieldsProcess.js +++ /dev/null @@ -1,28 +0,0 @@ -import("Sql_lib"); -import("system.translate"); -import("system.logging"); -import("system.util"); -import("KeywordRegistry_basic"); -import("system.entities"); -import("Attribute_lib"); -import("AttributeFilter_lib"); -import("system.result"); - -var res = []; - -var data = newSelect("CLASSIFICATIONTYPEID, CLASSIFICATIONGROUP, SCORETYPE") - .from("classificationtype") - .orderBy("CLASSIFICATIONGROUP").table(); - -data.forEach(function(row){ - var name = AttributeSearchNameCoder.encode(row[0], row[2]); - res.push({ - name: name, - title: translate.text(row[1]) + " / " + translate.text(row[2]), - contentType: "TEXT", - hasDropDownValues: true - }); -}) - -res = JSON.stringify(res); -result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterValuesProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterValuesProcess.js deleted file mode 100644 index 6750d045ccbf390d579bac8c82f19e61027d3b13..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationscore_filter/filterValuesProcess.js +++ /dev/null @@ -1,27 +0,0 @@ -import("IndexSearch_lib"); -import("system.logging"); -import("system.vars"); -import("Sql_lib"); -import("AttributeFilter_lib"); -import("Attribute_lib"); -import("system.result"); -import("system.translate"); - -var filter = JSON.parse(vars.get("$local.filter")); -var nameObject = AttributeSearchNameCoder.decode(filter.name); -var classID = nameObject.id; - - -var res = newSelect("CLASSIFICATIONSCOREID , TITLE") - .from("CLASSIFICATIONSCORE") - .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classID) - .table(); - -for(var i = 0; i < res.length; i++) -{ - res[i][1] = translate.text(res[i][1]) -} - -if (res == null) - res = []; -result.object(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterConditionProcess.js deleted file mode 100644 index 2f086c699f3978fd4a7f2bf7794cfe9073510a89..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterConditionProcess.js +++ /dev/null @@ -1,49 +0,0 @@ -// -// -////ToDo: This FilterProcess used to work with the old classification system, it's useless now. -//It's gonna get updated soon (#1061442) -// -// -////import("Sql_lib"); -//import("Classification_lib"); -//import("system.logging"); -//import("AttributeFilter_lib"); -//import("Entity_lib"); -//import("Context_lib"); -//import("system.vars"); -//import("system.result"); -// -// -//var operator = vars.get("$local.operator"); -//var rawvalue = vars.get("$local.rawvalue"); -//var columnPlaceholder = vars.get("$local.columnPlaceholder"); -//var filterCond = vars.get("$local.condition"); -//var classificationTypeID = AttributeSearchNameCoder.decode(vars.getString("$local.name")).id; -//var sqlCond; -// -////[["A","A"],["B","B"],["C","C"],["D","D"]] -//var scoreValue = ClassificationUtils.mapClassLetter(rawvalue); -//var havingCase; -//if(scoreValue[0] == 0) -// havingCase = "sum(SCORE) >= " + scoreValue[0]; -//else -// havingCase = "sum(SCORE) > " + scoreValue[0]; -// -//var having = havingCase + " and sum(SCORE) <= " + scoreValue[1]; -// -// -//var subSqlCond = newSelect("OBJECT_ROWID").from("classification").join("classificationscore", "classiFICATIONSCOREID = CLASSIFICATIONSCORE_ID") -// .where("classificationscore.CLASSIFICATIONTYPE_ID", newSelect("classificationtypeId").from("classificationtype") -// .where("classificationtype.CLASSIFICATIONGROUP", classificationTypeID), SqlBuilder.IN()).groupBy("classification.OBJECT_ROWID"); -// -//if (operator == "1")//equal -// sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond.having(having), SqlBuilder.IN()).toString(); -//else if (operator == "2")//not equal -// sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond.having(having), SqlBuilder.NOT_IN()).toString(); -//else if (operator == "11")//is not empty -// sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond, SqlBuilder.IN()).toString(); -//else if (operator == "12")//is empty -// sqlCond = newWhere("SALESPROJECT.SALESPROJECTID", subSqlCond, SqlBuilder.NOT_IN()).or("SALESPROJECT.SALESPROJECTID", newSelect("OBJECT_ROWID").from("classification"), SqlBuilder.NOT_IN()).toString(); -//else sqlCond = "1=1"; -// -//result.string(sqlCond); diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterFieldsProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterFieldsProcess.js deleted file mode 100644 index 2ea352cf1d179f06cb5c7d83282df3edac72fac3..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterFieldsProcess.js +++ /dev/null @@ -1,34 +0,0 @@ -// -// -////ToDo: This FilterProcess used to work with the old classification system, it's useless now. -//It's gonna get updated soon (#1061442) -// -////import("Sql_lib"); -//import("system.translate"); -//import("system.logging"); -//import("system.util"); -//import("KeywordRegistry_basic"); -//import("system.entities"); -//import("Attribute_lib"); -//import("AttributeFilter_lib"); -//import("system.result"); -// -//var res = []; -// -//var data = newSelect("distinct CLASSIFICATIONGROUP, CLASSIFICATIONGROUP") -// .from("classificationtype") -// .orderBy("CLASSIFICATIONGROUP").table(); -// -// -//data.forEach(function(row){ -// var name = AttributeSearchNameCoder.encode(row[0], row[1]); -// res.push({ -// name: name, -// title: translate.text(row[1]), -// contentType: "TEXT", -// hasDropDownValues: true -// }); -//}) -// -//res = JSON.stringify(res); -//result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterValuesProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterValuesProcess.js deleted file mode 100644 index f4b34eb8c3473d891aca091815121efb692660f2..0000000000000000000000000000000000000000 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationsummary_filter/filterValuesProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -////ToDo: This FilterProcess used to work with the old classification system, it's useless now. -//It's gonna get updated soon (#1061442) -// -// -////import("system.result"); -//result.object([["A","A"],["B","B"],["C","C"],["D","D"]]); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5875efb7699dfc5aaa3b567c912990895b03eded --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterConditionProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var sqlCond = ClassificationTypeFilterUtils.makeFilterConditionSql(); + +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b2cf16be606711221d28048b4af26922e946c004 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterFieldsProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("ClassificationFilter_lib"); + +var fields = ClassificationTypeFilterUtils.getFilterFields(vars.get("$sys.currentcontextname")); + +result.string(fields); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..541cc6c67ce6e4dc53ccc16714b3b7746eb0f097 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/filterValuesProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("ClassificationFilter_lib"); + +var values = ClassificationTypeFilterUtils.makeFilterFields(); +result.object(values); diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..524e35692ad0f51d4bebd9dce80d82ebfc6efc80 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -0,0 +1,22 @@ +import("system.translate"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var isCount = vars.get("$local.count"); // TRUE if the count of the records is needed +var columns = vars.get("$local.columnlist"); // The column, expected from the querry, see also AttributeFilter_lib +var condition = vars.get("$local.condition"); // The Condition that's beeing used, includes the grouphirachy +var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for grouping +var order = vars.get("$local.order"); // The order of the result +var classificationId = vars.get("$local.name"); +classificationId = classificationId.slice(classificationId.lastIndexOf(".") + 1, classificationId.length); +var valuefield = "''" +var stmt = ""; + +stmt = newSelect(isCount ? "1" : columns) + .from("SALESPROJECT") + .leftJoin("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID and CLASSIFICATION.OBJECT_TYPE = 'Salesproject' and CLASSIFICATION.CLASSIFICATIONTYPE_ID = '" + classificationId + "' ") + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID" + (condition != " " ? " WHERE " + condition : "")) + .groupBy(groupedColumns + (order != null && !isCount ? " ORDER BY " + order : "")) + .toString(); +result.string(stmt); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js index 3537c33492c3ea6e636b0fd9970e90d681ba6291..f7c4fec24f882837821e3546df7a8c5c0f5d1951 100644 --- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js @@ -1,6 +1,8 @@ import("system.vars"); import("system.result"); +//CLASSIFICATIONSTORAGE is necessaray to make it possible to get the classifications of the organisations and making it possible to group by them result.string("SALESPROJECT \n\ left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ - left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)"); \ No newline at end of file + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)"); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js index c292d0299ca8cac03b0d7202b49c046d221c0b1c..169c88c898085262157c370ee06c9d55a132086c 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBDelete.js @@ -11,12 +11,18 @@ if (currentId) { var toDelete = [ "SALESPROJECT_MILESTONE", - "SALESPROJECT_TOUCHPOINT" + "SALESPROJECT_TOUCHPOINT", + "CLASSIFICATIONSTORAGE" ]; toDelete = toDelete.map(function(pTable) { - var cond = newWhere(pTable + ".SALESPROJECT_ID", currentId) + var cond; + if(pTable != "CLASSIFICATIONSTORAGE") + cond = newWhere(pTable + ".SALESPROJECT_ID", currentId) + else + cond = newWhere(pTable + ".OBJECT_ROWID", currentId) + return [pTable, cond.build()]; }); diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js index 4d90164110fa9a431d839830c54b61ad71e06ac2..38fe9698031dd654c3a8a1e3a37aa506cbb72a8e 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js @@ -1,3 +1,4 @@ +import("Classification_lib"); import("Workflow_lib"); import("Context_lib"); import("Attribute_lib"); @@ -16,4 +17,11 @@ if (vars.get("$field.PROJECTTYPE")) .insertAttribute(vars.get("$field.PROJECTTYPE"), true); } +var salesprojectId = vars.get("$field.SALESPROJECTID"); +var contextname = vars.get("$sys.currentcontextname"); + +ClassificationUtils.insertEmptyClassification(salesprojectId, contextname); + +//start the execution in afterOperatingState, because here the dataset is not yet inserted +vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/VisitPlanEntry_entity/entityfields/contact_id/displayValueProcess.js b/entity/VisitPlanEntry_entity/entityfields/contact_id/displayValueProcess.js index 2c0374c9395d47ad5bc042af22caf4a81b374a92..c86af17417bd7854ad67136e3d6472a83e2c372b 100644 --- a/entity/VisitPlanEntry_entity/entityfields/contact_id/displayValueProcess.js +++ b/entity/VisitPlanEntry_entity/entityfields/contact_id/displayValueProcess.js @@ -3,7 +3,6 @@ import("system.db"); import("system.result"); import("system.vars"); - var contactId = vars.get("$field.CONTACT_ID"); var res = ContactUtils.getFullTitleByContactId(contactId); diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index bab1be7ecc3bf1d9c690234a75fcf63bfed6a981..9c60e9838e2005f790924a75c84eb5f36e071545 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7056,6 +7056,9 @@ <entry> <key>Extend</key> </entry> + <entry> + <key>%0: %1/%2points = %3</key> + </entry> <entry> <key>ab 350 T€</key> </entry> @@ -7095,9 +7098,33 @@ <entry> <key>Calendar maintime end</key> </entry> + <entry> + <key>%0: %1/%2 points = %3</key> + </entry> + <entry> + <key>Classification: </key> + </entry> + <entry> + <key>Classificationgroup</key> + </entry> + <entry> + <key>Classificationgroups</key> + </entry> + <entry> + <key>Indicator</key> + </entry> <entry> <key>green</key> </entry> + <entry> + <key>favorites</key> + </entry> + <entry> + <key>Refresh</key> + </entry> + <entry> + <key>Run ServerProcess</key> + </entry> <entry> <key>1. Target group</key> </entry> @@ -7140,9 +7167,6 @@ <entry> <key>Password must contain spaces</key> </entry> - <entry> - <key>favorites</key> - </entry> <entry> <key>The use of any of your previous %0 passwords is prohibited</key> </entry> @@ -7224,6 +7248,60 @@ <entry> <key>Enter current password to verify</key> </entry> + <entry> + <key>Serverprocess has been started</key> + </entry> + <entry> + <key>Run Serverprocess</key> + </entry> + <entry> + <key>ab 350 D€</key> + </entry> + <entry> + <key>200-349 D€</key> + </entry> + <entry> + <key>0-49 D€</key> + </entry> + <entry> + <key>100-199 D€</key> + </entry> + <entry> + <key>50-99 D€</key> + </entry> + <entry> + <key>Max Value</key> + </entry> + <entry> + <key>Points</key> + </entry> + <entry> + <key>OLDACTION</key> + </entry> + <entry> + <key>Run Upgrade Serverprocess</key> + </entry> + <entry> + <key>Child Attributes</key> + </entry> + <entry> + <key>Recalculate all Classifications</key> + </entry> + <entry> + <key>Reminder:</key> + </entry> + <entry> + <key>Start Serveprocess</key> + </entry> + <entry> + <key>Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!</key> + </entry> + <entry> + <key>This is how the Classification Gradings of the Classification will get affected by these changes:</key> + </entry> + <entry> + <key>Hint</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 3df93124eda0ae2d702bb8e96a2fe41e35472ca3..a4e4d935912722b25999d2d18dae89b136550a6e 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -2858,7 +2858,7 @@ </entry> <entry> <key>unassigned</key> - <value>nicht zugewiesen</value> + <value>nicht zugeordnet</value> </entry> <entry> <key>Lithuania</key> @@ -3227,6 +3227,10 @@ <key>Montenegro</key> <value>Montenegro</value> </entry> + <entry> + <key>Indicator</key> + <value>Kenngröße</value> + </entry> <entry> <key>Quarterly</key> <value>vierteljährlich</value> @@ -8838,10 +8842,10 @@ Bitte Datumseingabe prüfen</value> <key>Full Permissions</key> </entry> <entry> - <key>200-349 T€</key> + <key>200-349 D€</key> </entry> <entry> - <key>100-199 T€</key> + <key>100-199 D€</key> </entry> <entry> <key>Full permissions already assigned</key> @@ -8853,10 +8857,10 @@ Bitte Datumseingabe prüfen</value> <key>Import Daten</key> </entry> <entry> - <key>ab 350 T€</key> + <key>ab 350 D€</key> </entry> <entry> - <key>0-49 T€</key> + <key>0-49 D€</key> </entry> <entry> <key>Grading</key> @@ -8869,7 +8873,7 @@ Bitte Datumseingabe prüfen</value> <key>Transferdaten</key> </entry> <entry> - <key>50-99 T€</key> + <key>50-99 D€</key> </entry> <entry> <key>101-250</key> @@ -8944,18 +8948,48 @@ Bitte Datumseingabe prüfen</value> <key>Workflow Model</key> </entry> <entry> - <key>No new recipients found that can be added to the bulk mail.</key> - <value>Keine neuen Teilnehmer gefunden die zur Serienmail hinzugefügt werden können.</value> + <key>Workflow deploy failed</key> </entry> <entry> <key>Current Recipients</key> <value>Aktuelle Empfänger</value> </entry> <entry> - <key>The workflow could not be deployed</key> + <key>%0: %1/%2points = %3</key> + <value>%0: %1/%2Punkte = %3</value> </entry> <entry> - <key>Workflow deploy failed</key> + <key>%0: %1/%2 points = %3</key> + </entry> + <entry> + <key>Classification: </key> + <value>Klassifizierung: </value> + </entry> + <entry> + <key>Classificationgroup</key> + <value>Klassifizierungsgruppe</value> + </entry> + <entry> + <key>Classificationgroups</key> + <value>Klassifizierungsgruppen</value> + </entry> + <entry> + <key>Add Participants</key> + </entry> + <entry> + <key>and open Report</key> + </entry> + <entry> + <key>Add Recipients</key> + </entry> + <entry> + <key>{SEND_MAIL}</key> + </entry> + <entry> + <key>Total in euros</key> + </entry> + <entry> + <key>The workflow could not be deployed</key> </entry> <entry> <key>Create model</key> @@ -9015,10 +9049,17 @@ Bitte Datumseingabe prüfen</value> <key>Current password</key> <value>Aktuelles Passwort</value> </entry> + <entry> + <key>Serverprocess has been started</key> + <value>Serverprozess wurde gestartet</value> + </entry> <entry> <key>Calendar maintime start</key> <value>Kalender Kernzeit Beginn</value> </entry> + <entry> + <key>favorite</key> + </entry> <entry> <key>New password</key> <value>Neues Passwort</value> @@ -9045,7 +9086,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>SELECTION_PREFIX</key> - <value>Vorne</value> + <value>Die Verwendung eines Ihrer vorherigen %0 Passwörter ist untersagt</value> </entry> <entry> <key>SELECTION_BOTH</key> @@ -9088,9 +9129,6 @@ Bitte Datumseingabe prüfen</value> <key>Permission Procurer Department</key> <value>Rechteempfänger Abteilung</value> </entry> - <entry> - <key>favorite</key> - </entry> <entry> <key>Release</key> </entry> @@ -9105,24 +9143,16 @@ Bitte Datumseingabe prüfen</value> <value>Rechteempfänger Benutzer</value> </entry> <entry> - <key>and open Report</key> - </entry> - <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>Latitude</key> + <value>Teilnehmer hinzufügen</value> </entry> <entry> - <key>Add Recipients</key> + <key>No new recipients found that can be added to the bulk mail.</key> </entry> <entry> <key>Grant new User Permission</key> <value>Neue Benutzer-Berechtigung vergeben</value> </entry> - <entry> - <key>{SEND_MAIL}</key> - </entry> - <entry> - <key>Latitude</key> - </entry> <entry> <key>Password must contain spaces</key> <value>Passwort muss Leerzeichen enhalten</value> @@ -9145,10 +9175,6 @@ Bitte Datumseingabe prüfen</value> <entry> <key>Mapping</key> </entry> - <entry> - <key>The use of any of your previous %0 passwords is prohibited</key> - <value>Die Verwendung eines Ihrer vorherigen %0 Passwörter ist untersagt</value> - </entry> <entry> <key>Mappings</key> </entry> @@ -9163,6 +9189,10 @@ Bitte Datumseingabe prüfen</value> <key>${DISPLAY_AND_OPEN_ONE_HIT}</key> <value>Ein Ergebnis wurde gefunden und kann geöffnet werden.</value> </entry> + <entry> + <key>Run Serverprocess</key> + <value>Serverprozess ausführen</value> + </entry> <entry> <key>${DISPLAY_AND_OPEN_%0_OF_%1_HITS}</key> <value>%0 von insgesamt %1 Ergebnissen werden derzeit angezeigt und können geöffnet werden.</value> @@ -9203,13 +9233,74 @@ Bitte Datumseingabe prüfen</value> <key>Sort down</key> </entry> <entry> - <key>Total in euros</key> + <key>Longitude</key> </entry> <entry> - <key>Add Participants</key> + <key>0-49 T€</key> </entry> <entry> - <key>Longitude</key> + <key>Refresh</key> + </entry> + <entry> + <key>Run ServerProcess</key> + </entry> + <entry> + <key>50-99 T€</key> + </entry> + <entry> + <key>Max Value</key> + <value>Maximalwert</value> + </entry> + <entry> + <key>Points</key> + <value>Punkte</value> + </entry> + <entry> + <key>OLDACTION</key> + </entry> + <entry> + <key>Run Upgrade Serverprocess</key> + </entry> + <entry> + <key>The Sales Project can only be filled when a company has been specified</key> + </entry> + <entry> + <key>Child Attributes</key> + </entry> + <entry> + <key>Recalculate all Classifications</key> + <value>Alle Klassifizierungen neuberechnen</value> + </entry> + <entry> + <key>Reminder:</key> + </entry> + <entry> + <key>Start Serveprocess</key> + <value>Serverprozess starten</value> + </entry> + <entry> + <key>This is how the Classification Gradings of the Classification will get affected by these changes:</key> + <value>Die Klassifizierungsbewertungen der klassifizierung werden durch diese Änderungen folgendermaßen beeinflußt:</value> + </entry> + <entry> + <key>Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!</key> + <value>Änderungen an dem Wert mit der höchsten Punktzahl beeinflußen die Klassifizierungsbewertungen der Klassifizierung!</value> + </entry> + <entry> + <key>Hint</key> + <value>Hinweis</value> + </entry> + <entry> + <key>200-349 T€</key> + </entry> + <entry> + <key>100-199 T€</key> + </entry> + <entry> + <key>ab 350 T€</key> + </entry> + <entry> + <key>The use of any of your previous %0 passwords is prohibited</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 1b29727a4107fbf050cfa87323b4d179c4d9a89d..cf687d9006354bce6be41a02950046639f2f65ab 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -6936,12 +6936,6 @@ <entry> <key>Full Permissions</key> </entry> - <entry> - <key>200-349 T€</key> - </entry> - <entry> - <key>100-199 T€</key> - </entry> <entry> <key>Full permissions already assigned</key> </entry> @@ -6951,12 +6945,6 @@ <entry> <key>Import Daten</key> </entry> - <entry> - <key>ab 350 T€</key> - </entry> - <entry> - <key>0-49 T€</key> - </entry> <entry> <key>Grading</key> </entry> @@ -6966,9 +6954,6 @@ <entry> <key>Transferdaten</key> </entry> - <entry> - <key>50-99 T€</key> - </entry> <entry> <key>101-250</key> </entry> @@ -7113,23 +7098,59 @@ <value>Send mail</value> </entry> <entry> - <key>Probability AI</key> + <key>Classification: </key> </entry> <entry> - <key>New</key> + <key>Classificationgroup</key> </entry> <entry> - <key>Release</key> + <key>Classificationgroups</key> </entry> <entry> - <key>Archived</key> + <key>%0: %1/%2points = %3</key> </entry> <entry> - <key>asdf</key> + <key>%0: %1/%2 points = %3</key> + </entry> + <entry> + <key>Indicator</key> + </entry> + <entry> + <key>Probability AI</key> </entry> <entry> <key>{SENT_MAIL}</key> </entry> + <entry> + <key>favorites</key> + </entry> + <entry> + <key>Refresh</key> + </entry> + <entry> + <key>Run ServerProcess</key> + </entry> + <entry> + <key>favorite</key> + </entry> + <entry> + <key>favorties</key> + </entry> + <entry> + <key>Serverprocess has been started</key> + </entry> + <entry> + <key>Run Serverprocess</key> + </entry> + <entry> + <key>New</key> + </entry> + <entry> + <key>Release</key> + </entry> + <entry> + <key>Archived</key> + </entry> <entry> <key>Settings</key> </entry> @@ -7172,18 +7193,12 @@ <entry> <key>Calendar maintime start</key> </entry> - <entry> - <key>favorties</key> - </entry> <entry> <key>Password must contain special characters</key> </entry> <entry> <key>Password must be at least %0 characters</key> </entry> - <entry> - <key>favorite</key> - </entry> <entry> <key>Repeat password</key> </entry> @@ -7223,9 +7238,6 @@ <entry> <key>Password must contain spaces</key> </entry> - <entry> - <key>favorites</key> - </entry> <entry> <key>The use of any of your previous %0 passwords is prohibited</key> </entry> @@ -7295,6 +7307,72 @@ <entry> <key>Enter current password to verify</key> </entry> + <entry> + <key>ab 350 D€</key> + </entry> + <entry> + <key>200-349 D€</key> + </entry> + <entry> + <key>0-49 D€</key> + </entry> + <entry> + <key>100-199 D€</key> + </entry> + <entry> + <key>50-99 D€</key> + </entry> + <entry> + <key>asdf</key> + </entry> + <entry> + <key>OLDACTION</key> + </entry> + <entry> + <key>200-349 T€</key> + </entry> + <entry> + <key>100-199 T€</key> + </entry> + <entry> + <key>ab 350 T€</key> + </entry> + <entry> + <key>0-49 T€</key> + </entry> + <entry> + <key>50-99 T€</key> + </entry> + <entry> + <key>Max Value</key> + </entry> + <entry> + <key>Points</key> + </entry> + <entry> + <key>Run Upgrade Serverprocess</key> + </entry> + <entry> + <key>Child Attributes</key> + </entry> + <entry> + <key>Recalculate all Classifications</key> + </entry> + <entry> + <key>Reminder:</key> + </entry> + <entry> + <key>Start Serveprocess</key> + </entry> + <entry> + <key>Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!</key> + </entry> + <entry> + <key>This is how the Classification Gradings of the Classification will get affected by these changes:</key> + </entry> + <entry> + <key>Hint</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/neonContext/Classification/Classification.aod b/neonContext/Classification/Classification.aod index aa3443a0f9f2c1236251a3080bfd567b1ddfe45b..9bf4ba49ac718b28263d2427a1491f8d90e2478a 100644 --- a/neonContext/Classification/Classification.aod +++ b/neonContext/Classification/Classification.aod @@ -14,13 +14,5 @@ <name>50c0d5c5-c84f-452d-9f77-41b82ac0319f</name> <view>ClassificatonPreview_view</view> </neonViewReference> - <neonViewReference> - <name>cabdb49c-4faf-4581-8bb5-8a409f27ac3f</name> - <view>ClassificationDrawer_view</view> - </neonViewReference> - <neonViewReference> - <name>4e367ebf-3da3-4252-949c-a5793fd15384</name> - <view>ClassificationChart_view</view> - </neonViewReference> </references> </neonContext> diff --git a/neonContext/ClassificationAdmin/ClassificationAdmin.aod b/neonContext/ClassificationAdmin/ClassificationAdmin.aod index dc900dcb04c2bf20969123f747b79dbf1fc31688..63467269d2b7d076e78009147ca25fade5504e31 100644 --- a/neonContext/ClassificationAdmin/ClassificationAdmin.aod +++ b/neonContext/ClassificationAdmin/ClassificationAdmin.aod @@ -4,26 +4,17 @@ <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonContext/ClassificationAdmin/documentation.adoc</documentation> - <filterView>ClassificationAdminTree_view</filterView> + <filterView>ClassificationAdminFilter_view</filterView> <editView>ClassificationAdminEdit_view</editView> - <previewView>ClassificatonAdminPreview_view</previewView> <entity>ClassificationAdmin_entity</entity> <references> - <neonViewReference> - <name>d2a900f6-8860-4bd6-bc8a-3a8261fb9b3d</name> - <view>ClassificationAdminTree_view</view> - </neonViewReference> - <neonViewReference> - <name>3d860a00-13a4-45ef-8087-487ea80bb84b</name> - <view>ClassificatonAdminPreview_view</view> - </neonViewReference> <neonViewReference> <name>2c6e2b30-0fd1-4f12-bf9f-d4bbcfbed8aa</name> <view>ClassificationAdminEdit_view</view> </neonViewReference> <neonViewReference> - <name>8c79aba8-f87b-4ac6-b59b-1bbc65df2cee</name> - <view>ClassificationAdminGrading</view> + <name>664dbc06-1ec3-4c6c-ba4f-ed1ed13a1d4b</name> + <view>ClassificationAdminFilter_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/ClassificationGrading/ClassificationGrading.aod b/neonContext/ClassificationGrading/ClassificationGrading.aod index 8f4192c31d73079808c76c91d82ea4c5a8920ee6..4c4e4c60ea8d0900e20f03efe72fd924d3e613db 100644 --- a/neonContext/ClassificationGrading/ClassificationGrading.aod +++ b/neonContext/ClassificationGrading/ClassificationGrading.aod @@ -2,11 +2,14 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>ClassificationGrading</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <mainView>ClassificationGradingMultipleEdit_view</mainView> + <previewView>ClassificationGradingMultipleEdit_view</previewView> + <lookupView>ClassificationGradingMultipleEdit_view</lookupView> <entity>ClassificationGrading_entity</entity> <references> <neonViewReference> <name>9209d983-8388-4a72-96a8-905cdc8fd454</name> - <view>ClassificationGradingMultiplePreview_view</view> + <view>ClassificationGradingMultipleEdit_view</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/ClassificationGroup/ClassificationGroup.aod b/neonContext/ClassificationGroup/ClassificationGroup.aod new file mode 100644 index 0000000000000000000000000000000000000000..fee41ed5eb8790fb2ddf6b67c740c4e611718f79 --- /dev/null +++ b/neonContext/ClassificationGroup/ClassificationGroup.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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>ClassificationGroup</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <previewView>ClassificationGroupPreview_view</previewView> + <entity>ClassificationGroup_entity</entity> + <references> + <neonViewReference> + <name>4d074481-d3cc-4809-b1ee-1c83698146c6</name> + <view>ClassificationGroupPreview_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/ClassificationScore/ClassificationScore.aod b/neonContext/ClassificationScore/ClassificationScore.aod index b3b46da3a9495d519e51955175f36af103a5a5fc..d8069cffe97f8d0a6e788bb42544e7c51fd03713 100644 --- a/neonContext/ClassificationScore/ClassificationScore.aod +++ b/neonContext/ClassificationScore/ClassificationScore.aod @@ -2,14 +2,11 @@ <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>ClassificationScore</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <previewView>ClassificationScoreMultipleEdit_view</previewView> <entity>ClassificationScore_entity</entity> <references> <neonViewReference> <name>ccaf4443-07e0-4e29-a73d-2073d132fbe6</name> - <view>ClassificationScoreMultiplePreview_view</view> - </neonViewReference> - <neonViewReference> - <name>e857034a-2e2c-4026-8833-12ba4ce597d0</name> <view>ClassificationScoreMultipleEdit_view</view> </neonViewReference> </references> diff --git a/neonContext/ClassificationGroupAnalyses/ClassificationGroupAnalyses.aod b/neonContext/ClassificationType/ClassificationType.aod similarity index 61% rename from neonContext/ClassificationGroupAnalyses/ClassificationGroupAnalyses.aod rename to neonContext/ClassificationType/ClassificationType.aod index 65aaf6ffe91d607113cb559d4a3193cc12b60680..bad9b9b514aa815a46b2236cdef4391a23ac86f5 100644 --- a/neonContext/ClassificationGroupAnalyses/ClassificationGroupAnalyses.aod +++ b/neonContext/ClassificationType/ClassificationType.aod @@ -1,12 +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.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> - <name>ClassificationGroupAnalyses</name> + <name>ClassificationType</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <entity>ClassificationGroupAnalyses_entity</entity> + <previewView>ClassificationTypePreview_View</previewView> + <entity>ClassificationType_entity</entity> <references> <neonViewReference> - <name>7f1a88f1-c5de-4657-aa44-8309a61422be</name> - <view>ClassificationGroupAnalysesChart_view</view> + <name>2cf0a9e0-a9ed-47c9-9543-7cf580e99e99</name> + <view>ClassificationTypePreview_View</view> </neonViewReference> </references> </neonContext> diff --git a/neonContext/Organisation/Organisation.aod b/neonContext/Organisation/Organisation.aod index 90ec3706d78864bdde6041bfe47ecddb3aff2477..5303c6b55cee4d3796c3573e87fe61bf836703ec 100644 --- a/neonContext/Organisation/Organisation.aod +++ b/neonContext/Organisation/Organisation.aod @@ -61,11 +61,7 @@ </neonViewReference> <neonViewReference> <name>d27a8b2d-2fcf-4626-843c-e709c2ed71b0</name> - <view>OrganisationtClassificationAndChart_view</view> - </neonViewReference> - <neonViewReference> - <name>1efa420b-42f4-4d4d-8c23-aba7e6824f4b</name> - <view>OrganisationClassificationDrawer_view</view> + <view>OrganisationClassification</view> </neonViewReference> <neonViewReference> <name>0b052872-d6b4-41ac-ad0b-580575893e1b</name> diff --git a/neonContext/Salesproject/Salesproject.aod b/neonContext/Salesproject/Salesproject.aod index 70d024650c84335066184d6b4c604c31323adc66..fc510061011c9a189deefff688d5284d4855b38f 100644 --- a/neonContext/Salesproject/Salesproject.aod +++ b/neonContext/Salesproject/Salesproject.aod @@ -31,10 +31,6 @@ <name>9d4603e0-6e0e-4c9e-af97-f5c059debe9e</name> <view>SalesprojectMilestone_view</view> </neonViewReference> - <neonViewReference> - <name>5990b9d2-b9b8-495e-85de-68a765d09b7f</name> - <view>SalesprojectClassification_view</view> - </neonViewReference> <neonViewReference> <name>6640a2aa-cd7f-41d0-ab55-30a99256c2c6</name> <view>SalesprojectMemberActivity_view</view> @@ -51,14 +47,6 @@ <name>d878f3b7-1de6-4319-93c7-0fff621c0458</name> <view>SalesprojectFurtherInfo_view</view> </neonViewReference> - <neonViewReference> - <name>68e9257b-d402-4edc-8345-7da46c3b63f9</name> - <view>SalesprojectClassificationAndChart_view</view> - </neonViewReference> - <neonViewReference> - <name>99f70216-c195-4c08-a6ab-3a4d5acc759b</name> - <view>SalesprojectClassificationAttribute_view</view> - </neonViewReference> <neonViewReference> <name>b3e34681-eef6-48d3-a4e6-975a6fe77e7b</name> <view>SalesprojectOfferForecastChart_view</view> @@ -71,14 +59,6 @@ <name>589b0f12-a4d9-4108-9da1-4ddb418c3991</name> <view>SalesprojectOverview_view</view> </neonViewReference> - <neonViewReference> - <name>1c957028-bf6b-4b9c-9b46-60f8b53f9edd</name> - <view>SaleprojectOverviewCharts_view</view> - </neonViewReference> - <neonViewReference> - <name>42bc01e0-ba80-4e7f-bcf9-30b3d647f565</name> - <view>SalesprojectClassificationDrawer_view</view> - </neonViewReference> <neonViewReference> <name>8db978be-4362-48e2-9cc9-6b6774d92f5a</name> <view>SalesprojectForecastDrawer_view</view> diff --git a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod index fa91f1febec69188ad0af542924ed847969d3e72..f0161b804b5aa9a8a7856e36eb5e3b557878e0c0 100644 --- a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod +++ b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod @@ -1,6 +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.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> <name>AttributeRelationTree_view</name> + <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod index 8fdb484409dcb88ffc24479a3d455ff9db3a5800..43fd31c31ab964d4bd4d7d0ef08b179b70d9c9e0 100644 --- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod +++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod @@ -19,23 +19,26 @@ <entityField>#ENTITY</entityField> <fields> <entityFieldLink> - <name>c702f17c-af6c-4674-bbef-9586adfa3f3b</name> - <entityField>CLASSIFICATIONTYPE</entityField> + <name>d7a7faff-5693-41ce-ae4d-2f847fa46c18</name> + <entityField>OBJECT_TYPE</entityField> </entityFieldLink> <entityFieldLink> <name>66ce2c02-1cd3-4867-91a6-825655d6d16a</name> <entityField>CLASSIFICATIONGROUP</entityField> </entityFieldLink> <entityFieldLink> - <name>85cf625b-8ea4-4e6f-8b21-2e42314b46d6</name> - <entityField>SCORETYPE</entityField> + <name>5493520c-27d9-4333-a804-02c07b0b0747</name> + <entityField>SORTING</entityField> + </entityFieldLink> + <entityFieldLink> + <name>502ba6a6-f3bd-4c10-80a5-d6c779b9adb1</name> + <entityField>CLASSIFICATIONTYPEID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>91f2555e-214c-44f0-8798-029b94be9c00</name> + <entityField>CLASSIFICATIONTYPEIDDISPLAYVALUE</entityField> </entityFieldLink> </fields> </genericViewTemplate> - <neonViewReference> - <name>cedafb39-a59c-480f-aeff-e6276ea4fb9e</name> - <entityField>ClassificationScores</entityField> - <view>ClassificationScoreMultipleEdit_view</view> - </neonViewReference> </children> </neonView> diff --git a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..0fd065096d7a63abf690e5285a66a56c2a4d3478 --- /dev/null +++ b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_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.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> + <name>ClassificationAdminFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <treeTableViewTemplate> + <name>treetable</name> + <parentField>CLASSIFICATION_PARENT_ID</parentField> + <favoriteActionGroup1>FilterviewActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> + <columns> + <neonTreeTableColumn> + <name>825a461f-65a1-4483-ae97-655b1f87bc0a</name> + <entityField>OBJECT_TYPE</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4d53ba6d-f0a0-4f04-afaa-3278a45cce86</name> + <entityField>CLASSIFICATIONGROUP</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>299d5ef1-31a5-47d2-ae41-573e05a0b6c7</name> + <entityField>CLASSIFICATIONTYPEID</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> + </children> +</neonView> diff --git a/neonView/ClassificationAdminGrading/ClassificationAdminGrading.aod b/neonView/ClassificationAdminGrading/ClassificationAdminGrading.aod deleted file mode 100644 index 7ca55318be7809e3fe8c6523a6d46b89f033e0f9..0000000000000000000000000000000000000000 --- a/neonView/ClassificationAdminGrading/ClassificationAdminGrading.aod +++ /dev/null @@ -1,42 +0,0 @@ -<?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>ClassificationAdminGrading</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <noneLayout> - <name>layout</name> - </noneLayout> - </layout> - <children> - <genericViewTemplate> - <name>generic</name> - <entityField>#ENTITY</entityField> - <title>Classification</title> - <fields> - <entityFieldLink> - <name>ea58623d-4950-40cc-9027-5e2277703353</name> - <entityField>CLASSIFICATIONTYPE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>27c5198d-9330-4617-addf-c7aabac6fa7b</name> - <entityField>CLASSIFICATIONGROUP</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <genericMultipleViewTemplate> - <name>genericMultiple</name> - <entityField>#ENTITY</entityField> - <title>Grading</title> - <columns> - <neonGenericMultipleTableColumn> - <name>cd98ae70-e37f-42f3-bbab-03ba67b65f49</name> - <entityField>SCORETYPE</entityField> - </neonGenericMultipleTableColumn> - <neonGenericMultipleTableColumn> - <name>d861661c-c1d2-4240-9a31-ab4e2ad0cb97</name> - <entityField>GRADINGVALUE</entityField> - </neonGenericMultipleTableColumn> - </columns> - </genericMultipleViewTemplate> - </children> -</neonView> diff --git a/neonView/ClassificationAdminTree_view/ClassificationAdminTree_view.aod b/neonView/ClassificationAdminTree_view/ClassificationAdminTree_view.aod deleted file mode 100644 index e9cb5c6bed02e2930c5e3f12203711a01b520c3e..0000000000000000000000000000000000000000 --- a/neonView/ClassificationAdminTree_view/ClassificationAdminTree_view.aod +++ /dev/null @@ -1,23 +0,0 @@ -<?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>ClassificationAdminTree_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <treeViewTemplate> - <name>classificationTree</name> - <titleField>SCORETYPE</titleField> - <defaultGroupFields> - <element>CLASSIFICATIONTYPE</element> - <element>CLASSIFICATIONGROUP</element> - </defaultGroupFields> - <showChildrenCount v="false" /> - <entityField>#ENTITY</entityField> - </treeViewTemplate> - </children> -</neonView> diff --git a/neonView/ClassificationChart_view/ClassificationChart_view.aod b/neonView/ClassificationChart_view/ClassificationChart_view.aod deleted file mode 100644 index f7be2063e2adce5afedaeefcd74e2d1a9a4035ce..0000000000000000000000000000000000000000 --- a/neonView/ClassificationChart_view/ClassificationChart_view.aod +++ /dev/null @@ -1,18 +0,0 @@ -<?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>ClassificationChart_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <multiDataChartViewTemplate> - <name>classificationPoints</name> - <xAxis>CLASSIFICATIONGROUP</xAxis> - <yAxis>GroupScore</yAxis> - <entityField>#ENTITY</entityField> - </multiDataChartViewTemplate> - </children> -</neonView> diff --git a/neonView/ClassificationDrawer_view/ClassificationDrawer_view.aod b/neonView/ClassificationDrawer_view/ClassificationDrawer_view.aod deleted file mode 100644 index 3d71c2d3c9471bb9dc6a190f809b50acc6e06229..0000000000000000000000000000000000000000 --- a/neonView/ClassificationDrawer_view/ClassificationDrawer_view.aod +++ /dev/null @@ -1,18 +0,0 @@ -<?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>ClassificationDrawer_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <drawerLayout> - <name>layout</name> - <layoutCaption>Classification</layoutCaption> - </drawerLayout> - </layout> - <children> - <neonViewReference> - <name>ddde18ed-2617-4f7e-9a6b-71e4625e2cdc</name> - <entityField>#ENTITY</entityField> - <view>ClassificationTree_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/ClassificationGradingMultiplePreview_view/ClassificationGradingMultiplePreview_view.aod b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod similarity index 90% rename from neonView/ClassificationGradingMultiplePreview_view/ClassificationGradingMultiplePreview_view.aod rename to neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod index a1e792129a67195e93c36d201872841225eef42d..6ba9ff49effd10c4f9e1292bf94f92e3070303d7 100644 --- a/neonView/ClassificationGradingMultiplePreview_view/ClassificationGradingMultiplePreview_view.aod +++ b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod @@ -1,11 +1,12 @@ <?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>ClassificationGradingMultiplePreview_view</name> + <name>ClassificationGradingMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> <layout> <headerFooterLayout> <name>layout</name> + <header>titledList</header> </headerFooterLayout> </layout> <children> diff --git a/neonView/ClassificationGroupAnalysesChart_view/ClassificationGroupAnalysesChart_view.aod b/neonView/ClassificationGroupAnalysesChart_view/ClassificationGroupAnalysesChart_view.aod deleted file mode 100644 index 40d2afea5d3b5c0291a1bb9ef1d7652ac9cacc6f..0000000000000000000000000000000000000000 --- a/neonView/ClassificationGroupAnalysesChart_view/ClassificationGroupAnalysesChart_view.aod +++ /dev/null @@ -1,22 +0,0 @@ -<?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>ClassificationGroupAnalysesChart_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <drawerLayout> - <name>layout</name> - <layoutCaption>Classification</layoutCaption> - <fixedDrawer v="true" /> - </drawerLayout> - </layout> - <children> - <singleDataChartViewTemplate> - <name>Groups</name> - <chartType>PIE</chartType> - <xAxis>GROUP</xAxis> - <yAxis>SCORE</yAxis> - <entityField>#ENTITY</entityField> - <title></title> - </singleDataChartViewTemplate> - </children> -</neonView> diff --git a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..ac701fd79bb19e0d3b9afcee91964fda6b03c8d7 --- /dev/null +++ b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod @@ -0,0 +1,36 @@ +<?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>ClassificationGroupPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>generic</header> + </headerFooterLayout> + </layout> + <children> + <genericViewTemplate> + <name>generic</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>856aa380-f737-4e33-b97a-fdc9230cddaa</name> + <entityField>object_type</entityField> + </entityFieldLink> + <entityFieldLink> + <name>9c5775b3-8000-4d2f-9400-e049afba2f60</name> + <entityField>TITLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>7a847889-24f7-4cfd-8dbc-786eaf9db963</name> + <entityField>SORTING</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>83bafcf6-7329-4fe8-b5dd-a3cb88babbd3</name> + <entityField>ClassificationGradings</entityField> + <view>ClassificationGradingMultipleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod index 80c1c9c1d26b88d54d1b2b430e6bc03f72e8370f..add9fa38736033c557315fd3b6920b080be9e10f 100644 --- a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod +++ b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod @@ -3,25 +3,22 @@ <name>ClassificationScoreMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <drawerLayout> + <noneLayout> <name>layout</name> - <layoutCaption>Possible Values</layoutCaption> - </drawerLayout> + </noneLayout> </layout> <children> - <genericMultipleViewTemplate> + <titledListViewTemplate> <name>scores</name> + <titleField>TITLE</titleField> + <autoNewRow v="true" /> <entityField>#ENTITY</entityField> <columns> - <neonGenericMultipleTableColumn> - <name>7d49c1b4-3525-410c-92d2-b21a69fd8dec</name> - <entityField>TITLE</entityField> - </neonGenericMultipleTableColumn> - <neonGenericMultipleTableColumn> - <name>db21eec0-16c6-4267-a785-cb63f15e43b3</name> + <neonTitledListTableColumn> + <name>d56f97c1-a634-4b12-8dd3-c2c32a9e16f1</name> <entityField>SCORE</entityField> - </neonGenericMultipleTableColumn> + </neonTitledListTableColumn> </columns> - </genericMultipleViewTemplate> + </titledListViewTemplate> </children> </neonView> diff --git a/neonView/ClassificationScoreMultiplePreview_view/ClassificationScoreMultiplePreview_view.aod b/neonView/ClassificationScoreMultiplePreview_view/ClassificationScoreMultiplePreview_view.aod deleted file mode 100644 index 2bd84028e041863b167cb27569b107f043ea8f6c..0000000000000000000000000000000000000000 --- a/neonView/ClassificationScoreMultiplePreview_view/ClassificationScoreMultiplePreview_view.aod +++ /dev/null @@ -1,24 +0,0 @@ -<?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>ClassificationScoreMultiplePreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <noneLayout> - <name>layout</name> - </noneLayout> - </layout> - <children> - <titledListViewTemplate> - <name>scores</name> - <titleField>TITLE</titleField> - <autoNewRow v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTitledListTableColumn> - <name>d56f97c1-a634-4b12-8dd3-c2c32a9e16f1</name> - <entityField>SCORE</entityField> - </neonTitledListTableColumn> - </columns> - </titledListViewTemplate> - </children> -</neonView> diff --git a/neonView/ClassificationTree_view/ClassificationTree_view.aod b/neonView/ClassificationTree_view/ClassificationTree_view.aod index d8b43717e9063dde797ea445c6c21d919d5e6765..ca36f8fd5fa5bb784aa2111d11e4981e1bf01081 100644 --- a/neonView/ClassificationTree_view/ClassificationTree_view.aod +++ b/neonView/ClassificationTree_view/ClassificationTree_view.aod @@ -10,12 +10,12 @@ <children> <treeTableViewTemplate> <name>ClassificationTreeTable</name> - <defaultGroupFields> - <element>CLASSIFICATIONGROUP</element> - </defaultGroupFields> <hideActions v="true" /> <showChildrenCount v="false" /> <entityField>#ENTITY</entityField> + <defaultGroupFields> + <element>CLASSIFICATIONGROUP</element> + </defaultGroupFields> <columns> <neonTreeTableColumn> <name>246c0212-dadb-4d71-9567-ceab37e9ef10</name> diff --git a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod new file mode 100644 index 0000000000000000000000000000000000000000..9b7072fc51941a61d42ed0f8044da5e86732ddc1 --- /dev/null +++ b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod @@ -0,0 +1,40 @@ +<?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>ClassificationTypePreview_View</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>generic</header> + </headerFooterLayout> + </layout> + <children> + <genericViewTemplate> + <name>generic</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>108530e0-ba87-4db3-9053-6bab10973cb9</name> + <entityField>OBJECT_TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>4aac1cf8-9ada-4459-b831-02064b43bc24</name> + <entityField>CLASSIFICATIONGROUP_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>8853a07b-0a5e-468a-84a4-c59bfd8eec9c</name> + <entityField>SCORETYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>d070599e-2a60-4de2-ae65-efda4943d199</name> + <entityField>infoField</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>6b9f9dc6-8fbf-4f8a-8ba2-250178f1dd1e</name> + <entityField>ClassificationScores</entityField> + <view>ClassificationScoreMultipleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod b/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod deleted file mode 100644 index 1a9bbcdc8b7c3d612317a8d6148e5718f6eef93b..0000000000000000000000000000000000000000 --- a/neonView/ClassificatonAdminPreview_view/ClassificatonAdminPreview_view.aod +++ /dev/null @@ -1,45 +0,0 @@ -<?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>ClassificatonAdminPreview_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <isOverlay v="false" /> - <overlayOrientation>PORTRAIT</overlayOrientation> - <layout> - <boxLayout> - <name>layout</name> - <autoHeight v="true" /> - </boxLayout> - </layout> - <children> - <genericViewTemplate> - <name>classification</name> - <showDrawer v="true" /> - <drawerCaption>Classification</drawerCaption> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>31662c73-7352-4eb2-889d-3f63bff25686</name> - <entityField>CLASSIFICATIONTYPE</entityField> - </entityFieldLink> - <entityFieldLink> - <name>7fddc4d4-6bdc-4c7a-9d69-bba4a9506707</name> - <entityField>CLASSIFICATIONGROUP</entityField> - </entityFieldLink> - <entityFieldLink> - <name>cb6e8f64-b2a4-4cc4-88b7-2f64f56b83dc</name> - <entityField>SCORETYPE</entityField> - </entityFieldLink> - </fields> - </genericViewTemplate> - <neonViewReference> - <name>97143b3d-9b13-4ad9-8f17-c134821d7a80</name> - <entityField>ClassificationGradings</entityField> - <view>ClassificationGradingMultiplePreview_view</view> - </neonViewReference> - <neonViewReference> - <name>214fbe22-378d-404e-99f8-f175e037f196</name> - <entityField>ClassificationScores</entityField> - <view>ClassificationScoreMultiplePreview_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod index 29ebb148c72534308c92c4a75a65077122bd422e..c66526bd77fa3230cbf1d393380f6c51b9324411 100644 --- a/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod +++ b/neonView/ClassificatonPreview_view/ClassificatonPreview_view.aod @@ -14,7 +14,9 @@ <genericViewTemplate> <name>classification</name> <showDrawer v="true" /> - <drawerCaption>Classification</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="false" /> + <hideEmptyFields v="false" /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -25,7 +27,10 @@ </genericViewTemplate> <genericViewTemplate> <name>info</name> + <showDrawer v="true" /> + <fixedDrawer v="true" /> <entityField>#ENTITY</entityField> + <isEditable v="false" /> <title></title> <fields> <entityFieldLink> diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod index 19ec98e97d3ca1fb6e441f2ef2ff5effc733f4fe..874bbf3c62f6c5150f3e208f50c825539a94715a 100644 --- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod +++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod @@ -11,12 +11,12 @@ <children> <treeTableViewTemplate> <name>EntriesTreeTable</name> - <nodeExpandedField>expanded</nodeExpandedField> + <nodeExpandedField></nodeExpandedField> + <hideContentSearch v="false" /> + <entityField>#ENTITY</entityField> <defaultGroupFields> <element>CONTAINER</element> </defaultGroupFields> - <hideContentSearch v="false" /> - <entityField>#ENTITY</entityField> <columns> <neonTreeTableColumn> <name>6100879d-dc6a-4c7e-b750-f5b7e627f48a</name> diff --git a/neonView/OrganisationtClassificationAndChart_view/OrganisationtClassificationAndChart_view.aod b/neonView/OrganisationClassification/OrganisationClassification.aod similarity index 73% rename from neonView/OrganisationtClassificationAndChart_view/OrganisationtClassificationAndChart_view.aod rename to neonView/OrganisationClassification/OrganisationClassification.aod index 5af287813a87f0e58345de34b45311f3c7fb981b..9019bf34d2fc9a1c046f10134326513ba14eef59 100644 --- a/neonView/OrganisationtClassificationAndChart_view/OrganisationtClassificationAndChart_view.aod +++ b/neonView/OrganisationClassification/OrganisationClassification.aod @@ -1,6 +1,6 @@ <?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>OrganisationtClassificationAndChart_view</name> + <name>OrganisationClassification</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> @@ -15,10 +15,5 @@ <entityField>Classifications</entityField> <view>ClassificationTree_view</view> </neonViewReference> - <neonViewReference> - <name>427a8f25-63e5-44fd-98b9-49553f02e38d</name> - <entityField>Classifications</entityField> - <view>ClassificationChart_view</view> - </neonViewReference> </children> </neonView> diff --git a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod index 23aaa04349f00f25bad81265b3723c0e8320a19e..3f81db3f2e4ff280a021b5b2b8b9271c3ebd5f19 100644 --- a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod +++ b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod @@ -14,7 +14,7 @@ <neonViewReference> <name>b49a0291-89cc-4962-8706-5044aa2f9e21</name> <entityField>#ENTITY</entityField> - <view>OrganisationtClassificationAndChart_view</view> + <view>OrganisationClassification</view> </neonViewReference> </children> </neonView> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 1cc87b9732a33851587d07a0ca3950c4d1c8d8c1..b969a541b7f3b3563add1bbf0bc2b4364bcafd7f 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -77,6 +77,10 @@ <name>1908e7ac-9e6a-4104-9d5b-da60a10a1c02</name> <entityField>STATUS</entityField> </neonTableColumn> + <neonTableColumn> + <name>c935dcaf-d1eb-4b2c-afee-a58f3f63458d</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>2a82ed1e-05bf-408a-82e0-4de6195dad49</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> @@ -120,6 +124,10 @@ <name>2c8450d2-a8a5-49d3-92c5-bf08d32a46db</name> <entityField>STATUS</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>3aedcc38-0313-43d7-9c84-67f03e28038a</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>d134034c-e391-4df3-9205-465d8a390996</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod index 7c31d30da5f0f8c94646d827996da79ec32e758a..4b49bf017ef8e844fe502401ba56b0a5820d7f0c 100644 --- a/neonView/OrganisationMain_view/OrganisationMain_view.aod +++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod @@ -40,6 +40,11 @@ <entityField>ObjectTrees</entityField> <view>ObjectTreeFilter_view</view> </neonViewReference> + <neonViewReference> + <name>0b618d7e-61e0-42f3-ad0b-176afb9f6da4</name> + <entityField>Classifications</entityField> + <view>ClassificationTree_view</view> + </neonViewReference> <neonViewReference> <name>45c0f486-e7df-48ac-a201-661ac07f5fed</name> <entityField>#ENTITY</entityField> @@ -50,11 +55,6 @@ <entityField>#ENTITY</entityField> <view>OrganisationAttributeRestriction_view</view> </neonViewReference> - <neonViewReference> - <name>cdd8e4b8-b3aa-445f-affc-e1fc5b0c03cd</name> - <entityField>#ENTITY</entityField> - <view>OrganisationClassificationDrawer_view</view> - </neonViewReference> <neonViewReference> <name>eba90ed2-5e55-4cdb-9e0b-5a09feeb7536</name> <entityField>Documents</entityField> diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod index bf5ee6388ff0dc8ccda5ab6de099597528e34587..b57cbbcf2f6b70b41115f6f620381b76b2778fa6 100644 --- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod +++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod @@ -102,8 +102,8 @@ <entityField>LastActivity</entityField> </entityFieldLink> <entityFieldLink> - <name>f367d831-d594-4dc1-8e1e-b7c3bf45e2ad</name> - <entityField>OpenTasks</entityField> + <name>7699811a-42f2-48d4-833d-1425db5ba5d0</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> </entityFieldLink> </fields> </scoreCardViewTemplate> diff --git a/neonView/SaleprojectOverviewCharts_view/SaleprojectOverviewCharts_view.aod b/neonView/SaleprojectOverviewCharts_view/SaleprojectOverviewCharts_view.aod deleted file mode 100644 index cf426058ce5702f9dbe96151abe91d548cb0a906..0000000000000000000000000000000000000000 --- a/neonView/SaleprojectOverviewCharts_view/SaleprojectOverviewCharts_view.aod +++ /dev/null @@ -1,24 +0,0 @@ -<?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>SaleprojectOverviewCharts_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - <direction>HORIZONTAL</direction> - <maxDirectionElements v="3" /> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>4191cb26-76aa-4094-8ff4-b0cfc17bda2c</name> - <entityField>ClassificationGroups</entityField> - <view>ClassificationGroupAnalysesChart_view</view> - </neonViewReference> - <neonViewReference> - <name>a5583507-7e5a-40dd-9af8-a227b6be5af3</name> - <entityField>SalesprojectForecastCharts</entityField> - <view>TurnoverChartForcastDrawer_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod b/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod deleted file mode 100644 index 912611206de885cbb79c126b484218054b42c5c1..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectClassificationAndChart_view/SalesprojectClassificationAndChart_view.aod +++ /dev/null @@ -1,25 +0,0 @@ -<?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>SalesprojectClassificationAndChart_view</name> - <title></title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - <direction>HORIZONTAL</direction> - <maxDirectionElements v="2" /> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>b2bbddb9-1a44-4926-9707-7052f96e5963</name> - <entityField>Classifications</entityField> - <view>ClassificationTree_view</view> - </neonViewReference> - <neonViewReference> - <name>0442c345-d0a3-4778-a906-c5ef86dacd16</name> - <entityField>Classifications</entityField> - <view>ClassificationChart_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod b/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod deleted file mode 100644 index 6097fe64b235e5b44beb8e33baf39de6ef8754b2..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectClassificationAttribute_view/SalesprojectClassificationAttribute_view.aod +++ /dev/null @@ -1,23 +0,0 @@ -<?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>SalesprojectClassificationAttribute_view</name> - <title>Categorization</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <boxLayout> - <name>layout</name> - </boxLayout> - </layout> - <children> - <neonViewReference> - <name>2cb777a4-cf46-4337-9b17-fc8b6026209b</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectClassificationDrawer_view</view> - </neonViewReference> - <neonViewReference> - <name>523e3855-eade-4cce-842d-9b272b028cbb</name> - <entityField>AttributeTree</entityField> - <view>AttributeRelationTreeDrawer_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectClassificationDrawer_view/SalesprojectClassificationDrawer_view.aod b/neonView/SalesprojectClassificationDrawer_view/SalesprojectClassificationDrawer_view.aod deleted file mode 100644 index a51cbe2ee81f7ab96d0de0a2047453c730d7ccad..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectClassificationDrawer_view/SalesprojectClassificationDrawer_view.aod +++ /dev/null @@ -1,19 +0,0 @@ -<?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>SalesprojectClassificationDrawer_view</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <drawerLayout> - <name>layout</name> - <layoutCaption>Classification</layoutCaption> - <fixedDrawer v="true" /> - </drawerLayout> - </layout> - <children> - <neonViewReference> - <name>8cec9c22-7304-47f3-9d46-909dec12ca2a</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectClassificationAndChart_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectClassification_view/SalesprojectClassification_view.aod b/neonView/SalesprojectClassification_view/SalesprojectClassification_view.aod deleted file mode 100644 index b6a3767d13dc962239c7da8f748b9d4f3c339bff..0000000000000000000000000000000000000000 --- a/neonView/SalesprojectClassification_view/SalesprojectClassification_view.aod +++ /dev/null @@ -1,28 +0,0 @@ -<?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>SalesprojectClassification_view</name> - <title>Classifications</title> - <majorModelMode>DISTRIBUTED</majorModelMode> - <layout> - <noneLayout> - <name>layout</name> - </noneLayout> - </layout> - <children> - <scoreCardViewTemplate> - <name>ClassificationResult</name> - <entityField>#ENTITY</entityField> - <fields> - <entityFieldLink> - <name>c9fef1fc-21d2-4b6d-913f-a4507fde4dcb</name> - <entityField>ClassificationResult</entityField> - </entityFieldLink> - </fields> - </scoreCardViewTemplate> - <neonViewReference> - <name>e8de8288-df16-4deb-9ce0-6554a669724f</name> - <entityField>Classifications</entityField> - <view>ClassificationTree_view</view> - </neonViewReference> - </children> -</neonView> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index d0ac5d4dec825ac4bfd966729eb8749373468341..2713e11d767a15467c952dfae1354d775b7a2fdc 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -60,6 +60,7 @@ <element>PROJECTCODE</element> <element>PROJECTTITLE</element> </linkedColumns> + <fixedFilterFields /> <title></title> <columns> <neonTableColumn> @@ -82,6 +83,10 @@ <name>20f132ef-161e-4b84-b6ae-1f4daf016d16</name> <entityField>PROBABILITY_AI</entityField> </neonTableColumn> + <neonTableColumn> + <name>88e6bebb-e83d-43ec-82f1-cc778fac458e</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>fec843c3-f7c0-42c7-8295-50386651edb2</name> <entityField>STARTDATE</entityField> @@ -102,11 +107,13 @@ </tableViewTemplate> <treeTableViewTemplate> <name>Treetable</name> + <defaultGroupFields /> <entityField>#ENTITY</entityField> <linkedColumns> <element>PROJECTCODE</element> <element>PROJECTTITLE</element> </linkedColumns> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>c3c8cd94-5bb4-46bb-a61b-fec67fcc4841</name> @@ -124,6 +131,10 @@ <name>9b7b8a15-4a8d-41cb-bb46-3b1ed573dc6e</name> <entityField>CONTACT_ID</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6d9d1365-985a-4357-8ecc-16ddcc201ea8</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>745d6192-4817-49e6-8cb2-8470c9c25f4d</name> <entityField>STARTDATE</entityField> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 51150b360d3f8f827aec84f675852323586c1767..9098e124f358def2d86451abbac946a00b6cd0aa 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -30,9 +30,14 @@ <view>SalesprojectMemberActivity_view</view> </neonViewReference> <neonViewReference> - <name>67659a20-068f-4522-ad33-2c35e29f929a</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectClassificationAttribute_view</view> + <name>7ac103ea-1131-41e0-85ce-e7d2fc86dfd8</name> + <entityField>Attributes</entityField> + <view>AttributeRelationTree_view</view> + </neonViewReference> + <neonViewReference> + <name>d0c1344f-c143-43b4-9c44-f823fb525eff</name> + <entityField>Classifications</entityField> + <view>ClassificationTree_view</view> </neonViewReference> <neonViewReference> <name>8a83afee-e02c-4714-9641-13b62c95cea1</name> diff --git a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod index 6385f42110ad2479dcb550376ffa2094159aa143..9a84bbb876ca23e4febca4440f2caaddaf6c263b 100644 --- a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod +++ b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod @@ -24,9 +24,9 @@ </devices> </neonViewReference> <neonViewReference> - <name>dd0dd64f-1135-46c5-82d7-9d1e67cf4810</name> - <entityField>#ENTITY</entityField> - <view>SaleprojectOverviewCharts_view</view> + <name>729108f8-a054-4ea7-9ef8-14b686c6340b</name> + <entityField>SalesprojectForecastCharts</entityField> + <view>TurnoverChartForcastDrawer_view</view> </neonViewReference> </children> </neonView> diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod index dbf8adad5727fdd82cff1371702bd42bd82a794e..97bfa5d73f75c2285f288f5dfe828d02446e39e8 100644 --- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod +++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod @@ -99,6 +99,7 @@ </neonViewReference> <scoreCardViewTemplate> <name>AdditionalInfo</name> + <fieldActions /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -106,8 +107,8 @@ <entityField>InactiveTime</entityField> </entityFieldLink> <entityFieldLink> - <name>838cc7e2-6d6a-484a-92ad-d01adc2504df</name> - <entityField>ClassificationResult</entityField> + <name>49513dd7-f19a-450b-9fcf-d320e2f72c42</name> + <entityField>CLASSIFICATIONSTORAGE_ID</entityField> </entityFieldLink> <entityFieldLink> <name>ce670b75-346e-4aeb-b72d-5ef68dd77e71</name> diff --git a/process/AISalesproject_lib/process.js b/process/AISalesproject_lib/process.js index c1a63392f2bfc2786c2e3e79c4f38146e11f990d..e0ceec91ec4f07fe072160f85fdbf3133a09ca71 100644 --- a/process/AISalesproject_lib/process.js +++ b/process/AISalesproject_lib/process.js @@ -202,7 +202,7 @@ AISalesprojectUtil.getClassificationValues = function (pClassificationType, pObj .and("CLASSIFICATION.OBJECT_TYPE", pObjectType) .and("CLASSIFICATION.OBJECT_ROWID", pObjectRowid)) .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCOREID") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", pClassificationType) + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pClassificationType) .andIfSet("CLASSIFICATIONTYPE.SCORETYPE", pScoreType) .cell() diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index 81a5208ba9200da0a4296046c55485446b2f78a5..d70501cef8425a1503b22892f6d8f34341c4c947 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -25,7 +25,7 @@ function AttributeSearchNameCoder(){} * * @param {String} pUid <p/> attribute uid of the attribute that has to be encoded * @param {String} pAttributeType <p/> attribute type of the attribute that has to be encoded - * <br /> while you may able to specify any string, only values of $AttributeTypes.*** are useful + * <br/> while you may able to specify any string, only values of $AttributeTypes.*** are useful * * @return {String} <p/> an encoded string of the given parametervalues * <br/> this is basically a serialized object which is base64 encoded diff --git a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..9b182044a8785df3037df931f0df656d095ae109 --- /dev/null +++ b/process/ClassificationFilter_lib/ClassificationFilter_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>ClassificationFilter_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/ClassificationFilter_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/ClassificationFilter_lib/process.js b/process/ClassificationFilter_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..ed71bb867c3a4386c81698a739ca1b7fba9442af --- /dev/null +++ b/process/ClassificationFilter_lib/process.js @@ -0,0 +1,343 @@ +import("system.logging"); +import("Context_lib"); +import("Classification_lib"); +import("Entity_lib"); +import("Sql_lib"); +import("system.entities"); +import("system.SQLTYPES"); +import("system.translate"); +import("system.util"); +import("system.vars"); +import("Util_lib"); + +/** + * Methods used for the classification type filter extension set + * Do not create an instance of this! + * + * @class + */ +function ClassificationTypeFilterUtils() {} + +/** + * fetches classificationtypes and transforms them into filter fields + * + * @param {String} pObjectType <p/> contextId of the context whoes attributes are used for providing the filter fields + * + * @return {String} <p/> field-definitions (array of objects) that are ready to use for a filterExtensionSet in a stringified form + * <br/> The object within the array contains the following properties: + * <ul> + * <li>name - classificationtypeid (UUID of the classificationtype)</li> + * <li>title - "classification: " + string of the classificationtype translated (for the end user)</li> + * <li>contentType - string of the neon-contentType (TEXT)</li> + * <li>hasDropDownValues - boolean if possible values have to be calculated or not (always true atm)</li> + * </ul> + * @static + */ +ClassificationTypeFilterUtils.getFilterFields = function(pObjectType) +{ + var res = []; + var scoreTypes = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONGROUP.TITLE") + .from("CLASSIFICATIONTYPE") + .join("CLASSIFICATIONGROUP", "CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID = CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .orderBy("CLASSIFICATIONTYPE.SCORETYPE asc") + .table(); + + var titleField = SqlUtils.translateStatementWithQuotes(ClassificationTypeFilterUtils.getTranslationSql()); + for (let i = 0; i < scoreTypes.length; i++) + { + res.push({ + name: scoreTypes[i][0], + title: translate.text(scoreTypes[i][2])+ ": " + translate.text(scoreTypes[i][1]), + contentType: "TEXT", + hasDropDownValues: true, + isGroupable: true, // These Fields are also able to be grouped + groupedRecordField: "CLASSIFICATION.CLASSIFICATIONSCORE_ID", // The DB-field that is being grouped by (see also groupQueryProcess) + titleRecordField: titleField // The displayname (see also groupQueryProcess) + }); + } + + return JSON.stringify(res); +} + +/** + * fetches classificationscores that are filterable and transforms them into filter fields for the current context + * + * @see ClassificationTypeFilterUtils.getFilterFields for more details + * @static + */ +ClassificationTypeFilterUtils.makeFilterFields = function() +{ +var filter = JSON.parse(vars.getString("$local.filter")); + +var classificationTypeId = filter.name; + +var classificationValue = newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID, CLASSIFICATIONSCORE.TITLE") + .from("CLASSIFICATIONSCORE") + .where("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", classificationTypeId) + .orderBy("CLASSIFICATIONSCORE.TITLE") + .table(); + +for (let i = 0; i < classificationValue.length; i++) + classificationValue[i][1] = translate.text(classificationValue[i][1]) + +return classificationValue; +} + +/** + * Builds a Sql-condition for a classification filter extension set. This allows to filter for classificationtypes within a db-table + * + * @see ClassificationTypeFilterUtils.getFilterCondition for more details + * @static + */ +ClassificationTypeFilterUtils.makeFilterConditionSql = function() +{ + var filterCond = vars.get("$local.condition"); + var uidInfo = EntityUtils.parseUidColumn(vars.get("$sys.uidcolumn")); + var columnPlaceholder = vars.get("$local.columnPlaceholder"); + var res = ClassificationTypeFilterUtils.getFilterCondition(filterCond, uidInfo.table, uidInfo.column, columnPlaceholder); + + return res; +} + +/** + * Builds a Sql-condition that may be used in a filter extension set and allows to filter for classificationtypes within a db-table + * + * @param {String} pCondition <p/> a SQL-condition like it is given in the "$local.condition"-variable in filter extension sets + * @param {String} pIdTableName <p/> name of the db-table where the data shall be filtered + * @param {String} pIdColumnName <p/> name of the primarykey-column of the table that was given via pIdTablename + * @param {String} pColumnPlaceholder <p/> name of the placeholder where the columnname should be like it is given in the + * "$local.columnPlaceholder"-variable in filter extension sets + * + * @return {SqlBuilder} <p/> a SqlBuilder-condition that contains a sub-select and may be used for filtering data + * @static + */ +ClassificationTypeFilterUtils.getFilterCondition = function(pCondition, pIdTableName, pIdColumnName, pColumnPlaceholder) +{ + var resSql; + + var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID"); + + //a SqlBuilder.IN() in a newWhere is not used here since the subselect can contain a placeholder + //(the variable condition) that would break the function + resSql = pIdTableName + "." + pIdColumnName + " in (" + newSelect(pIdTableName + "." + pIdColumnName) + .from(pIdTableName) + .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = " + pIdTableName + "." + pIdColumnName)) + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATION.CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID") + .where(condition) + ")"; + + return resSql; +}; + +/** +* gets all titletranslations of the classification scores +* +* +* @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements +*/ +ClassificationTypeFilterUtils.getTranslationSql = function() +{ + + var config = entities.createConfigForLoadingRows().entity("ClassificationScore_entity") + .fields(["CLASSIFICATIONSCOREID", "translatedTitle"]); + + + var rows = entities.getRows(config); + var res = SqlUtils.getResolvingCaseWhenFromObject(rows, "CLASSIFICATIONSCOREID", "translatedTitle", "CLASSIFICATIONSCORE_ID"); + return res; +} + + + +/** + * Procides static methods for en- or decoding classification group filter names + * AttributeFilter names are shared over several processes and contain therefore various information + * The infomration needs to be encoded to be able to transfer it over the different processes + * + * @class + * + */ +function ClassificationGroupFilterNameCoder(){} + +/** + * encodes several parameters into one string that can be used as classification group filter-name + * + * @param {String} pUid <p/> attribute uid of the attribute that has to be encoded + * @param {String} pAttributeType <p/> attribute type of the attribute that has to be encoded + * <br/> while you may able to specify any string, only values of $AttributeTypes.*** are useful + * + * @return {String} <p/> an encoded string of the given parametervalues + * <br/> this is basically a serialized object which is base64 encoded + * @static + */ +ClassificationGroupFilterNameCoder.encode = function (pClassificationGroupId, pRepresentingSqlExpression) +{ + var res = { + classificationGroupId: pClassificationGroupId, + representingSqlExpression: pRepresentingSqlExpression + }; + res = JSON.stringify(res); + res = util.encodeBase64String(res); + return res; +}; + +/** + * decodes a string that was encoded with AttributeSearchNameCoder.encode + * + * + * @param {String} pEncodedString <p/> string that shall be decoded; the origin of the name has to be a filter-object + * + * @return {Object} <p/> an object that contains all keys and values that have been encoded with AttributeSearchNameCoder.encode + * @static + */ +ClassificationGroupFilterNameCoder.decode = function (pEncodedString) +{ + var res = pEncodedString.substr(pEncodedString.lastIndexOf(".") + 1); + res = util.decodeBase64String(res); + res = JSON.parse(res); + return res; +}; + +/** + * Methods used for the classification group filter extension set + * Do not create an instance of this! + * + * @class + */ +function ClassificationGroupFilterUtils() {} + + +/** + * fetches classificationgroups and transforms them into filter fields + * + * @param {String} pObjectType <p/> contextId of the context whoes attributes are used for providing the filter fields + * + * @return {String} <p/> field-definitions (array of objects) that are ready to use for a filterExtensionSet in a stringified form + * <br/> The object within the array contains the following properties: + * <ul> + * <li>name - classificationtypeid (UUID of the classificationtype)</li> + * <li>title - "classification: " + string of the classificationtype translated (for the end user)</li> + * <li>contentType - string of the neon-contentType (TEXT)</li> + * <li>hasDropDownValues - boolean if possible values have to be calculated or not (always true atm)</li> + * </ul> + * @static + */ +ClassificationGroupFilterUtils.getFilterFields = function(pObjectType) +{ + var sqlHelper = new SqlMaskingUtils(); + var res = []; + + var config = entities.createConfigForLoadingRows() + .entity("ClassificationGroup_entity") + .fields(["CLASSIFICATIONGROUPID", "#CONTENTTITLE"]) + .provider("SpecificObjectTypeGroups") + .addParameter("ObjectType_param", pObjectType); + var classificationGroups = entities.getRows(config); + logging.log("classificationGroups>>" + JSON.stringify(classificationGroups)); + classificationGroups = ArrayUtils.sortArrayOfObjects(classificationGroups, "#CONTENTTITLE", true, false); + + classificationGroups.forEach(function(classificationGroup, idx){ + var classificationGroupId = classificationGroup["CLASSIFICATIONGROUPID"]; + var classificationGroupTitle = classificationGroup["#CONTENTTITLE"]; + + var representingSqlExpression = sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1); + var name = ClassificationGroupFilterNameCoder.encode(classificationGroupId, sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1)); + res.push({ + name: name, + title: classificationGroupTitle, + contentType: "TEXT", + hasDropDownValues: true, + isGroupable: true, + groupedRecordField: representingSqlExpression //title and group valure are the same (for example a resulting "A") + }); + }); + return JSON.stringify(res); +}; + +ClassificationGroupFilterUtils.makeFilterFields = function() +{ + var objectType = ContextUtils.getCurrentContextId(); + var res = ClassificationGroupFilterUtils.getFilterFields(objectType); + return res; +}; + + +/** + * fetches classificationscores that are filterable and transforms them into filter fields for the current context + * + * @see ClassificationTypeFilterUtils.getFilterFields for more details + * @static + */ +ClassificationGroupFilterUtils.getFilterValues = function(pFilter) +{ + var filter = JSON.parse(pFilter); + var filterName = filter.name; + var classificationGroupId = ClassificationGroupFilterNameCoder.decode(filterName).classificationGroupId; + + var classificationValue = newSelect("CLASSIFICATIONGRADING.GRADING, CLASSIFICATIONGRADING.GRADING") + .from("CLASSIFICATIONGRADING") + .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroupId) + .orderBy("CLASSIFICATIONGRADING.MAXGRADEFORSCORE desc") + .table(); + + return classificationValue; +}; + + +/** + * fetches classificationscores that are filterable and transforms them into filter fields for the current context + * + * @see ClassificationTypeFilterUtils.getFilterFields for more details + * @static + */ +ClassificationGroupFilterUtils.makeFilterValues = function() +{ + var filter = vars.getString("$local.filter") + var res = ClassificationGroupFilterUtils.getFilterValues(filter); + return res; +}; + +/** + * Builds a Sql-condition that may be used in a filter extension set and allows to filter for classificationtypes within a db-table + * + * @param {String} pCondition <p/> a SQL-condition like it is given in the "$local.condition"-variable in filter extension sets + * @param {String} pIdTableName <p/> name of the db-table where the data shall be filtered + * @param {String} pIdColumnName <p/> name of the primarykey-column of the table that was given via pIdTablename + * @param {String} pColumnPlaceholder <p/> name of the placeholder where the columnname should be like it is given in the + * "$local.columnPlaceholder"-variable in filter extension sets + * + * @return {SqlBuilder} <p/> a SqlBuilder-condition that contains a sub-select and may be used for filtering data + * @static + */ +ClassificationGroupFilterUtils.getFilterCondition = function(pObjectType, pFilterName, pCondition, pRawValue, pOperatorName, pIdTableName, + pIdColumnName, pColumnPlaceholder) +{ + var decodedFilterName = ClassificationGroupFilterNameCoder.decode(pFilterName); + var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, decodedFilterName.representingSqlExpression); + + return condition; +}; + + +/** + * Builds a Sql-condition for a classification group filter extension set. This allows to filter for classificationgroups within a db-table + * + * + * @see ClassificationGroupFilterUtils.getFilterCondition for more details + * @static + */ +ClassificationGroupFilterUtils.makeFilterConditionSql = function() +{ + var objectType = ContextUtils.getCurrentContextId(); + var filterName = vars.get("$local.name"); + var filterCond = vars.get("$local.condition"); + var filterRawValue = vars.get("$local.rawvalue"); + var filterOpratorName = vars.get("$local.operator2").trim(); + var uidInfo = EntityUtils.parseUidColumn(vars.get("$sys.uidcolumn")); + var columnPlaceholder = vars.get("$local.columnPlaceholder"); + + var res = ClassificationGroupFilterUtils.getFilterCondition(objectType, filterName, filterCond, filterRawValue, filterOpratorName, + uidInfo.table, uidInfo.column, columnPlaceholder); + + return res; +}; \ No newline at end of file diff --git a/process/Classification_lib/process.js b/process/Classification_lib/process.js index 0970b047c9c23c9f6479df9187b0139f30746c2b..baa8bf080832abad6dba02de9b24c8675fcaa059 100644 --- a/process/Classification_lib/process.js +++ b/process/Classification_lib/process.js @@ -1,8 +1,13 @@ +import("system.text"); +import("system.translate"); +import("system.result"); +import("system.entities"); import("system.eMath"); import("system.util"); import("system.vars"); import("system.db"); import("Sql_lib"); +import("Util_lib"); /** * Methods to manage classifications.<br> @@ -12,12 +17,35 @@ import("Sql_lib"); */ function ClassificationUtils() {} +/** + * Formats the summary title for one specific group <br/> + * This is done by + * + + * @param {Number|String} pCurrentScore <p/>Current score that is reached for a group, e.g. 45 + * @param {String} pGroupId <p/>UID of the classification group where the display value is determined. <br/> + * This is used for determing the maximum value of the group and the resulting + * classificaiton value (for example: "B") + * @param {String} pGroupName <p/>Name of the group that was passed as ID. This is used as display value and will not be translated, + * you have to pass this value already translated to the target locale. <br/> + * The reason for not loading this value based on the groupId is: better performance optimization + * @return {String} <p/>formated and translated title, e.g.: "1. Target Group: 45/120 points = B" + */ +ClassificationUtils.formatDisplaySummaryForGroup = function(pCurrentScore, pGroupId, pGroupName) +{ + var maxScore = ClassificationUtils.getMaxScore(pGroupId); + var classifications = ClassificationUtils.getClassifications(pCurrentScore, pGroupId); + + pCurrentScore = text.formatDouble(pCurrentScore, "#"); + maxScore = text.formatDouble(maxScore, "#"); + var res = translate.withArguments("%0: %1/%2 points = %3", [pGroupName, pCurrentScore, maxScore, classifications]); + return res; +}; + /** * Get the score of the classification. You can get all groups at once or only the score for one group. * - * @param {String} pClassificationType <p> - * The classification-type (usage) e.g. the key id<br> - * from keyword 'ClassificationType'.<br> + * @param {String} pObjectType <p> * The object type.<br> * @param {String} pObjectRowid <p> @@ -30,18 +58,18 @@ function ClassificationUtils() {} * Returns all scores as object-map.<br> * (e.g. {"scoreGroup1": 0, "scoreGroup2": 20}) */ -ClassificationUtils.getScoreAsObject = function(pClassificationType, pObjectType, pObjectRowid, pClassificationGroup) +ClassificationUtils.getScoreAsObject = function(pObjectType, pObjectRowid, pClassificationGroup) { - var score = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP, case when sum(score) is not null then sum(score) else 0 end") + var score = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, case when sum(score) is not null then sum(score) else 0 end") .from("CLASSIFICATIONTYPE") .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATIONTYPEID = CLASSIFICATIONTYPE_ID") .and("CLASSIFICATION.OBJECT_TYPE", pObjectType) .and("CLASSIFICATION.OBJECT_ROWID", pObjectRowid)) .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCOREID") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", pClassificationType) - .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP", pClassificationGroup) - .groupBy("CLASSIFICATIONGROUP") - .orderBy("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", pClassificationGroup) + .groupBy("CLASSIFICATIONGROUP_ID") + .orderBy("CLASSIFICATIONGROUP_ID") .table(); var scores = {}; @@ -53,92 +81,77 @@ ClassificationUtils.getScoreAsObject = function(pClassificationType, pObjectType } /** - * Get the score of the classification. You can get all groups at once or only the score for one group. + * Gets the scores of a Object, either for all of them or only for one group (depending on the pClassificationGroupId param, + * if it's set you get only the score of that group) * - * @param {String} pClassificationType <p> - * The classification-type (usage) e.g. the key id<br> - * from keyword 'ClassificationType'.<br> * @param {String} pObjectType <p> * The object type.<br> * @param {String} pObjectRowid <p> * The row id. (UUID of the object, e.g: OrganisationId of Organisation)<br> - * @param {String} pClassificationGroup=undefined (optional) <p> - * The classification group. If it is undefined,<br> - * the classification for all groups are returned <br> + * @param {String} pClassificationGroupId (optional) <p> + * The classification group id. If it is undefined,<br> + * the classificationScores for all groups are returned <br> * as Object(-map)<br> * @return {Array} <p> - * Returns all scores in a Array.<br> - * (e.g. ["10,"30","70"] <br> - * 0 gets returned for null values) + * Returns all scores in a Array with this structure:<br> + * + * [[ID, SCORE], [ID, SCORE], [ID, SCORE]]; */ -ClassificationUtils.getScore = function(pClassificationType, pObjectType, pObjectRowid, pClassificationGroup) +ClassificationUtils.getScore = function(pObjectType, pObjectRowid, pClassificationGroupId) { - var score = newSelect("sum(score), CLASSIFICATIONTYPE.CLASSIFICATIONGROUP") + var scoreArray = []; + var score = newSelect("sum(score), CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID") .from("CLASSIFICATIONTYPE") .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATIONTYPEID = CLASSIFICATIONTYPE_ID") .and("CLASSIFICATION.OBJECT_TYPE", pObjectType) .and("CLASSIFICATION.OBJECT_ROWID", pObjectRowid)) .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCOREID") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", pClassificationType) - .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP", pClassificationGroup) - .groupBy("CLASSIFICATIONGROUP") - .orderBy("CLASSIFICATIONGROUP") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .andIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", pClassificationGroupId) + .groupBy("CLASSIFICATIONGROUP_ID") + .orderBy("CLASSIFICATIONGROUP_ID") .table(); - - for (let i = 0; i < score.length; i++) + + var sorting = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .orderBy("CLASSIFICATIONGROUP.SORTING") + .table(); + + for (var i = 0; i < sorting.length; i++) { - if(score[i][0] == "") - score[i][0] = 0; + for (var ii = 0; ii < score.length; ii++) { + if(score[ii][1] == sorting[i][0]) + { + scoreArray[i] = score[ii] + } + } } - return score; + return scoreArray; } /** * Get all classifications for one dataset as String.<br> * Each char represents one classification.<br> * - * @param {String} pClassificationType <p> - * The classification-type (usage)<br> - * (e.g. the key id from keyword ClassificationType) - * @param {String} pObjectType <p> - * The object type.<br> - * @param {String} pObjectRowid <p> - * The row id.<br> -* @return {String} <p> -* The resulting classification. (e.g. "ACB")<br> - */ -ClassificationUtils.getClass = function(pClassificationType, pObjectType, pObjectRowid) -{ - var classificationGrade = []; - - var score = ClassificationUtils.getScore(pClassificationType, pObjectType, pObjectRowid); - for (var i = 0; i < score.length; i++) - classificationGrade[i] = ClassificationUtils.getClassifications(score[i][0], score[i][1]); - - return classificationGrade.join("") -} - -/** - * Get the classification relative to the max score.<br> - * The classes calculated in percent of the max score like this:<br> - * * @param {String} pScore <p> - * The archieved score (e.g. 42) - * @param {String} pClassificationGroup <p> - * The Name of the Classification Group + * The archieved score + * @param {String} pClassificationGroupId <p> + * The Id of the Classification Group * @return {String} <p> * Returns the corresponding classification.<br> */ -ClassificationUtils.getClassifications = function(pScore, pClassificationGroup) +ClassificationUtils.getClassifications = function(pScore, pClassificationGroupId) { var score = pScore; - var classificationGroup = pClassificationGroup; - var gradingTable = ClassificationUtils.getClassificationGrading(classificationGroup); + var classificationGroupId = pClassificationGroupId + var gradingTable = ClassificationUtils.getClassificationGrading(classificationGroupId); var grade = "-"; - for(var i = 0; i < gradingTable.length; i++) + for(let i = 0; i < gradingTable.length; i++) { if(Number(score) <= Number(gradingTable[i][0]) && score !=0 && grade == "-") { @@ -148,48 +161,59 @@ ClassificationUtils.getClassifications = function(pScore, pClassificationGroup) } return grade; } + /** * Gets the classification table <br> * - * @param {String} pClassificationGroup <p> + * @param {String} pClassificationGroupId <p> * The Classification Group * @return {String} <p> * Returns the corresponding classification table, ordered by the maxscore ascending.<br> */ -ClassificationUtils.getClassificationGrading = function(pClassificationGroup) +ClassificationUtils.getClassificationGrading = function(pClassificationGroupId) { - var gradingTable = newSelect("CLASSIFICATIONGRADING.MAXGRADEFORSCORE, CLASSIFICATIONGRADING.GRADING") - .from("CLASSIFICATIONGRADING") - .where("CLASSIFICATIONGRADING.CLASSIFICATIONTYPE_GROUP", pClassificationGroup) - .orderBy("MAXGRADEFORSCORE asc") - .table(); - return gradingTable; + var config = entities.createConfigForLoadingRows() + .entity("ClassificationGrading_entity") + .addParameter("ClassificationTypeId_param", pClassificationGroupId) + .fields(["MAXGRADEFORSCORE", "GRADING"]) + .ignorePermissions(true); + + var gradings = entities.getRows(config); + ArrayUtils.sortArrayOfObjects(gradings, "MAXGRADEFORSCORE", true, true); + gradings = gradings.map(function (row){ + return [row["MAXGRADEFORSCORE"], row["GRADING"]]; + }); + return gradings; } - -/** - * Gets the maximum score for one group depending on the pClassificationGroup param. +/**@cl + * Gets the maximum score for one group depending on the pClassificationGroupId param. * - * @param {String} pClassificationGroup (optional) <p> + * @param {String} pClassificationGroupId <p> * The classification groupname.<br> * @return {String} <p> * Returns the maximum possible score of the chosen group.<br> * */ -ClassificationUtils.getMaxScore = function(pClassificationGroup) +ClassificationUtils.getMaxScore = function(pClassificationGroupId) { - var maxScore = 0; - scores = newSelect("max(CLASSIFICATIONSCORE.SCORE)") - .from("CLASSIFICATIONTYPE") - .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP", pClassificationGroup) - .groupBy("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") - .arrayColumn(); + var sumMaxScore = 0; + + var config = entities.createConfigForLoadingRows() + .entity("ClassificationType_entity") + .ignorePermissions(true) + .addParameter("ClassificationGroupId_param", pClassificationGroupId) + .fields(["maxScore"]); + var scores = entities.getRows(config); for (let i = 0; i < scores.length; i++) - maxScore = eMath.addInt(maxScore, parseInt(scores[i])); + { + var maxScore = scores[i]["maxScore"]; + if (maxScore) + sumMaxScore = eMath.addInt(sumMaxScore, parseInt(maxScore)); + } - return maxScore; + return sumMaxScore; } /** @@ -197,102 +221,21 @@ ClassificationUtils.getMaxScore = function(pClassificationGroup) * Either as [["group", "group"]] (for the possible items process). * Or as [["group"]].<br> * - * @param {String} pClassificationtype <p> - * The classification type.<br> - * @param {Boolean} pTwoCol <p> - * Use two columns (for possible items process).<br> + * @param {String} pObjectType <p> + * The object type.<br> */ -ClassificationUtils.getAllGroups = function(pClassificationtype, pTwoCol) +ClassificationUtils.getAllGroups = function(pObjectType) { var sql = new SqlBuilder() - .select(["distinct CLASSIFICATIONGROUP", (pTwoCol ? "CLASSIFICATIONGROUP" : "")]) - .from("CLASSIFICATIONTYPE") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPE", pClassificationtype) - .orderBy("CLASSIFICATIONGROUP"); + .select(["distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", "CLASSIFICATIONGROUP.TITLE"]) + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .orderBy("CLASSIFICATIONGROUP.TITLE"); - if (pTwoCol) - return sql.table(); - else - return sql.arrayColumn(); + return sql.table(); } -/** - * Load the classification group for a classificaiton type<br> - * id from the db.<br> - * - * @param {String} pClassificationtypeId <p> - * The id of the classification type.<br> - */ -ClassificationUtils.getGroupFromDb = function(pClassificationtypeId) -{ - return newSelect("CLASSIFICATIONGROUP") - .from("CLASSIFICATIONTYPE") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", pClassificationtypeId) - .orderBy("CLASSIFICATIONGROUP") - .cell(); -} - -/** - * Update the groupname. Checks if it is already used and only updates it, if not. - * TODO: message to the user if it failed? (or return value - bool?) - * - * @param {String} pOldName <p> - * The old name, which shall be changed.<br> - * @param {String} pNewName <p> - * The new name.<br> - * @param {String} pClassificationType <p> - * The classification type.<br> - */ -ClassificationUtils.changeGroupName = function(pOldName, pNewName, pClassificationType) -{ - var groups = ClassificationUtils.getAllGroups(pClassificationType, false); - - if (groups.indexOf(pNewName, 0) == -1) - { - newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP", pOldName) - .updateData(true, "CLASSIFICATIONTYPE", ["CLASSIFICATIONGROUP"], null, [pNewName]); - } -} - -/** - * Get the classificationType for the current classification (either from parameter or selection-variable) - * - * @param {String} pParamField <p> - * The parameter field name. (e.g.: "$param.ClassificationType_param")<br> - * @param {String} pSelectionField <p> - * The parameter field name. (e.g.: "$sys.selectionRows")<br> - * @return {String} <p> - * The type (or undefined).<br> - */ -ClassificationUtils.getUsageType = function(pParamField, pSelectionField) -{ - if (vars.exists(pParamField) && vars.get(pParamField)) - classificationType = vars.get(pParamField); - else if (vars.exists(pSelectionField) && vars.get(pSelectionField)) - { - var selection = vars.get(pSelectionField); - if (selection.length > 0 && selection[0]["CLASSIFICATIONTYPE"]) - { - classificationType = selection[0]["CLASSIFICATIONTYPE"]; - } - } - - return classificationType; -} - -/** - * Update the coreName of a type.<br> - * - * @param {String} pNewScoreName <p> - * The new score name.<br> - * @param {String} pClassificationTypeId <p> - * The id of the classification type.<br> - */ -ClassificationUtils.changeScoreName = function(pNewScoreName, pClassificationTypeId) -{ - newWhere("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", pClassificationTypeId) - .updateData(true, "CLASSIFICATIONTYPE", ["SCORETYPE"], null, [pNewScoreName]); -} /** * Set a value for a classification type @@ -316,51 +259,200 @@ ClassificationUtils.setClassificationValue = function(pObjectType, pObjectId, pC /** - * Get all classifications for one dataset as String.<br> - * Each char represents one classification.<br> + * Gets the classificationGradingTable for a classificationGroup as Array.<br> + * ordered by the MaxGradeForScore descending <br> * - * @param {String} pScoreId <p> - * The classification score id you want the grading table for <br> + * @param {String} pClassificationGroupId <p> + * The classificationgroup you want the grading for <br> * -* @return {String} <p> -* The resulting classification grading table. (e.g. "ACB")<br> +* @return {Array} <p> +* The resulting gradingTable. <br> */ -ClassificationUtils.getGradingTableByScoreId = function(pScoreId) +ClassificationUtils.getGradingTableByGroupId = function(pClassificationGroupId) { - var scoreId = pScoreId; + var classificationGroupId = pClassificationGroupId; var gradingTable = newSelect("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MAXGRADEFORSCORE, CLASSIFICATIONGRADING.GRADING") - .from("CLASSIFICATIONGRADING") - .where("CLASSIFICATIONGRADING.CLASSIFICATIONTYPE_GROUP", newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP") - .from("CLASSIFICATIONTYPE") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID") - .from("CLASSIFICATIONSCORE") - .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", scoreId).cell()) - .groupBy("CLASSIFICATIONGROUP").cell()) - .orderBy("MAXGRADEFORSCORE desc") - .table(); + .from("CLASSIFICATIONGRADING") + .where("CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID", classificationGroupId) + .orderBy("MAXGRADEFORSCORE desc") + .table() return gradingTable; } /** - * Gets the classificationgroup from a classification score id as String.<br> + * Gets the classificationgroupId of a classification type as String.<br> + * + * @param {String} pClassificationType <p> + * The classification-type (usage)<br> + * (e.g. the key id from keyword ClassificationType) +* @return {String} <p> +* The classificationgroupId of the chosen classificationtype<br> + */ +ClassificationUtils.getClassificationGroup = function(pClassificationType) +{ + var classificationGroupId = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", pClassificationType) + .groupBy("CLASSIFICATIONGROUP_ID") + .cell() + return classificationGroupId; +} + +/** + * Get all classification type ids for a score using it's unique classification score id.<br> * * @param {String} pClassificationScoreId <p> * The classification score id - * * @return {String} <p> -* The classificationgroup of the chosen classificationtype<br> +* The resulting classification type.<br> */ -ClassificationUtils.getClassificationGroup = function(pClassificationScoreId) +ClassificationUtils.getClassificationType = function(pClassificationScoreId) { - var classificationGroup = newSelect("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP") - .from("CLASSIFICATIONTYPE") - .where("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID") - .from("CLASSIFICATIONSCORE") - .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", pClassificationScoreId) - .cell()) - .groupBy("CLASSIFICATIONGROUP") - .cell(); - return classificationGroup; -} \ No newline at end of file + var classificationType = newSelect("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID") + .from("CLASSIFICATIONSCORE") + .where("CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID", pClassificationScoreId) + .arrayColumn(); + return classificationType; +} + +/** + * Gets the Grading of a score for a group using an object that contains all the gradings.<br> + * + * @param {String} pGradingObject <p> + * The classification grading object + * @param {String} pGroupId <p> + * The classification group id + * @param {String} pScore <p> + * The score +* @return {String} <p> +* The resulting classification grading.<br> + */ +ClassificationUtils.getGradingFromObject = function(pGradingObject, pGroupId, pScore) +{ + var gradingObject = pGradingObject; + var groupId = pGroupId; + var score = pScore; + var grading = "-"; + for (var index in gradingObject[groupId]) + { + if(Number(score) <= Number(gradingObject[groupId][index][0]) && score != 0) + { + grading = gradingObject[groupId][index][1]; + break; + } + } + return grading; +} + +/** + * Inserts a empty classification data set into Classificationstorage, since every dataset of a classifiable module has to have an entry + * because the updateClassifications_serverProcess is only updating instead of inserting.<br> + * + * @param {String or Array} pUid <p> + * The unique uid('s) of the inserted record + * @param {String} pObjectType <p> + * The object type + */ +ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType) +{ + var classificationCount = newSelect("count(distinct CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID)") + .from("CLASSIFICATIONTYPE") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", pObjectType) + .cell(); + var classificationvalue = "-".repeat(classificationCount); + + if(Utils.isString(pUids)) + pUids = [pUids]; + + var columns = ["CLASSIFICATIONSTORAGEID", + "CLASSIFICATIONVALUE", + "OBJECT_ROWID", + "OBJECT_TYPE" + ]; + var types = db.getColumnTypes("CLASSIFICATIONSTORAGE", columns); + var inserts = []; + var values; + for (var i = 0; i < pUids.length; i++) + { + values = [util.getNewUUID(), + classificationvalue, + pUids[i], + pObjectType]; + inserts.push(["CLASSIFICATIONSTORAGE", columns, types, values]); + } + db.inserts(inserts); +} + +/** + * Gets the maximum score for one group depending on the pClassificationGroupId param. + * + * @param {String} pClassificationGroupId <p> + * The classification groupname.<br> + * @param {String} pClassificationType <p> + * The classification type id.<br> + * @return {String} <p> + * Returns the maximum possible score of the chosen group.<br> + * + */ +ClassificationUtils.getMaxScoreExcludeType = function(pClassificationGroupId, pClassificationType) +{ + var classificationGroupId = pClassificationGroupId; + var classificationType = pClassificationType; + var maxScore = 0; + scores = newSelect("max(CLASSIFICATIONSCORE.SCORE)") + .from("CLASSIFICATIONTYPE") + .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") + .where("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID", classificationGroupId) + .and("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", classificationType, SqlBuilder.NOT_EQUAL()) + .groupBy("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") + .arrayColumn(); + + for (let i = 0; i < scores.length; i++) + maxScore = eMath.addInt(maxScore, parseInt(scores[i])); + + return maxScore; +} + +/** + * decodes a string that was encoded with AttributeSearchNameCoder.encode + * + * + * @param {String} pEncodedString <p/> string that shall be decoded; the origin of the name has to be a filter-object + * + * @return {Object} <p/> an object that contains all keys and values that have been encoded with AttributeSearchNameCoder.encode + * @static + */ +ClassificationUtils.decode = function (pEncodedString) +{ + var value = pEncodedString; + if(value == undefined) + res = $ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE; + else if(value.charAt(0) != ";" && value.charAt(value.length) != ";") + res = $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP(); + else + { + var decodedIdvalues = text.decodeMS(value); + if(decodedIdvalues[0].charAt(0) != ";" && decodedIdvalues[0].charAt(decodedIdvalues[0].length) != ";") + res = $ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE(); + } + if(res) + result.string(res); + return res +}; + +/*this is right now (2020-08-15) the only way to get something like a constant with + - a prober name + - autocomplete support within the ADITO Designer + - and proper packageing all constants together +This may change in the future, if there is something better feel free to improve this */ +function $ClassificationRecordCategories(){} +$ClassificationRecordCategories.CLASSIFICATION_OBJECT_TYPE = function(){return "ClassificationObject_Type"}; +$ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_GROUP = function(){return "ClassificationGroup"}; +$ClassificationRecordCategories.CLASSIFICATION_CLASSIFICATION_TYPE = function(){return "ClassificationType"}; +$ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS = function(){return "ClassificationGroupExists"}; +$ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST = function(){return "ClassificationGroupDoesntExist"}; + +function $ClassificationPlaceholder(){} +$ClassificationPlaceholder.TOPSECRETPLACEHOLDER = function(){return "T0PS3CR3TPL4CEH0LD3R"}; \ No newline at end of file diff --git a/process/Entity_lib/process.js b/process/Entity_lib/process.js index cd17d5d9e24b261da1f869d40ebda76be6f3628e..afdfbfaa023b96d119e17ac92fa64920562076db 100644 --- a/process/Entity_lib/process.js +++ b/process/Entity_lib/process.js @@ -542,11 +542,11 @@ EntityConsumerRowsHelper.prototype.changeRows = function (pRowsToChange) pRowsToChange.forEach(function (changedRow) { changeCatalog[changedRow[this._uidField]] = changedRow; - }); + }, this); this._rows = this._rows.map(function (row) { return row[this._uidField] in changeCatalog ? changeCatalog[row[this._uidField]] : row; - }); + }, this); return this; } @@ -562,11 +562,11 @@ EntityConsumerRowsHelper.prototype.removeRows = function (pRowsToRemove) pRowsToRemove.forEach(function (deletedRow) { deleteCatalog[deletedRow[this._uidField]] = true; - }); + }, this); this._rows = this._rows.filter(function (row) { return !deleteCatalog[row[this._uidField]]; - }); + }, this); return this; } diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index eca66d022d91282194a39b763068f17b2ff622db..b36a20300d7be1944e504670ad47bd02e705b235 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -172,8 +172,8 @@ $KeywordRegistry.documentTemplateTypeCategory$serial = function(){return "2";}; $KeywordRegistry.documentTemplateTypeCategory$htmlTemplate = function(){return "7";}; $KeywordRegistry.classificationType = function(){return "ClassificationType";}; -$KeywordRegistry.classificationType$salesproject = function(){return "SALESPROJ";}; -$KeywordRegistry.classificationType$organisation = function(){return "ORGANISATION";}; +$KeywordRegistry.classificationType$salesproject = function(){return "Salesproject";}; +$KeywordRegistry.classificationType$organisation = function(){return "Organisation";}; $KeywordRegistry.personGender = function(){return "PersonGender";}; $KeywordRegistry.personGender$other = function(){return "o";}; diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index 9e9dfd908b37466d0fcf8724ecf5b3878edcdc96..3600f01d4ac7385d61f8687c1c0d9be752cbe9ab 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -2886,8 +2886,11 @@ SqlBuilder.prototype.forEachPage = function (pCallBackFn, pExecuteOnlyIfConditio throw SqlBuilder._ERROR_NOT_A_FUNCTION(); var run = true; + var idx = 0; while (run && this.hasMoreRows()) - run = pCallBackFn.call(null, this.nextTablePage(pExecuteOnlyIfConditionExists, pTimeout)) != false; + { + run = pCallBackFn.call(null, this.nextTablePage(pExecuteOnlyIfConditionExists, pTimeout), idx++) != false; + } } /** @@ -3965,6 +3968,41 @@ SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale) return resSql; }; +/** +* resolves key-value pairs (of strings) into a case when expression +* +* @param {String[][]} pKeyValueArray you've to pass a 2D-Array where each element has at pos0 the key and pos1 the value +* @param {String} pDbFieldName name fo the database field where the KEY-value is stored +* @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated +* +* @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements +*/ +SqlUtils.getResolvingCaseWhenFromObject = function(pKeyValueObject, pUid, pTranslatedValue, pDbFieldName) +{ + var keyData = pKeyValueObject; + if (keyData.length == 0) + return ["''", []]; + + var translateValue = pTranslatedValue; + var uid = pUid; + var unassigned = translate.text("unassigned") + + var resSql = "case ", preparedValues = []; + var colTypeKeyId = SQLTYPES.CHAR; + var colTypeTitle = SQLTYPES.NVARCHAR; + for (var i = 0, l = keyData.length; i < l; i++) + { + var translatedTitle = keyData[i][translateValue]; + resSql += " when " + pDbFieldName + " = ? then ? " + preparedValues.push([keyData[i][pUid], colTypeKeyId]); + preparedValues.push([translatedTitle, colTypeTitle]); + + } + resSql += " else '"+ unassigned +"' end "; + resSql = [resSql, preparedValues]; + return resSql; +}; + /** * Will quote all prepared statement values from the given statement. * diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index d5ea4793bdffdedd7b0c212e35466b7c00fc1534..2c687d66a4dda42890909aa061ac311e69be5ef9 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -472,7 +472,7 @@ ArrayUtils.distinct2d = function(p2dArray) * sorts a two dimensional array by the given index * * @param {Array} targetArray the Array to be sorted - * @param {String} index the index of the field to sort by + * @param {Number} index the indexposistion of the field to sort by * @param {Boolean} [sortAsc=false] TRUE sorts ascending, FALSE sorts decending * @param {Boolean} [isNumber=false] TRUE sorts numerical, FALSE or undefined sorts alphanumerical * @@ -488,6 +488,25 @@ ArrayUtils.sort2d = function(targetArray, index, sortAsc, isNumber) { if (index >= targetArray[0].length) throw new RangeError("Index Out Of Bounds: " + index + " >= " + targetArray[0].length); + var res = ArrayUtils.sortArrayOfObjects(targetArray, index, sortAsc, isNumber); + return res; +}; + + +/** + * sorts an array of boject the given name index + * + * @param {Array} targetArray the Array to be sorted + * @param {String} key the key (index) of the field to sort by + * @param {Boolean} [sortAsc=false] TRUE sorts ascending, FALSE sorts decending + * @param {Boolean} [isNumber=false] TRUE sorts numerical, FALSE or undefined sorts alphanumerical + * + * @return targetArray + * + * @throws {RangeError} if index was not found + */ +ArrayUtils.sortArrayOfObjects = function(targetArray, key, sortAsc, isNumber) { + var index = key; var sortFn = function (x, y) { if ( isNumber ) { xx = Number(x[index]); @@ -496,6 +515,11 @@ ArrayUtils.sort2d = function(targetArray, index, sortAsc, isNumber) { else { xx = x[index]; yy = y[index]; + + if (xx == undefined) + throw new RangeError("Index Out Of Bounds: The index " + index + " was not found while sorting."); + if (yy == undefined) + throw new RangeError("Index Out Of Bounds: The index " + index + " was not found while sorting."); xx = xx.toLowerCase(); xx = xx.replace(/ä/g,"ae"); @@ -518,7 +542,7 @@ ArrayUtils.sort2d = function(targetArray, index, sortAsc, isNumber) { targetArray.sort(sortFn); return targetArray -} +}; /** * sorts an array with columns diff --git a/process/updateClassifications_serverProcess/process.js b/process/updateClassifications_serverProcess/process.js new file mode 100644 index 0000000000000000000000000000000000000000..22f452a82db5f2ffe695ad1e24a5ca85f01a9c78 --- /dev/null +++ b/process/updateClassifications_serverProcess/process.js @@ -0,0 +1,222 @@ +import("system.logging"); +import("Classification_lib"); +import("Sql_lib"); +import("Organisation_lib"); +import("system.db"); +import("system.eMath"); + +var outputInformation = {};//information how much data has been modified +var gradingObject = {}; +var helperObject = {}; //Used to check whether or not the data has already been added +var scoreObject = {}; +var archievedScoresObject = {}; +var objectTypes = []; +var orderedGroups = []; +var object_type, classificationGroupId, classificationTypeId, classificationScoreId, classificationScore, classificationGradingId, score, cond, +classificationGradingMaxScore, classificationGrading, chainedGrading, currentObjectColumn, currentObjectTable, isOrganisation, idsWithoutStoredClassification; +var groupString ={} +var table = "CLASSIFICATIONSTORAGE"; +var column = ["CLASSIFICATIONVALUE"]; + +//All the possible scores of the classification types +var scoreArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID, CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID, CLASSIFICATIONSCORE.SCORE") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .join("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID = CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID") + .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONSCORE.SORT") + .table(); + +//build scoreObject out of scoreArray +for (var i = 0; i < scoreArray.length; i++) +{ + for (var ii = 0; ii < scoreArray[ii].length; ii++) + { + [object_type, classificationGroupId, classificationTypeId, classificationScoreId, classificationScore] = scoreArray[i]; + + if(!helperObject.hasOwnProperty(scoreArray[i][0])) //objectType + { + scoreObject[scoreArray[i][0]] = {}; //puts objectType in scoreObject and already initializes the object that later get's filled with the groups and their types + helperObject[scoreArray[i][0]] = ""; + objectTypes.push(scoreArray[i][0]); //also push all the objectTypes in an Array for later (the updating happens one objectType at a time) + } + if(!helperObject.hasOwnProperty(scoreArray[i][1])) //classificationGroup + { + scoreObject[scoreArray[i][0]][scoreArray[i][1]] = {}; //same logic as before + helperObject[scoreArray[i][1]] = ""; + } + if(!helperObject.hasOwnProperty(scoreArray[i][2])) //classificationType + { + scoreObject[scoreArray[i][0]][scoreArray[i][1]][scoreArray[i][2]] = {}; //same logic as before + helperObject[scoreArray[i][2]] = ""; + } + if(!helperObject.hasOwnProperty(scoreArray[i][3])) //classificationScore + { + scoreObject[scoreArray[i][0]][scoreArray[i][1]][scoreArray[i][2]][scoreArray[i][3]] = scoreArray[i][4]; //score + helperObject[scoreArray[i][3]] = ""; + } + } +} + +helperObject = {}; //resets the helper object + +//All the gradings of the classification groups +var gradingArray = newSelect("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, \n\ + CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID, CLASSIFICATIONGRADING.MAXGRADEFORSCORE, CLASSIFICATIONGRADING.GRADING") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .join("CLASSIFICATIONGRADING", "CLASSIFICATIONGRADING.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .orderBy("CLASSIFICATIONTYPE.OBJECT_TYPE, CLASSIFICATIONGROUP.TITLE, CLASSIFICATIONGROUP.SORTING, \n\ + CLASSIFICATIONTYPE.SCORETYPE, CLASSIFICATIONGRADING.MAXGRADEFORSCORE asc") + .table(); + +//logic from above applies here aswell +for (i = 0; i < gradingArray.length; i++) +{ + [object_type, classificationGroupId, classificationTypeId, classificationGradingId, classificationGradingMaxScore, classificationGrading] = gradingArray[i]; + + if(!helperObject.hasOwnProperty(gradingArray[i][0])) //objectType + { + gradingObject[gradingArray[i][0]] = {}; + helperObject[gradingArray[i][0]] = ""; + } + if(!helperObject.hasOwnProperty(gradingArray[i][1])) //classificationGroup + { + gradingObject[gradingArray[i][0]][gradingArray[i][1]] = {}; + helperObject[gradingArray[i][1]] = ""; + } + if(!helperObject.hasOwnProperty(gradingArray[i][2])) //classificationGrading + { + gradingObject[gradingArray[i][0]][gradingArray[i][1]][gradingArray[i][2]] = [gradingArray[i][3], gradingArray[i][4]]; //maxGradeForScore + helperObject[gradingArray[i][2]] = ""; + } +} + +for (i = 0; i < objectTypes.length; i++) //update for each object_type +{ + outputInformation[objectTypes[i]] = { + updatedElements: 0, + nonChangedElements: 0 + }; + isOrganisation = false; + if(objectTypes[i] == "Organisation") + { + currentObjectTable = "CONTACT"; + currentObjectColumn = "CONTACT.CONTACTID"; + isOrganisation = true; + } + else + { + currentObjectTable = objectTypes[i]; + currentObjectColumn = objectTypes[i] + "." + objectTypes[i] +"ID"; + } + + //this is the "upgrade" part of this process: + //first: insert default values into the records that have no entries + idsWithoutStoredClassification = newSelect(currentObjectColumn) + .from(currentObjectTable) + .where(currentObjectColumn, newSelect("CLASSIFICATIONSTORAGE.OBJECT_ROWID").from("CLASSIFICATIONSTORAGE").where("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]), SqlBuilder.NOT_IN()) + + if(isOrganisation) + { + idsWithoutStoredClassification.and("CONTACT.PERSON_ID is null") + .and("CONTACT.ORGANISATION_ID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL()); + } + + idsWithoutStoredClassification = idsWithoutStoredClassification.arrayColumn(); + + if(idsWithoutStoredClassification) + ClassificationUtils.insertEmptyClassification(idsWithoutStoredClassification, objectTypes[i]); + + //second: update all entries with correct classificaiton values + + //all groups of the objectType in the correct order, needed later to also add the "-" gradings if no classificationType has been set under that group + orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING") + .from("CLASSIFICATIONGROUP") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID") + .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectTypes[i]) + .orderBy("CLASSIFICATIONGROUP.SORTING") + .table(); + + //private callback function that processes the achieved scores per object type + function _processAchievedScoresBatchFn(pBatchData, pBatchNum) + { + //logic from above applies here aswell + for (ii = 0; ii < pBatchData.length; ii++) + { + [uid, classificationGroupId, classificationTypeId, classificationScore] = pBatchData[ii]; + + if(!helperObject.hasOwnProperty(pBatchData[ii][0])) //uid + { + archievedScoresObject[pBatchData[ii][0]] = {}; + helperObject[pBatchData[ii][0]] = ""; + groupString[pBatchData[ii][0]] = ""; //groupString is another helper object to store all the groupIds + } + if(!helperObject.hasOwnProperty(pBatchData[ii][0] + pBatchData[ii][1])) //classificationGroup + { + groupString[pBatchData[ii][0]] = groupString[pBatchData[ii][0]].toString() + pBatchData[ii][1].toString() +" "; + archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]] = {}; + helperObject[pBatchData[ii][0] + pBatchData[ii][1]] = ""; + } + if(!helperObject.hasOwnProperty(pBatchData[ii][0] + pBatchData[ii][2])) //classificationType + { + if(archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] == undefined) + archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] = 0; + score = eMath.addDec(parseFloat(archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"]), parseFloat(pBatchData[ii][3])); + archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Score"] = score; + archievedScoresObject[pBatchData[ii][0]][pBatchData[ii][1]]["Grade"] = ClassificationUtils.getGradingFromObject(gradingObject[objectTypes[i]], pBatchData[ii][1], score); + helperObject[pBatchData[ii][0] + pBatchData[ii][2]] = ""; + } + } + } + + var achievedScoresStmt = newSelect(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, \n\ + CLASSIFICATION.CLASSIFICATIONTYPE_ID, CLASSIFICATIONSCORE.SCORE") + .from(currentObjectTable) + .join("CLASSIFICATION", "CLASSIFICATION.OBJECT_ROWID = " + currentObjectColumn) + .join("CLASSIFICATIONSCORE", "CLASSIFICATION.CLASSIFICATIONSCORE_ID = CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID") + .join("CLASSIFICATIONTYPE", "CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = CLASSIFICATION.CLASSIFICATIONTYPE_ID"); + + if(isOrganisation) + achievedScoresStmt.where("CONTACT.PERSON_ID is null"); + + achievedScoresStmt.orderBy(currentObjectColumn + ", CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID, CLASSIFICATIONSCORE.SCORE asc"); + achievedScoresStmt.pageSize(100) + .forEachPage(_processAchievedScoresBatchFn); + + //do this after all the data is collected since the achievedScoresStmt returns several records for each rowId. + //If this would be done in the batch function it would result in false classificationstorage-results because not all records for a rowId are used + for (var row_Id in archievedScoresObject) + { + chainedGrading = ""; + //chain all the Classifications together + for (var row_IdI in archievedScoresObject[row_Id]) + { + chainedGrading += archievedScoresObject[row_Id][row_IdI]["Grade"] + } + + for (var iii = 0; iii < orderedGroups.length; iii++) //the empty gradings have been ignored, but should be filled with "-" + { + if(!groupString[row_Id].toString().includes(orderedGroups[iii][0].toString())) //check which ones aren't included and add "-" for those at correct the position + { + chainedGrading = chainedGrading.substring(0, iii) + "-" + chainedGrading.substring(iii, chainedGrading.length); + } + } + + //update the specified dataset if the already stored ClassificatioNValue differs from the freshly calculated one + cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id) + .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]) + .and("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE", chainedGrading, SqlBuilder.NOT_EQUAL()); + var count = Number(cond.updateData(true, table, column, null, [chainedGrading])); + if (count > 0) + { + outputInformation[objectTypes[i]].updatedElements += count; + } + else + { + outputInformation[objectTypes[i]].nonChangedElements++; + } + } +} + +var outputInfo = "updateClassifications_serverProcess output is:\n" + JSON.stringify(outputInformation); +logging.log(outputInfo); \ No newline at end of file diff --git a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod new file mode 100644 index 0000000000000000000000000000000000000000..52e9c03b7cf5d4c0792dd5f4ea13a6676520a729 --- /dev/null +++ b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod @@ -0,0 +1,11 @@ +<?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>updateClassifications_serverProcess</name> + <title>Update all Classification entries in the system</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/updateClassifications_serverProcess/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process>