diff --git a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_UnlinkedMail.xml b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_UnlinkedMail.xml index 63d3018343756ec51a4d8843e8d48403c0d2cc9f..8ea8bcf1040a39585fe90f35deeaaded71aa26d6 100644 --- a/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_UnlinkedMail.xml +++ b/.liquibase/Data_alias/basic/2019.1.4/AditoBasic/init_UnlinkedMail.xml @@ -18,7 +18,7 @@ <column name="SUBJECT" type="NVARCHAR(200)"/> <column name="SENTDATE" type="DATETIME"/> <column name="SENDER" type="NVARCHAR(1000)"/> - <column name="RECIPIENTS" type="NVARCHAR(4000)"/> + <column name="RECIPIENTS" type="NCLOB"/> <column name="MAIL" type="NCLOB"/> </createTable> <createIndex indexName="IDX_AB_UNLINKEDMAILID_SENTDATE" tableName="AB_UNLINKEDMAIL"> diff --git a/.liquibase/Data_alias/basic/2019.3.2/Duplicates/alter_duplicateScanner.xml b/.liquibase/Data_alias/basic/2019.3.2/Duplicates/alter_duplicateScanner.xml index 48074afa89c5f371c46dbd3138efd40f8cae1ea2..abee96da121530d75c4070efae2e4add465c59a5 100644 --- a/.liquibase/Data_alias/basic/2019.3.2/Duplicates/alter_duplicateScanner.xml +++ b/.liquibase/Data_alias/basic/2019.3.2/Duplicates/alter_duplicateScanner.xml @@ -6,7 +6,7 @@ <column name="ID_FIELD_NAME" type="NVARCHAR(100)"/> </addColumn> <addColumn tableName="DUPLICATESCANNER"> - <column name="SCAN_PATTERN" type="NVARCHAR(4000)"/> + <column name="SCAN_PATTERN" type="NCLOB"/> </addColumn> </changeSet> </databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml index 32c1ff9347645f95897e1fcb852346b73117a11a..62c9c29573a17ca606e5c08d2f5ed680729208ae 100644 --- a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml +++ b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml @@ -10,6 +10,16 @@ <column name="ACTIVITY_ID"/> </createIndex> </changeSet> + <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl" dbms="!oracle"> + <preConditions onFail="MARK_RAN"> + <not> + <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer"/> + </not> + </preConditions> + <createIndex indexName="IDX_TICKET_TASK_ID" tableName="TICKET"> + <column name="TASK_ID"/> + </createIndex> + </changeSet> <!--indexes for all dbms--> <changeSet author="j.goderbauer" id="5a0b62f4-6770-454c-9a0e-d60ca16596dd"> <!--remove problematic indexes--> @@ -46,9 +56,6 @@ </createIndex> <!--set all the referencing ids as single index now--> - <createIndex indexName="IDX_TICKET_TASK_ID" tableName="TICKET"> - <column name="TASK_ID"/> - </createIndex> <createIndex indexName="IDX_CONTACT_ORGANISATION_ID" tableName="CONTACT"> <column name="ORGANISATION_ID"/> </createIndex> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml b/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml index 86989600807b32fba76fc6b052f08f007cb4f390..2cabebd22aa4bfa08b01502e5d28ee906f6e1d4c 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AddNullableToDateNew.xml @@ -1,7 +1,7 @@ <?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 id="0aa81d84-7456-4240-91e0-a915f38abbd7" author="s.pongratz" > + <changeSet id="0aa81d84-7456-4240-91e0-a915f38abbd7" author="s.pongratz" dbms="!oracle"> <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNCOST" columnDataType="DATETIME" validate="true"/> <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNPARTICIPANT" columnDataType="DATETIME" validate="true"/> <addNotNullConstraint columnName="DATE_NEW" tableName="CAMPAIGNSTEP" columnDataType="DATETIME" validate="true"/> diff --git a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml index 9e31af2c9427a6976dc010890598ca2862ad85e0..a6e5c99db425623c89a8aaa4446df2b04a77fdb0 100644 --- a/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml +++ b/.liquibase/Data_alias/basic/2020.1.2/AlterDatatypeOfKeyColumnsToChar/alter_DocumentTemplatePlaceOfUseDatatype.xml @@ -15,6 +15,7 @@ <changeSet dbms="!derby" author="b.ulrich" id="85ba6a61-9318-4118-ac4c-e33730f6581d"> <dropPrimaryKey tableName="DOCUMENTTEMPLATE" constraintName="PK_DOCUMENTTEMPLATE_DOCUMENTTEMPLATEID" dropIndex="true"/> + <dropNotNullConstraint tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" columnDataType="VARCHAR(36)"/> <modifyDataType tableName="DOCUMENTTEMPLATE" columnName="DOCUMENTTEMPLATEID" newDataType="CHAR(36)"/> <addNotNullConstraint columnName="DOCUMENTTEMPLATEID" tableName="DOCUMENTTEMPLATE" columnDataType="CHAR(36)" validate="true"/> <addPrimaryKey tableName="DOCUMENTTEMPLATE" constraintName="PK_DOCUMENTTEMPLATE_DOCUMENTTEMPLATEID" columnNames="DOCUMENTTEMPLATEID"/> diff --git a/.liquibase/Data_alias/basic/2020.2.0/optimizeIndizes.xml b/.liquibase/Data_alias/basic/2020.2.0/optimizeIndizes.xml index c3eab6fea6cdd0fe13a20852ee965f5581c2be5c..bf7010bb7a919e90d1688ba6ce5c12012727b5fb 100644 --- a/.liquibase/Data_alias/basic/2020.2.0/optimizeIndizes.xml +++ b/.liquibase/Data_alias/basic/2020.2.0/optimizeIndizes.xml @@ -8,15 +8,9 @@ <createIndex tableName="AB_APPOINTMENTLINK" indexName="IDX_APPOINTLINK_OBJECT_ROWID"> <column name="OBJECT_ROWID"/> </createIndex> - <createIndex tableName="EXPORTTEMPLATEPLACEOFUSE" indexName="IDX_EXPORTTEMPLATEUSE_T_ID"> - <column name="EXPORTTEMPLATE_ID"/> - </createIndex> <createIndex tableName="DOCUMENTTEMPLATEPLACEOFUSE" indexName="IDX_DOCUMENTTEMPLATEUSE_DT_ID"> <column name="DOCUMENTTEMPLATE_ID"/> </createIndex> - <createIndex tableName="EXPORTTEMPLATEFIELD" indexName="IDX_EXPORTTEMPLATEFIELD_ET_ID"> - <column name="EXPORTTEMPLATE_ID"/> - </createIndex> <createIndex tableName="VISITRECOMMENDATION" indexName="IDX_VISITRECOMMEND_CONTACT_ID"> <column name="CONTACT_ID"/> </createIndex> @@ -29,9 +23,6 @@ <createIndex tableName="LEADIMPORTMAPPINGASSISTANT" indexName="IDX_LEADIMPORTMAPPING_LI_ID"> <column name="LEADIMPORT_ID"/> </createIndex> - <createIndex tableName="EXPORTTEMPLATESELECTION" indexName="IDX_EXPTEMPLATESEL_TEMPLATE_ID"> - <column name="EXPORTTEMPLATE_ID"/> - </createIndex> <createIndex tableName="AB_PERMISSIONCALENDAR" indexName="IDX_AB_PERMCAL_PROCURER_ROWID"> <column name="PERMISSIONPROCURER_ROWID"/> </createIndex> diff --git a/.liquibase/Data_alias/basic/2020.2.1/Lead/UpdateImportFields.xml b/.liquibase/Data_alias/basic/2020.2.1/Lead/UpdateImportFields.xml new file mode 100644 index 0000000000000000000000000000000000000000..bd6301018b2107fbc28a1b772a31be0831fbb11a --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/Lead/UpdateImportFields.xml @@ -0,0 +1,35 @@ +<?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="s.pongratz" id="a75320ca-ecd1-4132-9fdf-989897934a85"> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="KEYID" value="O_COMMINTERNET"/> + <where>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="9ed26d58-cc2f-436e-b67b-afbb9f102bf4" /> + </whereParams> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="TITLE" value="LinkedIn (Organisation)"/> + <where>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="97e27378-e733-4629-b0c4-515faf89da7e" /> + </whereParams> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="KEYID" value="P_COMMINTERNET"/> + <where>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="01f18fd8-44c1-43ec-8601-bf1fe7e62700" /> + </whereParams> + </update> + <update tableName="AB_KEYWORD_ENTRY"> + <column name="TITLE" value="LinkedIn (Person)"/> + <where>AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = ?</where> + <whereParams> + <param value="53e06704-e28d-49b5-a49f-e40ca250ee6a" /> + </whereParams> + </update> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.1/Lead/addColumnLead.xml b/.liquibase/Data_alias/basic/2020.2.1/Lead/addColumnLead.xml new file mode 100644 index 0000000000000000000000000000000000000000..bbb8e983e8c20b3d8689730f69620b6cdd03ac2e --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/Lead/addColumnLead.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="s.pongratz" id="a894e971-4ce9-4142-ac27-1782d454a01f"> + <addColumn tableName="LEAD"> + <column name="P_COMMINTERNET" type="NVARCHAR(254)" /> + <column name="O_COMMINTERNET" type="NVARCHAR(254)" /> + </addColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.1/Lead/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/Lead/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..a1d7864402030aa92875c9f684039146c7cd0aab --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/Lead/changelog.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="addColumnLead.xml" relativeToChangelogFile="true" /> + <include file="UpdateImportFields.xml" relativeToChangelogFile="true" /> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/Loghistory/addAb_loghistoryId.xml b/.liquibase/Data_alias/basic/2020.2.1/Loghistory/addAb_loghistoryId.xml new file mode 100644 index 0000000000000000000000000000000000000000..9e7f179262756c119397b2d9fd9809a75f33c28f --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/Loghistory/addAb_loghistoryId.xml @@ -0,0 +1,36 @@ +<?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="s.kern" id="d4b5f8bc-b211-442a-b417-3b5d3c92def5"> + <addColumn tableName="AB_LOGHISTORY"> + <column name="AB_LOGHISTORYID" type="CHAR(36)"/> + </addColumn> + </changeSet> + <changeSet author="s.listl" id="4a17921c-8e9a-4605-a9f5-0365e18d25c8" dbms="postgresql"> + <update tableName="AB_LOGHISTORY"> + <column name="AB_LOGHISTORYID" valueComputed="uid.uuid_generate_v4()"/> + <where>AB_LOGHISTORYID is null</where> + </update> + </changeSet> + <changeSet author="s.listl" id="f78825d7-5521-4598-8ff2-897c4fde96a5" dbms="mssql"> + <update tableName="AB_LOGHISTORY"> + <column name="AB_LOGHISTORYID" valueComputed="NEWID()"/> + <where>AB_LOGHISTORYID is null</where> + </update> + </changeSet> + <changeSet author="s.listl" id="b0974054-434d-4b80-93e4-e835d4da69ae" dbms="mysql,mariadb"> + <update tableName="AB_LOGHISTORY"> + <column name="AB_LOGHISTORYID" valueComputed="UUID()"/> + <where>AB_LOGHISTORYID is null</where> + </update> + </changeSet> + <changeSet author="s.listl" id="638b1b87-ba80-42bb-9cbd-6ce892b8d5c1" dbms="oracle"> + <update tableName="AB_LOGHISTORY"> + <column name="AB_LOGHISTORYID" valueComputed="REGEXP_REPLACE(SYS_GUID(), '(.{8})(.{4})(.{4})(.{4})(.{12})', '\1-\2-\3-\4-\5')"/> + <where>AB_LOGHISTORYID is null</where> + </update> + </changeSet> + <changeSet author="s.listl" id="9a100da4-a467-4156-ab21-51216c7cbb3e"> + <addNotNullConstraint columnName="AB_LOGHISTORYID" tableName="AB_LOGHISTORY" columnDataType="char(36)"/> + <addPrimaryKey columnNames="AB_LOGHISTORYID" constraintName="pk_AB_LOGHISTORYID" tableName="AB_LOGHISTORY"/> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.1/Loghistory/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/Loghistory/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..d092637200d1f91da8cb75b1ff1d6af32ea070e6 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/Loghistory/changelog.xml @@ -0,0 +1,5 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include file="addAb_loghistoryId.xml" relativeToChangelogFile="true" /> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.1/changelog.xml b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..68920d2dc3c91ef8edf44ab4682828172f2bd8ed --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.1/changelog.xml @@ -0,0 +1,6 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <include relativeToChangelogFile="true" file="Loghistory/changelog.xml"/> + <include relativeToChangelogFile="true" file="Lead/changelog.xml"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml index 553a0753b0ba68e30e4bf419527bc8324b3c3733..3f718d9b8395c2b9fe5424b2945387f2be98e4d6 100644 --- a/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml +++ b/.liquibase/Data_alias/basic/_demoData/generatedData/ab_loghistory.xml @@ -3,6 +3,7 @@ <changeSet author="autogenerated" id="dc70b18d-4875-42b1-ab34-9c37d7048750"> <delete tableName="ab_loghistory"/> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7e3108ae-7f1f-4fe5-8a57-2437df4335a5"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Kopftext: "Gerne bieten wir Ihnen wie folgt an:", Verknüpfung: "Herr Markus Altinger | Industrial Steel AG", Datum: "11.09.2018", Belegnummer: "1015", Vers.-Nr.: "1", Währung: "EUR " eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -11,6 +12,7 @@ <column name="DATE_NEW" valueDate="2019-09-02T01:58:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9b916b5b-86c2-4e88-92a0-486b88a01673"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: "0", UmsSt.: "0" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -19,6 +21,7 @@ <column name="DATE_NEW" valueDate="2019-09-02T01:58:03"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="13ac70b7-9002-412d-af0a-d00d2085dbfa"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "04.09.2019", Betreff: "Hier liegt die Kampagne für die Hannovermesse", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Bitte pr&uuml;fen ob alle Angaben passen und wir das so best&auml;tigen k&ouml;nnen.</p> ", Kategorie: "MAIL ", Richtung: "x " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -27,6 +30,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T05:58:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fffa0d9c-24c0-485e-b160-4232f7b5e3ab"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "22924044-c41d-4130-b9c2-de51e3c9e928", Objekt: "a10eaf09-7230-4889-a601-776de71cb71b", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -35,6 +39,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T05:58:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a6f0aa91-ad71-44fe-965b-808ba871da00"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "04.09.2019", Betreff: "Kickoff Meeting am 1. Oktober", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Alle Teilnehmer werden zum Termin anwesend sein, werden den Ablauf und das Standpersonal besprechen.</p> ", Richtung: "x " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -43,6 +48,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T06:00:16"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="04760759-ed0f-4347-8bbc-bb6c422e5fd1"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "38a20ed1-f75e-439d-957a-53cbb815a9fe", Objekt: "a10eaf09-7230-4889-a601-776de71cb71b", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -51,6 +57,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T06:00:16"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1ea8a70c-166d-43a7-871b-32f8367c8e08"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "04.09.2019", Betreff: "Wichtige Teilnehmer einladen", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Hallo Zusammen,</p> <p>&nbsp;</p> <p>bitte ladet alle eure A Kontakte ein f&uuml;r das Event.</p> <p>&nbsp;</p> <p>Gr&uuml;&szlig;e</p> <p><br /> Euer Markteting;</p> ", Richtung: "x " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -59,6 +66,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:16:41"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="29fd168b-8d0c-4214-9b5b-2af8656805e5"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "be9c6fd3-a401-4696-9382-442a20da6266", Objekt: "996b8af6-13f4-4606-a303-69f941cf6f13", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -67,6 +75,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:16:41"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="577754c6-84d2-4ea2-b61b-becd726ac112"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "04.09.2019", Betreff: "Einladungen gehen 18.09 raus", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Erinnerung das heute die Einladungen versandt werden!</p> ", Richtung: "x " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -75,6 +84,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:17:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6527b7f6-de04-40e7-9639-dca74c72325f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "c42c23ef-3921-4a10-bb9a-040178f28bd2", Objekt: "996b8af6-13f4-4606-a303-69f941cf6f13", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -83,6 +93,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:17:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="82cce970-91e5-4710-8a55-051fb25dba29"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Erinnerung das am 18.09 die Einladungen versandt werden!</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -91,6 +102,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:17:53"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="18b9c406-96d2-463a-880f-d27357d829e5"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "27.08.2019", Betreff: "Erste Planung für die Kampagne gelaufen", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Hallo zusammen,</p> <p>&nbsp;</p> <p>wir sind sehr froh euch mitteilen zu d&uuml;rfen das wir die ersten Vorbereitungen f&uuml;r die Messe geplant haben.</p> <p>Weitere Infos werden euch zum passenden Zeitpunkt zugespielt.</p> <p><br /> Gr&uuml;&szlig;e</p> <p>Das Marketing</p> ", Richtung: "x " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -99,6 +111,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:20:53"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e571d243-5005-4e2f-ada9-4d75b1f58213"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "0eec5c89-272c-4675-b8a3-3a17e5cc2907", Objekt: "996b8af6-13f4-4606-a303-69f941cf6f13", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -107,6 +120,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:20:53"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6583ad5f-4787-460b-b6aa-85984b73a251"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "0eec5c89-272c-4675-b8a3-3a17e5cc2907", Objekt: "680de39f-7f1c-4dca-8c67-9c16c3395c3f", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -115,6 +129,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:23:40"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7f8512ba-5cc3-4e36-ba46-bf4a09ffe6cd"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "be9c6fd3-a401-4696-9382-442a20da6266", Objekt: "680de39f-7f1c-4dca-8c67-9c16c3395c3f", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -123,6 +138,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:23:56"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1eb10fe6-345b-440e-8498-3737317ec3f0"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "c42c23ef-3921-4a10-bb9a-040178f28bd2", Objekt: "680de39f-7f1c-4dca-8c67-9c16c3395c3f", Art: "Campaign" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -131,6 +147,7 @@ <column name="DATE_NEW" valueDate="2019-09-04T09:24:17"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a6129e3b-bde7-4768-b71b-3e25c03cb77f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Anforderer: "Herr Tim Admin | meine Firma", Status: "zugewiesen", Bearbeiter: "Herr Harold Smith | meine Firma", Beginn: "05.09.2019", Fortschritt: "0%", Beschreibung: "Die Funktionalitäten des Tools erfüllen nicht die geforderten Funktionalitäten. Im Detail: Die Zeiterfassung kann nicht zu Tickets erfasst werden. ", Fällig: "12.09.2019", Priorität: "niedrig", Betreff: "Projektplanung fehlerhaft" eingefügt."/> <column name="TABLENAME" value="TASK"/> @@ -139,6 +156,7 @@ <column name="DATE_NEW" valueDate="2019-09-05T01:45:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="366d9cb5-095c-4ef7-b6de-c713eab3ee65"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Cause: "Anwenderfehler" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -147,6 +165,7 @@ <column name="DATE_NEW" valueDate="2019-09-05T01:45:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4ef5a29d-d57e-4889-9be3-99f91a2bc374"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Modul group: "Produkt" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -155,6 +174,7 @@ <column name="DATE_NEW" valueDate="2019-09-05T01:45:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4f78e6f8-0c91-44fc-9cce-4becd2d4f2fa"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Type: "Fehler" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -163,6 +183,7 @@ <column name="DATE_NEW" valueDate="2019-09-05T01:45:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e259f806-d1cd-4c7c-bf00-bfd568cfb26e"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Billable: "Nein" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -171,6 +192,7 @@ <column name="DATE_NEW" valueDate="2019-09-05T01:45:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7727b1fd-1ea5-4b4c-95e5-7a67c3f72641"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "Decker" auf "Decken" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -179,6 +201,7 @@ <column name="DATE_NEW" valueDate="2019-11-12T02:39:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a3c9ebbc-492e-4422-882d-89b19a0ac8a4"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "Mosby" auf "Mausbeier" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -187,6 +210,7 @@ <column name="DATE_NEW" valueDate="2019-11-12T02:40:10"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fd1172d6-7ac7-43cb-8242-0531e4c8b86b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "Scherbatsky" auf "Scherbatstein" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -195,6 +219,7 @@ <column name="DATE_NEW" valueDate="2019-11-12T02:40:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ad81bf27-88e6-4914-9046-f3c13a1f70fa"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "von Matterhorn" auf "von Alpenhorn" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -203,6 +228,7 @@ <column name="DATE_NEW" valueDate="2019-11-12T02:41:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="198b4ece-158f-4e95-a785-58b2f6c33bad"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" valueClobFile="ab_loghistory/DESCRIPTION/clobFiles/6797689c3c12b094b0147a099343a309.txt"/> <column name="TABLENAME" value="PERSON"/> @@ -211,6 +237,7 @@ <column name="DATE_NEW" valueDate="2019-11-12T02:50:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1754551e-b4f1-47b1-b514-23f42582da7e"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "13.11.2019", Betreff: "Neuer Kontaktpunkt zum Produkt", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Richtung: "o " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -219,6 +246,7 @@ <column name="DATE_NEW" valueDate="2019-11-13T11:06:51"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f355e4a9-c520-413d-ac93-2e2c100e5f8b"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "e265a424-b343-4bc1-b1cd-d40b9405ca12", Objekt: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -227,6 +255,7 @@ <column name="DATE_NEW" valueDate="2019-11-13T11:06:51"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="5f031aa5-9c13-449e-804d-96cb8e3b2d22"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Anrede: Herr</p> <p>Vorname:Markus</p> <p>Nachname:Altinger</p> <p>E-Mail:maltinger@industrial-steel.de</p> <p>&nbsp;</p> <p>Sehr geehrte Damen und Herren,</p> <p>&nbsp;</p> <p>unsere Firma hat Interesse an ihren Produkten.</p> <p>Bitte kontaktieren sie mich f&uuml;r weitere Besprechungen.</p> <p>&nbsp;</p> <p>Beste Gr&uuml;&szlig;e</p> <p>Markus Altinger</p> <p>&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -235,6 +264,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T07:56:20"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="adc52192-9059-4491-8e88-cb59028ab250"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Hatte ersten Kontakt mit dem Projektzust&auml;ndigen Tim Admin gehabt.</p> <p>Produktinformationen werden versandt.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -243,6 +273,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T07:57:27"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="648cd4bb-e5bc-430d-ad2f-4cc43eeba936"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "d608cae4-7b54-4a12-95f3-5b9eac3d04ef", Objekt: "d5a2dc64-e503-4aed-a0c6-d54f49b8db87", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -251,6 +282,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:02:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="793adf19-8ad7-4ccc-b744-ce8509a4461d"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Activity Id: "d608cae4-7b54-4a12-95f3-5b9eac3d04ef", Objekt: "d5a2dc64-e503-4aed-a0c6-d54f49b8db87", Art: "Person" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -259,6 +291,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:02:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8a341b8a-1cf4-47f9-9a83-dfd91dde2db7"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "d608cae4-7b54-4a12-95f3-5b9eac3d04ef", Objekt: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -267,6 +300,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:03:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="95f4b675-4c52-4570-8a11-6a5319a7fd71"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Kurzes Gespr&auml;ch gef&uuml;hrt mit Herr Altinger.</p> <p>Konnten seine R&uuml;ckfragen zu unserem Produkt erstmal kl&auml;ren.</p> <p>&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -275,6 +309,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:04:31"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="eb55e5f9-678d-4619-ad84-3b8ef877f29a"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "e3be48af-e679-4b3a-972f-ad17239e3bb4", Objekt: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -283,6 +318,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:05:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d60d5a9c-78ce-4c07-8d6a-0338f6d0c285"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sehr geehrter Herr Altinger,</p> <p>wie soeben telefonisch vereinbart, erhalten Sie im Anhang die gew&uuml;nschten Informationen.</p> <p>Beste Gr&uuml;&szlig;e</p> <p>Tim Admin&nbsp;</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -291,6 +327,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:05:24"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="79d47106-5631-4ee2-99d0-304fc3a37066"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -299,6 +336,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:05:54"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b91fa01d-67d8-4a1f-8189-78b8f2230cbd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -307,6 +345,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:06:04"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b69a9893-1404-4ad7-9429-fd51e5184395"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -315,6 +354,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:06:13"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="41a01395-0dcd-497b-a728-91643d293bc3"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -323,6 +363,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:08:53"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3fec3851-fbb8-4e34-aec2-95420aafb884"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -331,6 +372,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:10:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c18bed9d-88c2-4ed3-9a8f-41d7c9cdfe6e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Kategorie: "ONLINE-MEETING " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -339,6 +381,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:11:25"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4f64050f-554b-44be-b529-f5b0df15b500"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -347,6 +390,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:11:41"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="710b83ed-34df-420d-8c08-6a6cddceee20"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Kunde hatte die erste Produktpr&auml;sentation zu unseren Produkten&nbsp;A und B.</p> <p>Vor allem das rafinierte Design und die Preisstruktur unseres Unternehmens waren positive Aspekte aus Kundensicht.</p> <p>Werde die n&auml;chsten Schritte anhand der Pr&auml;sentation ableiten.</p> <p>&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -355,6 +399,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:12:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="44582c20-5076-40e9-b5f7-6a9a651a72f9"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Automatischer Import:</p> <p>Infobrosch&uuml;re zu Produkt A runtergeladen.</p> <p>&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -363,6 +408,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:13:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="832ce16a-fbff-46ae-b2ac-f76eea367d89"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Datum: von "14.06.2019" auf "10.10.2017" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -371,6 +417,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:21:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="aef113a4-2d83-4c43-8ae0-ed1e36253aa7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Kunde m&ouml;chte mit uns in die n&auml;chste Runde gehen.&nbsp;</p> <p>dazu bekommen wir in den n&auml;chsten Tagen die Geheimhaltungsvereinbarung</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -379,6 +426,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:27:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="05b2cbc1-0b3d-4478-8486-1aa5cec4df5d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Kunde m&ouml;chte mit uns in die n&auml;chste Runde gehen.&nbsp;</p> <p>dazu bekommen wir in den n&auml;chsten Tagen die Geheimhaltungsvereinbarung</p> ", Kategorie: "PHONE " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -387,6 +435,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:27:50"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="46efb327-1cc5-4759-8ed1-782225f7d77e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Marketing:</p> <p>&Uuml;ber die Landingpage von Produkt C&nbsp;auf uns gekommen.</p> <p>Es&nbsp;besteht weiterhin Interesse an den Produkten&nbsp;A und B.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -395,6 +444,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:28:29"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ff267ee6-71d8-4631-b48d-4663ac2ebfc6"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Marketing:</p> <p>&Uuml;ber die Landingpage von Produkt C&nbsp;auf uns gekommen.</p> <p>Es&nbsp;besteht weiterhin Interesse an den Produkten&nbsp;A und B.</p> ", Kategorie: "VISIT ", Richtung: von "inx " auf "i " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -403,6 +453,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:28:51"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4d69d5d8-8dd7-4974-9303-4fbc368108ee"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sehr geehrter Herr Admin,</p> <p>wie bereits telefonisch angek&uuml;ndigt, bitten wir um ein Angebot f&uuml;r die Produkte A und B.&nbsp;</p> <p>Viele Gr&uuml;&szlig;e&nbsp;</p> <p>Markus Altinger&nbsp;</p> <p>Industrial Steel AG&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -411,6 +462,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:29:45"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9195ebed-68d8-47d6-b244-76974762a358"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -419,6 +471,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:30:17"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7e1c4c0b-335b-4144-8323-ee19f550691c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Hr. Altinger hat ein Angebot f&uuml;r die Produkte A und B angefordert.&nbsp;</p> <p>Zu dem Angebot haben wir noch einige Fragen gekl&auml;rt.&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -427,6 +480,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:30:51"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a89cb1a9-6f01-4ec9-89fc-27f1fc46c19b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Produktspezifiskationen an Frau Linder weitergegeben.</p> <p>Intern wird gepr&uuml;ft ob das Produkt bis zum Zeitpunkt X an den potentiellen Kunden geliefert werden kann.</p> <p>&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -435,6 +489,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:31:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a12f90da-da05-4b81-8f44-9f2ec4d6207a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Produktspezifiskationen an Frau Linder weitergegeben.</p> <p>Intern wird gepr&uuml;ft ob das Produkt bis zum Zeitpunkt X an den potentiellen Kunden geliefert werden kann.</p> <p>&nbsp;</p> ", Kategorie: "MAIL " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -443,6 +498,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:32:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6ab6e38f-8e9f-4d16-a170-fac8e351040e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Hallo Herr Altinger,</p> <p>anbei erhalten Sie wie gew&uuml;nscht und vereinbart unser Angebot zu dem Produkten A und B.&nbsp;</p> <p>Bei Fragen zum Angebot erreichen Sie uns jederzeit unter den bekannten Kontaktdaten.</p> <p>Wir freuen uns auf die Best&auml;tigung des Angebots und auf die bevorstehende Zusammenarbeit.&nbsp;</p> <p>Mit freundlichen Gr&uuml;&szlig;en</p> <p>Tim Admin</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -451,6 +507,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:32:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7084dc7f-9568-4574-8633-b35d61c48b1a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Hallo Herr Altinger,</p> <p>anbei erhalten Sie wie gew&uuml;nscht und vereinbart unser Angebot zu dem Produkten A und B.&nbsp;</p> <p>Bei Fragen zum Angebot erreichen Sie uns jederzeit unter den bekannten Kontaktdaten.</p> <p>Wir freuen uns auf die Best&auml;tigung des Angebots und auf die bevorstehende Zusammenarbeit.&nbsp;</p> <p>Mit freundlichen Gr&uuml;&szlig;en</p> <p>Tim Admin</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> ", Richtung: von "inx " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -459,6 +516,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:32:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ebfbeb99-6487-4834-813f-15acf24e323f"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Richtung: von "inx " auf "x " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -467,6 +525,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:33:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f34e009d-982c-41a0-8874-1dac4b7446e2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -475,6 +534,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:33:43"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1fc9d73f-0f15-4766-8d96-22ccf56f8aa5"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sehr geehrter Herr Tannenbaum,</p> <p>anbei erhalten Sie unser erneutes Angebot f&uuml;r das gew&uuml;nschte Produkt A.&nbsp;</p> <p>Wir freuen uns auf die Best&auml;tigung des Angebots und stehen Ihnen bei R&uuml;ckfragen jederzeit zur Verf&uuml;gung.&nbsp;</p> <p>Beste Gr&uuml;&szlig;e&nbsp;</p> <p>Tim Admin</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -483,6 +543,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:33:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="888ca62b-d1cb-413a-bdcf-513941861c04"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sehr geehrter Herr Tannenbaum,</p> <p>anbei erhalten Sie unser erneutes Angebot f&uuml;r das gew&uuml;nschte Produkt A.&nbsp;</p> <p>So wie besprochen mit den korrigierten Produktpreisen.</p> <p>Wir freuen uns auf die Best&auml;tigung des Angebots und stehen Ihnen bei R&uuml;ckfragen jederzeit zur Verf&uuml;gung.&nbsp;</p> <p>Beste Gr&uuml;&szlig;e&nbsp;</p> <p>Tim Admin</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -491,6 +552,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:34:33"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="313306a9-2dbb-4241-bf3f-1004d9a5478c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betreff: von "Neuer Kontaktpunkt zum Produkt" auf "Neuer Kontaktpunkt zum Produkt C" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -499,6 +561,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:34:56"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c34cd43f-c611-48c5-afb4-dcd83c4c7c36"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Kategorie: "MAIL " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -507,6 +570,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:35:08"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="52fadd10-9472-4486-9262-1634a66dae43"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "e265a424-b343-4bc1-b1cd-d40b9405ca12", Objekt: "45635aca-7971-43df-a683-c80c86cb58cc", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -515,6 +579,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:37:04"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="97ed4a04-b2ed-4e4a-a0ea-287e0f03752c"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "e265a424-b343-4bc1-b1cd-d40b9405ca12", Objekt: "6e667085-bb97-4039-8dfe-2230002985e0", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -523,6 +588,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:37:32"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="23c72e9c-9272-406d-89b5-be6fd1a8444d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Produktinformationen zu produkt C versandt.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -531,6 +597,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:38:27"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b32963ba-5e1b-46f7-8483-d808232ac62f"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Der potentielle K&auml;ufer hat Produkte unseres Segments gemietet.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -539,6 +606,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:39:33"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="70635df3-9b44-44a2-bdc9-01b16bc548e4"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betreff: von "Produkt gekauft" auf "Produkt gemietet.", Beschreibung: "<p>Der potentielle K&auml;ufer hat Produkte unseres Segments gemietet.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -547,6 +615,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:39:45"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a3dc84ff-cb60-4031-8ca9-0be7a50d6850"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "Solano" auf "Solana" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -555,6 +624,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:40:25"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cef5b445-3c91-48eb-b571-636fa07848a6"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Nachname: von "Ericson" auf "Ericsan" geändert."/> <column name="TABLENAME" value="PERSON"/> @@ -563,6 +633,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:40:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="dbf30296-b247-4cd8-b245-c5c0431f19d7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sehr geehrter Herr von Alpenhorn,</p> <p>gerne lassen ich Ihnen ein paar unserer Referenzen aus Ihrer Branche zukommen.&nbsp;</p> <p>Sollten Sie Interesse an einem Referenzgespr&auml;ch haben, k&ouml;nnen Sie mir gerne Bescheid geben. Ich werde dann die Abstimmung mit einem passenden Kunden f&uuml;r Sie in die Wege leiten.&nbsp;</p> <p>Herzliche Gr&uuml;&szlig;e</p> <p>Lisa Sommer&nbsp;</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -571,6 +642,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:43:08"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="af99ba41-e385-46bf-8113-f9e810b0793d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -579,6 +651,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:43:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ab097d8e-d401-4f58-a611-98805230a3a0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -587,6 +660,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:43:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fa15239a-6b23-4b27-97b1-2f51b1a40744"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -595,6 +669,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:43:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="be24c99e-8fa7-4d65-b0b1-1a03149d3374"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Kategorie: "VISIT " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -603,6 +678,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:43:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fb934bf3-fc9e-4f84-9fb1-2618274d862f"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -611,6 +687,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:44:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cde6d6e3-11df-49c2-bee2-6a401197103e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Hallo Herr von Alpenhorn,</p> <p>wie soeben telefonisch angek&uuml;ndigt freue ich mich, Ihnen im Anhang dieser Nachricht nun die ausgearbeitete Stellungnahme sowie unser Angebot zukommen zu lassen.</p> <p>Bei Fragen k&ouml;nnen Sie mich jederzeit erreichen.&nbsp;</p> <p>Viele Gr&uuml;&szlig;e,&nbsp;</p> <p>Lisa Sommer&nbsp;</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -619,6 +696,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:44:24"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="406163b1-06ad-48bb-afa0-d1d16eef8698"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Beschreibung: "<p>Hallo Herr von Alpenhorn,</p> <p>wie soeben telefonisch angek&uuml;ndigt freue ich mich, Ihnen im Anhang dieser Nachricht nun die ausgearbeitete Stellungnahme sowie unser Angebot zukommen zu lassen.</p> <p>Bei Fragen k&ouml;nnen Sie mich jederzeit erreichen.&nbsp;</p> <p>Viele Gr&uuml;&szlig;e,&nbsp;</p> <p>Lisa Sommer&nbsp;</p> <p>meine Firma</p> <p>Wilhelm-Str. 2</p> <p>80807 M&uuml;nchen</p> <p>Fon: +49 8763 1333</p> <p>E-Mail: lsommer@meine-firma.de</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -627,6 +705,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:44:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="be13e560-73a3-48a6-a419-afc151285cc7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -635,6 +714,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:44:38"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fd3aa1db-e0c9-4ab4-a9ad-c7ba612af586"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Hr. von Alpenhorn hatte die erfreuliche Nachricht, dass sie sich f&uuml;r unser Produkt entschieden haben;&nbsp;</p> <p>Vertrag kann nun fertig gemacht und zugesandt werden&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -643,6 +723,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:44:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="05942ed2-c9a3-41ca-8f0e-305d0e116831"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "15.11.2019", Betreff: "Rahmenvertrag an den neuen Kunden versandt", Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Beschreibung: "<p>Spezifikationen wurden so mit dem Kunden besprochen.</p> <p>Er erh&auml;lt in den ersten zwei Jahren 10 % Nachlass.</p> ", Kategorie: "MAIL ", Richtung: "o " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -651,6 +732,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:46:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2405de30-7e71-4a97-8b3c-d240a0fcd882"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "d3e2acf7-ee1c-4b17-9cb6-e8e720d0cc0b", Objekt: "b2c211a7-6dcf-450b-b420-9f04d790de7a", Art: "Contract" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -659,6 +741,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:46:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1224bcca-ac13-4aed-af29-5eb38ef567f5"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "d3e2acf7-ee1c-4b17-9cb6-e8e720d0cc0b", Objekt: "f7b8f0c3-7702-4466-b502-d21fa4fa0010", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -667,6 +750,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:46:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2795a6f9-35fe-4faa-a1f2-80244812004c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "1a67eaa7-21da-4a18-97ab-755ac5cb74f7", Kategorie: "PHONE " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -675,6 +759,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:50:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e62009f7-67dd-404e-9099-c0dccacf80ae"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "1a67eaa7-21da-4a18-97ab-755ac5cb74f7", Kategorie: "PHONE " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -683,6 +768,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:51:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f9183367-4e23-4173-a060-e75cb3221b59"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Kategorie: "PHONE " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -691,6 +777,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:51:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e4df4b09-a87f-4212-b45f-72dbef3ac596"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betreff: von "Gespräch mit Frau Decker" auf "Gespräch mit Frau Decken" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -699,6 +786,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:51:37"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c1f89fd8-b040-4fc8-8d51-8b87c82f07b2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Kategorie: "VISIT ", Richtung: von "inx " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -707,6 +795,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:51:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a20d122f-0830-4128-9b75-4e21b77c6997"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Activity Id: "62486e9e-52c6-476f-b1e3-5d62e3f6384e", Objekt: "19c6bf30-cd8b-40df-980c-ce71c92c194c", Art: "Person" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -715,6 +804,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:52:54"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0a092579-d2d4-41f3-8e3f-2ed71ea81852"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "i " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -723,6 +813,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:53:17"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="094b903d-0d35-4495-bb89-8b58327a00a2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Herr Morgenstern hat differenziert von Frau Decken&nbsp;nochmal Fragen zu Produkt 1 und 3.</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -731,6 +822,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:53:32"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="20f0c26a-24a4-49aa-b813-1f3b26370a92"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Richtung: von "inx " auf "x " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -739,6 +831,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:53:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4e4eb31e-4c63-4a2f-92c6-89a7b8ef41c7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beschreibung: "<p>Sind auf dem Stand gewesen. Haben&nbsp;uns&nbsp;Fragen gestellt, Unternehmen kurz vorgestellt. War ein angenehmes Gespr&auml;ch.&nbsp;</p> " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -747,6 +840,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:54:17"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ecb64aba-33e5-46b1-ab06-15bf43455991"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Beschreibung: "<p>Sind auf dem Stand gewesen. Haben&nbsp;uns&nbsp;Fragen gestellt, Unternehmen kurz vorgestellt. War ein angenehmes Gespr&auml;ch.&nbsp;</p> ", Kategorie: "VISIT ", Richtung: von "i " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -755,6 +849,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:54:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="485845e6-0d08-4a96-b925-2c5c8cd446b3"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Kategorie: "MAIL " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -763,6 +858,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:55:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2d9cc548-f86c-4c70-9f6c-adf0c8ecba01"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "o " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -771,6 +867,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:55:20"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="5a9317d7-5dde-40b3-8694-3ca02e39d870"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "x " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -779,6 +876,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:55:41"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9f894ecf-89bf-4eca-896f-02e2b6d09e55"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -787,6 +885,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:55:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2195d938-8e38-427f-a433-9c6bdbc1851d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Verantwortlich: "ef345d11-a40d-59e0-a24c-afcb6095d2cb", Richtung: von "inx " auf "x " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -795,6 +894,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:56:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="95e643a8-5b15-4d04-ad61-456013fd19b2"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "12.08.2019", Betreff: "Rahmenvertrag versandt", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Beschreibung: "<p>Rahmenvertrag wurde an die Legal Abteilung des Kunden versandt.</p> <p>&nbsp;</p> <p>Warte auf R&uuml;ckmeldung.</p> ", Richtung: "o " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -803,6 +903,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:57:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="76b82ec8-bcb6-48be-8f2d-56f64ba45db2"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "9c22ba51-8a09-40f1-b6b8-9787fe43b141", Objekt: "6a92df58-2b98-40da-ba6a-d0ddb1fde234", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -811,6 +912,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:57:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9e30d1d5-38b9-444a-9795-34049385355a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Kategorie: "MAIL " geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -819,6 +921,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T08:57:28"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="47a441f6-82b8-469d-a225-02f673a69e4d"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "9c22ba51-8a09-40f1-b6b8-9787fe43b141", Objekt: "29271db0-4253-46c9-b7c2-5e25376b9d19", Art: "Person" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -827,6 +930,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T09:00:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f383e96b-8415-4b75-9baf-0def377bde02"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Anforderer: "Frau Lisa Sommer | meine Firma", Status: "zugewiesen", Bearbeiter: "Herr Herbert Obermeier | meine Firma", Beginn: "15.11.2019", Fortschritt: "0%", Beschreibung: "Verpackung der Ware hat bei Zustellung äußerliche Beschädigungen aufgewiesen. An den gleichen Stellen ist die Ware ebenfalls beshädigt.", Fällig: "22.11.2019", Priorität: "niedrig", Betreff: "Beschädigte Ware" eingefügt."/> <column name="TABLENAME" value="TASK"/> @@ -835,6 +939,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:01:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cd622430-d539-41a1-b18d-eb31d03dcff3"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Objekt: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Task Id: "46164eac-62d1-4dbb-a252-93ac49429855", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="TASKLINK"/> @@ -843,6 +948,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:01:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="67f68d02-a585-42cf-bc44-2e74c1e88b72"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Type: "Fehler" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -851,6 +957,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:01:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1edd357c-2ab2-484a-ba04-e0ac374466f3"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Modul group: "Produkt" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -859,6 +966,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:01:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="00288b45-b305-4578-a2a4-4ed2b6e33d49"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Ticket / Support / Cause: "Lieferprobleme" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -867,6 +975,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:01:59"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0bc6698d-0681-43be-8058-d9e42659e3ce"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "15.11.2019", Betreff: "Anforderungen Bilderdokumentation", Parent Id: "634ad7a8-9c68-4ea4-8385-f5bb37224482", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Kategorie: "PHONE ", Richtung: "o ", Parent context: "SupportTicket" eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -875,6 +984,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:05:25"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="86c7423a-5db3-42a1-b26d-c03a902fb913"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "b8067a42-d059-4d86-88b0-485a194faa36", Objekt: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -883,6 +993,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:05:25"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4bae3b15-9bd7-4679-bf6d-dd7927f66654"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Name: "Erstkontakt ADITO", Dokumentvorlage: "Erstkontakt ADITO", Betreff: "Email Vorlage Erstkontakt", Sender: "tadmin@meine-firma.de" eingefügt."/> <column name="TABLENAME" value="BULKMAIL"/> @@ -891,6 +1002,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T11:12:57"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="aaa51aaa-5259-4fb4-bb0c-f13d01bacee2"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Bezeichnung: "Ersatzteil 3", Menge: "50", Einheit: "Stück", UmsSt. in %: "19.00", Einzelpreis: "1060.00", Position: "1", Warengruppe: "Ersatzteile", Artikel: "6e52e636-284d-454b-978c-8f58844c5c5b", Optional: "Nein" eingefügt."/> @@ -901,6 +1013,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T12:39:16"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="5e5ea71c-5909-4733-a203-fdeba4f3300c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "0.00" auf "53000", UmsSt.: von "0.00" auf "10070" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -909,6 +1022,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T12:39:16"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="47aa1082-5633-4a35-9507-0f850b4dd222"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Kopftext: "Gerne bieten wir Ihnen wie folgt an:", Verknüpfung: "Herr Markus Altinger | Industrial Steel AG", Datum: "15.11.2019", Belegnummer: "1016", Vers.-Nr.: "1", Währung: "EUR " eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -917,6 +1031,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T12:40:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="792e84f2-e8e6-454e-8b20-faa286bad5cf"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: "0", UmsSt.: "0" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -925,6 +1040,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T12:40:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cb4c484f-de07-4e00-a8a3-bf3af558a66f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Entry date: "15.11.2019", Betreff: "fällig", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Richtung: "o " eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -933,6 +1049,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T01:03:35"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9d97109c-d973-4c7a-8cb3-ec1e4e3d178b"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "c7c29526-3138-4264-8eb4-c6876797f8fe", Objekt: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -941,6 +1058,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T01:03:35"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="575c4fb8-6f34-40f9-bc66-b7c053518b0a"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Activity Id: "c7c29526-3138-4264-8eb4-c6876797f8fe", Objekt: "438537db-0dc6-4aed-b1d1-813011baf88c", Art: "Salesproject" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -949,6 +1067,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T01:03:35"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6b4a6f69-2dc7-494c-a8a8-2c55f8ae7c3f"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Phase: von "MQC" auf "SQO" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -957,6 +1076,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T01:06:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ed75595b-e06a-44e5-83fc-1393c42f8703"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "438537db-0dc6-4aed-b1d1-813011baf88c", Date start: "15.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -965,6 +1085,7 @@ <column name="DATE_NEW" valueDate="2019-11-15T01:06:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0dd8cbbc-af1b-40e9-a629-7eec4e38aac3"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Firma: "privat", Status: "Aktiv", Sprache: "deu" eingefügt."/> <column name="TABLENAME" value="CONTACT"/> @@ -973,6 +1094,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T09:22:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="530e9981-60ac-41b9-91e1-fe653a7054b1"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Nachname: "Leierseder" eingefügt."/> <column name="TABLENAME" value="PERSON"/> @@ -981,6 +1103,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T09:22:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9e45de20-97a9-42ae-a712-a119e1397389"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "gering" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -989,6 +1112,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T09:22:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cbb78749-9451-4497-8d89-7527d730f715"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Nachname: "Leierseder" gelöscht."/> <column name="TABLENAME" value="PERSON"/> @@ -997,6 +1121,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T09:27:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="67a5ff81-e28d-46fd-b207-3c44529d16be"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Sprache: "deu", Firma: "privat", Status: "Aktiv" gelöscht."/> <column name="TABLENAME" value="CONTACT"/> @@ -1005,6 +1130,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T09:27:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="77cfd449-f42d-40ff-bc1a-298d108b05a1"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Anforderer: "Herr Tim Admin | meine Firma", Status: "neu", Bearbeiter: "Herr Tim Admin | meine Firma", Beginn: "25.11.2019", Fortschritt: "0%", Fällig: "02.12.2019", Priorität: "niedrig", Betreff: "Controlling Termin Vorbereiten", Geschützt: "Nein" eingefügt."/> <column name="TABLENAME" value="TASK"/> @@ -1013,6 +1139,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T10:00:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d9c71555-a647-4c7c-aaed-52d14c3a3d91"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Anforderer: "Herr Tim Admin | meine Firma", Status: "neu", Bearbeiter: "Herr Tim Admin | meine Firma", Beginn: "26.11.2019", Fortschritt: "0%", Fällig: "02.12.2019", Priorität: "niedrig", Betreff: "Rückruf Herr. Feldner", Geschützt: "Nein" eingefügt."/> <column name="TABLENAME" value="TASK"/> @@ -1021,6 +1148,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T10:01:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3876c449-8493-40ed-8cdd-0b98f1a4925f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "gross" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1029,6 +1157,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T01:27:33"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ac9c9704-2fc4-46e3-89cf-efdf87271808"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Firma: "Firmengruppe Matthias Bogen", Status: "Aktiv", Sprache: "deu" eingefügt."/> <column name="TABLENAME" value="CONTACT"/> @@ -1037,6 +1166,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T01:52:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="605c87a8-c592-4d61-8895-9ea9849a480f"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="ADDRESS"/> <column name="DESCRIPTION" value="Ort: "Geisenhausen", Adresstyp: "Privatadresse", Adresse: "Konrad", Land: "Deutschland", postcode: "84144" eingefügt."/> @@ -1047,6 +1177,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T01:52:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fed0a843-8e27-4966-9f15-3823cfd7a73f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Kommunikation Mobil: "+49 176 48525800" eingefügt."/> <column name="TABLENAME" value="CONTACT"/> @@ -1055,6 +1186,7 @@ <column name="DATE_NEW" valueDate="2019-11-25T01:52:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="66af4a77-743e-4632-b264-f5bbfcf53c2c"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1063,6 +1195,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e6fe58ff-b4ce-4321-a5c5-3c1dfe4e74c0"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Maschinenbau" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1071,6 +1204,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:17:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="412099cf-df8a-4aef-9ffb-7d65adf58c05"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Handel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1079,6 +1213,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:18:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4eebf78c-4e35-491d-9eec-cf78adc2f7c4"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "gross" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1087,6 +1222,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:18:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fa5763c1-44c5-41c2-9f14-dc577e47a2d7"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1095,6 +1231,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d7b39b79-8259-4ac4-a33d-d0cfbe66a61f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Bauwesen" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1103,6 +1240,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:19:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="44865714-b8ec-44ec-be10-ab4b8e0e9eb7"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1111,6 +1249,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:20:19"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6d1db314-0596-48c6-870e-714d8fe7410b"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Service" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1119,6 +1258,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="089c1ede-f433-4dc7-b246-5d25b282b95b"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1127,6 +1267,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:20:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="081c7dba-e007-40f8-aae0-6e8d4b17e526"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Logistik" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1135,6 +1276,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:21:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9b4c7b71-fb7e-4785-9363-5286e99c9537"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1143,6 +1285,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:21:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ef03449d-8bff-4b5a-b3e8-ec09f01acddf"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1151,6 +1294,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="64282d4b-f283-47ab-a3ff-d04a80437476"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Maschinenbau" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1159,6 +1303,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:22:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="86651169-0760-4d2b-bbf7-de95c4e7a044"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Maschinenbau" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1167,6 +1312,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cc176cf3-2f87-445c-8ae3-432c92d6d8d7"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1175,6 +1321,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:24:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d0daafcf-d9ba-4ba6-ae60-261bd019f0c0"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Maschinenbau" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1183,6 +1330,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:25:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="22c7c486-b3a2-41d6-a0f3-972149a4462a"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1191,6 +1339,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:25:13"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="60b48418-3d03-4896-9727-20e8925b7472"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1199,6 +1348,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3dd09bc5-4451-4fb4-b5fd-e1c94bb73bf4"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Logistik" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1207,6 +1357,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:25:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="96542fd5-189b-486e-a7dd-4019eacaa9c8"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Bauwesen" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1215,6 +1366,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:26:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fe10ae0d-3db0-48ac-8d89-906f63e557da"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "gross" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1223,6 +1375,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:26:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e2e56e28-945b-4c38-b152-aefc8c0017f8"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "gross" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1231,6 +1384,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:27:08"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a69b26e5-b97a-4a48-bac8-0d185048a310"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Bauwesen" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1239,6 +1393,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="271a9db9-d8b4-4741-8c9e-ff41eec344db"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Loyalty: "mittel" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1247,6 +1402,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:27:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1f358458-1c2d-4671-a60c-3ede107f662e"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Assessment / Industry: "Bauwesen" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1255,6 +1411,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:28:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="936f2901-e80f-4f9d-b6ec-86d9b4fd00c6"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Name: "Serienmail - Newsletter", Betreff: "Newsletter 2020", Sender: "tadmin@meine-firma.de" eingefügt."/> <column name="TABLENAME" value="BULKMAIL"/> @@ -1263,6 +1420,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:29:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="dd6a5c84-03b2-4f11-a1d2-c1fbd8d500bc"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Name: "Produktinformationen", Betreff: "Produktinformationen ", Sender: "tadmin@meine-firma.de" eingefügt."/> <column name="TABLENAME" value="BULKMAIL"/> @@ -1271,6 +1429,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:30:20"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c667d7ab-2de8-4dc6-a24b-afaa41469af2"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Dokumentvorlage: "Geschaeftspapiere", Titel: "Weihnachtskarte" eingefügt."/> <column name="TABLENAME" value="SERIALLETTER"/> @@ -1279,6 +1438,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:31:13"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="04009e6f-f3b2-447a-82ed-9152f5e39041"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Dokumentvorlage: "Geschaeftspapiere", Titel: "Einladung Kundentag" eingefügt."/> <column name="TABLENAME" value="SERIALLETTER"/> @@ -1287,6 +1447,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:31:56"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="03544ab3-e4ed-4273-a29b-abf0f38676aa"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Dokumentvorlage: "Geschaeftspapiere", Titel: "VIP Kundeneinladungen" eingefügt."/> <column name="TABLENAME" value="SERIALLETTER"/> @@ -1295,6 +1456,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:32:35"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="10b4274c-8fdf-4893-b1b3-522763b2a939"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Dokumentvorlage: "Erstkontakt meineFirma", Betreff: von "Newsletter 2020" auf "Erstkontakt meineFirma" geändert."/> <column name="TABLENAME" value="BULKMAIL"/> @@ -1303,6 +1465,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:38:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3c0001e6-57ec-44ea-80d4-1f5b119148b7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Dokumentvorlage: "Erstkontakt ADITO", Betreff: von "Produktinformationen " auf "Email Vorlage Erstkontakt" geändert."/> <column name="TABLENAME" value="BULKMAIL"/> @@ -1311,6 +1474,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T06:39:20"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="209dd881-57eb-429b-8144-8fd5e14ad1bb"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Object 1 row Id: "13e60843-5d6d-45ee-88c7-46db41874138", Object 2 row Id: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Object relation type 1: "3cee0474-504f-43cc-844a-715f1a0db271", Object relation type 2: "fa879afd-b2c5-4eee-9799-d63c6764b348" eingefügt."/> <column name="TABLENAME" value="AB_OBJECTRELATION"/> @@ -1319,6 +1483,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:17:08"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="64a91508-b375-4a40-8968-968309e5f781"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Object 1 row Id: "b043cd42-058c-48bd-8326-4c92e0e74c48", Object 2 row Id: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Object relation type 1: "0795a3cd-295b-421b-aed1-decc09b05362", Object relation type 2: "0795a3cd-295b-421b-aed1-decc09b05362" eingefügt."/> <column name="TABLENAME" value="AB_OBJECTRELATION"/> @@ -1327,6 +1492,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:17:20"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3dabb79a-1b4f-4977-a7ff-d92d7e1a1b1f"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Object relation type 1: "0795a3cd-295b-421b-aed1-decc09b05362", Object relation type 2: "0795a3cd-295b-421b-aed1-decc09b05362", Object 1 row Id: "b043cd42-058c-48bd-8326-4c92e0e74c48", Object 2 row Id: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43" gelöscht."/> <column name="TABLENAME" value="AB_OBJECTRELATION"/> @@ -1335,6 +1501,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:17:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="de5beb83-904d-4657-89db-4ba5a56b68f5"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Object 1 row Id: "62175b31-b432-4ec6-932f-8e69033884c6", Object 2 row Id: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Object relation type 1: "0795a3cd-295b-421b-aed1-decc09b05362", Object relation type 2: "0795a3cd-295b-421b-aed1-decc09b05362" eingefügt."/> <column name="TABLENAME" value="AB_OBJECTRELATION"/> @@ -1343,6 +1510,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:18:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3e8db12d-58c7-41b1-aa83-4d3476b6e861"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Object 1 row Id: "97b66b3c-a9f5-4dc4-902e-850d69973d1d", Object 2 row Id: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Object relation type 1: "c9b7ce6b-1100-46f6-8498-2da6ac24189e", Object relation type 2: "259babbd-7827-44d4-b9ec-8245d27b5f70" eingefügt."/> <column name="TABLENAME" value="AB_OBJECTRELATION"/> @@ -1351,6 +1519,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:19:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9cca5b1e-a09a-4251-a140-1693bbe2418b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Funktion: "Vertriebsleiter", Abteilung: "Vertrieb" geändert."/> <column name="TABLENAME" value="CONTACT"/> @@ -1359,6 +1528,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:26:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="61b74b64-ad66-45f9-9059-82dedb856cab"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Firma: "Skyscraper Bau GmbH", Funktion: "Koordinator", Abteilung: "Produktion", Status: "Aktiv", Sprache: "deu" eingefügt."/> <column name="TABLENAME" value="CONTACT"/> @@ -1367,6 +1537,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:28:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="333210c1-e80d-4c75-9f34-8c80bbfd94dc"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="ADDRESS"/> <column name="DESCRIPTION" value="Ort: "Landshut", Adresstyp: "Privatadresse", Adresse: "Innere Münchner Straße", Land: "Deutschland", postcode: "84028", Hausnummer: "3" eingefügt."/> @@ -1377,6 +1548,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:28:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c3521d8a-d703-4ae7-b702-2975eb687447"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Funktion: von "Vertriebsleiter" auf "Berater" geändert."/> <column name="TABLENAME" value="CONTACT"/> @@ -1385,6 +1557,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T08:28:23"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0ae7a999-a5d3-4e04-b2a0-ffbf90588459"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Activity Id: "c7c29526-3138-4264-8eb4-c6876797f8fe", Objekt: "2c63e0de-f21c-474f-89d7-bff8ba1dbf43", Art: "Organisation" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -1393,6 +1566,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:34:38"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b5515d85-a146-47c5-9207-3b983c6f958b"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Activity Id: "c7c29526-3138-4264-8eb4-c6876797f8fe", Objekt: "438537db-0dc6-4aed-b1d1-813011baf88c", Art: "Salesproject" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -1401,6 +1575,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:34:38"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d886fc7a-82b4-48af-b0fa-d6c59a70613d"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Richtung: "o ", Entry date: "15.11.2019", Verantwortlich: "c7ddf982-0e58-4152-b82b-8f5673b0b729", Betreff: "fällig" gelöscht."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1409,6 +1584,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:34:38"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="16daca7b-e913-42fc-b3f0-168528784c97"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Phase: von "SQO" auf "MQC" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -1417,6 +1593,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8e324969-eae4-4935-a010-b3abe6d52c33"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Date end: "26.11.2019" geändert."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1425,6 +1602,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="49fea3f1-d977-49dc-9eb9-cca24d152e22"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "ef7f4726-4476-4f59-97c2-706dc1e0046f", Date start: "26.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1433,6 +1611,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:31"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="babd174d-ae39-4ec6-af81-604ec36f6ee2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Phase: von "SQO" auf "SAL" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -1441,6 +1620,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1b6f60b2-addc-4234-9804-f8963c168777"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Date end: "26.11.2019" geändert."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1449,6 +1629,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="dc1a34b2-7315-48a3-bb85-93d02ee3ccf6"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "d422ad81-717f-42b0-bd64-fc892744aac7", Date start: "26.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1457,6 +1638,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:43:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="22af8969-9a1b-4118-90da-e083a3fa5ceb"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Status: von "neu" auf "in Bearbeitung", Fortschritt: von "0%" auf "50%", Priorität: von "niedrig" auf "hoch" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -1465,6 +1647,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:45:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0cc833e9-85eb-476a-9db2-61f00c69bde0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Status: von "in Bearbeitung" auf "abgeschlossen" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -1473,6 +1656,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:45:24"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4b1320f4-1a6f-45be-9561-832accb03a43"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Phase: von "Negotiation" auf "Angebot" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -1481,6 +1665,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6319527e-783d-450d-ab80-faee247fcdaa"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Date end: "26.11.2019" geändert."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1489,6 +1674,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6740c05a-562c-476e-8f50-51e8ddb14c46"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "7e2680f6-a438-45aa-956a-787363f85923", Date start: "26.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1497,6 +1683,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ea112d12-760e-45a2-a2fb-626568b10bab"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Projektnummer: "1007", Roll Out: "26.11.2020", Projekttitel: "Projekt 123", Projektstart: "26.11.2019", Firma: "Glob Group", Phase: "NQC" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -1505,6 +1692,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8e9e125a-e14b-4dac-8fe4-42d8f1f6439c"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba", Date start: "26.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1513,6 +1701,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7c1f2e3c-709d-486f-94fd-c7fbede44c86"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Salesproject Id: "ebb04ae2-d1f9-4ef3-bdfa-e9f562d215ba", Date start: "26.11.2019" eingefügt."/> <column name="TABLENAME" value="SALESPROJECT_MILESTONE"/> @@ -1521,6 +1710,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3d788b4d-a969-40cd-adb0-f60652d2e4a3"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Project type: "Bestandskunde" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -1529,6 +1719,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T12:48:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="251458a1-24be-4028-8391-8591e360c84d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Funktion: von "Vertriebsmitarbeiter" auf "Einkaufsleiter" geändert."/> <column name="TABLENAME" value="CONTACT"/> @@ -1537,6 +1728,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T01:00:57"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4bed471a-0654-4db4-871f-6943361738ca"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Funktion: von "Einkaufsleiter" auf "Vertriebsleiter" geändert."/> <column name="TABLENAME" value="CONTACT"/> @@ -1545,6 +1737,7 @@ <column name="DATE_NEW" valueDate="2019-11-26T01:01:24"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7b2bbf77-99e2-40a5-8ef6-ab544fd1311c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "15.11.2019" auf "15.09.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1553,6 +1746,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:19:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="54b6ed90-6d03-4af0-a9c5-a1ffb0e8a9cf"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "15.11.2019" auf "16.09.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1561,6 +1755,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:20:13"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="fe66100c-54b4-47c4-bdad-ce1fe4f86b73"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "13.11.2019" auf "11.09.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1569,6 +1764,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:21:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="003d6447-2eed-4cce-a9a7-c2a5a2522647"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Campaign", Aktivitäten ID: "c42c23ef-3921-4a10-bb9a-040178f28bd2", Objekt: "680de39f-7f1c-4dca-8c67-9c16c3395c3f" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -1577,6 +1773,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:22:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="45467183-85cd-4c52-8b3b-383a0d5da64a"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Campaign", Aktivitäten ID: "c42c23ef-3921-4a10-bb9a-040178f28bd2", Objekt: "996b8af6-13f4-4606-a303-69f941cf6f13" gelöscht."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -1585,6 +1782,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:22:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="bc7bec52-b7e6-4052-b715-a323f8acb38b"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Betreff: "Einladungen gehen 18.09 raus", Eingangsdatum: "04.09.2019", Verantwortlich: "Herr Tim Admin | meine Firma", Beschreibung: "[BLOB] ", Richtung: "Intern" gelöscht."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1593,6 +1791,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:22:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="755c952e-d43a-4e1a-90b5-b2fe2ee29e41"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "04.09.2019" auf "08.07.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1601,6 +1800,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:22:38"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="177dfc01-9610-4b8b-bba8-fc0fda113c25"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "12.08.2019" auf "10.06.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1609,6 +1809,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:23:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1250ecea-4c47-4063-a856-77fa5b68bed5"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "23.05.2019" auf "21.05.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1617,6 +1818,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:23:24"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2c2acae0-80d1-422b-97f1-c25b8f14b7e6"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "17.05.2019" auf "15.05.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1625,6 +1827,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:24:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c02f9e67-0e98-4b4d-b7f6-91a9040f39f2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "15.05.2019" auf "06.05.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1633,6 +1836,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:24:27"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e76f48e3-8eb9-43bd-840b-92699239456c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "17.04.2019" auf "08.04.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1641,6 +1845,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:24:40"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="58e9f92f-92bd-477d-b38e-0b0c1a7a885c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "08.04.2019" auf "06.04.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1649,6 +1854,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:25:06"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="10510212-fbf3-4197-bb36-bd62d2ea1bab"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "08.04.2019" auf "02.04.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1657,6 +1863,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:25:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4c74fc41-cd64-420d-b592-4aacc232c9ca"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "29.03.2019" auf "27.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1665,6 +1872,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:25:29"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7cd2434d-4d45-47bd-b829-c3bdb4fb8fa4"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "29.03.2019" auf "26.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1673,6 +1881,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:25:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="43aa221b-be37-4076-acbd-ef9a7aa73f51"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "28.03.2019" auf "24.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1681,6 +1890,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:25:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="dd444af7-33f0-4f8b-bef5-33665fb593d7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "26.03.2019" auf "24.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1689,6 +1899,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e103486c-43ad-42ab-be74-8602eda78923"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "22.03.2019" auf "19.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1697,6 +1908,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f79fc9f6-6263-4843-b6f1-1f1392f6886e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "22.03.2019" auf "19.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1705,6 +1917,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:17"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="38cc5664-582d-4d86-887c-fdc2961e9037"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "22.03.2019" auf "20.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1713,6 +1926,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a1ebc2b8-1ee9-44e5-bbfc-b73f0bc6b7f1"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "21.03.2019" auf "19.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1721,6 +1935,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="42a5b65b-c443-426b-a048-a15807b5bf9b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "20.03.2019" auf "18.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1729,6 +1944,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:45"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b81ec23b-544a-48c7-aff2-8a99077ed2a1"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "13.03.2019" auf "11.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1737,6 +1953,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:26:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b75e6098-6a13-47b3-a1a0-acd84829e6b5"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "13.03.2019" auf "11.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1745,6 +1962,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:03"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c2c47a2e-7f71-4993-a20e-35bf9e191262"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "12.03.2019" auf "10.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1753,6 +1971,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2cff4cf4-251b-45a4-b3d5-95dcdd0aca58"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "11.03.2019" auf "09.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1761,6 +1980,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:27"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0fbb6c4f-f64f-464e-a3f6-1ecc267c1a2f"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "11.03.2019" auf "09.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1769,6 +1989,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:37"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1657c54f-0135-4412-8f51-c70326f96197"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "05.03.2019" auf "03.03.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1777,6 +1998,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="5d05e038-ba5d-4320-9668-75becf9f73b4"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "01.03.2019" auf "28.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1785,6 +2007,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:27:57"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="91819b7a-185e-4071-ad02-a92883bb7a8b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "25.02.2019" auf "24.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1793,6 +2016,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:28:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e54e33d0-aed0-4694-91d2-1b15c5c9c38b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "19.02.2019" auf "18.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1801,6 +2025,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:28:22"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2b2bc8f0-5c09-4dfa-b28b-445f02d07ba9"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "18.02.2019" auf "17.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1809,6 +2034,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:28:33"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0d70f350-b4ad-420b-a282-69c03bbd7798"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "08.02.2019" auf "07.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1817,6 +2043,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:28:41"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="22916d35-d9f9-4b09-a36b-e82f7b25808b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "04.02.2019" auf "03.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1825,6 +2052,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:28:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6c05fc67-7ac1-4367-9ed1-9ffafb44a643"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "04.02.2019" auf "03.02.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1833,6 +2061,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3a9f4f10-5b9c-42a0-aab0-8945478e74d7"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "28.01.2019" auf "27.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1841,6 +2070,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:10"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="bf8bfe6f-0cc2-4598-af0e-1653e424b80c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "22.01.2019" auf "21.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1849,6 +2079,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:23"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="bd219e01-d755-4545-88c1-1a5426df940e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "18.01.2019" auf "17.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1857,6 +2088,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:32"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7810c79b-1ceb-4f34-b217-8e42a986cd94"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "14.01.2019" auf "13.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1865,6 +2097,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="482023de-5f09-40db-875e-f097f1cad5a0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "14.01.2019" auf "13.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1873,6 +2106,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:29:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e6b4503f-6bc0-47bb-ac36-2be03880c2cd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "14.01.2019" auf "13.01.2020" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1881,6 +2115,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="72dc854a-b5ae-4dca-9ff9-7979d9933332"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "12.08.2018" auf "09.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1889,6 +2124,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:15"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f673c729-f7ed-40f3-8622-615b7aa4886c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "11.08.2018" auf "09.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1897,6 +2133,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c2844620-c147-4d8b-812b-84255e400f4a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "09.08.2018" auf "08.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1905,6 +2142,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:37"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3440e992-9037-44f6-8af1-215c38ff2e72"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "06.08.2018" auf "06.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1913,6 +2151,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9c969824-56e8-44aa-9f81-711fa5357987"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "04.08.2018" auf "02.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1921,6 +2160,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:30:56"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b167e355-1f8a-4384-9e6c-ee1f10fdbf12"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "04.08.2018" auf "02.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1929,6 +2169,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:31:06"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="dd0598bf-1594-4e1d-b64a-e3f9635c4c30"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "03.08.2018" auf "02.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1937,6 +2178,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:31:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="68b7b384-f78d-4bf3-90b2-c277cabb5a0d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "03.08.2018" auf "02.08.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1945,6 +2187,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:32:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="602a3e14-e9c7-4198-a84c-67aae81f8781"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "31.07.2018" auf "30.07.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1953,6 +2196,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:32:12"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b08daa61-d633-471f-9215-36437fdccbd2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "03.06.2018" auf "31.05.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1961,6 +2205,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:32:26"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c2da0ec5-c870-4d47-9727-679cf895f3d0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "22.02.2018" auf "21.02.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1969,6 +2214,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:32:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="1a6e60db-13af-42ad-82d0-3bd00b6758a2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "03.06.2018" auf "31.05.2019" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1977,6 +2223,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:32:56"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="757a8aee-ecfd-4c77-ba58-425c974e50fd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Eingangsdatum: von "13.04.2017" auf "12.04.2018" geändert."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -1985,6 +2232,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:33:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="28fc359c-6364-4b39-8238-2a526b596511"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "25.11.2019" auf "23.11.2020", Fällig: von "02.12.2019" auf "02.12.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -1993,6 +2241,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:34:03"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8c57123a-f6e8-4e2f-a521-60e8dd7060ed"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Herr Tim Admin | meine Firma", Beginn: von "22.05.2019" auf "20.05.2020", Fällig: von "13.11.2019" auf "11.11.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2001,6 +2250,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:34:27"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="306f1151-4988-4b35-be83-5e12fbbbf2fd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Lisa Sommer | meine Firma", Beginn: von "22.05.2019" auf "20.05.2020", Fällig: von "01.10.2019" auf "01.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2009,6 +2259,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:34:57"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="723b019d-b106-49c8-bd7c-7a162a07f8ae"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Herr Tim Admin | meine Firma", Beginn: von "11.03.2019" auf "09.03.2020", Fällig: von "21.06.2019" auf "19.06.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2017,6 +2268,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:35:29"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="81cce57d-b3f7-4544-8c0e-6ebdd15a1a9b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Lisa Sommer | meine Firma", Beginn: von "23.05.2019" auf "21.05.2020", Fällig: von "30.05.2019" auf "29.05.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2025,6 +2277,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:36:52"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="51a78a04-e24e-4580-a50f-a2755bc71064"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Herr Tim Admin | meine Firma", Beginn: von "23.05.2019" auf "21.05.2020", Fällig: von "30.05.2019" auf "28.05.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2033,6 +2286,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:37:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="5253bb09-7525-4025-85c8-0b01fed5d390"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "11.02.2019" auf "30.09.2020", Fällig: von "29.05.2019" auf "30.09.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2041,6 +2295,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:37:50"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f77e430d-cf20-44a3-953d-0b4ea2c4a9c9"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "22.05.2019" auf "21.10.2020", Fällig: von "29.05.2019" auf "12.11.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2049,6 +2304,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:38:21"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ee48e9d8-323d-4e23-ab12-63fc38bbd5fd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "17.05.2019" auf "14.10.2020", Fällig: von "24.05.2019" auf "28.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2057,6 +2313,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:38:40"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f3b8d56c-a42e-4fca-98e8-4ad2cced2c3a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Lisa Sommer | meine Firma", Beginn: von "17.05.2019" auf "21.10.2020", Fällig: von "24.05.2019" auf "30.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2065,6 +2322,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:39:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="7241fa05-0d95-42d3-9fee-2a8b761b73e6"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "22.05.2019" auf "27.10.2020", Fällig: von "24.05.2019" auf "27.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2073,6 +2331,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:39:39"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cc542a0c-705c-44eb-aa11-c0b787109c48"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Lisa Sommer | meine Firma", Beginn: von "17.05.2019" auf "26.10.2020", Fällig: von "22.05.2019" auf "30.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2081,6 +2340,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:40:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="375c6da2-6ee7-438a-a1c3-a31be44ebcad"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Birgit Leicht | meine Firma", Beginn: von "08.05.2019" auf "22.12.2020", Fällig: von "15.05.2019" auf "22.12.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2089,6 +2349,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:40:33"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d3403f8d-4642-458a-8efc-d065ed00a681"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Bearbeiter: von "undefined" auf "Frau Lisa Sommer | meine Firma", Beginn: von "01.04.2019" auf "21.10.2020", Fällig: von "05.04.2019" auf "21.10.2020" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2097,6 +2358,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:41:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c0dd4ad8-0472-4534-99b8-2d9f3e770d23"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Beginn: von "20.01.2019" auf "20.01.2021", Fortschritt: von "undefined" auf "0%", Fällig: von "20.01.2019" auf "20.01.2021" geändert."/> <column name="TABLENAME" value="TASK"/> @@ -2105,6 +2367,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:41:40"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b8c6c46a-768d-41af-8668-92e14045c94c"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Projektart: "Interessent" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -2113,6 +2376,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:51:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="aa2de163-40c6-4b97-b6f3-af8310391f6e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Wahrscheinlichkeit: von "50 %" auf "25 %", Roll Out: von "22.05.2020" auf "22.05.2022", Projektstart: von "05.02.2016" auf "05.02.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2121,6 +2385,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T06:52:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e70c97c3-e35b-4131-9741-a2520e75ac6e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Minimal count: von "1" auf "undefined" geändert."/> <column name="TABLENAME" value="AB_ATTRIBUTEUSAGE"/> @@ -2129,6 +2394,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:02:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c446ce0a-3981-4a83-935a-6a42ee0716ee"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Roll Out: von "16.05.2020" auf "20.05.2021", Projektstart: von "16.05.2019" auf "14.05.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2137,6 +2403,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:03:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e134cf30-8b24-4a08-ba10-f74f3bdab34c"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Industrial Steel AG Königstraße 4 22767 Hamburg", Datum: von "25.03.2019" auf "22.03.2021" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2145,6 +2412,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:20:28"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d4f7c8cb-f8dc-4cd4-a746-61d32ded2472"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Datum: von "22.03.2021" auf "16.03.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2153,6 +2421,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:20:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="aecf27f2-e437-4ba3-83b0-8eb33925b840"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Industrial Steel AG Königstraße 4 22767 Hamburg", Verknüpfung: von "Herr Markus Altinger | Industrial Steel AG" auf "Industrial Steel AG", Datum: von "25.03.2019" auf "23.03.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2161,6 +2430,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:21:09"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b54e5223-0a7f-4267-a7b7-a67b9426f3c0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Industrial Steel AG Königstraße 4 22767 Hamburg", Datum: von "17.05.2019" auf "15.05.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2169,6 +2439,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:23:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="abfc3dcd-617f-42b7-8e82-cdaf7d1a6308"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Industrial Steel AG Königstraße 4 22767 Hamburg", Datum: von "16.05.2019" auf "14.05.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2177,6 +2448,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:23:47"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6861a504-8cb1-4ca4-bce8-a1ca23fdc112"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Roll Out: von "22.05.2020" auf "22.05.2022", Projektstart: von "16.05.2017" auf "13.05.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2185,6 +2457,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:24:34"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6b887eb0-6e20-4c6f-97e7-1d8d7437e68a"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Wahrscheinlichkeit: von "undefined" auf "50 %", Roll Out: von "26.11.2020" auf "26.11.2021", Projektstart: von "26.11.2019" auf "24.11.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2193,6 +2466,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:25:53"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a1979cf4-b4bf-4c0c-bb0f-ae918b33ccb6"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Roll Out: von "17.05.2020" auf "17.05.2021", Projektstart: von "17.05.2019" auf "15.05.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2201,6 +2475,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:26:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="f60d0eb4-7b27-4f36-9e0f-74b89e58030b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart", Datum: von "11.07.2017" auf "06.07.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2209,6 +2484,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:30:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="2208a1ec-5845-443b-bfeb-36fba02c0fff"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart", Datum: von "17.05.2019" auf "12.08.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2217,6 +2493,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:30:32"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9c3cadf0-a155-4345-be97-d90bcb7c76e4"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart", Datum: von "08.03.2019" auf "19.08.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2225,6 +2502,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:30:46"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9cb00766-db31-4c3d-900b-b582ac0c7dde"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Roll Out: von "17.05.2020" auf "18.05.2022", Projektstart: von "17.05.2019" auf "15.05.2020" geändert."/> <column name="TABLENAME" value="SALESPROJECT"/> @@ -2233,6 +2511,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:31:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="990e1054-52ec-4d45-968c-5cf09dbc2a8b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen", Datum: von "14.08.2018" auf "10.09.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2241,6 +2520,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:32:45"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="32ed4643-7255-4e9e-99a0-38461bd77351"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Adresse: von "[BLOB]" auf "Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen", Datum: von "22.02.2019" auf "20.05.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2249,6 +2529,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:33:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="75662f20-eb31-4835-a856-4ff6e58439e4"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eigenschaft Besuchsplanung / Besuchsfrequenz: "vierteljährlich" eingefügt."/> <column name="TABLENAME" value="AB_ATTRIBUTERELATION"/> @@ -2257,6 +2538,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:45:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d613fb48-8830-4dd7-afab-0c5b3a4fc935"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eingangsdatum: "16.09.2020", Betreff: "telefonischer Austausch", Verantwortlich: "Herr Tim Admin | meine Firma", Beschreibung: "Gespräch zum Wachstumspotential 2021 ", Kategorie: "Telefon", Richtung: "ausgehend" eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -2265,6 +2547,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:48:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="db9ffaa6-1350-4ef3-b1af-c0c1d804dce8"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Aktivitäten ID: "18ed06df-30b2-4d59-a4b4-a6e646f6f05a", Objekt: "438537db-0dc6-4aed-b1d1-813011baf88c", Art: "Salesproject" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -2273,6 +2556,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:48:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cc9550fb-9e8b-4194-8a86-651296706d0e"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Aktivitäten ID: "18ed06df-30b2-4d59-a4b4-a6e646f6f05a", Objekt: "dec94545-2487-46d5-978d-26ee0fcf0f5f", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -2281,6 +2565,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:48:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3fec437c-afd6-4941-b2f1-b2533f2627a0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Mahndatum: von "undefined" auf "16.09.2020", Zahlungseingang: von "undefined" auf "16.09.2020", Datum: von "15.11.2019" auf "05.08.2020", Zahlungsziel: von "22.11.2019" auf "12.08.2020" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2289,6 +2574,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:48:55"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="0aeef57d-4bd7-48c9-8721-e1c968dbbbf3"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Sprache: "deu", Lieferadresse: "Industrial Steel AG Königstraße 4 22767 Hamburg", Mahnungstext: "Please pay the outstanding amount,this is you first/second reminder.", Verbindungstyp: "Vertriebsprojekt", Zahlungskondition: "7 Tage netto", Fußtext: "Danke sehr:", Belegtyp: "Rechnung", Verknüpfung: "Industrial Steel AG", Abgesagt: "Nein", Angebot: "Angebot 1013-1", Datum: "16.09.2020", Belegnummer: "1017", Lieferbedingung: "frei Haus", Zahlungsziel: "23.09.2020", Verknüpfung: "Vertriebsprojekt 1002 | Erstprojekt", Zahlungsadresse: "Industrial Steel AG Königstraße 4 22767 Hamburg", Währung: "Euro", Versendet: "Nein" eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2297,6 +2583,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:49:48"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="57f526c6-1101-4e5b-a023-1204a58cd515"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einheit: "Stück", Einzelpreis: "25000.00", Menge: "1.00", UmsSt. in %: "19.00", Artikel: "895f8caf-8c91-4ba8-9619-44ea6366cbbb", Position: "1", Optional: "Nein", Bezeichnung: "WG2 Produkt 5" eingefügt."/> @@ -2307,6 +2594,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:49:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="79ec8300-8590-4302-a6e7-467f0dace5c1"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "undefined" auf "25000", UmsSt.: von "undefined" auf "4750" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2315,6 +2603,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:49:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b8cf3102-7bae-482a-a5f0-4f56cce1dd63"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Mahndatum: von "undefined" auf "16.09.2020", Zahlungseingang: von "undefined" auf "16.09.2020", Bezahlt: von "undefined" auf "29750" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2323,6 +2612,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:50:00"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="199c9eb6-c54a-49c7-b360-6a0e65476915"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Versendet: von "Nein" auf "Ja" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2331,6 +2621,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:50:05"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="a0360a83-0aab-4255-ac6c-32985d12c099"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Eingangsdatum: "02.09.2020", Betreff: "Besuch zum umsatz", Verantwortlich: "Herr Tim Admin | meine Firma", Kategorie: "Besuch", Richtung: "eingehend" eingefügt."/> <column name="TABLENAME" value="ACTIVITY"/> @@ -2339,6 +2630,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:52:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="993d2fd0-0a9f-4271-8582-322d82d2343d"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Aktivitäten ID: "84954c14-f576-400b-8027-f9e66d345cc5", Objekt: "fc465f2f-803b-4a1f-b79d-7b466d7ecff4", Art: "Organisation" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -2347,6 +2639,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:52:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b8c59e96-b11d-4a4f-9627-d8d36faa2464"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Aktivitäten ID: "84954c14-f576-400b-8027-f9e66d345cc5", Objekt: "6d3d16cd-733e-41d1-ab6c-8a6cba63ba4a", Art: "Salesproject" eingefügt."/> <column name="TABLENAME" value="ACTIVITYLINK"/> @@ -2355,6 +2648,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:52:58"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="c5fb7a53-9b95-447d-b869-eee900af9aa8"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Sprache: "deu", Lieferadresse: "Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart", Mahnungstext: "Please pay the outstanding amount,this is you first/second reminder.", Verbindungstyp: "Vertriebsprojekt", Zahlungskondition: "7 Tage netto", Fußtext: "Danke sehr:", Belegtyp: "Rechnung", Verknüpfung: "Skyscraper Bau GmbH", Abgesagt: "Nein", Angebot: "Angebot 1007-1", Datum: "03.06.2020", Belegnummer: "1018", Lieferbedingung: "frei Haus", Zahlungsziel: "10.06.2020", Verknüpfung: "Vertriebsprojekt 1003 | Skyscraper / Pilotprojekt", Zahlungsadresse: "Skyscraper Bau GmbH Bolzstraße 64 70173 Stuttgart", Währung: "Euro", Versendet: "Ja" eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2363,6 +2657,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:54:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6d2192b7-891f-4290-93a0-a067fa0b52e1"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einheit: "Stück", Einzelpreis: "3500.00", Menge: "1.00", Artikel: "895f8caf-8c91-4ba8-9619-44ea6366cbbb", Position: "1", Optional: "Nein", Bezeichnung: "Turbolader" eingefügt."/> @@ -2373,6 +2668,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:54:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="68180e9b-aa93-49b5-bc3b-25ddf65d91dd"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einheit: "Stück", Einzelpreis: "5000.00", Menge: "5.00", Artikel: "535cec1a-e81c-4833-aad6-1d2348dbc0fb", Position: "2", Optional: "Nein", Bezeichnung: "Klimaanlage 4-Zonen", Beschreibung: "4 Zonen Klimaanlage für Mittelklasse Wagen" eingefügt."/> @@ -2383,6 +2679,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:54:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b45ce6c6-8cc1-4980-827d-f911c2d7a429"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "undefined" auf "28500", UmsSt.: von "undefined" auf "0" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2391,6 +2688,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:54:42"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="cdeb28fa-35f9-4dea-9ef2-e1e1836b79f2"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Mahndatum: von "undefined" auf "16.09.2020", Zahlungseingang: von "undefined" auf "16.09.2020", Bezahlt: von "undefined" auf "28500" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2399,6 +2697,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T07:54:57"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b559f51c-f10f-4d75-9976-dd5497611bff"/> <column name="LOGTYPE" value="U"/> <column name="SOURCE_TABLENAME" value="ADDRESS"/> <column name="DESCRIPTION" value="Adresse: von "Königstraße" auf "Rathausmarkt", Postleitzahl : von "22767 " auf "20095", Hausnummer: von "4" auf "1" geändert."/> @@ -2409,6 +2708,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T08:10:32"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ed1c4275-b243-44ba-ad89-c574f8f6edd2"/> <column name="LOGTYPE" value="U"/> <column name="SOURCE_TABLENAME" value="ADDRESS"/> <column name="DESCRIPTION" value="Stadt: von "Stuttgart" auf "Norderstedt", Adresse: von "Bolzstraße" auf "Rathausallee", Postleitzahl : von "70173" auf "22846", Hausnummer: von "64" auf "50", Staat: von "Baden-Württemberg" auf "Schleswig-Holstein" geändert."/> @@ -2419,6 +2719,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T08:11:37"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e02b3429-d728-4511-9569-7c2155321620"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Status: von "Offen" auf "Gewonnen" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2427,6 +2728,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:16"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ecf56a9c-fabd-45b8-956a-f7fa48883aae"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Sprache: "deu", Lieferadresse: "Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen", Mahnungstext: "Please pay the outstanding amount,this is you first/second reminder.", Verbindungstyp: "Vertriebsprojekt", Zahlungskondition: "7 Tage netto", Kopftext: "gerne bieten wir Ihnen wie folgt an:", Fußtext: "Danke sehr:", Belegtyp: "Rechnung", Verknüpfung: "Transatlantik Logistics GmbH", Abgesagt: "Nein", Angebot: "Angebot 1008-1", Datum: "01.09.2020", Belegnummer: "1019", Lieferbedingung: "frei Haus", Zahlungsziel: "08.09.2020", Verknüpfung: "Vertriebsprojekt 1004 | Transatlantik Initialprojekt", Zahlungsadresse: "Transatlantik Logistics GmbH Friedrichshafen 12 88046 Friedrichshafen", Währung: "Euro", Versendet: "Ja" eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2435,6 +2737,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8b1710ae-17b9-4fc9-9d74-de6f1b801e3b"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einheit: "Stück", Einzelpreis: "150000.00", Menge: "1.00", Artikel: "155ac430-ccfc-4814-95fc-189631779064", Rabatt: "5.00", Position: "1", Optional: "Nein", Bezeichnung: "Förderanlage" eingefügt."/> @@ -2445,6 +2748,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="3447de13-63e0-46fb-af58-0c5699ebb2cf"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einheit: "Kg", Einzelpreis: "5000.00", Menge: "10.00", Artikel: "8cdbd2d8-70e2-4899-9ac6-3f0c3e28cab1", Position: "2", Optional: "Nein", Bezeichnung: "Stahlträger Standard", Beschreibung: "Standard Stahlträger mit den Maßen 5m x 0,3m x 0,3m." eingefügt."/> @@ -2455,6 +2759,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="57a29717-d816-40dd-9d9f-08f34bef50d9"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "undefined" auf "192500", UmsSt.: von "undefined" auf "0" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2463,6 +2768,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9a7169ec-1e6b-4d16-bae3-12b23ce29d8d"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Mahndatum: von "undefined" auf "16.09.2020", Zahlungseingang: von "undefined" auf "16.09.2020", Bezahlt: von "undefined" auf "192500" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2471,6 +2777,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:10:49"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6e49432b-80a6-4736-8c69-2b9cab4f6fca"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Währung: "EUR", Adresse: "Bucher Unternehmensgruppe Julius-Leber-Straße 5 22765 Hamburg", Anschreiben: "Gerne bieten wir Ihnen wie folgt an:", Lieferbedingung: "frei Haus", Status: "Offen", Zahlungskondition: "7 Tage netto", Vers.-Nr.: "1", Wahrscheinlichkeit: "0%", Verknüpfung: "Bucher Unternehmensgruppe", Angebotsnummer: "1014", Datum: "06.04.2020" eingefügt."/> <column name="TABLENAME" value="OFFER"/> @@ -2479,6 +2786,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:12:03"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d3e8afbb-11b5-4246-b6b6-5f54fbabcbb0"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "undefined" auf "0.00", gesamte Mehrwertsteuer: von "undefined" auf "0.00" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2487,6 +2795,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:12:03"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="69fa6f94-b870-4815-8290-0369fd8e3f6b"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="OFFERITEM"/> <column name="DESCRIPTION" value="Einzelpreis: "145000", Optional: "Nein", Position: "1", Item sortieren: "1", Menge: "1", Artikel: "993f6294-f1fc-42d2-8786-1c13274fd133" eingefügt."/> @@ -2497,6 +2806,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:12:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="23baeac3-7383-41c8-9290-79bec190a5cd"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "0.00" auf "145,000.00" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2505,6 +2815,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:12:44"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e0620726-b8e0-4c7b-ad58-32dbd44b49ca"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Sprache: "deu", Lieferadresse: "Bucher Unternehmensgruppe Julius-Leber-Straße 5 22765 Hamburg", Mahnungstext: "Please pay the outstanding amount,this is you first/second reminder.", Verbindungstyp: "Vertriebsprojekt", Zahlungskondition: "7 Tage netto", Fußtext: "Danke sehr:", Belegtyp: "Rechnung", Verknüpfung: "Bucher Unternehmensgruppe", Abgesagt: "Nein", Angebot: "Angebot 1014-1", Datum: "12.08.2020", Belegnummer: "1020", Lieferbedingung: "frei Haus", Zahlungsziel: "19.08.2020", Verknüpfung: "Vertriebsprojekt 1006 | Buchner Neuprojekt", Zahlungsadresse: "Bucher Unternehmensgruppe Julius-Leber-Straße 5 22765 Hamburg", Währung: "Euro", Versendet: "Nein" eingefügt."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2513,6 +2824,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:13:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="6ea12cd8-505c-436f-b45b-c138beee1516"/> <column name="LOGTYPE" value="I"/> <column name="SOURCE_TABLENAME" value="SALESORDERITEM"/> <column name="DESCRIPTION" value="Einzelpreis: "145000.00", Menge: "1.00", Artikel: "993f6294-f1fc-42d2-8786-1c13274fd133", Position: "1", Optional: "Nein" eingefügt."/> @@ -2523,6 +2835,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:13:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ef4e8c86-c1ca-4df8-8442-c2f44ad10299"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Betrag netto: von "undefined" auf "145000", UmsSt.: von "undefined" auf "0" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2531,6 +2844,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:13:30"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="47184fcc-be94-4b00-ad9a-92e8e50046e8"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Mahndatum: von "undefined" auf "16.09.2020", Zahlungseingang: von "undefined" auf "16.09.2020", Bezahlt: von "undefined" auf "145000" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2539,6 +2853,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:13:45"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="52440731-57f3-411c-acd9-af8092d13a54"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Versendet: von "Nein" auf "Ja" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2547,6 +2862,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:13:51"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ffeef169-7f22-41e0-a61b-4f17035282bf"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Datum: von "01.09.2020" auf "11.08.2020", Zahlungsziel: von "08.09.2020" auf "18.08.2020" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2555,6 +2871,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:16:08"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="4b0c3b1a-8cc5-4d49-926b-59bdd015635e"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Datum: von "10.09.2020" auf "06.07.2020" geändert."/> <column name="TABLENAME" value="OFFER"/> @@ -2563,6 +2880,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:16:18"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="ef452ea6-54e6-47b0-81e4-bb0aceb6d14b"/> <column name="LOGTYPE" value="U"/> <column name="DESCRIPTION" value="Zahlungseingang: von "16.09.2020" auf "27.08.2020" geändert."/> <column name="TABLENAME" value="SALESORDER"/> @@ -2571,6 +2889,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:18:02"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="00140f34-20d1-42e2-8928-234414ed18ce"/> <column name="LOGTYPE" value="U"/> <column name="SOURCE_TABLENAME" value="ADDRESS"/> <column name="DESCRIPTION" value="Stadt: von "München" auf "Geisenhausen", Adresse: von "Wilhelm-Straße" auf "Konrad-Zuse-Straße", Postleitzahl : von "80807" auf "84144", Gebiet: von "undefined" auf "NB", Hausnummer: von "2" auf "4" geändert."/> @@ -2581,6 +2900,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:39:36"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="d00e1e75-8191-4a9d-ae49-36485c219048"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Appointment Id: "67c289a4-10fd-4bc6-a0b6-78fddb8ee22e", Art: "Organisation", Objekt: "null" eingefügt."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2589,6 +2909,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:46:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9c5aedef-9561-4a57-94a6-7ae866958c80"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Appointment Id: "67c289a4-10fd-4bc6-a0b6-78fddb8ee22e", Art: "Person", Objekt: "a8a5f214-8165-4627-bee2-bceb3578147e" eingefügt."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2597,6 +2918,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:46:11"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e937e609-ac87-44a9-8ce1-dce3e9f78034"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Appointment Id: "b8e8cc5c-5d10-4d7f-a918-0a199badc27c", Art: "Organisation", Objekt: "null" eingefügt."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2605,6 +2927,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:46:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="8b6b827e-6fbd-493a-9cfb-aea0940c6b2f"/> <column name="LOGTYPE" value="I"/> <column name="DESCRIPTION" value="Appointment Id: "b8e8cc5c-5d10-4d7f-a918-0a199badc27c", Art: "Person", Objekt: "7a34d9d0-04c7-478c-a8e2-f584fe625c45" eingefügt."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2613,6 +2936,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T09:46:14"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="b6fa0f85-35f7-44fa-8785-0f437ba15454"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Person", Appointment Id: "67c289a4-10fd-4bc6-a0b6-78fddb8ee22e", Objekt: "a8a5f214-8165-4627-bee2-bceb3578147e" gelöscht."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2621,6 +2945,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T11:58:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="e305250c-a8f5-4023-b791-4268eb2689f2"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Organisation", Appointment Id: "67c289a4-10fd-4bc6-a0b6-78fddb8ee22e", Objekt: "null" gelöscht."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2629,6 +2954,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T11:58:01"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="9f4cefe4-f64d-4b8d-9448-448b8d940338"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Person", Appointment Id: "b8e8cc5c-5d10-4d7f-a918-0a199badc27c", Objekt: "7a34d9d0-04c7-478c-a8e2-f584fe625c45" gelöscht."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> @@ -2637,6 +2963,7 @@ <column name="DATE_NEW" valueDate="2020-09-16T11:58:06"/> </insert> <insert tableName="ab_loghistory"> + <column name="AB_LOGHISTORYID" value="388640f8-f99f-4522-afdf-b0b131b3b158"/> <column name="LOGTYPE" value="D"/> <column name="DESCRIPTION" value="Art: "Organisation", Appointment Id: "b8e8cc5c-5d10-4d7f-a918-0a199badc27c", Objekt: "null" gelöscht."/> <column name="TABLENAME" value="AB_APPOINTMENTLINK"/> diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index c3a1d3c5759b118fd0d3d4e30e38f246a3f28166..9d1ca6c5576dd7a291ee576c6f2847f5f0578a8a 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -16,6 +16,7 @@ <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> + <include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 31f424c2a728efc81f5090e9734c65277f7d9c1a..96738b180650e265da04ed5ca755f51b7ac40641 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -8025,6 +8025,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>AB_LOGHISTORYID</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> </entityFields> </entityDb> <entityDb> @@ -11346,6 +11360,19 @@ <documentation></documentation> <title></title> <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <description></description> + <property v="true" /> + </customBooleanProperty> + <customStringProperty> + <name>keyword</name> + <global v="false" /> + <property>SerialLetterStatus</property> + </customStringProperty> + </customProperties> </entityFieldDb> </entityFields> </entityDb> diff --git a/aliasDefinition/Data_alias/Data_alias.aod.orig b/aliasDefinition/Data_alias/Data_alias.aod.orig deleted file mode 100644 index 7dbc15332b18c506dc955bff88830337d25fc1be..0000000000000000000000000000000000000000 --- a/aliasDefinition/Data_alias/Data_alias.aod.orig +++ /dev/null @@ -1,10717 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<aliasDefinition xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/aliasDefinition/1.2.0"> - <name>Data_alias</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <datasourceType v="0" /> - <aliasDefinitionSub> - <aliasDefDb> - <entityGroup> - <name>entityGroup</name> - <entities> - <entityDb> - <name>ORGANISATION</name> - <dbName></dbName> - <idColumn>ORGANISATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="3" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CUSTOMERCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Customercode</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Information</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>OrganisationType</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESAREA</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Sales area</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ORGANISATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Organisation Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PICTURE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2004" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Picture</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CONTACT</name> - <dbName></dbName> - <idColumn>CONTACTID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>LANGUAGE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Language</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/language/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Contact Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ORGANISATION_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Company</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/contact/entityfields/organisation_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>c5479d2f-654d-4794-a61e-aee1f2c21673</name> - <entityName>ORGANISATION</entityName> - <fieldName>ORGANISATIONID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Status</title> - <description></description> - <customProperties> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>ContactStatus</property> - </customStringProperty> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PERSON_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Contact</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESS_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" /> - <title>standard address</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>RELATIONSHIP</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>Relationship</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACTROLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Contactrole</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DEPARTMENT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Department</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>POSITION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Position Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>LETTERSALUTATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="200" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>PERSON</name> - <dbName></dbName> - <idColumn>PERSONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="3" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>TITLESUFFIX</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Title suffix</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PERSONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Person Id</title> - <description></description> - <dependencies> - <entityDependency> - <name>2daca400-8bad-4bad-9df3-98c4ca023c19</name> - <entityName>CONTACT</entityName> - <fieldName>PERSON_ID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>FIRSTNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Firstname</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MIDDLENAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Middlename</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATEOFBIRTH</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Date of birth</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LASTNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Lastname</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALUTATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="16" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Salutation</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>GENDER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Gender</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>PersonGender</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Title</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PICTURE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2004" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Picture</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>ADDRESS</name> - <dbName></dbName> - <idColumn>ADDRESSID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>ZIP</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>postcode</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>${ADDRESS_STATE}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDR_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Addresstype</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>AddressType</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>REGION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Region</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESSADDITION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="60" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Address addition</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DISTRICT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>District</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>City</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>COUNTRY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="2" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Country</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/address/entityfields/country/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Address</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESSID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Address Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ADDRIDENTIFIER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="60" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>{$ADDRESS_IDENTIFIER}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <title>Contact Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>CONTACT</property> - </customStringProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>b0a6bcf2-246e-475e-a4f0-b25553e1e27f</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>BUILDINGNO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>House number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>COMMUNICATION</name> - <dbName></dbName> - <idColumn>COMMUNICATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>COMMUNICATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Communication Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MEDIUM_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" /> - <title>Medium</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_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" /> - <title>Contact Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>CONTACT</property> - </customStringProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>c42dcb6e-6771-4fd0-80e8-86359c417051</name> - <entityName>CONTACT</entityName> - <fieldName>CONTACTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>STANDARD</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Standard</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>${COMM_ADDRESS}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CONTRACT</name> - <dbName></dbName> - <idColumn>CONTRACTID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CONTRACTDUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Next due date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PAYMENT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Payment method</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTSTATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>${CONTRACT_STATUS}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTEND</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Contract expiry date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <title>Contract number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Contract Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTTYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Type of contract</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Connection</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTRACTSTART</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Contract start date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>REMARK</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>PRODUCT</name> - <dbName></dbName> - <idColumn>PRODUCTID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>UNIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Unit</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADVERTISING</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="1" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Advertising material</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Product Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCTNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Product name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCTCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <title>Product number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MINSTOCK</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Min. Stock</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>GROUPCODEID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Product group</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Active</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STANDARD</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Standard</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Developer</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>translate4Log</name> - <global v="false" /> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>PROD2PROD</name> - <dbName></dbName> - <idColumn>PROD2PRODID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>OPTIONAL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Optional</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TAKEPRICE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Take price</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SOURCE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Product</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>da53ae25-5145-4772-83a3-5586534e9a98</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>QUANTITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Quantity</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DEST_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Destination Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>09534dc2-6385-4b33-bd5c-47a1e7d5e410</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>PROD2PRODID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Product relationship</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>PRODUCTPRICE</name> - <dbName></dbName> - <idColumn>PRODUCTPRICEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CURRENCY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Currency</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRICE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Price</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>VAT in %</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRICELIST</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Price list</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>BUYSELL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>PP/SP</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Product</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>PRODUCT</property> - </customStringProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>639c107f-fbaf-49b2-bd21-292049cd2976</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>VALID_TO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Valid to</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>FROMQUANTITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>From no. of units</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Company</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VALID_FROM</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Valid from</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCTPRICEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Product price Id</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>STOCK</name> - <dbName></dbName> - <idColumn>STOCKID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>REFNUMBER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Reference</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STOCKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Stock Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>WAREHOUSE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Warehouse</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>QUANTITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Quantity</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ENTRYDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Product Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - <dependencies> - <entityDependency> - <name>1d99d9fe-4956-4fd4-9f67-32b1c731dcc1</name> - <entityName>PRODUCT</entityName> - <fieldName>PRODUCTID</fieldName> - </entityDependency> - </dependencies> - </entityFieldDb> - <entityFieldDb> - <name>IN_OUT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>I / O</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_COUNTRYINFO</name> - <dbName></dbName> - <idColumn>ISO2</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="3" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>ISO3</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>ISO 3166-1 alpha-3</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ISO2</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="2" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>ISO 3166-1 alpha-2</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ADDR_FORMAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Address format</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NAME_LATIN</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Latin Name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NAME_NATIVE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Native Name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>REQUIRED_FIELDS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Required fields</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ZIP_REGEX</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="1000" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>ZIP regex</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>FLAG</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2004" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Flag</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>OFFER</name> - <dbName></dbName> - <idColumn>OFFERID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CURRENCY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Currency</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LANGUAGE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Language</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/entityfields/language/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Total VAT</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/entityfields/vat/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFERDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFERID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Offer Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OFFERCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Offer number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROBABILITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Probability</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>OfferProbability</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Status</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>OfferStatus</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Connection</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/entityfields/contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NET</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Total net</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/offer/entityfields/net/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>HEADER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Cover letter</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFER_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Offer Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VERSNR</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>Vers. no.</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Address</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PAYMENTTERMS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Payment term</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>PaymentTerm</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DELIVERYTERMS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Deliveryspecification</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>DeliveryTerm</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Information</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>FOOTER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>LETTERSALUTATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="200" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>OFFERITEM</name> - <dbName></dbName> - <idColumn>OFFERITEMID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>UNIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Unit</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>QuantityUnit</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRICE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Unit price</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>QUANTITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Quantity</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>VAT in %</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFER_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Offer Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>OFFER</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFERITEMID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Offer item Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Article</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DISCOUNT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Discount %</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ITEMPOSITION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Position</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OPTIONAL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Optional</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>GROUPCODEID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Commodity group</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>ProductGroupcode</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ITEMSORT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Item sort</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ASSIGNEDTO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Assigned to</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ITEMNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="250" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Designation</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>SALESPROJECT</name> - <dbName></dbName> - <idColumn>SALESPROJECTID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>STARTDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Project start</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VOLUME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Volume</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Information</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ENDDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Rollout</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PHASE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Phase</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>SalesprojectPhase</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROJECTCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> - <title>Project number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <title>Salesproject Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <title>Company</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject/entityfields/contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROJECTTITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <title>Project title</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROBABILITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Probability</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>SalesprojectProbability</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Status</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>SalesprojectState</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>REASONS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="498" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Reason</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesproject/entityfields/reasons/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>SALESPROJECT_SOURCE</name> - <dbName></dbName> - <idColumn>SALESPROJECT_SOURCEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>SALESPROJECT_SOURCEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Salesproject source Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SOURCE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Touchpoint</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>SalesprojectSource</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ENTRYDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Info</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salesproject Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>SALESPROJECT</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>TIMETRACKING</name> - <dbName></dbName> - <idColumn>TIMETRACKINGID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>DATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TIMETRACKINGID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Timetracking Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MINUTES</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Time</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creator</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ROW_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Connection</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>ACTIVITY</name> - <dbName></dbName> - <idColumn>ACTIVITYID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>DIRECTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Direction</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SUBJECT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="254" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Subject</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ENTRYDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title>Entry date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ACTIVITYID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Activity Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CATEGORY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Category</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PARENT_CONTEXT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="64" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Parent context</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PARENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Parent Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>RESPONSIBLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Responsible</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>SALESORDER</name> - <dbName></dbName> - <idColumn>SALESORDERID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CURRENCY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Currency</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LANGUAGE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Language</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/language/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VERSNR</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>Vers. no.</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>VAT</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>FOOTER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Footer text</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>HEADER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Header text</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDERCODE</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>Receipt number</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salesproject</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/salesproject_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Status</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>SalesorderState</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDERDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDER_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salesorder Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Connection</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NET</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Total net</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDERID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Salesorder Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ADDRESS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Address</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OFFER_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Offer</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>SALESORDERITEM</name> - <dbName></dbName> - <idColumn>SALESORDERITEMID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>UNIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Unit</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>QuantityUnit</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRICE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Unit price</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>QUANTITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Quantity</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VAT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>VAT in %</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PRODUCT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Article</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DISCOUNT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Discount</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ITEMPOSITION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Position</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OPTIONAL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Optional</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>GROUPCODEID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Commodity group</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>ProductGroupcode</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ITEMSORT</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>Item sort</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDER_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salesorder Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - <customStringProperty> - <name>tableRef</name> - <global v="false" /> - <property>SALESORDER</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ASSIGNEDTO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Assigned to</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESORDERITEMID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Salesorder item Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ITEMNAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="250" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Designation</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>TASK</name> - <dbName></dbName> - <idColumn>TASKID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>PRIORITY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>priority</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>TaskPriority</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MATURITY_DATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Maturity</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>EDITOR_CONTACT_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>{$TASK_EDITOR}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/task/entityfields/editor_contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TASKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Task Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$TASK_STATUS}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>TaskStatus</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>REQUESTOR_CONTACT_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>{$TASK_REQUESTOR}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customJDitoProperty> - <name>translate4Log</name> - <global v="false" /> - <property>%aditoprj%/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/task/entityfields/requestor_contact_id/customproperties/translate4log/property.js</property> - </customJDitoProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SUBJECT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="254" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>subject</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROTECTIONLEVEL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Protected</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customBooleanProperty> - <name>autoMapTrueFalse4Log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>START_DATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Begin</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="false" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>TaskType</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PARENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Parent Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PARENT_CONTEXT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="64" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Parent context</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>PROGRESS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Progress</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - <customStringProperty> - <name>keyword</name> - <global v="false" /> - <property>TaskProgress</property> - </customStringProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_OBJECTRELATION</name> - <dbName></dbName> - <idColumn>AB_OBJECTRELATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>OBJECT2_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object 2 row Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT1_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object 1 row Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_OBJECTRELATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Object relation</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>AB_OBJECTRELATIONTYPE1</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object relation type 1</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_OBJECTRELATIONTYPE2</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object relation type 2</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Info</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_ATTRIBUTEUSAGE</name> - <dbName></dbName> - <idColumn>AB_ATTRIBUTEUSAGEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>AB_ATTRIBUTEUSAGEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Attribute usage Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>AB_ATTRIBUTE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Attribute Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Module</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MIN_COUNT</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>Minimal count</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MAX_COUNT</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>Maximal count</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_ATTRIBUTE</name> - <dbName></dbName> - <idColumn>AB_ATTRIBUTEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>ATTRIBUTE_NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ATTRIBUTE_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_ATTRIBUTEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Attribute Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ATTRIBUTE_ACTIVE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Active</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ATTRIBUTE_PARENT_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>Superordinate Attribute</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DROPDOWNDEFINITION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Keyword</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SORTING</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>Sorting</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ATTRIBUTE_INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_ATTRIBUTERELATION</name> - <dbName></dbName> - <idColumn>AB_ATTRIBUTERELATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object row Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NUMBER_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Number value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_ATTRIBUTERELATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Attribute relation Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CHAR_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="512" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Char value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_ATTRIBUTE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Attribute</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ID_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Id value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>INT_VALUE</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>Int value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>ACTIVITYLINK</name> - <dbName></dbName> - <idColumn>ACTIVITYLINKID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_OBJECT}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ACTIVITYLINKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Activity link Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ACTIVITY_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Activity Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_TYPE}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation date</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Modification user</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_KEYWORD_ENTRY</name> - <dbName></dbName> - <idColumn>AB_KEYWORD_ENTRYID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>ISESSENTIAL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Relational</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTAINER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title>Container</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SORTING</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Sorting</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Title</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>KEYID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Key</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ISACTIVE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Active</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_KEYWORD_ENTRYID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Keyword entry Id</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_LANGUAGE</name> - <dbName></dbName> - <idColumn>ISO3</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>NAME_LATIN</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Name latin</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NAME_NATIVE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Name native</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ISO3</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>ISO3</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ISACTIVE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Is active</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ISO2</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="2" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>ISO2</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_KEYWORD_ATTRIBUTE</name> - <dbName></dbName> - <idColumn>AB_KEYWORD_ATTRIBUTEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <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>AB_KEYWORD_ATTRIBUTEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Keyword attribute Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTAINER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title>Container</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Name</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_KEYWORD_ATTRIBUTERELATION</name> - <dbName></dbName> - <idColumn>AB_KEYWORD_ATTRIBUTERELATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>CHAR_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>CHAR VALUE</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>BOOL_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="5" /> - <size v="5" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>BOOL VALUE</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_KEYWORD_ATTRIBUTERELATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Keyword attribute relation Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NUMBER_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>NUMBER VALUE</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_KEYWORD_ENTRY_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title>Keyword entry Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_KEYWORD_ATTRIBUTE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Keyword Attribute</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LONG_CHAR_VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_APPOINTMENTLINK</name> - <dbName></dbName> - <idColumn>AB_APPOINTMENTLINK_ID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_OBJECT}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AB_APPOINTMENTLINK_ID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Appointment link Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>APPOINTMENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Appointment Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_TYPE}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>TASKLINK</name> - <dbName></dbName> - <idColumn>TASKLINKID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_OBJECT}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>{$OBJECTLINK_TYPE}</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TASKLINKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Task link Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TASK_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title>Task Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_OBJECTRELATIONTYPE</name> - <dbName></dbName> - <idColumn>AB_OBJECTRELATIONTYPEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>AB_OBJECTRELATIONTYPEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Object Relation Type</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SIDE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Side</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>RELATION_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Relation Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Object Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>RELATION_TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Relation Title</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>HIERARCHY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Hierarchy</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ICON</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>SALUTATION</name> - <dbName></dbName> - <idColumn>SALUTATIONID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>LANGUAGE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Language</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALUTATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="200" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salutation</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SEX</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Sex</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SORT</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>Sort</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALUTATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Salutation Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Title</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>HEADLINE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Headline</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LETTERSALUTATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="200" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Letter salutation</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>DATABASECHANGELOG</name> - <dbName></dbName> - <idColumn></idColumn> - <idGeneratorType v="1" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>EXECTYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Exec type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATEEXECUTED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Data executed</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ORDEREXECUTED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Order executed</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>COMMENTS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Comments</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>AUTHOR</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Author</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>CONTEXTS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Contexts</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>MD5SUM</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="35" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>MD5 Sum</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Desciption</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LIQUIBASE</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>Liquibase</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DEPLOYMENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Deployment Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TAG</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Tag</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LABELS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Labels</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>FILENAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Filename</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>DATABASECHANGELOGLOCK</name> - <dbName></dbName> - <idColumn>ID</idColumn> - <idGeneratorType v="1" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>LOCKGRANTED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Lock granted</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LOCKED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="16" /> - <size v="1" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Locked</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>LOCKEDBY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="255" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Locked by</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>ID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Id</title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>AB_LOGHISTORY</name> - <dbName></dbName> - <idColumn>AB_LOGHISTORYID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="2" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>TABLENAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Tablename</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Description</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SOURCE_TABLENAMEID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Source tablename Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>LOGTYPE</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>Log type</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SOURCE_TABLENAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="30" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Source tablename</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TABLENAMEID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Tablename Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Creation user</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>SALESPROJECT_MILESTONE</name> - <dbName></dbName> - <idColumn>SALESPROJECT_MILESTONEID</idColumn> - <idGeneratorType v="0" /> - <idGeneratorInterval v="1" /> - <documentation></documentation> - <title></title> - <description></description> - <auditSyncConfig> - <name>auditSyncConfig</name> - <auditMode v="1" /> - <syncActive v="false" /> - <syncComplete v="true" /> - <syncDirection v="1" /> - <syncIds></syncIds> - </auditSyncConfig> - <entityFields> - <entityFieldDb> - <name>DATE_START</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date start</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>VALUE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Value</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Salesproject Id</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Type</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>DATE_END</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title>Date end</title> - <description></description> - <customProperties> - <customBooleanProperty> - <name>log</name> - <global v="false" /> - <property v="true" /> - </customBooleanProperty> - </customProperties> - </entityFieldDb> - <entityFieldDb> - <name>SALESPROJECT_MILESTONEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title>Salesproject milestone Id</title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PARENT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>CAMPAIGNPARTICIPANT</name> - <dbName></dbName> - <idColumn>CAMPAIGNPARTICIPANTID</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>CAMPAIGN_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNPARTICIPANTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNSTEP_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>DOCUMENTTEMPLATE</name> - <dbName></dbName> - <idColumn>DOCUMENTTEMPLATEID</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>LANGUAGE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="3" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="500" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DOCUMENTTEMPLATEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>DOCUMENTTEMPLATELINK</name> - <dbName></dbName> - <idColumn>DOCUMENTTEMPLATELINKID</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>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DOCUMENTTEMPLATE_ID_PARENT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DOCUMENTTEMPLATELINKID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DOCUMENTTEMPLATE_ID_CHILD</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>CAMPAIGN</name> - <dbName></dbName> - <idColumn>CAMPAIGNID</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>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="500" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>EMPLOYEE_CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CAMPAIGNSTEP</name> - <dbName></dbName> - <idColumn>CAMPAIGNSTEPID</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>CAMPAIGN_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNSTEPID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="500" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_START</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>EMPLOYEE_CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SORTING</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MAXPARTICIPANTS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_END</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PREDECESSORSTEP_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STEPMEDIUM</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>CAMPAIGNPARTICIPANTLOG</name> - <dbName></dbName> - <idColumn>CAMPAIGNPARTICIPANTLOGID</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>CAMPAIGN_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNPARTICIPANT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNPARTICIPANTLOGID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNSTEP_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CAMPAIGNCOST</name> - <dbName></dbName> - <idColumn>CAMPAIGNCOSTID</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>CAMPAIGN_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNCOSTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CATEGORY</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="91" /> - <size v="10" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NET</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="14" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CAMPAIGNSTEP_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>CLASSIFICATIONTYPE</name> - <dbName></dbName> - <idColumn>CLASSIFICATIONTYPEID</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>SCORETYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONTYPEID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONTYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONGROUP</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="80" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CLASSIFICATION</name> - <dbName></dbName> - <idColumn>CLASSIFICATIONID</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>CLASSIFICATIONTYPE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONSCORE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>CLASSIFICATIONSCORE</name> - <dbName></dbName> - <idColumn>CLASSIFICATIONSCOREID</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>SCORE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2" /> - <size v="10" /> - <scale v="2" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONSCOREID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SORT</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>TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CLASSIFICATIONTYPE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>FORECAST</name> - <dbName></dbName> - <idColumn>FORECASTID</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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>GROUPCODE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>FORECASTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>VOLUME</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>DATE_START</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="10" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>COMPETITION</name> - <dbName></dbName> - <idColumn>COMPETITIONID</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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PHASE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>COMPETITIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>INFO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>REASON</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_CANCELLED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>MEMBER</name> - <dbName></dbName> - <idColumn>MEMBERID</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>ROLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_ROWID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DECIDER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="16" /> - <size v="1" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MEMBERID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>RELATIONSHIP</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>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="63" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>COMMRESTRICTION</name> - <dbName></dbName> - <idColumn>COMMRESTRICTIONID</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>COMMRESTRICTIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>MEDIUM</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STARTDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>EMPLOYEE_INVOLVED</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="250" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>REASON</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="250" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>BULKMAIL</name> - <dbName></dbName> - <idColumn>BULKMAILID</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>DOCUMENTTEMPLATE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>BULKMAILID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="500" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SUBJECT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>NAME</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SENDER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>BULKMAILRECIPIENT</name> - <dbName></dbName> - <idColumn>BULKMAILRECIPIENTID</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>STATUS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>BULKMAIL_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>BULKMAILRECIPIENTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SENTDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> - <name>TICKET</name> - <dbName></dbName> - <idColumn>TICKETID</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>CODE</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>TICKETID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>TASK_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <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>TICKETTYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>DSGVO</name> - <dbName></dbName> - <idColumn>DSGVOID</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>VALID_TO</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DSGVOID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>ROW_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>STATUORITYSOURCE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>PURPOSE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DSGVOTYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>DESCRIPTIONTRANSLATION</name> - <dbName></dbName> - <idColumn>DESCRIPTIONTRANSLATIONID</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="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTIONTRANSLATIONID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DESCRIPTION</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>OBJECT_TYPE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>LANG</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <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>AB_UNLINKEDMAIL</name> - <dbName></dbName> - <idColumn>AB_UNLINKEDMAILID</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>MAIL</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SENDER</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="1000" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SUBJECT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="200" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>DATE_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_NEW</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>AB_UNLINKEDMAILID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>RECIPIENTS</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="4000" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>USER_EDIT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>SENTDATE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="93" /> - <size v="29" /> - <scale v="9" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="true" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - <entityDb> -<<<<<<< HEAD - <name>DSGVOINFO</name> - <dbName></dbName> - <idColumn>DSGVOINFOID</idColumn> -======= - <name>SERIALLETTER</name> - <dbName></dbName> - <idColumn>SERIALLETTERID</idColumn> ->>>>>>> origin/master - <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> -<<<<<<< HEAD - <name>RECIPIENT</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>GUARANTEE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> -======= - <name>DOCUMENTTEMPLATE_ID</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> ->>>>>>> origin/master - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> -<<<<<<< HEAD - <name>DSGVOINFOID</name> -======= - <name>SERIALLETTERID</name> ->>>>>>> origin/master - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> -<<<<<<< HEAD - <name>DATASOURCE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="100" /> -======= - <name>TITLE</name> - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="12" /> - <size v="50" /> ->>>>>>> origin/master - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> -<<<<<<< HEAD - <entityFieldDb> - <name>CONTACT_ID</name> -======= - </entityFields> - </entityDb> - <entityDb> - <name>LETTERRECIPIENT</name> - <dbName></dbName> - <idColumn>LETTERRECIPIENTID</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>SERIALLETTER_ID</name> ->>>>>>> origin/master - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> -<<<<<<< HEAD - <name>TRANSMISSION</name> -======= - <name>LETTERRECIPIENTID</name> - <dbName></dbName> - <primaryKey v="true" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - <entityFieldDb> - <name>CONTACT_ID</name> ->>>>>>> origin/master - <dbName></dbName> - <primaryKey v="false" /> - <columnType v="1" /> - <size v="36" /> - <scale v="0" /> - <notNull v="false" /> - <isUnique v="false" /> - <index v="false" /> - <documentation></documentation> - <title></title> - <description></description> - </entityFieldDb> - </entityFields> - </entityDb> - </entities> - </entityGroup> - </aliasDefDb> - </aliasDefinitionSub> - <indexSearchGroups> - <indexSearchGroup> - <name>ORGANISATION</name> - <title>Company</title> - <icon>VAADIN:BUILDING</icon> - <idColumn>CONTACTID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/organisation/query.js</query> - <subQueries>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/organisation/subQueries.js</subQueries> - <resultContextNeon>Organisation</resultContextNeon> - <affectedTables> - <element>ADDRESS</element> - <element>COMMUNICATION</element> - <element>CONTACT</element> - <element>ORGANISATION</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/organisation/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>PERSON</name> - <title>Contact</title> - <icon>VAADIN:USERS</icon> - <idColumn>CONTACTID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/person/query.js</query> - <subQueries>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/person/subQueries.js</subQueries> - <resultContextNeon>Person</resultContextNeon> - <affectedTables> - <element>ADDRESS</element> - <element>COMMUNICATION</element> - <element>PERSON</element> - <element>CONTACT</element> - <element>ORGANISATION</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/person/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>OFFER</name> - <title>Offer</title> - <icon>VAADIN:CART</icon> - <active v="true" /> - <idColumn>OFFERID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/query.js</query> - <resultContextNeon>Offer</resultContextNeon> - <affectedTables> - <element>OFFER</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/offer/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>SALESORDER</name> - <title>Receipt</title> - <icon>VAADIN:DOLLAR</icon> - <active v="true" /> - <idColumn>SALESORDERID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/query.js</query> - <resultContextNeon>Order</resultContextNeon> - <affectedTables> - <element>SALESORDER</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesorder/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>CONTRACT</name> - <title>Contract</title> - <icon>VAADIN:FILE_TEXT</icon> - <active v="true" /> - <idColumn>CONTRACTID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/contract/query.js</query> - <resultContextNeon>Contract</resultContextNeon> - <affectedTables> - <element>CONTRACT</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/contract/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>PRODUCT</name> - <title>Product</title> - <icon>VAADIN:HAMMER</icon> - <active v="true" /> - <idColumn>PRODUCTID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/product/query.js</query> - <resultContextNeon>Product</resultContextNeon> - <affectedTables> - <element>PRODUCT</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/product/affectedIds.js</affectedIds> - </indexSearchGroup> - <indexSearchGroup> - <name>SALESPROJECT</name> - <title>Salesproject</title> - <icon>VAADIN:BOOK_DOLLAR</icon> - <active v="true" /> - <idColumn>SALESPROJECTID</idColumn> - <titleColumn>TITLECOLUMN</titleColumn> - <descriptionColumn>DESCCOLUMN</descriptionColumn> - <query>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesproject/query.js</query> - <resultContextNeon>Salesproject</resultContextNeon> - <affectedTables> - <element>SALESPROJECT</element> - </affectedTables> - <affectedIds>%aditoprj%/aliasDefinition/Data_alias/indexsearchgroups/salesproject/affectedIds.js</affectedIds> - </indexSearchGroup> - </indexSearchGroups> -</aliasDefinition> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 2885448e52c527d22571ddcc5b154cf307bae531..2de36e834097c76b055a391c9ed833036b720f86 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -297,6 +297,10 @@ <kind v="10077" /> <title></title> </entityNode> + <entityNode> + <name>AuditLogHistory</name> + <kind v="10077" /> + </entityNode> <entityNode> <name>ExportTemplate</name> <kind v="10077" /> diff --git a/entity/360Degree_entity/entityfields/active/dropDownProcess.js b/entity/360Degree_entity/entityfields/active/dropDownProcess.js index bc12e10ce67ee0a941506b4c1ee45061f0bec8da..7eff15173e4d7fb99e918373472cf56decbaf018 100644 --- a/entity/360Degree_entity/entityfields/active/dropDownProcess.js +++ b/entity/360Degree_entity/entityfields/active/dropDownProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); -import("system.translate"); - +import("system.vars"); +import("system.result"); +import("system.translate"); + result.object([["true", translate.text("True")], ["false",translate.text("False")]]); \ No newline at end of file diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 809e7cb7f260132aa38c1aa85c1698d55042bdbd..9163db06e98eabcd7d5addaa2c6d2a2dfcd6f17a 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -157,7 +157,6 @@ <title>Date (Month)</title> <contentType>TEXT</contentType> <groupable v="true" /> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/entrymonth/valueProcess.js</valueProcess> <onValueChangeTypes> <element>MASK</element> <element>PROCESS</element> @@ -395,7 +394,6 @@ <name>ENTRYDAY</name> <title>Date (Day)</title> <groupable v="true" /> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/entryday/valueProcess.js</valueProcess> </entityField> <entityConsumer> <name>Attributes</name> @@ -563,7 +561,6 @@ <name>ENTRYYEAR</name> <title>Date (Year)</title> <groupable v="true" /> - <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/entryyear/valueProcess.js</valueProcess> </entityField> <entityField> <name>bindata</name> @@ -799,10 +796,6 @@ <recordfield>ACTIVITY.ACTIVITYID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> - <dbRecordFieldMapping> - <name>COUNT.value</name> - <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/count.value/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ENTRYDAY.value</name> <expression>%aditoprj%/entity/Activity_entity/recordcontainers/db/recordfieldmappings/entryday.value/expression.js</expression> diff --git a/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js b/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js index e95bca5a3ea10ee7a87da2de4f2d96b9d89a198e..cb6405c40f0c403616bc18c4d1d9941c2b771435 100644 --- a/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js +++ b/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js @@ -10,4 +10,3 @@ if (m) { let monthDate = new Date(2020, m-1); result.string(translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC"))); } - diff --git a/entity/Appointment_entity/grantDeleteProcess.js b/entity/Appointment_entity/grantDeleteProcess.js index 4caa2d99cfdda2637190ab5c76a15565666b79b5..aef302f111201f63dc427328d2e4db900ac4c0d3 100644 --- a/entity/Appointment_entity/grantDeleteProcess.js +++ b/entity/Appointment_entity/grantDeleteProcess.js @@ -2,6 +2,10 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); \ No newline at end of file + +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +result.string(calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE")); \ No newline at end of file diff --git a/entity/Appointment_entity/grantUpdateProcess.js b/entity/Appointment_entity/grantUpdateProcess.js index 3562ea4a6c4ba8fda784eb7ea85abd591e022f87..e6ac4c8426c460fd26d1f16844a7844c09300153 100644 --- a/entity/Appointment_entity/grantUpdateProcess.js +++ b/entity/Appointment_entity/grantUpdateProcess.js @@ -2,7 +2,13 @@ import("system.vars"); import("system.result"); import("system.calendars"); import("system.text"); +import("system.tools"); +import("system.logging"); -var owner = text.decodeMS(JSON.parse(vars.get("$param.Entry_param"))["h"])[1].split(":")[1]; -result.string(calendars.hasPermission([owner], calendars.VEVENT, "WRITE")); +var user = tools.getCurrentUser(); +var calUser = calendars.getCalendarUser(user["title"]); +var calUserCn = text.decodeMS(calUser)[1].split(":")[1]; +var permitted = calendars.hasPermission(calUserCn, calendars.VEVENT, "WRITE"); + +result.string(permitted); diff --git a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js index e56415a0faf52007f91bcc4e92f9ae20aebfa819..3d5ff22eafe395331b6e6d52bf359b60c6d91098 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -9,6 +9,7 @@ import("system.datetime"); import("system.eMath"); import("system.util"); import("system.neon"); +import("system.text"); var appointmentSelect = newSelect("APPOINTMENT_ID").from("AB_APPOINTMENTLINK"); var appointmentUids; @@ -77,7 +78,7 @@ function buildEntry(pEntry, pMasterentry) if(pEntry[calendars.ORGANIZER2] != undefined) var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; if(pEntry[calendars.USER2] != undefined) - var owner = pEntry[calendars.USER2]["paramvalue"]; + var owner = JSON.stringify(pEntry[calendars.USER2]); var status = pEntry[calendars.STATUS]; var location = pEntry[calendars.LOCATION]; var reminder = pEntry[calendars.REMINDER_DURATION]; diff --git a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js index 4e0e5c7a5c1257293965989052765e861a71fff7..6f6249aee33bd1be9f2247d09814ffba59a1d904 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/onDelete.js +++ b/entity/Appointment_entity/recordcontainers/jdito/onDelete.js @@ -1,20 +1,30 @@ +import("system.logging"); import("Sql_lib"); import("system.neon"); import("system.calendars"); import("system.vars"); -if (vars.exists("$param.Entry_param")) +var uid; + +if (vars.get("$param.Entry_param") != null) { var entry = JSON.parse(vars.getString("$param.Entry_param")); var reccurenceid = entry[calendars.RECURRENCEID]; + if (reccurenceid == undefined) reccurenceid = null; - calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], entry[calendars.ID], reccurenceid) + uid = entry[calendars.ID]; + calendars.removeEntryByUID(calendars.VEVENT, entry[calendars.USER2]["cn"], uid, reccurenceid); +} +else if(vars.get("$field.OWNER")) +{ + uid = vars.get("$field.UID"); + calendars.removeEntryByUID(calendars.VEVENT, JSON.parse(vars.get("$field.OWNER"))["cn"], uid, vars.get("$field.RECURRENCEID")); +} /** * Deletes ApointmentLinks referring to the deleted Appointment. */ - newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", entry[calendars.ID]) - .deleteData(); -} \ No newline at end of file + newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", uid) + .deleteData(); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 74b45b0ba684f198d4f6897975a03b1b056ff32b..4e5c98f9dece6d09e3bc547dc137db746490724b 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -346,6 +346,41 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityConsumer> + <name>SpecificFilterAttributes</name> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + </dependency> + <children> + <entityParameter> + <name>AttributeCount_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/attributecount_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityProvider> + <name>FilterProvider</name> + <dependencies> + <entityDependency> + <name>0560c6d0-8473-4050-9ca1-a935bbac2ef9</name> + <entityName>Organisation_entity</entityName> + <fieldName>AttributesFilter</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e0f3ec47e2b963a577204e41d9847dd6ad0725a8 --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/attributecount_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/attributecount_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9c0bc231731f77eee827bad7693c8ce56d7d45d8 --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/attributecount_param/valueProcess.js @@ -0,0 +1,8 @@ +import("Attribute_lib"); +import("system.result"); +import("system.vars"); + +var objectType = vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param"); +var rowId = vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param"); +if (vars.get("$param.GetTree_param") == "true" && rowId) + result.object(AttributeRelationUtils.countAttributeRelations(rowId, objectType)); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js b/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5c2ba1e99bd66da1cbc065319b7644302880879f --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.exists("$param.ObjectType_param") ? vars.get("$param.ObjectType_param") : ""); diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 16498580ba18919c58bef4a5cbe186097396594f..26e2e934e598ad4d50c640da866a5cd4b452b3f2 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -4,8 +4,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Attribute_entity/documentation.adoc</documentation> <title>Attribute</title> - <grantCreateProcess>%aditoprj%/entity/Attribute_entity/grantCreateProcess.js</grantCreateProcess> - <grantUpdateProcess>%aditoprj%/entity/Attribute_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Attribute_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Attribute_entity/contentTitleProcess.js</contentTitleProcess> <afterUiInit>%aditoprj%/entity/Attribute_entity/afterUiInit.js</afterUiInit> @@ -487,6 +485,27 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityProvider> + <name>SpecificFilterAttributes</name> + <dependencies> + <entityDependency> + <name>9b2b5f2e-229d-4a10-a54f-cbf77aafe512</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + <children> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/specificfilterattributes/children/displaysimplename_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ChildType_param</name> + <expose v="false" /> + </entityParameter> + </children> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Attribute_entity/entityfields/specificfilterattributes/children/displaysimplename_param/valueProcess.js b/entity/Attribute_entity/entityfields/specificfilterattributes/children/displaysimplename_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e0f3ec47e2b963a577204e41d9847dd6ad0725a8 --- /dev/null +++ b/entity/Attribute_entity/entityfields/specificfilterattributes/children/displaysimplename_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(false); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..88d93c5023fdb6b90668c9269a64a6a642785a08 --- /dev/null +++ b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod @@ -0,0 +1,145 @@ +<?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>AuditLogHistory_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:LINES_LIST</icon> + <title>Audit Log</title> + <grantCreate v="false" /> + <grantUpdate v="false" /> + <grantDelete v="true" /> + <grantDeleteProcess>%aditoprj%/entity/AuditLogHistory_entity/grantDeleteProcess.js</grantDeleteProcess> + <initFilterProcess>%aditoprj%/entity/AuditLogHistory_entity/initFilterProcess.js</initFilterProcess> + <titlePlural>Audit Logs</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <targetContextField>TARGET_CONTEXT</targetContextField> + <targetIdField>TARGET_ID</targetIdField> + </entityProvider> + <entityField> + <name>LOGTYPE</name> + <title>Action</title> + <dropDownProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/logtype/dropDownProcess.js</dropDownProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <title>Date</title> + <contentType>DATE</contentType> + <resolution>MINUTE</resolution> + <state>READONLY</state> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + </entityField> + <entityField> + <name>TABLENAME</name> + <title>Tablename</title> + <dropDownProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/tablename/dropDownProcess.js</dropDownProcess> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>TABLENAMEID</name> + </entityField> + <entityField> + <name>USER_NEW</name> + <title>Editor</title> + <state>READONLY</state> + </entityField> + <entityField> + <name>SOURCE_TABLENAME</name> + </entityField> + <entityField> + <name>SOURCE_TABLENAMEID</name> + </entityField> + <entityField> + <name>TARGET_CONTEXT</name> + <valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/target_context/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TARGET_ID</name> + <valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/target_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PREVIEW_TITLE</name> + <valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/preview_title/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <orderClauseProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <linkInformation> + <linkInformation> + <name>ed8bd1ca-64eb-443e-a04d-ea7aee0c352a</name> + <tableName>AB_LOGHISTORY</tableName> + <primaryKey>AB_LOGHISTORYID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>UID.value</name> + <recordfield>AB_LOGHISTORY.AB_LOGHISTORYID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>AB_LOGHISTORY.USER_NEW</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TABLENAMEID.value</name> + <recordfield>AB_LOGHISTORY.TABLENAMEID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TABLENAME.value</name> + <recordfield>AB_LOGHISTORY.TABLENAME</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SOURCE_TABLENAMEID.value</name> + <recordfield>AB_LOGHISTORY.SOURCE_TABLENAMEID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SOURCE_TABLENAME.value</name> + <recordfield>AB_LOGHISTORY.SOURCE_TABLENAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>LOGTYPE.value</name> + <recordfield>AB_LOGHISTORY.LOGTYPE</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DESCRIPTION.value</name> + <recordfield>AB_LOGHISTORY.DESCRIPTION</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>AB_LOGHISTORY.DATE_NEW</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + </recordFieldMappings> + <filterExtensions> + <filterExtension> + <name>contextFilter</name> + <title>Kontext</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js</filterConditionProcess> + <isLookupFilter v="true" /> + <filtertype>BASIC</filtertype> + </filterExtension> + </filterExtensions> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/AuditLogHistory_entity/entityfields/logtype/dropDownProcess.js b/entity/AuditLogHistory_entity/entityfields/logtype/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..550422df7f87c47837a76d96c2550017a31c3580 --- /dev/null +++ b/entity/AuditLogHistory_entity/entityfields/logtype/dropDownProcess.js @@ -0,0 +1,8 @@ +import("system.translate"); +import("system.result"); + +result.object([ + ["I", translate.text("Inserted")] + ,["U", translate.text("Updated")] + ,["D", translate.text("Deleted")] + ]); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/entityfields/preview_title/valueProcess.js b/entity/AuditLogHistory_entity/entityfields/preview_title/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8094c75ee753168a9fb88cbee3a6671792cf8c64 --- /dev/null +++ b/entity/AuditLogHistory_entity/entityfields/preview_title/valueProcess.js @@ -0,0 +1,40 @@ +import("system.translate"); +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var context = vars.get("$field.TARGET_CONTEXT"); +var title = ""; + +switch(context) +{ + case "AcquisitionProject": + title = "Acquisition project"; + break; + case "Bulkmail": + case "BULKMAIL": + title = "Bulk mail"; + break; + case "CampaignStep": + title = "Campaign"; + break; + case "DSGVO": + title = "Data Privacy"; + break; + case "SerialLetter": + title = "Serial letter"; + break; + case "Person": + title = "Contact"; + break; + case "Event_context": + title = "Event"; + break; + default: + if(context.length > 1) + { + title = context.substring(0, 1).toUpperCase() + context.substring(1).toLowerCase(); + } +} + +result.string(translate.text(title)); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/entityfields/tablename/dropDownProcess.js b/entity/AuditLogHistory_entity/entityfields/tablename/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ec9a43cad9e680c2d34e30a49121b4f2e4f5afaa --- /dev/null +++ b/entity/AuditLogHistory_entity/entityfields/tablename/dropDownProcess.js @@ -0,0 +1,5 @@ +import("Sql_lib"); +import("system.result"); + +result.object(newSelect("distinct TABLENAME, TABLENAME").from("AB_LOGHISTORY").orderBy("TABLENAME").table()); + diff --git a/entity/AuditLogHistory_entity/entityfields/target_context/valueProcess.js b/entity/AuditLogHistory_entity/entityfields/target_context/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a3e8a931b1b8273a058c482b9582c864fd77007c --- /dev/null +++ b/entity/AuditLogHistory_entity/entityfields/target_context/valueProcess.js @@ -0,0 +1,109 @@ +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var tablename = vars.get("$field.TABLENAME"); +var tablenameId = vars.get("$field.TABLENAMEID"); +var isPerson = ""; +var res = ""; + +switch(tablename) +{ + case "AB_ATTRIBUTERELATION": + isPerson = newSelect("PERSON_ID") + .from("CONTACT") + .where("CONTACT.CONTACTID", tablenameId) + .cell(); + if(isPerson) + res = "Person"; + else + res = "Organisation"; + break; + case "AB_OBJECTRELATION": + isPerson = newSelect("CONTACT.PERSON_ID") + .from("CONTACT") + .join("AB_OBJECTRELATION on AB_OBJECTRELATION.OBJECT1_ROWID = CONTACT.CONTACTID") + .where("AB_OBJECTRELATION.AB_OBJECTRELATIONID", tablenameId) + .cell(); + if(isPerson) + res = "Person"; + else + res = "Organisation" + break; + case "ACTIVITYLINK": + case "ACTIVITY": + res = "Activity"; + break; + case "ACQUISITIONPROJECT": + res = "AcquisitionProject"; + break; + case "ASYS_BINARIES": + res = newSelect("ASYS_BINARIES.TABLENAME", "_____SYSTEMALIAS") + .from("ASYS_BINARIES") + .where("ASYS_BINARIES.ID", tablenameId) + .cell(); + break; + case "BULKMAILRECIPIENT": + case "BULKMAIL": + res = "Bulkmail"; + break; + case "CONTACT": + isPerson = newSelect("PERSON_ID") + .from("CONTACT") + .where("CONTACT.CONTACTID", tablenameId) + .cell(); + if(isPerson) + res = "Person"; + else + res = "Organisation"; + break; + case "CAMPAIGNSTEP": + res = "CampaignStep"; + break; + case "CAMPAIGNCOST": + case "CAMPAIGNPARTICIPANT": + case "CAMPAIGN": + res = "Campaign"; + break; + case "DSGVO": + res = "DSGVO"; + break; + case "EVENTPARTICIPANT": + case "EVENT": + res = "Event_context"; + break; + case "ORGANISATION": + res = "Organisation"; + break; + case "OBJECTMEMBER": + res = newSelect("OBJECTMEMBER.OBJECT_TYPE") + .from("OBJECTMEMBER") + .where("OBJECTMEMBER.OBJECTMEMBERID", tablenameId) + .cell(); + break; + case "PERSON": + res = "Person"; + break; + case "SALESORDER": + res = "Salesorder"; + break; + case "SALESPROJECT_MILESTONE": + case "SALESPROJECT": + res = "Salesproject"; + break; + case "LETTERRECIPIENT": + case "SERIALLETTER": + res = "SerialLetter"; + break; + case "TASKLINK": + case "TASK": + res = "Task"; + break; + case "TASKLINK": + res = "TaskLink"; + break; + default: + res = tablename; +} + +result.string(res); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/entityfields/target_id/valueProcess.js b/entity/AuditLogHistory_entity/entityfields/target_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4af2e504ad734b059aff6913145de95b041d7dba --- /dev/null +++ b/entity/AuditLogHistory_entity/entityfields/target_id/valueProcess.js @@ -0,0 +1,95 @@ +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var tablename = vars.get("$field.TABLENAME"); +var tablenameid = vars.get("$field.TABLENAMEID"); +var returnId = ""; +var res = tablenameid; + +switch(tablename) +{ + case "AB_OBJECTRELATION": + returnId = newSelect("OBJECT1_ROWID") + .from("AB_OBJECTRELATION") + .where("AB_OBJECTRELATION.AB_OBJECTRELATIONID", tablenameid) + .cell(); + res = returnId; + break; + case "ACTIVITYLINK": + returnId = newSelect("ACTIVITY_ID") + .from("ACTIVITYLINK") + .where("ACTIVITYLINK.ACTIVITYLINKID", tablenameid) + .cell(); + res = returnId; + break; + case "ASYS_BINARIES": + res = newSelect("ASYS_BINARIES.ROW_ID", "_____SYSTEMALIAS") + .from("ASYS_BINARIES") + .where("ASYS_BINARIES.ID", tablenameid) + .cell(); + break; + case "BULKMAILRECIPIENT": + returnId = newSelect("BULKMAIL_ID") + .from("BULKMAILRECIPIENT") + .where("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", tablenameid) + .cell(); + res = returnId; + break; + case "CAMPAIGNCOST": + returnId = newSelect("CAMPAIGNCOST.CAMPAIGN_ID") + .from("CAMPAIGNCOST") + .where("CAMPAIGNCOST.CAMPAIGNCOSTID", tablenameid) + .cell(); + res = returnId; + break; + case "EVENTPARTICIPANT": + returnId = newSelect("EVENTPARTICIPANT.EVENT_ID") + .from("EVENTPARTICIPANT") + .where("EVENTPARTICIPANT.EVENTPARTICIPANTID", tablenameid) + .cell(); + res = returnId; + break; + case "CAMPAIGNPARTICIPANT": + returnId = newSelect("CAMPAIGNPARTICIPANT.CAMPAIGN_ID") + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", tablenameid) + .cell(); + res = returnId; + break; + case "OBJECTMEMBER": + res = newSelect("OBJECTMEMBER.OBJECT_ROWID") + .from("OBJECTMEMBER") + .where("OBJECTMEMBER.OBJECTMEMBERID", tablenameid) + .cell(); + break; + case "PERSON": + res = newSelect("CONTACT.CONTACTID") + .from("CONTACT") + .join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID") + .where("PERSON.PERSONID", tablenameid) + .cell(); + break; + case "LETTERRECIPIENT": + returnId = newSelect("LETTERRECIPIENT.SERIALLETTER_ID") + .from("LETTERRECIPIENT") + .where("LETTERRECIPIENT.LETTERRECIPIENTID", tablenameid) + .cell(); + res = returnId; + break; + case "SALESPROJECT_MILESTONE": + returnId = newSelect("SALESPROJECT_MILESTONE.SALESPROJECT_ID") + .from("SALESPROJECT_MILESTONE") + .where("SALESPROJECT_MILESTONE.SALESPROJECT_MILESTONEID", tablenameid) + .cell(); + res = returnId; + break; + case "TASKLINK": + returnId = newSelect("TASKLINK.TASK_ID") + .from("TASKLINK") + .where("TASKLINK.TASKLINKID", tablenameid) + .cell(); + res = returnId; + break; +} +result.string(res); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/initFilterProcess.js b/entity/AuditLogHistory_entity/initFilterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a8178441551129fa5dd8ccd88ad7b6b9ff4b6a1c --- /dev/null +++ b/entity/AuditLogHistory_entity/initFilterProcess.js @@ -0,0 +1,28 @@ +import("system.result"); +import("system.neon"); +import("system.datetime"); +import("system.vars"); + +let presMode = vars.get("$sys.presentationmode"); +let curDate = datetime.toDate(vars.get("$sys.date"), "dd.MM.yyyy"); + +if (presMode == neon.CONTEXT_PRESENTATIONMODE_FILTER || presMode == neon.CONTEXT_PRESENTATIONMODE_DASHBOARD) +{ + var filter = { + "type":"group", + "operator":"AND", + "timestamp": curDate, + "childs": + [ + { + "type":"row", + "name":"DATE_NEW", + "operator":"TIMEFRAME_PAST", + "value":"1 Tag", + "key":"REL=FIXED;START=P-1D", + "contenttype":"DATE" + } + ] + }; + result.string(JSON.stringify(filter)); +} \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js b/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8afb448592a8d594ca71658bc738b9a6bef9f6ad --- /dev/null +++ b/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js @@ -0,0 +1,91 @@ +import("system.result"); +import("Sql_lib"); +import("Entity_lib"); +import("system.vars"); +import("system.logging"); + +let values = []; +let operator = ""; +let condition = ""; +let additionalCondition = ""; +let setAttrCondition = false; + +switch(vars.get("$local.operator")) +{ + case "1": // equals + operator = " in "; + break; + case "11": // is not empty + operator = " is not null "; + break; + case "2": // not equals + operator = " not in "; + break; + case "12": // is empty + operator = " is null "; + break; +} + +condition = "TABLENAME " + operator; + +if(vars.get("$local.operator") == "1" || vars.get("$local.operator") == "2") +{ + values = [vars.get("$local.value").trim()]; + switch(values[0]) + { + case "'TASK'": + values.push("'TASKLINK'"); + break; + case "'ACTIVITY'": + setAttrCondition = true; + values.push("'ACTIVITYLINK'"); + break; + case "'BULKMAIL'": + values.push("'BULKMAILRECIPIENT'"); + break; + case "'EVENT'": + values.push("'EVENTPARTICIPANT'"); + break; + case "'SALESPROJECT'": + setAttrCondition = true; + values.push("'SALESPROJECT_MILESTONE'"); + break; + case "'SERIALLETTER'": + values.push("'LETTERRECIPIENT'"); + break; + case "'PERSON'": + setAttrCondition = true; + additionalCondition = " or AB_LOGHISTORYID in (" + + newSelect("AB_LOGHISTORYID") + .from("AB_OBJECTRELATION") + .join("AB_LOGHISTORY", "TABLENAMEID = AB_OBJECTRELATIONID") + .join("CONTACT", "(OBJECT1_ROWID = CONTACTID or OBJECT2_ROWID = CONTACTID) and CONTACT.PERSON_ID is not null") + + ")"; + break; + case "'ORGANISATION'": + setAttrCondition = true; + additionalCondition = " or AB_LOGHISTORYID in (" + + newSelect("AB_LOGHISTORYID") + .from("AB_OBJECTRELATION") + .join("AB_LOGHISTORY", "TABLENAMEID = AB_OBJECTRELATIONID") + .join("CONTACT", "(OBJECT1_ROWID = CONTACTID or OBJECT2_ROWID = CONTACTID) and CONTACT.PERSON_ID is null") + + ")"; + + break; + } + + if (setAttrCondition) + { + additionalCondition += " or AB_LOGHISTORYID in (" + + newSelect("AB_LOGHISTORYID") + .from("AB_ATTRIBUTERELATION") + .join("AB_LOGHISTORY", "TABLENAMEID = OBJECT_ROWID and OBJECT_TYPE = " + + values[0].substring(0, 2).toUpperCase() + values[0].substring(2).toLowerCase()) + + ")"; + } + + condition += "(" + values.join(", ") + ")"; + condition += additionalCondition ? additionalCondition : ""; +} + +result.string(condition); \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js b/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5b6200428023110675f44b93795dd82f307016d5 --- /dev/null +++ b/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js @@ -0,0 +1,18 @@ +import("system.translate"); +import("system.result"); + +result.object( + [ + ["ACTIVITY", translate.text("Activity")], + ["BULKMAIL", translate.text("Bulk mail")], + ["PERSON", translate.text("Contact")], + ["DSGVO", translate.text("DSGVO")], + ["EVENT", translate.text("Event")], + ["ORGANISATION", translate.text("Organisation")], + ["PERSON", translate.text("Person")], + ["SALESORDER", translate.text("Salesorder")], + ["SALESPROJECT", translate.text("Salesproject")], + ["SERIALLETTER", translate.text("Serial letter")], + ["TASK", translate.text("Task")], + ] + ); diff --git a/entity/AuditLogHistory_entity/recordcontainers/db/orderClauseProcess.js b/entity/AuditLogHistory_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ae111d1507f396f90e9be531314a233472052861 --- /dev/null +++ b/entity/AuditLogHistory_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,4 @@ +import("system.db"); +import("system.result"); + +result.object({"DATE_NEW": db.DESCENDING}); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js index 3020cb618cdf0f0aac9fbf0f9201753a29563a37..04cd6d4dc91c5a7e36cd82b78301acf456fc05ff 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/hascommrestriction.value/expression.js @@ -5,5 +5,5 @@ import("system.db"); import("system.result"); var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()); -var sql = "case when (" + commRestrictionCond.toString() + ") then 'true' else 'false' end"; -result.string(sql); +var sql = SqlBuilder.caseWhen(commRestrictionCond).thenString("true").elseString("false"); +result.string(sql.toString()); diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index 115c35f85e46db99d439362dca426fd984657802..49b6fefd59233f6aa50934a21ce43f06a3a61172 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,17 +1,12 @@ import("Sql_lib"); import("Contact_lib"); import("system.translate"); -import("system.db"); -import("Bulkmail_lib"); import("system.result"); import("Keyword_lib"); import("KeywordRegistry_basic"); -var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()).build(); +var commRestrictionCond = ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()); var keywordSql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.bulkMailRecipientStatus(), "BULKMAILRECIPIENT.STATUS"); -// TODO: is prepared possible? -var sql = "case when (" + SqlUtils.translateStatementWithQuotes(commRestrictionCond) - + ") then '" + translate.text("Advertising ban") - + "' else (" + keywordSql + ") end"; -result.string(sql); +var sql = SqlBuilder.caseWhen(commRestrictionCond).thenString(translate.text("Advertising ban")).elseValue(keywordSql); +result.string(sql.toString()); diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js index 9bac722a3fa50b14fe0fd7fcf9cb92ebd8e49fba..5247fde75b3f57fdb34fb70500efb8bca84d6906 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js @@ -1,7 +1,7 @@ +import("Sql_lib"); import("Context_lib"); import("system.result"); -// TODO: is prepared possible? -result.string("case when PERSON_ID is null then '" + ContextUtils.getContextName("Organisation") - + "' when CONTACT.ORGANISATION_ID is not null and CONTACT.PERSON_ID is not null then '" + ContextUtils.getContextName("Person") - + "' else '' end"); \ No newline at end of file +var sql = SqlBuilder.caseWhen("PERSON_ID is null").thenString(ContextUtils.getContextName("Organisation")) + .when(newWhere("CONTACT.ORGANISATION_ID is not null").and("CONTACT.PERSON_ID is not null")).thenString(ContextUtils.getContextName("Person")) +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js index 798e2b67f2069b417fa90421aefdc85d7639399a..b2c37dfa07d393af2fbd10b50ae3ea3dcac816b4 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js @@ -19,10 +19,10 @@ var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumn if(participantRowIds != null && participantRowIds.length > 0) { - let contactIdsToHandle = participantRowIds; + var contactIdsToHandle = participantRowIds; if(isUpdate == "false") - contactIdsToHandle = vars.get("$field.campaignparticipantContactIds"); + contactIdsToHandle = JSON.parse(vars.get("$field.campaignparticipantContactIds")); _handleRowIds(contactIdsToHandle, campaignId); } @@ -37,13 +37,13 @@ if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentC function _handleCondition(pCampaignId, pTargetTableName, pCondition) { - let contactIdsToHandle = []; + var contactIdsToHandle = []; + var contextComingFrom = "Person"; - let useRightJoinToGetOrgs = "false"; if(pTargetTableName == "ORGANISATION") { - useRightJoinToGetOrgs = "true"; - pCondition += " and PERSON.PERSONID is NULL" + pCondition += " and PERSON.PERSONID is NULL"; + contextComingFrom = "Organisation"; } /* @@ -55,10 +55,10 @@ function _handleCondition(pCampaignId, pTargetTableName, pCondition) */ if(isUpdate == "true") { - contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs) + contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition); } else - contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs); + contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, contextComingFrom); _handleRowIds(contactIdsToHandle, pCampaignId); } @@ -75,7 +75,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) "DATE_EDIT" ]; - let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID") + var oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID") .from("CAMPAIGNPARTICIPANT") .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN()) .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) @@ -98,28 +98,28 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ]; } - let statementArray = []; - let logArray = []; + var statementArray = []; + var logArray = []; - for (let participant in pParticipantRowIds) + for (var participant in pParticipantRowIds) { - let campaignParticipantLogId = util.getNewUUID(); - + var campaignParticipantLogId = util.getNewUUID(); + var valsCampaignParticipantLog; if(isUpdate == "true") { - let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || ""; + var oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || ""; - let updatedValues = [ + var updatedValues = [ newCampaignStepId, vars.get("$sys.user"), vars.get("$sys.date") ]; - let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant]) + var condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant]) .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]); - let valsCampaignParticipantLog = [ + valsCampaignParticipantLog = [ campaignParticipantLogId, campaignId, newCampaignStepId, @@ -134,9 +134,9 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) } else { - let campaignParticipantId = util.getNewUUID(); + var campaignParticipantId = util.getNewUUID(); - let valsCampaignParticipant = [ + var valsCampaignParticipant = [ campaignParticipantId, pParticipantRowIds[participant], campaignId, @@ -145,7 +145,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) vars.get("$sys.date") ]; - let valsCampaignParticipantLog = [ + valsCampaignParticipantLog = [ campaignParticipantLogId, campaignId, newCampaignStepId, @@ -169,6 +169,4 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) if(logArray.length > 0) db.inserts(logArray); - - neon.refreshAll(); } \ No newline at end of file diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js index be5aec2ba0d4f21dc0a169a53489021c880b3c8b..8271cfcda5c3966074453a2c2c22d86b086388ce 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/stateProcess.js @@ -5,4 +5,11 @@ import("system.vars"); if (vars.get("$sys.validationerrors")) result.string(neon.COMPONENTSTATE_DISABLED); else - result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file +{ + var contactCount = JSON.parse(vars.get("$field.campaignparticipantContactIds")).length; + if (contactCount == 0) + result.string(neon.COMPONENTSTATE_DISABLED); + else + result.string(neon.COMPONENTSTATE_EDITABLE); +} + \ No newline at end of file diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js index a8170e082c09b950279474e1c8bec2c8900bfdf9..ff279849cebaa73eaaad7f251b821d9379d06ad5 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js @@ -22,15 +22,17 @@ if(vars.get("$field.CAMPAIGN_ID")) else if(comingfrom == "Person") filteredContactIds = FilterViewActionUtils.contactIdsFilter(selection) - contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), selection); + contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), selection, comingfrom); } else if(isUpdate) { - if (vars.get("$param.campaignParticipantsCondition_param")) { - contactIds = CampaignUtils.GetContactIdsInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition, false); - } else{ + var contactFilterCondition = JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition; + contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition, comingfrom); + } + else + { contactIds = selection; } } diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index fbc177e81a443f76490a7c87f4f2169182127217..37416e7b55c7aa8aeec8dc400816f6df5b390cae 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -274,7 +274,6 @@ <entityConsumer> <name>Tasks</name> <title>Tasks</title> - <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Task_entity</entityName> diff --git a/entity/Campaign_entity/entityfields/tasks/stateProcess.js b/entity/Campaign_entity/entityfields/tasks/stateProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 97692e13aa5f4ed03bcb9bccd4ac3b5b11872be4..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ -import("Favorites_lib"); +import("Context_lib"); import("system.result"); +import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index fa780bd3a980c26cd0931459951df89c31b7d4a3..dd188aaf77933759617acc567c9f1ba0cb1313dc 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Campaign'"; - -result.string("CAMPAIGNID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js index 43a6304543f7b01dab728e1774e8d6f9e06980e0..ea803f184c537724212607c29cfa59f9342de57c 100644 --- a/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js +++ b/entity/ClassificationAdmin_entity/recordcontainers/jdito/onUpdate.js @@ -178,7 +178,7 @@ function _update() } } - cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID = '" + text.decodeMS(uid)[1] + "'"); + cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONTYPEID", text.decodeMS(uid)[1]); columns.push("SCORETYPE"); values.push(vars.get("$field.CLASSIFICATIONTYPEIDDISPLAYVALUE")); cond.updateData(true, table, columns, null, values); @@ -195,13 +195,13 @@ function _update() .where("CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID", id) .cell(); - cond = newWhereIfSet("CLASSIFICATIONTYPE.CLASSIFICATIONGROUP_ID = '" + classificationGroupId + "'"); + 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 + "'"); + 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 e82162ec53830890f0318084f9f519df8e11eb08..fdf4e999952bbfc3804623512cf5fe978d900612 100644 --- a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod +++ b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod @@ -20,6 +20,7 @@ </entityField> <entityField> <name>MAXGRADEFORSCORE</name> + <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/maxgradeforscore/documentation.adoc</documentation> <title>Max Value</title> <contentType>NUMBER</contentType> <outputFormat>#####</outputFormat> diff --git a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js index 27385ec36d1401a26d148026283388fccd75b755..f45ecc8306bdd9f82d4249c83fa66b0f8543ac71 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/onDBDelete.js @@ -21,7 +21,7 @@ try var table = ["CLASSIFICATIONGRADING"]; var multiplicand = maxScore/gradingTable[0][1]; var update = newWhere("CLASSIFICATIONGRADING.CLASSIFICATIONGRADINGID", gradingTable[0][0]) - .updateData(true, table, column, null, column, db.getCurrentAlias()), [maxScore]); + .updateData(true, table, column, null, column, db.getCurrentAlias(), [maxScore]); for (let i = 1; i < gradingTable.length; i++) { diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod index d86c079f7b68f2f527fb56ee8044e50dab3afbbf..faf8305ab8185d249fd38216f9954fd7d857dcb9 100644 --- a/entity/ClassificationType_entity/ClassificationType_entity.aod +++ b/entity/ClassificationType_entity/ClassificationType_entity.aod @@ -39,6 +39,7 @@ </entityField> <entityConsumer> <name>ClassificationScores</name> + <refreshParent v="true" /> <dependency> <name>dependency</name> <entityName>ClassificationScore_entity</entityName> diff --git a/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js b/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js index 07815a1f88e787ef8647c0580f565279772f5efc..1aec260db1641b4b7b282eacb60d756408b1f086 100644 --- a/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js +++ b/entity/ClassificationType_entity/entityfields/infofield/valueProcess.js @@ -1,3 +1,4 @@ +import("system.neon"); import("system.translate"); import("Entity_lib"); import("system.result"); @@ -16,7 +17,7 @@ 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!")) +var res = ClassificationUtils.getTranslatedInfo(); if(rows.length > 0) { for (i = 0; i < rows.length; i++) @@ -54,7 +55,7 @@ if(rows.length > 0) for (i = 0; i < gradingTable.length; i++) { oldToNewValueString += gradingTable[i][2] + ": " + gradingTable[i][1] + "->" + parseInt(gradingTable[i][1] * multiplicand) + "\n\ - "; + "; } } else @@ -67,9 +68,9 @@ if(rows.length > 0) "; } } - var resString = translate.text("This is how the Classification Gradings of the Classification will get affected by these changes:") + "\n\ + res = 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 +} +result.string(res); \ No newline at end of file diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod index 011426f28c49b46e51582e167bf98d6a18abd991..0ffc7c029876ca37340aa50f5a4503ca4e0c8d1e 100644 --- a/entity/Classification_entity/Classification_entity.aod +++ b/entity/Classification_entity/Classification_entity.aod @@ -42,7 +42,6 @@ </entityParameter> <entityProvider> <name>Classifications</name> - <documentation>%aditoprj%/entity/Classification_entity/entityfields/classifications/documentation.adoc</documentation> <dependencies> <entityDependency> <name>6274acfa-3dbf-4a9b-8926-2a2d1ff80d6d</name> diff --git a/entity/Classification_entity/entityfields/classifications/documentation.adoc b/entity/Classification_entity/entityfields/classifications/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Competition_entity/entityfields/keywordwonlost/children/containername_param/documentation.adoc b/entity/Competition_entity/entityfields/keywordwonlost/children/containername_param/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Contract_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Contract_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 97692e13aa5f4ed03bcb9bccd4ac3b5b11872be4..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Contract_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Contract_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ -import("Favorites_lib"); +import("Context_lib"); import("system.result"); +import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index c2197272407c3509180dc90692e2edc59e2d6d7a..dd188aaf77933759617acc567c9f1ba0cb1313dc 100644 --- a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Contract'"; - -result.string("CONTRACTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod index dd8ae2f623b003b0541b515c36274467aae5be78..9a090c1ee2cc636fcc7b1dfe8a5651482b51f376 100644 --- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod +++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod @@ -52,7 +52,6 @@ </entityParameter> <entityParameter> <name>ReportType_param</name> - <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/reporttype_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityProvider> diff --git a/entity/DSGVOInfo_entity/entityfields/reporttype_param/valueProcess.js b/entity/DSGVOInfo_entity/entityfields/reporttype_param/valueProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod index 6fd134a3a89d73e4185ec169dbd5efa7f0f7f34f..19cefc3a19e90adbc2a12a91fe584c93032a6554 100644 --- a/entity/DSGVO_entity/DSGVO_entity.aod +++ b/entity/DSGVO_entity/DSGVO_entity.aod @@ -13,7 +13,6 @@ </siblings> <grantCreate v="false" /> <grantDelete v="false" /> - <afterSave>%aditoprj%/entity/DSGVO_entity/afterSave.js</afterSave> <titlePlural></titlePlural> <recordContainer>jdito</recordContainer> <entityFields> diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod index cc4783ab5ba59c6b60afb8944f7dc3a6929e0ff3..4062bb8fd405fd3447584e1169ac5f9f8e15c83c 100644 --- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod +++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod @@ -148,6 +148,7 @@ </entityConsumer> <entityField> <name>departmentAttributeName</name> + <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departmentattributename/documentation.adoc</documentation> <title>Department</title> <state>READONLY</state> <stateProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/departmentattributename/stateProcess.js</stateProcess> diff --git a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod index 3e77638a51c83f4a8c4826e1659f807b55198c97..6db556011a3702c802f4b5a1c3ade5dcb8e172b2 100644 --- a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod +++ b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod @@ -43,6 +43,10 @@ <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>GetAllContexts_param</name> + <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityProvider> diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js index 8f454703def4a1394d286aa33b5ec4faff63f049..9d5b64bb87394e32432cb693008cd7332ada7be6 100644 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js +++ b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/blacklist_param/valueProcess.js @@ -1,3 +1,3 @@ import("system.result"); -result.object(["Person", "Organisation", "Offer"]); \ No newline at end of file +result.object(["Person", "Organisation", "Offer", "MarketingWorkflowLauncher"]); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a --- /dev/null +++ b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/entity/DocumentTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/DocumentTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 97692e13aa5f4ed03bcb9bccd4ac3b5b11872be4..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/DocumentTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/DocumentTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ -import("Favorites_lib"); +import("Context_lib"); import("system.result"); +import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod b/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod index b587b5faf51202eb06723ae25ddd47114b859384..3297b0d171e13e5fdf8358941a420a4d3d65ca35 100644 --- a/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod +++ b/entity/DuplicateScannerResultFieldConfig_entity/DuplicateScannerResultFieldConfig_entity.aod @@ -2,7 +2,6 @@ <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>DuplicateScannerResultFieldConfig_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/documentation.adoc</documentation> <recordContainer>recordContainer</recordContainer> <entityFields> <entityProvider> diff --git a/entity/DuplicateScannerResultFieldConfig_entity/documentation.adoc b/entity/DuplicateScannerResultFieldConfig_entity/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index 60ea8401f68c771715b123bb20d125584e78a98f..c3144f1349c9b1618e1f5d48999a1152564db3a8 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -64,6 +64,7 @@ <mandatory v="true" /> <dropDownProcess>%aditoprj%/entity/Employee_entity/entityfields/email_address/dropDownProcess.js</dropDownProcess> <textInputAllowed v="true" /> + <stateProcess>%aditoprj%/entity/Employee_entity/entityfields/email_address/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Employee_entity/entityfields/email_address/onValidation.js</onValidation> </entityField> <entityField> diff --git a/entity/Employee_entity/entityfields/email_address/stateProcess.js b/entity/Employee_entity/entityfields/email_address/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..41639552eca72ca53a61a9edc3d2e68166f71448 --- /dev/null +++ b/entity/Employee_entity/entityfields/email_address/stateProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +//the email should not be changed afterwards, because it is also used as calendar id +if (!vars.get("$field.EMAIL_ADDRESS") || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(neon.COMPONENTSTATE_EDITABLE); +else + result.string(neon.COMPONENTSTATE_READONLY); diff --git a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js index 0eecb635d118154d8a947e791019c9a143823850..66ee0547575d06eeb39f33b7ede5258e639295dc 100644 --- a/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js +++ b/entity/ExportTemplateSelection_entity/entityfields/safeandexport/onActionProcess.js @@ -9,6 +9,8 @@ var comingFrom = vars.get("$field.comingfrom"); if(templateId) { -var document = ExportTemplateUtils.buildExport(templateId, selection, comingFrom, filename); -neon.download(document.content, document.filename); + var document = ExportTemplateUtils.buildExport(templateId, selection, comingFrom, filename); + neon.download(document.content, document.filename); + //since we do not open something after the download we need to close the window where the action is placed + neon.closeImage(vars.get("$sys.currentimage"), true); } \ No newline at end of file diff --git a/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 97692e13aa5f4ed03bcb9bccd4ac3b5b11872be4..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/ExportTemplate_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ -import("Favorites_lib"); +import("Context_lib"); import("system.result"); +import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index e4f1112d7f054bbbabda17db37f3cd4c7efdcc8f..81be338ad3887462424137b8445aaeef00347076 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -90,7 +90,6 @@ <name>FilterAlreadyUsedByEntryId_param</name> <valueProcess>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/keywordattributes/children/filteralreadyusedbyentryid_param/valueProcess.js</valueProcess> <expose v="false" /> - <documentation>%aditoprj%/entity/KeywordAttributeRelation_entity/entityfields/keywordattributes/children/filteralreadyusedbyentryid_param/documentation.adoc</documentation> </entityParameter> </children> </entityConsumer> diff --git a/entity/KeywordAttributeRelation_entity/entityfields/keywordattributes/children/filteralreadyusedbyentryid_param/documentation.adoc b/entity/KeywordAttributeRelation_entity/entityfields/keywordattributes/children/filteralreadyusedbyentryid_param/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod index 0cbf79b0ddbfcc88bc73e391734bffd8e0b04a8e..f985150a0e1cb55d7858aa3540456b609937f07d 100644 --- a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod +++ b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod @@ -14,6 +14,7 @@ <name>FIELDNAME</name> <title>Fieldname</title> <consumer>KeywordImportFields</consumer> + <mandatory v="true" /> <displayValueProcess>%aditoprj%/entity/LeadimportMappingAssistant_entity/entityfields/fieldname/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -26,10 +27,12 @@ <entityField> <name>INPUTVALUE</name> <title>Input value</title> + <mandatory v="true" /> </entityField> <entityField> <name>OUTPUTVALUE</name> <title>Output value</title> + <mandatory v="true" /> </entityField> <entityField> <name>USER_NEW</name> diff --git a/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js b/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js index 9bac722a3fa50b14fe0fd7fcf9cb92ebd8e49fba..b9a588dfe867d2a870ad80b9eb25ef5803ddfa4b 100644 --- a/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js +++ b/entity/LetterRecipient_entity/recordcontainers/db/recordfieldmappings/targetcontext.value/expression.js @@ -1,7 +1,7 @@ +import("Sql_lib"); import("Context_lib"); import("system.result"); -// TODO: is prepared possible? -result.string("case when PERSON_ID is null then '" + ContextUtils.getContextName("Organisation") - + "' when CONTACT.ORGANISATION_ID is not null and CONTACT.PERSON_ID is not null then '" + ContextUtils.getContextName("Person") - + "' else '' end"); \ No newline at end of file +var sql = SqlBuilder.caseWhen("PERSON_ID is null").thenString(ContextUtils.getContextName("Organisation")) + .when(newWhere("CONTACT.ORGANISATION_ID is not null").and("CONTACT.PERSON_ID is not null")).thenString(ContextUtils.getContextName("Person")); +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..40b9b39c8993d2b421f368b11fca27d80abb24f5 --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -0,0 +1,85 @@ +<?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>MarketingWorkflowLauncher_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <title>Marketing workflow</title> + <recordContainer>dataLess</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>DOCUMENTTEMPLATE_ID</name> + <title>Document template</title> + <consumer>EmailTemplates</consumer> + <mandatory v="true" /> + <state>EDITABLE</state> + </entityField> + <entityConsumer> + <name>WorkflowLauncherIntegration</name> + <isOneToOneRelationship v="true" /> + <dependency> + <name>dependency</name> + <entityName>WorkflowLauncher_entity</entityName> + <fieldName>Integration</fieldName> + </dependency> + <children> + <entityParameter> + <name>Validationerrors_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/validationerrors_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ProcessVariables_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>Targets_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>TargetContext_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectFilter_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>EmailTemplates</name> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>DocumentTemplateType_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/documenttemplatetype_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ComingFrom_param</name> + <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>dataLess</name> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cc6924394ae950c43386275dda2c8db5d7a9c0ed --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js @@ -0,0 +1,4 @@ +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/documenttemplatetype_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/documenttemplatetype_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..28aacde92d62b929b1e883596dc7fbefc8adc604 --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/documenttemplatetype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.documentTemplateType$mail()); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b81df3d4fb93fc9608febd7783247052a61d4acd --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +var variables = { + documentTemplate: vars.get("$field.DOCUMENTTEMPLATE_ID") +}; +result.string(JSON.stringify(variables)); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cc6924394ae950c43386275dda2c8db5d7a9c0ed --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js @@ -0,0 +1,4 @@ +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6a28aafa528aa4130e913b642f80e04cfadc8b19 --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js @@ -0,0 +1,13 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +var context = vars.get("$param.ObjectType_param"); +var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")) || []; +targets = targets.map(function (targetId) +{ + if (Utils.isString(targetId)) + return [targetId, context]; //todo: context dynamic (eg for participants) + return targetId; +}); +result.string(JSON.stringify(targets)); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/validationerrors_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/validationerrors_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..30356844f1b46d5f02bf716149cdc80470bc01d6 --- /dev/null +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/validationerrors_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$sys.validationerrors")); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 53dfef4032fa6a6c05302d8c864afef7a80894b6..23a14e5ebe902ca5f5fcda22532dae26cc4b2c17 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -4,7 +4,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation> <title>${SALESPROJECT_MEMBER}</title> - <grantCreateProcess>%aditoprj%/entity/Member_entity/grantCreateProcess.js</grantCreateProcess> <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess> <iconId>VAADIN:FILE_SOUND</iconId> @@ -219,6 +218,7 @@ </entityField> <entityField> <name>recordType</name> + <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation> </entityField> </entityFields> <recordContainers> diff --git a/entity/Member_entity/grantCreateProcess.js b/entity/Member_entity/grantCreateProcess.js deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index 8dead6bc118e4d353c6c708976a037b3ace5c45e..cf3203213ac627ef13ec8064010448a7db4a5970 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -175,8 +175,7 @@ <dbRecordContainer> <name>db</name> <alias>_____SYSTEMALIAS</alias> - <maximumDbRows v="200" /> - <isPageable v="false" /> + <isPageable v="true" /> <fromClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <orderClauseProcess>%aditoprj%/entity/Notification_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> diff --git a/entity/ObjectRelationType_entity/documentation.adoc b/entity/ObjectRelationType_entity/documentation.adoc index 9c296c2d48c343163da4a3427b5c27656d4938a9..268b6a73875e0a1b60f9287471a5f693f84a2f5c 100644 --- a/entity/ObjectRelationType_entity/documentation.adoc +++ b/entity/ObjectRelationType_entity/documentation.adoc @@ -1,3 +1,14 @@ = ObjectRelationType_entity -Administrative obsolescence of the object_entity \ No newline at end of file +This entity is for administrating the different types of ObjectRelations that can be used with the ObjectTree_entity. + +== Database Structure + +One complete ObjectRelationType can consist of either one or two rows in the table 'AB_OBJECTRELATIONTYPE', depending on whether the ObjectRelationType is double-sided or not. When there are two rows they share the same 'RELATION_TYPE' and the order of them is determined by the 'SIDE'. +The flag 'HIERARCHY' determines if the relation between to objects will be hierarchical. + +== Entity Structure + +In the entity, one row represents a "full" ObjectRelationType, so the database entries that make it up are already joined together. + +NOTE: A "second side" of the ObjectRelationType is not mandatory, if it is not set, only one row in the database is needed. Such a relation type makes sense when a relation is the same regardless from which side you view it (e. g. acquaintance). \ No newline at end of file diff --git a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js index c36c8c3e14413054882e265771ac9af38f3fb7fc..d1d925c81b4e8fbd86046d8211e7366524b23882 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -266,6 +266,9 @@ function _getEntryData(pObjectId, pDirection, pRelationType1, pRelationType2, pP || data.length == 0 && pDirection == "reverse" && !pNoRecursion && pObjectRelationId) return _getEntryData(pObjectId, "normal", pRelationType1, pRelationType2, pPrevId, true, pObjectRelationId); + if (data.length == 0 && pDirection == "normal" && !pNoRecursion && pObjectRelationId) + return _getEntryData(pObjectId, "reverse", pRelationType1, pRelationType2, pPrevId, true, pObjectRelationId); + // TODO: BINDATA? //for ( var i = 0; i < data.length; i++) data[i][2] = image[data[i][2]] == undefined ? "" : image[data[i][2]]; return data; diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js index 67b5e68f5a12833bca63247bd9903b8d63e57f87..27b0b7e83a11771b4ea8be2716a3fd61d1c5a6a7 100644 --- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js @@ -19,8 +19,8 @@ if (vars.get("$param.ObjectType_param")) if (vars.exists("$param.ContactId") && vars.get("$param.ContactId")) contactId = vars.get("$param.ContactId"); - result.object(db.table(ContextUtils.getContextDataSql(objectType, contactId, false, undefined, false, excludedIds))) -} + result.object(db.table(ContextUtils.getContextDataSql(objectType, contactId, false, undefined, false, null, null, excludedIds))) +} else { result.object([]); diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 888a3255461f5235c7831b6ef1c5d91add35b037..0491466e0b6a47b54b5d0c67d48d8d4b7a891d31 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -114,6 +114,7 @@ </entityField> <entityConsumer> <name>Offeritems</name> + <refreshParent v="true" /> <description></description> <dependency> <name>dependency</name> @@ -1292,13 +1293,17 @@ </aggregateFieldDbMapping> <aggregateFieldDbMapping> <name>COUNT_aggregate.value</name> - <recordfield>OFFER.OFFER_ID</recordfield> + <recordfield>OFFER.OFFERID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> <aggregateFieldDbMapping> <name>PROBABILITY_aggregate.value</name> <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js</expression> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>OFFER_ID.value</name> + <recordfield>OFFER.OFFER_ID</recordfield> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 371a5b567d5a947056b3aa0982100e741e66eb45..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Offer_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,5 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); - +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index 9a3d04480545203f0da83c3f6be762e684c8883a..dd188aaf77933759617acc567c9f1ba0cb1313dc 100644 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Offer'"; - -result.string("OFFERID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js index 3a5de6feaba1a19a9d36f5ed067305250b098734..8ff2c784424efb6750081f6cbbb1aaaeaae7faab 100644 --- a/entity/Offeritem_entity/entityfields/product_id/onValueChange.js +++ b/entity/Offeritem_entity/entityfields/product_id/onValueChange.js @@ -21,7 +21,7 @@ if(pid != "") var productInfoSubSql = newSelect("DESCRIPTION") .from("DESCRIPTIONTRANSLATION") .whereIfSet("DESCRIPTIONTRANSLATION.OBJECT_ROWID", "$local.value") - .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE = 'Product'") + .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product") .andIfSet("DESCRIPTIONTRANSLATION.LANG", "$param.Language_param") .toString(); var ProductDetails = ProductUtils.getProductDetails(pid, PriceListFilter, diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 77fcf820ec222be8620f37c994771ab4bdc7d85e..06389d921d507bf630d1baddcbbcd03d570f6faa 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -166,7 +166,6 @@ <name>ContactId_param</name> <expose v="true" /> <mandatory v="true" /> - <documentation>%aditoprj%/entity/Order_entity/entityfields/contactid_param/documentation.adoc</documentation> <description>PARAMETER</description> </entityParameter> <entityField> @@ -219,7 +218,6 @@ <children> <entityParameter> <name>AssignmentName_param</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> diff --git a/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js b/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js index b0019362e90c9d7ad19d6124cc9dc0b05ee34ebf..0af12a93e35e4df8221666d3c95d483b44b38aeb 100644 --- a/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js +++ b/entity/Order_entity/entityfields/chosendeliveryaddress/onValueChange.js @@ -3,10 +3,9 @@ import("system.neon"); import("PostalAddress_lib"); import("Entity_lib"); -var newAddressId = vars.get("local.value"); +var newAddressId = vars.get("$local.value"); if (newAddressId) { neon.setFieldValue("$field.DELIVERYADDRESS", AddressUtils.getAddressById(newAddressId)); - - } \ No newline at end of file +} \ No newline at end of file diff --git a/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js b/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js index 77ffefc857d9611484f01814de2ec23479998d09..e30268bc6a8cb9585934bdd8bcbcdbb29a9d7efa 100644 --- a/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js +++ b/entity/Order_entity/entityfields/chosenpaymentaddress/onValueChange.js @@ -3,7 +3,7 @@ import("system.neon"); import("PostalAddress_lib"); import("Entity_lib"); -var newAddressId = vars.get("local.value"); +var newAddressId = vars.get("$local.value"); if (newAddressId) { diff --git a/entity/Order_entity/entityfields/contactid_param/documentation.adoc b/entity/Order_entity/entityfields/contactid_param/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Order_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc b/entity/Order_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc deleted file mode 100644 index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000 diff --git a/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 371a5b567d5a947056b3aa0982100e741e66eb45..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Order_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,5 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); - +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index b57569f1d2a480a25ab25d612b399dc1e3b98ca0..4d5db6ed1a8789383791d9793b7c5791ae8f30a6 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -1074,6 +1074,7 @@ </entityActionGroup> <entityField> <name>STANDARD_COUNTRY</name> + <title>Standard Country</title> <groupable v="true" /> </entityField> <entityParameter> @@ -1139,10 +1140,12 @@ </entityField> <entityField> <name>STANDARD_ZIP</name> + <title>Standard Zip</title> <groupable v="true" /> </entityField> <entityField> <name>STANDARD_CITY</name> + <title>Standard City</title> <groupable v="true" /> </entityField> <entityField> @@ -1397,6 +1400,24 @@ </entityActionField> </children> </entityActionGroup> + <entityConsumer> + <name>AttributesFilter</name> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>FilterProvider</fieldName> + </dependency> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Organisation_entity/entityfields/attributesfilter/children/objectrowid_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributesfilter/children/objectrowid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..59af8506d7c8ff241823ba185c646366667521c0 --- /dev/null +++ b/entity/Organisation_entity/entityfields/attributesfilter/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js b/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..59af8506d7c8ff241823ba185c646366667521c0 --- /dev/null +++ b/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACTID"));//TODO: CONTACTID/ORGANISATIONID: review if this should be the CONTACTID or the ORGANISATIONID \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/status/valueProcess.js b/entity/Organisation_entity/entityfields/status/valueProcess.js index 13218c16514d81765c7e5dfd47c099996adfe063..ce6c527ecefebb6956e5918b6f6b3aa5928fd61d 100644 --- a/entity/Organisation_entity/entityfields/status/valueProcess.js +++ b/entity/Organisation_entity/entityfields/status/valueProcess.js @@ -4,4 +4,4 @@ import("system.neon"); import("KeywordRegistry_basic"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string($KeywordRegistry.contactStatus$active()); \ No newline at end of file + result.string($KeywordRegistry.contactStatus$active()); \ 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 index 768e6ca7501cdd94caba44242bd5d9f1b3c76859..aad0c1782f7ca0b380aa12d11d4855978b9d3648 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationgroup_filter/groupQueryProcess.js @@ -13,7 +13,8 @@ var name = vars.get("$local.name"); 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'") + .leftJoin("CLASSIFICATIONSTORAGE", newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") + .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", "Organisation")) if (condition) { diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js index ccf8f498ce2171f22150fbf2c26e89f495ba169b..a4e9edc5b2c7f90da86619beb5d4d968bb0a392b 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -11,15 +11,18 @@ var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for gr 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) +var sql = 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(); + .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = CONTACT.CONTACTID") + .and("CLASSIFICATION.OBJECT_TYPE", "Organisation") + .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId)) + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID") + .whereIfSet(condition.trim()) + .groupBy(groupedColumns); -result.string(stmt); \ No newline at end of file +if (order != null && !isCount) + sql.orderBy(order); + +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js index 371a5b567d5a947056b3aa0982100e741e66eb45..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Organisation_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js @@ -1,5 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); - +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js index 0a21aef128bcefe95904d2fbed4bfd44cf0bccc8..293144a2513456337e2e290106ec4020e21269a3 100644 --- a/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/PermissionOverview_entity/recordcontainers/jdito/contentProcess.js @@ -74,7 +74,7 @@ for each (var entry in rolesOrEntities) { // entry contains either a role or an .select("ASYS_PERMISSIONSETID") .from("ASYS_PERMISSIONSET") .where("ASYS_PERMISSIONSET.ASYS_PERMISSIONSET_ID", entityPermSetId) - .and("ACCESSTYPE = 'R'") + .and("ASYS_PERMISSIONSET.ACCESSTYPE", "R") .arrayColumn(); currOverview = [entityPermSetId, entry, "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE", "VAADIN:CLOSE"]; diff --git a/entity/Person_entity/Person_entity.aod b/entity/Person_entity/Person_entity.aod index 58638d3e713eb98aea31d9c1cc4f8d4fab871083..c66ce949329c5b9e71486cb5802b41b0b2244ddf 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -1097,6 +1097,12 @@ <iconId>VAADIN:PLAY</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmultipleworkflows/stateProcess.js</stateProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Marketing Workflow</title> + <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + </entityActionField> </children> </entityActionGroup> <entityActionGroup> diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3e462ab4498eb4215bac2daa8457aee59ae8cd2a --- /dev/null +++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,8 @@ +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js index 0ebab765b8e2b53cd11f746c306600f7e6f46327..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Person_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js +++ b/entity/Person_entity/recordcontainers/db/filterextensions/favorites_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/onDBUpdate.js b/entity/Person_entity/recordcontainers/db/onDBUpdate.js index b6e1ccbb97bd3d8336823449a8e445865f78114c..0c29899fd4393c2528219ef9dc213eb151d10b18 100644 --- a/entity/Person_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Person_entity/recordcontainers/db/onDBUpdate.js @@ -21,30 +21,10 @@ for (var i = 0; i < localChanged.length; i++) { if(orgChanged) { - var orgAddressId = newSelect("CONTACT.ADDRESS_ID") - .from("CONTACT") - .where("CONTACT.ORGANISATION_ID", vars.get("$field.ORGANISATION_ID")) - .and("CONTACT.PERSON_ID is null") - .cell(); + var standardAddressId = new StandardObject("Address", null, "Person", vars.get("$field.PERSONID")) + .onPersonValueChange(vars.get("$field.ORGANISATION_ID")); - var addressId = vars.get("$field.ADDRESS_ID"); - - if(addressId != orgAddressId) //update standard address if the the organisation changed - { - var persAddress = newSelect("ADDRESS.ADDRESSID") - .from("ADDRESS") - .where("ADDRESS.CONTACT_ID", vars.get("$field.CONTACTID")) - .and("ADDRESS.ADDRESSID", addressId) - .cell(); - - if(!persAddress) // only when the standard address is from the organisation - { - var standardAddressId = new StandardObject("Address", null, "Person", vars.get("$field.PERSONID")) - .onPersonValueChange(vars.get("$field.ORGANISATION_ID")); - - neon.setFieldValue("$field.ADDRESS_ID", standardAddressId); - } - } + newWhere("CONTACT.CONTACTID", vars.get("$field.CONTACTID")).updateData(true, "CONTACT", ["ADDRESS_ID"], null, [standardAddressId]) } var rowdata = vars.get("$local.rowdata"); diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 09e2fcde10da3e7bff836acfcb834abe1f740b0f..824ac6d55edafc5cacd1bee2233dc435a517f290 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -17,6 +17,7 @@ </entityField> <entityField> <name>OPTIONAL</name> + <documentation>%aditoprj%/entity/Prod2prod_entity/entityfields/optional/documentation.adoc</documentation> <title>Optional</title> <contentType>BOOLEAN</contentType> <dropDownProcess>%aditoprj%/entity/Prod2prod_entity/entityfields/optional/dropDownProcess.js</dropDownProcess> diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 5fbf1ca2f5300aa1a2e8e8bfd7f16fa65e71a2cd..2a6662b6f7d6e80914a53eddd2bdf2b74607ffa4 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -13,6 +13,7 @@ <useFavorites v="true" /> <iconId>VAADIN:HAMMER</iconId> <imageProcess>%aditoprj%/entity/Product_entity/imageProcess.js</imageProcess> + <usePermissions v="true" /> <titlePlural>Products</titlePlural> <recordContainer>db</recordContainer> <entityFields> diff --git a/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 371a5b567d5a947056b3aa0982100e741e66eb45..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Product_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,5 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); - +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Product_entity/recordcontainers/db/onDBDelete.js b/entity/Product_entity/recordcontainers/db/onDBDelete.js index 7fe2819a4da156acf43ceb4d9b0f55ef30df6f63..ebe486353776f89e5a32bf76e99dfffaee9ea429 100644 --- a/entity/Product_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Product_entity/recordcontainers/db/onDBDelete.js @@ -1,18 +1,21 @@ +import("system.vars"); import("Workflow_lib"); import("Context_lib"); import("Sql_lib"); import("Attribute_lib"); -newWhereIfSet("PROD2PROD.DEST_ID", "$field.PRODUCTID") +var productId = vars.get("$local.uid"); + +newWhereIfSet("PROD2PROD.DEST_ID", productId) .deleteData(); -newWhereIfSet("PROD2PROD.SOURCE_ID", "$field.PRODUCTID") +newWhereIfSet("PROD2PROD.SOURCE_ID", productId) .deleteData(); -newWhereIfSet("PRODUCTPRICE.PRODUCT_ID", "$field.PRODUCTID") +newWhereIfSet("PRODUCTPRICE.PRODUCT_ID", productId) .deleteData(); -newWhereIfSet("STOCK.PRODUCT_ID", "$field.PRODUCTID") +newWhereIfSet("STOCK.PRODUCT_ID", productId) .deleteData(); new AttributeRelationQuery(productId, null, ContextUtils.getCurrentContextId()) diff --git a/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index b8141bc3b760b0439c6a4e6e07c99b38dda33d54..dd188aaf77933759617acc567c9f1ba0cb1313dc 100644 --- a/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Product_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Product'"; - -result.string("PRODUCTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js index 0ebab765b8e2b53cd11f746c306600f7e6f46327..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js +++ b/entity/Productprice_entity/recordcontainers/db/filterextensions/favoritefilter/filterValuesProcess.js @@ -1,4 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod index 3a7099a2d87fe2a9c829def9dc700ed70f703db0..e7474ae27a84b2eb23c98236397328ac396df494 100644 --- a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod +++ b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod @@ -76,11 +76,6 @@ <name>AB_KEYWORD_ENTRYID_TITLE.value</name> </jDitoRecordFieldMapping> </recordFieldMappings> - <aggregateFieldMappings> - <jDitoRecordFieldMapping> - <name>conversionRate_aggregate.value</name> - </jDitoRecordFieldMapping> - </aggregateFieldMappings> <filterExtensions> <filterExtension> <name>Year</name> diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js index 95781d32513a9442d468d93568947555bfcdef3d..2f3dad2864f82b5ebd688e2ffea700eec78eaa78 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js @@ -37,7 +37,13 @@ if (filter != null) })).length > 0 })[0]; phasenFilter.operator = "OR"; - let pre = newSelect("PRE.KEYID").from("AB_KEYWORD_ENTRY").join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE").where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()).and("PRE.CONTAINER = '" + $KeywordRegistry.salesprojectPhase() + "'").and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value).cell() + let pre = newSelect("PRE.KEYID") + .from("AB_KEYWORD_ENTRY") + .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRY.SORTING -1 = PRE.SORTING", "PRE") + .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) + .and(["AB_KEYWORD_ENTRY", "CONTAINER", "PRE"], $KeywordRegistry.salesprojectPhase()) + .and("AB_KEYWORD_ENTRY.KEYID", phasenFilter.childs[0].value) + .cell() if (pre != "") { let temp = JSON.parse(JSON.stringify(phasenFilter.childs[0])); temp.value = temp.key = pre; diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js index 524e35692ad0f51d4bebd9dce80d82ebfc6efc80..cf3462e69ddf08a90ec5e2a230b1c0d8bcdd3856 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/classificationtype_filter/groupQueryProcess.js @@ -10,13 +10,17 @@ var groupedColumns = vars.get("$local.groupedlist") // The coloumns, used for gr 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 +var sql = newSelect(isCount ? "1" : columns) + .from("SALESPROJECT") + .leftJoin("CLASSIFICATION", newWhere("CLASSIFICATION.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID") + .and("CLASSIFICATION.OBJECT_TYPE", "Salesproject") + .and("CLASSIFICATION.CLASSIFICATIONTYPE_ID", classificationId)) + .leftJoin("CLASSIFICATIONSCORE", "CLASSIFICATIONSCORE.CLASSIFICATIONSCOREID = CLASSIFICATION.CLASSIFICATIONSCORE_ID") + .whereIfSet(condition.trim()) + .groupBy(groupedColumns); + +if (order != null && !isCount) + sql.orderBy(order); + +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 0ebab765b8e2b53cd11f746c306600f7e6f46327..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ +import("Context_lib"); import("system.result"); import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js index 3a8b1fd9f8491be342a16fd7967c756ef82b0e21..dd188aaf77933759617acc567c9f1ba0cb1313dc 100644 --- a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/activities/filterConditionProcess.js @@ -1,6 +1,11 @@ +import("Context_lib"); +import("Sql_lib"); import("system.vars"); import("system.result"); +//!LibFunction +var cond = newWhere(null, newSelect("ACTIVITYLINK.OBJECT_ROWID").from("ACTIVITYLINK") + .join("ACTIVITY", newWhere("ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID") + .and("ACTIVITYLINK.OBJECT_TYPE", ContextUtils.getCurrentContextId())) + .where(vars.get("$local.condition")), SqlBuilder.EXISTS()); -var from = "ACTIVITYLINK join ACTIVITY on ACTIVITY.ACTIVITYID = ACTIVITYLINK.ACTIVITY_ID and ACTIVITYLINK.OBJECT_TYPE = 'Salesproject'"; - -result.string("SALESPROJECTID in (select ACTIVITYLINK.OBJECT_ROWID from " + from + " where " + vars.get("$local.condition")+ ")"); \ No newline at end of file +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js index 97692e13aa5f4ed03bcb9bccd4ac3b5b11872be4..419128ca73fe597afc7ca4aeed50b28e610206ec 100644 --- a/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ b/entity/SupportTicket_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js @@ -1,4 +1,5 @@ -import("Favorites_lib"); +import("Context_lib"); import("system.result"); +import("Favorites_lib"); -result.object(FavoritesUtil.getUserFavoriteGroups()); \ No newline at end of file +result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js b/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js deleted file mode 100644 index b061026da323fff3513e5cf1b6162b3dbd804430..0000000000000000000000000000000000000000 --- a/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Person_lib"); - -result.string(PersUtils.getResolvingDisplaySubSql("VISITPLANEMPLOYEEWEEK.CONTACT_ID")); \ No newline at end of file diff --git a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js index ce8bb62314fa0a0ae0023f81b31d95a3871bd812..ae8d3918edde1c772c1f09bb3623506cce40cdc1 100644 --- a/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitPlanEntry_entity/recordcontainers/jdito/contentProcess.js @@ -46,19 +46,19 @@ if(entryData.length > 0) { for(var i = 0; i < entryData.length; i++) { - var entryDateRaw, visitPlanEntryId, beginn_time, end_time, organisationContact_id, contact_id, status, visitplanemployeeweek_id, appointmentid; - [entryDateRaw, visitPlanEntryId, beginn_time, end_time, organisationContact_id, contact_id, status, visitplanemployeeweek_id, appointmentid] = entryData[i] + var entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid; + [entryDateRaw, visitPlanEntryId, beginTime, endTime, organisationContactId, contactId, status, visitplanEmployeeWeekId, appointmentid] = entryData[i] - var contactname = db.cell(PersUtils.getResolvingDisplaySubSql("'" + contact_id + "'")); - var orgname = OrganisationUtils.getNameByContactId(organisationContact_id); + var contactname = ContactUtils.getTitleByContactId(contactId); + var orgname = OrganisationUtils.getNameByContactId(organisationContactId); var parentName = translate.text(datetime.toDate(entryDateRaw, "EEEE")); entryDate = datetime.toDate(entryDateRaw, "dd.MM.yyyy"); var statusDisplay = KeywordUtils.getViewValue($KeywordRegistry.visitPlanEntryStatus(), status) var alias = SqlUtils.getSystemAlias(); - items.push([visitPlanEntryId, false, parentName + "#" + entryDate, "", beginn_time - , end_time, organisationContact_id, orgname, contact_id, contactname, entryDateRaw, status, visitplanemployeeweek_id, appointmentid, statusDisplay]); + items.push([visitPlanEntryId, false, parentName + "#" + entryDate, "", beginTime + , endTime, organisationContactId, orgname, contactId, contactname, entryDateRaw, status, visitplanEmployeeWeekId, appointmentid, statusDisplay]); if(!vars.get("$local.idvalues")) { diff --git a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod index 2aed7529f61a7f8a7854f62e48ef1957834e49f3..6010af8787908086fb34aeabc91e2b53396345e4 100644 --- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod +++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod @@ -176,11 +176,16 @@ </entityParameter> </children> </entityConsumer> + <entityField> + <name>ADDRESS_ZIP</name> + <title>Zip</title> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jDito</name> <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isFilterable v="true" /> <contentProcess>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/VisitRecommendation_entity/recordcontainers/jdito/onUpdate.js</onUpdate> @@ -196,13 +201,9 @@ </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>ORGANISATION_POINT_OF_CONTACT.value</name> - <isFilterable v="true" /> - <isLookupFilter v="true" /> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>ORGANISATION_ADDRESS.value</name> - <isFilterable v="true" /> - <isLookupFilter v="true" /> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>PRIORITY.value</name> @@ -217,20 +218,20 @@ </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>DUE_DATE.value</name> - <isFilterable v="true" /> - <isLookupFilter v="true" /> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>INFO.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>CONTACT_ID.value</name> - <isFilterable v="true" /> - <isLookupFilter v="true" /> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>PRIORITY_SOURCE.displayValue</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ADDRESS_ZIP.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js index 2dcf9d475228056db770c57f0e2cfaef41fd5c80..42fecc4e3d198603e333edf0c71beed523ff615a 100644 --- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.SQLTYPES"); import("system.eMath"); import("system.tools"); import("PostalAddress_lib"); @@ -16,59 +17,77 @@ import("AttributeRegistry_basic"); import("KeywordRegistry_basic"); import("Util_lib"); import("Address_lib"); +import("JditoFilter_lib"); -var recommendationData = []; -var tmpData = []; -var activitySubQuery = ""; +var sqlMasker = new SqlMaskingUtils(); -activitySubQuery = newSelect("max(ENTRYDATE)") +var activitySubQuery = newSelect("max(ENTRYDATE)") .from("ACTIVITY") .join("ACTIVITYLINK", "ACTIVITYID = ACTIVITY_ID") .where("ACTIVITYLINK.OBJECT_ROWID = org.ORGANISATIONID") .and("ACTIVITY.CATEGORY", "VISIT") -var idValues = false; +var idValues = null; if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) - idValues = true + idValues = vars.get("$local.idvalues"); //dynamic Recommendations //recommended Organisations containing the attribute Visit Frequency -if(idValues == false) +if (!idValues) { - var visitFrequencyData = newSelect(["org.ORGANISATIONID", "NAME", - newSelect("CONTACT.CONTACTID") - .from("CONTACT") - .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID") - .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID") - .leftJoin("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact()) - .cell(), AddressUtils.formatOnelineSql(), - "visitPlanFrequency.ID_VALUE", "'" + $KeywordRegistry.visitRecommendationPrioSource$visitFrequency()+"'" , activitySubQuery, "CONTACTID", - newSelect("min(ENTRYDATE)") - .from("VISITPLANENTRY") - .where("CONTACT.CONTACTID", "VISITPLANENTRY.ORGANISATION_CONTACT_ID") - .and(newWhere("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$planned()) - .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged())) - .and("VISITPLANENTRY.ENTRYDATE", newSelect("min(vp.ENTRYDATE)") - .from("VISITPLANENTRY", "vp") - .where(["VISITPLANENTRY", "ORGANISATION_CONTACT_ID", "vp"], "visitplanentry.ORGANISATION_CONTACT_ID") - .and(["VISITPLANENTRY", "ENTRYDATE", "vp"], datetime.today()) - .and(newWhere(["VISITPLANENTRY", "STATUS", "vp"], - $KeywordRegistry.visitPlanEntryStatus$planned()) - .or(["VISITPLANENTRY", "STATUS", "vp"], - $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged())) - .cell())]) - .from("CONTACT") - .join("ORGANISATION", "CONTACT.ORGANISATION_ID = org.ORGANISATIONID", "org") - .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID") - .leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID") - .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency") - .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency()) - .table(); + var visitFrequencyData = newSelect([ + "org.ORGANISATIONID", + "NAME", + newSelect("CONTACT.CONTACTID") + .from("CONTACT") + .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID") + .leftJoin("AB_ATTRIBUTE", "AB_ATTRIBUTE.AB_ATTRIBUTEID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID") + .leftJoin("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", $AttributeRegistry.visitPlanPointOfContact()), + AddressUtils.formatOnelineSql(), + "visitPlanFrequency.ID_VALUE", + "'" + $KeywordRegistry.visitRecommendationPrioSource$visitFrequency()+"'" , + activitySubQuery, + "CONTACTID", + newSelect("min(ENTRYDATE)") + .from("VISITPLANENTRY") + .where("CONTACT.CONTACTID", "VISITPLANENTRY.ORGANISATION_CONTACT_ID") + .and(newWhere("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$planned()) + .or("VISITPLANENTRY.STATUS", $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged())) + .and("VISITPLANENTRY.ENTRYDATE", newSelect("min(vp.ENTRYDATE)") + .from("VISITPLANENTRY", "vp") + .where(["VISITPLANENTRY", "ORGANISATION_CONTACT_ID", "vp"], "visitplanentry.ORGANISATION_CONTACT_ID") + .and(["VISITPLANENTRY", "ENTRYDATE", "vp"], datetime.today()) + .and(newWhere(["VISITPLANENTRY", "STATUS", "vp"], + $KeywordRegistry.visitPlanEntryStatus$planned()) + .or(["VISITPLANENTRY", "STATUS", "vp"], + $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged())) + .cell()), + "ADDRESS.ZIP" + ]) + .from("CONTACT") + .join("ORGANISATION", "CONTACT.ORGANISATION_ID = org.ORGANISATIONID", "org") + .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID") + .leftJoin("ADDRESS", "ADDRESS_ID = ADDRESSID") + .join("AB_ATTRIBUTERELATION", "visitPlanFrequency.OBJECT_ROWID = CONTACT.CONTACTID", "visitPlanFrequency") + .where(["AB_ATTRIBUTERELATION", "AB_ATTRIBUTE_ID", "visitPlanFrequency"], $AttributeRegistry.visitPlanFrequency()) + .table(); + + } -var recommendationSQLData = newSelect(["VISITRECOMMENDATIONID", "VISITRECOMMENDATION.CONTACT_ID", "PRIORITY", "DUE_DATE", "SOURCE", "INFO", AddressUtils.formatOnelineSql(), +var prioSubSql = _getPrioByDueDateSubSql("VISITRECOMMENDATION.DUE_DATE", "VISITRECOMMENDATION.PRIORITY"); + +var recommendationSQLData = newSelect([ + "VISITRECOMMENDATIONID", + "VISITRECOMMENDATION.CONTACT_ID", + "ORGANISATION.NAME", + prioSubSql, + "VISITRECOMMENDATION.DUE_DATE", + "VISITRECOMMENDATION.SOURCE", + "VISITRECOMMENDATION.INFO", + AddressUtils.formatOnelineSql(), newSelect("CONTACT.CONTACTID") .from("CONTACT") .leftJoin("AB_ATTRIBUTERELATION", "CONTACT.CONTACTID = AB_ATTRIBUTERELATION.OBJECT_ROWID") @@ -96,92 +115,105 @@ var recommendationSQLData = newSelect(["VISITRECOMMENDATIONID", "VISITRECOMMENDA .from("visitplanentry", "VP") .where(["VISITPLANENTRY", "entrydate", "vp"], datetime.today(), SqlBuilder.GREATER()) .and(["VISITPLANENTRY", "STATUS", "vp"], $KeywordRegistry.visitPlanEntryStatus$planned()) - .or(["VISITPLANENTRY", "STATUS", "vp"], $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()).cell()) + .or(["VISITPLANENTRY", "STATUS", "vp"], $KeywordRegistry.visitPlanEntryStatus$Appointmentarranged()).cell()), + "ADDRESS.ZIP" ]) .from("VISITRECOMMENDATION") .join("CONTACT", "VISITRECOMMENDATION.CONTACT_ID = CONTACT.CONTACTID") + .leftJoin("ORGANISATION", "CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID") .join("ADDRESS", "CONTACT.ADDRESS_ID = ADDRESS.ADDRESSID") - -if(idValues == true) - recommendationSQLData.where("VISITRECOMMENDATION.VISITRECOMMENDATIONID", vars.get("$local.idvalues"), SqlBuilder.IN()) - -recommendationSQLData = recommendationSQLData.table(); + .whereIfSet("VISITRECOMMENDATION.VISITRECOMMENDATIONID", idValues, SqlBuilder.IN()); -for( let i = 0; i < recommendationSQLData.length; i++) -{ - tmpData = []; - - var organisationName = ContactUtils.getFullTitleByContactId(recommendationSQLData[i][1]) - if(recommendationSQLData[i][2]) - var prio = recommendationSQLData[i][2] - - else if(recommendationSQLData[i][3]) - prio = getPrioByDueDate(recommendationSQLData[i][3]); +var filterCond = new FilterSqlTranslator(vars.get("$local.filter"), "VISITRECOMMENDATION") + .addSqlFieldMapping("ORGANISATION_NAME", "ORGANISATION.NAME") + .addSqlFieldMapping("ADDRESS_ZIP", "ADDRESS.ZIP") + .addSpecialFieldConditionFn("PRIORITY", function (pFilterValue, pOperator) + { + switch (pOperator) + { + case "EQUAL": + return [prioSubSql[0] + " = ?", prioSubSql[1].concat([[pFilterValue, SQLTYPES.VARCHAR]])]; + case "NOT_EQUAL": + return [prioSubSql[0] + " != ?", prioSubSql[1].concat([[pFilterValue, SQLTYPES.VARCHAR]])]; + case "ISNULL": + return [prioSubSql[0] + " is null", prioSubSql[1]]; + case "ISNOTNULL": + return [prioSubSql[0] + " is not null", prioSubSql[1]]; + default: + return false; + } + }) + .getSqlCondition(); - else - prio = $KeywordRegistry.visitRecommendationPriority$low(); +recommendationSQLData = recommendationSQLData.andIfSet(filterCond).table(); - +var recommendationData = recommendationSQLData.map(function ([uid, contactId, organisationName, priority, dueDate, prioSource, info, address, what, plannedDate, visitContact, addressZip]) +{ var title = ""; - if(recommendationSQLData[i][9]){ - var user = tools.getUserByAttribute(tools.CONTACTID, recommendationSQLData[i][9]); + if(visitContact) + { + var user = tools.getUserByAttribute(tools.CONTACTID, visitContact); title = user[tools.TITLE] } - - tmpData[0] = recommendationSQLData[i][0]; //UID - tmpData[1] = organisationName; //Organisation Name - tmpData[3] = recommendationSQLData[i][6]; //Address - tmpData[4] = prio; - tmpData[5] = recommendationSQLData[i][4]; //Source of Priority (Id) - tmpData[7] = recommendationSQLData[i][3]; //Due Date - tmpData[8] = recommendationSQLData[i][5]; //Info - tmpData[9] = recommendationSQLData[i][1]; //CONTACT_ID - tmpData[2] = recommendationSQLData[i][8]; //Data_planned - tmpData[6] = KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), recommendationSQLData[i][4]) //Source of Priority (displayvalue) - - recommendationData.push(tmpData); -} + return [ + uid, + organisationName, + plannedDate, + address, + priority, + prioSource, + KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), prioSource), //Source of Priority (displayvalue) + dueDate, + info, + contactId, + "", + addressZip + ]; +}); var monthly = parseInt(datetime.ONE_DAY * 31); var semiannually = parseInt(datetime.ONE_DAY * 183); var quarterly = parseInt(datetime.ONE_DAY * 93); var yearly = parseInt(datetime.ONE_DAY * 365); -if(idValues == false) +if (!idValues) { + var frequencyData = []; for (var i = 0; i < visitFrequencyData.length; i++) { - tmpData = []; - let title = ""; - if(visitFrequencyData[i][9]) + if(visitFrequencyData[i][10]) { let user = tools.getUserByAttribute(tools.CONTACTID, visitFrequencyData[i][9]); title = user[tools.TITLE] } - - tmpData[0] = visitFrequencyData[i][0]; //UID - tmpData[1] = visitFrequencyData[i][1]; //Organisation Name - tmpData[3] = visitFrequencyData[i][2]; //Address - tmpData[5] = visitFrequencyData[i][4]; //Source of Priority (Id) - tmpData[8] = ""; - tmpData[4] = visitFrequencyData[i][5]; //last visit - tmpData[9] = visitFrequencyData[i][6]; //ContactId - tmpData[2] = visitFrequencyData[i][1]; //OrganisationId - tmpData[6] = KeywordUtils.getViewValue($KeywordRegistry.visitRecommendationPrioSource(), visitFrequencyData[i][4]) //Source of Priority (displayvalue) + + let tmpData = [ + visitFrequencyData[i][0], //UID + visitFrequencyData[i][1], //Organisation Name + visitFrequencyData[i][2], //point of contact + visitFrequencyData[i][3], //Address + "", //prio + visitFrequencyData[i][5], //Source of Priority (Id) + "", //Source of Priority (displayvalue) + "", //dueDate + "", //info + visitFrequencyData[i][7], //ContactId + "", + visitFrequencyData[i][9] + ]; var dueDate = ""; - var lastVisitDate = ""; + var lastVisitDate = visitFrequencyData[i][8]; - if((visitFrequencyData[i][5]).length == 0) + if (!lastVisitDate) { dueDate = datetime.date(); } else { - lastVisitDate = visitFrequencyData[i][5]; - switch(visitFrequencyData[i][3]) + switch(visitFrequencyData[i][4]) { case $AttributeRegistry.visitPlanFrequency$monthly(): { @@ -210,13 +242,16 @@ if(idValues == false) } } - - tmpData[7] = dueDate; //Due Date tmpData[4] = getPrioByDueDate(dueDate); //Priority - recommendationData.push(tmpData); + frequencyData.push(tmpData); } + var recordFilter = vars.get("$local.filter"); + if (recordFilter && recordFilter.filter) + frequencyData = JditoFilterUtils.filterRecords(["UID", "ORGANISATION_NAME", "", "ORGANISATION_ADDRESS", "PRIORITY", "", "", "DUE_DATE", "INFO", "CONTACT_ID", "", "ADDRESS_ZIP"], + frequencyData, recordFilter.filter); + recommendationData = recommendationData.concat(frequencyData); } @@ -232,6 +267,38 @@ ArrayUtils.sort2d(recommendationData, 4, true) result.object(recommendationData); +function _getPrioByDueDateSubSql (pDueDateField, pPriorityField) +{ + var currentDate = datetime.date(); + var sqlMasker = new SqlMaskingUtils(); + //!SqlBuilder + var subSql = "case when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$critical() + + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$veryHigh() + + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$high() + + "' when " + pDueDateField + " < ? then '" + $KeywordRegistry.visitRecommendationPriority$medium() + + "' else '" + $KeywordRegistry.visitRecommendationPriority$low() + "' end"; + + var [table, field] = pDueDateField.split("."); + var dateFieldType = db.getColumnTypes(table, [field])[0]; + + var dateDiffs = [ + 0, //critical + datetime.ONE_DAY * 3, //very high + datetime.ONE_WEEK, //high + datetime.ONE_WEEK * 2 //medium + ]; + + var preparedValues = dateDiffs.map(function (dateDiff) + { + return [(currentDate + dateDiff).toString(), dateFieldType]; + }); + + if (pPriorityField) + subSql = sqlMasker.isNull(pPriorityField, "(" + subSql + ")"); + + return [subSql, preparedValues]; +} + function getPrioByDueDate(pDueDate) { var prio = ""; diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod index 6b03a4c7d185c740eb76076e115aeb50afdea57e..ab10357478fbae31e30b3f5762444275d68cb28d 100644 --- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod +++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod @@ -22,6 +22,12 @@ <fieldName>WorkflowDefinitions</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>8c60efea-5fa1-4df0-a6bb-9fadcc88554c</name> + <entityName>WorkflowLauncher_entity</entityName> + <fieldName>WorkflowDefinitions</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod index 5a1d85e3aee32b207d101e5b44181d03349990e6..566506952d10531e4a485461d611e30d6eea4e6a 100644 --- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod +++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod @@ -48,6 +48,7 @@ <name>PROCESSDEFINITION_ID</name> <title>Workflow definition</title> <state>READONLY</state> + <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/processdefinition_id/valueProcess.js</valueProcess> </entityField> <entityField> <name>START_TIME</name> @@ -119,10 +120,6 @@ <name>TargetContext_param</name> <expose v="true" /> </entityParameter> - <entityParameter> - <name>TargetIdFilter_param</name> - <expose v="true" /> - </entityParameter> <entityActionField> <name>toggleActive</name> <title>${WORKFLOW_SUSPEND}</title> @@ -198,12 +195,19 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>STARTFORMDEFINITION</name> + <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/startformdefinition/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>STARTFORMRESULT</name> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> <name>jdito</name> <isFilterable v="true" /> - <isSortable v="true" /> + <isSortable v="false" /> <contentProcess>%aditoprj%/entity/WorkflowInstance_entity/recordcontainers/jdito/contentProcess.js</contentProcess> <onInsert>%aditoprj%/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js</onInsert> <onUpdate>%aditoprj%/entity/WorkflowInstance_entity/recordcontainers/jdito/onUpdate.js</onUpdate> @@ -247,6 +251,9 @@ <jDitoRecordFieldMapping> <name>ICON.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>STARTFORMRESULT.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/WorkflowInstance_entity/entityfields/processdefinition_id/valueProcess.js b/entity/WorkflowInstance_entity/entityfields/processdefinition_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..51591bbe17296f82ad1dff46ac77da008d7b0b07 --- /dev/null +++ b/entity/WorkflowInstance_entity/entityfields/processdefinition_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("system.workflow"); + +var processKey = vars.get("$field.KEY"); +if (processKey && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(workflow.getLatestProcessDefinitionId(processKey)); \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/entityfields/startformdefinition/valueProcess.js b/entity/WorkflowInstance_entity/entityfields/startformdefinition/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4c39536dd2b8f24ec2098addf780992b48fd6612 --- /dev/null +++ b/entity/WorkflowInstance_entity/entityfields/startformdefinition/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("system.workflow"); + +var processDefinitionId = vars.get("$field.PROCESSDEFINITION_ID"); +if (processDefinitionId && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(workflow.getStartFormProperties(processDefinitionId)); \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/recordcontainers/jdito/contentProcess.js b/entity/WorkflowInstance_entity/recordcontainers/jdito/contentProcess.js index 7f18c8bc49ac9e336d2d1a1a7d9bca3c544e6d85..4dd46c30f7abbb10c0eceba2a8bd649c3b25a83e 100644 --- a/entity/WorkflowInstance_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/WorkflowInstance_entity/recordcontainers/jdito/contentProcess.js @@ -27,12 +27,6 @@ if (idvalues) loadHistoricConfig.processInstanceIds(idvalues); historicInstances = JSON.parse(workflow.getHistoricProcessInstances(loadHistoricConfig)); } - - //TODO: find a way the id can be gotten here - //after new-mode, only the workflow key is known, that means if with the given id - //no instance could be found, search with the key and use the item with the latest startTime - if (instances.length === 0 && historicInstances.length === 0) - instances = _getNewestInstanceForKey(idvalues[0]); } else { @@ -64,7 +58,8 @@ var mappingFn = function (instance) "false", //ISFINISHED instance.processDefinitionVersion, JSON.stringify(instance.processVariables), - instance.active ? "VAADIN:AUTOMATION" : "VAADIN:ELLIPSIS_DOTS_H" + instance.active ? "VAADIN:AUTOMATION" : "VAADIN:ELLIPSIS_DOTS_H", + "" ]; } @@ -77,25 +72,10 @@ historicInstances = historicInstances.map(function (instance) return row; }); -instances = JditoFilterUtils.filterRecords(["UID", "NAME", "KEY", "ISACTIVE", "PROCESSDEFINITIONNAME", "PROCESSDEFINITION_ID", "START_TIME", "ISFINISHED"], - instances.concat(historicInstances), vars.get("$local.filter").filter); - -result.object(instances); - - -function _getNewestInstanceForKey (pWorkflowKey) -{ - var loadConfig = workflow.createConfigForLoadingProcessInstances() - .processDefinitionKey(pWorkflowKey); +var recordFilter = new JditoFilter() + .filter(vars.get("$local.filter")) + .fieldOrder(["UID", "NAME", "KEY", "ISACTIVE", "PROCESSDEFINITIONNAME", "PROCESSDEFINITION_ID", "START_TIME", "ISFINISHED"]); - var instances = JSON.parse(workflow.getProcessInstances(loadConfig)); - if (instances.length === 0) - return []; - - return [instances.reduce(function (prev, curr) - { - if (Date.parse(prev.startTime) > Date.parse(curr.startTime)) - return prev; - return curr; - })]; -} \ No newline at end of file +instances = recordFilter.filterRecords(instances.concat(historicInstances)); + +result.object(instances); \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js b/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js index c2d4c9cd5233f4b38402e3b5c1bf32c713644892..ad02408259ca50f000b8046fbde57b7ce26ce301 100644 --- a/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js +++ b/entity/WorkflowInstance_entity/recordcontainers/jdito/onInsert.js @@ -1,80 +1,37 @@ -import("Employee_lib"); +import("system.neon"); +import("Util_lib"); import("system.entities"); import("Context_lib"); import("Workflow_lib"); import("system.vars"); import("system.workflow"); -import("system.process"); -var variables = JSON.parse(vars.getString("$param.ProcessVariables_param")); -var targetIdFilter = vars.get("$param.TargetIdFilter_param") ? JSON.parse(vars.getString("$param.TargetIdFilter_param")) : null; +var variables = Utils.parseJSON(vars.getString("$param.ProcessVariables_param")) || {}; var rowdata = vars.get("$local.rowdata"); var processKey = rowdata["KEY.value"]; var instanceName = rowdata["NAME.value"]; +var startFormResult = Utils.parseJSON(rowdata["STARTFORMRESULT.value"]); -//a placeholder that can be used for individual instance names, will be replaced by the content title -var titlePlaceholder = "{title}"; -var fetchContentTitle = instanceName && instanceName.includes(titlePlaceholder); +if (!Utils.isNullOrEmpty(startFormResult)) + Object.assign(variables, startFormResult); var targetId = variables[WorkflowVariables.TARGET_ID()]; -var targetContext = variables[WorkflowVariables.TARGET_CONTEXT()]; -var targetIds = []; -if (Array.isArray(targetId) && targetId.length !== 0) -{ - targetIds = targetId.slice(); - targetIdFilter = null; -} -else if (!Array.isArray(targetId) && targetId) -{ - targetIds = [targetId]; - targetIdFilter = null; -} +var targetContext = variables[WorkflowVariables.TARGET_CONTEXT()] || vars.get("$param.TargetContext_param"); -if (targetIdFilter || fetchContentTitle) +//a placeholder that can be used for individual instance names, will be replaced by the content title +instanceName = instanceName.replace("{title}", function () { var entity = ContextUtils.getEntity(targetContext); var loadConfig = entities.createConfigForLoadingRows() .entity(entity) - .fields(["#UID", "#CONTENTTITLE"]); - - if (targetIdFilter && targetIdFilter.filter) - loadConfig.filter(JSON.stringify(targetIdFilter.filter)); - else if (targetIds.length !== 0) - loadConfig.uids(targetIds); - - var rowCount = entities.getRowCount(loadConfig); - var pageSize = 1000; - for (let startRow = 0; startRow < rowCount; startRow += pageSize) - { - loadConfig.startrow(startRow).count(pageSize); - let targetIdsAndNames = entities.getRows(loadConfig).map(function (row) - { - var name = instanceName; - if (fetchContentTitle) - name = name.replace(titlePlaceholder, row["#CONTENTTITLE"]); - return [row["#UID"], name]; - }); - _startForIds(targetIdsAndNames, variables); - } + .fields(["#CONTENTTITLE"]) + .uid(targetId); + var row = entities.getRow(loadConfig); -//TODO: entities.getRows currently doesn't work on the server -// process.executeAsync("startWorkflowInstances_serverProcess", { -// processVariables : JSON.stringify(variables), -// processKey : processKey, -// entityFilter : targetIdFilter.filter ? JSON.stringify(targetIdFilter.filter) : "" -// }, false, EmployeeUtils.getCurrentUserName(), process.THREADPRIORITY_NORM, process.TIMERTYPE_SERVER); -} -else - _startForIds(targetIds.map(function (id) {return [id, instanceName];}), variables); - -function _startForIds (pTargets, pVariables) -{ - pTargets.forEach(function ([id, name]) - { - pVariables[WorkflowVariables.TARGET_ID()] = id; - var instanceId = workflow.startProcessByKey(processKey, pVariables); - if (name) - workflow.setProcessInstanceName(instanceId, name); - }); -} + return row && row["#CONTENTTITLE"] || ""; +}); +var instanceId = workflow.startProcessByKey(processKey, pVariables); +neon.setFieldValue("$field.UID", instanceId); +if (name) + workflow.setProcessInstanceName(instanceId, name); diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..f1640dc1aacfcbb6ebd9de2ce5afb3d6ca8b92c9 --- /dev/null +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -0,0 +1,93 @@ +<?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>WorkflowLauncher_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>dataLess</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>PROCESSDEFINITION_ID</name> + <valueProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/processdefinition_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>STARTFORMDEFINITION</name> + <valueProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/startformdefinition/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>STARTFORMRESULT</name> + </entityField> + <entityField> + <name>NAME</name> + <title>Name</title> + <state>EDITABLE</state> + </entityField> + <entityField> + <name>KEY</name> + <title>Key</title> + <consumer>WorkflowDefinitions</consumer> + <state>EDITABLE</state> + </entityField> + <entityActionField> + <name>launchWorkflows</name> + <title>Start workflows</title> + <onActionProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js</onActionProcess> + <iconId>VAADIN:PLAY</iconId> + <stateProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/launchworkflows/stateProcess.js</stateProcess> + </entityActionField> + <entityParameter> + <name>Targets_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>TargetFilter_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ProcessVariables_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>TargetContext_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>Integration</name> + </entityProvider> + <entityConsumer> + <name>WorkflowDefinitions</name> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + <children> + <entityParameter> + <name>Context_param</name> + <valueProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + </entityConsumer> + <entityParameter> + <name>Validationerrors_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>workflowCount</name> + </entityField> + <entityField> + <name>workflowTargets</name> + <valueProcess>%aditoprj%/entity/WorkflowLauncher_entity/entityfields/workflowtargets/valueProcess.js</valueProcess> + </entityField> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>dataLess</name> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7e0756271a92383e5130ad6aeb18ef79a715b0af --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js @@ -0,0 +1,33 @@ +import("system.neon"); +import("Util_lib"); +import("Workflow_lib"); +import("system.vars"); +import("system.workflow"); + +var variables = Utils.parseJSON(vars.get("$param.ProcessVariables_param")) || {}; +var targets = Utils.parseJSON(vars.get("$field.workflowTargets")) || []; +var context = vars.get("$param.TargetContext_param"); +var processKey = vars.get("$field.KEY"); +var instanceName = vars.get("$field.NAME"); +var startFormResult = Utils.parseJSON(vars.get("$field.STARTFORMRESULT")); +var instanceId; + +if (!Utils.isNullOrEmpty(startFormResult)) + Object.assign(variables, startFormResult); + +targets.forEach(function ([targetId, targetContext, processVariables]) +{ + /* Caution: If 'variables' is used, then 'processVariables' is only a reference to 'variables'. + Currently that's fine, but keep it in mind when you change this code. */ + if (!processVariables) + processVariables = variables; + processVariables[WorkflowVariables.TARGET_ID()] = targetId; + processVariables[WorkflowVariables.TARGET_CONTEXT()] = targetContext || context; + + instanceId = workflow.startProcessByKey(processKey, processVariables); + if (instanceName) + workflow.setProcessInstanceName(instanceId, instanceName); +}); + +if (instanceId) + neon.openContext("WorkflowInstance", "WorkflowInstancePreview_view", [instanceId], neon.OPERATINGSTATE_VIEW, {}); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/stateProcess.js b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..568ebbfeb58ea45a42785dc853f78056a06201c7 --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +result.string(vars.get("$sys.validationerrors") || vars.get("$param.Validationerrors_param") + ? neon.COMPONENTSTATE_DISABLED + : neon.COMPONENTSTATE_EDITABLE +); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/processdefinition_id/valueProcess.js b/entity/WorkflowLauncher_entity/entityfields/processdefinition_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..53e733237beb6463b88ccc5b003961ab24424432 --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/processdefinition_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.workflow"); + +var processKey = vars.get("$field.KEY"); +if (processKey) + result.string(workflow.getLatestProcessDefinitionId(processKey)); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/startformdefinition/valueProcess.js b/entity/WorkflowLauncher_entity/entityfields/startformdefinition/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cd86b1b2e7134e95060a0cf8afc8edf785e62b0a --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/startformdefinition/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.workflow"); + +var processDefinitionId = vars.get("$field.PROCESSDEFINITION_ID"); +if (processDefinitionId) + result.string(workflow.getStartFormProperties(processDefinitionId)); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js b/entity/WorkflowLauncher_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f2a157dac50a913f25d95e1cfd2026d39e44bc95 --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.TargetContext_param")); \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/workflowtargets/valueProcess.js b/entity/WorkflowLauncher_entity/entityfields/workflowtargets/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f8c799ec1b05d79e0908022b2a858b8c8d330eae --- /dev/null +++ b/entity/WorkflowLauncher_entity/entityfields/workflowtargets/valueProcess.js @@ -0,0 +1,20 @@ +import("FilterViewAction_lib"); +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var targetFilter = Utils.parseJSON(vars.get("$param.TargetFilter_param")); +var targets = Utils.parseJSON(vars.get("$param.Targets_param")) || []; +var context = vars.get("$param.TargetContext_param"); + +//when target ids are given, the targetFilter will be ignored +if (targets.length === 0 && targetFilter) + targets = FilterViewActionUtils.getUidsByEntityFilter(context, targetFilter); + +var resTargets = targets.map(function (target) +{ + if (Utils.isString(target)) + return [target]; + return target; +}); +result.string(JSON.stringify(resTargets)); \ No newline at end of file diff --git a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod index e57032a87e242a6b8ff0c370c488b2b318835316..beafceffdfe067862b2781e806816b8aaf9ef50d 100644 --- a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod +++ b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod @@ -63,6 +63,10 @@ <name>InvertBlacklist_param</name> <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>GetAllContexts_param</name> + <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess> + </entityParameter> </children> </entityConsumer> <entityConsumer> diff --git a/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..40effa0178464da0c7850912345f19c7fa95975a --- /dev/null +++ b/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string(true); \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index 8b633511b0c4c9faba5f9e3b50735af40f527318..3439544cfe83b426af1216d5545709508f9cdf3e 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -7272,6 +7272,30 @@ <entry> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> </entry> + <entry> + <key>Count Chart</key> + </entry> + <entry> + <key>Sum Chart</key> + </entry> + <entry> + <key>Probability Chart</key> + </entry> + <entry> + <key>Probability in %</key> + </entry> + <entry> + <key>Standard City</key> + </entry> + <entry> + <key>Standard Country</key> + </entry> + <entry> + <key>Standard Zip</key> + </entry> + <entry> + <key>Outstanding Amount</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod.orig b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod.orig deleted file mode 100644 index 43e9e5efe9c3ea18adca80ad06195c581c779930..0000000000000000000000000000000000000000 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod.orig +++ /dev/null @@ -1,4854 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<language xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/language/1.2.0"> - <name>_____LANGUAGE_EXTRA</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <keyValueMap> - <entry> - <key>Company</key> - </entry> - <entry> - <key>E-Mail</key> - </entry> - <entry> - <key>Male</key> - </entry> - <entry> - <key>Activity</key> - </entry> - <entry> - <key>Name</key> - </entry> - <entry> - <key>Austria</key> - </entry> - <entry> - <key>Customercode</key> - </entry> - <entry> - <key>Status</key> - </entry> - <entry> - <key>Active</key> - </entry> - <entry> - <key>Medium</key> - </entry> - <entry> - <key>Internet</key> - </entry> - <entry> - <key>Germany</key> - </entry> - <entry> - <key>Online-Meeting</key> - </entry> - <entry> - <key>Social Media</key> - </entry> - <entry> - <key>Visit</key> - </entry> - <entry> - <key>Information</key> - </entry> - <entry> - <key>Language</key> - </entry> - <entry> - <key>Phone</key> - </entry> - <entry> - <key>Activities</key> - </entry> - <entry> - <key>Female</key> - </entry> - <entry> - <key>Contactmanagement</key> - </entry> - <entry> - <key>Office address</key> - </entry> - <entry> - <key>${HIGHER_THAN_MAX} max: %0</key> - </entry> - <entry> - <key>Contact</key> - </entry> - <entry> - <key>Home address</key> - </entry> - <entry> - <key>Type</key> - </entry> - <entry> - <key>Contacts</key> - </entry> - <entry> - <key>Norway</key> - </entry> - <entry> - <key>Address</key> - </entry> - <entry> - <key>Addresses</key> - </entry> - <entry> - <key>${COMM_ADDRESS}</key> - </entry> - <entry> - <key>Gender</key> - </entry> - <entry> - <key>Date of birth</key> - </entry> - <entry> - <key>Lastname</key> - </entry> - <entry> - <key>Salutation</key> - </entry> - <entry> - <key>Middlename</key> - </entry> - <entry> - <key>Title</key> - </entry> - <entry> - <key>Addresstype</key> - </entry> - <entry> - <key>Firstname</key> - </entry> - <entry> - <key>Description</key> - </entry> - <entry> - <key>Direction</key> - </entry> - <entry> - <key>Entrydate</key> - </entry> - <entry> - <key>Subject</key> - </entry> - <entry> - <key>Post office box</key> - </entry> - <entry> - <key>Delivery address</key> - </entry> - <entry> - <key>House number</key> - </entry> - <entry> - <key>Country</key> - </entry> - <entry> - <key>Communication</key> - </entry> - <entry> - <key>postcode</key> - </entry> - <entry> - <key>City</key> - </entry> - <entry> - <key>State</key> - </entry> - <entry> - <key>Region</key> - </entry> - <entry> - <key>District</key> - </entry> - <entry> - <key>Switzerland</key> - </entry> - <entry> - <key>Internal (2)</key> - </entry> - <entry> - <key>Company Addresses</key> - </entry> - <entry> - <key>yyyyMMdd</key> - </entry> - <entry> - <key>standard address</key> - </entry> - <entry> - <key>PP</key> - </entry> - <entry> - <key>VAT</key> - </entry> - <entry> - <key>The expiry date must be after the start date!</key> - </entry> - <entry> - <key>Product</key> - </entry> - <entry> - <key>Developer</key> - </entry> - <entry> - <key>Valid until</key> - </entry> - <entry> - <key>Price list</key> - </entry> - <entry> - <key>Currency</key> - </entry> - <entry> - <key>Payment method</key> - </entry> - <entry> - <key>Price list / Company</key> - </entry> - <entry> - <key>Curr. sales price</key> - </entry> - <entry> - <key>Contract</key> - </entry> - <entry> - <key>Stock</key> - </entry> - <entry> - <key>PP/SP</key> - </entry> - <entry> - <key>Next due date</key> - </entry> - <entry> - <key>Discount</key> - </entry> - <entry> - <key>The next due date must be after the start of the contract and before the expiry of the contract!</key> - </entry> - <entry> - <key>Sales</key> - </entry> - <entry> - <key>Contract number</key> - </entry> - <entry> - <key>Min. stock</key> - </entry> - <entry> - <key>SP</key> - </entry> - <entry> - <key>Commodity group 3</key> - </entry> - <entry> - <key>Commodity group 2</key> - </entry> - <entry> - <key>Commodity group 1</key> - </entry> - <entry> - <key>Contract start date</key> - </entry> - <entry> - <key>Spare parts</key> - </entry> - <entry> - <key>Unit</key> - </entry> - <entry> - <key>Contract expiry date</key> - </entry> - <entry> - <key>Yes</key> - </entry> - <entry> - <key>Type of contract</key> - </entry> - <entry> - <key>No</key> - </entry> - <entry> - <key>Service</key> - </entry> - <entry> - <key>Cancelled</key> - </entry> - <entry> - <key>Advertising material</key> - </entry> - <entry> - <key>Valid from</key> - </entry> - <entry> - <key>Product name</key> - </entry> - <entry> - <key>Product group</key> - </entry> - <entry> - <key>${CONTRACT_STATUS}</key> - </entry> - <entry> - <key>From no. of units</key> - </entry> - <entry> - <key>Price</key> - </entry> - <entry> - <key>Conditions</key> - </entry> - <entry> - <key>Standard</key> - </entry> - <entry> - <key>I / O</key> - </entry> - <entry> - <key>Date</key> - </entry> - <entry> - <key>IN</key> - </entry> - <entry> - <key>OUT</key> - </entry> - <entry> - <key>Warehouse</key> - </entry> - <entry> - <key>Reference</key> - </entry> - <entry> - <key>The contract number already exists!</key> - </entry> - <entry> - <key>The product number already exists!</key> - </entry> - <entry> - <key>Quantity</key> - </entry> - <entry> - <key>Salesproject</key> - </entry> - <entry> - <key>Rollout</key> - </entry> - <entry> - <key>Phase</key> - </entry> - <entry> - <key>Product number</key> - </entry> - <entry> - <key>Project number</key> - </entry> - <entry> - <key>Project title</key> - </entry> - <entry> - <key>Project start</key> - </entry> - <entry> - <key>Volume</key> - </entry> - <entry> - <key>Partial order</key> - </entry> - <entry> - <key>Open</key> - </entry> - <entry> - <key>Lost</key> - </entry> - <entry> - <key>Order</key> - </entry> - <entry> - <key>Postponed</key> - </entry> - <entry> - <key>Aborted</key> - </entry> - <entry> - <key>Total net</key> - </entry> - <entry> - <key>Offer</key> - </entry> - <entry> - <key>Offer number</key> - </entry> - <entry> - <key>Probability</key> - </entry> - <entry> - <key>Total VAT</key> - </entry> - <entry> - <key>The offer number already exists!</key> - </entry> - <entry> - <key>0 %</key> - </entry> - <entry> - <key>75 %</key> - </entry> - <entry> - <key>100 %</key> - </entry> - <entry> - <key>25 %</key> - </entry> - <entry> - <key>50 %</key> - </entry> - <entry> - <key>Won</key> - </entry> - <entry> - <key>Checked</key> - </entry> - <entry> - <key>Sent</key> - </entry> - <entry> - <key>Offeritems</key> - </entry> - <entry> - <key>Header text</key> - </entry> - <entry> - <key>Commodity group</key> - </entry> - <entry> - <key>Footer text</key> - </entry> - <entry> - <key>Designation</key> - </entry> - <entry> - <key>Position</key> - </entry> - <entry> - <key>Optional</key> - </entry> - <entry> - <key>Article</key> - </entry> - <entry> - <key>Offeritem</key> - </entry> - <entry> - <key>Sum</key> - </entry> - <entry> - <key>Option4</key> - </entry> - <entry> - <key>Option3</key> - </entry> - <entry> - <key>Option2</key> - </entry> - <entry> - <key>Option1</key> - </entry> - <entry> - <key>Countries</key> - </entry> - <entry> - <key>Options</key> - </entry> - <entry> - <key>Total gross</key> - </entry> - <entry> - <key>Identical price list found!</key> - </entry> - <entry> - <key>Parts list</key> - </entry> - <entry> - <key>Parent</key> - </entry> - <entry> - <key>${EURO_SIGN}</key> - </entry> - <entry> - <key>Planned</key> - </entry> - <entry> - <key>Info</key> - </entry> - <entry> - <key>${VOLUME_MONEY}</key> - </entry> - <entry> - <key>Milestones</key> - </entry> - <entry> - <key>Excreted</key> - </entry> - <entry> - <key>Reason</key> - </entry> - <entry> - <key>Document</key> - </entry> - <entry> - <key>Competition</key> - </entry> - <entry> - <key>Forecast</key> - </entry> - <entry> - <key>Role</key> - </entry> - <entry> - <key>End date</key> - </entry> - <entry> - <key>Documents</key> - </entry> - <entry> - <key>New offer version</key> - </entry> - <entry> - <key>Copy offer</key> - </entry> - <entry> - <key>Vers. no.</key> - </entry> - <entry> - <key>Curr. purchase price</key> - </entry> - <entry> - <key>Contracts</key> - </entry> - <entry> - <key>Classification</key> - </entry> - <entry> - <key>High price strategy</key> - </entry> - <entry> - <key>Low price strategy</key> - </entry> - <entry> - <key>Other</key> - </entry> - <entry> - <key>Individual</key> - </entry> - <entry> - <key>Please update the ${FORECAST_ENGLISH}.</key> - </entry> - <entry> - <key>Value</key> - </entry> - <entry> - <key>no valid format</key> - </entry> - <entry> - <key>Pos.</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-3</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-2</key> - </entry> - <entry> - <key>0.00</key> - </entry> - <entry> - <key>Relationship</key> - </entry> - <entry> - <key>${BINARY_LIB_TOO_MANY_BINARIES}</key> - </entry> - <entry> - <key>Native Name</key> - </entry> - <entry> - <key>#,##0</key> - </entry> - <entry> - <key>New offer</key> - </entry> - <entry> - <key>dd.MM.yyyy</key> - </entry> - <entry> - <key>Edit defaults</key> - </entry> - <entry> - <key>no valid mail-address format</key> - </entry> - <entry> - <key>#,##0.00</key> - </entry> - <entry> - <key>Latin Name</key> - </entry> - <entry> - <key>Organisation name</key> - </entry> - <entry> - <key>Connection</key> - </entry> - <entry> - <key>standard email</key> - </entry> - <entry> - <key>Creator</key> - </entry> - <entry> - <key>Timetracking</key> - </entry> - <entry> - <key>Further informations</key> - </entry> - <entry> - <key>Social</key> - </entry> - <entry> - <key>Facebook Feed</key> - </entry> - <entry> - <key>Group1</key> - </entry> - <entry> - <key>Group2</key> - </entry> - <entry> - <key>Details</key> - </entry> - <entry> - <key>Prices</key> - </entry> - <entry> - <key>Twitter</key> - </entry> - <entry> - <key>Connections</key> - </entry> - <entry> - <key>Object</key> - </entry> - <entry> - <key>Attributes</key> - </entry> - <entry> - <key>Facebook</key> - </entry> - <entry> - <key>Creation date</key> - </entry> - <entry> - <key>Maindocuments</key> - </entry> - <entry> - <key>Receipt</key> - </entry> - <entry> - <key>Receipt number</key> - </entry> - <entry> - <key>Year</key> - </entry> - <entry> - <key>New receipt version</key> - </entry> - <entry> - <key>Orderitems</key> - </entry> - <entry> - <key>Sent receipts</key> - </entry> - <entry> - <key>Copy receipt</key> - </entry> - <entry> - <key>Orderitem</key> - </entry> - <entry> - <key>The order number already exists!</key> - </entry> - <entry> - <key>New activity</key> - </entry> - <entry> - <key>Turnover</key> - </entry> - <entry> - <key>Sent offers</key> - </entry> - <entry> - <key>Show all activities</key> - </entry> - <entry> - <key>Offers</key> - </entry> - <entry> - <key>Show all sent offers</key> - </entry> - <entry> - <key>Show my activities</key> - </entry> - <entry> - <key>Show all receipts</key> - </entry> - <entry> - <key>Receipts</key> - </entry> - <entry> - <key>My Activities</key> - </entry> - <entry> - <key>Show all offers</key> - </entry> - <entry> - <key>Show all products</key> - </entry> - <entry> - <key>Show all Facebook posts of a user</key> - </entry> - <entry> - <key>Show all tweets of a user</key> - </entry> - <entry> - <key>Show all companies</key> - </entry> - <entry> - <key>Show all tweets of ADITO</key> - </entry> - <entry> - <key>Show all sent receipts</key> - </entry> - <entry> - <key>Products</key> - </entry> - <entry> - <key>Show all Facebook posts of ADITO</key> - </entry> - <entry> - <key>Companies</key> - </entry> - <entry> - <key>Show all contacts</key> - </entry> - <entry> - <key>Show open salesprojects</key> - </entry> - <entry> - <key>Show all contracts</key> - </entry> - <entry> - <key>Salesprojects</key> - </entry> - <entry> - <key>Show all salesprojects</key> - </entry> - <entry> - <key>Open salesprojects</key> - </entry> - <entry> - <key>July</key> - </entry> - <entry> - <key>ADITO Facebook Feed</key> - </entry> - <entry> - <key>ADITO Twitter Feed</key> - </entry> - <entry> - <key>June</key> - </entry> - <entry> - <key>October</key> - </entry> - <entry> - <key>Take price</key> - </entry> - <entry> - <key>Twitter Feed</key> - </entry> - <entry> - <key>November</key> - </entry> - <entry> - <key>December</key> - </entry> - <entry> - <key>May</key> - </entry> - <entry> - <key>April</key> - </entry> - <entry> - <key>January</key> - </entry> - <entry> - <key>March</key> - </entry> - <entry> - <key>September</key> - </entry> - <entry> - <key>August</key> - </entry> - <entry> - <key>Category</key> - </entry> - <entry> - <key>February</key> - </entry> - <entry> - <key>Abomodel</key> - </entry> - <entry> - <key>Confirmed</key> - </entry> - <entry> - <key>OutOfOffice</key> - </entry> - <entry> - <key>Articledescription</key> - </entry> - <entry> - <key>Articlenumber</key> - </entry> - <entry> - <key>Industry</key> - </entry> - <entry> - <key>Put Reciever Into To</key> - </entry> - <entry> - <key>Unitprice</key> - </entry> - <entry> - <key>Free</key> - </entry> - <entry> - <key>Total</key> - </entry> - <entry> - <key>yearly series not specified</key> - </entry> - <entry> - <key>no standard email office</key> - </entry> - <entry> - <key>Conditions of payment</key> - </entry> - <entry> - <key>Number</key> - </entry> - <entry> - <key>Amount</key> - </entry> - <entry> - <key>Deliveryspecification</key> - </entry> - <entry> - <key>Ignore daily series</key> - </entry> - <entry> - <key>Tentative</key> - </entry> - <entry> - <key>Ignore series</key> - </entry> - <entry> - <key>Plus Salestax</key> - </entry> - <entry> - <key>Choose address</key> - </entry> - <entry> - <key>Customer Base Sheet</key> - </entry> - <entry> - <key>{$TASK_STATUS}</key> - </entry> - <entry> - <key>Task</key> - </entry> - <entry> - <key>subject</key> - </entry> - <entry> - <key>{$TASK_REQUESTOR}</key> - </entry> - <entry> - <key>task number</key> - </entry> - <entry> - <key>{$TASK_EDITOR}</key> - </entry> - <entry> - <key>description</key> - </entry> - <entry> - <key>priority</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_HIGH}</key> - </entry> - <entry> - <key>Seite</key> - </entry> - <entry> - <key>Senden per E-Mail</key> - </entry> - <entry> - <key>Betreff</key> - </entry> - <entry> - <key>title</key> - </entry> - <entry> - <key>von</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_LOW}</key> - </entry> - <entry> - <key>Nur Eigene anzeigen</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NORMAL}</key> - </entry> - <entry> - <key>Beschreibung</key> - </entry> - <entry> - <key>Unit price</key> - </entry> - <entry> - <key>type</key> - </entry> - <entry> - <key>Benutzer</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NONE}</key> - </entry> - <entry> - <key>Termin</key> - </entry> - <entry> - <key>Vorschau</key> - </entry> - <entry> - <key>Angebot</key> - </entry> - <entry> - <key>details</key> - </entry> - <entry> - <key>Contact type</key> - </entry> - <entry> - <key>Communication data</key> - </entry> - <entry> - <key>Remark</key> - </entry> - <entry> - <key>Department</key> - </entry> - <entry> - <key>Tasks</key> - </entry> - <entry> - <key>Employee</key> - </entry> - <entry> - <key>${SALESPROJECT_MEMBER}</key> - </entry> - <entry> - <key>responsible</key> - </entry> - <entry> - <key>Kundenstammblatt</key> - </entry> - <entry> - <key>Person</key> - </entry> - <entry> - <key>Detail</key> - </entry> - <entry> - <key>Relations</key> - </entry> - <entry> - <key>${FORECAST_ENGLISH}</key> - </entry> - <entry> - <key>Usage</key> - </entry> - <entry> - <key>Maximal Count</key> - </entry> - <entry> - <key>Minimal Count</key> - </entry> - <entry> - <key>${ADDRESS_STATE}</key> - </entry> - <entry> - <key>Title (original language)</key> - </entry> - <entry> - <key>Key</key> - </entry> - <entry> - <key>Attribute</key> - </entry> - <entry> - <key>Container</key> - </entry> - <entry> - <key>Administration</key> - </entry> - <entry> - <key>Keyword</key> - </entry> - <entry> - <key>Sorting</key> - </entry> - <entry> - <key>jdito</key> - </entry> - <entry> - <key>Time expenses</key> - </entry> - <entry> - <key>Context id</key> - </entry> - <entry> - <key>Context name</key> - </entry> - <entry> - <key>Cambodia</key> - </entry> - <entry> - <key>Resigned</key> - </entry> - <entry> - <key>Customer</key> - </entry> - <entry> - <key>Outgoing</key> - </entry> - <entry> - <key>Paraguay</key> - </entry> - <entry> - <key>Solomon Islands</key> - </entry> - <entry> - <key>Montserrat</key> - </entry> - <entry> - <key>Guadeloupe</key> - </entry> - <entry> - <key>Product_technic</key> - </entry> - <entry> - <key>Moldova (Republic of)</key> - </entry> - <entry> - <key>Seychelles</key> - </entry> - <entry> - <key>Canadian dollar</key> - </entry> - <entry> - <key>Bahrain</key> - </entry> - <entry> - <key>Comoros</key> - </entry> - <entry> - <key>Faroe Islands</key> - </entry> - <entry> - <key>Finland</key> - </entry> - <entry> - <key>Project_duration</key> - </entry> - <entry> - <key>Company_internationality</key> - </entry> - <entry> - <key>Eritrea</key> - </entry> - <entry> - <key>Puerto Rico</key> - </entry> - <entry> - <key>Viet Nam</key> - </entry> - <entry> - <key>Libya</key> - </entry> - <entry> - <key>French</key> - </entry> - <entry> - <key>Cocos (Keeling) Islands</key> - </entry> - <entry> - <key>Saint Helena, Ascension and Tristan da Cunha</key> - </entry> - <entry> - <key>Liechtenstein</key> - </entry> - <entry> - <key>Product_functionality</key> - </entry> - <entry> - <key>Bulgaria</key> - </entry> - <entry> - <key>Jordan</key> - </entry> - <entry> - <key>Côte d'Ivoire</key> - </entry> - <entry> - <key>United Arab Emirates</key> - </entry> - <entry> - <key>Kenya</key> - </entry> - <entry> - <key>None, individual count</key> - </entry> - <entry> - <key>French Polynesia</key> - </entry> - <entry> - <key>Djibouti</key> - </entry> - <entry> - <key>Cuba</key> - </entry> - <entry> - <key>Saint Lucia</key> - </entry> - <entry> - <key>Mayotte</key> - </entry> - <entry> - <key>Israel</key> - </entry> - <entry> - <key>San Marino</key> - </entry> - <entry> - <key>Tajikistan</key> - </entry> - <entry> - <key>Warehouse 2</key> - </entry> - <entry> - <key>Warehouse 1</key> - </entry> - <entry> - <key>Gibraltar</key> - </entry> - <entry> - <key>Warehouse 3</key> - </entry> - <entry> - <key>Cyprus</key> - </entry> - <entry> - <key>Semiannually</key> - </entry> - <entry> - <key>Northern Mariana Islands</key> - </entry> - <entry> - <key>Malaysia</key> - </entry> - <entry> - <key>Armenia</key> - </entry> - <entry> - <key>Brazil</key> - </entry> - <entry> - <key>Turks and Caicos Islands</key> - </entry> - <entry> - <key>Cabo Verde</key> - </entry> - <entry> - <key>Ecuador</key> - </entry> - <entry> - <key>Iran (Islamic Republic of)</key> - </entry> - <entry> - <key>Decision maker</key> - </entry> - <entry> - <key>Lao People's Democratic Republic</key> - </entry> - <entry> - <key>Maintenance contract</key> - </entry> - <entry> - <key>United States Minor Outlying Islands</key> - </entry> - <entry> - <key>Italy</key> - </entry> - <entry> - <key>${ORGTYPE_OTHER}</key> - </entry> - <entry> - <key>Haiti</key> - </entry> - <entry> - <key>Afghanistan</key> - </entry> - <entry> - <key>Russian Federation</key> - </entry> - <entry> - <key>waiting</key> - </entry> - <entry> - <key>American Samoa</key> - </entry> - <entry> - <key>Korea (Democratic People's Republic of)</key> - </entry> - <entry> - <key>United States dollar</key> - </entry> - <entry> - <key>Kyrgyzstan</key> - </entry> - <entry> - <key>Togo</key> - </entry> - <entry> - <key>Other_existing Customer</key> - </entry> - <entry> - <key>Uzbekistan</key> - </entry> - <entry> - <key>Dominica</key> - </entry> - <entry> - <key>Benin</key> - </entry> - <entry> - <key>Liter</key> - </entry> - <entry> - <key>Virgin Islands (British)</key> - </entry> - <entry> - <key>Sudan</key> - </entry> - <entry> - <key>Portugal</key> - </entry> - <entry> - <key>Grenada</key> - </entry> - <entry> - <key>Latvia</key> - </entry> - <entry> - <key>Mongolia</key> - </entry> - <entry> - <key>Morocco</key> - </entry> - <entry> - <key>Guatemala</key> - </entry> - <entry> - <key>Pieces</key> - </entry> - <entry> - <key>Heard Island and McDonald Islands</key> - </entry> - <entry> - <key>Incoming</key> - </entry> - <entry> - <key>Ghana</key> - </entry> - <entry> - <key>Holy See</key> - </entry> - <entry> - <key>India</key> - </entry> - <entry> - <key>Canada</key> - </entry> - <entry> - <key>Maldives</key> - </entry> - <entry> - <key>Service contract</key> - </entry> - <entry> - <key>Taiwan</key> - </entry> - <entry> - <key>Central African Republic</key> - </entry> - <entry> - <key>Fiji</key> - </entry> - <entry> - <key>Guinea</key> - </entry> - <entry> - <key>Somalia</key> - </entry> - <entry> - <key>Sao Tome and Principe</key> - </entry> - <entry> - <key>United Kingdom of Great Britain and Northern Ireland</key> - </entry> - <entry> - <key>Equatorial Guinea</key> - </entry> - <entry> - <key>Kiribati</key> - </entry> - <entry> - <key>Costa Rica</key> - </entry> - <entry> - <key>Supplier</key> - </entry> - <entry> - <key>Nigeria</key> - </entry> - <entry> - <key>Syrian Arab Republic</key> - </entry> - <entry> - <key>Timor-Leste</key> - </entry> - <entry> - <key>Product_mobile use</key> - </entry> - <entry> - <key>Samoa</key> - </entry> - <entry> - <key>Spain</key> - </entry> - <entry> - <key>Palau</key> - </entry> - <entry> - <key>Prospect</key> - </entry> - <entry> - <key>Estonia</key> - </entry> - <entry> - <key>Not signed yet</key> - </entry> - <entry> - <key>Niue</key> - </entry> - <entry> - <key>Mozambique</key> - </entry> - <entry> - <key>El Salvador</key> - </entry> - <entry> - <key>Guam</key> - </entry> - <entry> - <key>Lesotho</key> - </entry> - <entry> - <key>Tonga</key> - </entry> - <entry> - <key>Western Sahara</key> - </entry> - <entry> - <key>new</key> - </entry> - <entry> - <key>Adviser</key> - </entry> - <entry> - <key>Company_size</key> - </entry> - <entry> - <key>Republic of Kosovo</key> - </entry> - <entry> - <key>South Sudan</key> - </entry> - <entry> - <key>Mauritius</key> - </entry> - <entry> - <key>Bouvet Island</key> - </entry> - <entry> - <key>Bolivia (Plurinational State of)</key> - </entry> - <entry> - <key>Norfolk Island</key> - </entry> - <entry> - <key>Sint Maarten (Dutch part)</key> - </entry> - <entry> - <key>Micronesia (Federated States of)</key> - </entry> - <entry> - <key>Product_industry knowhow</key> - </entry> - <entry> - <key>United States of America</key> - </entry> - <entry> - <key>In review</key> - </entry> - <entry> - <key>Address purchase</key> - </entry> - <entry> - <key>Malta</key> - </entry> - <entry> - <key>Project_volume</key> - </entry> - <entry> - <key>Ireland</key> - </entry> - <entry> - <key>Inactive</key> - </entry> - <entry> - <key>France</key> - </entry> - <entry> - <key>Lithuania</key> - </entry> - <entry> - <key>Korea (Republic of)</key> - </entry> - <entry> - <key>${PRICELIST_SERVICE}</key> - </entry> - <entry> - <key>English</key> - </entry> - <entry> - <key>Nicaragua</key> - </entry> - <entry> - <key>Macao</key> - </entry> - <entry> - <key>Mexico</key> - </entry> - <entry> - <key>Uganda</key> - </entry> - <entry> - <key>Suriname</key> - </entry> - <entry> - <key>Greenland</key> - </entry> - <entry> - <key>Papua New Guinea</key> - </entry> - <entry> - <key>Kazakhstan</key> - </entry> - <entry> - <key>Åland Islands</key> - </entry> - <entry> - <key>Bahamas</key> - </entry> - <entry> - <key>Mali</key> - </entry> - <entry> - <key>Marshall Islands</key> - </entry> - <entry> - <key>Panama</key> - </entry> - <entry> - <key>Bonaire, Sint Eustatius and Saba</key> - </entry> - <entry> - <key>Tanzania, United Republic of</key> - </entry> - <entry> - <key>Argentina</key> - </entry> - <entry> - <key>Belize</key> - </entry> - <entry> - <key>Zambia</key> - </entry> - <entry> - <key>Congo</key> - </entry> - <entry> - <key>Guinea-Bissau</key> - </entry> - <entry> - <key>Namibia</key> - </entry> - <entry> - <key>External sales manager</key> - </entry> - <entry> - <key>Georgia</key> - </entry> - <entry> - <key>Saint Kitts and Nevis</key> - </entry> - <entry> - <key>Yemen</key> - </entry> - <entry> - <key>Aruba</key> - </entry> - <entry> - <key>Madagascar</key> - </entry> - <entry> - <key>Valid, unlimited</key> - </entry> - <entry> - <key>Svalbard and Jan Mayen</key> - </entry> - <entry> - <key>South Georgia and the South Sandwich Islands</key> - </entry> - <entry> - <key>Sweden</key> - </entry> - <entry> - <key>Malawi</key> - </entry> - <entry> - <key>Andorra</key> - </entry> - <entry> - <key>Poland</key> - </entry> - <entry> - <key>Tunisia</key> - </entry> - <entry> - <key>Tuvalu</key> - </entry> - <entry> - <key>Lebanon</key> - </entry> - <entry> - <key>Azerbaijan</key> - </entry> - <entry> - <key>Czech Republic</key> - </entry> - <entry> - <key>Mauritania</key> - </entry> - <entry> - <key>Guernsey</key> - </entry> - <entry> - <key>Kgs</key> - </entry> - <entry> - <key>Australia</key> - </entry> - <entry> - <key>Myanmar</key> - </entry> - <entry> - <key>Cameroon</key> - </entry> - <entry> - <key>Iceland</key> - </entry> - <entry> - <key>Oman</key> - </entry> - <entry> - <key>Gabon</key> - </entry> - <entry> - <key>Luxembourg</key> - </entry> - <entry> - <key>Algeria</key> - </entry> - <entry> - <key>Jersey</key> - </entry> - <entry> - <key>Slovenia</key> - </entry> - <entry> - <key>Antigua and Barbuda</key> - </entry> - <entry> - <key>Annually</key> - </entry> - <entry> - <key>Colombia</key> - </entry> - <entry> - <key>Project_reference</key> - </entry> - <entry> - <key>Vanuatu</key> - </entry> - <entry> - <key>Valid, limited</key> - </entry> - <entry> - <key>Honduras</key> - </entry> - <entry> - <key>Antarctica</key> - </entry> - <entry> - <key>Nauru</key> - </entry> - <entry> - <key>Burundi</key> - </entry> - <entry> - <key>Project manager</key> - </entry> - <entry> - <key>Singapore</key> - </entry> - <entry> - <key>French Guiana</key> - </entry> - <entry> - <key>Hours</key> - </entry> - <entry> - <key>Christmas Island</key> - </entry> - <entry> - <key>Netherlands</key> - </entry> - <entry> - <key>Product_flexibility</key> - </entry> - <entry> - <key>China</key> - </entry> - <entry> - <key>Martinique</key> - </entry> - <entry> - <key>Own website</key> - </entry> - <entry> - <key>Saint Pierre and Miquelon</key> - </entry> - <entry> - <key>Bhutan</key> - </entry> - <entry> - <key>Romania</key> - </entry> - <entry> - <key>Falkland Islands (Malvinas)</key> - </entry> - <entry> - <key>Philippines</key> - </entry> - <entry> - <key>Pitcairn</key> - </entry> - <entry> - <key>Zimbabwe</key> - </entry> - <entry> - <key>British Indian Ocean Territory</key> - </entry> - <entry> - <key>Montenegro</key> - </entry> - <entry> - <key>Quarterly</key> - </entry> - <entry> - <key>Indonesia</key> - </entry> - <entry> - <key>Angola</key> - </entry> - <entry> - <key>Internal</key> - </entry> - <entry> - <key>Key account</key> - </entry> - <entry> - <key>Brunei Darussalam</key> - </entry> - <entry> - <key>New Caledonia</key> - </entry> - <entry> - <key>Cayman Islands</key> - </entry> - <entry> - <key>Congo (Democratic Republic of the)</key> - </entry> - <entry> - <key>Greece</key> - </entry> - <entry> - <key>Guyana</key> - </entry> - <entry> - <key>Project assistant</key> - </entry> - <entry> - <key>Iraq</key> - </entry> - <entry> - <key>Chile</key> - </entry> - <entry> - <key>Nepal</key> - </entry> - <entry> - <key>${PRICELIST_DEFAULT}</key> - </entry> - <entry> - <key>Customer recommendation</key> - </entry> - <entry> - <key>Other_unknown</key> - </entry> - <entry> - <key>Isle of Man</key> - </entry> - <entry> - <key>Ukraine</key> - </entry> - <entry> - <key>Curaçao</key> - </entry> - <entry> - <key>Anguilla</key> - </entry> - <entry> - <key>Euro</key> - </entry> - <entry> - <key>Product_GUI</key> - </entry> - <entry> - <key>${GENDER_OTHER}</key> - </entry> - <entry> - <key>Turkey</key> - </entry> - <entry> - <key>Belgium</key> - </entry> - <entry> - <key>South Africa</key> - </entry> - <entry> - <key>Trinidad and Tobago</key> - </entry> - <entry> - <key>Bermuda</key> - </entry> - <entry> - <key>Jamaica</key> - </entry> - <entry> - <key>Peru</key> - </entry> - <entry> - <key>Turkmenistan</key> - </entry> - <entry> - <key>Venezuela (Bolivarian Republic of)</key> - </entry> - <entry> - <key>Tokelau</key> - </entry> - <entry> - <key>Hong Kong</key> - </entry> - <entry> - <key>Chad</key> - </entry> - <entry> - <key>German</key> - </entry> - <entry> - <key>Thailand</key> - </entry> - <entry> - <key>in process</key> - </entry> - <entry> - <key>Saint Martin (French part)</key> - </entry> - <entry> - <key>Kuwait</key> - </entry> - <entry> - <key>Palestine, State of</key> - </entry> - <entry> - <key>Croatia</key> - </entry> - <entry> - <key>Cook Islands</key> - </entry> - <entry> - <key>Fair</key> - </entry> - <entry> - <key>Sri Lanka</key> - </entry> - <entry> - <key>Uruguay</key> - </entry> - <entry> - <key>Liberia</key> - </entry> - <entry> - <key>Burkina Faso</key> - </entry> - <entry> - <key>Swiss franc</key> - </entry> - <entry> - <key>Swaziland</key> - </entry> - <entry> - <key>ended</key> - </entry> - <entry> - <key>Saint Barthélemy</key> - </entry> - <entry> - <key>Wallis and Futuna</key> - </entry> - <entry> - <key>Company_industry knowhow</key> - </entry> - <entry> - <key>Monaco</key> - </entry> - <entry> - <key>Spanish</key> - </entry> - <entry> - <key>Hungary</key> - </entry> - <entry> - <key>Réunion</key> - </entry> - <entry> - <key>Japan</key> - </entry> - <entry> - <key>Belarus</key> - </entry> - <entry> - <key>Albania</key> - </entry> - <entry> - <key>Internal sales manager</key> - </entry> - <entry> - <key>Virgin Islands (U.S.)</key> - </entry> - <entry> - <key>New Zealand</key> - </entry> - <entry> - <key>Senegal</key> - </entry> - <entry> - <key>Ethiopia</key> - </entry> - <entry> - <key>Macedonia (the former Yugoslav Republic of)</key> - </entry> - <entry> - <key>Egypt</key> - </entry> - <entry> - <key>Sierra Leone</key> - </entry> - <entry> - <key>Saudi Arabia</key> - </entry> - <entry> - <key>Pakistan</key> - </entry> - <entry> - <key>Gambia</key> - </entry> - <entry> - <key>Qatar</key> - </entry> - <entry> - <key>Slovakia</key> - </entry> - <entry> - <key>Serbia</key> - </entry> - <entry> - <key>Bosnia and Herzegovina</key> - </entry> - <entry> - <key>Framework contract</key> - </entry> - <entry> - <key>Niger</key> - </entry> - <entry> - <key>Rwanda</key> - </entry> - <entry> - <key>French Southern Territories</key> - </entry> - <entry> - <key>Bangladesh</key> - </entry> - <entry> - <key>Barbados</key> - </entry> - <entry> - <key>Botswana</key> - </entry> - <entry> - <key>Saint Vincent and the Grenadines</key> - </entry> - <entry> - <key>Denmark</key> - </entry> - <entry> - <key>Dominican Republic</key> - </entry> - <entry> - <key>Cover letter</key> - </entry> - <entry> - <key>Create receipt</key> - </entry> - <entry> - <key>New time tracking</key> - </entry> - <entry> - <key>MAL</key> - </entry> - <entry> - <key>SQO</key> - </entry> - <entry> - <key>NQC</key> - </entry> - <entry> - <key>MQL</key> - </entry> - <entry> - <key>SAL</key> - </entry> - <entry> - <key>Checkbox</key> - </entry> - <entry> - <key>Numeric value</key> - </entry> - <entry> - <key>decline</key> - </entry> - <entry> - <key>Text</key> - </entry> - <entry> - <key>Group</key> - </entry> - <entry> - <key>Combobox</key> - </entry> - <entry> - <key>tentative</key> - </entry> - <entry> - <key>${NUMBER}</key> - </entry> - <entry> - <key>Name \"%0\" already used for container \"%1\"</key> - </entry> - <entry> - <key>CHAR_VALUE</key> - </entry> - <entry> - <key>Keyword Attribute</key> - </entry> - <entry> - <key>in</key> - </entry> - <entry> - <key>Keyword Attribute Values</key> - </entry> - <entry> - <key>Boolean value</key> - </entry> - <entry> - <key>accept</key> - </entry> - <entry> - <key>The ZIP code does not match the format of the country.</key> - </entry> - <entry> - <key>String value</key> - </entry> - <entry> - <key>The code number is not a valid number.</key> - </entry> - <entry> - <key>${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0</key> - </entry> - <entry> - <key>${PRODUCT_LIB_NO_PRODUCT_ID} function: %0</key> - </entry> - <entry> - <key>Object type</key> - </entry> - <entry> - <key>Print Offer</key> - </entry> - <entry> - <key>Touchpoints</key> - </entry> - <entry> - <key>Days inactive</key> - </entry> - <entry> - <key>Touchpoint</key> - </entry> - <entry> - <key>Combobox Value</key> - </entry> - <entry> - <key>relations</key> - </entry> - <entry> - <key>Time</key> - </entry> - <entry> - <key>New task</key> - </entry> - <entry> - <key>the specified key has to be unique for that container but does already exist</key> - </entry> - <entry> - <key>Relationtype</key> - </entry> - <entry> - <key>Tree</key> - </entry> - <entry> - <key>100%</key> - </entry> - <entry> - <key>Mobil</key> - </entry> - <entry> - <key>25%</key> - </entry> - <entry> - <key>50%</key> - </entry> - <entry> - <key>75%</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword container \"%1\"</key> - </entry> - <entry> - <key>competitor</key> - </entry> - <entry> - <key>0%</key> - </entry> - <entry> - <key>acquainted with</key> - </entry> - <entry> - <key>collaboration with</key> - </entry> - <entry> - <key>parent company</key> - </entry> - <entry> - <key>society</key> - </entry> - <entry> - <key>ankle of</key> - </entry> - <entry> - <key>solicits</key> - </entry> - <entry> - <key>child of</key> - </entry> - <entry> - <key>supervisor of</key> - </entry> - <entry> - <key>reports to</key> - </entry> - <entry> - <key>subsidiary</key> - </entry> - <entry> - <key>supported by</key> - </entry> - <entry> - <key>member</key> - </entry> - <entry> - <key>promotion target of</key> - </entry> - <entry> - <key>supports</key> - </entry> - <entry> - <key>parent of</key> - </entry> - <entry> - <key>grandparents of</key> - </entry> - <entry> - <key>Entrydate (Month)</key> - </entry> - <entry> - <key>Entrydate (Day)</key> - </entry> - <entry> - <key>My Dashboard</key> - </entry> - <entry> - <key>Salesdashboard</key> - </entry> - <entry> - <key>Discount %</key> - </entry> - <entry> - <key>Memo</key> - </entry> - <entry> - <key>Function</key> - </entry> - <entry> - <key>Relational</key> - </entry> - <entry> - <key>Only numbers are allowed.</key> - </entry> - <entry> - <key>Superordinate Attribute</key> - </entry> - <entry> - <key>${SALESPROJECT_OFFER}</key> - </entry> - <entry> - <key>${SALESPROJECT_NEGOTIATION}</key> - </entry> - <entry> - <key>Filesize</key> - </entry> - <entry> - <key>Filename</key> - </entry> - <entry> - <key>Filetype</key> - </entry> - <entry> - <key>Special price list</key> - </entry> - <entry> - <key>New attribute</key> - </entry> - <entry> - <key>MQC</key> - </entry> - <entry> - <key>History</key> - </entry> - <entry> - <key>Progress</key> - </entry> - <entry> - <key>Module</key> - </entry> - <entry> - <key>7 days net</key> - <value></value> - </entry> - <entry> - <key>carriage free</key> - </entry> - <entry> - <key>8 days 2% discount, 30 days net</key> - <value></value> - </entry> - <entry> - <key>CIF</key> - </entry> - <entry> - <key>ex works</key> - </entry> - <entry> - <key>30 days net</key> - <value></value> - </entry> - <entry> - <key>Directly responsible:</key> - </entry> - <entry> - <key>Payment term</key> - </entry> - <entry> - <key>Contactrole</key> - </entry> - <entry> - <key>New appointment</key> - </entry> - <entry> - <key>&Aufg / Term (%0/%1)</key> - </entry> - <entry> - <key>Verschieben auf Datum?</key> - </entry> - <entry> - <key>niedrig</key> - </entry> - <entry> - <key>Gebucht</key> - </entry> - <entry> - <key>Other Contactroles</key> - </entry> - <entry> - <key>Bitte Datumseingabe prüfen!</key> - </entry> - <entry> - <key>In Bearbeitung</key> - </entry> - <entry> - <key>OK</key> - </entry> - <entry> - <key>Nicht begonnen</key> - </entry> - <entry> - <key>Bitte Filterbedingungen setzen</key> - </entry> - <entry> - <key>Bestätigt</key> - </entry> - <entry> - <key>Vorläufig</key> - </entry> - <entry> - <key>keine</key> - </entry> - <entry> - <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key> - </entry> - <entry> - <key>Aufgaben von</key> - </entry> - <entry> - <key>&Aufgaben (%0)</key> - </entry> - <entry> - <key>erledigt / zurückgestellt</key> - </entry> - <entry> - <key>hoch</key> - </entry> - <entry> - <key>Zurückgestellt</key> - </entry> - <entry> - <key>Erledigt</key> - </entry> - <entry> - <key>Abgesagt</key> - </entry> - <entry> - <key>Außer Haus</key> - </entry> - <entry> - <key>Abbrechen</key> - </entry> - <entry> - <key>Benutzer auswählen</key> - </entry> - <entry> - <key>delegiert</key> - </entry> - <entry> - <key>frei</key> - </entry> - <entry> - <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key> - </entry> - <entry> - <key>normal</key> - </entry> - <entry> - <key>Termine von</key> - </entry> - <entry> - <key>nur Verschiebung in die Zukunft erlaubt!</key> - </entry> - <entry> - <key>Kategorie</key> - </entry> - <entry> - <key>Product content</key> - </entry> - <entry> - <key>Know How</key> - </entry> - <entry> - <key>Personal appearance</key> - </entry> - <entry> - <key>Market situation</key> - </entry> - <entry> - <key>Liquidity</key> - </entry> - <entry> - <key>Price policy</key> - </entry> - <entry> - <key>Approved</key> - </entry> - <entry> - <key>Completed</key> - </entry> - <entry> - <key>In planning</key> - </entry> - <entry> - <key>Campaign Step</key> - </entry> - <entry> - <key>360 Degree</key> - </entry> - <entry> - <key>Campaigns</key> - </entry> - <entry> - <key>Campaign</key> - </entry> - <entry> - <key>Auswertung</key> - </entry> - <entry> - <key>VAT in %</key> - </entry> - <entry> - <key>Kampagnenschritte</key> - </entry> - <entry> - <key>Marketing</key> - </entry> - <entry> - <key>Neuer Kampagnenschritt</key> - </entry> - <entry> - <key>Neue Kampagne</key> - </entry> - <entry> - <key>${QUANTITY_LOWER_THAN_1}</key> - </entry> - <entry> - <key>This combination of person and organisation does already exist and can not be created once more.</key> - </entry> - <entry> - <key>New module</key> - </entry> - <entry> - <key>Time in minutes</key> - </entry> - <entry> - <key>Sales manager</key> - </entry> - <entry> - <key>IT</key> - </entry> - <entry> - <key>Administrator</key> - </entry> - <entry> - <key>Managing director</key> - </entry> - <entry> - <key>Production manager</key> - </entry> - <entry> - <key>Production</key> - </entry> - <entry> - <key>CEO</key> - </entry> - <entry> - <key>Purchasing manager</key> - </entry> - <entry> - <key>Marketing manager</key> - </entry> - <entry> - <key>IT manager</key> - </entry> - <entry> - <key>CSO</key> - </entry> - <entry> - <key>Executive board</key> - </entry> - <entry> - <key>Supervisory board</key> - </entry> - <entry> - <key>Management</key> - </entry> - <entry> - <key>date of birth must not be in the future</key> - </entry> - <entry> - <key>Manufacturer</key> - </entry> - <entry> - <key>Competitor</key> - </entry> - <entry> - <key>Partner</key> - </entry> - <entry> - <key>True</key> - </entry> - <entry> - <key>False</key> - </entry> - <entry> - <key>false</key> - </entry> - <entry> - <key>true</key> - </entry> - <entry> - <key>Protected</key> - </entry> - <entry> - <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key> - </entry> - <entry> - <key>Password</key> - </entry> - <entry> - <key>Confirm password</key> - </entry> - <entry> - <key>Set password</key> - </entry> - <entry> - <key>Email</key> - </entry> - <entry> - <key>{$OBJECTLINK_TYPE}</key> - </entry> - <entry> - <key>{$OBJECTLINK_OBJECT}</key> - </entry> - <entry> - <key>Roles</key> - </entry> - <entry> - <key>Password and confirmation must be the same!</key> - </entry> - <entry> - <key>Begin</key> - </entry> - <entry> - <key>Maturity</key> - </entry> - <entry> - <key>Username</key> - </entry> - <entry> - <key>The person is already associated with another employee!</key> - </entry> - <entry> - <key>Username already exists!</key> - </entry> - <entry> - <key>This private person doeas already exist and can not be created once more.</key> - </entry> - <entry> - <key>Everyone</key> - </entry> - <entry> - <key>Project</key> - </entry> - <entry> - <key>Project management</key> - </entry> - <entry> - <key>Office staff</key> - </entry> - <entry> - <key>Field staff</key> - </entry> - <entry> - <key>Resource</key> - </entry> - <entry> - <key>Human Resources</key> - </entry> - <entry> - <key>Email must be unique!</key> - </entry> - <entry> - <key>Project Management</key> - </entry> - <entry> - <key>Support</key> - </entry> - <entry> - <key>{$ADDRESS_IDENTIFIER}</key> - </entry> - <entry> - <key>Salesproject phases</key> - </entry> - <entry> - <key>Add to Campaign</key> - </entry> - <entry> - <key>Max participants</key> - </entry> - <entry> - <key>Participants</key> - </entry> - <entry> - <key>Add the selection to a campaign</key> - </entry> - <entry> - <key>participants will be added to the selected campaign step</key> - </entry> - <entry> - <key>Add participants to Campaign</key> - </entry> - <entry> - <key>Key figures</key> - </entry> - <entry> - <key>Delete all usage</key> - </entry> - <entry> - <key>Deleted all usages of \"%0\".</key> - </entry> - <entry> - <key>Successful</key> - </entry> - <entry> - <key>Relation type 1</key> - </entry> - <entry> - <key>Relation type 2</key> - </entry> - <entry> - <key>Relation type</key> - </entry> - <entry> - <key>Context 1</key> - </entry> - <entry> - <key>Context 2</key> - </entry> - <entry> - <key>Hierarchy</key> - </entry> - <entry> - <key>Object relation</key> - </entry> - <entry> - <key>Count</key> - </entry> - <entry> - <key>Picture</key> - </entry> - <entry> - <key>Chart</key> - </entry> - <entry> - <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key> - </entry> - <entry> - <key>Enable relation type 2</key> - </entry> - <entry> - <key>Salesproject Analyses</key> - </entry> - <entry> - <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> - </entry> - <entry> - <key>Days count</key> - </entry> - <entry> - <key>Clear forecast and set state to '%0'?</key> - </entry> - <entry> - <key>Would you really like to clear the forecast and set the state to '%0'?</key> - </entry> - <entry> - <key>This cannot be undone!</key> - </entry> - <entry> - <key>Campaign status</key> - </entry> - <entry> - <key>Set campaign step</key> - </entry> - <entry> - <key>Add participant to Campaign</key> - </entry> - <entry> - <key>Steps</key> - </entry> - <entry> - <key>Added</key> - </entry> - <entry> - <key>Current participants</key> - </entry> - <entry> - <key>Overdue tasks</key> - </entry> - <entry> - <key>[%0]the tableName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 has to be a string or array but it is %2</key> - </entry> - <entry> - <key>[%0]has now an incorrect length; estimated 2 elements but got %1</key> - </entry> - <entry> - <key>[%0]the columnName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 is an object but seems not to be a valid array or array-like</key> - </entry> - <entry> - <key>Responsible</key> - </entry> - <entry> - <key>New tasks</key> - </entry> - <entry> - <key>Imminent appointments for today</key> - </entry> - <entry> - <key>Analyses</key> - </entry> - <entry> - <key>To-Do</key> - </entry> - <entry> - <key>Calendar</key> - </entry> - <entry> - <key>${SQL_LIB_UNDEFINED_VALUE} field: %0</key> - </entry> - <entry> - <key>My tasks</key> - </entry> - <entry> - <key>${ATTRIBUTE_VOID}</key> - </entry> - <entry> - <key>Kampagnenzeitraum</key> - </entry> - <entry> - <key>Hauptverantw.</key> - </entry> - <entry> - <key>New campaign step</key> - </entry> - <entry> - <key>Cost</key> - </entry> - <entry> - <key>file '%0' cannot be read</key> - </entry> - <entry> - <key>Importer</key> - </entry> - <entry> - <key>Participant</key> - </entry> - <entry> - <key>Printing costs</key> - </entry> - <entry> - <key>Shipping costs</key> - </entry> - <entry> - <key>yyyy-MM-dd HH:mm:ss</key> - </entry> - <entry> - <key>file '%0' does not exist or you have got no permission on this file</key> - </entry> - <entry> - <key>Zip</key> - </entry> - <entry> - <key>Layout costs</key> - </entry> - <entry> - <key>${WEBSERVICE_ERROR} url:%0 status:%1</key> - </entry> - <entry> - <key>Step</key> - </entry> - <entry> - <key>Fix cost</key> - </entry> - <entry> - <key>per</key> - </entry> - <entry> - <key>The minimal count can't be larger than the maximal count!</key> - </entry> - <entry> - <key>The max participants count has to be equal or greater than the count of the current participants!</key> - </entry> - <entry> - <key>Variable costs</key> - </entry> - <entry> - <key>Id value</key> - </entry> - <entry> - <key>Order executed</key> - </entry> - <entry> - <key>Liquibase</key> - </entry> - <entry> - <key>Number value</key> - </entry> - <entry> - <key>Author</key> - </entry> - <entry> - <key>Position Id</key> - </entry> - <entry> - <key>ISO3</key> - </entry> - <entry> - <key>ISO2</key> - </entry> - <entry> - <key>Communication Id</key> - </entry> - <entry> - <key>Attribute Id</key> - </entry> - <entry> - <key>Modification user</key> - </entry> - <entry> - <key>Headline</key> - </entry> - <entry> - <key>Salesorder Id</key> - </entry> - <entry> - <key>Salesproject milestone Id</key> - </entry> - <entry> - <key>Appointment Id</key> - </entry> - <entry> - <key>Locked</key> - </entry> - <entry> - <key>Timetracking Id</key> - </entry> - <entry> - <key>Exec type</key> - </entry> - <entry> - <key>Date value</key> - </entry> - <entry> - <key>NUMBER VALUE</key> - </entry> - <entry> - <key>Salesproject forecast Id</key> - </entry> - <entry> - <key>ID</key> - </entry> - <entry> - <key>Keyword attribute relation Id</key> - </entry> - <entry> - <key>Minimal count</key> - </entry> - <entry> - <key>Id</key> - </entry> - <entry> - <key>Object 1 row Id</key> - </entry> - <entry> - <key>Side</key> - </entry> - <entry> - <key>Salesproject Id</key> - </entry> - <entry> - <key>Product Id</key> - </entry> - <entry> - <key>Sort</key> - </entry> - <entry> - <key>Relation Title</key> - </entry> - <entry> - <key>%0 \"%1\"</key> - </entry> - <entry> - <key>Maximal count</key> - </entry> - <entry> - <key>Data executed</key> - </entry> - <entry> - <key>Indexsearch</key> - </entry> - <entry> - <key>Appointment link Id</key> - </entry> - <entry> - <key>Relation Type</key> - </entry> - <entry> - <key>Salesproject member Id</key> - </entry> - <entry> - <key>Salesproject source Id</key> - </entry> - <entry> - <key>Item sort</key> - </entry> - <entry> - <key>%0 modified.</key> - </entry> - <entry> - <key>Contract Id</key> - </entry> - <entry> - <key>Int value</key> - </entry> - <entry> - <key>Object 2 row Id</key> - </entry> - <entry> - <key>Source tablename Id</key> - </entry> - <entry> - <key>Source tablename</key> - </entry> - <entry> - <key>Contact Id</key> - </entry> - <entry> - <key>Sales area</key> - </entry> - <entry> - <key>Parent Id</key> - </entry> - <entry> - <key>Task link Id</key> - </entry> - <entry> - <key>BOOL VALUE</key> - </entry> - <entry> - <key>Keyword attribute Id</key> - </entry> - <entry> - <key>Log type</key> - </entry> - <entry> - <key>Object row Id</key> - </entry> - <entry> - <key>Labels</key> - </entry> - <entry> - <key>%0 deleted.</key> - </entry> - <entry> - <key>Salesproject competition Id</key> - </entry> - <entry> - <key>Activity Id</key> - </entry> - <entry> - <key>Person Id</key> - </entry> - <entry> - <key>Offer item Id</key> - </entry> - <entry> - <key>Offer Id</key> - </entry> - <entry> - <key>Name native</key> - </entry> - <entry> - <key>Flag</key> - </entry> - <entry> - <key>Address Id</key> - </entry> - <entry> - <key>Name latin</key> - </entry> - <entry> - <key>Destination Id</key> - </entry> - <entry> - <key>Sex</key> - </entry> - <entry> - <key>Product price Id</key> - </entry> - <entry> - <key>%0 added.</key> - </entry> - <entry> - <key>Object Relation Type</key> - </entry> - <entry> - <key>Entry date</key> - </entry> - <entry> - <key>Object relation type 2</key> - </entry> - <entry> - <key>Object relation type 1</key> - </entry> - <entry> - <key>Modification date</key> - </entry> - <entry> - <key>Object Type</key> - </entry> - <entry> - <key>%0 from \"%1\" to \"%2\"</key> - </entry> - <entry> - <key>MD5 Sum</key> - </entry> - <entry> - <key>Letter salutation</key> - </entry> - <entry> - <key>Lock granted</key> - </entry> - <entry> - <key>Required fields</key> - </entry> - <entry> - <key>Address addition</key> - </entry> - <entry> - <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> - </entry> - <entry> - <key>Attribute usage Id</key> - </entry> - <entry> - <key>LogHistory</key> - </entry> - <entry> - <key>Locked by</key> - </entry> - <entry> - <key>Desciption</key> - </entry> - <entry> - <key>Salutation Id</key> - </entry> - <entry> - <key>Comments</key> - </entry> - <entry> - <key>Task Id</key> - </entry> - <entry> - <key>Valid to</key> - </entry> - <entry> - <key>ZIP regex</key> - </entry> - <entry> - <key>Keyword entry Id</key> - </entry> - <entry> - <key>Stop costs</key> - </entry> - <entry> - <key>Contexts</key> - </entry> - <entry> - <key>Assigned to</key> - </entry> - <entry> - <key>%0 from \"%1\" to %2 \"%3\"</key> - </entry> - <entry> - <key>Date start</key> - </entry> - <entry> - <key>Deployment Id</key> - </entry> - <entry> - <key>Address format</key> - </entry> - <entry> - <key>Activity link Id</key> - </entry> - <entry> - <key>Date end</key> - </entry> - <entry> - <key>Creation user</key> - </entry> - <entry> - <key>Object Id</key> - </entry> - <entry> - <key>Is active</key> - </entry> - <entry> - <key>Product relationship</key> - </entry> - <entry> - <key>Salesorder item Id</key> - </entry> - <entry> - <key>Char value</key> - </entry> - <entry> - <key>Attribute relation Id</key> - </entry> - <entry> - <key>Tag</key> - </entry> - <entry> - <key>Title suffix</key> - </entry> - <entry> - <key>Step costs</key> - </entry> - <entry> - <key>Min. Stock</key> - </entry> - <entry> - <key>User</key> - </entry> - <entry> - <key>Stock Id</key> - </entry> - <entry> - <key>Tablename</key> - </entry> - <entry> - <key>CHAR VALUE</key> - </entry> - <entry> - <key>Parent context</key> - </entry> - <entry> - <key>Organisation Id</key> - </entry> - <entry> - <key>Tablename Id</key> - </entry> - <entry> - <key>Competitors</key> - </entry> - <entry> - <key>Notifications</key> - </entry> - <entry> - <key>Overview</key> - </entry> - <entry> - <key>Participated</key> - </entry> - <entry> - <key>Remaining Runtime</key> - </entry> - <entry> - <key>Document Template</key> - </entry> - <entry> - <key>Text Modular</key> - </entry> - <entry> - <key>Serial</key> - </entry> - <entry> - <key>Campaign Period</key> - </entry> - <entry> - <key>Single</key> - </entry> - <entry> - <key>Attachment</key> - </entry> - <entry> - <key>Attachments</key> - </entry> - <entry> - <key>Letter</key> - </entry> - <entry> - <key>Appointment</key> - </entry> - <entry> - <key>rebuild Index</key> - </entry> - <entry> - <key>Charts</key> - </entry> - <entry> - <key>Keywords</key> - </entry> - <entry> - <key>Days running</key> - </entry> - <entry> - <key>Logs</key> - </entry> - <entry> - <key>Mail</key> - </entry> - <entry> - <key>Phonecall</key> - </entry> - <entry> - <key>Chart 2</key> - </entry> - <entry> - <key>Log</key> - </entry> - <entry> - <key>Offer Header Text</key> - </entry> - <entry> - <key>Employees</key> - </entry> - <entry> - <key>Todo</key> - </entry> - <entry> - <key>Days remaining</key> - </entry> - <entry> - <key>Offer Footer Text</key> - </entry> - <entry> - <key>Date new</key> - </entry> - <entry> - <key>Date edit</key> - </entry> - <entry> - <key>Keyword Attributes</key> - </entry> - <entry> - <key>Student/Internship</key> - </entry> - <entry> - <key>Food</key> - </entry> - <entry> - <key>200 to 349T</key> - </entry> - <entry> - <key>Within 6 months</key> - </entry> - <entry> - <key>No project planned</key> - </entry> - <entry> - <key>Logistics</key> - </entry> - <entry> - <key>Skilled workers</key> - </entry> - <entry> - <key>Purchasing</key> - </entry> - <entry> - <key>Rate</key> - </entry> - <entry> - <key>Choice</key> - </entry> - <entry> - <key>points</key> - </entry> - <entry> - <key>Education</key> - </entry> - <entry> - <key>Public</key> - </entry> - <entry> - <key>Building and construction suppliers</key> - </entry> - <entry> - <key>0 to 49</key> - </entry> - <entry> - <key>0 to 49T</key> - </entry> - <entry> - <key>CRM Manager</key> - </entry> - <entry> - <key>50 to 99T</key> - </entry> - <entry> - <key>Search</key> - </entry> - <entry> - <key>Counsellor</key> - </entry> - <entry> - <key>50 to 100</key> - </entry> - <entry> - <key>OnPremise</key> - </entry> - <entry> - <key>Head of IT</key> - </entry> - <entry> - <key>Electric</key> - </entry> - <entry> - <key>from 1,000</key> - </entry> - <entry> - <key>Publishing house</key> - </entry> - <entry> - <key>100 to 199T</key> - </entry> - <entry> - <key>101 to 250</key> - </entry> - <entry> - <key>Overarching</key> - </entry> - <entry> - <key>Energy</key> - </entry> - <entry> - <key>Machinery and equipment</key> - </entry> - <entry> - <key>Trade</key> - </entry> - <entry> - <key>Consultation</key> - </entry> - <entry> - <key>Cloud</key> - </entry> - <entry> - <key>No date yet</key> - </entry> - <entry> - <key>Classifications</key> - </entry> - <entry> - <key>Service Manager</key> - </entry> - <entry> - <key>Lifesience</key> - </entry> - <entry> - <key>Automotive</key> - </entry> - <entry> - <key>Lottery</key> - </entry> - <entry> - <key>from 350T</key> - </entry> - <entry> - <key>Management/Sales Manager</key> - </entry> - <entry> - <key>Environment</key> - </entry> - <entry> - <key>Within 12 months</key> - </entry> - <entry> - <key>Finance</key> - </entry> - <entry> - <key>ScoreProjectStart</key> - </entry> - <entry> - <key>ScoreStandard</key> - </entry> - <entry> - <key>ScoreCustomizing</key> - </entry> - <entry> - <key>ScoreDecisionPhase</key> - </entry> - <entry> - <key>ScoreUsers</key> - </entry> - <entry> - <key>ScoreBranch</key> - </entry> - <entry> - <key>ScorePosition</key> - </entry> - <entry> - <key>ScoreBudget</key> - </entry> - <entry> - <key>ScoreDepartment</key> - </entry> - <entry> - <key>ScoreCloud</key> - </entry> - <entry> - <key>ScoreBased</key> - </entry> - <entry> - <key>Score</key> - </entry> - <entry> - <key>Scoretype</key> - </entry> - <entry> - <key>archive</key> - </entry> - <entry> - <key>setUnread</key> - </entry> - <entry> - <key>Rating</key> - </entry> - <entry> - <key>setRead</key> - </entry> - <entry> - <key>Possible Values</key> - </entry> - <entry> - <key>251 to 1,000</key> - </entry> - <entry> - <key>Selection</key> - </entry> - <entry> - <key>Files</key> - </entry> - <entry> - <key>${COUNT_PREPOSITION_SINGLE}</key> - </entry> - <entry> - <key>Attribute \"%0\" has to be used at least %1.</key> - </entry> - <entry> - <key>${COUNT_PREPOSITION_MULTIPLE}</key> - </entry> - <entry> - <key>Attribute \"%0\" can't be used more than %1.</key> - </entry> - <entry> - <key>Recipient</key> - </entry> - <entry> - <key>Write email</key> - </entry> - <entry> - <key>Show tasks where I am editor</key> - </entry> - <entry> - <key>Entrydate must not be in the future</key> - </entry> - <entry> - <key>Delivery specification</key> - </entry> - <entry> - <key>Priority</key> - </entry> - <entry> - <key>Postcode</key> - </entry> - <entry> - <key>Main document</key> - </entry> - <entry> - <key>Delete</key> - </entry> - <entry> - <key>Street</key> - </entry> - <entry> - <key>Start</key> - </entry> - <entry> - <key>End</key> - </entry> - <entry> - <key>Condition</key> - </entry> - <entry> - <key>File</key> - </entry> - <entry> - <key> User</key> - </entry> - <entry> - <key>Edit</key> - </entry> - <entry> - <key>Condition Type</key> - </entry> - <entry> - <key>Access type</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>PermissionId</key> - </entry> - <entry> - <key>Entity</key> - </entry> - <entry> - <key>Sales Project</key> - </entry> - <entry> - <key>Field</key> - </entry> - <entry> - <key>Permission Detail</key> - </entry> - <entry> - <key>Entities</key> - </entry> - <entry> - <key>Read</key> - </entry> - <entry> - <key>Permission Set ID</key> - </entry> - <entry> - <key>Create</key> - </entry> - <entry> - <key>To buildingnumber</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>Action</key> - </entry> - <entry> - <key>View</key> - </entry> - <entry> - <key>From buildingnumber</key> - </entry> - <entry> - <key>Salutations</key> - </entry> - <entry> - <key>Paymentterm</key> - </entry> - <entry> - <key>New step</key> - </entry> - <entry> - <key>Runtime</key> - </entry> - <entry> - <key>Fix costs</key> - </entry> - <entry> - <key>Total costs</key> - </entry> - <entry> - <key>Per participant</key> - </entry> - <entry> - <key>Predecessor</key> - </entry> - <entry> - <key>Group name</key> - </entry> - <entry> - <key>Price Condition</key> - </entry> - <entry> - <key>Entität</key> - </entry> - <entry> - <key>beschränken</key> - </entry> - <entry> - <key>Feld</key> - </entry> - <entry> - <key>Possible Value</key> - </entry> - <entry> - <key>erlauben</key> - </entry> - <entry> - <key>Could not determine the current Classification type (usage).</key> - </entry> - <entry> - <key>Datensatz</key> - </entry> - <entry> - <key>The new Classification name already exists.</key> - </entry> - <entry> - <key>Campaign planning</key> - </entry> - <entry> - <key>New campaign</key> - </entry> - <entry> - <key>3. Classification</key> - </entry> - <entry> - <key>1. Classification</key> - </entry> - <entry> - <key>2. Classification</key> - </entry> - <entry> - <key>Choose Footer</key> - </entry> - <entry> - <key>Choose Header</key> - </entry> - <entry> - <key>#0</key> - </entry> - <entry> - <key>Email Template</key> - </entry> - <entry> - <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key> - </entry> - <entry> - <key>testing</key> - </entry> - <entry> - <key>double</key> - </entry> - <entry> - <key>closed</key> - </entry> - <entry> - <key>New Support ticket</key> - </entry> - <entry> - <key>Bug Ticket</key> - </entry> - <entry> - <key>Support ticket</key> - </entry> - <entry> - <key>New Bugticket</key> - </entry> - <entry> - <key>Keine Berechtigung zum Verschieben der Aufgabe</key> - </entry> - <entry> - <key>Kein Weitergeben von privaten Aufgaben möglich!</key> - </entry> - <entry> - <key>Search for new Entries</key> - </entry> - <entry> - <key>Additional link</key> - </entry> - <entry> - <key>Salesproject member</key> - </entry> - <entry> - <key>Maximal count has to be a whole number</key> - </entry> - <entry> - <key>Minimal count must be a positive whole number</key> - </entry> - <entry> - <key>Meilensteine und Kontaktpunkte</key> - </entry> - <entry> - <key>Maximal count must be one or higher</key> - </entry> - <entry> - <key>Campaign name</key> - </entry> - <entry> - <key>Step name</key> - </entry> - <entry> - <key>Assignment</key> - </entry> - <entry> - <key>Complaint</key> - </entry> - <entry> - <key>Employee responsible</key> - </entry> - <entry> - <key>Restrictions</key> - </entry> - <entry> - <key>Advertising bans</key> - </entry> - <entry> - <key>Advertising ban</key> - </entry> - <entry> - <key>Delete appointment</key> - </entry> - <entry> - <key>Do you really want to delete this recurring appointment?</key> - </entry> - <entry> - <key>Start date</key> - </entry> - <entry> - <key>New letter</key> - </entry> - <entry> - <key>No calls</key> - </entry> - <entry> - <key>No mails</key> - </entry> - <entry> - <key>Delete recurring appointment</key> - </entry> - <entry> - <key>No fax</key> - </entry> - <entry> - <key>No SMS</key> - </entry> - <entry> - <key>No letters</key> - </entry> - <entry> - <key>ended (abandoned)</key> - </entry> - <entry> - <key>customer checks</key> - </entry> - <entry> - <key>assigned</key> - </entry> - <entry> - <key>ended (done)</key> - </entry> - <entry> - <key>Long string value</key> - </entry> - <entry> - <key>still incorrect</key> - </entry> - <entry> - <key>unassigned</key> - </entry> - <entry> - <key>UNSEEN</key> - </entry> - <entry> - <key>ARCHIVE</key> - </entry> - <entry> - <key>TODELETE</key> - </entry> - <entry> - <key>CONFIRMED</key> - </entry> - <entry> - <key>SEEN</key> - </entry> - <entry> - <key>Link</key> - </entry> - <entry> - <key>This contact has no possible link.</key> - </entry> - <entry> - <key>Permissions</key> - </entry> - <entry> - <key>Permission</key> - </entry> - <entry> - <key>SalesprojectPhase</key> - </entry> - <entry> - <key>SalesprojectState</key> - </entry> - <entry> - <key>Maximal</key> - </entry> - <entry> - <key>Minimal</key> - </entry> - <entry> - <key>Object selection</key> - </entry> - <entry> - <key>Bulk mail</key> - </entry> - <entry> - <key>Recipients</key> - </entry> - <entry> - <key>Boss of</key> - </entry> - <entry> - <key>Data table</key> - </entry> - <entry> - <key>Make offer (WV)</key> - </entry> - <entry> - <key>Delivery term</key> - </entry> - <entry> - <key>No risk</key> - </entry> - <entry> - <key>Urlaubsprüfung durch</key> - </entry> - <entry> - <key>Acquisition</key> - </entry> - <entry> - <key>A</key> - </entry> - <entry> - <key>B</key> - </entry> - <entry> - <key>C</key> - </entry> - <entry> - <key>D</key> - </entry> - <entry> - <key>Motor cycle</key> - </entry> - <entry> - <key>Beer</key> - </entry> - <entry> - <key>Presentation</key> - </entry> - <entry> - <key>Print media</key> - </entry> - <entry> - <key>good</key> - </entry> - <entry> - <key>Tourism</key> - </entry> - <entry> - <key>Existing contact</key> - </entry> - <entry> - <key>Personal estimation</key> - </entry> - <entry> - <key>ToDo</key> - </entry> - <entry> - <key>medium</key> - </entry> - <entry> - <key>Away travel</key> - </entry> - <entry> - <key>Project planning open</key> - </entry> - <entry> - <key>1 medium</key> - </entry> - <entry> - <key>Component</key> - </entry> - <entry> - <key>Delivery block</key> - </entry> - <entry> - <key>Product type</key> - </entry> - <entry> - <key>Distribution</key> - </entry> - <entry> - <key>Call back (WV)</key> - </entry> - <entry> - <key>Spare part</key> - </entry> - <entry> - <key>Send information</key> - </entry> - <entry> - <key>EVENT</key> - </entry> - <entry> - <key>Decision-maker changed</key> - </entry> - <entry> - <key>Known because</key> - </entry> - <entry> - <key>Visit frequency</key> - </entry> - <entry> - <key>Payment problem customer</key> - </entry> - <entry> - <key>Employee account</key> - </entry> - <entry> - <key>Dumping price competition</key> - </entry> - <entry> - <key>Device/Machine</key> - </entry> - <entry> - <key>Tool changer</key> - </entry> - <entry> - <key>Declaration of acceptance</key> - </entry> - <entry> - <key>Product A1</key> - </entry> - <entry> - <key>Product A2</key> - </entry> - <entry> - <key>Technical specifications</key> - </entry> - <entry> - <key>Product B2</key> - </entry> - <entry> - <key>Product B1</key> - </entry> - <entry> - <key>Cigars</key> - </entry> - <entry> - <key>Occupation</key> - </entry> - <entry> - <key>Partial calculation</key> - </entry> - <entry> - <key>IT/Service</key> - </entry> - <entry> - <key>Frame contract (WV)</key> - </entry> - <entry> - <key>2 big</key> - </entry> - <entry> - <key>Data protection agreement</key> - </entry> - <entry> - <key>ORG</key> - </entry> - <entry> - <key>PERS</key> - </entry> - <entry> - <key>Racing bike</key> - </entry> - <entry> - <key>Others</key> - </entry> - <entry> - <key>Interested</key> - </entry> - <entry> - <key>Project shift customer</key> - </entry> - <entry> - <key>Regulation</key> - </entry> - <entry> - <key>Strength</key> - </entry> - <entry> - <key>Interests</key> - </entry> - <entry> - <key>DOCUMENT</key> - </entry> - <entry> - <key>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</key> - </entry> - <entry> - <key>Subordinate campaign of</key> - </entry> - <entry> - <key>Treat</key> - </entry> - <entry> - <key>Product interest</key> - </entry> - <entry> - <key>Cons</key> - </entry> - <entry> - <key>Transport damage</key> - </entry> - <entry> - <key>Konditionen die bei Angebotserstellung übernommen werden</key> - </entry> - <entry> - <key>Sport</key> - </entry> - <entry> - <key>Technology</key> - </entry> - <entry> - <key>Assistance</key> - </entry> - <entry> - <key>Trade fair</key> - </entry> - <entry> - <key>Creditworthiness</key> - </entry> - <entry> - <key>Superordinate campaign of</key> - </entry> - <entry> - <key>Pricing policy</key> - </entry> - <entry> - <key>Prospective customer</key> - </entry> - <entry> - <key>Send documents (WV)</key> - </entry> - <entry> - <key>Revolution speed (rpm)</key> - </entry> - <entry> - <key>Atmosphere</key> - </entry> - <entry> - <key>Follow up (WV)</key> - </entry> - <entry> - <key>Mechanical engineering</key> - </entry> - <entry> - <key>Wine</key> - </entry> - <entry> - <key>bad</key> - </entry> - <entry> - <key>Sailing</key> - </entry> - <entry> - <key>Commodity group B (WV)</key> - </entry> - <entry> - <key>personal</key> - </entry> - <entry> - <key>flexible</key> - </entry> - <entry> - <key>Handcraft</key> - </entry> - <entry> - <key>Goodwill</key> - </entry> - <entry> - <key>Website</key> - </entry> - <entry> - <key>Full calculation</key> - </entry> - <entry> - <key>Birthday list</key> - </entry> - <entry> - <key>Holiday</key> - </entry> - <entry> - <key>Quality problem customer</key> - </entry> - <entry> - <key>ToDos</key> - </entry> - <entry> - <key>Golf</key> - </entry> - <entry> - <key>Loyalty</key> - </entry> - <entry> - <key>Type of damage</key> - </entry> - <entry> - <key>Contacting</key> - </entry> - <entry> - <key>Conveyor</key> - </entry> - <entry> - <key>Agency</key> - </entry> - <entry> - <key>Technical requirement</key> - </entry> - <entry> - <key>Faulty delivery</key> - </entry> - <entry> - <key>Interested person</key> - </entry> - <entry> - <key>First contact</key> - </entry> - <entry> - <key>Wear part</key> - </entry> - <entry> - <key>Commodity group B</key> - </entry> - <entry> - <key>Commodity group A</key> - </entry> - <entry> - <key>Commodity group A (WV)</key> - </entry> - <entry> - <key>Recommendation</key> - </entry> - <entry> - <key>Project planned?</key> - </entry> - <entry> - <key>Reference customer</key> - </entry> - <entry> - <key>Reports to</key> - </entry> - <entry> - <key>Pricelist</key> - </entry> - <entry> - <key>Send brochure (WV)</key> - </entry> - <entry> - <key>loves sociability</key> - </entry> - <entry> - <key>0 low</key> - </entry> - <entry> - <key>Departments</key> - </entry> - <entry> - <key>Additional data</key> - </entry> - <entry> - <key>Origin</key> - </entry> - <entry> - <key>Weight (kg)</key> - </entry> - <entry> - <key>Consisted customer</key> - </entry> - <entry> - <key>Incomplete delivery</key> - </entry> - <entry> - <key>Weakness</key> - </entry> - <entry> - <key>Project type</key> - </entry> - <entry> - <key>30</key> - </entry> - <entry> - <key>Annual holidays</key> - </entry> - <entry> - <key>Call</key> - </entry> - <entry> - <key>own company</key> - </entry> - <entry> - <key>Soccer</key> - </entry> - <entry> - <key>Consultant</key> - </entry> - <entry> - <key>Financial service</key> - </entry> - <entry> - <key>Target group</key> - </entry> - <entry> - <key>Building industry</key> - </entry> - <entry> - <key>Next contact?</key> - </entry> - <entry> - <key>General</key> - </entry> - <entry> - <key>Campaign response</key> - </entry> - <entry> - <key>60</key> - </entry> - <entry> - <key>Risk</key> - </entry> - <entry> - <key>NPO</key> - </entry> - <entry> - <key>Writes for</key> - </entry> - <entry> - <key>90</key> - </entry> - <entry> - <key>Custody agreement</key> - </entry> - <entry> - <key>Economy</key> - </entry> - <entry> - <key>Other (WV)</key> - </entry> - <entry> - <key>Pros</key> - </entry> - <entry> - <key>Quality complaint</key> - </entry> - <entry> - <key>Next steps</key> - </entry> - <entry> - <key>Urlaubsgenehmigung durch</key> - </entry> - <entry> - <key>Assessment</key> - </entry> - <entry> - <key>Signature</key> - </entry> - <entry> - <key>Footer</key> - </entry> - <entry> - <key>Header</key> - </entry> - <entry> - <key>Open admin view</key> - </entry> - <entry> - <key>All selected participants already are in the campaign</key> - </entry> - <entry> - <key>Not enough slots for %0/%1 participant(s)</key> - </entry> - <entry> - <key>%0/%1 participant(s) will be added to the selected campaign step</key> - </entry> - <entry> - <key>No valid Selection</key> - </entry> - <entry> - <key>Sender address</key> - </entry> - <entry> - <key>Send</key> - </entry> - <entry> - <key>Pending</key> - </entry> - <entry> - <key>Failed</key> - </entry> - <entry> - <key>UID</key> - </entry> - <entry> - <key>ticket number</key> - </entry> - <entry> - <key>AB_KEYWORD_ENTRYID (UID)</key> - </entry> - <entry> - <key>DATE_NEW_CONTACT</key> - </entry> - <entry> - <key>Icon</key> - </entry> - <entry> - <key>in progress</key> - </entry> - <entry> - <key>PARENT_CONTEXT</key> - </entry> - <entry> - <key>OFFER_ID</key> - </entry> - <entry> - <key>SMS</key> - </entry> - <entry> - <key>CAMPAIGNID (UID)</key> - </entry> - <entry> - <key>PARENT_ID</key> - </entry> - <entry> - <key>Interfaces</key> - </entry> - <entry> - <key>Feature</key> - </entry> - <entry> - <key>ORGANISATIONID (UID)</key> - </entry> - <entry> - <key>SALESORDER_ID</key> - </entry> - <entry> - <key>Ticket</key> - </entry> - <entry> - <key>Delivery problems</key> - </entry> - <entry> - <key>Tickets</key> - </entry> - <entry> - <key>PERSON_ID</key> - </entry> - <entry> - <key>{$TICKET_REQUESTOR}</key> - </entry> - <entry> - <key>Billable</key> - </entry> - <entry> - <key>TASKID (UID)</key> - </entry> - <entry> - <key>Fax</key> - </entry> - <entry> - <key>DATE_EDIT</key> - </entry> - <entry> - <key>OFFERID (UID)</key> - </entry> - <entry> - <key>Connection Type</key> - </entry> - <entry> - <key>UID (AB_ATTRIBUTEID)</key> - </entry> - <entry> - <key>Phases</key> - </entry> - <entry> - <key>Questions</key> - </entry> - <entry> - <key>User error</key> - </entry> - <entry> - <key>ACTIVITYID (UID)</key> - </entry> - <entry> - <key>Issue</key> - </entry> - <entry> - <key>CONTACTID</key> - </entry> - <entry> - <key>Maintenance</key> - </entry> - <entry> - <key>{$TICKET_STATUS}</key> - </entry> - <entry> - <key>DATE_NEW</key> - </entry> - <entry> - <key>SALESPROJECTID (UID)</key> - </entry> - <entry> - <key>ORGANISATION_ID</key> - </entry> - <entry> - <key>CONTRACTID (UID)</key> - </entry> - <entry> - <key>[%0]it was necessary to create a file from a blob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>SqlUtils.getSqlInStatement: if pAsPrepared is true, pPreparedDbType has to be filld with the correct db type</key> - </entry> - <entry> - <key>[%0]it was necessary to create a text-file from a clob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>USER_NEW</key> - </entry> - <entry> - <key>USER_EDIT</key> - </entry> - <entry> - <key>CONTACTID (UID)</key> - </entry> - <entry> - <key>{$TICKET_EDITOR}</key> - </entry> - <entry> - <key>Support ticket</key> - </entry> - <entry> - <key>Modul group</key> - </entry> - <entry> - <key>PRODUCTID (UID)</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"</key> - </entry> - <entry> - <key>Total time</key> - </entry> - <entry> - <key>SALESORDERID (UID)</key> - </entry> - <entry> - <key>Cause</key> - </entry> - <entry> - <key>Assembly</key> - </entry> - <entry> - <key>Dokument template usage</key> - </entry> - <entry> - <key>Open admin info</key> - </entry> - <entry> - <key>USER_NEW_CONTACT</key> - </entry> - <entry> - <key>Linked Appointments</key> - </entry> - <entry> - <key>Location</key> - </entry> - <entry> - <key>Not sent</key> - </entry> - <entry> - <key>Is being sent</key> - </entry> - <entry> - <key>Preview</key> - </entry> - <entry> - <key>Content</key> - </entry> - <entry> - <key>Bulk mail was sent!</key> - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed</key> - </entry> - <entry> - <key>Bulk mail \"%0\" was sent!</key> - </entry> - <entry> - <key>Descriptions</key> - </entry> - <entry> - <key>User Administration</key> - </entry> - <entry> - <key>Support Ticket</key> - </entry> - <entry> - <key>CC</key> - </entry> - <entry> - <key>Remarks</key> - </entry> - <entry> - <key>Xing</key> - </entry> - <entry> - <key>Organisation</key> - </entry> - <entry> - <key>Km</key> - </entry> - <entry> - <key>Billed</key> - </entry> - <entry> - <key>Km Fee</key> - </entry> - <entry> - <key>Credit Card</key> - </entry> - <entry> - <key>Taxi</key> - </entry> - <entry> - <key>Overnight stay</key> - </entry> - <entry> - <key>LinkedIn</key> - </entry> - <entry> - <key>In creation</key> - </entry> - <entry> - <key>Rented car</key> - </entry> - <entry> - <key>Update</key> - </entry> - <entry> - <key>The contact has an advertising ban for emails!</key> - </entry> - <entry> - <key>Blog</key> - </entry> - <entry> - <key>Until</key> - </entry> - <entry> - <key>From</key> - </entry> - <entry> - <key>Park fees</key> - </entry> - <entry> - <key>Abscences</key> - </entry> - <entry> - <key>Expense Report</key> - </entry> - <entry> - <key>Special displays</key> - </entry> - <entry> - <key>Transport cost</key> - </entry> - <entry> - <key>Day Fee</key> - </entry> - <entry> - <key>Fuel</key> - </entry> - <entry> - <key>Month</key> - </entry> - <entry> - <key>Working material</key> - </entry> - <entry> - <key>Hospitality</key> - </entry> - <entry> - <key>Trip purpose</key> - </entry> - <entry> - <key>Bed and Breakfast</key> - </entry> - <entry> - <key>Update campaign step</key> - </entry> - <entry> - <key>No contacts selected</key> - </entry> - <entry> - <key>Show my campaigns</key> - </entry> - <entry> - <key>My campaigns</key> - </entry> - <entry> - <key>Add to Bulkmail</key> - </entry> - <entry> -<<<<<<< HEAD - <key>DSGVO Information</key> - </entry> - <entry> - <key>Data Privacy</key> - </entry> - <entry> - <key>No data has been anonymized.</key> - </entry> - <entry> - <key>Es wurden keine Daten anonymisiert.</key> - </entry> - <entry> - <key>Anonymization</key> - </entry> - <entry> - <key>The following data has been anonymised: %0</key> - </entry> - <entry> - <key>Your changes have an impact on the data privacy information (DSGVO).</key> - </entry> - <entry> - <key>Data Privacies</key> - </entry> - <entry> - <key>advertising consent</key> - </entry> - <entry> - <key>Sonstige personenbezogene Daten</key> - </entry> - <entry> - <key>Names</key> - </entry> - <entry> - <key>Namen</key> - </entry> - <entry> - <key>Adressdaten</key> - </entry> - <entry> - <key>DSGVO anonymisation</key> - </entry> - <entry> - <key>newsletter dispatch</key> - </entry> - <entry> - <key>Folgende Daten wurden anonymisiert: </key> - </entry> - <entry> - <key>Address data</key> - </entry> - <entry> - <key>contract of sale</key> - </entry> - <entry> - <key>DataPrivacy Use</key> - </entry> - <entry> - <key>Source</key> - </entry> - <entry> - <key>consent</key> - </entry> - <entry> - <key>Information Report</key> - </entry> - <entry> - <key>Attribute data</key> - </entry> - <entry> - <key>other personal data</key> - </entry> - <entry> - <key>Kommunikationsdaten</key> - </entry> - <entry> - <key>DSGVO Anonymisierung</key> - </entry> - <entry> - <key>DSGVO Disclosure</key> - </entry> - <entry> - <key>Disclosure Report</key> - </entry> - <entry> - <key>Update data privacy information</key> - </entry> - <entry> - <key>DataPrivacy Right</key> - </entry> - <entry> - <key>balancing of interests</key> - </entry> - <entry> - <key>Personal data</key> - </entry> - <entry> - <key>The transfer of data to recipients located in a third country is based on the following guarantees:</key> - </entry> - <entry> - <key>MarketingCampaign</key> - </entry> - <entry> - <key>Recipient, Country</key> - </entry> - <entry> - <key>We save your data until </key> - </entry> - <entry> - <key>Guarantees</key> - </entry> - <entry> - <key>On time</key> - </entry> - <entry> - <key>Nur eigene anzeigen</key> - </entry> - <entry> - <key>CampaignManagement</key> - </entry> - <entry> - <key>For this report</key> - </entry> - <entry> - <key>SqlBuilder must contain a select clause!</key> - </entry> - <entry> - <key>Inland</key> - </entry> - <entry> - <key>The data is transmitted to the following recipients:</key> - </entry> - <entry> - <key>SqlBuilder must be instanciated with 'new'</key> - </entry> - <entry> - <key>Extension letter date</key> - </entry> - <entry> - <key>Balancing of interests</key> - </entry> - <entry> - <key>SqlBuilder must contain a from clause!</key> - </entry> - <entry> - <key>None</key> - </entry> - <entry> - <key>Date of request</key> - </entry> - <entry> - <key>Export CSV</key> - </entry> - <entry> - <key>Not all data privacy fields for all private data is filled. Cannot create report.</key> - </entry> - <entry> - <key>Birthday</key> - </entry> - <entry> - <key>Extend - request count</key> - </entry> - <entry> - <key>Transmission</key> - </entry> - <entry> - <key>You don't have permission for this view.</key> - </entry> - <entry> - <key>Extend - complexity</key> - </entry> - <entry> - <key>Advertising consent</key> - </entry> - <entry> - <key>We hereby comply with your request within the statutory period of one month.</key> -======= - <key>%0 recipients will be added to the bulk mail.</key> ->>>>>>> origin/master - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed. Process took %2 s.</key> - </entry> - <entry> -<<<<<<< HEAD - <key>Foreign country</key> - </entry> - <entry> - <key>phase information</key> - </entry> - <entry> - <key>the high complexity of your application</key> - </entry> - <entry> - <key>As stated in our letter of %0, we have made use of the possibility to extend the deadline to three months due to %1.</key> - </entry> - <entry> - <key>Deadline</key> - </entry> - <entry> - <key>Newsletter dispatch</key> - </entry> - <entry> - <key>We received data from </key> - </entry> - <entry> - <key>the number of your applications</key> - </entry> - <entry> - <key>Your changes may have an impact on the data privacy information (DSGVO).\n Please update these.</key> - </entry> - <entry> - <key>External Datasource</key> - </entry> - <entry> - <key>Guarantee</key> -======= - <key>%0 new recipients will be added to the bulk mail.</key> - </entry> - <entry> - <key>Remove recipients with advertising ban</key> - </entry> - <entry> - <key>Serial letter</key> ->>>>>>> origin/master - </entry> - </keyValueMap> - <font name="Dialog" style="0" size="11" /> - <sqlModels> - <languageSql> - <name>Data_alias</name> - <alias>Data_alias</alias> - <statements> - <element>select AB_KEYWORD_ENTRY.TITLE from AB_KEYWORD_ENTRY -union -select AB_LANGUAGE.NAME_LATIN from AB_LANGUAGE -union -select AB_COUNTRYINFO.NAME_LATIN from AB_COUNTRYINFO -union -select AB_OBJECTRELATIONTYPE.RELATION_TITLE from AB_OBJECTRELATIONTYPE -union -select TITLE from CLASSIFICATIONSCORE -union -select SCORETYPE from CLASSIFICATIONTYPE -union -select distinct CLASSIFICATIONGROUP from CLASSIFICATIONTYPE -union -select AB_ATTRIBUTE.ATTRIBUTE_NAME from AB_ATTRIBUTE</element> - </statements> - </languageSql> - </sqlModels> -</language> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index 61cbdca2017302dd4a0d634690f5f5ba38d10044..b563a3076d29b855c8dfeda7e01fccac5bb6025d 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6548,7 +6548,7 @@ </entry> <entry> <key>Order number</key> - <value>Belegsnummer</value> + <value>Belegnummer</value> </entry> <entry> <key>Permission Action</key> @@ -6576,7 +6576,7 @@ </entry> <entry> <key>Order date</key> - <value>Belegsdatum</value> + <value>Belegdatum</value> </entry> <entry> <key>Due date</key> @@ -9646,6 +9646,38 @@ Bitte Datumseingabe prüfen</value> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren sie einen Administrator.</value> </entry> + <entry> + <key>Count Chart</key> + <value>Anzahl Diagramm</value> + </entry> + <entry> + <key>Sum Chart</key> + <value>Summen Diagramm</value> + </entry> + <entry> + <key>Probability Chart</key> + <value>Wahrscheinlichkeit Diagramm</value> + </entry> + <entry> + <key>Probability in %</key> + <value>Wahrscheinlichkeit in %</value> + </entry> + <entry> + <key>Standard City</key> + <value>Standardstadt</value> + </entry> + <entry> + <key>Standard Country</key> + <value>Standartland</value> + </entry> + <entry> + <key>Standard Zip</key> + <value>Standart Plz</value> + </entry> + <entry> + <key>Outstanding Amount</key> + <value>Offener Betrag</value> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod.orig b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod.orig deleted file mode 100644 index 50cb8cf7b5b03e605d82a43db073d5019421336f..0000000000000000000000000000000000000000 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod.orig +++ /dev/null @@ -1,6083 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<language xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/language/1.2.0"> - <name>_____LANGUAGE_de</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <language>de</language> - <country></country> - <variant></variant> - <keyValueMap> - <entry> - <key>No mails</key> - <value>Keine E-Mails</value> - </entry> - <entry> - <key>Steps</key> - <value>Stufen</value> - </entry> - <entry> - <key>Assignment</key> - <value>Zuordnung</value> - </entry> - <entry> - <key>Project management</key> - <value>Projektmanagement</value> - </entry> - <entry> - <key>ARCHIVE</key> - <value>Archiviert</value> - </entry> - <entry> - <key>Maximal</key> - </entry> - <entry> - <key>Sender address</key> - <value>Senderadresse</value> - </entry> - <entry> - <key>Failed</key> - <value>Fehlgeschlagen</value> - </entry> - <entry> - <key>SalesprojectPhase</key> - <value>Phase</value> - </entry> - <entry> - <key>No calls</key> - <value>Keine Anrufe</value> - </entry> - <entry> - <key>No SMS</key> - <value>Keine SMS</value> - </entry> - <entry> - <key>This contact has no possible link.</key> - <value>Dieser Kontakt hat keine möglichen Verknüpfungen.</value> - </entry> - <entry> - <key>Is being sent</key> - <value>Wird versendet</value> - </entry> - <entry> - <key>User Administration</key> - <value>Benutzerverwaltung</value> - </entry> - <entry> - <key>Restrictions</key> - <value>Einschränkungen</value> - </entry> - <entry> - <key>Notifications</key> - <value>Benachrichtigungen</value> - </entry> - <entry> - <key>Do you really want to delete this recurring appointment?</key> - <value>Wollen Sie wirklich die Serie löschen?</value> - </entry> - <entry> - <key>Serial letter</key> - <value>Serienbrief</value> - </entry> - <entry> - <key>Remove recipients with advertising ban</key> - <value>Empfänger mit Werbesperre entfernen</value> - </entry> - <entry> - <key>Open admin view</key> - <value>Admin-Ansicht öffnen</value> - </entry> - <entry> - <key>Long string value</key> - <value>Langer String-Wert</value> - </entry> - <entry> - <key>Object selection</key> - <value>Objektauswahl</value> - </entry> - <entry> - <key>Send</key> - <value>Senden</value> - </entry> - <entry> - <key>CONFIRMED</key> - <value>Gelesen</value> - </entry> - <entry> - <key>Advertising bans</key> - <value>Werbesperren</value> - </entry> - <entry> - <key>Add to Campaign</key> - <value>Zu Kampagne hinzufügen</value> - </entry> - <entry> - <key>Bulk mail</key> - <value>Serienmail</value> - </entry> - <entry> - <key>Bulk mail \"%0\" was sent!</key> - <value>Serienmail \"%0\" wurde versendet!</value> - </entry> - <entry> - <key>No fax</key> - <value>Kein Fax</value> - </entry> - <entry> - <key>No letters</key> - <value>Keine Briefe</value> - </entry> - <entry> - <key>SalesprojectState</key> - <value>Status</value> - </entry> - <entry> - <key>Company</key> - <value>Firma</value> - </entry> - <entry> - <key>Complaint</key> - <value>Reklamation</value> - </entry> - <entry> - <key>SEEN</key> - <value>Neu</value> - </entry> - <entry> - <key>UNSEEN</key> - <value>Neu</value> - </entry> - <entry> - <key>Advertising ban</key> - <value>Werbesperre</value> - </entry> - <entry> - <key>Permissions</key> - <value>Berechtigungen</value> - </entry> - <entry> - <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key> - <value>Das Feld %0 hat ein falsches Format. Das Datenbankfeld muss wie "tablename.columnname" ("ORGANISATION.NAME") oder als Array mit Column-alias formatiert sein: ["ORGANISATION", "NAME", "myorgAlias"]</value> - </entry> - <entry> - <key>Attribute \"%0\" can't be used more than %1.</key> - <value>Eigenschaft \"%0\" darf maximal %1 verwendet werden.</value> - </entry> - <entry> - <key>Picture</key> - <value>Bild</value> - </entry> - <entry> - <key>New letter</key> - <value>Brief schreiben</value> - </entry> - <entry> - <key>Delivery specification</key> - <value>Lieferbedingung</value> - </entry> - <entry> - <key>Office staff</key> - <value>Innendienst</value> - </entry> - <entry> - <key>Recipient</key> - <value>Empfänger</value> - </entry> - <entry> - <key>Overdue tasks</key> - <value>Überfällige Aufgaben</value> - </entry> - <entry> - <key>Attribute \"%0\" has to be used at least %1.</key> - <value>Eigenschaft \"%0\" muss mindestens %1 verwendet werden.</value> - </entry> - <entry> - <key>Delete appointment</key> - <value>Termin löschen</value> - </entry> - <entry> - <key>Show tasks where I am editor</key> - <value>Zeigt Aufgaben an wo ich Bearbeiter bin</value> - </entry> - <entry> - <key>Confirm password</key> - <value>Passwort prüfen</value> - </entry> - <entry> - <key>Delete recurring appointment</key> - <value>Serie löschen</value> - </entry> - <entry> - <key>Human Resources</key> - <value>Personal</value> - </entry> - <entry> - <key>Single</key> - <value>Einzel</value> - </entry> - <entry> - <key>ended (abandoned)</key> - <value>abgeschlossen (aufgegeben)</value> - </entry> - <entry> - <key>Permission</key> - <value>Berechtigung</value> - </entry> - <entry> - <key>Entrydate (Day)</key> - <value>Eingangsdatum (Tag)</value> - </entry> - <entry> - <key>still incorrect</key> - <value>weiterhin fehlerhaft</value> - </entry> - <entry> - <key>Priority</key> - <value>Priorität</value> - </entry> - <entry> - <key>Salesproject phases</key> - <value>Vertriebsprojektphasen</value> - </entry> - <entry> - <key>%0 new recipients will be added to the bulk mail.</key> - <value>Der Serienmail weden %0 neue Empfänger hinzugefügt.</value> - </entry> - <entry> - <key>Write email</key> - <value>E-Mail schreiben</value> - </entry> - <entry> - <key>${ATTRIBUTE_VOID}</key> - <value>Tag</value> - </entry> - <entry> - <key>Campaign Period</key> - <value>Kampagnen Laufzeit</value> - </entry> - <entry> - <key>Turnover</key> - <value>Umsatz</value> - </entry> - <entry> - <key>Discount %</key> - <value>Rabatt %</value> - </entry> - <entry> - <key>${COUNT_PREPOSITION_MULTIPLE}</key> - <value>mal</value> - </entry> - <entry> - <key>Email must be unique!</key> - <value>Die E-Mail-Adresse muss eindeutig sein!</value> - </entry> - <entry> - <key>${COUNT_PREPOSITION_SINGLE}</key> - <value>mal</value> - </entry> - <entry> - <key>E-Mail</key> - <value>E-Mail</value> - </entry> - <entry> - <key>Maximal Count</key> - <value>Maximale Anzahl</value> - </entry> - <entry> - <key>Entrydate (Month)</key> - <value>Eingangsdatum (Monat)</value> - </entry> - <entry> - <key>Usage</key> - <value>Verwendung</value> - </entry> - <entry> - <key>Campaign status</key> - <value>Kampagnenstatus</value> - </entry> - <entry> - <key>Show all activities</key> - <value>Alle Aktivitäten anzeigen</value> - </entry> - <entry> - <key>Add the selection to a campaign</key> - <value>Fügt die Auswahl zur Kampagne hinzu</value> - </entry> - <entry> - <key>${ADDRESS_STATE}</key> - <value>Staat</value> - </entry> - <entry> - <key>New tasks</key> - <value>Neue Aufgaben</value> - </entry> - <entry> - <key>New module</key> - <value>Neuanlage</value> - </entry> - <entry> - <key>Show all contracts</key> - <value>Alle Verträge anzeigen</value> - </entry> - <entry> - <key>Max participants</key> - <value>Maximale Teilnehmer</value> - </entry> - <entry> - <key>This combination of person and organisation does already exist and can not be created once more.</key> - <value>Diese Kombination aus Person und Organisation existiert bereits und kann daher nicht noch ein mal angelegt werden.</value> - </entry> - <entry> - <key>Communication data</key> - <value>Kommunikationsdaten</value> - </entry> - <entry> - <key>${SALESPROJECT_NEGOTIATION}</key> - <value>Negotiation</value> - </entry> - <entry> - <key>Filename</key> - <value>Dateiname</value> - </entry> - <entry> - <key>Male</key> - <value>Männlich</value> - </entry> - <entry> - <key>Activity</key> - <value>Aktivität</value> - </entry> - <entry> - <key>participants will be added to the selected campaign step</key> - <value>Teilnehmer/innen werden zur ausgewählten Kampagnenstufe hinzugefügt</value> - </entry> - <entry> - <key>Name</key> - <value>Name</value> - </entry> - <entry> - <key>Austria</key> - <value>Österreich</value> - </entry> - <entry> - <key>Set campaign step</key> - <value>Kampagnenstufe setzen</value> - </entry> - <entry> - <key>New time tracking</key> - <value>Neuer Zeiteintrag</value> - </entry> - <entry> - <key>Customercode</key> - <value>Kundennummer</value> - </entry> - <entry> - <key>The person is already associated with another employee!</key> - <value>Die Person ist bereits mit einem anderen Mitarbeiter verknüpft!</value> - </entry> - <entry> - <key>Time expenses</key> - <value>Aufwand</value> - </entry> - <entry> - <key>${SALESPROJECT_OFFER}</key> - <value>Offer</value> - </entry> - <entry> - <key>Status</key> - <value>Status</value> - </entry> - <entry> - <key>Campaigns</key> - <value>Kampagnen</value> - </entry> - <entry> - <key>${SALESPROJECT_MEMBER}</key> - <value>Projektteam</value> - </entry> - <entry> - <key>${QUANTITY_LOWER_THAN_1}</key> - <value>Die Menge muss mindestens 1 sein.</value> - </entry> - <entry> - <key>date of birth must not be in the future</key> - <value>Geburtsdatum darf nicht in der Zukunft liegen</value> - </entry> - <entry> - <key>Days inactive</key> - <value>Tage inaktiv</value> - </entry> - <entry> - <key>Active</key> - <value>Aktiv</value> - </entry> - <entry> - <key>Medium</key> - <value>Medium</value> - </entry> - <entry> - <key>Internet</key> - <value>Internet</value> - </entry> - <entry> - <key>Germany</key> - <value>Deutschland</value> - </entry> - <entry> - <key>Online-Meeting</key> - <value>Online-Meeting</value> - </entry> - <entry> - <key>Set password</key> - <value>Passwort setzen</value> - </entry> - <entry> - <key>Choose address</key> - <value>Adresse auswählen</value> - </entry> - <entry> - <key>Social Media</key> - <value>Social Media</value> - </entry> - <entry> - <key>Visit</key> - <value>Besuch</value> - </entry> - <entry> - <key>Information</key> - <value>Information</value> - </entry> - <entry> - <key>Language</key> - <value>Sprache</value> - </entry> - <entry> - <key>Phone</key> - <value>Telefon</value> - </entry> - <entry> - <key>360 Degree</key> - <value>360 Grad</value> - </entry> - <entry> - <key>Activities</key> - <value>Aktivitäten</value> - </entry> - <entry> - <key>Female</key> - <value>Weiblich</value> - </entry> - <entry> - <key>Contactmanagement</key> - <value>Kontaktmanagement</value> - </entry> - <entry> - <key>Office address</key> - <value>Firmenadresse</value> - </entry> - <entry> - <key>Additional link</key> - <value>Zusätzliche Verknüpfung</value> - </entry> - <entry> - <key>Contact</key> - <value>Kontakt</value> - </entry> - <entry> - <key>Home address</key> - <value>Privatadresse</value> - </entry> - <entry> - <key>Type</key> - <value>Typ</value> - </entry> - <entry> - <key>Contacts</key> - <value>Kontakte</value> - </entry> - <entry> - <key>Norway</key> - <value>Norwegen</value> - </entry> - <entry> - <key>Address</key> - <value>Adresse</value> - </entry> - <entry> - <key>Addresses</key> - <value>Adressen</value> - </entry> - <entry> - <key>Contact type</key> - <value>Kontaktart</value> - </entry> - <entry> - <key>Footer</key> - <value>Fußtext</value> - </entry> - <entry> - <key>${COMM_ADDRESS}</key> - <value>Adresse</value> - </entry> - <entry> - <key>Gender</key> - <value>Geschlecht</value> - </entry> - <entry> - <key>Show all companies</key> - <value>Alle Firmen anzeigen</value> - </entry> - <entry> - <key>Date of birth</key> - <value>Geburtsdatum</value> - </entry> - <entry> - <key>Lastname</key> - <value>Nachname</value> - </entry> - <entry> - <key>Salutation</key> - <value>Anrede</value> - </entry> - <entry> - <key>setRead</key> - <value>Gelesen setzen</value> - </entry> - <entry> - <key>Middlename</key> - <value>Zwischenname</value> - </entry> - <entry> - <key>Title</key> - <value>Titel</value> - </entry> - <entry> - <key>Addresstype</key> - <value>Adresstyp</value> - </entry> - <entry> - <key>Add participants to Campaign</key> - <value>Kampagnenteilnehmer/innen hinzufügen</value> - </entry> - <entry> - <key>Firstname</key> - <value>Vorname</value> - </entry> - <entry> - <key>Show all contacts</key> - <value>Alle Kontaktpersonen anzeigen</value> - </entry> - <entry> - <key>Description</key> - <value>Beschreibung</value> - </entry> - <entry> - <key>Direction</key> - <value>Richtung</value> - </entry> - <entry> - <key>Entrydate</key> - <value>Eingangsdatum</value> - </entry> - <entry> - <key>Subject</key> - <value>Betreff</value> - </entry> - <entry> - <key>Post office box</key> - <value>Postfach</value> - </entry> - <entry> - <key>Delivery address</key> - <value>Lieferadresse</value> - </entry> - <entry> - <key>Participants</key> - <value>Teilnehmer/innen</value> - </entry> - <entry> - <key>House number</key> - <value>Hausnummer</value> - </entry> - <entry> - <key>Country</key> - <value>Land</value> - </entry> - <entry> - <key>Communication</key> - <value>Kommunikation</value> - </entry> - <entry> - <key>Postcode</key> - <value>Postleitzahl</value> - </entry> - <entry> - <key>City</key> - <value>Ort</value> - </entry> - <entry> - <key>State</key> - <value>Status</value> - </entry> - <entry> - <key>Region</key> - <value>Gebiet</value> - </entry> - <entry> - <key>District</key> - <value>Kreis</value> - </entry> - <entry> - <key>Companies</key> - <value>Firmen</value> - </entry> - <entry> - <key>Switzerland</key> - <value>Schweiz</value> - </entry> - <entry> - <key>Confirmed</key> - <value>Bestätigt</value> - </entry> - <entry> - <key>Descriptions</key> - <value>Beschreibungen</value> - </entry> - <entry> - <key>Free</key> - <value>Frei</value> - </entry> - <entry> - <key>Tentative</key> - <value>Vorläufig</value> - </entry> - <entry> - <key>Ignore series</key> - <value>Monatliche Serie nicht genauer spezifiziert. Ignoriere Serie.</value> - </entry> - <entry> - <key>Attachments</key> - <value>Anhänge</value> - </entry> - <entry> - <key>Internal (2)</key> - </entry> - <entry> - <key>Touchpoints</key> - <value>Kontaktpunkte</value> - </entry> - <entry> - <key>archive</key> - <value>Archivieren</value> - </entry> - <entry> - <key>ended (done)</key> - <value>abgeschlossen (erledigt)</value> - </entry> - <entry> - <key>Document Template</key> - <value>Dokumentvorlage</value> - </entry> - <entry> - <key>Company Addresses</key> - <value>Firmenadressen</value> - </entry> - <entry> - <key>yearly series not specified</key> - <value>Jährliche Serie nicht genauer spezifiziert. Ignoriere Serie.</value> - </entry> - <entry> - <key>OutOfOffice</key> - <value>Außer Haus</value> - </entry> - <entry> - <key>Cancelled</key> - <value>Abgesagt</value> - </entry> - <entry> - <key>Ignore daily series</key> - <value>Tägliche Serie nicht genauer spezifiziert. Ignoriere Serie.</value> - </entry> - <entry> - <key>yyyyMMdd</key> - <value>yyyyMMdd</value> - </entry> - <entry> - <key>standard address</key> - <value>Standard-Adresse</value> - </entry> - <entry> - <key>Create receipt</key> - <value>Beleg erstellen</value> - </entry> - <entry> - <key>PP</key> - <value>EK</value> - </entry> - <entry> - <key>Liter</key> - </entry> - <entry> - <key>Key account</key> - <value>Großkunde</value> - </entry> - <entry> - <key>Cover letter</key> - <value>Anschreiben</value> - </entry> - <entry> - <key>VAT</key> - <value>UmsSt.</value> - </entry> - <entry> - <key>The expiry date must be after the start date!</key> - <value>Das Ende-Datum muss nach dem Beginn-Datum liegen!</value> - </entry> - <entry> - <key>Product</key> - <value>Produkt</value> - </entry> - <entry> - <key>Developer</key> - <value>Hersteller</value> - </entry> - <entry> - <key>Valid until</key> - <value>gültig bis</value> - </entry> - <entry> - <key>Department</key> - <value>Abteilung</value> - </entry> - <entry> - <key>Price list</key> - <value>Preisliste</value> - </entry> - <entry> - <key>Currency</key> - <value>Währung</value> - </entry> - <entry> - <key>Payment method</key> - <value>Zahlungsweise</value> - </entry> - <entry> - <key>Price list / Company</key> - <value>Preisliste / Firma</value> - </entry> - <entry> - <key>Curr. sales price</key> - <value>akt. VK-Preis</value> - </entry> - <entry> - <key>Contract</key> - <value>Vertrag</value> - </entry> - <entry> - <key>Stock</key> - <value>Lagerbestand</value> - </entry> - <entry> - <key>PP/SP</key> - <value>EK/VK</value> - </entry> - <entry> - <key>Next due date</key> - <value>nächste Fälligkeit</value> - </entry> - <entry> - <key>Discount</key> - <value>Rabatt</value> - </entry> - <entry> - <key>The next due date must be after the start of the contract and before the expiry of the contract!</key> - <value>Nächste Fälligkeit muss nach Vertragsbeginn und vor Vertragsende liegen!</value> - </entry> - <entry> - <key>Sales</key> - <value>Vertrieb</value> - </entry> - <entry> - <key>Contract number</key> - <value>Vertragsnummer</value> - </entry> - <entry> - <key>Min. stock</key> - <value>Min.-Bestand</value> - </entry> - <entry> - <key>SP</key> - <value>VK</value> - </entry> - <entry> - <key>Commodity group 3</key> - <value>Warengruppe 3</value> - </entry> - <entry> - <key>Commodity group 2</key> - <value>Warengruppe 2</value> - </entry> - <entry> - <key>setUnread</key> - <value>Ungelesen setzen</value> - </entry> - <entry> - <key>Campaign Step</key> - <value>Kampagnen Stufe</value> - </entry> - <entry> - <key>Commodity group 1</key> - <value>Warengruppe 1</value> - </entry> - <entry> - <key>Contract start date</key> - <value>Vertragsbeginn</value> - </entry> - <entry> - <key>Remaining Runtime</key> - <value>Restlaufzeit</value> - </entry> - <entry> - <key>Spare parts</key> - <value>Ersatzteile</value> - </entry> - <entry> - <key>Employee</key> - <value>Mitarbeiter</value> - </entry> - <entry> - <key>Unit</key> - <value>Einheit</value> - </entry> - <entry> - <key>Contract expiry date</key> - <value>Vertragsende</value> - </entry> - <entry> - <key>Yes</key> - <value>Ja</value> - </entry> - <entry> - <key>Type of contract</key> - <value>Vertragsart</value> - </entry> - <entry> - <key>No</key> - <value>Nein</value> - </entry> - <entry> - <key>Service</key> - <value>Service</value> - </entry> - <entry> - <key>Advertising material</key> - <value>Werbemittel</value> - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed</key> - <value>%0 Mails erfolgreich versendet, %1 Mails fehlgeschlagen</value> - </entry> - <entry> - <key>Valid from</key> - <value>gültig ab</value> - </entry> - <entry> - <key>Product name</key> - <value>Produktname</value> - </entry> - <entry> - <key>Campaign</key> - <value>Kampagne</value> - </entry> - <entry> - <key>Product group</key> - <value>Produktgruppe</value> - </entry> - <entry> - <key>${CONTRACT_STATUS}</key> - <value>Status</value> - </entry> - <entry> - <key>From no. of units</key> - <value>ab Stückzahl</value> - </entry> - <entry> - <key>Maindocuments</key> - <value>Hauptdokumente</value> - </entry> - <entry> - <key>Price</key> - <value>Preis</value> - </entry> - <entry> - <key>Conditions</key> - <value>Konditionen</value> - </entry> - <entry> - <key>Standard</key> - </entry> - <entry> - <key>I / O</key> - <value>E / A</value> - </entry> - <entry> - <key>Date</key> - <value>Datum</value> - </entry> - <entry> - <key>IN</key> - <value>EIN</value> - </entry> - <entry> - <key>OUT</key> - <value>AUS</value> - </entry> - <entry> - <key>Warehouse</key> - <value>Lager</value> - </entry> - <entry> - <key>Reference</key> - <value>Referenz</value> - </entry> - <entry> - <key>The contract number already exists!</key> - <value>Die Vertragsnummer existiert bereits!</value> - </entry> - <entry> - <key>The product number already exists!</key> - <value>Die Produktnummer existiert bereits!</value> - </entry> - <entry> - <key>Quantity</key> - <value>Menge</value> - </entry> - <entry> - <key>Salesproject</key> - <value>Vertriebsprojekt</value> - </entry> - <entry> - <key>Rollout</key> - <value>Roll Out</value> - </entry> - <entry> - <key>Phase</key> - <value>Phase</value> - </entry> - <entry> - <key>Product number</key> - <value>Produktnummer</value> - </entry> - <entry> - <key>Project number</key> - <value>Projektnummer</value> - </entry> - <entry> - <key>Project title</key> - <value>Projekttitel</value> - </entry> - <entry> - <key>Project start</key> - <value>Projektstart</value> - </entry> - <entry> - <key>Volume</key> - <value>Volumen</value> - </entry> - <entry> - <key>Partial order</key> - <value>Teilauftrag</value> - </entry> - <entry> - <key>Open</key> - <value>Offen</value> - </entry> - <entry> - <key>Lost</key> - <value>Verloren</value> - </entry> - <entry> - <key>Order</key> - <value>Auftrag</value> - </entry> - <entry> - <key>Postponed</key> - <value>Vertagt</value> - </entry> - <entry> - <key>Aborted</key> - <value>Abgebrochen</value> - </entry> - <entry> - <key>Total net</key> - <value>Betrag netto</value> - </entry> - <entry> - <key>Offer</key> - <value>Angebot</value> - </entry> - <entry> - <key>Offer number</key> - <value>Angebotsnummer</value> - </entry> - <entry> - <key>Show my activities</key> - <value>Meine Aktivitäten anzeigen</value> - </entry> - <entry> - <key>Probability</key> - <value>Wahrscheinlichkeit</value> - </entry> - <entry> - <key>Total VAT</key> - <value>Betrag MWST</value> - </entry> - <entry> - <key>The offer number already exists!</key> - <value>Die Angebotsnummer existiert bereits!</value> - </entry> - <entry> - <key>0 %</key> - </entry> - <entry> - <key>Location</key> - <value>Ort</value> - </entry> - <entry> - <key>75 %</key> - </entry> - <entry> - <key>100 %</key> - </entry> - <entry> - <key>25 %</key> - </entry> - <entry> - <key>50 %</key> - </entry> - <entry> - <key>Header</key> - <value>Kopftext</value> - </entry> - <entry> - <key>Competitors</key> - <value>Mitbewerber</value> - </entry> - <entry> - <key>Won</key> - <value>Gewonnen</value> - </entry> - <entry> - <key>Checked</key> - <value>Geprüft</value> - </entry> - <entry> - <key>Sent</key> - <value>Versendet</value> - </entry> - <entry> - <key>Offeritems</key> - <value>Angebotsposten</value> - </entry> - <entry> - <key>Header text</key> - <value>Kopftext</value> - </entry> - <entry> - <key>Commodity group</key> - <value>Warengruppe</value> - </entry> - <entry> - <key>Footer text</key> - <value>Fußtext</value> - </entry> - <entry> - <key>Designation</key> - <value>Bezeichnung</value> - </entry> - <entry> - <key>Position</key> - <value>Position</value> - </entry> - <entry> - <key>Receipt</key> - <value>Beleg</value> - </entry> - <entry> - <key>Show all receipts</key> - <value>Alle Belege anzeigen</value> - </entry> - <entry> - <key>Optional</key> - <value>Optional</value> - </entry> - <entry> - <key>Article</key> - <value>Artikel</value> - </entry> - <entry> - <key>Show open salesprojects</key> - <value>Offene Vertriebsprojekte anzeigen</value> - </entry> - <entry> - <key>Receipt number</key> - <value>Belegnummer</value> - </entry> - <entry> - <key>Offeritem</key> - <value>Angebotsposten</value> - </entry> - <entry> - <key>Sum</key> - <value>Summe</value> - </entry> - <entry> - <key>Option4</key> - </entry> - <entry> - <key>Offers</key> - <value>Angebote</value> - </entry> - <entry> - <key>Option3</key> - </entry> - <entry> - <key>Option2</key> - </entry> - <entry> - <key>Option1</key> - </entry> - <entry> - <key>Countries</key> - <value>Länder</value> - </entry> - <entry> - <key>Options</key> - </entry> - <entry> - <key>Total gross</key> - <value>Betrag brutto</value> - </entry> - <entry> - <key>Minimal Count</key> - <value>Minimale Anzahl</value> - </entry> - <entry> - <key>Identical price list found!</key> - <value>Identische Preisliste gefunden!</value> - </entry> - <entry> - <key>Imminent appointments for today</key> - <value>Bevorstehende Termine für heute</value> - </entry> - <entry> - <key>Parts list</key> - <value>Stückliste</value> - </entry> - <entry> - <key>Parent</key> - </entry> - <entry> - <key>${EURO_SIGN}</key> - <value>€</value> - </entry> - <entry> - <key>Planned</key> - <value>Geplant -</value> - </entry> - <entry> - <key>Info</key> - <value>Info -</value> - </entry> - <entry> - <key>${VOLUME_MONEY}</key> - <value>Wert -</value> - </entry> - <entry> - <key>Milestones</key> - <value>Meilensteine -</value> - </entry> - <entry> - <key>Excreted</key> - <value>Ausgeschieden -</value> - </entry> - <entry> - <key>Reason</key> - <value>Begründung</value> - </entry> - <entry> - <key>Document</key> - <value>Dokument</value> - </entry> - <entry> - <key>Remark</key> - <value>Anmerkung</value> - </entry> - <entry> - <key>Competition</key> - <value>Mitbewerber</value> - </entry> - <entry> - <key>Forecast</key> - <value>Forecast</value> - </entry> - <entry> - <key>Show all products</key> - <value>Alle Produkte anzeigen</value> - </entry> - <entry> - <key>Role</key> - <value>Rolle</value> - </entry> - <entry> - <key>End date</key> - <value>Enddatum</value> - </entry> - <entry> - <key>Documents</key> - <value>Dokumente</value> - </entry> - <entry> - <key>New offer version</key> - <value>Neue Angebotsversion</value> - </entry> - <entry> - <key>Copy offer</key> - <value>Angebot kopieren</value> - </entry> - <entry> - <key>Vers. no.</key> - <value>Vers.-Nr.</value> - </entry> - <entry> - <key>Curr. purchase price</key> - <value>akt. EK-Preis</value> - </entry> - <entry> - <key>Show all offers</key> - <value>Alle Angebote anzeigen</value> - </entry> - <entry> - <key>Preview</key> - <value>Vorschau</value> - </entry> - <entry> - <key>Filetype</key> - <value>Dateityp</value> - </entry> - <entry> - <key>child of</key> - <value>Kind von</value> - </entry> - <entry> - <key>Products</key> - <value>Produkte</value> - </entry> - <entry> - <key>Filesize</key> - <value>Dateigrösse</value> - </entry> - <entry> - <key>TODELETE</key> - <value>Für Löschung vorgesehen</value> - </entry> - <entry> - <key>Contracts</key> - <value>Verträge</value> - </entry> - <entry> - <key>Classification</key> - <value>Klassifizierung</value> - </entry> - <entry> - <key>High price strategy</key> - <value>Hochpreisstrategie</value> - </entry> - <entry> - <key>Show all sent receipts</key> - <value>Alle versendeten Belege anzeigen</value> - </entry> - <entry> - <key>Low price strategy</key> - <value>Niedrigpreisstrategie</value> - </entry> - <entry> - <key>Sent offers</key> - <value>Versendete Angebote</value> - </entry> - <entry> - <key>responsible</key> - <value>verantwortlich</value> - </entry> - <entry> - <key>Main document</key> - <value>Hauptdokument</value> - </entry> - <entry> - <key>False</key> - <value>Nein</value> - </entry> - <entry> - <key>Show all Facebook posts of a user</key> - <value>Alle Facebook Beiträge eines Benutzers anzeigen</value> - </entry> - <entry> - <key>My Activities</key> - <value>Meine Aktivitäten</value> - </entry> - <entry> - <key>Everyone</key> - <value>Jeder</value> - </entry> - <entry> - <key>Combobox Value</key> - <value>Combobox-Wert</value> - </entry> - <entry> - <key>Salesprojects</key> - <value>Vertriebsprojekte</value> - </entry> - <entry> - <key>Open salesprojects</key> - <value>Offene Vertriebsprojekte</value> - </entry> - <entry> - <key>Other</key> - </entry> - <entry> - <key>Show all sent offers</key> - <value>Alle versendeten Angebote anzeigen</value> - </entry> - <entry> - <key>Show all Facebook posts of ADITO</key> - <value>Alle Facebook Beiträge von ADITO anzeigen</value> - </entry> - <entry> - <key>Individual</key> - </entry> - <entry> - <key>Receipts</key> - <value>Belege</value> - </entry> - <entry> - <key>Show all salesprojects</key> - <value>Alle Vertriebsprojekte anzeigen</value> - </entry> - <entry> - <key>Abomodel</key> - <value>Abomodell</value> - </entry> - <entry> - <key>Show all tweets of ADITO</key> - <value>Alle tweets von ADITO anzeigen</value> - </entry> - <entry> - <key>Show all tweets of a user</key> - <value>Alle tweets eines Benutzers anzeigen</value> - </entry> - <entry> - <key>Please update the ${FORECAST_ENGLISH}.</key> - <value>Bitte den Forecast überprüfen.</value> - </entry> - <entry> - <key>Industry</key> - <value>Branche</value> - </entry> - <entry> - <key>Value</key> - <value>Wert</value> - </entry> - <entry> - <key>no standard email office</key> - <value>keine Standard-E-Mail Büro vorhanden !</value> - </entry> - <entry> - <key>no valid format</key> - </entry> - <entry> - <key>Deliveryspecification</key> - <value>Lieferbedingung</value> - </entry> - <entry> - <key>Plus Salestax</key> - <value>zzgl.Summe UmSt</value> - </entry> - <entry> - <key>Pos.</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-3</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-2</key> - </entry> - <entry> - <key>Field staff</key> - <value>Aussendienst</value> - </entry> - <entry> - <key>0.00</key> - </entry> - <entry> - <key>Conditions of payment</key> - <value>Zahlungsbedingung</value> - </entry> - <entry> - <key>Relationship</key> - <value>Beziehung</value> - </entry> - <entry> - <key>Text Modular</key> - <value>Textbaustein</value> - </entry> - <entry> - <key>${BINARY_LIB_TOO_MANY_BINARIES}</key> - <value>Für dieses Binärfeld ist nur ein Datensatz erlaubt.</value> - </entry> - <entry> - <key>Put Reciever Into To</key> - <value>Bitte einen Adressat in 'to' eintragen!</value> - </entry> - <entry> - <key>customer checks</key> - <value>Kunde prüft</value> - </entry> - <entry> - <key>History</key> - <value>Verlauf</value> - </entry> - <entry> - <key>Total</key> - <value>Gesamt</value> - </entry> - <entry> - <key>Articlenumber</key> - <value>Artikelnummer</value> - </entry> - <entry> - <key>Native Name</key> - <value>Geburtsname</value> - </entry> - <entry> - <key>#,##0</key> - </entry> - <entry> - <key>Unitprice</key> - <value>Einzelpreis</value> - </entry> - <entry> - <key>Number</key> - <value>Nummer</value> - </entry> - <entry> - <key>Tasks</key> - <value>Aufgaben</value> - </entry> - <entry> - <key>New offer</key> - <value>Angebot erstellen</value> - </entry> - <entry> - <key>dd.MM.yyyy</key> - <value>dd.MM.yyyy</value> - </entry> - <entry> - <key>Articledescription</key> - <value>Artikelbezeichnung</value> - </entry> - <entry> - <key>Edit defaults</key> - <value>Standards anpassen</value> - </entry> - <entry> - <key>no valid mail-address format</key> - </entry> - <entry> - <key>Amount</key> - <value>Menge</value> - </entry> - <entry> - <key>#,##0.00</key> - </entry> - <entry> - <key>Latin Name</key> - <value>Lateinischer Name</value> - </entry> - <entry> - <key>Organisation name</key> - <value>Name der Organisation</value> - </entry> - <entry> - <key>Connection</key> - <value>Verknüpfung</value> - </entry> - <entry> - <key>standard email</key> - <value>Standard-Email</value> - </entry> - <entry> - <key>Creator</key> - <value>Ersteller</value> - </entry> - <entry> - <key>Timetracking</key> - <value>Zeiterfassung</value> - </entry> - <entry> - <key>Further informations</key> - <value>Weitere Informationen</value> - </entry> - <entry> - <key>Social</key> - <value>Sozial</value> - </entry> - <entry> - <key>Facebook Feed</key> - <value>Facebook Feed</value> - </entry> - <entry> - <key>Group1</key> - </entry> - <entry> - <key>Group2</key> - </entry> - <entry> - <key>Details</key> - <value>Details</value> - </entry> - <entry> - <key>Prices</key> - <value>Preise</value> - </entry> - <entry> - <key>Twitter</key> - <value>Twitter</value> - </entry> - <entry> - <key>Connections</key> - <value>Verknüpfungen</value> - </entry> - <entry> - <key>Object</key> - <value>Objekt</value> - </entry> - <entry> - <key>Attributes</key> - <value>Eigenschaften</value> - </entry> - <entry> - <key>Facebook</key> - <value>Facebook</value> - </entry> - <entry> - <key>Creation date</key> - <value>Erstellungsdatum</value> - </entry> - <entry> - <key>Year</key> - <value>Jahr</value> - </entry> - <entry> - <key>New receipt version</key> - <value>Neue Quittungsversion</value> - </entry> - <entry> - <key>Orderitems</key> - <value>Belegposten</value> - </entry> - <entry> - <key>Sent receipts</key> - <value>Versendete Belege</value> - </entry> - <entry> - <key>Entrydate must not be in the future</key> - <value>Eingangsdatum darf nicht in der Zukunft liegen</value> - </entry> - <entry> - <key>Copy receipt</key> - <value>Beleg kopieren</value> - </entry> - <entry> - <key>Orderitem</key> - </entry> - <entry> - <key>The order number already exists!</key> - </entry> - <entry> - <key>New activity</key> - <value>Neue Aktivität</value> - </entry> - <entry> - <key>July</key> - <value>Juli</value> - </entry> - <entry> - <key>ADITO Facebook Feed</key> - </entry> - <entry> - <key>ADITO Twitter Feed</key> - </entry> - <entry> - <key>June</key> - <value>Juni</value> - </entry> - <entry> - <key>October</key> - <value>Oktober</value> - </entry> - <entry> - <key>Take price</key> - <value>Preis übernehmen</value> - </entry> - <entry> - <key>Customer Base Sheet</key> - <value>Kundenstammblatt</value> - </entry> - <entry> - <key>Twitter Feed</key> - <value>Twitter Feed</value> - </entry> - <entry> - <key>November</key> - <value>November</value> - </entry> - <entry> - <key>December</key> - <value>Dezember</value> - </entry> - <entry> - <key>May</key> - <value>Mai</value> - </entry> - <entry> - <key>April</key> - <value>April</value> - </entry> - <entry> - <key>January</key> - <value>Januar</value> - </entry> - <entry> - <key>March</key> - <value>März</value> - </entry> - <entry> - <key>September</key> - <value>September</value> - </entry> - <entry> - <key>August</key> - <value>August</value> - </entry> - <entry> - <key>Category</key> - <value>Kategorie</value> - </entry> - <entry> - <key>February</key> - <value>Februar</value> - </entry> - <entry> - <key>{$TASK_STATUS}</key> - <value>Status</value> - </entry> - <entry> - <key>Task</key> - <value>Aufgabe</value> - </entry> - <entry> - <key>subject</key> - <value>Betreff</value> - </entry> - <entry> - <key>{$TASK_REQUESTOR}</key> - <value>Anforderer</value> - </entry> - <entry> - <key>task number</key> - <value>Aufgabennummer</value> - </entry> - <entry> - <key>description</key> - <value>Beschreibung</value> - </entry> - <entry> - <key>priority</key> - <value>Priorität</value> - </entry> - <entry> - <key>{$TASK_EDITOR}</key> - <value>Bearbeiter</value> - </entry> - <entry> - <key>{$TASK_PRIORITY_HIGH}</key> - <value>hoch</value> - </entry> - <entry> - <key>Seite</key> - </entry> - <entry> - <key>Senden per E-Mail</key> - </entry> - <entry> - <key>Betreff</key> - </entry> - <entry> - <key>title</key> - <value>Titel</value> - </entry> - <entry> - <key>von</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_LOW}</key> - <value>niedrig</value> - </entry> - <entry> - <key>Nur Eigene anzeigen</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NORMAL}</key> - <value>normal</value> - </entry> - <entry> - <key>Beschreibung</key> - </entry> - <entry> - <key>Unit price</key> - <value>Einzelpreis</value> - </entry> - <entry> - <key>type</key> - <value>Typ</value> - </entry> - <entry> - <key>Benutzer</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NONE}</key> - <value>keine</value> - </entry> - <entry> - <key>Directly responsible:</key> - <value>Ihr zuständiger Betreuer:</value> - </entry> - <entry> - <key>Appointment</key> - <value>Termin</value> - </entry> - <entry> - <key>Vorschau</key> - </entry> - <entry> - <key>Angebot</key> - </entry> - <entry> - <key>Salesdashboard</key> - <value>Vertriebsdashboard</value> - </entry> - <entry> - <key>details</key> - <value>details</value> - </entry> - <entry> - <key>Kundenstammblatt</key> - </entry> - <entry> - <key>Key figures</key> - </entry> - <entry> - <key>Person</key> - </entry> - <entry> - <key>Detail</key> - <value>Detail</value> - </entry> - <entry> - <key>Relations</key> - <value>Beziehungen</value> - </entry> - <entry> - <key>${FORECAST_ENGLISH}</key> - <value>Forecast</value> - </entry> - <entry> - <key>Title (original language)</key> - <value>Titel (ursprüngliche Sprache)</value> - </entry> - <entry> - <key>My Dashboard</key> - <value>My Dashboard</value> - </entry> - <entry> - <key>Key</key> - </entry> - <entry> - <key>Attribute</key> - <value>Eigenschaft</value> - </entry> - <entry> - <key>Container</key> - </entry> - <entry> - <key>Administration</key> - <value>Administration</value> - </entry> - <entry> - <key>Keyword</key> - <value>Schlüsselwort</value> - </entry> - <entry> - <key>Sorting</key> - <value>Sortierung</value> - </entry> - <entry> - <key>jdito</key> - </entry> - <entry> - <key>Context id</key> - </entry> - <entry> - <key>Context name</key> - </entry> - <entry> - <key>Cambodia</key> - <value>Kambodscha</value> - </entry> - <entry> - <key>Resigned</key> - <value>gekündigt</value> - </entry> - <entry> - <key>Customer</key> - <value>Kunde</value> - </entry> - <entry> - <key>Outgoing</key> - <value>ausgehend</value> - </entry> - <entry> - <key>Paraguay</key> - <value>Paraguay</value> - </entry> - <entry> - <key>New attribute</key> - <value>Neues Attribut</value> - </entry> - <entry> - <key>Solomon Islands</key> - <value>Salomon-Inseln</value> - </entry> - <entry> - <key>Montserrat</key> - <value>Montserrat</value> - </entry> - <entry> - <key>Guadeloupe</key> - <value>Guadeloupe</value> - </entry> - <entry> - <key>Product_technic</key> - <value>Produkt_Technik</value> - </entry> - <entry> - <key>Moldova (Republic of)</key> - <value>Republik Moldau</value> - </entry> - <entry> - <key>Seychelles</key> - <value>Seychellen</value> - </entry> - <entry> - <key>Canadian dollar</key> - <value>Kanadischer Dollar</value> - </entry> - <entry> - <key>Bahrain</key> - <value>Bahrain</value> - </entry> - <entry> - <key>Comoros</key> - <value>Komoren</value> - </entry> - <entry> - <key>Faroe Islands</key> - <value>Färöer Inseln</value> - </entry> - <entry> - <key>Finland</key> - <value>Finnland</value> - </entry> - <entry> - <key>Project_duration</key> - <value>Projekt_Dauer</value> - </entry> - <entry> - <key>Company_internationality</key> - <value>Unternehmen_Internationalität</value> - </entry> - <entry> - <key>Eritrea</key> - <value>Eritrea</value> - </entry> - <entry> - <key>Puerto Rico</key> - <value>Puerto Rico</value> - </entry> - <entry> - <key>Viet Nam</key> - <value>Vietnam</value> - </entry> - <entry> - <key>Libya</key> - <value>Libyen</value> - </entry> - <entry> - <key>French</key> - <value>Französisch</value> - </entry> - <entry> - <key>Cocos (Keeling) Islands</key> - <value>Kokosinseln (Keelinginseln)</value> - </entry> - <entry> - <key>Saint Helena, Ascension and Tristan da Cunha</key> - <value>St. Helena, Himmelfahrt und Tristan da Cunha</value> - </entry> - <entry> - <key>Liechtenstein</key> - <value>Liechtenstein</value> - </entry> - <entry> - <key>Product_functionality</key> - <value>Produkt_Funktionalität</value> - </entry> - <entry> - <key>New appointment</key> - <value>Neuer Termin</value> - </entry> - <entry> - <key>Bulgaria</key> - <value>Bulgarien</value> - </entry> - <entry> - <key>Jordan</key> - <value>Jordan</value> - </entry> - <entry> - <key>Côte d'Ivoire</key> - <value>Elfenbeinküste</value> - </entry> - <entry> - <key>United Arab Emirates</key> - <value>Vereinigte Arabische Emirate</value> - </entry> - <entry> - <key>Kenya</key> - <value>Kenia</value> - </entry> - <entry> - <key>None, individual count</key> - <value>keiner, Einzelberechnung</value> - </entry> - <entry> - <key>French Polynesia</key> - <value>Französisch Polynesien</value> - </entry> - <entry> - <key>Djibouti</key> - <value>Dschibuti</value> - </entry> - <entry> - <key>Cuba</key> - <value>Kuba</value> - </entry> - <entry> - <key>Saint Lucia</key> - <value>St. Lucia</value> - </entry> - <entry> - <key>Mayotte</key> - <value>Mayotte</value> - </entry> - <entry> - <key>Israel</key> - <value>Israel</value> - </entry> - <entry> - <key>San Marino</key> - <value>San Marino</value> - </entry> - <entry> - <key>Tajikistan</key> - <value>Tadschikistan</value> - </entry> - <entry> - <key>Warehouse 2</key> - <value>Lager 2</value> - </entry> - <entry> - <key>Warehouse 1</key> - <value>Lager 1</value> - </entry> - <entry> - <key>Gibraltar</key> - <value>Gibraltar</value> - </entry> - <entry> - <key>Warehouse 3</key> - <value>Lager 3</value> - </entry> - <entry> - <key>Cyprus</key> - <value>Zypern</value> - </entry> - <entry> - <key>Semiannually</key> - <value>halbjährlich</value> - </entry> - <entry> - <key>Northern Mariana Islands</key> - <value>Nördliche Marianneninseln</value> - </entry> - <entry> - <key>Malaysia</key> - <value>Malaysia</value> - </entry> - <entry> - <key>Letter</key> - <value>Brief</value> - </entry> - <entry> - <key>Armenia</key> - <value>Armenien</value> - </entry> - <entry> - <key>Brazil</key> - <value>Brasilien</value> - </entry> - <entry> - <key>Turks and Caicos Islands</key> - <value>Turks- und Caicosinseln</value> - </entry> - <entry> - <key>Cabo Verde</key> - <value>Cabo Verde</value> - </entry> - <entry> - <key>Ecuador</key> - <value>Ecuador</value> - </entry> - <entry> - <key>Iran (Islamic Republic of)</key> - <value>Iran (Islamische Republik)</value> - </entry> - <entry> - <key>Decision maker</key> - <value>Entscheider</value> - </entry> - <entry> - <key>Lao People's Democratic Republic</key> - <value>Demokratische Volksrepublik Laos</value> - </entry> - <entry> - <key>Maintenance contract</key> - <value>Wartungsvertrag</value> - </entry> - <entry> - <key>United States Minor Outlying Islands</key> - <value>Kleinere abgelegene Inseln der Vereinigten Staaten</value> - </entry> - <entry> - <key>Italy</key> - <value>Italien</value> - </entry> - <entry> - <key>${ORGTYPE_OTHER}</key> - <value>Sonstiges</value> - </entry> - <entry> - <key>Haiti</key> - <value>Haiti</value> - </entry> - <entry> - <key>Afghanistan</key> - <value>Afghanistan</value> - </entry> - <entry> - <key>Russian Federation</key> - <value>Russische Föderation</value> - </entry> - <entry> - <key>waiting</key> - <value>warten auf Rückmeldung</value> - </entry> - <entry> - <key>American Samoa</key> - <value>Amerikanischen Samoa-Inseln</value> - </entry> - <entry> - <key>Korea (Democratic People's Republic of)</key> - <value>Korea, Demokratische Volksrepublik)</value> - </entry> - <entry> - <key>United States dollar</key> - <value>US-Dollar</value> - </entry> - <entry> - <key>Superordinate Attribute</key> - <value>Übergeordnete Eigenschaft</value> - </entry> - <entry> - <key>Kyrgyzstan</key> - <value>Kirgisistan</value> - </entry> - <entry> - <key>Togo</key> - <value>Togo</value> - </entry> - <entry> - <key>Other_existing Customer</key> - <value>Sonstiges_Bestandskunde</value> - </entry> - <entry> - <key>Uzbekistan</key> - <value>Usbekistan</value> - </entry> - <entry> - <key>Dominica</key> - <value>Dominica</value> - </entry> - <entry> - <key>Benin</key> - <value>Benin</value> - </entry> - <entry> - <key>Virgin Islands (British)</key> - <value>Virgin Inseln, Britisch)</value> - </entry> - <entry> - <key>Sudan</key> - <value>Sudan</value> - </entry> - <entry> - <key>Portugal</key> - <value>Portugal</value> - </entry> - <entry> - <key>Grenada</key> - <value>Grenada</value> - </entry> - <entry> - <key>Latvia</key> - <value>Lettland</value> - </entry> - <entry> - <key>Mongolia</key> - <value>Mongolei</value> - </entry> - <entry> - <key>Morocco</key> - <value>Marokko</value> - </entry> - <entry> - <key>Guatemala</key> - <value>Guatemala</value> - </entry> - <entry> - <key>Pieces</key> - <value>Stück</value> - </entry> - <entry> - <key>Heard Island and McDonald Islands</key> - <value>Heard Island und McDonald Islands</value> - </entry> - <entry> - <key>Incoming</key> - <value>eingehend</value> - </entry> - <entry> - <key>Ghana</key> - <value>Ghana</value> - </entry> - <entry> - <key>Holy See</key> - <value>Heiliger Stuhl</value> - </entry> - <entry> - <key>India</key> - <value>Indien</value> - </entry> - <entry> - <key>Canada</key> - <value>Kanada</value> - </entry> - <entry> - <key>Attachment</key> - <value>Anhang</value> - </entry> - <entry> - <key>Maldives</key> - <value>Malediven</value> - </entry> - <entry> - <key>Service contract</key> - <value>Dienstleistungsvertrag</value> - </entry> - <entry> - <key>Taiwan</key> - <value>Taiwan</value> - </entry> - <entry> - <key>Central African Republic</key> - <value>Zentralafrikanische Republik</value> - </entry> - <entry> - <key>Fiji</key> - <value>Fidschi</value> - </entry> - <entry> - <key>Guinea</key> - <value>Guinea</value> - </entry> - <entry> - <key>Somalia</key> - <value>Somalia</value> - </entry> - <entry> - <key>Sao Tome and Principe</key> - <value>Sao Tome und Principe</value> - </entry> - <entry> - <key>United Kingdom of Great Britain and Northern Ireland</key> - <value>Vereinigtes Königreich Großbritannien und Nordirland</value> - </entry> - <entry> - <key>Equatorial Guinea</key> - <value>Äquatorialguinea</value> - </entry> - <entry> - <key>Kiribati</key> - <value>Kiribati</value> - </entry> - <entry> - <key>Costa Rica</key> - <value>Costa Rica</value> - </entry> - <entry> - <key>Supplier</key> - <value>Lieferant</value> - </entry> - <entry> - <key>Nigeria</key> - <value>Nigeria</value> - </entry> - <entry> - <key>Syrian Arab Republic</key> - <value>Syrische Arabische Republik</value> - </entry> - <entry> - <key>Timor-Leste</key> - <value>Timor-Leste</value> - </entry> - <entry> - <key>Product_mobile use</key> - <value>Produkt_Mobiler Einsatz</value> - </entry> - <entry> - <key>Samoa</key> - <value>Samoa</value> - </entry> - <entry> - <key>Spain</key> - <value>Spanien</value> - </entry> - <entry> - <key>Palau</key> - <value>Palau</value> - </entry> - <entry> - <key>Prospect</key> - <value>Interessent</value> - </entry> - <entry> - <key>Estonia</key> - <value>Estland</value> - </entry> - <entry> - <key>Not signed yet</key> - <value>noch nicht unterschrieben</value> - </entry> - <entry> - <key>Niue</key> - <value>Niue</value> - </entry> - <entry> - <key>Mozambique</key> - <value>Mosambik</value> - </entry> - <entry> - <key>El Salvador</key> - <value>El Salvador</value> - </entry> - <entry> - <key>Guam</key> - <value>Guam</value> - </entry> - <entry> - <key>Lesotho</key> - <value>Lesotho</value> - </entry> - <entry> - <key>Tonga</key> - <value>Tonga</value> - </entry> - <entry> - <key>Western Sahara</key> - <value>Westsahara</value> - </entry> - <entry> - <key>new</key> - <value>neu</value> - </entry> - <entry> - <key>Adviser</key> - <value>Berater</value> - </entry> - <entry> - <key>Company_size</key> - <value>Unternehmen_Größe</value> - </entry> - <entry> - <key>Republic of Kosovo</key> - <value>Republik Kosovo</value> - </entry> - <entry> - <key>South Sudan</key> - <value>Südsudan</value> - </entry> - <entry> - <key>Mauritius</key> - <value>Mauritius</value> - </entry> - <entry> - <key>Bouvet Island</key> - <value>Bouvet Island</value> - </entry> - <entry> - <key>Bolivia (Plurinational State of)</key> - <value>Bolivien (plurinationaler Staat)</value> - </entry> - <entry> - <key>Norfolk Island</key> - <value>Norfolkinsel</value> - </entry> - <entry> - <key>Sint Maarten (Dutch part)</key> - <value>Sint Maarten (niederländischer Teil)</value> - </entry> - <entry> - <key>Micronesia (Federated States of)</key> - <value>Mikronesien (Föderierte Staaten von)</value> - </entry> - <entry> - <key>Product_industry knowhow</key> - <value>Produkt_Branchen KnowHow</value> - </entry> - <entry> - <key>Progress</key> - <value>Fortschritt</value> - </entry> - <entry> - <key>United States of America</key> - <value>Vereinigte Staaten von Amerika</value> - </entry> - <entry> - <key>In review</key> - <value>zur Prüfung</value> - </entry> - <entry> - <key>Address purchase</key> - <value>Adresserwerb</value> - </entry> - <entry> - <key>Malta</key> - <value>Malta</value> - </entry> - <entry> - <key>Project_volume</key> - <value>Projekt_Volumen</value> - </entry> - <entry> - <key>Ireland</key> - <value>Irland</value> - </entry> - <entry> - <key>Inactive</key> - <value>Inaktiv</value> - </entry> - <entry> - <key>unassigned</key> - <value>nicht zugewiesen</value> - </entry> - <entry> - <key>France</key> - <value>Frankreich</value> - </entry> - <entry> - <key>Lithuania</key> - <value>Litauen</value> - </entry> - <entry> - <key>Korea (Republic of)</key> - <value>Korea (Republik)</value> - </entry> - <entry> - <key>${PRICELIST_SERVICE}</key> - <value>Service</value> - </entry> - <entry> - <key>English</key> - <value>Englisch</value> - </entry> - <entry> - <key>Nicaragua</key> - <value>Nicaragua</value> - </entry> - <entry> - <key>Macao</key> - <value>Macao</value> - </entry> - <entry> - <key>Mexico</key> - <value>Mexiko</value> - </entry> - <entry> - <key>Uganda</key> - <value>Uganda</value> - </entry> - <entry> - <key>Suriname</key> - <value>Suriname</value> - </entry> - <entry> - <key>Greenland</key> - <value>Grönland</value> - </entry> - <entry> - <key>Papua New Guinea</key> - <value>Papua Neu-Guinea</value> - </entry> - <entry> - <key>Kazakhstan</key> - <value>Kasachstan</value> - </entry> - <entry> - <key>Åland Islands</key> - <value>Ålandinseln</value> - </entry> - <entry> - <key>Bahamas</key> - <value>Bahamas</value> - </entry> - <entry> - <key>Mali</key> - <value>Mali</value> - </entry> - <entry> - <key>Marshall Islands</key> - <value>Marshallinseln</value> - </entry> - <entry> - <key>Panama</key> - <value>Panama</value> - </entry> - <entry> - <key>Bonaire, Sint Eustatius and Saba</key> - <value>Bonaire, Sint Eustatius und Saba</value> - </entry> - <entry> - <key>Tanzania, United Republic of</key> - <value>Tansania, Vereinigte Republik</value> - </entry> - <entry> - <key>Argentina</key> - <value>Argentinien</value> - </entry> - <entry> - <key>Belize</key> - <value>Belize</value> - </entry> - <entry> - <key>Zambia</key> - <value>Sambia</value> - </entry> - <entry> - <key>Congo</key> - <value>Kongo</value> - </entry> - <entry> - <key>Guinea-Bissau</key> - <value>Guinea-Bissau</value> - </entry> - <entry> - <key>Namibia</key> - <value>Namibia</value> - </entry> - <entry> - <key>External sales manager</key> - <value>Externer Verkaufsleiter</value> - </entry> - <entry> - <key>Georgia</key> - <value>Georgia</value> - </entry> - <entry> - <key>Saint Kitts and Nevis</key> - <value>St. Kitts und Nevis</value> - </entry> - <entry> - <key>Yemen</key> - <value>Jemen</value> - </entry> - <entry> - <key>The minimal count can't be larger than the maximal count!</key> - <value>Die minimale Anzahl darf nicht größer als die maximale Anzahl sein!</value> - </entry> - <entry> - <key>Aruba</key> - <value>Aruba</value> - </entry> - <entry> - <key>Madagascar</key> - <value>Madagaskar</value> - </entry> - <entry> - <key>Valid, unlimited</key> - <value>gültig, unbefristet</value> - </entry> - <entry> - <key>Svalbard and Jan Mayen</key> - <value>Svalbard und Jan Mayen</value> - </entry> - <entry> - <key>South Georgia and the South Sandwich Islands</key> - <value>Süd-Georgien und die südlichen Sandwich-Inseln</value> - </entry> - <entry> - <key>Sweden</key> - <value>Schweden</value> - </entry> - <entry> - <key>Malawi</key> - <value>Malawi</value> - </entry> - <entry> - <key>Andorra</key> - <value>Andorra</value> - </entry> - <entry> - <key>Poland</key> - <value>Polen</value> - </entry> - <entry> - <key>Tunisia</key> - <value>Tunesien</value> - </entry> - <entry> - <key>Tuvalu</key> - <value>Tuvalu</value> - </entry> - <entry> - <key>Lebanon</key> - <value>Libanon</value> - </entry> - <entry> - <key>Azerbaijan</key> - <value>Aserbaidschan</value> - </entry> - <entry> - <key>Czech Republic</key> - <value>Tschechische Republik</value> - </entry> - <entry> - <key>Not sent</key> - <value>Nicht versendet</value> - </entry> - <entry> - <key>Mauritania</key> - <value>Mauretanien</value> - </entry> - <entry> - <key>Guernsey</key> - <value>Guernsey</value> - </entry> - <entry> - <key>Kgs</key> - <value>Kg</value> - </entry> - <entry> - <key>Australia</key> - <value>Australien</value> - </entry> - <entry> - <key>Myanmar</key> - <value>Myanmar</value> - </entry> - <entry> - <key>Cameroon</key> - <value>Kamerun</value> - </entry> - <entry> - <key>Iceland</key> - <value>Island</value> - </entry> - <entry> - <key>Oman</key> - <value>Oman</value> - </entry> - <entry> - <key>Gabon</key> - <value>Gabun</value> - </entry> - <entry> - <key>Luxembourg</key> - <value>Luxemburg</value> - </entry> - <entry> - <key>Algeria</key> - <value>Algerien</value> - </entry> - <entry> - <key>Jersey</key> - <value>Jersey</value> - </entry> - <entry> - <key>Overview</key> - <value>Übersicht</value> - </entry> - <entry> - <key>Slovenia</key> - <value>Slowenien</value> - </entry> - <entry> - <key>Antigua and Barbuda</key> - <value>Antigua und Barbuda</value> - </entry> - <entry> - <key>Annually</key> - <value>jährlich</value> - </entry> - <entry> - <key>Participated</key> - <value>Teilgenommen</value> - </entry> - <entry> - <key>Colombia</key> - <value>Kolumbien</value> - </entry> - <entry> - <key>Project_reference</key> - <value>Projekt_Referenz</value> - </entry> - <entry> - <key>Minimal</key> - </entry> - <entry> - <key>Vanuatu</key> - <value>Vanuatu</value> - </entry> - <entry> - <key>Valid, limited</key> - <value>gültig, befristet</value> - </entry> - <entry> - <key>Honduras</key> - <value>Honduras</value> - </entry> - <entry> - <key>Antarctica</key> - <value>Antarktis</value> - </entry> - <entry> - <key>Nauru</key> - <value>Nauru</value> - </entry> - <entry> - <key>Burundi</key> - <value>Burundi</value> - </entry> - <entry> - <key>Project manager</key> - <value>Projektmanager</value> - </entry> - <entry> - <key>Singapore</key> - <value>Singapur</value> - </entry> - <entry> - <key>French Guiana</key> - <value>Französisch-Guayana</value> - </entry> - <entry> - <key>Hours</key> - <value>Stunden</value> - </entry> - <entry> - <key>Special price list</key> - <value>Sonderpreisliste</value> - </entry> - <entry> - <key>Christmas Island</key> - <value>Weihnachtsinsel</value> - </entry> - <entry> - <key>Project</key> - <value>Projekt</value> - </entry> - <entry> - <key>Netherlands</key> - <value>Niederlande</value> - </entry> - <entry> - <key>Product_flexibility</key> - <value>Produkt_Flexibilität</value> - </entry> - <entry> - <key>China</key> - <value>China</value> - </entry> - <entry> - <key>Martinique</key> - <value>Martinique</value> - </entry> - <entry> - <key>Own website</key> - <value>Eigene Website</value> - </entry> - <entry> - <key>Saint Pierre and Miquelon</key> - <value>Saint Pierre und Miquelon</value> - </entry> - <entry> - <key>Bhutan</key> - <value>Bhutan</value> - </entry> - <entry> - <key>Romania</key> - <value>Rumänien</value> - </entry> - <entry> - <key>Falkland Islands (Malvinas)</key> - <value>Falklandinseln (Malvinas)</value> - </entry> - <entry> - <key>Philippines</key> - <value>Philippinen</value> - </entry> - <entry> - <key>Pitcairn</key> - <value>Pitcairn</value> - </entry> - <entry> - <key>Zimbabwe</key> - <value>Zimbabwe</value> - </entry> - <entry> - <key>British Indian Ocean Territory</key> - <value>Britisches Territorium des Indischen Ozeans</value> - </entry> - <entry> - <key>Montenegro</key> - <value>Montenegro</value> - </entry> - <entry> - <key>Quarterly</key> - <value>vierteljährlich</value> - </entry> - <entry> - <key>Indonesia</key> - <value>Indonesien</value> - </entry> - <entry> - <key>Module</key> - <value>Modul</value> - </entry> - <entry> - <key>Angola</key> - <value>Angola</value> - </entry> - <entry> - <key>Internal</key> - <value>Intern</value> - </entry> - <entry> - <key>Roles</key> - <value>Rollen</value> - </entry> - <entry> - <key>Brunei Darussalam</key> - <value>Brunei Darussalam</value> - </entry> - <entry> - <key>New Caledonia</key> - <value>Neu-Kaledonien</value> - </entry> - <entry> - <key>Cayman Islands</key> - <value>Cayman Inseln</value> - </entry> - <entry> - <key>Congo (Democratic Republic of the)</key> - <value>Kongo (Demokratische Republik)</value> - </entry> - <entry> - <key>Resource</key> - <value>Ressource</value> - </entry> - <entry> - <key>Greece</key> - <value>Griechenland</value> - </entry> - <entry> - <key>Guyana</key> - <value>Guyana</value> - </entry> - <entry> - <key>Project assistant</key> - <value>Projektassistent</value> - </entry> - <entry> - <key>Iraq</key> - <value>Irak</value> - </entry> - <entry> - <key>Chile</key> - <value>Chile</value> - </entry> - <entry> - <key>Nepal</key> - <value>Nepal</value> - </entry> - <entry> - <key>${PRICELIST_DEFAULT}</key> - <value>Standard</value> - </entry> - <entry> - <key>Customer recommendation</key> - <value>Kundenempfehlung</value> - </entry> - <entry> - <key>Other_unknown</key> - <value>Sonstiges_Unbekannt</value> - </entry> - <entry> - <key>Isle of Man</key> - <value>Isle of Man</value> - </entry> - <entry> - <key>Ukraine</key> - <value>Ukraine</value> - </entry> - <entry> - <key>Curaçao</key> - <value>Curacao</value> - </entry> - <entry> - <key>Anguilla</key> - <value>Anguilla</value> - </entry> - <entry> - <key>Euro</key> - <value>Euro</value> - </entry> - <entry> - <key>Product_GUI</key> - <value>Produkt_GUI</value> - </entry> - <entry> - <key>${GENDER_OTHER}</key> - <value>Divers</value> - </entry> - <entry> - <key>Touchpoint</key> - <value>Kontaktpunkt</value> - </entry> - <entry> - <key>Turkey</key> - <value>Türkei</value> - </entry> - <entry> - <key>Belgium</key> - <value>Belgien</value> - </entry> - <entry> - <key>South Africa</key> - <value>Südafrika</value> - </entry> - <entry> - <key>Trinidad and Tobago</key> - <value>Trinidad und Tobago</value> - </entry> - <entry> - <key>Bermuda</key> - <value>Bermuda</value> - </entry> - <entry> - <key>Jamaica</key> - <value>Jamaika</value> - </entry> - <entry> - <key>Peru</key> - <value>Peru</value> - </entry> - <entry> - <key>Turkmenistan</key> - <value>Turkmenistan</value> - </entry> - <entry> - <key>Venezuela (Bolivarian Republic of)</key> - <value>Venezuela (Bolivarische Republik)</value> - </entry> - <entry> - <key>Tokelau</key> - <value>Tokelau</value> - </entry> - <entry> - <key>Hong Kong</key> - <value>Hongkong</value> - </entry> - <entry> - <key>Password</key> - <value>Passwort</value> - </entry> - <entry> - <key>Chad</key> - <value>Tschad</value> - </entry> - <entry> - <key>German</key> - <value>Deutsch</value> - </entry> - <entry> - <key>Thailand</key> - <value>Thailand</value> - </entry> - <entry> - <key>in process</key> - <value>in Bearbeitung</value> - </entry> - <entry> - <key>Saint Martin (French part)</key> - <value>Saint Martin (französischer Teil)</value> - </entry> - <entry> - <key>Kuwait</key> - <value>Kuwait</value> - </entry> - <entry> - <key>Palestine, State of</key> - <value>Palästina, Bundesstaat</value> - </entry> - <entry> - <key>Croatia</key> - <value>Kroatien</value> - </entry> - <entry> - <key>Cook Islands</key> - <value>Cookinseln</value> - </entry> - <entry> - <key>Fair</key> - <value>Messe</value> - </entry> - <entry> - <key>Sri Lanka</key> - <value>Sri Lanka</value> - </entry> - <entry> - <key>Uruguay</key> - <value>Uruguay</value> - </entry> - <entry> - <key>Liberia</key> - <value>Liberia</value> - </entry> - <entry> - <key>Burkina Faso</key> - <value>Burkina Faso</value> - </entry> - <entry> - <key>Swiss franc</key> - <value>Schweizerfranken</value> - </entry> - <entry> - <key>Swaziland</key> - <value>Swasiland</value> - </entry> - <entry> - <key>ended</key> - <value>abgeschlossen</value> - </entry> - <entry> - <key>Saint Barthélemy</key> - <value>Saint Barthélemy</value> - </entry> - <entry> - <key>Wallis and Futuna</key> - <value>Wallis und Futuna</value> - </entry> - <entry> - <key>Company_industry knowhow</key> - <value>Unternehmen_Branchen KnowHow</value> - </entry> - <entry> - <key>Monaco</key> - <value>Monaco</value> - </entry> - <entry> - <key>Spanish</key> - <value>Spanisch</value> - </entry> - <entry> - <key>Hungary</key> - <value>Ungarn</value> - </entry> - <entry> - <key>Réunion</key> - <value>Réunion</value> - </entry> - <entry> - <key>Belarus</key> - <value>Weißrussland</value> - </entry> - <entry> - <key>Albania</key> - <value>Albanien</value> - </entry> - <entry> - <key>Internal sales manager</key> - <value>Interner Vertrieb</value> - </entry> - <entry> - <key>Virgin Islands (U.S.)</key> - <value>Jungferninseln (US)</value> - </entry> - <entry> - <key>New Zealand</key> - <value>Neuseeland</value> - </entry> - <entry> - <key>Senegal</key> - <value>Senegal</value> - </entry> - <entry> - <key>Ethiopia</key> - <value>Äthiopien</value> - </entry> - <entry> - <key>Macedonia (the former Yugoslav Republic of)</key> - <value>Mazedonien (ehemalige jugoslawische Republik)</value> - </entry> - <entry> - <key>Egypt</key> - <value>Ägypten</value> - </entry> - <entry> - <key>Sierra Leone</key> - <value>Sierra Leone</value> - </entry> - <entry> - <key>Saudi Arabia</key> - <value>Saudi Arabien</value> - </entry> - <entry> - <key>Pakistan</key> - <value>Pakistan</value> - </entry> - <entry> - <key>Gambia</key> - <value>Gambia</value> - </entry> - <entry> - <key>Qatar</key> - <value>Katar</value> - </entry> - <entry> - <key>Slovakia</key> - <value>Slowakei</value> - </entry> - <entry> - <key>Serbia</key> - <value>Serbien</value> - </entry> - <entry> - <key>Bosnia and Herzegovina</key> - <value>Bosnien und Herzegowina</value> - </entry> - <entry> - <key>Framework contract</key> - <value>Rahmenvertrag</value> - </entry> - <entry> - <key>Niger</key> - <value>Niger</value> - </entry> - <entry> - <key>Rwanda</key> - <value>Ruanda</value> - </entry> - <entry> - <key>French Southern Territories</key> - <value>Südfranzösische Territorien</value> - </entry> - <entry> - <key>Bangladesh</key> - <value>Bangladesch</value> - </entry> - <entry> - <key>Barbados</key> - <value>Barbados</value> - </entry> - <entry> - <key>Botswana</key> - <value>Botswana</value> - </entry> - <entry> - <key>Saint Vincent and the Grenadines</key> - <value>St. Vincent und die Grenadinen</value> - </entry> - <entry> - <key>Denmark</key> - <value>Dänemark</value> - </entry> - <entry> - <key>Dominican Republic</key> - <value>Dominikanische Republik</value> - </entry> - <entry> - <key>MAL</key> - </entry> - <entry> - <key>SQO</key> - </entry> - <entry> - <key>NQC</key> - </entry> - <entry> - <key>MQL</key> - </entry> - <entry> - <key>SAL</key> - </entry> - <entry> - <key>Checkbox</key> - <value>Checkbox</value> - </entry> - <entry> - <key>Numeric value</key> - <value>Zahlenwert</value> - </entry> - <entry> - <key>decline</key> - <value>Ablehnen</value> - </entry> - <entry> - <key>Text</key> - </entry> - <entry> - <key>Group</key> - <value>Gruppe</value> - </entry> - <entry> - <key>Combobox</key> - <value>Combobox</value> - </entry> - <entry> - <key>tentative</key> - <value>Vorläufig</value> - </entry> - <entry> - <key>${NUMBER}</key> - <value>Zahl</value> - </entry> - <entry> - <key>Name \"%0\" already used for container \"%1\"</key> - </entry> - <entry> - <key>CHAR_VALUE</key> - </entry> - <entry> - <key>Keyword Attribute</key> - <value>Schlüsselwort-Eigenschaft</value> - </entry> - <entry> - <key>in</key> - </entry> - <entry> - <key>Keyword Attribute Values</key> - <value>Schlüsselwort-Eigenschaft-Werte</value> - </entry> - <entry> - <key>Boolean value</key> - </entry> - <entry> - <key>accept</key> - <value>akzeptieren</value> - </entry> - <entry> - <key>The ZIP code does not match the format of the country.</key> - <value>Die Postleitzahl hat nicht das Format des ausgewählten Landes.</value> - </entry> - <entry> - <key>String value</key> - <value>String-Wert</value> - </entry> - <entry> - <key>The code number is not a valid number.</key> - <value>The code number is not a valid number.</value> - </entry> - <entry> - <key>${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0</key> - <value>Der DB-Typ wird in der Funktion %0 nicht unterstützt.</value> - </entry> - <entry> - <key>${PRODUCT_LIB_NO_PRODUCT_ID} function: %0</key> - <value>Es wird der Funktion %0 keine Produktid übergeben.</value> - </entry> - <entry> - <key>Object type</key> - <value>Typ</value> - </entry> - <entry> - <key>Print Offer</key> - <value>Angebot drucken</value> - </entry> - <entry> - <key>relations</key> - </entry> - <entry> - <key>Time</key> - <value>Zeit</value> - </entry> - <entry> - <key>New task</key> - <value>Neue Aufgabe</value> - </entry> - <entry> - <key>My tasks</key> - <value>Meine Aufgaben</value> - </entry> - <entry> - <key>the specified key has to be unique for that container but does already exist</key> - </entry> - <entry> - <key>Add participant to Campaign</key> - <value>Kampagnenteilnehmer/in hinzufügen</value> - </entry> - <entry> - <key>Relationtype</key> - <value>Beziehungsart</value> - </entry> - <entry> - <key>Tree</key> - <value>Baum</value> - </entry> - <entry> - <key>100%</key> - </entry> - <entry> - <key>Mobil</key> - </entry> - <entry> - <key>25%</key> - </entry> - <entry> - <key>50%</key> - </entry> - <entry> - <key>75%</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword container \"%1\"</key> - </entry> - <entry> - <key>competitor</key> - <value>Mitbewerber</value> - </entry> - <entry> - <key>0%</key> - </entry> - <entry> - <key>acquainted with</key> - <value>Bekannt mit</value> - </entry> - <entry> - <key>collaboration with</key> - <value>Zusammenarbeit mit</value> - </entry> - <entry> - <key>parent company</key> - <value>Konzernmutter</value> - </entry> - <entry> - <key>society</key> - <value>Verband</value> - </entry> - <entry> - <key>ankle of</key> - <value>Enkel/in von</value> - </entry> - <entry> - <key>solicits</key> - <value>Bewirbt</value> - </entry> - <entry> - <key>supervisor of</key> - <value>Vorgesetzter von</value> - </entry> - <entry> - <key>reports to</key> - <value>Berichtet an</value> - </entry> - <entry> - <key>subsidiary</key> - <value>Tochtergesellschaft</value> - </entry> - <entry> - <key>supported by</key> - <value>Wird unterstützt von</value> - </entry> - <entry> - <key>member</key> - <value>Mitglied</value> - </entry> - <entry> - <key>promotion target of</key> - <value>Werbezielgruppe von</value> - </entry> - <entry> - <key>supports</key> - <value>Unterstützt</value> - </entry> - <entry> - <key>parent of</key> - <value>Elternteil von</value> - </entry> - <entry> - <key>grandparents of</key> - <value>Großeltern von</value> - </entry> - <entry> - <key>Memo</key> - <value>Memo</value> - </entry> - <entry> - <key>Function</key> - <value>Funktion</value> - </entry> - <entry> - <key>Username already exists!</key> - <value>Der Benutzername existiert bereits!</value> - </entry> - <entry> - <key>Relational</key> - </entry> - <entry> - <key>Only numbers are allowed.</key> - <value>Es sind nur Zahlen erlaubt.</value> - </entry> - <entry> - <key>MQC</key> - </entry> - <entry> - <key>Japan</key> - <value>Japan</value> - </entry> - <entry> - <key>7 days net</key> - <value>7 Tage netto</value> - </entry> - <entry> - <key>carriage free</key> - <value>frei Haus</value> - </entry> - <entry> - <key>8 days 2% discount, 30 days net</key> - <value>8 Tage 2% Skonto, 30 Tage netto</value> - </entry> - <entry> - <key>CIF</key> - </entry> - <entry> - <key>ex works</key> - <value>ab Werk</value> - </entry> - <entry> - <key>Payment term</key> - <value>Zahlungskondition</value> - </entry> - <entry> - <key>30 days net</key> - <value>30 Tage netto</value> - </entry> - <entry> - <key>Contactrole</key> - <value>Funktion</value> - </entry> - <entry> - <key>&Aufg / Term (%0/%1)</key> - </entry> - <entry> - <key>Verschieben auf Datum?</key> - </entry> - <entry> - <key>niedrig</key> - </entry> - <entry> - <key>Gebucht</key> - </entry> - <entry> - <key>Other Contactroles</key> - <value>Weitere Funktionen</value> - </entry> - <entry> - <key>Bitte Datumseingabe prüfen!</key> - </entry> - <entry> - <key>In Bearbeitung</key> - </entry> - <entry> - <key>OK</key> - </entry> - <entry> - <key>Nicht begonnen</key> - </entry> - <entry> - <key>Bitte Filterbedingungen setzen</key> - </entry> - <entry> - <key>Bestätigt</key> - </entry> - <entry> - <key>True</key> - <value>Ja</value> - </entry> - <entry> - <key>Vorläufig</key> - </entry> - <entry> - <key>keine</key> - </entry> - <entry> - <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key> - </entry> - <entry> - <key>Aufgaben von</key> - </entry> - <entry> - <key>&Aufgaben (%0)</key> - </entry> - <entry> - <key>erledigt / zurückgestellt</key> - </entry> - <entry> - <key>hoch</key> - </entry> - <entry> - <key>Zurückgestellt</key> - </entry> - <entry> - <key>Erledigt</key> - </entry> - <entry> - <key>Abgesagt</key> - </entry> - <entry> - <key>Außer Haus</key> - </entry> - <entry> - <key>Abbrechen</key> - </entry> - <entry> - <key>Benutzer auswählen</key> - </entry> - <entry> - <key>delegiert</key> - </entry> - <entry> - <key>frei</key> - </entry> - <entry> - <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key> - </entry> - <entry> - <key>Username</key> - <value>Benutzername</value> - </entry> - <entry> - <key>normal</key> - </entry> - <entry> - <key>Termine von</key> - </entry> - <entry> - <key>nur Verschiebung in die Zukunft erlaubt!</key> - </entry> - <entry> - <key>Kategorie</key> - </entry> - <entry> - <key>Product content</key> - <value>Produktinhalt</value> - </entry> - <entry> - <key>Know How</key> - <value>Know How</value> - </entry> - <entry> - <key>Personal appearance</key> - <value>Persönliches Auftreten</value> - </entry> - <entry> - <key>Market situation</key> - <value>Marktsituation</value> - </entry> - <entry> - <key>Liquidity</key> - <value>Liquidität</value> - </entry> - <entry> - <key>Price policy</key> - <value>Preispolitik</value> - </entry> - <entry> - <key>VAT in %</key> - <value>UmsSt. in %</value> - </entry> - <entry> - <key>Time in minutes</key> - <value>Zeit in Minuten</value> - </entry> - <entry> - <key>Sales manager</key> - <value>Vertriebsleiter</value> - </entry> - <entry> - <key>Recipients</key> - <value>Empfänger</value> - </entry> - <entry> - <key>IT</key> - <value>IT</value> - </entry> - <entry> - <key>Administrator</key> - </entry> - <entry> - <key>Managing director</key> - <value>Geschäftsführer</value> - </entry> - <entry> - <key>Production manager</key> - <value>Produktionsleiter</value> - </entry> - <entry> - <key>Production</key> - <value>Produktion</value> - </entry> - <entry> - <key>CEO</key> - </entry> - <entry> - <key>Purchasing manager</key> - <value>Einkaufsleiter</value> - </entry> - <entry> - <key>Marketing manager</key> - <value>Marketingleiter</value> - </entry> - <entry> - <key>IT manager</key> - <value>IT-Leiter</value> - </entry> - <entry> - <key>Marketing</key> - <value>Marketing</value> - </entry> - <entry> - <key>CSO</key> - </entry> - <entry> - <key>Executive board</key> - <value>Vorstand</value> - </entry> - <entry> - <key>Supervisory board</key> - <value>Aufsichtsrat</value> - </entry> - <entry> - <key>Management</key> - <value>Geschäftsleitung</value> - </entry> - <entry> - <key>Manufacturer</key> - <value>Hersteller</value> - </entry> - <entry> - <key>Competitor</key> - <value>Wettbewerber</value> - </entry> - <entry> - <key>Partner</key> - <value>Partner</value> - </entry> - <entry> - <key>Protected</key> - <value>Geschützt</value> - </entry> - <entry> - <key>false</key> - </entry> - <entry> - <key>true</key> - </entry> - <entry> - <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key> - <value>%0 muss zwischen %2 und %3 sein.</value> - </entry> - <entry> - <key>Email</key> - <value>E-Mail</value> - </entry> - <entry> - <key>{$OBJECTLINK_TYPE}</key> - <value>Art</value> - </entry> - <entry> - <key>{$OBJECTLINK_OBJECT}</key> - <value>Objekt</value> - </entry> - <entry> - <key>Password and confirmation must be the same!</key> - <value>Die Passwörter stimmen nicht überein!</value> - </entry> - <entry> - <key>Begin</key> - <value>Beginn</value> - </entry> - <entry> - <key>Maturity</key> - <value>Fällig</value> - </entry> - <entry> - <key>This private person doeas already exist and can not be created once more.</key> - <value>Diese Privatperson existiert bereits und kann daher nicht noch ein mal angelegt werden.</value> - </entry> - <entry> - <key>Project Management</key> - <value>Projektmanagement</value> - </entry> - <entry> - <key>Support</key> - <value>Support</value> - </entry> - <entry> - <key>{$ADDRESS_IDENTIFIER}</key> - <value>Bezeichnung</value> - </entry> - <entry> - <key>Count</key> - </entry> - <entry> - <key>Chart</key> - </entry> - <entry> - <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key> - </entry> - <entry> - <key>Pending</key> - <value>Ausstehend</value> - </entry> - <entry> - <key>Hierarchy</key> - <value>Hierarchie</value> - </entry> - <entry> - <key>Object relation</key> - <value>Beziehungen</value> - </entry> - <entry> - <key>Relation type 1</key> - <value>Beziehungsart 1</value> - </entry> - <entry> - <key>Relation type 2</key> - <value>Beziehungsart 2</value> - </entry> - <entry> - <key>Relation type</key> - <value>Beziehungstyp</value> - </entry> - <entry> - <key>Context 1</key> - <value>Context 1</value> - </entry> - <entry> - <key>Context 2</key> - <value>Context 2</value> - </entry> - <entry> - <key>Delete all usage</key> - <value>Lösche jede Verwendung</value> - </entry> - <entry> - <key>Deleted all usages of \"%0\".</key> - <value>Jede Verwendung von \"%0\" wurde gelöscht.</value> - </entry> - <entry> - <key>Successful</key> - </entry> - <entry> - <key>Enable relation type 2</key> - <value>Beziehungsart 2 aktiv</value> - </entry> - <entry> - <key>Salesproject Analyses</key> - </entry> - <entry> - <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> - </entry> - <entry> - <key>Days count</key> - <value>Anzahl Tage</value> - </entry> - <entry> - <key>Clear forecast and set state to '%0'?</key> - <value>Forecast löschen und status auf '%0' setzen?</value> - </entry> - <entry> - <key>Would you really like to clear the forecast and set the state to '%0'?</key> - <value>Möchten Sie wirklich den Forecast löschen und den status auf '%0' setzen?</value> - </entry> - <entry> - <key>This cannot be undone!</key> - <value>Das kann nicht rückgängig gemacht werden!</value> - </entry> - <entry> - <key>[%0]the tableName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 has to be a string or array but it is %2</key> - </entry> - <entry> - <key>[%0]has now an incorrect length; estimated 2 elements but got %1</key> - </entry> - <entry> - <key>[%0]the columnName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 is an object but seems not to be a valid array or array-like</key> - </entry> - <entry> - <key>Responsible</key> - <value>Verantwortlich</value> - </entry> - <entry> - <key>Analyses</key> - </entry> - <entry> - <key>Variable costs</key> - <value>Variable Kosten</value> - </entry> - <entry> - <key>To-Do</key> - </entry> - <entry> - <key>Calendar</key> - <value>Kalender</value> - </entry> - <entry> - <key>${SQL_LIB_UNDEFINED_VALUE} field: %0</key> - <value>Der Wert für das Feld %0 ist undefined.</value> - </entry> - <entry> - <key>Approved</key> - <value>Freigegeben</value> - </entry> - <entry> - <key>Completed</key> - <value>Abgeschlossen</value> - </entry> - <entry> - <key>In planning</key> - <value>In Planung</value> - </entry> - <entry> - <key>Auswertung</key> - </entry> - <entry> - <key>Kampagnenschritte</key> - </entry> - <entry> - <key>Neuer Kampagnenschritt</key> - </entry> - <entry> - <key>Neue Kampagne</key> - </entry> - <entry> - <key>Added</key> - <value>Hinzugefügt</value> - </entry> - <entry> - <key>Current participants</key> - <value>Aktuelle Teilnehmer</value> - </entry> - <entry> - <key>Kampagnenzeitraum</key> - </entry> - <entry> - <key>Hauptverantw.</key> - </entry> - <entry> - <key>New campaign step</key> - <value>Neue Kampagnenstufe</value> - </entry> - <entry> - <key>Cost</key> - <value>Kosten</value> - </entry> - <entry> - <key>file '%0' cannot be read</key> - </entry> - <entry> - <key>Importer</key> - </entry> - <entry> - <key>Participant</key> - <value>Teilnehmer</value> - </entry> - <entry> - <key>Printing costs</key> - <value>Druckkosten</value> - </entry> - <entry> - <key>Shipping costs</key> - <value>Porto</value> - </entry> - <entry> - <key>yyyy-MM-dd HH:mm:ss</key> - </entry> - <entry> - <key>file '%0' does not exist or you have got no permission on this file</key> - </entry> - <entry> - <key>Zip</key> - </entry> - <entry> - <key>Salesproject member</key> - <value>Projektteam</value> - </entry> - <entry> - <key>Layout costs</key> - <value>Layout</value> - </entry> - <entry> - <key>Serial</key> - <value>Serie </value> - </entry> - <entry> - <key>${WEBSERVICE_ERROR} url:%0 status:%1</key> - <value>Webservice nicht erreichbar. URL: %0 %1</value> - </entry> - <entry> - <key>Step</key> - <value>Stufe</value> - </entry> - <entry> - <key>Fix cost</key> - <value>Fixkosten</value> - </entry> - <entry> - <key>per</key> - <value>pro</value> - </entry> - <entry> - <key>Content</key> - <value>Inhalt</value> - </entry> - <entry> - <key>The max participants count has to be equal or greater than the count of the current participants!</key> - <value>Die maximale Teilnehmerzahl muss gleich oder größer der aktuellen Teilnehmerzahl sein!</value> - </entry> - <entry> - <key>Id value</key> - </entry> - <entry> - <key>Order executed</key> - </entry> - <entry> - <key>Liquibase</key> - </entry> - <entry> - <key>Number value</key> - </entry> - <entry> - <key>Author</key> - </entry> - <entry> - <key>Position Id</key> - </entry> - <entry> - <key>ISO3</key> - </entry> - <entry> - <key>ISO2</key> - </entry> - <entry> - <key>Communication Id</key> - </entry> - <entry> - <key>Attribute Id</key> - </entry> - <entry> - <key>Modification user</key> - </entry> - <entry> - <key>Headline</key> - <value>Kopfanrede</value> - </entry> - <entry> - <key>Salesorder Id</key> - </entry> - <entry> - <key>Salesproject milestone Id</key> - </entry> - <entry> - <key>Appointment Id</key> - </entry> - <entry> - <key>Locked</key> - </entry> - <entry> - <key>Timetracking Id</key> - </entry> - <entry> - <key>Exec type</key> - </entry> - <entry> - <key>Date value</key> - </entry> - <entry> - <key>NUMBER VALUE</key> - </entry> - <entry> - <key>Salesproject forecast Id</key> - </entry> - <entry> - <key>ID</key> - </entry> - <entry> - <key>Keyword attribute relation Id</key> - </entry> - <entry> - <key>Minimal count</key> - </entry> - <entry> - <key>Id</key> - </entry> - <entry> - <key>Start date</key> - <value>Startdatum</value> - </entry> - <entry> - <key>Object 1 row Id</key> - </entry> - <entry> - <key>Side</key> - </entry> - <entry> - <key>Salesproject Id</key> - </entry> - <entry> - <key>Product Id</key> - </entry> - <entry> - <key>Sort</key> - </entry> - <entry> - <key>Relation Title</key> - </entry> - <entry> - <key>%0 \"%1\"</key> - </entry> - <entry> - <key>Maximal count</key> - </entry> - <entry> - <key>Data executed</key> - </entry> - <entry> - <key>Indexsearch</key> - </entry> - <entry> - <key>Appointment link Id</key> - </entry> - <entry> - <key>Relation Type</key> - </entry> - <entry> - <key>Salesproject member Id</key> - </entry> - <entry> - <key>Salesproject source Id</key> - </entry> - <entry> - <key>Item sort</key> - </entry> - <entry> - <key>%0 modified.</key> - <value>%0 geändert.</value> - </entry> - <entry> - <key>Contract Id</key> - </entry> - <entry> - <key>Int value</key> - </entry> - <entry> - <key>Object 2 row Id</key> - </entry> - <entry> - <key>Source tablename Id</key> - </entry> - <entry> - <key>Source tablename</key> - </entry> - <entry> - <key>Contact Id</key> - </entry> - <entry> - <key>Sales area</key> - </entry> - <entry> - <key>Parent Id</key> - </entry> - <entry> - <key>Task link Id</key> - </entry> - <entry> - <key>BOOL VALUE</key> - </entry> - <entry> - <key>Keyword attribute Id</key> - </entry> - <entry> - <key>Log type</key> - </entry> - <entry> - <key>Object row Id</key> - </entry> - <entry> - <key>Labels</key> - </entry> - <entry> - <key>%0 deleted.</key> - <value>%0 gelöscht.</value> - </entry> - <entry> - <key>Salesproject competition Id</key> - </entry> - <entry> - <key>Activity Id</key> - </entry> - <entry> - <key>Person Id</key> - </entry> - <entry> - <key>Offer item Id</key> - </entry> - <entry> - <key>Offer Id</key> - </entry> - <entry> - <key>Name native</key> - </entry> - <entry> - <key>Flag</key> - </entry> - <entry> - <key>Address Id</key> - </entry> - <entry> - <key>Name latin</key> - </entry> - <entry> - <key>Destination Id</key> - </entry> - <entry> - <key>Sex</key> - </entry> - <entry> - <key>Product price Id</key> - </entry> - <entry> - <key>%0 added.</key> - <value>%0 eingefügt.</value> - </entry> - <entry> - <key>Object Relation Type</key> - </entry> - <entry> - <key>Entry date</key> - </entry> - <entry> - <key>Object relation type 2</key> - </entry> - <entry> - <key>Object relation type 1</key> - </entry> - <entry> - <key>Modification date</key> - </entry> - <entry> - <key>Object Type</key> - </entry> - <entry> - <key>%0 from \"%1\" to \"%2\"</key> - <value>%0 von \"%1\" auf \"%2\"</value> - </entry> - <entry> - <key>MD5 Sum</key> - </entry> - <entry> - <key>Letter salutation</key> - <value>Briefanrede</value> - </entry> - <entry> - <key>Lock granted</key> - </entry> - <entry> - <key>Required fields</key> - </entry> - <entry> - <key>Address addition</key> - </entry> - <entry> - <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> - </entry> - <entry> - <key>Attribute usage Id</key> - </entry> - <entry> - <key>LogHistory</key> - </entry> - <entry> - <key>Locked by</key> - </entry> - <entry> - <key>Desciption</key> - </entry> - <entry> - <key>Salutation Id</key> - </entry> - <entry> - <key>Comments</key> - </entry> - <entry> - <key>Task Id</key> - </entry> - <entry> - <key>Valid to</key> - <value>Gültig bis</value> - </entry> - <entry> - <key>ZIP regex</key> - </entry> - <entry> - <key>Keyword entry Id</key> - </entry> - <entry> - <key>Stop costs</key> - </entry> - <entry> - <key>Contexts</key> - </entry> - <entry> - <key>Assigned to</key> - </entry> - <entry> - <key>%0 from \"%1\" to %2 \"%3\"</key> - <value>%0 von \"%1\" auf %2 \"%3\"</value> - </entry> - <entry> - <key>Date start</key> - </entry> - <entry> - <key>Deployment Id</key> - </entry> - <entry> - <key>Address format</key> - </entry> - <entry> - <key>Activity link Id</key> - </entry> - <entry> - <key>Date end</key> - </entry> - <entry> - <key>Creation user</key> - </entry> - <entry> - <key>Object Id</key> - </entry> - <entry> - <key>Is active</key> - </entry> - <entry> - <key>Product relationship</key> - </entry> - <entry> - <key>Salesorder item Id</key> - </entry> - <entry> - <key>Char value</key> - </entry> - <entry> - <key>Attribute relation Id</key> - </entry> - <entry> - <key>Tag</key> - </entry> - <entry> - <key>Title suffix</key> - </entry> - <entry> - <key>Step costs</key> - </entry> - <entry> - <key>Min. Stock</key> - </entry> - <entry> - <key>User</key> - <value>Benutzer</value> - </entry> - <entry> - <key>Stock Id</key> - </entry> - <entry> - <key>Tablename</key> - </entry> - <entry> - <key>CHAR VALUE</key> - </entry> - <entry> - <key>Total costs</key> - <value>Gesamtkosten</value> - </entry> - <entry> - <key>Parent context</key> - </entry> - <entry> - <key>Linked Appointments</key> - <value>Verknüpfte Termine</value> - </entry> - <entry> - <key>Organisation Id</key> - </entry> - <entry> - <key>Tablename Id</key> - </entry> - <entry> - <key>Termin</key> - </entry> - <entry> - <key>rebuild Index</key> - </entry> - <entry> - <key>Charts</key> - </entry> - <entry> - <key>Keywords</key> - </entry> - <entry> - <key>Days running</key> - <value>Tage laufend</value> - </entry> - <entry> - <key>Logs</key> - </entry> - <entry> - <key>Mail</key> - </entry> - <entry> - <key>Phonecall</key> - </entry> - <entry> - <key>Chart 2</key> - </entry> - <entry> - <key>Log</key> - </entry> - <entry> - <key>Offer Header Text</key> - <value>Angebot Kopftext</value> - </entry> - <entry> - <key>Employees</key> - <value>Personal</value> - </entry> - <entry> - <key>Todo</key> - </entry> - <entry> - <key>Days remaining</key> - <value>Tage verbleibend</value> - </entry> - <entry> - <key>Offer Footer Text</key> - <value>Angebot Fußtext</value> - </entry> - <entry> - <key>Date new</key> - </entry> - <entry> - <key>Date edit</key> - </entry> - <entry> - <key>Keyword Attributes</key> - </entry> - <entry> - <key>Student/Internship</key> - <value>Student/Praktikant</value> - </entry> - <entry> - <key>Food</key> - <value>Lebensmittel</value> - </entry> - <entry> - <key>200 to 349T</key> - <value>200 bis 349T</value> - </entry> - <entry> - <key>Within 6 months</key> - <value>Innerhalb 6 Monaten</value> - </entry> - <entry> - <key>No project planned</key> - <value>Kein Projekt geplant</value> - </entry> - <entry> - <key>Logistics</key> - <value>Logistik</value> - </entry> - <entry> - <key>Skilled workers</key> - <value>Fachkräfte</value> - </entry> - <entry> - <key>Purchasing</key> - <value>Einkauf</value> - </entry> - <entry> - <key>Rate</key> - <value>Bewerten</value> - </entry> - <entry> - <key>Choice</key> - <value>Auswahl</value> - </entry> - <entry> - <key>points</key> - <value>Punkte</value> - </entry> - <entry> - <key>Education</key> - <value>Bildung</value> - </entry> - <entry> - <key>Public</key> - <value>Öffentlich</value> - </entry> - <entry> - <key>Building and construction suppliers</key> - <value>Bau- und Bauzulieferer</value> - </entry> - <entry> - <key>0 to 49</key> - <value>0 bis 49</value> - </entry> - <entry> - <key>0 to 49T</key> - <value>0 bis 49T</value> - </entry> - <entry> - <key>CRM Manager</key> - <value>Leiter CRM</value> - </entry> - <entry> - <key>50 to 99T</key> - <value>50 bis 99T</value> - </entry> - <entry> - <key>Search</key> - <value>Suchen</value> - </entry> - <entry> - <key>Link</key> - <value>Verknüpfung</value> - </entry> - <entry> - <key>Counsellor</key> - <value>Berater</value> - </entry> - <entry> - <key>50 to 100</key> - <value>50 bis 100</value> - </entry> - <entry> - <key>OnPremise</key> - <value>OnPremise</value> - </entry> - <entry> - <key>Head of IT</key> - <value>Leiter IT</value> - </entry> - <entry> - <key>Electric</key> - <value>Elektro</value> - </entry> - <entry> - <key>from 1,000</key> - <value>ab 1.000</value> - </entry> - <entry> - <key>Publishing house</key> - <value>Verlag</value> - </entry> - <entry> - <key>100 to 199T</key> - <value>100 bis 199T</value> - </entry> - <entry> - <key>101 to 250</key> - <value>101 bis 250</value> - </entry> - <entry> - <key>Overarching</key> - <value>Übergreifend</value> - </entry> - <entry> - <key>Energy</key> - <value>Energie</value> - </entry> - <entry> - <key>Machinery and equipment</key> - <value>Maschinen und Anlagen</value> - </entry> - <entry> - <key>Trade</key> - <value>Handel</value> - </entry> - <entry> - <key>Consultation</key> - <value>Beratung</value> - </entry> - <entry> - <key>Cloud</key> - <value>Cloud</value> - </entry> - <entry> - <key>No date yet</key> - <value>Noch kein Termin</value> - </entry> - <entry> - <key>Classifications</key> - <value>Klassifizierungen</value> - </entry> - <entry> - <key>Service Manager</key> - <value>Leiter Service</value> - </entry> - <entry> - <key>Lifesience</key> - <value>Lifesience</value> - </entry> - <entry> - <key>Automotive</key> - <value>Automotive</value> - </entry> - <entry> - <key>Lottery</key> - <value>Lotterie</value> - </entry> - <entry> - <key>from 350T</key> - <value>ab 350T</value> - </entry> - <entry> - <key>Management/Sales Manager</key> - <value>GF/Leiter Vertrieb</value> - </entry> - <entry> - <key>Environment</key> - <value>Umwelt</value> - </entry> - <entry> - <key>Within 12 months</key> - <value>Innerhalb 12 Monaten</value> - </entry> - <entry> - <key>Finance</key> - <value>Finanz</value> - </entry> - <entry> - <key>ScoreProjectStart</key> - <value>Projektstart</value> - </entry> - <entry> - <key>ScoreStandard</key> - <value>Standard</value> - </entry> - <entry> - <key>ScoreCustomizing</key> - <value>Eigenentwicklung</value> - </entry> - <entry> - <key>ScoreDecisionPhase</key> - <value>Entscheidungsphase</value> - </entry> - <entry> - <key>ScoreUsers</key> - <value>Anzahl Anwender</value> - </entry> - <entry> - <key>ScoreBranch</key> - <value>Branche</value> - </entry> - <entry> - <key>ScorePosition</key> - <value>Position</value> - </entry> - <entry> - <key>ScoreBudget</key> - <value>Projektbudget</value> - </entry> - <entry> - <key>ScoreDepartment</key> - <value>Einsatzbereich</value> - </entry> - <entry> - <key>ScoreCloud</key> - <value>Betriebsmodel</value> - </entry> - <entry> - <key>ScoreBased</key> - <value>Unternehmenssitz</value> - </entry> - <entry> - <key>Score</key> - </entry> - <entry> - <key>Scoretype</key> - <value>Bewertungstyp</value> - </entry> - <entry> - <key>${HIGHER_THAN_MAX} max: %0</key> - <value>Der eingegebene Wert ist über dem Maximalwert %0.</value> - </entry> - <entry> - <key>Rating</key> - <value>Bewertung</value> - </entry> - <entry> - <key>Possible Values</key> - <value>Mögliche Werte</value> - </entry> - <entry> - <key>assigned</key> - <value>zugewiesen</value> - </entry> - <entry> - <key>251 to 1,000</key> - </entry> - <entry> - <key>Selection</key> - <value>Auswahl</value> - </entry> - <entry> - <key>Files</key> - <value>Dateien</value> - </entry> - <entry> - <key>postcode</key> - </entry> - <entry> - <key>Delete</key> - </entry> - <entry> - <key>Street</key> - <value>Straße</value> - </entry> - <entry> - <key>Start</key> - </entry> - <entry> - <key>End</key> - <value>Ende</value> - </entry> - <entry> - <key>Condition</key> - </entry> - <entry> - <key>File</key> - </entry> - <entry> - <key> User</key> - </entry> - <entry> - <key>Edit</key> - </entry> - <entry> - <key>Condition Type</key> - </entry> - <entry> - <key>Access type</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>PermissionId</key> - </entry> - <entry> - <key>Entity</key> - </entry> - <entry> - <key>Sales Project</key> - <value>Vertriebsprojekt</value> - </entry> - <entry> - <key>Field</key> - </entry> - <entry> - <key>Permission Detail</key> - </entry> - <entry> - <key>Entities</key> - </entry> - <entry> - <key>Read</key> - </entry> - <entry> - <key>Permission Set ID</key> - </entry> - <entry> - <key>Create</key> - </entry> - <entry> - <key>To buildingnumber</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>Action</key> - </entry> - <entry> - <key>View</key> - </entry> - <entry> - <key>From buildingnumber</key> - </entry> - <entry> - <key>Salutations</key> - </entry> - <entry> - <key>Paymentterm</key> - </entry> - <entry> - <key>New step</key> - <value>Neue Stufe</value> - </entry> - <entry> - <key>Runtime</key> - <value>Laufzeit</value> - </entry> - <entry> - <key>Fix costs</key> - <value>Fixkosten</value> - </entry> - <entry> - <key>Per participant</key> - <value>Pro Teilnehmer</value> - </entry> - <entry> - <key>Predecessor</key> - <value>Vorgänger</value> - </entry> - <entry> - <key>Group name</key> - <value>Gruppenname</value> - </entry> - <entry> - <key>Price Condition</key> - <value>Preis Konditionen</value> - </entry> - <entry> - <key>Entität</key> - </entry> - <entry> - <key>beschränken</key> - </entry> - <entry> - <key>Feld</key> - </entry> - <entry> - <key>Possible Value</key> - <value>Möglicher Wert</value> - </entry> - <entry> - <key>erlauben</key> - </entry> - <entry> - <key>Could not determine the current Classification type (usage).</key> - </entry> - <entry> - <key>Datensatz</key> - </entry> - <entry> - <key>The new Classification name already exists.</key> - </entry> - <entry> - <key>Campaign planning</key> - <value>Kampagnenplanung</value> - </entry> - <entry> - <key>New campaign</key> - <value>Neue Kampagne</value> - </entry> - <entry> - <key>3. Classification</key> - <value>3. Klassifizierung</value> - </entry> - <entry> - <key>1. Classification</key> - <value>1. Klassifizierung</value> - </entry> - <entry> - <key>2. Classification</key> - <value>2. Klassifizierung</value> - </entry> - <entry> - <key>Choose Footer</key> - <value>Fußtext auswählen</value> - </entry> - <entry> - <key>Choose Header</key> - <value>Kopftext auswählen</value> - </entry> - <entry> - <key>#0</key> - </entry> - <entry> - <key>Email Template</key> - </entry> - <entry> - <key>testing</key> - </entry> - <entry> - <key>double</key> - </entry> - <entry> - <key>closed</key> - </entry> - <entry> - <key>New Support ticket</key> - <value>Neues Supportticket</value> - </entry> - <entry> - <key>Bug Ticket</key> - </entry> - <entry> - <key>Support ticket</key> - </entry> - <entry> - <key>New Bugticket</key> - <value>Neues Bugticket</value> - </entry> - <entry> - <key>Keine Berechtigung zum Verschieben der Aufgabe</key> - </entry> - <entry> - <key>Kein Weitergeben von privaten Aufgaben möglich!</key> - </entry> - <entry> - <key>Search for new Entries</key> - <value>Nach neuen Einträgen suchen</value> - </entry> - <entry> - <key>Maximal count has to be a whole number</key> - <value>Maximale Anzahl muss eine ganze Zahl sein</value> - </entry> - <entry> - <key>Minimal count must be a positive whole number</key> - <value>Minimale Anzahl muss eine positive, ganze Zahl sein</value> - </entry> - <entry> - <key>Meilensteine und Kontaktpunkte</key> - </entry> - <entry> - <key>Maximal count must be one or higher</key> - <value>Maximale Anzahl muss eins oder höher sein</value> - </entry> - <entry> - <key>Campaign name</key> - <value>Kampagnen Name</value> - </entry> - <entry> - <key>Step name</key> - <value>Stufen Name</value> - </entry> - <entry> - <key>Employee responsible</key> - </entry> - <entry> - <key>own company</key> - <value>eigene Firma</value> - </entry> - <entry> - <key>Interested</key> - <value>Interessent</value> - </entry> - <entry> - <key>Consultant</key> - <value>Berater</value> - </entry> - <entry> - <key>Acquisition</key> - <value>Akquise</value> - </entry> - <entry> - <key>Project planned?</key> - <value>Projekt geplant?</value> - </entry> - <entry> - <key>Project planning open</key> - <value>Planung Projekt offen</value> - </entry> - <entry> - <key>Next contact?</key> - <value>Nächster Kontakt?</value> - </entry> - <entry> - <key>First contact</key> - <value>Erstkontakt</value> - </entry> - <entry> - <key>Product interest</key> - <value>Produktinteresse</value> - </entry> - <entry> - <key>Commodity group A</key> - <value>Warengruppe A</value> - </entry> - <entry> - <key>Product A1</key> - <value>Produkt A1</value> - </entry> - <entry> - <key>Product A2</key> - <value>Produkt A2</value> - </entry> - <entry> - <key>Commodity group B</key> - <value>Warengruppe B</value> - </entry> - <entry> - <key>Product B1</key> - <value>Produkt B1</value> - </entry> - <entry> - <key>Product B2</key> - <value>Produkt B2</value> - </entry> - <entry> - <key>General</key> - <value>Allgemein</value> - </entry> - <entry> - <key>ToDo</key> - <value>ToDo</value> - </entry> - <entry> - <key>Send information</key> - <value>Informationen senden</value> - </entry> - <entry> - <key>Distribution</key> - <value>Vertrieb</value> - </entry> - <entry> - <key>Presentation</key> - <value>Präsentation</value> - </entry> - <entry> - <key>Technical requirement</key> - <value>Fachanforderung</value> - </entry> - <entry> - <key>Pros</key> - <value>Vorteile</value> - </entry> - <entry> - <key>flexible</key> - <value>flexibel</value> - </entry> - <entry> - <key>Technology</key> - <value>Technologie</value> - </entry> - <entry> - <key>Cons</key> - <value>Defizite</value> - </entry> - <entry> - <key>Next steps</key> - <value>Nächste Schritte</value> - </entry> - <entry> - <key>ToDos</key> - <value>ToDos</value> - </entry> - <entry> - <key>Follow up (WV)</key> - <value>Nachfassen (WV)</value> - </entry> - <entry> - <key>Other (WV)</key> - <value>Sonstiges (WV)</value> - </entry> - <entry> - <key>Personal estimation</key> - <value>Pers. Einschätzung</value> - </entry> - <entry> - <key>Assessment</key> - <value>Beurteilung</value> - </entry> - <entry> - <key>30</key> - <value>30</value> - </entry> - <entry> - <key>60</key> - <value>60</value> - </entry> - <entry> - <key>90</key> - <value>90</value> - </entry> - <entry> - <key>Commodity group A (WV)</key> - <value>Warengruppe A (WV)</value> - </entry> - <entry> - <key>Commodity group B (WV)</key> - <value>Warengruppe B (WV)</value> - </entry> - <entry> - <key>Origin</key> - <value>Herkunft</value> - </entry> - <entry> - <key>personal</key> - <value>persönlich</value> - </entry> - <entry> - <key>Reference customer</key> - <value>Referenz-Kunde</value> - </entry> - <entry> - <key>Website</key> - <value>Website</value> - </entry> - <entry> - <key>Trade fair</key> - <value>Messe</value> - </entry> - <entry> - <key>Call</key> - <value>Anruf</value> - </entry> - <entry> - <key>Frame contract (WV)</key> - <value>Rahmenvertrag (WV)</value> - </entry> - <entry> - <key>Custody agreement</key> - <value>Verwahrungsvereinbarung</value> - </entry> - <entry> - <key>Data protection agreement</key> - <value>Datenschutzvereinbarung</value> - </entry> - <entry> - <key>Declaration of acceptance</key> - <value>Abnahmeerklärung</value> - </entry> - <entry> - <key>Known because</key> - <value>Bekannt durch</value> - </entry> - <entry> - <key>Existing contact</key> - <value>Bestehender Kontakt</value> - </entry> - <entry> - <key>Recommendation</key> - <value>Empfehlung</value> - </entry> - <entry> - <key>Print media</key> - <value>Printmedien</value> - </entry> - <entry> - <key>Call back (WV)</key> - <value>Rückruf (WV)</value> - </entry> - <entry> - <key>Send documents (WV)</key> - <value>Unterlagen senden (WV)</value> - </entry> - <entry> - <key>Make offer (WV)</key> - <value>Angebot erstellen (WV)</value> - </entry> - <entry> - <key>Send brochure (WV)</key> - <value>Broschüre zukommen lassen (WV)</value> - </entry> - <entry> - <key>Departments</key> - <value>Abteilungen</value> - </entry> - <entry> - <key>IT/Service</key> - <value>IT/Service</value> - </entry> - <entry> - <key>Pricing policy</key> - <value>Preispolitik</value> - </entry> - <entry> - <key>Strength</key> - <value>Stärke</value> - </entry> - <entry> - <key>Weakness</key> - <value>Schwäche</value> - </entry> - <entry> - <key>Interests</key> - <value>Interessen</value> - </entry> - <entry> - <key>Goodwill</key> - <value>Kulanz</value> - </entry> - <entry> - <key>Type of damage</key> - <value>Schadensart</value> - </entry> - <entry> - <key>Regulation</key> - <value>Regulierung</value> - </entry> - <entry> - <key>Technical specifications</key> - <value>Technische Merkmale</value> - </entry> - <entry> - <key>B</key> - <value>B</value> - </entry> - <entry> - <key>0 low</key> - <value>gering</value> - </entry> - <entry> - <key>good</key> - <value>gut</value> - </entry> - <entry> - <key>Atmosphere</key> - <value>Stimmung</value> - </entry> - <entry> - <key>Risk</key> - <value>Risiko</value> - </entry> - <entry> - <key>Racing bike</key> - <value>Rennrad</value> - </entry> - <entry> - <key>A</key> - <value>A</value> - </entry> - <entry> - <key>NPO</key> - <value>NPO</value> - </entry> - <entry> - <key>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</key> - <value>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</value> - </entry> - <entry> - <key>Handcraft</key> - <value>Handwerk</value> - </entry> - <entry> - <key>Dumping price competition</key> - <value>Dumpingpreis Wettbewerb</value> - </entry> - <entry> - <key>Full calculation</key> - <value>Vollberechnung</value> - </entry> - <entry> - <key>Konditionen die bei Angebotserstellung übernommen werden</key> - <value>Konditionen die bei Angebotserstellung übernommen werden</value> - </entry> - <entry> - <key>Others</key> - <value>Sonstiges</value> - </entry> - <entry> - <key>Product type</key> - <value>Produkttyp</value> - </entry> - <entry> - <key>medium</key> - <value>mittel</value> - </entry> - <entry> - <key>D</key> - <value>D</value> - </entry> - <entry> - <key>1 medium</key> - <value>mittel</value> - </entry> - <entry> - <key>loves sociability</key> - <value>liebt Geselligkeit</value> - </entry> - <entry> - <key>Project shift customer</key> - <value>Projektverschiebung Kunde</value> - </entry> - <entry> - <key>Quality problem customer</key> - <value>Qualitätsproblem Kunde</value> - </entry> - <entry> - <key>Wine</key> - <value>Wein</value> - </entry> - <entry> - <key>Decision-maker changed</key> - <value>Wechsel Entscheidungsträger</value> - </entry> - <entry> - <key>Financial service</key> - <value>Finanzdienstleistung</value> - </entry> - <entry> - <key>Sport</key> - <value>Sport</value> - </entry> - <entry> - <key>Device/Machine</key> - <value>Gerät/Maschine</value> - </entry> - <entry> - <key>Annual holidays</key> - <value>Jahresurlaub</value> - </entry> - <entry> - <key>Away travel</key> - <value>Fernreisen</value> - </entry> - <entry> - <key>Partial calculation</key> - <value>Teilberechnung</value> - </entry> - <entry> - <key>PERS</key> - <value>PERS</value> - </entry> - <entry> - <key>Target group</key> - <value>Zielgruppe</value> - </entry> - <entry> - <key>Interested person</key> - <value>Interessent</value> - </entry> - <entry> - <key>Assistance</key> - <value>Betreuung</value> - </entry> - <entry> - <key>Contacting</key> - <value>Kontaktierung</value> - </entry> - <entry> - <key>Signature</key> - <value>Signatur</value> - </entry> - <entry> - <key>Beer</key> - <value>Bier</value> - </entry> - <entry> - <key>Treat</key> - <value>Genuss</value> - </entry> - <entry> - <key>Motor cycle</key> - <value>Motorrad</value> - </entry> - <entry> - <key>Revolution speed (rpm)</key> - <value>Drehzahl (rpm)</value> - </entry> - <entry> - <key>ORG</key> - <value>ORG</value> - </entry> - <entry> - <key>Cigars</key> - <value>Zigarren</value> - </entry> - <entry> - <key>Wear part</key> - <value>Verschleißteil</value> - </entry> - <entry> - <key>Mechanical engineering</key> - <value>Maschinenbau</value> - </entry> - <entry> - <key>Loyalty</key> - <value>Loyalität</value> - </entry> - <entry> - <key>Data table</key> - <value>Tabellen Daten</value> - </entry> - <entry> - <key>Delivery block</key> - <value>Liefersperre</value> - </entry> - <entry> - <key>Birthday list</key> - <value>Geburtstagsliste</value> - </entry> - <entry> - <key>Project type</key> - <value>Projektart</value> - </entry> - <entry> - <key>Consisted customer</key> - <value>Bestandskunde</value> - </entry> - <entry> - <key>Prospective customer</key> - <value>Interessent</value> - </entry> - <entry> - <key>Soccer</key> - <value>Fussball</value> - </entry> - <entry> - <key>Conveyor</key> - <value>Förderband</value> - </entry> - <entry> - <key>Additional data</key> - <value>zusätzliche Daten</value> - </entry> - <entry> - <key>No risk</key> - <value>kein Risiko</value> - </entry> - <entry> - <key>bad</key> - <value>schlecht</value> - </entry> - <entry> - <key>Spare part</key> - <value>Ersatzteil</value> - </entry> - <entry> - <key>Sailing</key> - <value>Segeln</value> - </entry> - <entry> - <key>Tool changer</key> - <value>Werkzeugwechsler</value> - </entry> - <entry> - <key>Payment problem customer</key> - <value>Zahlungsproblem Kunde</value> - </entry> - <entry> - <key>Agency</key> - <value>Behörde</value> - </entry> - <entry> - <key>Tourism</key> - <value>Tourismus</value> - </entry> - <entry> - <key>Building industry</key> - <value>Bauwesen</value> - </entry> - <entry> - <key>2 big</key> - <value>gross</value> - </entry> - <entry> - <key>Weight (kg)</key> - <value>Gewicht (kg)</value> - </entry> - <entry> - <key>Creditworthiness</key> - <value>Bonität</value> - </entry> - <entry> - <key>Occupation</key> - <value>Beruf</value> - </entry> - <entry> - <key>C</key> - <value>C</value> - </entry> - <entry> - <key>Economy</key> - <value>Wirtschaft</value> - </entry> - <entry> - <key>Golf</key> - <value>Golf</value> - </entry> - <entry> - <key>Component</key> - <value>Bauteil</value> - </entry> - <entry> - <key>Employee account</key> - <value>Mitarbeiterkonto</value> - </entry> - <entry> - <key>DOCUMENT</key> - <value>DOCUMENT</value> - </entry> - <entry> - <key>Incomplete delivery</key> - <value>unvollständige Lieferung</value> - </entry> - <entry> - <key>Quality complaint</key> - <value>Qualitätsbeanstandung</value> - </entry> - <entry> - <key>Faulty delivery</key> - <value>fehlerhafte Lieferung</value> - </entry> - <entry> - <key>Transport damage</key> - <value>Transportschaden</value> - </entry> - <entry> - <key>EVENT</key> - <value>EVENT</value> - </entry> - <entry> - <key>Delivery term</key> - <value>Lieferkondition</value> - </entry> - <entry> - <key>Pricelist</key> - <value>Preisliste</value> - </entry> - <entry> - <key>Campaign response</key> - <value>Rückantwort Kampagne</value> - </entry> - <entry> - <key>Writes for</key> - <value>schreibt für</value> - </entry> - <entry> - <key>Subordinate campaign of</key> - <value>Unterkampagne von</value> - </entry> - <entry> - <key>Superordinate campaign of</key> - <value>übergeordnete Kampagne von</value> - </entry> - <entry> - <key>Holiday</key> - <value>Feiertag</value> - </entry> - <entry> - <key>Visit frequency</key> - <value>Besuchsfrequenz</value> - </entry> - <entry> - <key>Boss of</key> - <value>Vorgesetzter von</value> - </entry> - <entry> - <key>Reports to</key> - <value>berichtet an</value> - </entry> - <entry> - <key>Urlaubsgenehmigung durch</key> - <value>Urlaubsgenehmigung durch</value> - </entry> - <entry> - <key>Urlaubsprüfung durch</key> - <value>Urlaubsprüfung durch</value> - </entry> - <entry> - <key>UID</key> - </entry> - <entry> - <key>ticket number</key> - </entry> - <entry> - <key>AB_KEYWORD_ENTRYID (UID)</key> - </entry> - <entry> - <key>DATE_NEW_CONTACT</key> - </entry> - <entry> - <key>Icon</key> - </entry> - <entry> - <key>in progress</key> - <value>in Bearbeitung</value> - </entry> - <entry> - <key>PARENT_CONTEXT</key> - </entry> - <entry> - <key>OFFER_ID</key> - </entry> - <entry> - <key>SMS</key> - </entry> - <entry> - <key>CAMPAIGNID (UID)</key> - </entry> - <entry> - <key>PARENT_ID</key> - </entry> - <entry> - <key>Interfaces</key> - <value>Schnittstellen</value> - </entry> - <entry> - <key>Feature</key> - <value>Feature</value> - </entry> - <entry> - <key>ORGANISATIONID (UID)</key> - </entry> - <entry> - <key>SALESORDER_ID</key> - </entry> - <entry> - <key>Ticket</key> - </entry> - <entry> - <key>Delivery problems</key> - <value>Leferprobleme</value> - </entry> - <entry> - <key>Tickets</key> - </entry> - <entry> - <key>PERSON_ID</key> - </entry> - <entry> - <key>{$TICKET_REQUESTOR}</key> - <value>Anforderer</value> - </entry> - <entry> - <key>Billable</key> - <value>Verrechenbar</value> - </entry> - <entry> - <key>TASKID (UID)</key> - </entry> - <entry> - <key>Fax</key> - </entry> - <entry> - <key>DATE_EDIT</key> - </entry> - <entry> - <key>OFFERID (UID)</key> - </entry> - <entry> - <key>Connection Type</key> - </entry> - <entry> - <key>UID (AB_ATTRIBUTEID)</key> - </entry> - <entry> - <key>Phases</key> - </entry> - <entry> - <key>Questions</key> - <value>Fragen</value> - </entry> - <entry> - <key>User error</key> - <value>Anwenderfehler</value> - </entry> - <entry> - <key>ACTIVITYID (UID)</key> - </entry> - <entry> - <key>Issue</key> - <value>Fehler</value> - </entry> - <entry> - <key>CONTACTID</key> - </entry> - <entry> - <key>Maintenance</key> - <value>Wartung</value> - </entry> - <entry> - <key>{$TICKET_STATUS}</key> - <value>Status</value> - </entry> - <entry> - <key>DATE_NEW</key> - </entry> - <entry> - <key>SALESPROJECTID (UID)</key> - </entry> - <entry> - <key>ORGANISATION_ID</key> - </entry> - <entry> - <key>CONTRACTID (UID)</key> - </entry> - <entry> - <key>[%0]it was necessary to create a file from a blob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>SqlUtils.getSqlInStatement: if pAsPrepared is true, pPreparedDbType has to be filld with the correct db type</key> - </entry> - <entry> - <key>[%0]it was necessary to create a text-file from a clob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>USER_NEW</key> - </entry> - <entry> - <key>USER_EDIT</key> - </entry> - <entry> - <key>CONTACTID (UID)</key> - </entry> - <entry> - <key>{$TICKET_EDITOR}</key> - <value>Bearbeiter</value> - </entry> - <entry> - <key>Support ticket</key> - <value>Supportticket</key> - </entry> - <entry> - <key>Modul group</key> - <value>Modulgruppe</value> - </entry> - <entry> - <key>PRODUCTID (UID)</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"</key> - </entry> - <entry> - <key>Total time</key> - </entry> - <entry> - <key>SALESORDERID (UID)</key> - </entry> - <entry> - <key>Cause</key> - <value>Ursache</value> - </entry> - <entry> - <key>Assembly</key> - <value>Montage</value> - </entry> - <entry> - <key>Dokument template usage</key> - </entry> - <entry> - <key>Open admin info</key> - </entry> - <entry> - <key>USER_NEW_CONTACT</key> - </entry> - <entry> - <key>Bulk mail was sent!</key> - </entry> - <entry> - <key>All selected participants already are in the campaign</key> - <value>Alle selektierten Teilnehmer sind bereits in der Kampagne</value> - </entry> - <entry> - <key>%0/%1 participant(s) will be added to the selected campaign step</key> - <value>%0/%1 Teilnehmer werden zur selektierten Kampagnenstufe hinzugefügt</value> - </entry> - <entry> - <key>Not enough slots for %0/%1 participant(s)</key> - <value>Nicht genügend Teilnehmerplätze verfügbar für %0/%1 Teilnehmer</value> - </entry> - <entry> - <key>No valid Selection</key> - <value>Keine gültige Auswahl</value> - </entry> - <entry> - <key>Support Ticket</key> - <value>Support Ticket</value> - </entry> - <entry> - <key>DSGVO Information</key> - <value>DSGVO Informationen</value> - </entry> - <entry> - <key>Remarks</key> - <value>Anmerkungen</value> - </entry> - <entry> - <key>Data Privacy</key> - <value>Datenschutz</value> - </entry> - <entry> - <key>Organisation</key> - <value>Organisation</value> - </entry> - <entry> - <key>No data has been anonymized.</key> - <value>Keine Daten wurden anonymisiert.</value> - </entry> - <entry> - <key>Anonymization</key> - <value>Anonymisierung</value> - </entry> - <entry> - <key>The following data has been anonymised: %0</key> - <value>Die folgenden Daten wurden anonymisiert: %0</value> - </entry> - <entry> - <key>Your changes have an impact on the data privacy information (DSGVO).</key> - <value>Ihre Änderungen haben Auswirkungen auf den Datenschutz (DSGVO).</value> - </entry> - <entry> - <key>Rented car</key> - <value>Mietwagen</value> - </entry> - <entry> - <key>Data Privacies</key> - <value>Datenprivilegien</value> - </entry> - <entry> - <key>advertising consent</key> - <value>Werbeeinwilligung</value> - </entry> - <entry> - <key>Update campaign step</key> - <value>Aktualisieren des Kampagnenschrittes</value> - </entry> - <entry> - <key>Names</key> - <value>Namen</value> - </entry> - <entry> - <key>Adressdaten</key> - <value>Adressdaten</value> - </entry> - <entry> -<<<<<<< HEAD - <key>No contacts selected</key> - <value>Keine Kontakte ausgewählt</value> -======= - <key>The contact has an advertising ban for emails!</key> - <value>Es ist eine Werbesperre für E-Mails vorhanden!</value> ->>>>>>> origin/master - </entry> - <entry> - <key>DSGVO anonymisation</key> - <value>DSGVO Anonymisierung</value> - </entry> - <entry> - <key>Transport cost</key> - <value>Transportkosten</value> - </entry> - <entry> - <key>Day Fee</key> - <value>Tagesgebühr</value> - </entry> - <entry> - <key>newsletter dispatch</key> - <value>Newsletterversand</value> - </entry> - <entry> - <key>Month</key> - <value>Monat</value> - </entry> - <entry> - <key>Address data</key> - <value>Adressdaten</value> - </entry> - <entry> - <key>contract of sale</key> - <value>Kaufvertrag</value> - </entry> - <entry> - <key>My campaigns</key> - <value>Meine Kampagnen</value> - </entry> - <entry> - <key>Hospitality</key> - <value>Gastfreundschaft</value> - </entry> - <entry> - <key>DataPrivacy Use</key> - <value>Nutzung</value> - </entry> - <entry> - <key>Bed and Breakfast</key> - <value>Bett und Frühstück</value> - </entry> - <entry> - <key>Source</key> - <value>Quelle</value> - </entry> - <entry> - <key>Show my campaigns</key> - <value>Zeigen meine Kampagnen</value> - </entry> - <entry> - <key>consent</key> - <value>Zustimmung</value> - </entry> - <entry> - <key>Information Report</key> - <value>Informationsbericht</value> - </entry> - <entry> - <key>Attribute data</key> - <value>Attributdaten</value> - </entry> - <entry> - <key>other personal data</key> - <value>andere persönliche Daten</value> - </entry> - <entry> - <key>The contact has an advertising ban for emails!</key> - <value>Der Kontakt hat ein Werbeverbot für E-Mails!</value> - </entry> - <entry> - <key>Until</key> - <value>Bis</value> - </entry> - <entry> - <key>From</key> - <value>Von</value> - </entry> - <entry> - <key>DSGVO Disclosure</key> - <value>DSGVO Auskunft</value> - </entry> - <entry> - <key>Disclosure Report</key> - <value>Auskunftsbericht</value> - </entry> - <entry> - <key>Add to Bulkmail</key> - <value>Zu Massenmail hinzufügen</value> - </entry> - <entry> - <key>Park fees</key> - <value>Parkgebühren</value> - </entry> - <entry> - <key>Abscences</key> - <value>Abszenzenen</value> - </entry> - <entry> - <key>Expense Report</key> - <value>Ausgabenabrechnung</value> - </entry> - <entry> - <key>Update data privacy information</key> - <value>Datenschutzinformationen aktualisieren</value> - </entry> - <entry> - <key>DataPrivacy Right</key> - <value>Datenschutzrecht</value> - </entry> - <entry> - <key>balancing of interests</key> - <value>Interessenausgleich</value> - </entry> - <entry> - <key>Working material</key> - <value>Arbeitsmaterial</value> - </entry> - <entry> - <key>Trip purpose</key> - <value>Reisezweck</value> - </entry> - <entry> - <key>Personal data</key> - <value>Persönliche Daten</value> - </entry> - <entry> - <key>The transfer of data to recipients located in a third country is based on the following guarantees:</key> - <value>Die Übermittlung von Daten an Empfänger in einem Drittland basiert auf folgenden Garantien:</value> - </entry> - <entry> - <key>Recipient, Country</key> - <value>Empfänger, Land</value> - </entry> - <entry> - <key>We save your data until </key> - <value>Wir speichern Ihre Daten bis </value> - </entry> - <entry> - <key>Guarantee</key> - <value>Garantie</value> - </entry> - <entry> - <key>On time</key> - <value>Pünktlich</value> - </entry> - <entry> - <key>For this report</key> - <value>Für diesen Bericht</value> - </entry> - <entry> - <key>SqlBuilder must contain a select clause!</key> - <value>SqlBuilder muss eine Select-Clause enthalten!</value> - </entry> - <entry> - <key>Inland</key> - <value>Inland</value> - </entry> - <entry> - <key>The data is transmitted to the following recipients:</key> - <value>Die Daten werden an folgende Empfänger übertragen:</value> - </entry> - <entry> - <key>SqlBuilder must be instanciated with 'new'</key> - <value>SqlBuilder muss mit 'new' instanziiert werden.</value> - </entry> - <entry> - <key>Balancing of interests</key> - <value>Interessenausgleich</value> - </entry> - <entry> - <key>SqlBuilder must contain a from clause!</key> - <value>SqlBuilder muss eine from-Clause enthalten!</value> - </entry> - <entry> - <key>None</key> - <value>Keine</value> - </entry> - <entry> - <key>Date of request</key> - <value>Datum der Anforderung</value> - </entry> - <entry> - <key>Export CSV</key> - <value>CSV exportieren</value> - </entry> - <entry> - <key>Not all data privacy fields for all private data is filled. Cannot create report.</key> - <value>Nicht alle Datenschutzfelder für alle privaten Daten werden ausgefüllt. Bericht kann nicht erstellt werden.</value> - </entry> - <entry> - <key>Birthday</key> - <value>Geburtstag</value> - </entry> - <entry> - <key>Extend - request count</key> - <value>Verlängert - Anfrageanzahl</value> - </entry> - <entry> - <key>Transmission</key> - <value>Übermittlung</value> - </entry> - <entry> - <key>You don't have permission for this view.</key> - <value>Sie haben keine Berechtigung für diese Ansicht.</value> - </entry> - <entry> - <key>Extend - complexity</key> - <value>Verlängert - Komplexität</value> - </entry> - <entry> - <key>Advertising consent</key> - <value>Werbeeinwilligung</value> - </entry> - <entry> - <key>We hereby comply with your request within the statutory period of one month.</key> - <value>Wir kommen Ihrer Aufforderung hiermit innerhalb der gesetzlichen Frist von einem Monat nach.</value> - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed. Process took %2 s.</key> - <value>%0 Mails erfolgreich gesendet, %1 Mails fehlgeschlagen. Der Prozess nahm %2 s. in Anspruch.</value> - </entry> - <entry> - <key>Foreign country</key> - <value>Auslandsland</value> - </entry> - <entry> - <key>phase information</key> - <value>Phaseninformationen</value> - </entry> - <entry> - <key>the high complexity of your application</key> - <value>die hohe Komplexität Ihrer Anwendung</value> - </entry> - <entry> - <key>As stated in our letter of %0, we have made use of the possibility to extend the deadline to three months due to %1.</key> - <value>Wie in unserem Schreiben von %0 erwähnt, haben wir von der Möglichkeit Gebrauch gemacht, die Frist aufgrund von %1 auf drei Monate zu verlängern.</value> - </entry> - <entry> - <key>Deadline</key> - <value>Frist</value> - </entry> - <entry> - <key>Newsletter dispatch</key> - <value>Newsletterversand</value> - </entry> - <entry> - <key>We received data from </key> - <value>Wir haben Daten erhalten von</value> - </entry> - <entry> - <key>the number of your applications</key> - <value>die Anzahl Ihrer Anwendungen</value> - </entry> - <entry> - <key>Your changes may have an impact on the data privacy information (DSGVO).\n Please update these.</key> - <value>Ihre Änderungen können sich auf die Datenschutzinformationen (DSGVO) auswirken.\n Bitte aktualisieren Sie diese.</value> - </entry> - <entry> - <key>External Datasource</key> - <value>Externe Datenquelle</value> - </entry> - <entry> - <key>MarketingCampaign</key> - </entry> - <entry> - <key>Nur eigene anzeigen</key> - </entry> - <entry> - <key>Billed</key> - </entry> - <entry> - <key>Km Fee</key> - </entry> - <entry> - <key>Credit Card</key> - </entry> - <entry> - <key>Overnight stay</key> - </entry> - <entry> - <key>In creation</key> - </entry> - <entry> - <key>Es wurden keine Daten anonymisiert.</key> - </entry> - <entry> - <key>Sonstige personenbezogene Daten</key> - </entry> - <entry> - <key>Extension letter date</key> - </entry> - <entry> - <key>Namen</key> - </entry> - <entry> - <key>Update</key> - </entry> - <entry> - <key>Blog</key> - </entry> - <entry> - <key>Special displays</key> - </entry> - <entry> - <key>Guarantees</key> - <value>Garantien</value> - </entry> - <entry> - <key>Folgende Daten wurden anonymisiert: </key> - </entry> - <entry> - <key>Fuel</key> - </entry> - <entry> - <key>CC</key> - </entry> - <entry> - <key>Xing</key> - </entry> - <entry> - <key>CampaignManagement</key> - </entry> - <entry> - <key>Km</key> - </entry> - <entry> - <key>Taxi</key> - </entry> - <entry> - <key>LinkedIn</key> - </entry> - <entry> - <key>Kommunikationsdaten</key> - </entry> - <entry> - <key>DSGVO Anonymisierung</key> - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed</key> - </entry> - <entry> - <key>%0 recipients will be added to the bulk mail.</key> - </entry> - </keyValueMap> - <font name="Dialog" style="0" size="11" /> -</language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod index 7b56909fe432b7642e440636ea2dbb6aaa8c9454..cf8d0df31f43a9a569871c3e265165a6bf38e44a 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -7353,6 +7353,30 @@ <entry> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> </entry> + <entry> + <key>Count Chart</key> + </entry> + <entry> + <key>Sum Chart</key> + </entry> + <entry> + <key>Probability Chart</key> + </entry> + <entry> + <key>Probability in %</key> + </entry> + <entry> + <key>Standard City</key> + </entry> + <entry> + <key>Standard Country</key> + </entry> + <entry> + <key>Standard Zip</key> + </entry> + <entry> + <key>Outstanding Amount</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> </language> diff --git a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod.orig b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod.orig deleted file mode 100644 index 8ec4fc23e9630b8275296e508bb81cf4b25d947f..0000000000000000000000000000000000000000 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod.orig +++ /dev/null @@ -1,4880 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<language xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/language/1.2.0"> - <name>_____LANGUAGE_en</name> - <majorModelMode>DISTRIBUTED</majorModelMode> - <language>en</language> - <country></country> - <variant></variant> - <keyValueMap> - <entry> - <key>Company</key> - </entry> - <entry> - <key>New step</key> - </entry> - <entry> - <key>E-Mail</key> - </entry> - <entry> - <key>Male</key> - </entry> - <entry> - <key>Activity</key> - </entry> - <entry> - <key>Name</key> - </entry> - <entry> - <key>Austria</key> - </entry> - <entry> - <key>Customercode</key> - </entry> - <entry> - <key>Status</key> - </entry> - <entry> - <key>Active</key> - </entry> - <entry> - <key>Medium</key> - </entry> - <entry> - <key>Internet</key> - </entry> - <entry> - <key>Germany</key> - </entry> - <entry> - <key>Online-Meeting</key> - </entry> - <entry> - <key>Social Media</key> - </entry> - <entry> - <key>Visit</key> - </entry> - <entry> - <key>Information</key> - </entry> - <entry> - <key>Print Offer</key> - </entry> - <entry> - <key>Language</key> - </entry> - <entry> - <key>Phone</key> - </entry> - <entry> - <key>Activities</key> - </entry> - <entry> - <key>Female</key> - </entry> - <entry> - <key>Contactmanagement</key> - </entry> - <entry> - <key>Office address</key> - </entry> - <entry> - <key>Contact</key> - </entry> - <entry> - <key>Home address</key> - </entry> - <entry> - <key>Type</key> - </entry> - <entry> - <key>Contacts</key> - </entry> - <entry> - <key>Norway</key> - </entry> - <entry> - <key>Address</key> - </entry> - <entry> - <key>Addresses</key> - </entry> - <entry> - <key>${COMM_ADDRESS}</key> - <value>Address</value> - </entry> - <entry> - <key>Gender</key> - </entry> - <entry> - <key>Date of birth</key> - </entry> - <entry> - <key>Lastname</key> - </entry> - <entry> - <key>Salutation</key> - </entry> - <entry> - <key>Middlename</key> - </entry> - <entry> - <key>Title</key> - </entry> - <entry> - <key>Addresstype</key> - </entry> - <entry> - <key>Firstname</key> - </entry> - <entry> - <key>Description</key> - </entry> - <entry> - <key>Direction</key> - </entry> - <entry> - <key>Entrydate</key> - </entry> - <entry> - <key>Subject</key> - </entry> - <entry> - <key>Post office box</key> - </entry> - <entry> - <key>Delivery address</key> - </entry> - <entry> - <key>House number</key> - </entry> - <entry> - <key>Country</key> - </entry> - <entry> - <key>Communication</key> - </entry> - <entry> - <key>postcode</key> - </entry> - <entry> - <key>City</key> - </entry> - <entry> - <key>State</key> - </entry> - <entry> - <key>Region</key> - </entry> - <entry> - <key>District</key> - </entry> - <entry> - <key>Switzerland</key> - </entry> - <entry> - <key>Internal (2)</key> - </entry> - <entry> - <key>Company Addresses</key> - </entry> - <entry> - <key>yyyyMMdd</key> - </entry> - <entry> - <key>standard address</key> - </entry> - <entry> - <key>PP</key> - </entry> - <entry> - <key>VAT</key> - </entry> - <entry> - <key>The expiry date must be after the start date!</key> - </entry> - <entry> - <key>Product</key> - </entry> - <entry> - <key>Developer</key> - </entry> - <entry> - <key>Valid until</key> - </entry> - <entry> - <key>Price list</key> - </entry> - <entry> - <key>Currency</key> - </entry> - <entry> - <key>Payment method</key> - </entry> - <entry> - <key>Price list / Company</key> - </entry> - <entry> - <key>Curr. sales price</key> - </entry> - <entry> - <key>Contract</key> - </entry> - <entry> - <key>Stock</key> - </entry> - <entry> - <key>PP/SP</key> - </entry> - <entry> - <key>Next due date</key> - </entry> - <entry> - <key>Discount</key> - </entry> - <entry> - <key>The next due date must be after the start of the contract and before the expiry of the contract!</key> - </entry> - <entry> - <key>Sales</key> - </entry> - <entry> - <key>Contract number</key> - </entry> - <entry> - <key>Min. stock</key> - </entry> - <entry> - <key>SP</key> - </entry> - <entry> - <key>Commodity group 3</key> - </entry> - <entry> - <key>Commodity group 2</key> - </entry> - <entry> - <key>Commodity group 1</key> - </entry> - <entry> - <key>Contract start date</key> - </entry> - <entry> - <key>Spare parts</key> - </entry> - <entry> - <key>Unit</key> - </entry> - <entry> - <key>Contract expiry date</key> - </entry> - <entry> - <key>Yes</key> - </entry> - <entry> - <key>Type of contract</key> - </entry> - <entry> - <key>No</key> - </entry> - <entry> - <key>Service</key> - </entry> - <entry> - <key>Cancelled</key> - </entry> - <entry> - <key>Advertising material</key> - </entry> - <entry> - <key>Valid from</key> - </entry> - <entry> - <key>Product name</key> - </entry> - <entry> - <key>Product group</key> - </entry> - <entry> - <key>${CONTRACT_STATUS}</key> - <value>Status</value> - </entry> - <entry> - <key>From no. of units</key> - </entry> - <entry> - <key>Price</key> - </entry> - <entry> - <key>Conditions</key> - </entry> - <entry> - <key>Standard</key> - </entry> - <entry> - <key>I / O</key> - </entry> - <entry> - <key>Date</key> - </entry> - <entry> - <key>IN</key> - </entry> - <entry> - <key>OUT</key> - </entry> - <entry> - <key>Warehouse</key> - </entry> - <entry> - <key>Reference</key> - </entry> - <entry> - <key>The contract number already exists!</key> - </entry> - <entry> - <key>The product number already exists!</key> - </entry> - <entry> - <key>Quantity</key> - </entry> - <entry> - <key>Salesproject</key> - </entry> - <entry> - <key>Rollout</key> - </entry> - <entry> - <key>Phase</key> - </entry> - <entry> - <key>Product number</key> - </entry> - <entry> - <key>Project number</key> - </entry> - <entry> - <key>Project title</key> - </entry> - <entry> - <key>Project start</key> - </entry> - <entry> - <key>Volume</key> - </entry> - <entry> - <key>Partial order</key> - </entry> - <entry> - <key>Open</key> - </entry> - <entry> - <key>Lost</key> - </entry> - <entry> - <key>Order</key> - </entry> - <entry> - <key>Postponed</key> - </entry> - <entry> - <key>Aborted</key> - </entry> - <entry> - <key>Total net</key> - </entry> - <entry> - <key>Offer</key> - </entry> - <entry> - <key>Offer number</key> - </entry> - <entry> - <key>Probability</key> - </entry> - <entry> - <key>Total VAT</key> - </entry> - <entry> - <key>The offer number already exists!</key> - </entry> - <entry> - <key>0 %</key> - </entry> - <entry> - <key>75 %</key> - </entry> - <entry> - <key>100 %</key> - </entry> - <entry> - <key>25 %</key> - </entry> - <entry> - <key>50 %</key> - </entry> - <entry> - <key>Won</key> - </entry> - <entry> - <key>Checked</key> - </entry> - <entry> - <key>Sent</key> - </entry> - <entry> - <key>Offeritems</key> - </entry> - <entry> - <key>Header text</key> - </entry> - <entry> - <key>Commodity group</key> - </entry> - <entry> - <key>Footer text</key> - </entry> - <entry> - <key>Designation</key> - </entry> - <entry> - <key>Position</key> - </entry> - <entry> - <key>Optional</key> - </entry> - <entry> - <key>Article</key> - </entry> - <entry> - <key>Offeritem</key> - </entry> - <entry> - <key>Sum</key> - </entry> - <entry> - <key>Option4</key> - </entry> - <entry> - <key>Option3</key> - </entry> - <entry> - <key>Option2</key> - </entry> - <entry> - <key>Option1</key> - </entry> - <entry> - <key>Countries</key> - </entry> - <entry> - <key>Options</key> - </entry> - <entry> - <key>Total gross</key> - </entry> - <entry> - <key>Identical price list found!</key> - </entry> - <entry> - <key>Parts list</key> - </entry> - <entry> - <key>Parent</key> - </entry> - <entry> - <key>${EURO_SIGN}</key> - <value>€</value> - </entry> - <entry> - <key>Planned</key> - </entry> - <entry> - <key>Info</key> - </entry> - <entry> - <key>${VOLUME_MONEY}</key> - <value>Volume</value> - </entry> - <entry> - <key>Milestones</key> - </entry> - <entry> - <key>Excreted</key> - </entry> - <entry> - <key>Reason</key> - </entry> - <entry> - <key>Document</key> - </entry> - <entry> - <key>Competition</key> - </entry> - <entry> - <key>Forecast</key> - </entry> - <entry> - <key>Role</key> - </entry> - <entry> - <key>End date</key> - </entry> - <entry> - <key>Documents</key> - </entry> - <entry> - <key>Curr. purchase price</key> - </entry> - <entry> - <key>New offer version</key> - </entry> - <entry> - <key>Vers. no.</key> - </entry> - <entry> - <key>Copy offer</key> - </entry> - <entry> - <key>Contracts</key> - </entry> - <entry> - <key>Classification</key> - </entry> - <entry> - <key>High price strategy</key> - </entry> - <entry> - <key>Low price strategy</key> - </entry> - <entry> - <key>Other</key> - </entry> - <entry> - <key>Individual</key> - </entry> - <entry> - <key>Please update the ${FORECAST_ENGLISH}.</key> - <value>Please update the forecast.</value> - </entry> - <entry> - <key>Value</key> - </entry> - <entry> - <key>no valid format</key> - </entry> - <entry> - <key>Pos.</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-3</key> - </entry> - <entry> - <key>ISO 3166-1 alpha-2</key> - </entry> - <entry> - <key>0.00</key> - </entry> - <entry> - <key>Relationship</key> - </entry> - <entry> - <key>${BINARY_LIB_TOO_MANY_BINARIES}</key> - <value>For this binary field only one data-item is allowed</value> - </entry> - <entry> - <key>Native Name</key> - </entry> - <entry> - <key>#,##0</key> - </entry> - <entry> - <key>New offer</key> - </entry> - <entry> - <key>dd.MM.yyyy</key> - <value>MM/dd/yyyy</value> - </entry> - <entry> - <key>no valid mail-address format</key> - </entry> - <entry> - <key>#,##0.00</key> - </entry> - <entry> - <key>Latin Name</key> - </entry> - <entry> - <key>Organisation name</key> - </entry> - <entry> - <key>Connection</key> - </entry> - <entry> - <key>standard email</key> - </entry> - <entry> - <key>Edit defaults</key> - </entry> - <entry> - <key>Creator</key> - </entry> - <entry> - <key>Timetracking</key> - </entry> - <entry> - <key>Further informations</key> - </entry> - <entry> - <key>Social</key> - </entry> - <entry> - <key>Facebook Feed</key> - </entry> - <entry> - <key>Group1</key> - </entry> - <entry> - <key>Group2</key> - </entry> - <entry> - <key>Details</key> - </entry> - <entry> - <key>Prices</key> - </entry> - <entry> - <key>Twitter</key> - </entry> - <entry> - <key>Connections</key> - </entry> - <entry> - <key>Object</key> - </entry> - <entry> - <key>Attributes</key> - </entry> - <entry> - <key>Facebook</key> - </entry> - <entry> - <key>Creation date</key> - </entry> - <entry> - <key>Maindocuments</key> - </entry> - <entry> - <key>Receipt</key> - </entry> - <entry> - <key>Receipt number</key> - </entry> - <entry> - <key>Year</key> - </entry> - <entry> - <key>New receipt version</key> - </entry> - <entry> - <key>Orderitems</key> - </entry> - <entry> - <key>Sent receipts</key> - </entry> - <entry> - <key>Copy receipt</key> - </entry> - <entry> - <key>Orderitem</key> - </entry> - <entry> - <key>The order number already exists!</key> - </entry> - <entry> - <key>New activity</key> - </entry> - <entry> - <key>Turnover</key> - </entry> - <entry> - <key>Sent offers</key> - </entry> - <entry> - <key>Show all activities</key> - </entry> - <entry> - <key>Offers</key> - </entry> - <entry> - <key>Show all sent offers</key> - </entry> - <entry> - <key>Show my activities</key> - </entry> - <entry> - <key>Show all receipts</key> - </entry> - <entry> - <key>Receipts</key> - </entry> - <entry> - <key>My Activities</key> - </entry> - <entry> - <key>Show all offers</key> - </entry> - <entry> - <key>Show all products</key> - </entry> - <entry> - <key>Show all Facebook posts of a user</key> - </entry> - <entry> - <key>Show all tweets of a user</key> - </entry> - <entry> - <key>Show all companies</key> - </entry> - <entry> - <key>Show all tweets of ADITO</key> - </entry> - <entry> - <key>Show all sent receipts</key> - </entry> - <entry> - <key>Products</key> - </entry> - <entry> - <key>Show all Facebook posts of ADITO</key> - </entry> - <entry> - <key>Companies</key> - </entry> - <entry> - <key>Show all contacts</key> - </entry> - <entry> - <key>Show open salesprojects</key> - </entry> - <entry> - <key>Show all contracts</key> - </entry> - <entry> - <key>Salesprojects</key> - </entry> - <entry> - <key>Show all salesprojects</key> - </entry> - <entry> - <key>Open salesprojects</key> - </entry> - <entry> - <key>July</key> - </entry> - <entry> - <key>ADITO Facebook Feed</key> - </entry> - <entry> - <key>ADITO Twitter Feed</key> - </entry> - <entry> - <key>June</key> - </entry> - <entry> - <key>October</key> - </entry> - <entry> - <key>Take price</key> - </entry> - <entry> - <key>Twitter Feed</key> - </entry> - <entry> - <key>November</key> - </entry> - <entry> - <key>December</key> - </entry> - <entry> - <key>May</key> - </entry> - <entry> - <key>April</key> - </entry> - <entry> - <key>January</key> - </entry> - <entry> - <key>March</key> - </entry> - <entry> - <key>September</key> - </entry> - <entry> - <key>August</key> - </entry> - <entry> - <key>Category</key> - </entry> - <entry> - <key>February</key> - </entry> - <entry> - <key>Abomodel</key> - </entry> - <entry> - <key>Confirmed</key> - </entry> - <entry> - <key>OutOfOffice</key> - </entry> - <entry> - <key>Articledescription</key> - </entry> - <entry> - <key>Articlenumber</key> - </entry> - <entry> - <key>Industry</key> - </entry> - <entry> - <key>Put Reciever Into To</key> - </entry> - <entry> - <key>Unitprice</key> - </entry> - <entry> - <key>Free</key> - </entry> - <entry> - <key>Total</key> - </entry> - <entry> - <key>yearly series not specified</key> - </entry> - <entry> - <key>no standard email office</key> - </entry> - <entry> - <key>Conditions of payment</key> - </entry> - <entry> - <key>Number</key> - </entry> - <entry> - <key>Amount</key> - </entry> - <entry> - <key>Deliveryspecification</key> - </entry> - <entry> - <key>Ignore daily series</key> - </entry> - <entry> - <key>Tentative</key> - </entry> - <entry> - <key>Ignore series</key> - </entry> - <entry> - <key>Plus Salestax</key> - </entry> - <entry> - <key>Choose address</key> - </entry> - <entry> - <key>Customer Base Sheet</key> - </entry> - <entry> - <key>{$TASK_STATUS}</key> - <value>Status</value> - </entry> - <entry> - <key>Task</key> - </entry> - <entry> - <key>subject</key> - </entry> - <entry> - <key>{$TASK_REQUESTOR}</key> - <value>Requestor</value> - </entry> - <entry> - <key>task number</key> - </entry> - <entry> - <key>{$TASK_EDITOR}</key> - <value>Editor</value> - </entry> - <entry> - <key>description</key> - </entry> - <entry> - <key>priority</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_HIGH}</key> - <value>High</value> - </entry> - <entry> - <key>Seite</key> - </entry> - <entry> - <key>Senden per E-Mail</key> - </entry> - <entry> - <key>Betreff</key> - </entry> - <entry> - <key>title</key> - </entry> - <entry> - <key>von</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_LOW}</key> - <value>Low</value> - </entry> - <entry> - <key>Nur Eigene anzeigen</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NORMAL}</key> - <value>Normal</value> - </entry> - <entry> - <key>Beschreibung</key> - </entry> - <entry> - <key>Unit price</key> - </entry> - <entry> - <key>type</key> - </entry> - <entry> - <key>Benutzer</key> - </entry> - <entry> - <key>{$TASK_PRIORITY_NONE}</key> - <value>None</value> - </entry> - <entry> - <key>Termin</key> - </entry> - <entry> - <key>Vorschau</key> - </entry> - <entry> - <key>Angebot</key> - </entry> - <entry> - <key>details</key> - </entry> - <entry> - <key>Contact type</key> - </entry> - <entry> - <key>Communication data</key> - </entry> - <entry> - <key>Remark</key> - </entry> - <entry> - <key>Department</key> - </entry> - <entry> - <key>Tasks</key> - </entry> - <entry> - <key>Employee</key> - </entry> - <entry> - <key>${SALESPROJECT_MEMBER}</key> - <value>Project member</value> - </entry> - <entry> - <key>responsible</key> - </entry> - <entry> - <key>Kundenstammblatt</key> - </entry> - <entry> - <key>Person</key> - </entry> - <entry> - <key>Detail</key> - </entry> - <entry> - <key>Relations</key> - </entry> - <entry> - <key>${FORECAST_ENGLISH}</key> - <value>Forecast</value> - </entry> - <entry> - <key>Usage</key> - </entry> - <entry> - <key>Maximal Count</key> - </entry> - <entry> - <key>Minimal Count</key> - </entry> - <entry> - <key>${ADDRESS_STATE}</key> - <value>State</value> - </entry> - <entry> - <key>Title (original language)</key> - </entry> - <entry> - <key>Key</key> - </entry> - <entry> - <key>Attribute</key> - </entry> - <entry> - <key>Container</key> - </entry> - <entry> - <key>Administration</key> - </entry> - <entry> - <key>Keyword</key> - </entry> - <entry> - <key>Sorting</key> - </entry> - <entry> - <key>jdito</key> - </entry> - <entry> - <key>Time expenses</key> - </entry> - <entry> - <key>Context id</key> - </entry> - <entry> - <key>Context name</key> - </entry> - <entry> - <key>Cambodia</key> - </entry> - <entry> - <key>Resigned</key> - </entry> - <entry> - <key>Customer</key> - </entry> - <entry> - <key>Outgoing</key> - </entry> - <entry> - <key>Paraguay</key> - </entry> - <entry> - <key>Solomon Islands</key> - </entry> - <entry> - <key>Montserrat</key> - </entry> - <entry> - <key>Guadeloupe</key> - </entry> - <entry> - <key>Product_technic</key> - </entry> - <entry> - <key>Moldova (Republic of)</key> - </entry> - <entry> - <key>Seychelles</key> - </entry> - <entry> - <key>Canadian dollar</key> - </entry> - <entry> - <key>Bahrain</key> - </entry> - <entry> - <key>Comoros</key> - </entry> - <entry> - <key>Faroe Islands</key> - </entry> - <entry> - <key>Finland</key> - </entry> - <entry> - <key>Project_duration</key> - </entry> - <entry> - <key>Company_internationality</key> - </entry> - <entry> - <key>Eritrea</key> - </entry> - <entry> - <key>Puerto Rico</key> - </entry> - <entry> - <key>Viet Nam</key> - </entry> - <entry> - <key>Libya</key> - </entry> - <entry> - <key>French</key> - </entry> - <entry> - <key>Cocos (Keeling) Islands</key> - </entry> - <entry> - <key>Saint Helena, Ascension and Tristan da Cunha</key> - </entry> - <entry> - <key>Liechtenstein</key> - </entry> - <entry> - <key>Product_functionality</key> - </entry> - <entry> - <key>Bulgaria</key> - </entry> - <entry> - <key>Jordan</key> - </entry> - <entry> - <key>United Arab Emirates</key> - </entry> - <entry> - <key>Kenya</key> - </entry> - <entry> - <key>None, individual count</key> - </entry> - <entry> - <key>French Polynesia</key> - </entry> - <entry> - <key>Djibouti</key> - </entry> - <entry> - <key>Cuba</key> - </entry> - <entry> - <key>Saint Lucia</key> - </entry> - <entry> - <key>Mayotte</key> - </entry> - <entry> - <key>Israel</key> - </entry> - <entry> - <key>San Marino</key> - </entry> - <entry> - <key>Tajikistan</key> - </entry> - <entry> - <key>Warehouse 2</key> - </entry> - <entry> - <key>Warehouse 1</key> - </entry> - <entry> - <key>Gibraltar</key> - </entry> - <entry> - <key>Warehouse 3</key> - </entry> - <entry> - <key>Cyprus</key> - </entry> - <entry> - <key>Semiannually</key> - </entry> - <entry> - <key>Northern Mariana Islands</key> - </entry> - <entry> - <key>Malaysia</key> - </entry> - <entry> - <key>Armenia</key> - </entry> - <entry> - <key>Brazil</key> - </entry> - <entry> - <key>Turks and Caicos Islands</key> - </entry> - <entry> - <key>Cabo Verde</key> - </entry> - <entry> - <key>Ecuador</key> - </entry> - <entry> - <key>Iran (Islamic Republic of)</key> - </entry> - <entry> - <key>Decision maker</key> - </entry> - <entry> - <key>Lao People's Democratic Republic</key> - </entry> - <entry> - <key>Maintenance contract</key> - </entry> - <entry> - <key>United States Minor Outlying Islands</key> - </entry> - <entry> - <key>Italy</key> - </entry> - <entry> - <key>${ORGTYPE_OTHER}</key> - <value>Other</value> - </entry> - <entry> - <key>Haiti</key> - </entry> - <entry> - <key>Afghanistan</key> - </entry> - <entry> - <key>Russian Federation</key> - </entry> - <entry> - <key>waiting</key> - </entry> - <entry> - <key>American Samoa</key> - </entry> - <entry> - <key>Korea (Democratic People's Republic of)</key> - </entry> - <entry> - <key>United States dollar</key> - </entry> - <entry> - <key>Kyrgyzstan</key> - </entry> - <entry> - <key>Togo</key> - </entry> - <entry> - <key>Other_existing Customer</key> - </entry> - <entry> - <key>Uzbekistan</key> - </entry> - <entry> - <key>Dominica</key> - </entry> - <entry> - <key>Benin</key> - </entry> - <entry> - <key>Liter</key> - </entry> - <entry> - <key>Virgin Islands (British)</key> - </entry> - <entry> - <key>Sudan</key> - </entry> - <entry> - <key>Portugal</key> - </entry> - <entry> - <key>Grenada</key> - </entry> - <entry> - <key>Latvia</key> - </entry> - <entry> - <key>Mongolia</key> - </entry> - <entry> - <key>Morocco</key> - </entry> - <entry> - <key>Guatemala</key> - </entry> - <entry> - <key>Pieces</key> - </entry> - <entry> - <key>Heard Island and McDonald Islands</key> - </entry> - <entry> - <key>Incoming</key> - </entry> - <entry> - <key>Ghana</key> - </entry> - <entry> - <key>Holy See</key> - </entry> - <entry> - <key>India</key> - </entry> - <entry> - <key>Canada</key> - </entry> - <entry> - <key>Maldives</key> - </entry> - <entry> - <key>Service contract</key> - </entry> - <entry> - <key>Taiwan</key> - </entry> - <entry> - <key>Central African Republic</key> - </entry> - <entry> - <key>Fiji</key> - </entry> - <entry> - <key>Guinea</key> - </entry> - <entry> - <key>Somalia</key> - </entry> - <entry> - <key>Sao Tome and Principe</key> - </entry> - <entry> - <key>United Kingdom of Great Britain and Northern Ireland</key> - </entry> - <entry> - <key>Equatorial Guinea</key> - </entry> - <entry> - <key>Kiribati</key> - </entry> - <entry> - <key>Costa Rica</key> - </entry> - <entry> - <key>Supplier</key> - </entry> - <entry> - <key>Nigeria</key> - </entry> - <entry> - <key>Syrian Arab Republic</key> - </entry> - <entry> - <key>Timor-Leste</key> - </entry> - <entry> - <key>Product_mobile use</key> - </entry> - <entry> - <key>Samoa</key> - </entry> - <entry> - <key>Spain</key> - </entry> - <entry> - <key>Palau</key> - </entry> - <entry> - <key>Prospect</key> - </entry> - <entry> - <key>Estonia</key> - </entry> - <entry> - <key>Not signed yet</key> - </entry> - <entry> - <key>Niue</key> - </entry> - <entry> - <key>Mozambique</key> - </entry> - <entry> - <key>El Salvador</key> - </entry> - <entry> - <key>Guam</key> - </entry> - <entry> - <key>Lesotho</key> - </entry> - <entry> - <key>Tonga</key> - </entry> - <entry> - <key>Western Sahara</key> - </entry> - <entry> - <key>new</key> - </entry> - <entry> - <key>Adviser</key> - </entry> - <entry> - <key>Company_size</key> - </entry> - <entry> - <key>Republic of Kosovo</key> - </entry> - <entry> - <key>South Sudan</key> - </entry> - <entry> - <key>Mauritius</key> - </entry> - <entry> - <key>Bouvet Island</key> - </entry> - <entry> - <key>Bolivia (Plurinational State of)</key> - </entry> - <entry> - <key>Norfolk Island</key> - </entry> - <entry> - <key>Sint Maarten (Dutch part)</key> - </entry> - <entry> - <key>Micronesia (Federated States of)</key> - </entry> - <entry> - <key>Product_industry knowhow</key> - </entry> - <entry> - <key>United States of America</key> - </entry> - <entry> - <key>In review</key> - </entry> - <entry> - <key>Address purchase</key> - </entry> - <entry> - <key>Malta</key> - </entry> - <entry> - <key>Project_volume</key> - </entry> - <entry> - <key>Ireland</key> - </entry> - <entry> - <key>Inactive</key> - </entry> - <entry> - <key>France</key> - </entry> - <entry> - <key>Lithuania</key> - </entry> - <entry> - <key>Korea (Republic of)</key> - </entry> - <entry> - <key>${PRICELIST_SERVICE}</key> - <value>Service</value> - </entry> - <entry> - <key>English</key> - </entry> - <entry> - <key>Nicaragua</key> - </entry> - <entry> - <key>Macao</key> - </entry> - <entry> - <key>Mexico</key> - </entry> - <entry> - <key>Uganda</key> - </entry> - <entry> - <key>Suriname</key> - </entry> - <entry> - <key>Greenland</key> - </entry> - <entry> - <key>Papua New Guinea</key> - </entry> - <entry> - <key>Kazakhstan</key> - </entry> - <entry> - <key>Bahamas</key> - </entry> - <entry> - <key>Mali</key> - </entry> - <entry> - <key>Marshall Islands</key> - </entry> - <entry> - <key>Panama</key> - </entry> - <entry> - <key>Bonaire, Sint Eustatius and Saba</key> - </entry> - <entry> - <key>Tanzania, United Republic of</key> - </entry> - <entry> - <key>Argentina</key> - </entry> - <entry> - <key>Belize</key> - </entry> - <entry> - <key>Zambia</key> - </entry> - <entry> - <key>Congo</key> - </entry> - <entry> - <key>Guinea-Bissau</key> - </entry> - <entry> - <key>Namibia</key> - </entry> - <entry> - <key>External sales manager</key> - </entry> - <entry> - <key>Georgia</key> - </entry> - <entry> - <key>Saint Kitts and Nevis</key> - </entry> - <entry> - <key>Yemen</key> - </entry> - <entry> - <key>Aruba</key> - </entry> - <entry> - <key>Madagascar</key> - </entry> - <entry> - <key>Valid, unlimited</key> - </entry> - <entry> - <key>Svalbard and Jan Mayen</key> - </entry> - <entry> - <key>South Georgia and the South Sandwich Islands</key> - </entry> - <entry> - <key>Sweden</key> - </entry> - <entry> - <key>Malawi</key> - </entry> - <entry> - <key>Andorra</key> - </entry> - <entry> - <key>Poland</key> - </entry> - <entry> - <key>Tunisia</key> - </entry> - <entry> - <key>Tuvalu</key> - </entry> - <entry> - <key>Lebanon</key> - </entry> - <entry> - <key>Azerbaijan</key> - </entry> - <entry> - <key>Czech Republic</key> - </entry> - <entry> - <key>Mauritania</key> - </entry> - <entry> - <key>Guernsey</key> - </entry> - <entry> - <key>Kgs</key> - </entry> - <entry> - <key>Australia</key> - </entry> - <entry> - <key>Myanmar</key> - </entry> - <entry> - <key>Cameroon</key> - </entry> - <entry> - <key>Iceland</key> - </entry> - <entry> - <key>Oman</key> - </entry> - <entry> - <key>Gabon</key> - </entry> - <entry> - <key>Luxembourg</key> - </entry> - <entry> - <key>Algeria</key> - </entry> - <entry> - <key>Jersey</key> - </entry> - <entry> - <key>Slovenia</key> - </entry> - <entry> - <key>Antigua and Barbuda</key> - </entry> - <entry> - <key>Annually</key> - </entry> - <entry> - <key>Colombia</key> - </entry> - <entry> - <key>Project_reference</key> - </entry> - <entry> - <key>Vanuatu</key> - </entry> - <entry> - <key>Valid, limited</key> - </entry> - <entry> - <key>Honduras</key> - </entry> - <entry> - <key>Antarctica</key> - </entry> - <entry> - <key>Nauru</key> - </entry> - <entry> - <key>Burundi</key> - </entry> - <entry> - <key>Project manager</key> - </entry> - <entry> - <key>Singapore</key> - </entry> - <entry> - <key>French Guiana</key> - </entry> - <entry> - <key>Hours</key> - </entry> - <entry> - <key>Christmas Island</key> - </entry> - <entry> - <key>Netherlands</key> - </entry> - <entry> - <key>Product_flexibility</key> - </entry> - <entry> - <key>China</key> - </entry> - <entry> - <key>Martinique</key> - </entry> - <entry> - <key>Own website</key> - </entry> - <entry> - <key>Saint Pierre and Miquelon</key> - </entry> - <entry> - <key>Bhutan</key> - </entry> - <entry> - <key>Romania</key> - </entry> - <entry> - <key>Falkland Islands (Malvinas)</key> - </entry> - <entry> - <key>Philippines</key> - </entry> - <entry> - <key>Pitcairn</key> - </entry> - <entry> - <key>Zimbabwe</key> - </entry> - <entry> - <key>British Indian Ocean Territory</key> - </entry> - <entry> - <key>Montenegro</key> - </entry> - <entry> - <key>Quarterly</key> - </entry> - <entry> - <key>Indonesia</key> - </entry> - <entry> - <key>Angola</key> - </entry> - <entry> - <key>Internal</key> - </entry> - <entry> - <key>Key account</key> - <value></value> - </entry> - <entry> - <key>Brunei Darussalam</key> - </entry> - <entry> - <key>New Caledonia</key> - </entry> - <entry> - <key>Cayman Islands</key> - </entry> - <entry> - <key>Congo (Democratic Republic of the)</key> - </entry> - <entry> - <key>Greece</key> - </entry> - <entry> - <key>Guyana</key> - </entry> - <entry> - <key>Project assistant</key> - </entry> - <entry> - <key>Iraq</key> - </entry> - <entry> - <key>Chile</key> - </entry> - <entry> - <key>Nepal</key> - </entry> - <entry> - <key>${PRICELIST_DEFAULT}</key> - <value>Standard</value> - </entry> - <entry> - <key>Customer recommendation</key> - </entry> - <entry> - <key>Other_unknown</key> - </entry> - <entry> - <key>Isle of Man</key> - </entry> - <entry> - <key>Ukraine</key> - </entry> - <entry> - <key>Anguilla</key> - </entry> - <entry> - <key>Euro</key> - </entry> - <entry> - <key>Product_GUI</key> - </entry> - <entry> - <key>${GENDER_OTHER}</key> - </entry> - <entry> - <key>Turkey</key> - </entry> - <entry> - <key>Belgium</key> - </entry> - <entry> - <key>South Africa</key> - </entry> - <entry> - <key>Trinidad and Tobago</key> - </entry> - <entry> - <key>Bermuda</key> - </entry> - <entry> - <key>Jamaica</key> - </entry> - <entry> - <key>Peru</key> - </entry> - <entry> - <key>Turkmenistan</key> - </entry> - <entry> - <key>Venezuela (Bolivarian Republic of)</key> - </entry> - <entry> - <key>Tokelau</key> - </entry> - <entry> - <key>Hong Kong</key> - </entry> - <entry> - <key>Chad</key> - </entry> - <entry> - <key>German</key> - </entry> - <entry> - <key>Thailand</key> - </entry> - <entry> - <key>in process</key> - </entry> - <entry> - <key>Saint Martin (French part)</key> - </entry> - <entry> - <key>Kuwait</key> - </entry> - <entry> - <key>Palestine, State of</key> - </entry> - <entry> - <key>Croatia</key> - </entry> - <entry> - <key>Cook Islands</key> - </entry> - <entry> - <key>Fair</key> - </entry> - <entry> - <key>Sri Lanka</key> - </entry> - <entry> - <key>Uruguay</key> - </entry> - <entry> - <key>Liberia</key> - </entry> - <entry> - <key>Burkina Faso</key> - </entry> - <entry> - <key>Swiss franc</key> - </entry> - <entry> - <key>Swaziland</key> - </entry> - <entry> - <key>ended</key> - </entry> - <entry> - <key>Wallis and Futuna</key> - </entry> - <entry> - <key>Company_industry knowhow</key> - </entry> - <entry> - <key>Monaco</key> - </entry> - <entry> - <key>Spanish</key> - </entry> - <entry> - <key>Hungary</key> - </entry> - <entry> - <key>Japan</key> - </entry> - <entry> - <key>Belarus</key> - </entry> - <entry> - <key>Albania</key> - </entry> - <entry> - <key>Internal sales manager</key> - </entry> - <entry> - <key>Virgin Islands (U.S.)</key> - </entry> - <entry> - <key>New Zealand</key> - </entry> - <entry> - <key>Senegal</key> - </entry> - <entry> - <key>Ethiopia</key> - </entry> - <entry> - <key>Macedonia (the former Yugoslav Republic of)</key> - </entry> - <entry> - <key>Egypt</key> - </entry> - <entry> - <key>Sierra Leone</key> - </entry> - <entry> - <key>Saudi Arabia</key> - </entry> - <entry> - <key>Pakistan</key> - </entry> - <entry> - <key>Gambia</key> - </entry> - <entry> - <key>Qatar</key> - </entry> - <entry> - <key>Slovakia</key> - </entry> - <entry> - <key>Serbia</key> - </entry> - <entry> - <key>Bosnia and Herzegovina</key> - </entry> - <entry> - <key>Framework contract</key> - </entry> - <entry> - <key>Niger</key> - </entry> - <entry> - <key>Rwanda</key> - </entry> - <entry> - <key>French Southern Territories</key> - </entry> - <entry> - <key>Bangladesh</key> - </entry> - <entry> - <key>Barbados</key> - </entry> - <entry> - <key>Botswana</key> - </entry> - <entry> - <key>Saint Vincent and the Grenadines</key> - </entry> - <entry> - <key>Denmark</key> - </entry> - <entry> - <key>Dominican Republic</key> - </entry> - <entry> - <key>Cover letter</key> - </entry> - <entry> - <key>Create receipt</key> - </entry> - <entry> - <key>New time tracking</key> - </entry> - <entry> - <key>MAL</key> - </entry> - <entry> - <key>SQO</key> - </entry> - <entry> - <key>NQC</key> - </entry> - <entry> - <key>MQL</key> - </entry> - <entry> - <key>SAL</key> - </entry> - <entry> - <key>Checkbox</key> - </entry> - <entry> - <key>Numeric value</key> - </entry> - <entry> - <key>decline</key> - </entry> - <entry> - <key>Text</key> - </entry> - <entry> - <key>Group</key> - </entry> - <entry> - <key>Combobox</key> - </entry> - <entry> - <key>tentative</key> - </entry> - <entry> - <key>${NUMBER}</key> - <value>Number</value> - </entry> - <entry> - <key>Name \"%0\" already used for container \"%1\"</key> - </entry> - <entry> - <key>CHAR_VALUE</key> - </entry> - <entry> - <key>Keyword Attribute</key> - </entry> - <entry> - <key>in</key> - </entry> - <entry> - <key>Keyword Attribute Values</key> - </entry> - <entry> - <key>Boolean value</key> - </entry> - <entry> - <key>accept</key> - </entry> - <entry> - <key>The ZIP code does not match the format of the country.</key> - </entry> - <entry> - <key>String value</key> - </entry> - <entry> - <key>The code number is not a valid number.</key> - </entry> - <entry> - <key>${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0</key> - <value>The DBTYPE is not supported by function %0.</value> - </entry> - <entry> - <key>${PRODUCT_LIB_NO_PRODUCT_ID} function: %0</key> - <value>Missing productId in function %0.</value> - </entry> - <entry> - <key>Object type</key> - </entry> - <entry> - <key>Touchpoint</key> - </entry> - <entry> - <key>Touchpoints</key> - </entry> - <entry> - <key>Days inactive</key> - </entry> - <entry> - <key>Combobox Value</key> - </entry> - <entry> - <key>relations</key> - </entry> - <entry> - <key>Time</key> - </entry> - <entry> - <key>New task</key> - </entry> - <entry> - <key>the specified key has to be unique for that container but does already exist</key> - </entry> - <entry> - <key>Relationtype</key> - </entry> - <entry> - <key>Tree</key> - </entry> - <entry> - <key>100%</key> - </entry> - <entry> - <key>Mobil</key> - </entry> - <entry> - <key>25%</key> - </entry> - <entry> - <key>50%</key> - </entry> - <entry> - <key>75%</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword container \"%1\"</key> - </entry> - <entry> - <key>competitor</key> - </entry> - <entry> - <key>0%</key> - </entry> - <entry> - <key>acquainted with</key> - </entry> - <entry> - <key>collaboration with</key> - </entry> - <entry> - <key>parent company</key> - </entry> - <entry> - <key>society</key> - </entry> - <entry> - <key>ankle of</key> - </entry> - <entry> - <key>solicits</key> - </entry> - <entry> - <key>child of</key> - </entry> - <entry> - <key>supervisor of</key> - </entry> - <entry> - <key>reports to</key> - </entry> - <entry> - <key>subsidiary</key> - </entry> - <entry> - <key>supported by</key> - </entry> - <entry> - <key>member</key> - </entry> - <entry> - <key>promotion target of</key> - </entry> - <entry> - <key>supports</key> - </entry> - <entry> - <key>parent of</key> - </entry> - <entry> - <key>grandparents of</key> - </entry> - <entry> - <key>Entrydate (Month)</key> - </entry> - <entry> - <key>Entrydate (Day)</key> - </entry> - <entry> - <key>My Dashboard</key> - </entry> - <entry> - <key>Salesdashboard</key> - </entry> - <entry> - <key>Discount %</key> - </entry> - <entry> - <key>Memo</key> - </entry> - <entry> - <key>Function</key> - </entry> - <entry> - <key>Relational</key> - </entry> - <entry> - <key>Only numbers are allowed.</key> - </entry> - <entry> - <key>Superordinate Attribute</key> - </entry> - <entry> - <key>${SALESPROJECT_OFFER}</key> - <value>Offer</value> - </entry> - <entry> - <key>${SALESPROJECT_NEGOTIATION}</key> - <value>Negotiation</value> - </entry> - <entry> - <key>Filesize</key> - </entry> - <entry> - <key>Filename</key> - </entry> - <entry> - <key>Filetype</key> - </entry> - <entry> - <key>Special price list</key> - </entry> - <entry> - <key>New attribute</key> - </entry> - <entry> - <key>MQC</key> - </entry> - <entry> - <key>History</key> - </entry> - <entry> - <key>Progress</key> - </entry> - <entry> - <key>Module</key> - </entry> - <entry> - <key>7 days net</key> - </entry> - <entry> - <key>carriage free</key> - </entry> - <entry> - <key>8 days 2% discount, 30 days net</key> - </entry> - <entry> - <key>CIF</key> - </entry> - <entry> - <key>ex works</key> - </entry> - <entry> - <key>30 days net</key> - </entry> - <entry> - <key>Directly responsible:</key> - </entry> - <entry> - <key>Payment term</key> - </entry> - <entry> - <key>Contactrole</key> - </entry> - <entry> - <key>New appointment</key> - </entry> - <entry> - <key>&Aufg / Term (%0/%1)</key> - </entry> - <entry> - <key>Verschieben auf Datum?</key> - </entry> - <entry> - <key>niedrig</key> - </entry> - <entry> - <key>Gebucht</key> - </entry> - <entry> - <key>Other Contactroles</key> - </entry> - <entry> - <key>In Bearbeitung</key> - </entry> - <entry> - <key>OK</key> - </entry> - <entry> - <key>Nicht begonnen</key> - </entry> - <entry> - <key>Bitte Filterbedingungen setzen</key> - </entry> - <entry> - <key>keine</key> - </entry> - <entry> - <key>Eine private Aufgabe kann nicht jemand anderem zugewiesen werden.</key> - </entry> - <entry> - <key>Aufgaben von</key> - </entry> - <entry> - <key>&Aufgaben (%0)</key> - </entry> - <entry> - <key>hoch</key> - </entry> - <entry> - <key>Erledigt</key> - </entry> - <entry> - <key>Abgesagt</key> - </entry> - <entry> - <key>Abbrechen</key> - </entry> - <entry> - <key>delegiert</key> - </entry> - <entry> - <key>frei</key> - </entry> - <entry> - <key>%0 Aufgabe(n) erfolgreich weitergegeben an: %1</key> - </entry> - <entry> - <key>normal</key> - </entry> - <entry> - <key>Termine von</key> - </entry> - <entry> - <key>nur Verschiebung in die Zukunft erlaubt!</key> - </entry> - <entry> - <key>Kategorie</key> - </entry> - <entry> - <key>Product content</key> - </entry> - <entry> - <key>Know How</key> - </entry> - <entry> - <key>Personal appearance</key> - </entry> - <entry> - <key>Market situation</key> - </entry> - <entry> - <key>Liquidity</key> - </entry> - <entry> - <key>Price policy</key> - </entry> - <entry> - <key>Approved</key> - </entry> - <entry> - <key>Completed</key> - </entry> - <entry> - <key>In planning</key> - </entry> - <entry> - <key>Campaign Step</key> - </entry> - <entry> - <key>360 Degree</key> - </entry> - <entry> - <key>Campaigns</key> - </entry> - <entry> - <key>Campaign</key> - </entry> - <entry> - <key>Auswertung</key> - </entry> - <entry> - <key>VAT in %</key> - </entry> - <entry> - <key>Kampagnenschritte</key> - </entry> - <entry> - <key>Marketing</key> - </entry> - <entry> - <key>Neuer Kampagnenschritt</key> - </entry> - <entry> - <key>Neue Kampagne</key> - </entry> - <entry> - <key>${QUANTITY_LOWER_THAN_1}</key> - <value>Quantity should be greater than 0.</value> - </entry> - <entry> - <key>This combination of person and organisation does already exist and can not be created once more.</key> - </entry> - <entry> - <key>Time in minutes</key> - </entry> - <entry> - <key>Sales manager</key> - </entry> - <entry> - <key>IT</key> - </entry> - <entry> - <key>Administrator</key> - </entry> - <entry> - <key>Managing director</key> - </entry> - <entry> - <key>Production manager</key> - </entry> - <entry> - <key>Production</key> - </entry> - <entry> - <key>CEO</key> - </entry> - <entry> - <key>Purchasing manager</key> - </entry> - <entry> - <key>Marketing manager</key> - </entry> - <entry> - <key>IT manager</key> - </entry> - <entry> - <key>CSO</key> - </entry> - <entry> - <key>Executive board</key> - </entry> - <entry> - <key>Supervisory board</key> - </entry> - <entry> - <key>Management</key> - </entry> - <entry> - <key>New module</key> - </entry> - <entry> - <key>Côte d'Ivoire</key> - </entry> - <entry> - <key>Bitte Datumseingabe prüfen!</key> - </entry> - <entry> - <key>Bestätigt</key> - </entry> - <entry> - <key>Vorläufig</key> - </entry> - <entry> - <key>Saint Barthélemy</key> - </entry> - <entry> - <key>erledigt / zurückgestellt</key> - </entry> - <entry> - <key>Zurückgestellt</key> - </entry> - <entry> - <key>Außer Haus</key> - </entry> - <entry> - <key>Benutzer auswählen</key> - </entry> - <entry> - <key>Åland Islands</key> - </entry> - <entry> - <key>Curaçao</key> - </entry> - <entry> - <key>Réunion</key> - </entry> - <entry> - <key>date of birth must not be in the future</key> - </entry> - <entry> - <key>Manufacturer</key> - </entry> - <entry> - <key>Competitor</key> - </entry> - <entry> - <key>Partner</key> - </entry> - <entry> - <key>True</key> - </entry> - <entry> - <key>False</key> - </entry> - <entry> - <key>false</key> - </entry> - <entry> - <key>true</key> - </entry> - <entry> - <key>Protected</key> - </entry> - <entry> - <key>${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3</key> - <value>%0 has to be between %2 and %3.</value> - </entry> - <entry> - <key>Password</key> - </entry> - <entry> - <key>Confirm password</key> - </entry> - <entry> - <key>Set password</key> - </entry> - <entry> - <key>Email</key> - </entry> - <entry> - <key>{$OBJECTLINK_TYPE}</key> - <value>Type</value> - </entry> - <entry> - <key>{$OBJECTLINK_OBJECT}</key> - <value>Object</value> - </entry> - <entry> - <key>Roles</key> - </entry> - <entry> - <key>Password and confirmation must be the same!</key> - </entry> - <entry> - <key>Begin</key> - </entry> - <entry> - <key>Maturity</key> - </entry> - <entry> - <key>Username</key> - </entry> - <entry> - <key>The person is already associated with another employee!</key> - </entry> - <entry> - <key>Username already exists!</key> - </entry> - <entry> - <key>This private person doeas already exist and can not be created once more.</key> - </entry> - <entry> - <key>Everyone</key> - </entry> - <entry> - <key>Project</key> - </entry> - <entry> - <key>Project management</key> - </entry> - <entry> - <key>Office staff</key> - </entry> - <entry> - <key>Field staff</key> - </entry> - <entry> - <key>Resource</key> - </entry> - <entry> - <key>Human Resources</key> - </entry> - <entry> - <key>Email must be unique!</key> - </entry> - <entry> - <key>Project Management</key> - </entry> - <entry> - <key>Support</key> - </entry> - <entry> - <key>{$ADDRESS_IDENTIFIER}</key> - <value>Identifier</value> - </entry> - <entry> - <key>Salesproject phases</key> - </entry> - <entry> - <key>Add to Campaign</key> - </entry> - <entry> - <key>Max participants</key> - </entry> - <entry> - <key>Participants</key> - </entry> - <entry> - <key>Add the selection to a campaign</key> - </entry> - <entry> - <key>participants will be added to the selected campaign step</key> - </entry> - <entry> - <key>Add participants to Campaign</key> - </entry> - <entry> - <key>Key figures</key> - </entry> - <entry> - <key>Hierarchy</key> - </entry> - <entry> - <key>Object relation</key> - </entry> - <entry> - <key>Relation type 1</key> - </entry> - <entry> - <key>Relation type 2</key> - </entry> - <entry> - <key>Relation type</key> - </entry> - <entry> - <key>Context 1</key> - </entry> - <entry> - <key>Context 2</key> - </entry> - <entry> - <key>Delete all usage</key> - </entry> - <entry> - <key>Deleted all usages of \"%0\".</key> - </entry> - <entry> - <key>Successful</key> - </entry> - <entry> - <key>Count</key> - </entry> - <entry> - <key>Picture</key> - </entry> - <entry> - <key>Chart</key> - </entry> - <entry> - <key>Zeigt wie viele Vertriebsprojekte in den einzelnen Vertriebsphasen sind. </key> - </entry> - <entry> - <key>Enable relation type 2</key> - </entry> - <entry> - <key>Salesproject Analyses</key> - </entry> - <entry> - <key>Wichtigste Kennzahlen zu den Vertriebsprojekten.</key> - </entry> - <entry> - <key>Days count</key> - </entry> - <entry> - <key>Clear forecast and set state to '%0'?</key> - </entry> - <entry> - <key>Would you really like to clear the forecast and set the state to '%0'?</key> - </entry> - <entry> - <key>This cannot be undone!</key> - </entry> - <entry> - <key>Campaign status</key> - </entry> - <entry> - <key>Set campaign step</key> - </entry> - <entry> - <key>Add participant to Campaign</key> - </entry> - <entry> - <key>Steps</key> - </entry> - <entry> - <key>Added</key> - </entry> - <entry> - <key>Current participants</key> - </entry> - <entry> - <key>Overdue tasks</key> - </entry> - <entry> - <key>[%0]the tableName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 has to be a string or array but it is %2</key> - </entry> - <entry> - <key>[%0]has now an incorrect length; estimated 2 elements but got %1</key> - </entry> - <entry> - <key>[%0]the columnName is not a string after interpreting</key> - </entry> - <entry> - <key>[%0]%1 is an object but seems not to be a valid array or array-like</key> - </entry> - <entry> - <key>Responsible</key> - </entry> - <entry> - <key>New tasks</key> - </entry> - <entry> - <key>Imminent appointments for today</key> - </entry> - <entry> - <key>Analyses</key> - </entry> - <entry> - <key>To-Do</key> - </entry> - <entry> - <key>Calendar</key> - </entry> - <entry> - <key>${SQL_LIB_UNDEFINED_VALUE} field: %0</key> - <value>The value for the field %0 is undefined.</value> - </entry> - <entry> - <key>My tasks</key> - </entry> - <entry> - <key>${ATTRIBUTE_VOID}</key> - <value>Tag</value> - </entry> - <entry> - <key>Kampagnenzeitraum</key> - </entry> - <entry> - <key>Hauptverantw.</key> - </entry> - <entry> - <key>New campaign step</key> - </entry> - <entry> - <key>New campaign</key> - </entry> - <entry> - <key>Cost</key> - </entry> - <entry> - <key>file '%0' cannot be read</key> - </entry> - <entry> - <key>Importer</key> - </entry> - <entry> - <key>Participant</key> - </entry> - <entry> - <key>Printing costs</key> - </entry> - <entry> - <key>Shipping costs</key> - </entry> - <entry> - <key>yyyy-MM-dd HH:mm:ss</key> - </entry> - <entry> - <key>file '%0' does not exist or you have got no permission on this file</key> - </entry> - <entry> - <key>Zip</key> - </entry> - <entry> - <key>Layout costs</key> - </entry> - <entry> - <key>Fix cost</key> - </entry> - <entry> - <key>Step</key> - </entry> - <entry> - <key>${WEBSERVICE_ERROR} url:%0 status:%1</key> - <value>Webservice not available. URL: %0 %1</value> - </entry> - <entry> - <key>per</key> - </entry> - <entry> - <key>The minimal count can't be larger than the maximal count!</key> - </entry> - <entry> - <key>The max participants count has to be equal or greater than the count of the current participants!</key> - </entry> - <entry> - <key>Variable costs</key> - </entry> - <entry> - <key>Id value</key> - </entry> - <entry> - <key>Order executed</key> - </entry> - <entry> - <key>Liquibase</key> - </entry> - <entry> - <key>Number value</key> - </entry> - <entry> - <key>Author</key> - </entry> - <entry> - <key>Position Id</key> - </entry> - <entry> - <key>ISO3</key> - </entry> - <entry> - <key>ISO2</key> - </entry> - <entry> - <key>Communication Id</key> - </entry> - <entry> - <key>Attribute Id</key> - </entry> - <entry> - <key>Modification user</key> - </entry> - <entry> - <key>Headline</key> - </entry> - <entry> - <key>Salesorder Id</key> - </entry> - <entry> - <key>Salesproject milestone Id</key> - </entry> - <entry> - <key>Appointment Id</key> - </entry> - <entry> - <key>Locked</key> - </entry> - <entry> - <key>Timetracking Id</key> - </entry> - <entry> - <key>Exec type</key> - </entry> - <entry> - <key>Date value</key> - </entry> - <entry> - <key>NUMBER VALUE</key> - </entry> - <entry> - <key>Salesproject forecast Id</key> - </entry> - <entry> - <key>ID</key> - </entry> - <entry> - <key>Keyword attribute relation Id</key> - </entry> - <entry> - <key>Minimal count</key> - </entry> - <entry> - <key>Id</key> - </entry> - <entry> - <key>Object 1 row Id</key> - </entry> - <entry> - <key>Side</key> - </entry> - <entry> - <key>Salesproject Id</key> - </entry> - <entry> - <key>Product Id</key> - </entry> - <entry> - <key>Sort</key> - </entry> - <entry> - <key>Relation Title</key> - </entry> - <entry> - <key>%0 \"%1\"</key> - </entry> - <entry> - <key>Maximal count</key> - </entry> - <entry> - <key>Data executed</key> - </entry> - <entry> - <key>Indexsearch</key> - </entry> - <entry> - <key>Appointment link Id</key> - </entry> - <entry> - <key>Relation Type</key> - </entry> - <entry> - <key>Salesproject member Id</key> - </entry> - <entry> - <key>Salesproject source Id</key> - </entry> - <entry> - <key>Item sort</key> - </entry> - <entry> - <key>%0 modified.</key> - </entry> - <entry> - <key>Contract Id</key> - </entry> - <entry> - <key>Int value</key> - </entry> - <entry> - <key>Object 2 row Id</key> - </entry> - <entry> - <key>Source tablename Id</key> - </entry> - <entry> - <key>Source tablename</key> - </entry> - <entry> - <key>Contact Id</key> - </entry> - <entry> - <key>Sales area</key> - </entry> - <entry> - <key>Parent Id</key> - </entry> - <entry> - <key>Task link Id</key> - </entry> - <entry> - <key>BOOL VALUE</key> - </entry> - <entry> - <key>Keyword attribute Id</key> - </entry> - <entry> - <key>Log type</key> - </entry> - <entry> - <key>Object row Id</key> - </entry> - <entry> - <key>Labels</key> - </entry> - <entry> - <key>%0 deleted.</key> - </entry> - <entry> - <key>Salesproject competition Id</key> - </entry> - <entry> - <key>Activity Id</key> - </entry> - <entry> - <key>Person Id</key> - </entry> - <entry> - <key>Offer item Id</key> - </entry> - <entry> - <key>Offer Id</key> - </entry> - <entry> - <key>Name native</key> - </entry> - <entry> - <key>Flag</key> - </entry> - <entry> - <key>Address Id</key> - </entry> - <entry> - <key>Name latin</key> - </entry> - <entry> - <key>Destination Id</key> - </entry> - <entry> - <key>Sex</key> - </entry> - <entry> - <key>Product price Id</key> - </entry> - <entry> - <key>%0 added.</key> - </entry> - <entry> - <key>Object Relation Type</key> - </entry> - <entry> - <key>Entry date</key> - </entry> - <entry> - <key>Object relation type 2</key> - </entry> - <entry> - <key>Object relation type 1</key> - </entry> - <entry> - <key>Modification date</key> - </entry> - <entry> - <key>Object Type</key> - </entry> - <entry> - <key>%0 from \"%1\" to \"%2\"</key> - </entry> - <entry> - <key>MD5 Sum</key> - </entry> - <entry> - <key>Letter salutation</key> - </entry> - <entry> - <key>Lock granted</key> - </entry> - <entry> - <key>Required fields</key> - </entry> - <entry> - <key>Address addition</key> - </entry> - <entry> - <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> - </entry> - <entry> - <key>Attribute usage Id</key> - </entry> - <entry> - <key>LogHistory</key> - </entry> - <entry> - <key>Locked by</key> - </entry> - <entry> - <key>Desciption</key> - </entry> - <entry> - <key>Salutation Id</key> - </entry> - <entry> - <key>Comments</key> - </entry> - <entry> - <key>Task Id</key> - </entry> - <entry> - <key>Valid to</key> - </entry> - <entry> - <key>ZIP regex</key> - </entry> - <entry> - <key>Keyword entry Id</key> - </entry> - <entry> - <key>Stop costs</key> - </entry> - <entry> - <key>Contexts</key> - </entry> - <entry> - <key>Assigned to</key> - </entry> - <entry> - <key>%0 from \"%1\" to %2 \"%3\"</key> - </entry> - <entry> - <key>Date start</key> - </entry> - <entry> - <key>Deployment Id</key> - </entry> - <entry> - <key>Address format</key> - </entry> - <entry> - <key>Activity link Id</key> - </entry> - <entry> - <key>Date end</key> - </entry> - <entry> - <key>Creation user</key> - </entry> - <entry> - <key>Object Id</key> - </entry> - <entry> - <key>Is active</key> - </entry> - <entry> - <key>Product relationship</key> - </entry> - <entry> - <key>Salesorder item Id</key> - </entry> - <entry> - <key>Char value</key> - </entry> - <entry> - <key>Attribute relation Id</key> - </entry> - <entry> - <key>Tag</key> - </entry> - <entry> - <key>Title suffix</key> - </entry> - <entry> - <key>Step costs</key> - </entry> - <entry> - <key>Min. Stock</key> - </entry> - <entry> - <key>User</key> - </entry> - <entry> - <key>Stock Id</key> - </entry> - <entry> - <key>Tablename</key> - </entry> - <entry> - <key>CHAR VALUE</key> - </entry> - <entry> - <key>Parent context</key> - </entry> - <entry> - <key>Organisation Id</key> - </entry> - <entry> - <key>Tablename Id</key> - </entry> - <entry> - <key>Competitors</key> - </entry> - <entry> - <key>Notifications</key> - </entry> - <entry> - <key>Overview</key> - </entry> - <entry> - <key>Participated</key> - </entry> - <entry> - <key>Remaining Runtime</key> - </entry> - <entry> - <key>Document Template</key> - </entry> - <entry> - <key>Text Modular</key> - </entry> - <entry> - <key>Serial</key> - </entry> - <entry> - <key>Campaign Period</key> - </entry> - <entry> - <key>Single</key> - </entry> - <entry> - <key>Attachment</key> - </entry> - <entry> - <key>Attachments</key> - </entry> - <entry> - <key>Letter</key> - </entry> - <entry> - <key>Appointment</key> - </entry> - <entry> - <key>rebuild Index</key> - </entry> - <entry> - <key>Charts</key> - </entry> - <entry> - <key>Keywords</key> - </entry> - <entry> - <key>Days running</key> - </entry> - <entry> - <key>Logs</key> - </entry> - <entry> - <key>Mail</key> - </entry> - <entry> - <key>Phonecall</key> - </entry> - <entry> - <key>Chart 2</key> - </entry> - <entry> - <key>Log</key> - </entry> - <entry> - <key>Offer Header Text</key> - </entry> - <entry> - <key>Employees</key> - </entry> - <entry> - <key>Todo</key> - </entry> - <entry> - <key>Days remaining</key> - </entry> - <entry> - <key>Offer Footer Text</key> - </entry> - <entry> - <key>Date new</key> - </entry> - <entry> - <key>Date edit</key> - </entry> - <entry> - <key>Keyword Attributes</key> - </entry> - <entry> - <key>Student/Internship</key> - </entry> - <entry> - <key>Food</key> - </entry> - <entry> - <key>200 to 349T</key> - </entry> - <entry> - <key>Within 6 months</key> - </entry> - <entry> - <key>No project planned</key> - </entry> - <entry> - <key>Logistics</key> - </entry> - <entry> - <key>Skilled workers</key> - </entry> - <entry> - <key>Purchasing</key> - </entry> - <entry> - <key>Rate</key> - </entry> - <entry> - <key>Choice</key> - </entry> - <entry> - <key>points</key> - </entry> - <entry> - <key>Education</key> - </entry> - <entry> - <key>Public</key> - </entry> - <entry> - <key>Building and construction suppliers</key> - </entry> - <entry> - <key>0 to 49</key> - </entry> - <entry> - <key>0 to 49T</key> - </entry> - <entry> - <key>CRM Manager</key> - </entry> - <entry> - <key>50 to 99T</key> - </entry> - <entry> - <key>Search</key> - </entry> - <entry> - <key>Counsellor</key> - </entry> - <entry> - <key>50 to 100</key> - </entry> - <entry> - <key>OnPremise</key> - </entry> - <entry> - <key>Head of IT</key> - </entry> - <entry> - <key>Electric</key> - </entry> - <entry> - <key>from 1,000</key> - </entry> - <entry> - <key>Publishing house</key> - </entry> - <entry> - <key>100 to 199T</key> - </entry> - <entry> - <key>101 to 250</key> - </entry> - <entry> - <key>Overarching</key> - </entry> - <entry> - <key>Energy</key> - </entry> - <entry> - <key>Machinery and equipment</key> - </entry> - <entry> - <key>Trade</key> - </entry> - <entry> - <key>Consultation</key> - </entry> - <entry> - <key>Cloud</key> - </entry> - <entry> - <key>No date yet</key> - </entry> - <entry> - <key>Classifications</key> - </entry> - <entry> - <key>Service Manager</key> - </entry> - <entry> - <key>Lifesience</key> - </entry> - <entry> - <key>Automotive</key> - </entry> - <entry> - <key>Lottery</key> - </entry> - <entry> - <key>from 350T</key> - </entry> - <entry> - <key>Management/Sales Manager</key> - </entry> - <entry> - <key>Environment</key> - </entry> - <entry> - <key>Within 12 months</key> - </entry> - <entry> - <key>Finance</key> - </entry> - <entry> - <key>ScoreProjectStart</key> - <value>Project start</value> - </entry> - <entry> - <key>ScoreStandard</key> - <value>Standard</value> - </entry> - <entry> - <key>ScoreCustomizing</key> - <value>Customizing</value> - </entry> - <entry> - <key>ScoreDecisionPhase</key> - <value>Desicion phase</value> - </entry> - <entry> - <key>ScoreUsers</key> - <value>User count</value> - </entry> - <entry> - <key>ScoreBranch</key> - <value>Branche</value> - </entry> - <entry> - <key>ScorePosition</key> - <value>Position</value> - </entry> - <entry> - <key>ScoreBudget</key> - <value>Project budget</value> - </entry> - <entry> - <key>ScoreDepartment</key> - <value>department</value> - </entry> - <entry> - <key>ScoreCloud</key> - <value>Operating model</value> - </entry> - <entry> - <key>ScoreBased</key> - <value>Headquarters</value> - </entry> - <entry> - <key>Score</key> - </entry> - <entry> - <key>Scoretype</key> - </entry> - <entry> - <key>archive</key> - </entry> - <entry> - <key>setUnread</key> - </entry> - <entry> - <key>setRead</key> - </entry> - <entry> - <key>${HIGHER_THAN_MAX} max: %0</key> - <value>The value is greater than the allowed max-value %0.</value> - </entry> - <entry> - <key>Rating</key> - </entry> - <entry> - <key>Possible Values</key> - </entry> - <entry> - <key>251 to 1,000</key> - </entry> - <entry> - <key>Selection</key> - </entry> - <entry> - <key>Files</key> - </entry> - <entry> - <key>${COUNT_PREPOSITION_SINGLE}</key> - <value>time</value> - </entry> - <entry> - <key>Attribute \"%0\" has to be used at least %1.</key> - </entry> - <entry> - <key>${COUNT_PREPOSITION_MULTIPLE}</key> - <value>times</value> - </entry> - <entry> - <key>Attribute \"%0\" can't be used more than %1.</key> - </entry> - <entry> - <key>Recipient</key> - </entry> - <entry> - <key>Write email</key> - </entry> - <entry> - <key>Show tasks where I am editor</key> - </entry> - <entry> - <key>Entrydate must not be in the future</key> - </entry> - <entry> - <key>Delivery specification</key> - </entry> - <entry> - <key>Priority</key> - </entry> - <entry> - <key>Postcode</key> - </entry> - <entry> - <key>Main document</key> - </entry> - <entry> - <key>Delete</key> - </entry> - <entry> - <key>Street</key> - </entry> - <entry> - <key>Start</key> - </entry> - <entry> - <key>End</key> - </entry> - <entry> - <key>Condition</key> - </entry> - <entry> - <key>File</key> - </entry> - <entry> - <key> User</key> - </entry> - <entry> - <key>Edit</key> - </entry> - <entry> - <key>Condition Type</key> - </entry> - <entry> - <key>Access type</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>PermissionId</key> - </entry> - <entry> - <key>Entity</key> - </entry> - <entry> - <key>Sales Project</key> - </entry> - <entry> - <key>Field</key> - </entry> - <entry> - <key>Permission Detail</key> - </entry> - <entry> - <key>Entities</key> - </entry> - <entry> - <key>Read</key> - </entry> - <entry> - <key>Permission Set ID</key> - </entry> - <entry> - <key>Create</key> - </entry> - <entry> - <key>To buildingnumber</key> - </entry> - <entry> - <key>Permission Overview</key> - </entry> - <entry> - <key>Action</key> - </entry> - <entry> - <key>View</key> - </entry> - <entry> - <key>From buildingnumber</key> - </entry> - <entry> - <key>Salutations</key> - </entry> - <entry> - <key>Paymentterm</key> - </entry> - <entry> - <key>Runtime</key> - </entry> - <entry> - <key>Fix costs</key> - </entry> - <entry> - <key>Total costs</key> - </entry> - <entry> - <key>Per participant</key> - </entry> - <entry> - <key>Predecessor</key> - </entry> - <entry> - <key>Campaign planning</key> - </entry> - <entry> - <key>Group name</key> - </entry> - <entry> - <key>Price Condition</key> - </entry> - <entry> - <key>Entität</key> - </entry> - <entry> - <key>beschränken</key> - </entry> - <entry> - <key>Feld</key> - </entry> - <entry> - <key>Possible Value</key> - </entry> - <entry> - <key>erlauben</key> - </entry> - <entry> - <key>Could not determine the current Classification type (usage).</key> - </entry> - <entry> - <key>Datensatz</key> - </entry> - <entry> - <key>The new Classification name already exists.</key> - </entry> - <entry> - <key>3. Classification</key> - </entry> - <entry> - <key>1. Classification</key> - </entry> - <entry> - <key>2. Classification</key> - </entry> - <entry> - <key>Choose Footer</key> - </entry> - <entry> - <key>Choose Header</key> - </entry> - <entry> - <key>#0</key> - </entry> - <entry> - <key>Email Template</key> - </entry> - <entry> - <key>${SQL_LIB_FIELD_WRONG_FORMAT} field: %0</key> - <value>Field %0 is in an incorrect format. The database field has to be like "tablename.columnname" ("ORGANISATION.NAME") or as array with column-alias: ["ORGANISATION", "NAME", "myorgAlias"]</value> - </entry> - <entry> - <key>testing</key> - </entry> - <entry> - <key>double</key> - </entry> - <entry> - <key>closed</key> - </entry> - <entry> - <key>New Support ticket</key> - </entry> - <entry> - <key>Bug Ticket</key> - </entry> - <entry> - <key>Support ticket</key> - </entry> - <entry> - <key>New Bugticket</key> - </entry> - <entry> - <key>Keine Berechtigung zum Verschieben der Aufgabe</key> - </entry> - <entry> - <key>Kein Weitergeben von privaten Aufgaben möglich!</key> - </entry> - <entry> - <key>Search for new Entries</key> - </entry> - <entry> - <key>Additional link</key> - </entry> - <entry> - <key>Salesproject member</key> - </entry> - <entry> - <key>Maximal count has to be a whole number</key> - </entry> - <entry> - <key>Minimal count must be a positive whole number</key> - </entry> - <entry> - <key>Meilensteine und Kontaktpunkte</key> - </entry> - <entry> - <key>Maximal count must be one or higher</key> - </entry> - <entry> - <key>Campaign name</key> - </entry> - <entry> - <key>Step name</key> - </entry> - <entry> - <key>Assignment</key> - </entry> - <entry> - <key>Complaint</key> - </entry> - <entry> - <key>Employee responsible</key> - </entry> - <entry> - <key>Restrictions</key> - </entry> - <entry> - <key>Advertising bans</key> - </entry> - <entry> - <key>Advertising ban</key> - </entry> - <entry> - <key>Delete appointment</key> - </entry> - <entry> - <key>Do you really want to delete this recurring appointment?</key> - </entry> - <entry> - <key>Start date</key> - </entry> - <entry> - <key>New letter</key> - </entry> - <entry> - <key>No calls</key> - </entry> - <entry> - <key>No mails</key> - </entry> - <entry> - <key>Delete recurring appointment</key> - </entry> - <entry> - <key>No fax</key> - </entry> - <entry> - <key>No SMS</key> - </entry> - <entry> - <key>No letters</key> - </entry> - <entry> - <key>ended (abandoned)</key> - </entry> - <entry> - <key>customer checks</key> - </entry> - <entry> - <key>assigned</key> - </entry> - <entry> - <key>ended (done)</key> - </entry> - <entry> - <key>Long string value</key> - </entry> - <entry> - <key>still incorrect</key> - </entry> - <entry> - <key>unassigned</key> - </entry> - <entry> - <key>UNSEEN</key> - </entry> - <entry> - <key>ARCHIVE</key> - </entry> - <entry> - <key>TODELETE</key> - </entry> - <entry> - <key>CONFIRMED</key> - </entry> - <entry> - <key>SEEN</key> - </entry> - <entry> - <key>Link</key> - </entry> - <entry> - <key>This contact has no possible link.</key> - </entry> - <entry> - <key>Permissions</key> - </entry> - <entry> - <key>Permission</key> - </entry> - <entry> - <key>SalesprojectPhase</key> - </entry> - <entry> - <key>SalesprojectState</key> - </entry> - <entry> - <key>Maximal</key> - </entry> - <entry> - <key>Minimal</key> - </entry> - <entry> - <key>Object selection</key> - </entry> - <entry> - <key>Bulk mail</key> - </entry> - <entry> - <key>Recipients</key> - </entry> - <entry> - <key>Boss of</key> - </entry> - <entry> - <key>Data table</key> - </entry> - <entry> - <key>Make offer (WV)</key> - </entry> - <entry> - <key>Delivery term</key> - </entry> - <entry> - <key>No risk</key> - </entry> - <entry> - <key>Urlaubsprüfung durch</key> - </entry> - <entry> - <key>Acquisition</key> - </entry> - <entry> - <key>A</key> - </entry> - <entry> - <key>B</key> - </entry> - <entry> - <key>C</key> - </entry> - <entry> - <key>D</key> - </entry> - <entry> - <key>Motor cycle</key> - </entry> - <entry> - <key>Beer</key> - </entry> - <entry> - <key>Presentation</key> - </entry> - <entry> - <key>Print media</key> - </entry> - <entry> - <key>good</key> - </entry> - <entry> - <key>Tourism</key> - </entry> - <entry> - <key>Existing contact</key> - </entry> - <entry> - <key>Personal estimation</key> - </entry> - <entry> - <key>ToDo</key> - </entry> - <entry> - <key>medium</key> - </entry> - <entry> - <key>Away travel</key> - </entry> - <entry> - <key>Project planning open</key> - </entry> - <entry> - <key>1 medium</key> - </entry> - <entry> - <key>Component</key> - </entry> - <entry> - <key>Delivery block</key> - </entry> - <entry> - <key>Product type</key> - </entry> - <entry> - <key>Distribution</key> - </entry> - <entry> - <key>Call back (WV)</key> - </entry> - <entry> - <key>Spare part</key> - </entry> - <entry> - <key>Send information</key> - </entry> - <entry> - <key>EVENT</key> - </entry> - <entry> - <key>Decision-maker changed</key> - </entry> - <entry> - <key>Known because</key> - </entry> - <entry> - <key>Visit frequency</key> - </entry> - <entry> - <key>Payment problem customer</key> - </entry> - <entry> - <key>Employee account</key> - </entry> - <entry> - <key>Dumping price competition</key> - </entry> - <entry> - <key>Device/Machine</key> - </entry> - <entry> - <key>Tool changer</key> - </entry> - <entry> - <key>Declaration of acceptance</key> - </entry> - <entry> - <key>Product A1</key> - </entry> - <entry> - <key>Product A2</key> - </entry> - <entry> - <key>Technical specifications</key> - </entry> - <entry> - <key>Product B2</key> - </entry> - <entry> - <key>Product B1</key> - </entry> - <entry> - <key>Cigars</key> - </entry> - <entry> - <key>Occupation</key> - </entry> - <entry> - <key>Partial calculation</key> - </entry> - <entry> - <key>IT/Service</key> - </entry> - <entry> - <key>Frame contract (WV)</key> - </entry> - <entry> - <key>2 big</key> - </entry> - <entry> - <key>Data protection agreement</key> - </entry> - <entry> - <key>ORG</key> - </entry> - <entry> - <key>PERS</key> - </entry> - <entry> - <key>Racing bike</key> - </entry> - <entry> - <key>Others</key> - </entry> - <entry> - <key>Interested</key> - </entry> - <entry> - <key>Project shift customer</key> - </entry> - <entry> - <key>Regulation</key> - </entry> - <entry> - <key>Strength</key> - </entry> - <entry> - <key>Interests</key> - </entry> - <entry> - <key>DOCUMENT</key> - </entry> - <entry> - <key>Als Attribut ist der Name aus lib_frame z.B. 'ORG' 'PERS' 'OFFER' etc. zu verwenden.</key> - </entry> - <entry> - <key>Subordinate campaign of</key> - </entry> - <entry> - <key>Treat</key> - </entry> - <entry> - <key>Product interest</key> - </entry> - <entry> - <key>Cons</key> - </entry> - <entry> - <key>Transport damage</key> - </entry> - <entry> - <key>Konditionen die bei Angebotserstellung übernommen werden</key> - </entry> - <entry> - <key>Sport</key> - </entry> - <entry> - <key>Technology</key> - </entry> - <entry> - <key>Assistance</key> - </entry> - <entry> - <key>Trade fair</key> - </entry> - <entry> - <key>Creditworthiness</key> - </entry> - <entry> - <key>Superordinate campaign of</key> - </entry> - <entry> - <key>Pricing policy</key> - </entry> - <entry> - <key>Prospective customer</key> - </entry> - <entry> - <key>Send documents (WV)</key> - </entry> - <entry> - <key>Revolution speed (rpm)</key> - </entry> - <entry> - <key>Atmosphere</key> - </entry> - <entry> - <key>Follow up (WV)</key> - </entry> - <entry> - <key>Mechanical engineering</key> - </entry> - <entry> - <key>Wine</key> - </entry> - <entry> - <key>bad</key> - </entry> - <entry> - <key>Sailing</key> - </entry> - <entry> - <key>Commodity group B (WV)</key> - </entry> - <entry> - <key>personal</key> - </entry> - <entry> - <key>flexible</key> - </entry> - <entry> - <key>Handcraft</key> - </entry> - <entry> - <key>Goodwill</key> - </entry> - <entry> - <key>Website</key> - </entry> - <entry> - <key>Full calculation</key> - </entry> - <entry> - <key>Birthday list</key> - </entry> - <entry> - <key>Holiday</key> - </entry> - <entry> - <key>Quality problem customer</key> - </entry> - <entry> - <key>ToDos</key> - </entry> - <entry> - <key>Golf</key> - </entry> - <entry> - <key>Loyalty</key> - </entry> - <entry> - <key>Type of damage</key> - </entry> - <entry> - <key>Contacting</key> - </entry> - <entry> - <key>Conveyor</key> - </entry> - <entry> - <key>Agency</key> - </entry> - <entry> - <key>Technical requirement</key> - </entry> - <entry> - <key>Faulty delivery</key> - </entry> - <entry> - <key>Interested person</key> - </entry> - <entry> - <key>First contact</key> - </entry> - <entry> - <key>Wear part</key> - </entry> - <entry> - <key>Commodity group B</key> - </entry> - <entry> - <key>Commodity group A</key> - </entry> - <entry> - <key>Commodity group A (WV)</key> - </entry> - <entry> - <key>Recommendation</key> - </entry> - <entry> - <key>Project planned?</key> - </entry> - <entry> - <key>Reference customer</key> - </entry> - <entry> - <key>Reports to</key> - </entry> - <entry> - <key>Pricelist</key> - </entry> - <entry> - <key>Send brochure (WV)</key> - </entry> - <entry> - <key>loves sociability</key> - </entry> - <entry> - <key>0 low</key> - </entry> - <entry> - <key>Departments</key> - </entry> - <entry> - <key>Additional data</key> - </entry> - <entry> - <key>Origin</key> - </entry> - <entry> - <key>Weight (kg)</key> - </entry> - <entry> - <key>Consisted customer</key> - </entry> - <entry> - <key>Incomplete delivery</key> - </entry> - <entry> - <key>Weakness</key> - </entry> - <entry> - <key>Project type</key> - </entry> - <entry> - <key>30</key> - </entry> - <entry> - <key>Annual holidays</key> - </entry> - <entry> - <key>Call</key> - </entry> - <entry> - <key>own company</key> - </entry> - <entry> - <key>Soccer</key> - </entry> - <entry> - <key>Consultant</key> - </entry> - <entry> - <key>Financial service</key> - </entry> - <entry> - <key>Target group</key> - </entry> - <entry> - <key>Building industry</key> - </entry> - <entry> - <key>Next contact?</key> - </entry> - <entry> - <key>General</key> - </entry> - <entry> - <key>Campaign response</key> - </entry> - <entry> - <key>60</key> - </entry> - <entry> - <key>Risk</key> - </entry> - <entry> - <key>NPO</key> - </entry> - <entry> - <key>Writes for</key> - </entry> - <entry> - <key>90</key> - </entry> - <entry> - <key>Custody agreement</key> - </entry> - <entry> - <key>Economy</key> - </entry> - <entry> - <key>Other (WV)</key> - </entry> - <entry> - <key>Pros</key> - </entry> - <entry> - <key>Quality complaint</key> - </entry> - <entry> - <key>Next steps</key> - </entry> - <entry> - <key>Urlaubsgenehmigung durch</key> - </entry> - <entry> - <key>Assessment</key> - </entry> - <entry> - <key>Signature</key> - </entry> - <entry> - <key>Footer</key> - </entry> - <entry> - <key>Header</key> - </entry> - <entry> - <key>Open admin view</key> - </entry> - <entry> - <key>All selected participants already are in the campaign</key> - </entry> - <entry> - <key>%0/%1 participant(s) will be added to the selected campaign step</key> - </entry> - <entry> - <key>Not enough slots for %0/%1 participant(s)</key> - </entry> - <entry> - <key>No valid Selection</key> - </entry> - <entry> - <key>Sender address</key> - </entry> - <entry> - <key>Send</key> - </entry> - <entry> - <key>Pending</key> - </entry> - <entry> - <key>Failed</key> - </entry> - <entry> - <key>UID</key> - </entry> - <entry> - <key>ticket number</key> - </entry> - <entry> - <key>AB_KEYWORD_ENTRYID (UID)</key> - </entry> - <entry> - <key>DATE_NEW_CONTACT</key> - </entry> - <entry> - <key>Icon</key> - </entry> - <entry> - <key>in progress</key> - </entry> - <entry> - <key>PARENT_CONTEXT</key> - </entry> - <entry> - <key>OFFER_ID</key> - </entry> - <entry> - <key>SMS</key> - </entry> - <entry> - <key>CAMPAIGNID (UID)</key> - </entry> - <entry> - <key>PARENT_ID</key> - </entry> - <entry> - <key>Interfaces</key> - </entry> - <entry> - <key>Feature</key> - </entry> - <entry> - <key>ORGANISATIONID (UID)</key> - </entry> - <entry> - <key>SALESORDER_ID</key> - </entry> - <entry> - <key>Ticket</key> - </entry> - <entry> - <key>Delivery problems</key> - </entry> - <entry> - <key>Tickets</key> - </entry> - <entry> - <key>PERSON_ID</key> - </entry> - <entry> - <key>{$TICKET_REQUESTOR}</key> - </entry> - <entry> - <key>Billable</key> - </entry> - <entry> - <key>TASKID (UID)</key> - </entry> - <entry> - <key>Fax</key> - </entry> - <entry> - <key>DATE_EDIT</key> - </entry> - <entry> - <key>OFFERID (UID)</key> - </entry> - <entry> - <key>Connection Type</key> - </entry> - <entry> - <key>UID (AB_ATTRIBUTEID)</key> - </entry> - <entry> - <key>Phases</key> - </entry> - <entry> - <key>Questions</key> - </entry> - <entry> - <key>User error</key> - </entry> - <entry> - <key>ACTIVITYID (UID)</key> - </entry> - <entry> - <key>Issue</key> - </entry> - <entry> - <key>CONTACTID</key> - </entry> - <entry> - <key>Maintenance</key> - </entry> - <entry> - <key>{$TICKET_STATUS}</key> - </entry> - <entry> - <key>DATE_NEW</key> - </entry> - <entry> - <key>SALESPROJECTID (UID)</key> - </entry> - <entry> - <key>ORGANISATION_ID</key> - </entry> - <entry> - <key>CONTRACTID (UID)</key> - </entry> - <entry> - <key>[%0]it was necessary to create a file from a blob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>SqlUtils.getSqlInStatement: if pAsPrepared is true, pPreparedDbType has to be filld with the correct db type</key> - </entry> - <entry> - <key>[%0]it was necessary to create a text-file from a clob-field but no lob-file-path was specified.</key> - </entry> - <entry> - <key>USER_NEW</key> - </entry> - <entry> - <key>USER_EDIT</key> - </entry> - <entry> - <key>CONTACTID (UID)</key> - </entry> - <entry> - <key>{$TICKET_EDITOR}</key> - </entry> - <entry> - <key>Support ticket</key> - </entry> - <entry> - <key>Modul group</key> - </entry> - <entry> - <key>PRODUCTID (UID)</key> - </entry> - <entry> - <key>no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"</key> - </entry> - <entry> - <key>Total time</key> - </entry> - <entry> - <key>SALESORDERID (UID)</key> - </entry> - <entry> - <key>Cause</key> - </entry> - <entry> - <key>Assembly</key> - </entry> - <entry> - <key>Dokument template usage</key> - </entry> - <entry> - <key>Open admin info</key> - </entry> - <entry> - <key>USER_NEW_CONTACT</key> - </entry> - <entry> - <key>Linked Appointments</key> - </entry> - <entry> - <key>Location</key> - </entry> - <entry> - <key>Not sent</key> - </entry> - <entry> - <key>Is being sent</key> - </entry> - <entry> - <key>Preview</key> - </entry> - <entry> - <key>Content</key> - </entry> - <entry> - <key>Bulk mail was sent!</key> - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed</key> - </entry> - <entry> - <key>Bulk mail \"%0\" was sent!</key> - </entry> - <entry> - <key>Descriptions</key> - </entry> - <entry> - <key>User Administration</key> - </entry> - <entry> - <key>Support Ticket</key> - </entry> - <entry> - <key>DSGVO Information</key> - </entry> - <entry> - <key>Xing</key> - </entry> - <entry> - <key>consent</key> - </entry> - <entry> - <key>Information Report</key> - </entry> - <entry> - <key>Data Privacy</key> - </entry> - <entry> - <key>Attribute data</key> - </entry> - <entry> - <key>other personal data</key> - </entry> - <entry> - <key>LinkedIn</key> - </entry> - <entry> - <key>Kommunikationsdaten</key> - </entry> - <entry> - <key>Es wurden keine Daten anonymisiert.</key> - </entry> - <entry> - <key>Anonymization</key> - </entry> - <entry> - <key>Data Privacies</key> - </entry> - <entry> - <key>advertising consent</key> - </entry> - <entry> - <key>Sonstige personenbezogene Daten</key> - </entry> - <entry> - <key>DSGVO Anonymisierung</key> - </entry> - <entry> - <key>Names</key> - </entry> - <entry> - <key>Namen</key> - </entry> - <entry> - <key>Update</key> - </entry> - <entry> - <key>The contact has an advertising ban for emails!</key> - </entry> - <entry> - <key>Adressdaten</key> - </entry> - <entry> - <key>Blog</key> - </entry> - <entry> - <key>DSGVO Disclosure</key> - </entry> - <entry> - <key>Disclosure Report</key> - </entry> - <entry> - <key>newsletter dispatch</key> - </entry> - <entry> - <key>Folgende Daten wurden anonymisiert: </key> - </entry> - <entry> - <key>DataPrivacy Right</key> - </entry> - <entry> - <key>Address data</key> - </entry> - <entry> - <key>contract of sale</key> - </entry> - <entry> - <key>balancing of interests</key> - </entry> - <entry> - <key>DataPrivacy Use</key> - </entry> - <entry> - <key>Personal data</key> - </entry> - <entry> - <key>Source</key> - </entry> - <entry> - <key>No data has been anonymized.</key> - </entry> - <entry> - <key>The following data has been anonymised: %0</key> - </entry> - <entry> - <key>DSGVO anonymisation</key> - </entry> - <entry> - <key>Your changes have an impact on the data privacy information (DSGVO).</key> - </entry> - <entry> - <key>Update data privacy information</key> - </entry> - <entry> - <key>CC</key> - </entry> - <entry> - <key>Remarks</key> - </entry> - <entry> - <key>Organisation</key> - </entry> - <entry> - <key>Km</key> - </entry> - <entry> - <key>Billed</key> - </entry> - <entry> - <key>Km Fee</key> - </entry> - <entry> - <key>Credit Card</key> - </entry> - <entry> - <key>Taxi</key> - </entry> - <entry> - <key>Overnight stay</key> - </entry> - <entry> - <key>In creation</key> - </entry> - <entry> - <key>Rented car</key> - </entry> - <entry> - <key>Until</key> - </entry> - <entry> - <key>From</key> - </entry> - <entry> - <key>Park fees</key> - </entry> - <entry> - <key>Abscences</key> - </entry> - <entry> - <key>Expense Report</key> - </entry> - <entry> - <key>Special displays</key> - </entry> - <entry> - <key>Transport cost</key> - </entry> - <entry> - <key>Day Fee</key> - </entry> - <entry> - <key>Fuel</key> - </entry> - <entry> - <key>Month</key> - </entry> - <entry> - <key>Working material</key> - </entry> - <entry> - <key>Hospitality</key> - </entry> - <entry> - <key>Trip purpose</key> - </entry> - <entry> - <key>Bed and Breakfast</key> - </entry> - <entry> - <key>Update campaign step</key> - </entry> - <entry> - <key>No contacts selected</key> - </entry> - <entry> - <key>Show my campaigns</key> - </entry> - <entry> - <key>My campaigns</key> - </entry> - <entry> - <key>Add to Bulkmail</key> - </entry> - <entry> -<<<<<<< HEAD - <key>The transfer of data to recipients located in a third country is based on the following guarantees:</key> - </entry> - <entry> - <key>MarketingCampaign</key> - </entry> - <entry> - <key>Recipient, Country</key> - </entry> - <entry> - <key>We save your data until </key> - </entry> - <entry> - <key>Guarantees</key> - </entry> - <entry> - <key>On time</key> - </entry> - <entry> - <key>Nur eigene anzeigen</key> - </entry> - <entry> - <key>CampaignManagement</key> - </entry> - <entry> - <key>For this report</key> - </entry> - <entry> - <key>SqlBuilder must contain a select clause!</key> - </entry> - <entry> - <key>Inland</key> - </entry> - <entry> - <key>The data is transmitted to the following recipients:</key> - </entry> - <entry> - <key>SqlBuilder must be instanciated with 'new'</key> - </entry> - <entry> - <key>Extension letter date</key> - </entry> - <entry> - <key>Balancing of interests</key> - </entry> - <entry> - <key>SqlBuilder must contain a from clause!</key> - </entry> - <entry> - <key>None</key> - </entry> - <entry> - <key>Date of request</key> - </entry> - <entry> - <key>Export CSV</key> - </entry> - <entry> - <key>Not all data privacy fields for all private data is filled. Cannot create report.</key> - </entry> - <entry> - <key>Birthday</key> - </entry> - <entry> - <key>Extend - request count</key> - </entry> - <entry> - <key>Transmission</key> - </entry> - <entry> - <key>You don't have permission for this view.</key> - </entry> - <entry> - <key>Extend - complexity</key> - </entry> - <entry> - <key>Advertising consent</key> - </entry> - <entry> - <key>We hereby comply with your request within the statutory period of one month.</key> -======= - <key>%0 recipients will be added to the bulk mail.</key> ->>>>>>> origin/master - </entry> - <entry> - <key>%0 mails sent sucessfully, %1 mails failed. Process took %2 s.</key> - </entry> - <entry> -<<<<<<< HEAD - <key>Foreign country</key> - </entry> - <entry> - <key>phase information</key> - </entry> - <entry> - <key>the high complexity of your application</key> - </entry> - <entry> - <key>As stated in our letter of %0, we have made use of the possibility to extend the deadline to three months due to %1.</key> - </entry> - <entry> - <key>Deadline</key> - </entry> - <entry> - <key>Newsletter dispatch</key> - </entry> - <entry> - <key>We received data from </key> - </entry> - <entry> - <key>the number of your applications</key> - </entry> - <entry> - <key>Your changes may have an impact on the data privacy information (DSGVO).\n Please update these.</key> - </entry> - <entry> - <key>External Datasource</key> - </entry> - <entry> - <key>Guarantee</key> -======= - <key>%0 new recipients will be added to the bulk mail.</key> - </entry> - <entry> - <key>Remove recipients with advertising ban</key> - </entry> - <entry> - <key>Serial letter</key> ->>>>>>> origin/master - </entry> - </keyValueMap> - <font name="Dialog" style="0" size="11" /> -</language> diff --git a/neonContext/AuditLogHistory/AuditLogHistory.aod b/neonContext/AuditLogHistory/AuditLogHistory.aod new file mode 100644 index 0000000000000000000000000000000000000000..4e735cc63f5130302527b8b873e68b5444cc5b88 --- /dev/null +++ b/neonContext/AuditLogHistory/AuditLogHistory.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>AuditLogHistory</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>AuditLogHistoryFilter_view</filterView> + <entity>AuditLogHistory_entity</entity> + <references> + <neonViewReference> + <name>c468be91-da18-4c22-abbd-cfa1c410d013</name> + <view>AuditLogHistoryFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod new file mode 100644 index 0000000000000000000000000000000000000000..bad0c03850983d94a74b3d3af4896308fb1e2086 --- /dev/null +++ b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.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>MarketingWorkflowLauncher</name> + <title>f</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>MarketingWorkflowLauncher_entity</entity> + <references> + <neonViewReference> + <name>39e62b1f-b27f-4f74-8521-d95e27748c6c</name> + <view>MarketingWorkflowLauncherEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/WorkflowLauncher/WorkflowLauncher.aod b/neonContext/WorkflowLauncher/WorkflowLauncher.aod new file mode 100644 index 0000000000000000000000000000000000000000..e3e01733b87c79b741021f9b2fcddc1ece5b3602 --- /dev/null +++ b/neonContext/WorkflowLauncher/WorkflowLauncher.aod @@ -0,0 +1,12 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> + <name>WorkflowLauncher</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>WorkflowLauncher_entity</entity> + <references> + <neonViewReference> + <name>f3d227d8-73e9-4868-9f2d-a86e808f33e7</name> + <view>WorkflowLauncherEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..87d730da51efd42cef56757ad691f7ab84a21e57 --- /dev/null +++ b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod @@ -0,0 +1,46 @@ +<?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>AuditLogHistoryFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <dashletConfigurations> + <neonDashletConfiguration> + <name>AuditDashlet</name> + <title>AuditLogs</title> + <description>Show all audits</description> + <fragment>AuditLogHistory/filter</fragment> + <storeRoles> + <element>INTERNAL_ADMINISTRATOR</element> + <element>INTERNAL_DASHBOARDSTOREADMIN</element> + <element>INTERNAL_DESIGNER</element> + </storeRoles> + <icon>VAADIN:LINES_LIST</icon> + <categories> + <neonDashletCategory> + <name>Admin</name> + <title>Admin</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <timelineViewTemplate> + <name>Timeline</name> + <dateField>DATE_NEW</dateField> + <titleField>PREVIEW_TITLE</titleField> + <descriptionField>DESCRIPTION</descriptionField> + <subdescriptionField>LOGTYPE</subdescriptionField> + <additionalInfoField>USER_NEW</additionalInfoField> + <hideContentSearch v="false" /> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + <informationField></informationField> + <isCreatable v="false" /> + </timelineViewTemplate> + </children> +</neonView> diff --git a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..8fe83127e05c62b24ba0fc5ec71929cea5e39df0 --- /dev/null +++ b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod @@ -0,0 +1,30 @@ +<?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>MarketingWorkflowLauncherEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>TemplateSelection</name> + <editMode v="true" /> + <hideEmptyFields v="false" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>13b27604-86ee-41cb-80bd-7b0b4d834c8d</name> + <entityField>DOCUMENTTEMPLATE_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>e091c680-ee26-466a-a20e-52469dc28cfe</name> + <entityField>WorkflowLauncherIntegration</entityField> + <view>WorkflowLauncherEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index 0a1ab5740c5a8ae675bc91f798159175c3fdee75..dcfe1e8da8909c739b4d2d7d7cfad05ed4272a66 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -140,7 +140,12 @@ <name>DynamicMultiDataChartCount</name> <chartType>COLUMN</chartType> <yAxisLabel>Count</yAxisLabel> + <shareParent v="false" /> <entityField>#ENTITY</entityField> + <defaultGroupFields> + <element>STATUS</element> + </defaultGroupFields> + <title>Count Chart</title> <columns> <neonDynamicMultiDataChartColumn> <name>4bbc9650-47fd-4a59-8e1e-bb60ceb85795</name> @@ -153,7 +158,12 @@ <name>DynamicMultiDataChartSum</name> <chartType>COLUMN</chartType> <yAxisLabel>Total in euros</yAxisLabel> + <shareParent v="false" /> <entityField>#ENTITY</entityField> + <defaultGroupFields> + <element>STATUS</element> + </defaultGroupFields> + <title>Sum Chart</title> <columns> <neonDynamicMultiDataChartColumn> <name>e5d14506-5205-43d0-89cb-416bf6debd25</name> @@ -162,5 +172,23 @@ </neonDynamicMultiDataChartColumn> </columns> </dynamicMultiDataChartViewTemplate> + <dynamicMultiDataChartViewTemplate> + <name>DynamicMultiDataChartProb</name> + <chartType>COLUMN</chartType> + <yAxisLabel>Probability in %</yAxisLabel> + <shareParent v="false" /> + <entityField>#ENTITY</entityField> + <defaultGroupFields> + <element>STATUS</element> + </defaultGroupFields> + <title>Probability Chart</title> + <columns> + <neonDynamicMultiDataChartColumn> + <name>e5d14506-5205-43d0-89cb-416bf6debd25</name> + <entityField>PROBABILITY</entityField> + <aggregateEntityField>PROBABILITY_aggregate</aggregateEntityField> + </neonDynamicMultiDataChartColumn> + </columns> + </dynamicMultiDataChartViewTemplate> </children> </neonView> diff --git a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod index c879059396884d69af133ba2a4222fb8b8c4a840..44610fe33c49fdcfb14991a4786f970603a8d240 100644 --- a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod +++ b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod @@ -5,7 +5,7 @@ <layout> <headerFooterLayout> <name>layout</name> - <footer>Scorecard</footer> + <footer>AggregatedValues</footer> </headerFooterLayout> </layout> <children> @@ -39,7 +39,6 @@ </treeTableViewTemplate> <scoreCardViewTemplate> <name>AggregatedValues</name> - <entityField>OfferAggregates</entityField> <fields> <entityFieldLink> <name>71cd7dd5-c142-4b4c-8a6b-ca5ed8acf92e</name> diff --git a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod index 25adc1c72acb979944208652cea9379e414844ec..23c70461d00820365c981737e76d5a410961cc4d 100644 --- a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod +++ b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod @@ -14,6 +14,8 @@ <hideContentSearch v="true" /> <iconField></iconField> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <hideHeader v="true" /> <title>Duplicates</title> <columns> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 8eaea8f8294ba09c4a94f70dc4b0930a20357b0c..721f83815ee9106aa481022db138b8fcf77e11cb 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -61,6 +61,7 @@ <element>FIRSTNAME</element> <element>LASTNAME</element> </linkedColumns> + <fixedFilterFields /> <columns> <neonTableColumn> <name>210cc6ab-5123-4d8a-8f2e-a6cd91d494ef</name> @@ -109,6 +110,8 @@ <element>FIRSTNAME</element> <element>LASTNAME</element> </linkedColumns> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>ae9f20e2-8c64-43a7-b3ce-00c3af4974f7</name> diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod index f3c036a901176495322f6fa94bcc5f571284f909..5877a1ee07ad8d0e4968e57e21c196804d0f67f0 100644 --- a/neonView/PersonLookup_view/PersonLookup_view.aod +++ b/neonView/PersonLookup_view/PersonLookup_view.aod @@ -11,6 +11,8 @@ <tableViewTemplate> <name>Persons</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>9541c336-10e9-4767-b6e5-52b6108d967a</name> diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod index b1717f65bcff8f9c0493e2da9396beaa829bcf78..c0ecb2926bd1a2d73e4b9c1e9fe738a39265244e 100644 --- a/neonView/PersonPreview_view/PersonPreview_view.aod +++ b/neonView/PersonPreview_view/PersonPreview_view.aod @@ -91,6 +91,7 @@ </genericViewTemplate> <scoreCardViewTemplate> <name>Scores</name> + <fieldActions /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod index 63a4b1e6d2a04258afe7327e8eb90dd93d3f6617..2f1efab373407d466ee9246b6bd8f3321e996c04 100644 --- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod +++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod @@ -17,6 +17,8 @@ <subtitleField>LANGUAGE</subtitleField> <descriptionField>DEPARTMENT</descriptionField> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>cb441e57-dba4-49d6-a8f4-cea5db3187f2</name> @@ -64,6 +66,9 @@ <name>tree</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>b18db709-56e9-4f7e-89a2-f0e2b81c75d0</name> diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod index 1228d3cc49bdac80030aec42937bcdb4fc9c643a..67c3c7369040ce1004d8d223db8fa989e450cef7 100644 --- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod +++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod @@ -8,7 +8,7 @@ <name>SalesprojectPhases</name> <title>Salesproject phases</title> <description>Shows how many sales projects are in the various sales phases</description> - <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJQSEFTRSIsIm9wZXJhdG9yIjoiTk9UX0VRVUFMIiwidmFsdWUiOiJOZWdvdGlhdGlvbiIsImtleSI6IlNBTFBST0pQSEFTRU5FR08iLCJjb250ZW50dHlwZSI6IlRFWFQifV19&axes=COUNT&grouping=%23EXTENSION.Phase_filterExtention.Phase_filterExtention%23TEXT</fragment> + <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJQSEFTRSIsIm9wZXJhdG9yIjoiTk9UX0VRVUFMIiwidmFsdWUiOiJOZWdvdGlhdGlvbiIsImtleSI6IlNBTFBST0pQSEFTRU5FR08iLCJjb250ZW50dHlwZSI6IlRFWFQifSx7InR5cGUiOiJyb3ciLCJuYW1lIjoiU1RBVFVTIiwib3BlcmF0b3IiOiJFUVVBTCIsInZhbHVlIjoiT2ZmZW4iLCJrZXkiOiJTQUxQUk9KU1RBVE9QRU4iLCJjb250ZW50dHlwZSI6IlRFWFQifV19&axes=COUNT&grouping=%23EXTENSION.Phase_filterExtention.Phase_filterExtention%23TEXT</fragment> <singleton v="true" /> <storeRoles> <element>PROJECT_FieldStaff</element> diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod index ac1fc2fe5b40ed6fae98393f22b27d7f48a5a679..0d3e0c89b95fed64001f0f0b1f4314bb85eae42e 100644 --- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod +++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod @@ -25,5 +25,11 @@ </entityFieldLink> </fields> </genericViewTemplate> + <dynamicFormViewTemplate> + <name>StartForm</name> + <formDefinition>STARTFORMDEFINITION</formDefinition> + <formResult>STARTFORMRESULT</formResult> + <editMode v="true" /> + </dynamicFormViewTemplate> </children> </neonView> diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod index 9bfc1201ca8b7e1268dee13a8b6ff58cdfd045a7..6e02ae567d135a0da41e10c0d71ccdd96ccf1278 100644 --- a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod +++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod @@ -2,6 +2,7 @@ <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>WorkflowInstancePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> <layout> <headerFooterLayout> <name>layout</name> diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..8445a151ff66a24ce57c908ad7f86bdd1d3094dd --- /dev/null +++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod @@ -0,0 +1,43 @@ +<?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>WorkflowLauncherEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>selectWorkflow</name> + <editMode v="true" /> + <hideEmptyFields v="false" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>3150c50d-8d95-4891-9d53-7ab192bc124b</name> + <entityField>KEY</entityField> + </entityFieldLink> + <entityFieldLink> + <name>14de7f56-44cf-4c9e-89a7-59f84e482fd9</name> + <entityField>NAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <dynamicFormViewTemplate> + <name>startForm</name> + <formDefinition>STARTFORMDEFINITION</formDefinition> + <formResult>STARTFORMRESULT</formResult> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + </dynamicFormViewTemplate> + <actionsViewTemplate> + <name>startAction</name> + <actions> + <element>launchWorkflows</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> + </children> +</neonView> diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index e67a69bc2dba3cec08b1a22095ef42899a33709f..d64df9664bf2c4ac8519540ede2e36266b2d5323 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -89,7 +89,7 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) var res = []; var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity") - .provider("SpecificAttribute") + .provider("SpecificFilterAttributes") .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE"]) .addParameter("ObjectType_param", pObjectType); diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js index 9db490141b571252ed2fd6f98d5bcf3a7932bb69..7c893948d7f1a576518e469721ae1dbec4a50ec2 100644 --- a/process/Campaign_lib/process.js +++ b/process/Campaign_lib/process.js @@ -520,37 +520,39 @@ CampaignUtils.GetContactIdsNotInCampaignByRowIds = function(pCampaignId, pPartic * @param {String} pCampaignId <p> * The id of the campaign.<br> * @param {String} pCondition (optional) <p> - * An condition which could used to<br> - * limit the search result.<br> - * @param {Boolean} pRightJoinContacts <p> - * Case if its true, a prefix will used<br> - * to do a right join.<br> + * An condition which is used to limit the search contact results.<br> + * @param {String} [pOrigin=Organisation] <br/> + * id from which context we are coming from, e.g. "Person" * @return {String[]} <p> * The contact ids they arent in the campaign.<br> */ -CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts) +CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition, pOrigin) { - let query = newSelect("CONTACT.CONTACTID").from("PERSON"); + var origin = pOrigin || "Organisation"; + //subselect for excluding entries that are already in the campaign var subselect = newSelect("CAMPAIGNPARTICIPANT.CONTACT_ID") - .from("CAMPAIGNPARTICIPANT") - .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId); - - if (pRightJoinContacts == "true") - query.rightJoin("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID"); - else - query.join("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID"); - - if(pCondition != "") - subselect = newSelect("CAMPAIGNPARTICIPANT.CONTACT_ID") - .from("CAMPAIGNPARTICIPANT") - .where(pCondition); + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId); + var query = newSelect("CONTACT.CONTACTID") + .from("CONTACT"); + + if (origin == "Person") + query.leftJoin("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID"); + query.join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .where("CONTACT.CONTACTID", subselect , SqlBuilder.NOT_IN() ); + + if (origin == "Organisation") + query.and("CONTACT.PERSON_ID is null"); + + //pCondition is always a contact related condition string and not a campaignparticipant related condition + if(pCondition != "") + query.and(pCondition); return query.arrayColumn(); } @@ -564,14 +566,11 @@ CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCon * @param {String} pCondition <p> * The condition which shall be used, to<br> * limit the search result.<br> - * @param {Boolean} [pRightJoinContacts=false] <p> - * Currently not used.<br> - * <p> * @return {String[]} <p> * The contact ids which are in the given<br> * campaign.<br> */ -CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts) +CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition) { let query = newSelect("CONTACT.CONTACTID").from("CONTACT"); diff --git a/process/Classification_lib/process.js b/process/Classification_lib/process.js index 66105c8ae16f6dc2da3b58b7c774215cb64bc5c6..756e30fa5384e32bccb6c7e32ebe001c6987c9eb 100644 --- a/process/Classification_lib/process.js +++ b/process/Classification_lib/process.js @@ -440,6 +440,18 @@ ClassificationUtils.decode = function (pEncodedString) return res }; +/** + * gets the translated Info text for the ClassificationtypePreview + * + * @return {String} <p/> the translated InfoText + * @static + */ +ClassificationUtils.getTranslatedInfo = function () +{ +return translate.text("Keep in Mind that changes to the Value with the greatest score directly affect the Classification Gradings of the Classification!"); +}; + + /*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 @@ -453,4 +465,4 @@ $ClassificationRecordCategories.CLASSIFICATION_GROUP_EXISTS = functio $ClassificationRecordCategories.CLASSIFICATION_GROUP_DOESNT_EXIST = function(){return "ClassificationGroupDoesntExist"}; function $ClassificationPlaceholder(){} -$ClassificationPlaceholder.TOPSECRETPLACEHOLDER = function(){return "T0PS3CR3TPL4CEH0LD3R"}; \ No newline at end of file +$ClassificationPlaceholder.TOPSECRETPLACEHOLDER = function(){return "T0PS3CR3TPL4CEH0LD3R"}; diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 627ec11b149a9b0ef93163901dda95b23f7f98b9..1d8216d36f52ffbed7094c0d7affc3edaf472ad3 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -528,7 +528,7 @@ ContactUtils.getActiveCommRestrictionsSubselect = function() .and(newWhere() .or("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID") .or("COMMRESTRICTION.CONTACT_ID", orgContactSubselect)); - + //!SqlBuilder parts.push("case when exists(" + subquery.toString() + ") then '" + pMedium[1] + "' else '' end"); }) diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index f65180f1d1dc110334162d896727449ea4a30ede..f0e62195ad82855ae9e18712786350ba500d1772 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -497,7 +497,7 @@ ContextUtils.getSelectMap = function() return { "Organisation": ContextSelector.create("ORGANISATION", "CONTACT.CONTACTID", "ORGANISATION.NAME") .setJoinExpression("join CONTACT on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null") - .setCondition(newWhere("ORGANISATION.ORGANISATIONID != '0'")) + .setCondition(newWhere("ORGANISATION.ORGANISATIONID", "0", SqlBuilder.NOT_EQUAL())) .setSubContexts({ "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]] }) @@ -608,7 +608,7 @@ ContextUtils.getSelectMap = function() ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) { // TODO: prepared? - + //!SqlBuilder var select = "(case " + pContextIdDbField + " "; var selectMap = ContextUtils.getSelectMap () @@ -662,7 +662,7 @@ ContextUtils.getContactId = function(pContextId, pRowId) * nur 360 * */ -ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pWithGroupBy, pUidsForFiltering) +ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pWithGroupBy, pUidsForFiltering, pExcludeIds) { var selectMap = ContextUtils.getSelectMap(); var ownContextSelector = selectMap[pContextId]; @@ -690,7 +690,8 @@ ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pAc var contextDataSelect = newSelect( columns.join(", ") ) .from(ownContextSelector.getFullFromClause()) .where(ownContextSelector.getFullField(ownContextSelector.contactIdField), pContactId, SqlBuilder.IN()) - .andIfSet(ownContextSelector.getFullIdField(), pUidsForFiltering, SqlBuilder.IN()); + .andIfSet(ownContextSelector.getFullIdField(), pUidsForFiltering, SqlBuilder.IN()) + .andIfSet(ownContextSelector.getFullIdField(), pExcludeIds, SqlBuilder.NOT_IN()); if (pActive != undefined) { diff --git a/process/CreateActivity_workflowService/process.js b/process/CreateActivity_workflowService/process.js index 99d7da17dde2056b25e63669ad84f6d14287977c..339b65345019c06f64abf718c9f2bab91e173e5c 100644 --- a/process/CreateActivity_workflowService/process.js +++ b/process/CreateActivity_workflowService/process.js @@ -15,7 +15,4 @@ var activityData = { }; var links = [[variables.targetContext, variables.targetId]]; -var activity = ActivityUtils.insertNewActivity(activityData, links); - -result.string(activity.activityId); - +var activity = ActivityUtils.insertNewActivity(activityData, links); \ No newline at end of file diff --git a/process/CreateSalesproject_workflowService/process.js b/process/CreateSalesproject_workflowService/process.js index a1fb1558fc6827772c2e78ec0e8dbb28a4ac11c7..03e704f2ea6149d061a4434efeac3dc349e8aa81 100644 --- a/process/CreateSalesproject_workflowService/process.js +++ b/process/CreateSalesproject_workflowService/process.js @@ -34,4 +34,4 @@ var processVariables = { "targetId": id, "targetContext": "Salesproject" } -workflow.setProcessInstanceVariables(vars.get("$local.uid"), processVariables) +result.object(processVariables); diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index 9d6c7fd07c3c38edd2ca29a196b7ed2ea00fddbf..68621c5eef9d557f3fe3168e8f131f3c8cd69adf 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -637,6 +637,7 @@ DocumentTemplate.prototype.getReplacementsByContactIds = function (pContactIds, var placeholders = this._getRequiredPlaceholders(["{@firstname@}", "{@lastname@}"], pAdditionalPlaceholders); var contactPlaceholders = []; var additionalPlaceholders = {}; + var isUserRequired = false; placeholders.forEach(function (placeholder) { switch (placeholder.type) @@ -673,7 +674,7 @@ DocumentTemplate.prototype.getReplacementsByContactIds = function (pContactIds, if (placeholder.type === Placeholder.types.FIXEDVALUE) replacements[contactId][placeholderName] = placeholder.valueDefinition; else if (placeholder.type === Placeholder.types.CALLBACKFUNCTION) - replacements[contactId][placeholderName] = placeholder.valueDefinition(contactId); + replacements[contactId][placeholderName] = placeholder.valueDefinition.call(this, contactId); } } return replacements; diff --git a/process/DuplicateScanner_lib/process.js b/process/DuplicateScanner_lib/process.js index df495ebbd295d46c6071f1e75e0a792109ed66d5..7e057f268d3f41e78fb61588c65560fabaa9dac1 100644 --- a/process/DuplicateScanner_lib/process.js +++ b/process/DuplicateScanner_lib/process.js @@ -728,7 +728,7 @@ DuplicateScannerUtils.buildEntityFieldConfigs = function(pDuplicateFieldsConfig, if(entityFieldValue == null) entityFieldValue = ""; else - ntityFieldValue = indexsearch.escapeString(entityFieldValue).trim(); + entityFieldValue = indexsearch.escapeString(entityFieldValue).trim(); let exclude = fieldConfig.exclude; if (exclude) diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js index 2c7e08724acada69ff850eb9eaf690b8fcbf7c58..34e15d5760485d03481f9a69ca15c32428554da5 100644 --- a/process/Employee_lib/process.js +++ b/process/Employee_lib/process.js @@ -22,7 +22,9 @@ EmployeeUtils.getCurrentContactId = function () { if (vars.getString("$sys.isclient") == "true" && vars.exists("$global.user.contactId")) return vars.get("$global.user.contactId"); - + if (!vars.exists("$sys.user")) + return null; + var user = tools.getCurrentUser(); return user ? user[tools.PARAMS][tools.CONTACTID] : null; } diff --git a/process/Favorites_lib/process.js b/process/Favorites_lib/process.js index 04ae6f9b9e05ec23289c5eb0705427413573d741..d5e32f5145cb4d324f5f47e69cfe2de852b52ca9 100644 --- a/process/Favorites_lib/process.js +++ b/process/Favorites_lib/process.js @@ -55,4 +55,33 @@ FavoritesUtil.getRowIdsOfFavoriteGroup = function() return null; } - \ No newline at end of file + +FavoritesUtil.getUserFavoriteGroupsByContext = function(pContext) +{ + var allTypes = []; + var alias = favorite.getFavoritesAlias(); + + var filterCond = newWhere("ASYS_RECORDGROUP.USER_ID", tools.getCurrentUser()[tools.NAME], null, null, alias); + + var idsOfContext = (new SqlBuilder(alias)).selectDistinct("ASYS_RECORD.RECORDGROUP_ID") + .from("ASYS_RECORD") + .where("ASYS_RECORD.OBJECT_TYPE", pContext) + .arrayColumn(); + + var groupNames = (new SqlBuilder(alias)).selectDistinct("ASYS_RECORDGROUP.TITLE") + .from("ASYS_RECORDGROUP") + .where(filterCond) + .and("ASYS_RECORDGROUP.ID", idsOfContext, SqlBuilder.IN()) + .arrayColumn(); + + for(var i = 0; i < groupNames.length; i++) + { + if(groupNames[i].equals("Default")) + allTypes.push([groupNames[i], translate.text(groupNames[i])]); + else + allTypes.push([groupNames[i], groupNames[i]]); + } + + return allTypes; + +} \ No newline at end of file diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index 369edee61bfbe69d51b524dd446a892fb06eea6d..8480664cc40d733bd5b2630cdabfee9efb17de21 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -4,35 +4,42 @@ import("Sql_lib"); import("Util_lib"); import("system.datetime"); +//@TODO: add support for permissions to the lib + /** * object for filtering records * - * @param {Array} pColumns the column names - * @param {Object} pFilter the filter object - * @param {Object} pCustomCheckFns - * @param {Object} pCheckFnThisArg + * @param {Object} [pFilter] the filter object + * @param {Array} [pFieldOrder] the fields + */ +function JditoFilter (pFilter, pFieldOrder) +{ + this._fieldInfos = {}; + if (pFieldOrder) + this.fieldOrder(pFieldOrder); + this._filter = null; + this.filter(pFilter); + this._ignoreCase = JditoFilterUtils.isUserIgnoreCase(); + this._lookupFields = []; +} + +/** + * Sets the filter of the object * - * @private + * @param {Object} pFilter the filter object that should be used (e.g. vars.get("$local.filter")) + * @return {JditoFilter} current object */ -function JditoFilter (pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg) +JditoFilter.prototype.filter = function (pFilter) { - var columnMap = {}; - for (let i = 0, l = pColumns.length; i < l; i++) + if (pFilter) { - let col = pColumns[i]; - if (col) - columnMap[col] = { - index : i, - checkFn : (pCustomCheckFns ? pCustomCheckFns[col] : null) - }; + if (!Utils.isObject(pFilter)) + throw new TypeError("JditoFilter: Wrong type for the filter, expected 'object' but got '" + (typeof pFilter) + "'"); + this._filter = "filter" in pFilter ? pFilter.filter : pFilter; + if (this._filter && this._filter.childs.length !== 0) + _removeEmptyGroups(this._filter.childs); } - this.columnMap = columnMap; - - if (pFilter && pFilter.childs.length !== 0) - _removeEmptyGroups(pFilter.childs); - - this.filter = pFilter; - this.checkFnThisArg = pCheckFnThisArg || null; + return this; function _removeEmptyGroups (pCurrentArray) { @@ -49,6 +56,104 @@ function JditoFilter (pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg) } } +/** + * Sets the filter of the object + * + * @param {String} pFilter the filter object that should be used as JSON string + * @return {JditoFilter} current object + */ +JditoFilter.prototype.filterJSON = function (pFilter) +{ + return this.filter(JSON.parse(pFilter)); +} + +/** + * Sets the order of the columns + * + * @param {Array} pFields array containing the field names in the right order + * @return {JditoFilter} current object + */ +JditoFilter.prototype.fieldOrder = function (pFields) +{ + for (let i = 0, l = pFields.length; i < l; i++) + { + let fieldName = pFields[i]; + if (fieldName) + { + //remove .value if present + if (fieldName.endsWith(".value")) + fieldName = fieldName.slice(0, -6); + this._fieldInfos[fieldName] = { + index: i + }; + } + } + return this; +} + +/** + * Sets a custom check-function for the given field. This can be used to handle the value of the field differently, making more complex + * filters possible. + * + * @param {String} pFieldName column the function should be used for + * @param {Function} pCheckFn custom check function, it will be called with these arguments: (rowValue, filterValue, operator), and it should + * return true if the row meets the filter-condition and false if it doesn't + * @param {Object} [pThisArg] this-value for the check-function + * @return {JditoFilter} current object + */ +JditoFilter.prototype.addSpecialCheckFn = function (pFieldName, pCheckFn, pThisArg) +{ + if (!this._fieldInfos[pFieldName]) + this._fieldInfos[pFieldName] = {}; + + this._fieldInfos[pFieldName].checkFn = pCheckFn; + this._fieldInfos[pFieldName].thisArg = pThisArg || null; + + return this; +} + +/** + * Sets the fields that should be used for lookup filter + * + * @param {Array} pFields the fields + * @return {JditoFilter} current object + */ +JditoFilter.prototype.lookupFilterFields = function (pFields) +{ + this._lookupFields = pFields; + var lookupFilterFn = function (pRecordValue, pFilterValue, pOperator, pRow) + { + if (pOperator == "CONTAINS") + { + var filterValues = pFilterValue.split(" ").filter(function (val) {return val.trim();}); + return filterValues.every(function (filterValue) + { + return this._lookupFields.some(function (fieldName) + { + var fieldIndex = this._fieldInfos[fieldName].index; + return (new RegExp(filterValue, "i")).test(pRow[fieldIndex]); + }, this); + }, this); + } + return false; + } + this.addSpecialCheckFn("$$$LOOKUPFIELD$$$", lookupFilterFn, this); + return this; +} + +/** + * Changes whether the condition should be case-insensitive for text + * + * @param {boolean} [pIgnoreCase=true] if it should be case-insensitive + * @return {JditoFilter} current object + */ +JditoFilter.prototype.ignoreCase = function (pIgnoreCase) +{ + //"", 0 , false -> false, everything else is considered true + this._ignoreCase = pIgnoreCase != false; + return this; +} + /** * tests the given row if it matches the filter * @@ -58,12 +163,12 @@ function JditoFilter (pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg) */ JditoFilter.prototype.checkRecord = function (pRow) { - if (!this.filter || this.filter.childs.length === 0) + if (!this._filter || this._filter.childs.length === 0) return true; var regexFlags = JditoFilterUtils.isUserIgnoreCase() ? "i" : undefined; - return _testRecord.call(this, this.filter); + return _testRecord.call(this, this._filter); /** * recursive function to test the row against the condition @@ -72,9 +177,10 @@ JditoFilter.prototype.checkRecord = function (pRow) { if (pCondition.type == "row") { - let value = pRow[this.columnMap[pCondition.name].index]; - let testFn = this.columnMap[pCondition.name].checkFn || _testValue; - return testFn.call(this.checkFnThisArg, value, (pCondition.key || pCondition.value), pCondition.operator, pRow); + let columnInfo = this._fieldInfos[pCondition.name]; + let value = "index" in columnInfo ? pRow[columnInfo.index] : null; + let testFn = columnInfo.checkFn || _testValue; + return testFn.call(columnInfo.thisArg, value, (pCondition.key || pCondition.value), pCondition.operator, pRow); } else if (pCondition.type == "group") { @@ -125,6 +231,12 @@ JditoFilter.prototype.checkRecord = function (pRow) } } +/** + * Filters the given records by the criteria defined by the filter object. + * + * @param {Array} pRecords 2d-array containing the records + * @return {Array the filtered records + */ JditoFilter.prototype.filterRecords = function (pRecords) { return pRecords.filter(this.checkRecord, this); @@ -178,7 +290,16 @@ JditoFilterUtils.filterRecords = function (pColumns, pRecords, pFilter, pCustomC if (!pFilter) return pRecords; - return new JditoFilter(pColumns, pFilter, pCustomCheckFns, pCheckFnThisArg).filterRecords(pRecords); + var filterObj = new JditoFilter(pFilter, pColumns); + + if (pCustomCheckFns) + { + for (let fieldName in pCustomCheckFns) + { + filterObj.addSpecialCheckFn(fieldName, pCustomCheckFns[fieldName], pCheckFnThisArg); + } + } + return filterObj.filterRecords(pRecords); } /** @@ -263,7 +384,7 @@ function FilterSqlTranslator (pFilter, pTable) /** * Sets the filter of the object * - * @param {Object} pFilter the filter object that should be used + * @param {Object} pFilter the filter object that should be used (e.g. vars.get("$local.filter")) * @return {FilterSqlTranslator} current object */ FilterSqlTranslator.prototype.filter = function (pFilter) @@ -272,7 +393,7 @@ FilterSqlTranslator.prototype.filter = function (pFilter) { if (!Utils.isObject(pFilter)) throw new TypeError("FilterSqlTranslator: Wrong type for the filter, expected 'object' but got '" + (typeof pFilter) + "'"); - this._filter = pFilter.filter || pFilter; + this._filter = "filter" in pFilter ? pFilter.filter : pFilter; } return this; } diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..5956980e85aba58177a5e931c819b50b4894f796 --- /dev/null +++ b/process/KeywordAttribute_test/KeywordAttribute_test.aod @@ -0,0 +1,12 @@ +<?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>KeywordAttribute_test</name> + <title>[TEST] KeywordAttribute_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/KeywordAttribute_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/KeywordAttribute_test/process.js b/process/KeywordAttribute_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..888e3a79bc304ec2fca6ccce31ec19b6cf546955 --- /dev/null +++ b/process/KeywordAttribute_test/process.js @@ -0,0 +1,144 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); +import("Sql_lib"); + + +var constructor = new TestSuite("KeywordAttribute.constructor", [ + new Test("should throw error if no data is found and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["contacts", "AddressType"])); + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contacts"); + }).throwsException(exception).assert(); + } + ), + + new Test("should not throw error if no data is found but default value is defined", + function(pTester) { + pTester.expectThat(function() { + new KeywordAttribute("AddressType", "contact", "testDefault"); + }).not().throwsException().assert(); + } + ), +]); + + +var getValue = new TestSuite("KeywordAttribute.getValue", [ + new Test("should throw error if attribute does not exist in container and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", ["asdf", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "asdf"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should throw error if attribute is not assigned to keyword and no default value is defined", + function(pTester) { + var exception = new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", ["contact", "abc", "AddressType"])); + + pTester.expectThat(function() { + var ka = new KeywordAttribute("AddressType", "contact"); + ka.getValue("abc"); + }).throwsException(exception).assert(); + } + ), + + new Test("should return default value if defined but attribute does not exist in container", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "asdf", "testDefault"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return default value if defined and attribute exists in container but is not assigned to keyword", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "contact", "testDefault"); + var actualValue = ka.getValue("abc"); + + pTester.expectThat(actualValue).equals("testDefault").assert(); + } + ), + + new Test("should return keywords boolean value (actually a number)", + function(pTester) { + var ka = new KeywordAttribute("AddressType", "organisation"); + var actualValue = ka.getValue("HOMEADDR"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).equals("0").assert(); + } + ), + + new Test("should return keywords number value (actually a string)", + function(pTester) { + var ka = new KeywordAttribute("PaymentTerm", "dayNumber"); + var actualValue = ka.getValue("PAYTERM30"); + + pTester.expectThat(actualValue).isNumeric().assert(); + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("30.00").assert(); + } + ), + + new Test("should return keywords char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TaskStatus", "icon"); + var actualValue = ka.getValue("ASSIGNED"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals("NEON:STATUS_ASSIGNED").assert(); + } + ), + + new Test("should return keywords long char value (string)", + function(pTester) { + var ka = new KeywordAttribute("TicketType", "attributes"); + var actualValue = ka.getValue("SUPPORTTICKET"); + + pTester.expectThat(actualValue).isString().assert(); + pTester.expectThat(actualValue).equals('["ff8b1caf-cf30-4edb-b5ca-a9a219ba8399"]').assert(); + } + ), +]); + + +var getSqlBuilderSelect = new TestSuite("KeywordAttribute.getSqlBuilderSelect", [ + new Test("should return a SqlBuilder instance", + function(pTester) { + var ka = new KeywordAttribute("MemberRole", "Intern"); + /** @type {SqlBuilder} */ + var actualValue = ka.getSqlBuilderSelect(); + + var expectQueryResult = [ + "039fd6ae-b4ad-431e-86bf-59ed2f4df0a9", + "8cb1b843-713a-4193-aa50-9f5ca06820f8", + "9c421b0b-8529-4e07-9463-28d59fd027b6", + "b72294cd-3a46-4f71-ab93-72824f63f7f4", + "f78f229f-f809-4bd2-aca8-24e2f82fa220", + ]; + var actualQueryResult = actualValue.orderBy("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID").arrayColumn(); + + pTester.expectThat(actualValue).isInstanceOf("SqlBuilder").assert(); + pTester.expectThat(actualQueryResult).equals(expectQueryResult).assert(); + } + ), +]); + + +var tester = new Tester("Test KeywordAttribute_lib"); +tester.initCoverage(KeywordAttribute); +tester.test(constructor); +tester.test(getValue); +tester.test(getSqlBuilderSelect); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..e654f56663b71ec5ed3e6241aa1be9bd76dc1d87 --- /dev/null +++ b/process/Keyword_test/Keyword_test.aod @@ -0,0 +1,12 @@ +<?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>Keyword_test</name> + <title>[TEST] Keyword_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/Keyword_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/Keyword_test/process.js b/process/Keyword_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..d1b1d910e9dfd985b8c089830f410b21f0151c25 --- /dev/null +++ b/process/Keyword_test/process.js @@ -0,0 +1,143 @@ +import("system.result"); +import("system.translate"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + +//this test will not work currently +//TODO: renable and fix the tests + +//var getContainerNames = new TestSuite("KeywordUtils.getContainerNames", [ +// new Test("should return an alphabetically ascending ordered list of all keyword containers", +// function(pTester) { +// var actualValue = KeywordUtils.getContainerNames(); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1).assert(); +// pTester.expectThat(actualValue).elementAt(0).equals("ActivityCategory").assert(); +// pTester.expectThat(actualValue).elementAt(-1).equals("YesNo").assert(); +// } +// ) +//]); +// +// +//var getCategoryNameById = new TestSuite("KeywordUtils.getCategoryNameById", [ +// new Test("should return existing keyword category name for correct uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0"); +// +// pTester.expectThat(actualValue).equals("MemberRole").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for wrong uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b1"); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +// +// new Test("should return non-existing keyword category name for missing uuid", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryNameById(); +// +// pTester.expectThat(actualValue).equals("<unknown>").assert(); +// } +// ), +//]); +// +// +//var getCategoryIdByName = new TestSuite("KeywordUtils.getCategoryIdByName", [ +// new Test("should return existing keyword uuid for correct category name", +// function(pTester) { +// var actualValue = KeywordUtils.getCategoryIdByName("MemberRole"); +// +// pTester.expectThat(actualValue).equals("a55654b1-6a19-4d0c-b08d-cfbc12b5f7b0").assert(); +// } +// ), +// +// new Test("should throw exception for wrong keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", ["AddressTypes"])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName("AddressTypes"); +// }).throwsException(exception).assert(); +// } +// ), +// +// new Test("should throw exception for missing keyword category name", +// function(pTester) { +// var exception = new Error(translate.withArguments("no keyword category \"%0\" found", [""])); +// pTester.expectThat(function() { +// KeywordUtils.getCategoryIdByName(); +// }).throwsException(exception).assert(); +// } +// ), +//]); +// +// +//var getEntryNamesAndIdsByContainer = new TestSuite("KeywordUtils.getEntryNamesAndIdsByContainer", [ +// new Test("should return an array of all keywords and their ID's for given container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("ActivityDirection"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasMinLength(1, {name: "array"}).assert(); +// pTester.expectThat(actualValue).elementAt(0).isArray().assert(); +// pTester.expectThat(actualValue).elementAt(0).hasLength(2).assert(); +// } +// ), +// +// new Test("should return an empty array for non-existent container", +// function(pTester) { +// var actualValue = KeywordUtils.getEntryNamesAndIdsByContainer("Asdf"); +// +// pTester.expectThat(actualValue).isArray().assert(); +// pTester.expectThat(actualValue).hasLength(0, {name: "array"}).assert(); +// } +// ), +//]); +// +// +//var exists = new TestSuite("KeywordUtils.exists", [ +// new Test("should return a boolean indicating that a known keyword in a known container exists", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(true, "known keyword exists in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that an unknown keyword in a known container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("ASDF", "ActivityCategory"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "unknown keyword does not exist in known container").assert(); +// } +// ), +// +// new Test("should return a boolean indicating that a known keyword in an unknown container does not exist", +// function(pTester) { +// var actualValue = KeywordUtils.exists("VISIT", "Asdf"); +// +// pTester.expectThat(actualValue).isBoolean().assert(); +// pTester.expectThat(actualValue).equals(false, "known keyword does not exist in unknown container").assert(); +// } +// ), +//]); +// +// +//var tester = new Tester("Test Keyword_lib"); +//tester.initCoverage(KeywordUtils); +//tester.test(getContainerNames); +//tester.test(getCategoryNameById); +//tester.test(getCategoryIdByName); +//tester.test(getEntryNamesAndIdsByContainer); +//tester.test(exists); +// +//tester.summary(); +// +//result.object(tester.getResults()); \ No newline at end of file diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index a4201c301c22ba2d7b33777f894e829524a24d60..de9d13b2c7bb525960c5503b3e20eb28d9f2190d 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -448,20 +448,26 @@ LeadImportUtils.insertAttr = function(pDataFields, pDataTypes, pFieldDef, pLeadV DataValues["OBJECT_TYPE"] = pObjectID; DataValues["AB_ATTRIBUTE_ID"] = attrdata[1][0]; DataValues["OBJECT_ROWID"] = pContactId; + switch(attrdata[1][1].trim())//type { case "COMBO": - value = newSelect("AB_ATTRIBUTEID") - .from("AB_ATTRIBUTE") - .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", attrdata[1][0]) - .and("AB_ATTRIBUTE.ATTRIBUTE_NAME", value) - .cell(); - - type = "ID_VALUE"; - break; + value = newSelect("AB_ATTRIBUTEID") + .from("AB_ATTRIBUTE") + .whereIfSet("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", attrdata[1][0]) + .and("AB_ATTRIBUTE.ATTRIBUTE_NAME", value) + .cell(); + type = "ID_VALUE"; + break; + case "TEXT": + type = "CHAR_VALUE"; + break; + case "BOOLEAN": + type = "INT_VALUE"; + break; //other cases can be added here } - if (value != "" && type != "") + if (value.length && type != "") { DataValues[type] = value; LeadImportUtils.insertTable(pDataFields, pDataTypes, DataValues, "AB_ATTRIBUTERELATION", pUser, pDate); @@ -591,7 +597,7 @@ LeadImportUtils.insertOrg = function(pDataFields, pDataTypes, pFieldDef, pField */ LeadImportUtils.insertPers = function(pDataFields, pDataTypes, pFieldDef, pFieldValues, pOrgId, pLeadValues, pUser, pDate) { - var isoLanguage = pLeadValues["ISOLANGUAGE"] ? pLeadValues["ISOLANGUAGE"] : "deu"; + var isoLanguage = pLeadValues["ISOLANGUAGE"]; //Person var PersValues = LeadImportUtils.setValues(pDataFields["PERSON"], pFieldDef, pFieldValues); @@ -788,7 +794,7 @@ LeadImportUtils.getLeadAttr = function(pImportDefID) .from("AB_ATTRIBUTERELATION") .join("AB_ATTRIBUTEUSAGE", "AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID") .where("AB_ATTRIBUTERELATION.OBJECT_ROWID", pImportDefID) - .and("AB_ATTRIBUTERELATION.OBJECT_TYPE = 'Leadimport'") + .and("AB_ATTRIBUTERELATION.OBJECT_TYPE", "Leadimport") .table() }; } @@ -830,7 +836,7 @@ LeadImportUtils.checkISOLanguage = function(pLanguage) .or("AB_LANGUAGE.NAME_LATIN", pLanguage) .cell(); - return iso3 ? iso3 : "deu"; + return iso3 ? iso3 : "eng"; } diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js index 93375b4ee77b833c60aae891fece0bf0f84bca00..00ee5d28afd329d981a2d69ae461414c16e55134 100644 --- a/process/Loghistory_lib/process.js +++ b/process/Loghistory_lib/process.js @@ -250,12 +250,12 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena //the "SOURCE_TABLENAME" and "SOURCE_TABLENAMEID" are reserved for later usage in the change-notification-subscriptions //TODO: check if they are really needed this.toInsert = { statements: [] - ,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW"] + ,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW", "AB_LOGHISTORYID"] }; this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance } - var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser]; + var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser, util.getNewUUID()]; this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); }; diff --git a/process/ObjectRelation_lib/process.js b/process/ObjectRelation_lib/process.js index 93063469bb275bf252eac8485933805cea091570..c99e2322413f0dda7eb287c8dfd033f048066895 100644 --- a/process/ObjectRelation_lib/process.js +++ b/process/ObjectRelation_lib/process.js @@ -37,6 +37,7 @@ ObjectRelationUtils.getPossibleRelationTypes = function(pObjectTypes, pFullInfo, // only id and title: if (pFullInfo) { + //!SqlBuilder fields = fields.concat([ "main.RELATION_TYPE", "case when type2.AB_OBJECTRELATIONTYPEID is null then 'same' \n\ diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index 7c9504fa26da75fa05ae7753f287070f922dd250..f5a8cd0138d503694a5e0e0a52b21bb277eb156c 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -502,7 +502,7 @@ OfferItemUtils.prototype.insertPartsList = function(pProductId, pAssignedTo, pCu "( " + newSelect("DESCRIPTION") .from("DESCRIPTIONTRANSLATION") .where("DESCRIPTIONTRANSLATION.OBJECT_ROWID = PRODUCT.PRODUCTID") - .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE = 'Product'") + .and("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "Product") .and("DESCRIPTIONTRANSLATION.LANG", pLanguage) .toString() + ")"]]]]); diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index b2d61012cd1309ed606fa51e73b24418c7b828bc..6ccbfe3e76006ca51544b503453320d416d35951 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -1,22 +1,33 @@ +import("Util_lib"); import("Communication_lib"); import("system.tools"); import("system.result"); import("DocumentTemplate_lib"); import("system.vars"); import("Email_lib"); +import("Placeholder_lib"); +import("Workflow_lib"); +var processInstanceId = vars.get("$local.uid"); var variables = JSON.parse(vars.get("$local.value")); var recipientContactId = variables.recipientContactId; var documentTemplateId = variables.documentTemplateId; var senderName = variables.senderName; var mailSubject = variables.mailSubject; -var email = Email.fromTemplate(documentTemplateId, recipientContactId); +var actionParams = Utils.clone(variables); +actionParams.processInstanceId = processInstanceId; +var linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () +{ + return WorkflowLinkActions.getActionLink("https://localhost:8443", actionParams.linkActionType, actionParams.redirectLink, actionParams); +}); + +var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, [linkPlaceholder]); email.subject = mailSubject; email.toRecipients = [CommUtil.getStandardMail(recipientContactId)]; //if we use @@instanceId in the mail body to track the user interaction, we replace it here with the instance id -email.body = email.body.replace("@@instanceId", vars.get("$local.uid")); +email.body = email.body.replace("@@instanceId", processInstanceId); var sendResult; if(senderName) @@ -29,5 +40,4 @@ if(senderName) else { sendResult = email.send(); -} -result.string(sendResult); \ No newline at end of file +} \ No newline at end of file diff --git a/process/SendEmail_workflowService/serviceTaskParameterProcess.js b/process/SendEmail_workflowService/serviceTaskParameterProcess.js index 8fdc7e978b6970f16ab2a76efa6a588fefd66aa9..b581232fe52bca0391382ac9cb294a7fe948f3c0 100644 --- a/process/SendEmail_workflowService/serviceTaskParameterProcess.js +++ b/process/SendEmail_workflowService/serviceTaskParameterProcess.js @@ -1,3 +1,4 @@ +import("system.vars"); import("system.result"); import("Workflow_lib"); import("KeywordRegistry_basic"); @@ -19,7 +20,34 @@ var contacts = newSelect(["CONTACTID", new ContactTitleRenderer(Contact.createWi .table() .map(function (item) {return {id : item[0], name : item[1]};}); -result.object([ +var workflowLinkActionTypes = []; +for (let typeName in WorkflowLinkActions.types) +{ + let actionType = WorkflowLinkActions.types[typeName]; + workflowLinkActionTypes.push({id: actionType(), name: actionType.title}); +} + +var parameters = [ new WorkflowServiceTaskParameter("documentTemplateId", "Document template", WorkflowServiceTaskParameter.ENUM(), templates), - new WorkflowServiceTaskParameter("recipientContactId", "Recipient", WorkflowServiceTaskParameter.ENUM(), contacts) -]); \ No newline at end of file + new WorkflowServiceTaskParameter("recipientContactId", "Recipient", WorkflowServiceTaskParameter.ENUM(), contacts), + new WorkflowServiceTaskParameter("linkActionType", "Link action", WorkflowServiceTaskParameter.ENUM(), workflowLinkActionTypes, true) +]; + +var currentValues = JSON.parse(vars.get("$local.value")); +if (currentValues.linkActionType && currentValues.linkActionType.value) +{ + parameters.push(new WorkflowServiceTaskParameter("redirectLink", "Link", WorkflowServiceTaskParameter.STRING())); + switch (currentValues.linkActionType.value) + { + case WorkflowLinkActions.types.RECEIVE_TASK(): + parameters.push(new WorkflowServiceTaskParameter("receiveTask", "Receive Task Id", WorkflowServiceTaskParameter.STRING())); + break; + case WorkflowLinkActions.types.SIGNAL(): + parameters.push(new WorkflowServiceTaskParameter("signal", "Signal", WorkflowServiceTaskParameter.STRING())); + break; + case WorkflowLinkActions.types.MESSAGE(): + parameters.push(new WorkflowServiceTaskParameter("message", "Message", WorkflowServiceTaskParameter.STRING())); + } +} + +result.object(parameters); \ No newline at end of file diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js index 5ae7685d47c6712b675f29bf3f695e81dde188c4..c9f17d88c318b1f97b6efb9894f68cd20a161bf0 100644 --- a/process/SetAttribute_workflowService/process.js +++ b/process/SetAttribute_workflowService/process.js @@ -16,4 +16,4 @@ if (variables.attributeName) else attributeId = variables.attributeId; -result.string(new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue)); \ No newline at end of file +new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue); \ No newline at end of file diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..3992282911646839e2344fc4154d6a0a30666daf --- /dev/null +++ b/process/SqlBuilder_test/SqlBuilder_test.aod @@ -0,0 +1,12 @@ +<?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>SqlBuilder_test</name> + <title>[TEST] Sql_lib - SqlBuilder</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlBuilder_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlBuilder_test/process.js b/process/SqlBuilder_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..3ec9ec86ddb15cafc04a2bed81a81e28afc3cf79 --- /dev/null +++ b/process/SqlBuilder_test/process.js @@ -0,0 +1,1266 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("system.translate"); +import("system.logging"); +import("system.SQLTYPES"); +import("Sql_lib"); +import("UnitTest_lib"); + +//SqlBuilder-tests: +var newSelectTests = new TestSuite("SqlLib.newSelect", [ + new Test("newSelect with just a string should just use it as select", + function(pTester) + { + var actualValue = newSelect("MySuper, Field, String") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an array of strings should just use them concatenated as select", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String"]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("newSelect with just an SqlBuilder should use it as subselect", + function(pTester) + { + var actualValue = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("newSelect an array of Strings and SqlBuilders should add them all", + function(pTester) + { + var actualValue = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validAndUsageTests = new TestSuite("SqlLib.validAndUsage", [ + new Test("and should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .and("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if value is an empty string", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "") + .and("PERSON.LASTNAME", "") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should add a condition if field and value as jdito-var are passed", + function(pTester) + { + vars.set("$global.TestUnitValueName", "Tim"); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = 'Tim' ) ").assert(); + } + ), + + new Test("$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$$mySuperString") + + pTester.expectThat(actualValue.toString()).equals("( PERSON.FIRSTNAME = '$mySuperString' ) ").assert(); + } + ), + + new Test("and should add a condition if value is a jdito-var containing an empty string", + function(pTester) + { + vars.set("$global.TestingVarEmptyString", ""); + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") + .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .and("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(1).equals(SQLTYPES.INTEGER).assert(); + } + ), + + new Test("and only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .and([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("and only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .select("TEST") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin"), + "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var validOrUsageTests = new TestSuite("SqlLib.validOrUsage", [ + new Test("or should just add simple strings as condition just as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" + .or("PERSON.LASTNAME = 'Admin'") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("or should add a condition if field and value are passed", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given condition pattern", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim", "# <> ?") + .or("PERSON.LASTNAME", "Admin") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or should use the given SQLTYPE if provided", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) + .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + } + ), + + new Test("or only with a prepared statement-array should just use it as it is", + function(pTester) + { + var actualValue = new SqlBuilder() + .where([ + "PERSON.FIRSTNAME = ?", [["Peter", 12]] + ]) + .or([ + "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] + ]) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("or only with a SqlBulder object should just use the condition from it", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin"), + "exists ?") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a builder as value and field should add the whole builder as subquery with field = (subquery)", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") + .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), +]); + +var combinedAndOrTests = new TestSuite("SqlLib.combinedAndOr", [ + new Test("or combining two and", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .and("PERSON.LASTNAME", "Admin") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("and combining two or", + function(pTester) + { + var actualValue = new SqlBuilder() + .where(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.LASTNAME", "Admin")) + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("some and/or combinations in one select", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", "Tim") + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.LASTNAME", "Admin") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller")) + .or("PERSON.FIRSTNAME", "Franz") + .and("PERSON.FIRSTNAME", "Franz") + .or(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .and("PERSON.LASTNAME", "Müller") + .and(new SqlBuilder() + .where("PERSON.FIRSTNAME", "Peter") + .or("PERSON.LASTNAME", "Müller"))) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(11).assert(); + } + ), +]); + + +var ifSetTests = new TestSuite("SqlLib.ifSet", [ + new Test("simple and if set with all types of empty values.", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", null) + .andIfSet("PERSON.LASTNAME", undefined) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("jdito variable with null", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty simple conditions", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("") + .andIfSet(["", []]) + .andIfSet(new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), + + new Test("empty subqueries", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.FIRSTNAME", ["", []]) + .andIfSet("PERSON.LASTNAME", new SqlBuilder()) + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("", "no sql should be added").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0, "no params should be added").assert(); + } + ), +]); + + +function cleanWrapperTests() +{ + try { + db.runStatement("drop table SQL_LIB_TEST_TABLE"); + } catch(ex) {} + + try { + db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") + } catch(ex) {} + +} + + +var dbWrapperTests = new TestSuite("SqlLib.dbWrapper", [ + new Test("cell should load only one value", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + var actualValue = builder.cell() + + pTester.expectThat(actualValue).equals("Franz").assert(); + } + ), + + new Test("cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON") + var actualValue = builder.cell(true) + + pTester.expectThat(actualValue).equals("").assert(); + } + ), + + new Test("cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME") + .from("PERSON"); + + var actualValue = builder.cell(false) + + pTester.expectThat(actualValue).not().equals("").assert(); + pTester.expectThat(actualValue).not().isNull().assert(); + pTester.expectThat(actualValue).not().isUndefined().assert(); + } + ), + + new Test("array should load an array of values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5"); + + var actualValue = builder.array(db.ROW); + pTester.expectThat(actualValue).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + } + ), + + new Test("array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, true); + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + + var actualValue = builder.array(db.ROW, false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("table should load an array of arrays with values", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON") + .where("PERSON.PERSONID", "TEST-5") + .or("PERSON.PERSONID", "TEST-6") + .orderBy("PERSONID asc"); + + var actualValue = builder.table(); + pTester.expectThat(actualValue).elementAt(0).elementAt(0).equals("Franz", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(0).elementAt(1).equals("Müller", {name: "lastname"}).assert(); + + pTester.expectThat(actualValue).elementAt(1).elementAt(0).equals("Marco", {name: "firstname"}).assert(); + pTester.expectThat(actualValue).elementAt(1).elementAt(1).equals("Polo", {name: "lastname"}).assert(); + } + ), + + new Test("table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(true); + + pTester.expectThat(actualValue).hasLength(0).assert(); + } + ), + + new Test("table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + var builder = new SqlBuilder() + .select("FIRSTNAME, LASTNAME") + .from("PERSON"); + + var actualValue = builder.table(false); + pTester.expectThat(actualValue).hasMinLength(1).assert(); + } + ), + + new Test("delete should delete the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + var actualValue = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); + pTester.expectThat(actualValue).equals(1).assert(); + } + ), + + new Test("delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(false); + pTester.expectThat(actualValue).equals(2).assert(); + } + ), + + new Test("delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + var actualValue = builder.deleteData(true); + pTester.expectThat(actualValue).equals(0).assert(); + } + ), + + new Test("update should update the data and use the from and condition from the builder", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + + var builder = new SqlBuilder() + .from("PERSON") + .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); + + builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + + pTester.expectThat(actualValue).equals("Fritz").assert(); + } + ), + + new Test("update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Fritz", "TEST-7 should have Firstname Fritz").assert(); + pTester.expectThat(actualValue2).equals("Fritz", "TEST-8 should have Firstname Fritz").assert(); + } + ), + + new Test("update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", + function(pTester) + { + db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); + db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); + + var builder = new SqlBuilder() + .from("SQL_LIB_TEST_TABLE") + + builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); + + var actualValue1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") + var actualValue2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") + + pTester.expectThat(actualValue1).equals("Ludwig", "TEST-7 should have Firstname Ludwig").assert(); + pTester.expectThat(actualValue2).equals("Franz", "TEST-8 should have Firstname Franz").assert(); + } + ), +], function preAll() +{ + // remove data which may exist if previous test-run failed and postAll was not executed + cleanWrapperTests(); + + // add table for save testing of deletes + db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); + + // add test persons + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) + db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) +}, undefined, undefined, function postAll() +{ + cleanWrapperTests(); +}) + + +var mandatoryErrorTests = new TestSuite("SqlLib.mandatoryError", [ +// and + new Test("and without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("and with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("and with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("and with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + +// or + new Test("or without parameter should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or(); + }).throwsException(SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()).assert(); + } + ), + + new Test("or with null as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", null); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with undefined as value should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with a jdito-var containing null should error", + function(pTester) + { + vars.set("$global.TestingVarNull", null); + + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()).assert(); + } + ), + + new Test("or with an empty sql-builder as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), + + new Test("or with an empty prepared statement as subquery should error", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var inStatementTests = new TestSuite("SqlLib.inStatement", [ + new Test("simple and in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(4).assert(); + } + ), + + new Test("simple and not in", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( PERSON.LASTNAME not in (?, ?) ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(2).assert(); + } + ), + + new Test("in with subquery", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", new SqlBuilder() + .select("PERSON.FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Fritz") + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("in with prepared statement-array", + function(pTester) + { + var actualValue = new SqlBuilder() + .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] + , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("andIfSet should ignore empty array", + function(pTester) + { + var actualValue = new SqlBuilder() + .whereIfSet("PERSON.LASTNAME", []); + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals("").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(0).assert(); + } + ), + + new Test("and should error on an empty array", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.LASTNAME", []); + }).throwsException(SqlBuilder._ERROR_VALUE_IS_MANDATORY()).assert(); + } + ), +]); + + +var testConstantFunctions = new TestSuite("SqlLib.testConstantFunc", [ + new Test("SqlBuilder.IN()", + function(pTester) + { + var actualValue = SqlBuilder.IN(); + pTester.expectThat(actualValue).equals("# in ?").assert(); + } + ), + + new Test("SqlBuilder.NOT_IN()", + function(pTester) + { + var actualValue = SqlBuilder.NOT_IN(); + pTester.expectThat(actualValue).equals("# not in ?").assert(); + } + ), + + new Test("SqlBuilder.EXISTS()", + function(pTester) + { + var actualValue = SqlBuilder.EXISTS(); + pTester.expectThat(actualValue).equals("exists ?").assert(); + } + ), +]); + + +var selectTests = new TestSuite("SqlLib.select", [ + new Test("a sql-builder in a fields-array is translated to sql correctly", + function(pTester) + { + var countSubQuery = newSelect("count(*)") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") + .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); + + var actualValue = new SqlBuilder() + .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) + .from("AB_ATTRIBUTE") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("a sql-builder in from is used as subselect", + function(pTester) + { + var subQuery = newSelect("FIRSTNAME") + .from("PERSON") + .where("PERSON.LASTNAME", "Meier") + + var actualValue = new SqlBuilder() + .select("*") + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var joinTests = new TestSuite("SqlLib.join", [ + new Test("SqlBuilder as on-condition should only add the conditon of the builder", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("ORGANISATION", subQuery) + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join ORGANISATION on ORGANISATION.NAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("SqlBuilder as table for join is added as subselect", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("just use a string also containing a condition as join without additional condition", + function(pTester) + { + var actualValue = new SqlBuilder() + .select("*") + .from("PERSON") + .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join TABLE1 on TABLE1.NAME = TABLE2.NAME").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(0).assert(); + } + ), +]); + + +var subqueryAsFieldTests = new TestSuite("SqlLib.subqueryAsField", [ + new Test("Test if a Subselect as field works if pValue is provided. This should be added as subselect.", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + var actualValue = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) + .and("PERSON.FIRSTNAME", "val3"); + + + pTester.expectThat(actualValue).elementAt("_where").elementAt("_sqlStorage").equals(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").hasLength(3).assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(0).elementAt(0).equals("val1").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(1).elementAt(0).equals("val2").assert(); + pTester.expectThat(actualValue).elementAt("_where").elementAt("preparedValues").elementAt(2).elementAt(0).equals("val3").assert(); + } + ), + + new Test("Test if a Subselect as field should error if no SQLTYPE is provided.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + new SqlBuilder().where(subQuery, "val2", "# = ?"); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()).assert(); + } + ), + + new Test("Test if a Subselect as field should error if it is not a full select.", + function(pTester) + { + pTester.expectThat(function() { + var subQuery = newSelect("NAME") + .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place + + new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); + }).throwsException(SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()).assert(); + } + ), +]); + + +var conditionFormatTests = new TestSuite("SqlLib.conditionFormat", [ + new Test("pCondition should not fail if # an ? exist in correct order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder() + .where("PERSON.FIRSTNAME", "val1", "# = ?") + .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") + ; + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should not fail if only ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") + }).not().throwsException().assert(); + } + ), + + new Test("pCondition should fail if more than one ? exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if more than one # exists", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), + + new Test("pCondition should fail if # and ? are in wrong order", + function(pTester) + { + pTester.expectThat(function() { + new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") + }).throwsException(SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()).assert(); + } + ), +]); + + +var subqueryAliasTests = new TestSuite("SqlLib.subqueryAlias", [ + new Test("subselectAlias should be added for subquery in .select", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .select([subQuery, "FIRSTNAME"]) + .from("PERSON") + + pTester.expectThat(actualValue).elementAt("_select").elementAt("_sqlStorage").equals("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME").assert(); + pTester.expectThat(actualValue).elementAt("_select").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery) + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be overruled by the param in in .from", + function(pTester) + { + var subQuery = newSelect("NAME") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from(subQuery, "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_from").elementAt("_sqlStorage").equals("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias").assert(); + pTester.expectThat(actualValue).elementAt("_from").elementAt("preparedValues").hasLength(1).assert(); + } + ), + + new Test("subselectAlias should be added for subquery in .join", + function(pTester) + { + var subQuery = newSelect("NAME, ORGANISATIONID") + .from("ORGANISATION") + .where("ORGANISATION.NAME", "Adito") + .subselectAlias("testAlias") + + var actualValue = new SqlBuilder() + .from("CONTACT") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") + .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(0).elementAt("preparedValues").hasLength(1).assert(); + + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("_sqlStorage").equals("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID").assert(); + pTester.expectThat(actualValue).elementAt("_joins").elementAt(1).elementAt("preparedValues").hasLength(1).assert(); + } + ), +]); + + +var tester = new Tester("Test SqlBuilder"); +tester.test(newSelectTests); +tester.test(validAndUsageTests); +tester.test(validOrUsageTests); +tester.test(combinedAndOrTests); +tester.test(ifSetTests); +tester.test(dbWrapperTests); +tester.test(mandatoryErrorTests); +tester.test(inStatementTests); +tester.test(testConstantFunctions); +tester.test(selectTests); +tester.test(joinTests); +tester.test(subqueryAsFieldTests); +tester.test(conditionFormatTests); +tester.test(subqueryAliasTests); + +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/SqlLib_tests/process.js b/process/SqlLib_tests/process.js deleted file mode 100644 index 924162e2a4ef98f5dc93515f648fdad355ced736..0000000000000000000000000000000000000000 --- a/process/SqlLib_tests/process.js +++ /dev/null @@ -1,1015 +0,0 @@ -import("system.db"); -import("system.vars"); -import("system.translate"); -import("system.logging"); -import("system.SQLTYPES"); -import("Sql_lib"); -import("UnitTest_lib"); - -var newSelectTests = new TestSuite([ - ["newSelect with just a string schould just use it as select", function(pTester) - { - var actual = newSelect("MySuper, Field, String") - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an array of strings schould just use them concatenated as select", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String"]) - - pTester.assert("select MySuper, Field, String", actual._select._sqlStorage, "prepared sql"); - pTester.assert(0, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect with just an SqlBuilder should use it as subselect", function(pTester) - { - var actual = newSelect(new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")) - - pTester.assert("select (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["newSelect an array of Strings and SqlBuilders should add them all", function(pTester) - { - var actual = newSelect(["MySuper", "Field", "String", new SqlBuilder().select("PERSONID").from("PERSON").where("PERSON.FIRSTNAME", "Fritz")]) - - pTester.assert("select MySuper, Field, String, (select PERSONID from PERSON where PERSON.FIRSTNAME = ?)", actual._select._sqlStorage, "prepared sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], -]); - -var validAndUsageTests = new TestSuite([ - ["and should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .and("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' and PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if value is an empty string", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "") - .and("PERSON.LASTNAME", "") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should add a condition if field and value as jdito-var are passed", function(pTester) - { - vars.set("$global.TestUnitValueName", "Tim"); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestUnitValueName") - - pTester.assert("( PERSON.FIRSTNAME = 'Tim' ) ", actual.toString()); - }], - - ["$ should be escaped by a second $ and the string should therefore just be used as string and not as jdito variable", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$$mySuperString") - - pTester.assert("( PERSON.FIRSTNAME = '$mySuperString' ) ", actual.toString()); - }], - - ["and should add a condition if value is a jdito-var containing an empty string", function(pTester) - { - vars.set("$global.TestingVarEmptyString", ""); - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "$global.TestingVarEmptyString") - .and("PERSON.LASTNAME", "$global.TestingVarEmptyString") - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .and("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? and PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .and("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[0][1], "sql type of param 1 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[1][1], "sql type of param 2 is the provided type"); - pTester.assert(SQLTYPES.INTEGER, actual._where.preparedValues[2][1], "sql type of param 3 is the provided type"); - }], - - ["and only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .and([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) and ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["and only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .select("TEST") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin"), - "exists ?") // Note: you can use SqlBuilder.EXISTS() instead of "exists ?" - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .and(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) and ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["and with a prepared statement-array as value and field should add the whole statement as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]]) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }] -]); - -var validOrUsageTests = new TestSuite([ - ["or should just add simple strings as condition just as it is", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME = 'Tim'") // NOTE: you should not do this as this does not add a real prepared statement with "?" - .or("PERSON.LASTNAME = 'Admin'") - - pTester.assert("PERSON.FIRSTNAME = 'Tim' or PERSON.LASTNAME = 'Admin'", actual._where._sqlStorage, "prepared sql"); - pTester.assert(0, actual._where.preparedValues.length, "number of params"); - }], - - ["or should add a condition if field and value are passed", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given condition pattern", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim", "# <> ?") - .or("PERSON.LASTNAME", "Admin") - - pTester.assert("PERSON.FIRSTNAME <> ? or PERSON.LASTNAME = ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or should use the given SQLTYPE if provided", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", 6, null, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 7, undefined, SQLTYPES.INTEGER) - .or("PERSON.LASTNAME", 8, "# <> ?", SQLTYPES.INTEGER) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? or PERSON.LASTNAME <> ?", actual._where._sqlStorage, "prepared sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a prepared statement-array should just use it as it is", function(pTester) - { - var actual = new SqlBuilder() - .where([ - "PERSON.FIRSTNAME = ?", [["Peter", 12]] - ]) - .or([ - "exists (select * FROM CONTACT where PERSON_ID = PERSONID)", [] - ]) - - pTester.assert(" ( PERSON.FIRSTNAME = ? ) or ( exists (select * FROM CONTACT where PERSON_ID = PERSONID) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["or only with a SqlBulder object should just use the condition from it", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and condition (field is null|undefined) should add the whole builder as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin"), - "exists ?") - - pTester.assert("exists ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a builder as value and field should add the whole builder as subquery with field = (subquery)", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - - pTester.assert("PERSON.FIRSTNAME = ( select FIRSTNAME from PERSON where PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["or with a prepared statement-array as value and field is null|undefined should add the whole statement as subquery", function(pTester) - { - var actual = new SqlBuilder() - .where(null, ["select FIRSTNAME from PERSON.FIRSTNAME = ?", [["Peter", 12]]], "exists ?") - .or(null, ["exists (select FIRSTNAME from PERSON.FIRSTNAME = ?)", [["Peter", 12]]]) // also without pCond it should work as the condition could be included in the prep statement - - pTester.assert("exists ( select FIRSTNAME from PERSON.FIRSTNAME = ? ) or ( exists (select FIRSTNAME from PERSON.FIRSTNAME = ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }] -]); - -var combinedAndOrTests = new TestSuite([ - ["or combining two and", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .and("PERSON.LASTNAME", "Admin") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller")) - - pTester.assert("(PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ?) or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["and combining two or", function(pTester) - { - var actual = new SqlBuilder() - .where(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.LASTNAME", "Admin")) - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - - pTester.assert(" ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["some and/or combinations in one select", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", "Tim") - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.LASTNAME", "Admin") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller")) - .or("PERSON.FIRSTNAME", "Franz") - .and("PERSON.FIRSTNAME", "Franz") - .or(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .and("PERSON.LASTNAME", "Müller") - .and(new SqlBuilder() - .where("PERSON.FIRSTNAME", "Peter") - .or("PERSON.LASTNAME", "Müller"))) - - pTester.assert("PERSON.FIRSTNAME = ? or PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) or (PERSON.FIRSTNAME = ?) and PERSON.FIRSTNAME = ? or ( PERSON.FIRSTNAME = ? and PERSON.LASTNAME = ? and ( PERSON.FIRSTNAME = ? or PERSON.LASTNAME = ? ) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(11, actual._where.preparedValues.length, "number of params"); - }] -]); - -var ifSetTests = new TestSuite([ - ["simple and if set with all types of empty values.", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", null) - .andIfSet("PERSON.LASTNAME", undefined) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["jdito variable with null", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", "$global.TestingVarNull") - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty simple conditions", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("") - .andIfSet(["", []]) - .andIfSet(new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }], - - ["empty subqueries", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.FIRSTNAME", ["", []]) - .andIfSet("PERSON.LASTNAME", new SqlBuilder()) - - pTester.assert("", actual._where._sqlStorage, "no sql should be added"); - pTester.assert(0, actual._where.preparedValues.length, "no params should be added"); - }] -]); - -function cleanWrapperTests() -{ - try { - db.runStatement("drop table SQL_LIB_TEST_TABLE"); - } catch(ex) {} - - try { - db.deleteData("PERSON", "PERSONID in ('TEST-5', 'TEST-6')") - } catch(ex) {} - -} - -var dbWrapperTests = new TestSuite([ - ["cell should load only one value", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - pTester.assert("Franz", builder.cell()); - }], - - ["cell should just return '' if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON") - pTester.assert("", builder.cell(true)); - }], - - ["cell should return a value if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME") - .from("PERSON"); - - var actual = builder.cell(false) - pTester.assert(true, actual !== "" && actual !== null && actual !== undefined); - }], - - ["array should load an array of values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5"); - - var actual = builder.array(db.ROW); - pTester.assert("Franz", actual[0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[1], "lastname should be 'Müller'"); - }], - - ["array should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, true); - pTester.assert(0, actual.length); - }], - - ["array should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - - var actual = builder.array(db.ROW, false); - pTester.assert(true, actual.length > 0); - }], - - ["table should load an array of arrays with values", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON") - .where("PERSON.PERSONID", "TEST-5") - .or("PERSON.PERSONID", "TEST-6") - .orderBy("PERSONID asc"); - - var actual = builder.table(); - pTester.assert("Franz", actual[0][0], "firstname should be 'Franz'"); - pTester.assert("Müller", actual[0][1], "lastname should be 'Müller'"); - - pTester.assert("Marco", actual[1][0], "firstname should be 'Marco'"); - pTester.assert("Polo", actual[1][1], "lastname should be 'Polo'"); - }], - - ["table should return an empty array if no condition set but pExecuteOnlyIfConditionExists is true", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(true); - pTester.assert(0, actual.length); - }], - - ["table should return a non-empty array if no condition set and pExecuteOnlyIfConditionExists is false", function(pTester) - { - var builder = new SqlBuilder() - .select("FIRSTNAME, LASTNAME") - .from("PERSON"); - - var actual = builder.table(false); - pTester.assert(true, actual.length > 0); - }], - - ["delete should delete the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(); - pTester.assert(1, deletedRows); - }], - - ["delete should delete the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - var deletedRows = builder.deleteData(false, "SQL_LIB_TEST_TABLE"); - pTester.assert(1, deletedRows); - }], - - ["delete should delete ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(false); - pTester.assert(2, deletedRows); - }], - - ["delete should delete NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - var deletedRows = builder.deleteData(true); - pTester.assert(0, deletedRows); - }], - - ["update should update the data and use the from and condition from the builder", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update the data from the provided table and use the condition from the builder. It ignores .from if a table is given.", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID = 'TEST-7'"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - - var builder = new SqlBuilder() - .from("PERSON") - .where("SQL_LIB_TEST_TABLE.TESTID", "TEST-7"); - - builder.updateData(false, "SQL_LIB_TEST_TABLE", ["FIRSTNAME"], null, ["Fritz"]); - - var actual = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - - pTester.assert("Fritz", actual); - }], - - ["update should update ALL data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is false", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')"); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(false, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Fritz", actual1, "TEST-7 should have Firstname Fritz"); - pTester.assert("Fritz", actual2, "TEST-8 should have Firstname Fritz"); - }], - - ["update should update NO data from a table if the builder has no condition and pExecuteOnlyIfConditionExists is true", function(pTester) - { - db.deleteData("SQL_LIB_TEST_TABLE", "TESTID in ('TEST-7', 'TEST-8')") - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-7", "Ludwig", "Fischer"]); - db.insertData("SQL_LIB_TEST_TABLE", ["TESTID", "FIRSTNAME", "LASTNAME"], null, ["TEST-8", "Franz", "Fischer"]); - - var builder = new SqlBuilder() - .from("SQL_LIB_TEST_TABLE") - - builder.updateData(true, undefined, ["FIRSTNAME"], null, ["Fritz"]); - - var actual1 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-7'") - var actual2 = db.cell("select FIRSTNAME from SQL_LIB_TEST_TABLE where SQL_LIB_TEST_TABLE.TESTID = 'TEST-8'") - - pTester.assert("Ludwig", actual1, "TEST-7 should have Firstname Ludwig"); - pTester.assert("Franz", actual2, "TEST-8 should have Firstname Franz"); - }] -], function preAll() -{ - // remove data which may exist if previous test-run failed and postAll was not executed - cleanWrapperTests() - - // add table for save testing of deletes - db.runStatement("create table SQL_LIB_TEST_TABLE (TESTID varchar(36), FIRSTNAME varchar(100), LASTNAME varchar(100))"); - - // add test persons - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-5", "Franz", "Müller", "testuser", vars.get("$sys.date")]) - db.insertData("PERSON", ["PERSONID", "FIRSTNAME", "LASTNAME", "USER_NEW", "DATE_NEW"], null, ["TEST-6", "Marco", "Polo", "testuser", vars.get("$sys.date")]) -}, undefined, undefined, function postAll() -{ - cleanWrapperTests() -}) - -var mandatoryErrorTests = new TestSuite([ -// and - ["and without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["and with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["and with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["and with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - -// or - ["or without parameter should error", function(pTester) - { - new SqlBuilder().where().or(); - }, SqlBuilder._ERROR_NO_PARAMETER_PROVIDED()], - - ["or with null as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", null); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with undefined as value should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", undefined); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with a jdito-var containing null should error", function(pTester) - { - vars.set("$global.TestingVarNull", null); - - new SqlBuilder().where().or("PERSON.FIRSTNAME", "$global.TestingVarNull"); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY_JDITO_VAR()], - - ["or with an empty sql-builder as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", new SqlBuilder()); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], - - ["or with an empty prepared statement as subquery should error", function(pTester) - { - new SqlBuilder().where().or("PERSON.FIRSTNAME", ["", []]); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()], -]); - -var inStatementTests = new TestSuite([ - ["simple and in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], SqlBuilder.IN()) // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - .or("PERSON.LASTNAME", ["Peter", "Mayer"], SqlBuilder.IN()); - - pTester.assert(" ( PERSON.LASTNAME in (?, ?) ) or ( PERSON.LASTNAME in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(4, actual._where.preparedValues.length, "number of params"); - }], - - ["simple and not in", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.LASTNAME", ["Franz", "Fritz"], "# not in ?"); // Note: you can use SqlBuilder.IN(), SqlBuilder.NOT_IN(), "# in ?", etc. as 3rd parameter - - pTester.assert(" ( PERSON.LASTNAME not in (?, ?) ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(2, actual._where.preparedValues.length, "number of params"); - }], - - ["in with subquery", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", new SqlBuilder() - .select("PERSON.FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Fritz") - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["in with prepared statement-array", function(pTester) - { - var actual = new SqlBuilder() - .where("PERSON.FIRSTNAME", ["select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ?", [["Fritz", SQLTYPES.VARCHAR]]] - , "# in ?"); // Note: you can use SqlBuilder.IN() instead of "# in ?" - - pTester.assert("PERSON.FIRSTNAME in ( select PERSON.FIRSTNAME from PERSON where PERSON.LASTNAME = ? ) ", actual._where._sqlStorage, "prepared sql"); - pTester.assert(1, actual._where.preparedValues.length, "number of params"); - }], - - ["andIfSet should ignore empty array", function(pTester) - { - var actual = new SqlBuilder() - .whereIfSet("PERSON.LASTNAME", []); - - pTester.assert("", actual._where._sqlStorage, "prepared sql should be empty"); - pTester.assert(0, actual._where.preparedValues.length, "number of params should be 0"); - }], - - ["and should error on an empty array", function(pTester) - { - new SqlBuilder() - .where("PERSON.LASTNAME", []); - }, SqlBuilder._ERROR_VALUE_IS_MANDATORY()] -]); - -var testConstantFunctions = new TestSuite([ - ["SqlBuilder.IN()", function(pTester) - { - pTester.assert("# in ?", SqlBuilder.IN()); - }], - - ["SqlBuilder.NOT_IN()", function(pTester) - { - pTester.assert("# not in ?", SqlBuilder.NOT_IN()); - }], - - ["SqlBuilder.EXISTS()", function(pTester) - { - pTester.assert("exists ?", SqlBuilder.EXISTS()); - }] -]); - -var selectTests = new TestSuite([ - ["a sql-builder in a fields-array is translated to sql correctly", function(pTester) - { - var countSubQuery = newSelect("count(*)") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", "myType") - .and("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID"); - - var actual = new SqlBuilder() - .select(["AB_ATTRIBUTEID", "AB_ATTRIBUTEUSAGEID", countSubQuery]) - .from("AB_ATTRIBUTE") - - pTester.assert("select AB_ATTRIBUTEID, AB_ATTRIBUTEUSAGEID, (select count(*) from AB_ATTRIBUTEUSAGE where AB_ATTRIBUTEUSAGE.OBJECT_TYPE = ? and AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID = AB_ATTRIBUTE.AB_ATTRIBUTEID)", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["a sql-builder in from is used as subselect", function(pTester) - { - var subQuery = newSelect("FIRSTNAME") - .from("PERSON") - .where("PERSON.LASTNAME", "Meier") - - var actual = new SqlBuilder() - .select("*") - .from(subQuery) - - pTester.assert("from (select FIRSTNAME from PERSON where PERSON.LASTNAME = ?)", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }] -]); - -var joinTests = new TestSuite([ - ["SqlBuilder as on-condition should only add the conditon of the builder", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("ORGANISATION", subQuery) - - pTester.assert("join ORGANISATION on ORGANISATION.NAME = ?", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["SqlBuilder as table for join is added as subselect", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join(subQuery, "orgname.NAME = TABLE2.NAME", "orgname") - - pTester.assert("join (select NAME from ORGANISATION where ORGANISATION.NAME = ?) orgname on orgname.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params"); - }], - - ["just use a string also containing a condition as join without additional condition", function(pTester) - { - var actual = new SqlBuilder() - .select("*") - .from("PERSON") - .join("TABLE1 on TABLE1.NAME = TABLE2.NAME") - - pTester.assert("join TABLE1 on TABLE1.NAME = TABLE2.NAME", actual._joins[0]._sqlStorage, "prepared select-sql"); - pTester.assert(0, actual._joins[0].preparedValues.length, "number of params"); - }] -]); - -var subqueryAsFieldTests = new TestSuite([ - ["Test if a Subselect as field works if pValue is provided. This should be added as subselect.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - var actual = new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR) - .and("PERSON.FIRSTNAME", "val3"); - - - pTester.assert(" ( ( select NAME from ORGANISATION where ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and PERSON.FIRSTNAME = ? ) = ? ) and PERSON.FIRSTNAME = ?", actual._where._sqlStorage, "prepared select-sql"); - pTester.assert(3, actual._where.preparedValues.length, "number of params"); - pTester.assert("val1", actual._where.preparedValues[0][0], "param 1 is correct value"); - pTester.assert("val2", actual._where.preparedValues[1][0], "param 2 is correct value"); - pTester.assert("val3", actual._where.preparedValues[2][0], "param 3 is correct value"); - }], - - ["Test if a Subselect as field should error if no SQLTYPE is provided.", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - new SqlBuilder().where(subQuery, "val2", "# = ?"); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NO_FIELD_TYPE()], - - ["Test if a Subselect as field should error if it is not a full select.", function(pTester) - { - var subQuery = newSelect("NAME") - .where("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") - .and("PERSON.FIRSTNAME", "val1") // test if the value is added at the correct place - - new SqlBuilder().where(subQuery, "val2", "# = ?", SQLTYPES.VARCHAR); - }, SqlBuilder._ERROR_SUBSELECT_AS_FIELD_NOT_COMPLETE()] -]); - -var conditionFormatTests = new TestSuite([ - ["pCondition should not fail if # an ? exist in correct order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# = ?") - .and("PERSON.FIRSTNAME", "val1", "asdf # fdsa=asdf ?fdas") - }], - - ["pCondition should not fail if # an ? exist in correct order and there are additional, escaped # and ?", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "\\? # \\#= ?"); - }], - - ["pCondition should not fail if only ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "?") - }], - - ["pCondition should fail if more than one ? exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? test ?") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if more than one # exists", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "# test #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()], - - ["pCondition should fail if # and ? are in wrong order", function(pTester) - { - new SqlBuilder().where("PERSON.FIRSTNAME", "val1", "? = #") - }, SqlBuilder._ERROR_CONDITION_WRONG_FORMAT()] -]); - -var subqueryAliasTests = new TestSuite([ - ["subselectAlias should be added for subquery in .select", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .select([subQuery, "FIRSTNAME"]) - .from("PERSON") - - pTester.assert("select (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias, FIRSTNAME", actual._select._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._select.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery) - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) testAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be overruled by the param in in .from", function(pTester) - { - var subQuery = newSelect("NAME") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from(subQuery, "overwriteAlias") - - pTester.assert("from (select NAME from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias", actual._from._sqlStorage, "prepared select-sql"); - pTester.assert(1, actual._from.preparedValues.length, "number of params"); - }], - - ["subselectAlias should be added for subquery in .join", function(pTester) - { - var subQuery = newSelect("NAME, ORGANISATIONID") - .from("ORGANISATION") - .where("ORGANISATION.NAME", "Adito") - .subselectAlias("testAlias") - - var actual = new SqlBuilder() - .from("CONTACT") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID") - .join(subQuery, "testAlias.ORGANISATIONID = ORGANISATION_ID", "overwriteAlias") - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) testAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[0]._sqlStorage, "prepared select-sql join 1"); - pTester.assert(1, actual._joins[0].preparedValues.length, "number of params join 1"); - - pTester.assert("join (select NAME, ORGANISATIONID from ORGANISATION where ORGANISATION.NAME = ?) overwriteAlias on testAlias.ORGANISATIONID = ORGANISATION_ID", actual._joins[1]._sqlStorage, "prepared select-sql join 2"); - pTester.assert(1, actual._joins[1].preparedValues.length, "number of params join 2"); - }] -]) - -var tester = new Tester("Test SqlBuilder"); -tester.test(newSelectTests); -tester.test(validAndUsageTests); -tester.test(validOrUsageTests); -tester.test(combinedAndOrTests); -tester.test(ifSetTests); -tester.test(dbWrapperTests); -tester.test(mandatoryErrorTests); -tester.test(inStatementTests); -tester.test(testConstantFunctions); -tester.test(selectTests); -tester.test(joinTests); -tester.test(subqueryAsFieldTests); -tester.test(conditionFormatTests); -tester.test(subqueryAliasTests); - -logging.log("-------------------------"); -tester.printResults(); diff --git a/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..8636a3707b101a2e7e0b22e10e54c6d596508b53 --- /dev/null +++ b/process/SqlMaskingUtils_test/SqlMaskingUtils_test.aod @@ -0,0 +1,12 @@ +<?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>SqlMaskingUtils_test</name> + <title>[TEST] Sql_lib - SqlMaskingUtils</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/SqlMaskingUtils_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/SqlMaskingUtils_test/process.js b/process/SqlMaskingUtils_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..533a1b32e9411f7e4af25222bfb28a6758b5edf3 --- /dev/null +++ b/process/SqlMaskingUtils_test/process.js @@ -0,0 +1,158 @@ +import("system.result"); +import("system.db"); +import("Sql_lib"); +import("UnitTest_lib"); + +function _createDummyMaskingUtil(pDbType) +{ + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + createdObject.dbType = pDbType; + return createdObject; +} + +var constructorTest = new TestSuite("SqlMaskingUtils.constructor", [ + new Test("constructor sets correct specified alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct default alias", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var createdObject = new SqlMaskingUtils(); + pTester.expectThat(createdObject.alias).equals(currentAlias).assert(); + } + ), + new Test("constructor sets correct alias type", + function(pTester) + { + var currentAlias = db.getCurrentAlias(); + if (!currentAlias) + throw new Error("alias required for test is not set"); + var currentAliasType = db.getDatabaseType(currentAlias); + if (!currentAliasType) + throw new Error("alias type required for test is not set"); + var createdObject = new SqlMaskingUtils(currentAlias); + pTester.expectThat(createdObject.dbType).equals(currentAliasType).assert(); + } + ), + new Test("overwrite constructors dbType with derby", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_DERBY10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_DERBY10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mariaDB", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MARIADB10); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MARIADB10).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with mySql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_MYSQL4); + pTester.expectThat(res.dbType).equals(db.DBTYPE_MYSQL4).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-cluster", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_CLUSTER); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_CLUSTER).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-oci", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_OCI); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_OCI).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with oracle-thin", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + pTester.expectThat(res.dbType).equals(db.DBTYPE_ORACLE10_THIN).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with postgresql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_POSTGRESQL8); + pTester.expectThat(res.dbType).equals(db.DBTYPE_POSTGRESQL8).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ), + new Test("overwrite constructors dbType with ms sql", + function(pTester) + { + var res = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + pTester.expectThat(res.dbType).equals(db.DBTYPE_SQLSERVER2000).assert(); + pTester.expectThat(res.alias).isNull().assert(); + } + ) + ]); + + +var getConcatSymbolTest = new TestSuite("SqlMaskingUtils.getConcatSymbol", [ + new Test("getConcatSymbol returns a non empty string", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res).not().isNull().assert(); + pTester.expectThat(res).not().isUndefined().assert(); + pTester.expectThat(res).isString().assert(); + pTester.expectThat(res.length).isInteger().assert(); + pTester.expectThat(res.length).isGreater(0).assert(); + } + ), + new Test("+ for MS SQL", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_SQLSERVER2000); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("+").assert(); + } + ), + new Test("|| for Oracle", + function(pTester) + { + var maskingHelper = _createDummyMaskingUtil(db.DBTYPE_ORACLE10_THIN); + var res = maskingHelper.getConcatSymbol(); + pTester.expectThat(res.trim()).equals("||").assert(); + } + ) + ]); + +var tester = new Tester("Test SqlMaskingUtils"); +tester.initCoverage(SqlMaskingUtils); +tester.test(constructorTest); +tester.test(getConcatSymbolTest); +//TODO: add full test coverage +tester.summary(); + +result.object(tester.getResults()); \ No newline at end of file diff --git a/process/Sql_lib/documentation.adoc b/process/Sql_lib/documentation.adoc index 8b903c2155e9d54f160b06ef6fa80a586a8335e6..417d8aa237bf0311576e048625e9b055ff1e2db8 100644 --- a/process/Sql_lib/documentation.adoc +++ b/process/Sql_lib/documentation.adoc @@ -17,10 +17,10 @@ include::_default_attributes_EN.adoc[] This document describes the functionality and the usage of the SqlBuilder, which is included in the library *Sql_lib* of the ADITO xRM project (see "Projects" window, under process > libraries). The documentation may not contain all features of the SqlBuilder. It is supplemental to the documentation you find in the code itself: A usage will often be possible in an intuitive way, so just try coding using code completion and JSDoc, where all parameters are documented. -You may also take a look at the library *SqlLib_tests* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. +You may also take a look at the library *Sql_test* (also under process > libraries), as it contains many possible ways to use the SqlBuilder. [NOTE] -The tests included in the library SqlLib_tests use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. +The tests included in the library Sql_test use the UnitTest_lib for unit testing. You can use this functionality also in other contexts, according to your requirements. == Benefits diff --git a/process/Sql_lib/process.js b/process/Sql_lib/process.js index a8014755360de174c6529d7d096c9f90821e15e1..49bcb6bfc966352c346f399240c584b3f1ef2325 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -801,6 +801,26 @@ function SqlBuilder (pAlias) this._where = {}; this._initWhere(); + + SqlBuilder.defineCanBuildSql(this); +} + +/** + * @return {Symbol} + */ +SqlBuilder.getCanBuildSqlSymbol = function () +{ + return Symbol["for"]("canBuildSql"); +} + +SqlBuilder.defineCanBuildSql = function (pObject) +{ + pObject[SqlBuilder.getCanBuildSqlSymbol()] = true; +} + +SqlBuilder.checkCanBuildSql = function (pObject) +{ + return pObject[SqlBuilder.getCanBuildSqlSymbol()]; } /** @@ -1097,11 +1117,11 @@ SqlBuilder.prototype.join = function(pTable, pCondition, pTableAlias, pPrefix, p if (pCondition) { if (pCondition instanceof SqlBuilder) - pCondition = [pCondition._where._sqlStorage, pCondition._where.preparedValues] + pCondition = [pCondition._where.sqlStorage, pCondition._where.preparedValues] var conditionPart = SqlBuilder._getStatement(pCondition); - joinPart._sqlStorage += " " + conditionPart._sqlStorage; + joinPart.sqlStorage += " " + conditionPart.sqlStorage; joinPart.preparedValues = joinPart.preparedValues.concat(conditionPart.preparedValues); } @@ -1200,7 +1220,7 @@ SqlBuilder.prototype.where = function(pFieldOrCond, pValue, pCondition, pFieldTy copiedCondition._where.preparedValues = pFieldOrCond.preparedValues; copiedCondition._where._lastWasOr = pFieldOrCond._lastWasOr; - copiedCondition._where._sqlStorage = pFieldOrCond._sqlStorage; + copiedCondition._where.sqlStorage = pFieldOrCond.sqlStorage; pFieldOrCond = copiedCondition; @@ -1351,7 +1371,7 @@ SqlBuilder.prototype._whereCondition = function(pCondition, pMandatory, pAddPrep if (sql instanceof SqlBuilder) { // add only brackets if needed - var sqlString = sql._where._sqlStorage; + var sqlString = sql._where.sqlStorage; var condString = sqlString; @@ -1509,7 +1529,7 @@ SqlBuilder.prototype._addWhere = function(pFieldOrCond, pValue, pMandatory, pCon var subSqlPrepared = pFieldOrCond.build(); - tmpCond._where._sqlStorage = SqlUtils.replaceConditionTemplate(tmpCond._where._sqlStorage, 'SQL_LIB_DUMMY_TABLE.SQL_LIB_DUMMY_COLUMN', "( " + subSqlPrepared[0] + " )"); + tmpCond._where.sqlStorage = SqlUtils.replaceConditionTemplate(tmpCond._where.sqlStorage, 'SQL_LIB_DUMMY_TABLE.SQL_LIB_DUMMY_COLUMN', "( " + subSqlPrepared[0] + " )"); tmpCond._where.preparedValues = subSqlPrepared[1].concat(tmpCond._where.preparedValues) this._whereCondition(tmpCond, pMandatory, pAddPreparedConditionCallback, true) @@ -1629,9 +1649,9 @@ SqlBuilder.prototype._and = function(pFieldOrCond, pValue, pMandatory, pConditio if (pPreparedCondition.length == 2 && typeof pPreparedCondition[0] == "string" && pPreparedCondition[0] != "" && Array.isArray(pPreparedCondition[1])) { if (that.hasCondition()) - that._where._sqlStorage += " and "; + that._where.sqlStorage += " and "; - that._where._sqlStorage += pPreparedCondition[0]; + that._where.sqlStorage += pPreparedCondition[0]; that._where.preparedValues = that._where.preparedValues.concat(pPreparedCondition[1]); } }); @@ -1657,7 +1677,7 @@ SqlBuilder.prototype._or = function(pFieldOrCond, pValue, pMandatory, pCondition { if (that._where._previouslyOnlyOr) { - that._where._sqlStorage = that._where._sqlStorage + " or " + pPreparedCondition[0]; + that._where.sqlStorage = that._where.sqlStorage + " or " + pPreparedCondition[0]; that._where._lastWasOr = true; } else if (that.hasCondition()) @@ -1668,9 +1688,9 @@ SqlBuilder.prototype._or = function(pFieldOrCond, pValue, pMandatory, pCondition cond = "(" + cond + ")"; if (that._where._lastWasOr) - that._where._sqlStorage = that._where._sqlStorage + " or " + cond; + that._where.sqlStorage = that._where.sqlStorage + " or " + cond; else - that._where._sqlStorage = "(" + that._where._sqlStorage + ") or " + cond; + that._where.sqlStorage = "(" + that._where.sqlStorage + ") or " + cond; that._where._lastWasOr = true; } @@ -1679,7 +1699,7 @@ SqlBuilder.prototype._or = function(pFieldOrCond, pValue, pMandatory, pCondition if (!that.hasCondition()) that._where._previouslyOnlyOr = true; - that._where._sqlStorage = pPreparedCondition[0]; + that._where.sqlStorage = pPreparedCondition[0]; } that._where.preparedValues = that._where.preparedValues.concat(pPreparedCondition[1]); } @@ -2170,7 +2190,7 @@ SqlBuilder.prototype.having = function(pCondition) * @return {Boolean} true if conditions have been added, false when not */ SqlBuilder.prototype.hasCondition = function() { - if (this._where._sqlStorage) + if (this._where.sqlStorage) return true; return false; } @@ -2217,7 +2237,7 @@ SqlBuilder.prototype.clearWhere = function() SqlBuilder.prototype._initWhere = function () { //TODO: maybe put conditions in an object/array for better internal object structure - this._where._sqlStorage = ""; + this._where.sqlStorage = ""; this._where.preparedValues = []; this._where._lastWasOr = false; // save, if the last condition was an OR. For better bracket-placement this._where._previouslyOnlyOr = false; // also for better bracket-placement @@ -2329,24 +2349,22 @@ SqlBuilder._getStatement = function (pElement, pPrefix, pPostfix, pAutoJoin, pUs return { preparedValues: preparedValues, - _sqlStorage: pElement.toString() + sqlStorage: pElement.toString() }; function _getElement (element) { var isSubQuery = false; var subselectAlias = ""; - if (element instanceof SqlBuilder) + if (SqlBuilder.checkCanBuildSql(element)) { - if (element.isFullSelect()) + if (element instanceof SqlBuilder && element.isFullSelect()) { isSubQuery = true; if (pUseSubselectAlias && element._subselectAlias) subselectAlias = " " + element._subselectAlias; } - - element = element.build(); } preparedValues = preparedValues.concat(element[1]); @@ -2363,7 +2381,7 @@ SqlBuilder._getStatement = function (pElement, pPrefix, pPostfix, pAutoJoin, pUs */ SqlBuilder.prototype.buildCondition = function() { - return [this._where._sqlStorage, this._where.preparedValues]; + return [this._where.sqlStorage, this._where.preparedValues]; } /** @@ -2378,17 +2396,17 @@ SqlBuilder.prototype.build = function(pDefaultConditionIfNone) if (this.isFullSelect()) { - if (this._where._sqlStorage) + if (this._where.sqlStorage) wherePrefix = "where "; } - var whereSql = this._where._sqlStorage; + var whereSql = this._where.sqlStorage; if (!this.hasCondition() && pDefaultConditionIfNone) whereSql = wherePrefix + pDefaultConditionIfNone; var whereObj = { - _sqlStorage : wherePrefix + whereSql, + sqlStorage : wherePrefix + whereSql, preparedValues : this._where.preparedValues } @@ -2409,9 +2427,9 @@ SqlBuilder.prototype.build = function(pDefaultConditionIfNone) let part = allParts[i]; if (part) { - if (sqlStr && part._sqlStorage) + if (sqlStr && part.sqlStorage) sqlStr += " "; - sqlStr += part._sqlStorage; + sqlStr += part.sqlStorage; if (part.preparedValues.length) preparedVals = preparedVals.concat(part.preparedValues); } @@ -3057,15 +3075,167 @@ SqlBuilder.prototype.translate = function(pAlias) return SqlUtils.translateStatementWithQuotes(this.build(), pAlias); } +/** + * Creates an object for building a case-when statement. + * + * @param {String|String[]|SqlBuilder|PreparedSqlArray} [pFieldOrCond] If this is the only parameter, it is used as Subselect <br/> + * else it is used as Field. <br/> + * Please see .where() for more information and examples. + * @param {String|SqlBuilder|PreparedSqlArray|Array|OtherTypes} [pValue] This is the value whitch is used for the condition.<br/> + * Basically it can be nearly everything you need.<br/> + * Please see .where() for more information and examples. + * @param {String} [pCondition="# = ?"] This is the condition which should be used.<br/> + * # will be replaced by the field (pFieldOrCond) If pFieldOrCond is null, you can ommit #<br/> + * ? will be replaced by pValue<br/> + * <strong>IMPORTANT: the # has to be before the ?</strong><br/> + * Please see .where() for more information and examples. + * @param {SQLTYPES|Numeric} [pFieldType=AutomaticallyLoadedType] You can specify which datatype should be used for the prepared statement<br/> + * In most cases you don't need this.<br/> + * Please see .where() for more information and examples. + * + * @return {SqlBuilder._CaseWhen} + */ +SqlBuilder.caseWhen = function (pFieldOrCond, pValue, pCondition, pFieldType) +{ + return new SqlBuilder._CaseStatement().when(pFieldOrCond, pValue, pCondition, pFieldType); +} + +/** + * Represents a case-when statement + */ +SqlBuilder._CaseStatement = function () +{ + this._whenCondition = null; + this._whenThens = []; + this._elseValue = null; + this._afterWhenMask = new SqlBuilder._CaseWhen(this); + SqlBuilder.defineCanBuildSql(this); +} + +/** + * @param {String|String[]|SqlBuilder|PreparedSqlArray} [pFieldOrCond] If this is the only parameter, it is used as Subselect <br/> + * else it is used as Field. <br/> + * Please see .where() for more information and examples. + * @param {String|SqlBuilder|PreparedSqlArray|Array|OtherTypes} [pValue] This is the value whitch is used for the condition.<br/> + * Basically it can be nearly everything you need.<br/> + * Please see .where() for more information and examples. + * @param {String} [pCondition="# = ?"] This is the condition which should be used.<br/> + * # will be replaced by the field (pFieldOrCond) If pFieldOrCond is null, you can ommit #<br/> + * ? will be replaced by pValue<br/> + * <strong>IMPORTANT: the # has to be before the ?</strong><br/> + * Please see .where() for more information and examples. + * @param {SQLTYPES|Numeric} [pFieldType=AutomaticallyLoadedType] You can specify which datatype should be used for the prepared statement<br/> + * In most cases you don't need this.<br/> + * Please see .where() for more information and examples. + * + * @return {SqlBuilder._CaseWhen} + */ +SqlBuilder._CaseStatement.prototype.when = function (pFieldOrCond, pValue, pCondition, pFieldType) +{ + this._whenCondition = newWhere(pFieldOrCond, pValue, pCondition, pFieldType); + return this._afterWhenMask; +} + +/** + * Sets the expression used for the else-part + * + * @param {String|SqlBuilder} pValue else-value + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder._CaseStatement.prototype.elseValue = function (pValue) +{ + this._elseValue = pValue; + return this; +} + +/** + * Sets the value used for the else-part, but wraps the value in '' + * + * @param {String} pValue else-value + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder._CaseStatement.prototype.elseString = function (pValue) +{ + return this.elseValue("'" + pValue + "'"); +} + +/** + * @return {String} the case-when expression + */ +SqlBuilder._CaseStatement.prototype.toString = function (pAlias) +{ + return db.translateStatement(this.build(), pAlias || db.getCurrentAlias()); +} + +SqlBuilder._CaseStatement.prototype.build = function (pParameters) +{ + var caseStatement = ["case"]; + var preparedValues = []; + this._whenThens.forEach(function (whenThen) + { + var when = SqlBuilder._getStatement(whenThen.condition, "when"); + var then = SqlBuilder._getStatement(whenThen.thenValue, "then"); + caseStatement.push(when.sqlStorage); + caseStatement.push(then.sqlStorage); + preparedValues = preparedValues.concat(when.preparedValues, then.preparedValues); + }); + if (this._elseValue) + { + let elseStatement = SqlBuilder._getStatement(this._elseValue, "else"); + caseStatement.push(elseStatement.sqlStorage); + preparedValues = preparedValues.concat(elseStatement.preparedValues); + } + caseStatement.push("end"); + + return [ + caseStatement.join(" "), + preparedValues + ]; +} + +/** + * Object providing the then-methods for the case-when expression. It can be only be accessed after calling .when to ensure a 'then' + * can only be added after a 'when'. + */ +SqlBuilder._CaseWhen = function (pCaseStatement) +{ + this._caseStatement = pCaseStatement; +} + +/** + * Sets the expression for the then + * + * @param {String|SqlBuilder} pValue then-value + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder._CaseWhen.prototype.then = function (pValue) +{ + var condition = this._caseStatement._whenCondition; + this._caseStatement._whenCondition = null; + this._caseStatement._whenThens.push({condition: condition, thenValue: pValue}); + return this._caseStatement; +} + +/** + * Sets the value for the then, but wraps the value in '' + * + * @param {String} pValue then-value + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder._CaseWhen.prototype.thenString = function (pValue) +{ + return this.then("'" + pValue + "'"); +} /** *provides functions for masking sql functions * - * @param {String} [alias=currentAlias] database alias, you can specify null if you have no alias available and you can manually set the dbType property + * @param {String} [pAlias=currentAlias] database alias, you can specify null if you have no alias available and you can manually set the dbType property * * @class */ -function SqlMaskingUtils(alias) { +function SqlMaskingUtils (pAlias) +{ this.alias = null; Object.defineProperty(this, "alias", { set: function(v){ @@ -3089,22 +3259,22 @@ function SqlMaskingUtils(alias) { } }); - if (alias === undefined) + if (pAlias === undefined) this.alias = vars.getString("$sys.dbalias"); else - this.alias = alias; + this.alias = pAlias; } /** * returns the concat symbol depending on database type * @return {String} Concat Symbol */ -SqlMaskingUtils.prototype.getConcatSymbol = function() { - var concatSymbol; - switch(Number(this.dbType)) { +SqlMaskingUtils.prototype.getConcatSymbol = function() +{ + switch(this.dbType) + { case db.DBTYPE_SQLSERVER2000: - concatSymbol = " + "; - break; + return " + "; case db.DBTYPE_MARIADB10: case db.DBTYPE_MYSQL4: case db.DBTYPE_ORACLE10_CLUSTER: @@ -3113,10 +3283,8 @@ SqlMaskingUtils.prototype.getConcatSymbol = function() { case db.DBTYPE_POSTGRESQL8: case db.DBTYPE_DERBY10: default: - concatSymbol = " || "; - break; + return " || "; } - return concatSymbol; } /** @@ -3131,44 +3299,37 @@ SqlMaskingUtils.prototype.getConcatSymbol = function() { * @return {String} <p> * Returns the trimmed string.<br> */ -SqlMaskingUtils.prototype.trim = function(pField) { - var dbType, resultStr; - dbType = this.dbType; - switch(dbType) { - case db.DBTYPE_SQLSERVER2000: - resultStr = "ltrim(rtrim(" + pField + "))"; - break; - default: - resultStr = "trim(" + pField + ")" - break; - } - return resultStr; +SqlMaskingUtils.prototype.trim = function (pField) +{ + if (this.dbType == db.DBTYPE_SQLSERVER2000) + return "ltrim(rtrim(" + pField + "))"; + return "trim(" + pField + ")"; } /** * returns the max-value sql expressions depending on the database behind the given alias * note that this function does not verifiy if the field (and type) usage is valid at all * -* @param {String} field expression +* @param {String} pField expression * * @return {String} sql-part that can be used in a select */ -SqlMaskingUtils.prototype.max = function(field) +SqlMaskingUtils.prototype.max = function (pField) { - return "max(" + field + ")"; + return "max(" + pField + ")"; } /** * returns the min-value sql expressions depending on the database behind the given alias * note that this function does not verifiy if the field (and type) usage is valid at all * -* @param {String} field expression +* @param {String} pField expression * * @return {String} sql-part that can be used in a select */ -SqlMaskingUtils.prototype.min = function(field) +SqlMaskingUtils.prototype.min = function (pField) { - return "min(" + field + ")"; + return "min(" + pField + ")"; } /** @@ -3178,25 +3339,25 @@ SqlMaskingUtils.prototype.min = function(field) * Problems: * Derby has problems with casting to CHAR({> 254}) https://db.apache.org/derby/docs/10.14/ref/rrefsqlj13733.html * - * @param {String} field name of the database field that shall be castet - * @param {String} [targetDatatype] a SQLTYPES-value of the following: SQLTYPES.CHAR, SQLTYPES.VARCHAR, SQLTYPES.INTEGER, + * @param {String} pField name of the database field that shall be castet + * @param {String} [pTargetDatatype] a SQLTYPES-value of the following: SQLTYPES.CHAR, SQLTYPES.VARCHAR, SQLTYPES.INTEGER, * SQLTYPES.DECIMAL, SQLTYPES.DATE - * @param {int|int[]} targetLength specifies the length of the target data type; + * @param {int|int[]} pTargetLength specifies the length of the target data type; * <br/>- char/varchar: length * <br/>- decimal: [length, decimals] * * @return {String} sql part to be included in sql-statements */ -SqlMaskingUtils.prototype.cast = function(field, targetDatatype, targetLength) { +SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLength) +{ /* Some informations if you want to add supported databaseTypes or dataTypes: * You should consider using the _mapDefaults function-expression (details in the functions doc) * However you shouldn't use the function in a "default"-Block of a switch-case because of the following behaviour: * If a datatype is not supported you just have to NOT specify "sqlDataType" (leave it "undefined") -> an error is then raised * Therefore you should explicitly define which Data-type is supported and which is not */ - var dbType, functionName, sqlPart, sqlDataType, _mapDefaults; - dbType = this.dbType; - functionName = "cast";//overwrite this in the "switch (dbType)" if needed with your DBMS + var sqlDataType; + var functionName = "cast";//overwrite this in the "switch (dbType)" if needed with your DBMS /** * handles default-scenarios for mapping input-targetDatatype to a string for a sql-statement @@ -3204,39 +3365,37 @@ SqlMaskingUtils.prototype.cast = function(field, targetDatatype, targetLength) { * @param {Number} dataType input as a value of "SQLTYPES." that will be mapped to a string * @return {String} the mapped dataType for using in a sql-statement */ - _mapDefaults = function(dataType) { - var res; - switch(dataType) { + var _mapDefaults = function (dataType) + { + switch (dataType) + { case SQLTYPES.CHAR: - res = "char"; - break; + return "char"; case SQLTYPES.VARCHAR: - res = "char"; - break; + return "char"; case SQLTYPES.INTEGER: - res = "int"; - break; + return "int"; case SQLTYPES.DECIMAL: - res = "decimal"; - break; + return "decimal"; case SQLTYPES.DATE: - res = "date"; - break; + return "date"; } - return res; + return null; } - switch (dbType) { + switch (this.dbType) + { case db.DBTYPE_DERBY10: - switch(targetDatatype) { + switch(pTargetDatatype) + { case SQLTYPES.VARCHAR: // Because of a Derby bug, you can't cast INTEGER into VARCHAR // Therefor first cast to char then to varchar // https://issues.apache.org/jira/browse/DERBY-2072 // This cast to char is only done if the length is not bigger than 254, // otherwise the additional cast would result in a different error - if (targetLength <= 254) - field = "rtrim(" + this.cast(field, SQLTYPES.CHAR, targetLength) + ")"; + if (pTargetLength <= 254) + pField = "rtrim(" + this.cast(pField, SQLTYPES.CHAR, pTargetLength) + ")"; sqlDataType = "varchar"; break; case SQLTYPES.CHAR: @@ -3245,50 +3404,51 @@ SqlMaskingUtils.prototype.cast = function(field, targetDatatype, targetLength) { case SQLTYPES.DECIMAL: case SQLTYPES.INTEGER: case SQLTYPES.DATE: - sqlDataType = _mapDefaults(targetDatatype); + sqlDataType = _mapDefaults(pTargetDatatype); break; } break; case db.DBTYPE_MARIADB10: case db.DBTYPE_MYSQL4: - switch(targetDatatype) { + switch(pTargetDatatype) + { case SQLTYPES.VARCHAR: case SQLTYPES.CHAR: case SQLTYPES.INTEGER: case SQLTYPES.DECIMAL: case SQLTYPES.DATE: - sqlDataType = _mapDefaults(targetDatatype); + sqlDataType = _mapDefaults(pTargetDatatype); break; } break; case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - switch(targetDatatype) + switch(pTargetDatatype) { case SQLTYPES.VARCHAR: - datatype = "varchar2"; + sqlDataType = "varchar2"; break; case SQLTYPES.INTEGER: - datatype = "number"; - targetLength = "10" + sqlDataType = "number"; + pTargetLength = "10" break; case SQLTYPES.CHAR: case SQLTYPES.DECIMAL: case SQLTYPES.DATE: - sqlDataType = _mapDefaults(targetDatatype); + sqlDataType = _mapDefaults(pTargetDatatype); break; } break; case db.DBTYPE_POSTGRESQL8: - switch(targetDatatype) + switch(pTargetDatatype) { case SQLTYPES.DATE: case SQLTYPES.DECIMAL: case SQLTYPES.INTEGER: case SQLTYPES.CHAR: case SQLTYPES.VARCHAR: - sqlDataType = _mapDefaults(targetDatatype); + sqlDataType = _mapDefaults(pTargetDatatype); break; } break; @@ -3298,64 +3458,60 @@ SqlMaskingUtils.prototype.cast = function(field, targetDatatype, targetLength) { case SQLTYPES.INTEGER: case SQLTYPES.CHAR: case SQLTYPES.VARCHAR: - sqlDataType = _mapDefaults(targetDatatype); + sqlDataType = _mapDefaults(pTargetDatatype); break; //TODO: firebird support? } - if (sqlDataType == undefined) { + if (sqlDataType == undefined) throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.cast._mapDefaults"])); - } - if(targetLength == undefined) - targetLength = ""; - else if(targetLength != "") + if (pTargetLength == undefined) + pTargetLength = ""; + else if (pTargetLength != "") { - if(Array.isArray(targetLength)) - targetLength = "(" + targetLength.join(", ") + ")"; + if (Array.isArray(pTargetLength)) + pTargetLength = "(" + pTargetLength.join(", ") + ")"; else - targetLength = "(" + targetLength + ")"; + pTargetLength = "(" + pTargetLength + ")"; } - sqlPart = functionName + "(" + field + " as " + sqlDataType + targetLength + ")"; - return sqlPart; + return functionName + "(" + pField + " as " + sqlDataType + pTargetLength + ")"; } /** * masks the cast function for lob datatypes(clob, blob) into varchar or similar * - * @param {String} field expression that shall be casted - * @param {Integer|Interger[]} targetLength dessired length of the datatype + * @param {String} pField expression that shall be casted + * @param {Number|Number[]} pTargetLength desired length of the datatype * decimal: [length, decimals] * * @return {String} part of sql-expression that can be used */ -SqlMaskingUtils.prototype.castLob = function(field, targetLength) { - var res; - switch(this.dbType) { +SqlMaskingUtils.prototype.castLob = function (pField, pTargetLength) +{ + switch (this.dbType) + { case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - res = "DBMS_LOB.SUBSTR(" + field + ", " + targetLength + ", 1)"; - break; + return "DBMS_LOB.SUBSTR(" + pField + ", " + pTargetLength + ", 1)"; default: - res = this.cast(field, SQLTYPES.VARCHAR, targetLength); - break; + return this.cast(pField, SQLTYPES.VARCHAR, pTargetLength); } - return res; } /** * returns the function which determines the length of binary data * - * @param {String} fieldName name of the checked field + * @param {String} pField name of the checked field * * @return {String} */ -SqlMaskingUtils.prototype.binDataLength = function(fieldName) { - var res; - - switch(this.dbType) { +SqlMaskingUtils.prototype.binDataLength = function (pField) +{ + switch (this.dbType) + { case db.DBTYPE_MARIADB10: case db.DBTYPE_MYSQL4: case db.DBTYPE_ORACLE10_CLUSTER: @@ -3363,28 +3519,27 @@ SqlMaskingUtils.prototype.binDataLength = function(fieldName) { case db.DBTYPE_ORACLE10_OCI: case db.DBTYPE_POSTGRESQL8: case db.DBTYPE_DERBY10: - res = "LENGTH(" + fieldName + ")"; - break; + return "length(" + pField + ")"; case db.DBTYPE_SQLSERVER2000: - res = "DATALENGTH(" + fieldName + ")"; - break; + return "datalength(" + pField + ")"; + default: + throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.binDataLength"])); } - return res; } /** * masks the sql function substring * - * @param {String } field the expression that shall be substringed - * @param {Number} start posistion where the substring starts - * @param {Number} length amount of characters of the expression will be returned by the sql function + * @param {String } pField the expression that shall be substringed + * @param {Number} pStartPos posistion where the substring starts + * @param {Number} pLength amount of characters of the expression will be returned by the sql function * * @return {String} part of sql-expression that can be used for substringing */ -SqlMaskingUtils.prototype.substring = function(field, start, length) { +SqlMaskingUtils.prototype.substring = function (pField, pStartPos, pLength) +{ var sqlFnName; - - switch(this.dbType) + switch (this.dbType) { case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: @@ -3407,8 +3562,7 @@ SqlMaskingUtils.prototype.substring = function(field, start, length) { default: throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.substring"])); } - - return sqlFnName + "(" + field + ", " + start + ", " + length + ")"; + return sqlFnName + "(" + pField + ", " + pStartPos + ", " + pLength + ")"; } @@ -3417,41 +3571,41 @@ SqlMaskingUtils.prototype.substring = function(field, start, length) { * if a sql field is empty no separator will be added * note that this function will often create a lot of sql-code * -* @param {Array} fields req fields (or expressions) that should be concatenated -* @param {String} [separatorCharacter=space-character] character for separating the fields; warning: the character will not be quoted -* @param {String} [autoTrimFields=true] autoTrimFields if true the expressions are always trimmed, false no change will be applied +* @param {Array} pFields fields (or expressions) that should be concatenated +* @param {String} [pSeparator=space-character] character for separating the fields +* @param {String} [pAutoTrimFields=true] autoTrimFields if true the expressions are always trimmed, false no change will be applied * * @return {String} part of SQL-querey */ -SqlMaskingUtils.prototype.concat = function(fields, separatorCharacter, autoTrimFields) { - var concatSql, retSql, isNotEmptyStrSql, isNotNullSql, separatorSql, _isNotEmpty, _trimIfAutoTrimEnabled; - if (fields.length == 0) +SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimFields) +{ + if (pFields.length === 0) return "''"; - else if (fields.length == 1) - return fields[0]; - concatSql = this.getConcatSymbol(); - isNotEmptyStrSql = " != '' "; - isNotNullSql = " is not null "; - separatorSql = separatorCharacter == undefined ? " " : separatorCharacter; - retSql = ""; - if (autoTrimFields == undefined) - autoTrimFields = true; - - switch(this.dbType) + if (pFields.length === 1) + return pFields[0]; + + if (pAutoTrimFields == undefined) + pAutoTrimFields = true; + + if (pSeparator === null || pSeparator === undefined) + pSeparator = "' '"; + else if (pSeparator) + pSeparator = "'" + db.quote(pSeparator, this.alias) + "'"; + + var doEmptyStringCheck = true; + + switch (this.dbType) { case db.DBTYPE_MYSQL4: case db.DBTYPE_MARIADB10: case db.DBTYPE_POSTGRESQL8: - retSql = " concat_ws( '" + separatorSql + "'"; - for (let i = 0; i < fields.length; i++) { - retSql += ", " + fields[i]; - } - return retSql + ") "; - break; + if (pAutoTrimFields) + pFields = pFields.map(this.trim, this); + return " concat_ws(" + pSeparator + ", " + pFields.join(", ") + ")"; case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - isNotEmptyStrSql = null; //empty strings are changed to DB-null-values internally in oracle; by specifing JS-null we disable this check + doEmptyStringCheck = false; //empty strings are changed to DB-null-values internally in oracle; by specifing JS-null we disable this check break; case db.DBTYPE_SQLSERVER2000: //MS SQL Server supports "concat_ws" (and ignoring null values) from version SQL Server 2017 and newer: @@ -3462,66 +3616,76 @@ SqlMaskingUtils.prototype.concat = function(fields, separatorCharacter, autoTrim default: throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concat"])); } - separatorSql = concatSql + "'" + separatorSql + "'"; - _trimIfAutoTrimEnabled = function(f){ - if (autoTrimFields) - return this.trim(f); + + var concatCharacter = this.getConcatSymbol(); + var concatSql = ""; + + for (let i = 0; i < pFields.length; i++) + { + let field = pFields[i]; + let isLast = i + 1 === pFields.length; + + if (!_isFixedValue(field)) + concatSql += (pAutoTrimFields ? this.trim(this.isNull(field)) : this.isNull(field)); else - return f; - } - _trimIfAutoTrimEnabled = _trimIfAutoTrimEnabled.bind(this); - _isNotEmpty = function(f){ - return _trimIfAutoTrimEnabled(f) + isNotEmptyStrSql + " and " + f + isNotNullSql; + concatSql += (pAutoTrimFields ? "'" + field.slice(1, -1).trim() + "'" : field); + + if (!isLast) + { + concatSql += concatCharacter; + let nextField = pFields[i+1]; + if (pSeparator && _isFixedValue(nextField)) + { + if (nextField.slice(1, -1).trim()) + concatSql += pSeparator + concatCharacter; + } + else if (pSeparator) + { + let nextFieldTrimmed = pAutoTrimFields ? this.trim(nextField) : nextField; + let nextNotNullCondition = nextField + " is not null "; + if (doEmptyStringCheck || pAutoTrimFields) + nextNotNullCondition += " and " + nextFieldTrimmed + " != '' "; + + concatSql += "case when " + nextNotNullCondition + " then " + pSeparator + " else '' end " + concatCharacter; + } + } } - _isNotEmpty = _isNotEmpty.bind(this); - for (let i = 0; i < fields.length; i++) { - if (retSql != "") - retSql += concatSql; - retSql += "case when " + _isNotEmpty(fields[i]) + " then "; - if ( i < fields.length - 1 ) //Prüfen, ob ein nachfolgender Wert kommt, sonst braucht man keinen Separator - retSql += " case when " + _isNotEmpty(fields[i + 1]) + " then " + _trimIfAutoTrimEnabled(fields[i]) + separatorSql + " else " + _trimIfAutoTrimEnabled(fields[i]) + " end "; - else - retSql += _trimIfAutoTrimEnabled(fields[i]); - //this blank is used just as in the old concat function which means this concat function has the same (wrong) behaviour - //TODO: find way to fix the case when separator is not a whitepsace (e.g. space) - //this concat-function does not work properly if you concat [<<value>>, <<null>>, <<value>>] by comma - retSql += " else ' ' end "; + return concatSql; + + function _isFixedValue (pSqlField) + { + return pSqlField.startsWith("'") && pSqlField.endsWith("'") && !pSqlField.slice(1, -1).includes("'"); } - return retSql; } /** * returns the function for replacing a null value * - * @param {String} field expression that shall be checked for a null value - * @param {String} [replaceWith=empty string] expression that shall be used if the field contains null + * @param {String} pField expression that shall be checked for a null value + * @param {String} [pReplacement=empty string] expression that shall be used if the field contains null * * @return {string} */ -SqlMaskingUtils.prototype.isNull = function(field, replaceWith) { - var retSql; - - if (replaceWith == undefined) - replaceWith = "''"; - switch(this.dbType) { +SqlMaskingUtils.prototype.isNull = function (pField, pReplacement) +{ + if (pReplacement == undefined) + pReplacement = "''"; + switch (this.dbType) + { case db.DBTYPE_SQLSERVER2000: - retSql = "isnull(" + field + ", " + replaceWith + ")"; - break; + return "isnull(" + pField + ", " + pReplacement + ")"; case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_OCI: case db.DBTYPE_ORACLE10_THIN : - retSql = "nvl(" + field + ", " + replaceWith + ")"; - break; + return "nvl(" + pField + ", " + pReplacement + ")"; case db.DBTYPE_POSTGRESQL8: case db.DBTYPE_DERBY10: case db.DBTYPE_MYSQL4: case db.DBTYPE_MARIADB10: default: - retSql = "coalesce(" + field + ", " + replaceWith + ")"; - break; + return "coalesce(" + pField + ", " + pReplacement + ")"; } - return retSql; } /** @@ -3531,28 +3695,22 @@ SqlMaskingUtils.prototype.isNull = function(field, replaceWith) { * * @return {String} sql expression that extracts the day from a timestamp */ -SqlMaskingUtils.prototype.dayFromDate = function(pField) +SqlMaskingUtils.prototype.dayFromDate = function (pField) { - var retSql = ""; - switch (this.dbType) { case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - retSql = "to_char(" + pField + ",'dd')"; - break; + return "to_char(" + pField + ",'dd')"; case db.DBTYPE_DERBY10: case db.DBTYPE_SQLSERVER2000: case db.DBTYPE_MYSQL4: case db.DBTYPE_MARIADB10: - retSql = "DAY(" + pField + ")"; - break; + return "day(" + pField + ")"; case db.DBTYPE_POSTGRESQL8: - retSql = "EXTRACT (DAY from " + pField + ")"; - break; + return "extract (day from " + pField + ")"; } - return retSql; } /** @@ -3562,28 +3720,22 @@ SqlMaskingUtils.prototype.dayFromDate = function(pField) * * @return {String} sql expression that extracts the month from a timestamp */ -SqlMaskingUtils.prototype.monthFromDate = function(pField) +SqlMaskingUtils.prototype.monthFromDate = function (pField) { - var retSql = ""; - switch (this.dbType) { case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - retSql = "to_char(" + pField + ",'MM')"; - break; + return "to_char(" + pField + ",'MM')"; case db.DBTYPE_DERBY10: case db.DBTYPE_SQLSERVER2000: case db.DBTYPE_MYSQL4: case db.DBTYPE_MARIADB10: - retSql = "MONTH(" + pField + ")"; - break; + return "month(" + pField + ")"; case db.DBTYPE_POSTGRESQL8: - retSql = "EXTRACT (MONTH FROM " + pField + ")"; - break; + return "extract (month from " + pField + ")"; } - return retSql; } /** @@ -3595,26 +3747,20 @@ SqlMaskingUtils.prototype.monthFromDate = function(pField) */ SqlMaskingUtils.prototype.yearFromDate = function(pField) { - var retSql = ""; - switch (this.dbType) { case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - retSql = "to_char(" + pField + ",'yyyy')"; - break; + return "to_char(" + pField + ",'yyyy')"; case db.DBTYPE_DERBY10: case db.DBTYPE_SQLSERVER2000: case db.DBTYPE_MYSQL4: case db.DBTYPE_MARIADB10: - retSql = "YEAR(" + pField + ")"; - break; + return "YEAR(" + pField + ")"; case db.DBTYPE_POSTGRESQL8: - retSql = "EXTRACT (YEAR FROM " + pField + ")"; - break; + return "EXTRACT (YEAR FROM " + pField + ")"; } - return retSql; } /** diff --git a/process/SqlLib_tests/SqlLib_tests.aod b/process/Terminal_lib/Terminal_lib.aod similarity index 67% rename from process/SqlLib_tests/SqlLib_tests.aod rename to process/Terminal_lib/Terminal_lib.aod index 9f2866f8f91251c708400d6998ee92c248385334..9fa0811425e089b731f59a376c4089e526725b17 100644 --- a/process/SqlLib_tests/SqlLib_tests.aod +++ b/process/Terminal_lib/Terminal_lib.aod @@ -1,9 +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>SqlLib_tests</name> + <name>Terminal_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <process>%aditoprj%/process/SqlLib_tests/process.js</process> - <alias>Data_alias</alias> + <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation> + <process>%aditoprj%/process/Terminal_lib/process.js</process> <variants> <element>LIBRARY</element> </variants> diff --git a/process/Terminal_lib/process.js b/process/Terminal_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..13a0188495d15d6728d4560c288546ccc0c9d283 --- /dev/null +++ b/process/Terminal_lib/process.js @@ -0,0 +1,342 @@ +import("system.logging"); +import("Util_lib"); + + +/** + * This library gives you helpful colored output on the terminal + * You can use the predefined helper methods or use your own color- and format combinations + * + * @example + * var t = new Terminal(); + * logging.log(t.success("It works!")); + * logging.log(t.color(t.fg.green).background(t.bg.red).output("I would never use green text on red background...")); + * + * @see https://en.wikipedia.org/wiki/ANSI_escape_code + * @class + */ +function Terminal() +{ + this.mod = { + reset : 0 + }; + + this.fg = { + reset : 39, + black : 30, + red : 31, + green : 32, + yellow : 33, + blue : 34, + magenta : 35, + cyan : 36, + white : 37, + brightBlack : 90, + brightRed : 91, + brightGreen : 92, + brightYellow : 93, + brightBlue : 94, + brightMagenta : 95, + brightCyan : 96, + brightWhite : 97 + }; + + this.bg = { + reset : 49, + black : 40, + red : 41, + green : 42, + yellow : 43, + blue : 44, + magenta : 45, + cyan : 46, + white : 47, + brightBlack : 100, + brightRed : 101, + brightGreen : 102, + brightYellow : 103, + brightBlue : 104, + brightMagenta : 105, + brightCyan : 106, + brightWhite : 107 + }; + + this.formats = { + weightBold : 1, + weightLight : 2, + weightOff : 22, + italic : 3, + italicOff : 23, + underline : 4, + underlineDouble : 21, + underlineOff : 24, + strike : 9, + strikeOff : 29 + }; + + this._defaultConfig = { + colorText: this.fg.reset, + colorBackground: this.bg.reset, + bold: this.formats.weightOff, + italic: this.formats.italicOff, + underline: this.formats.underlineOff, + strike: this.formats.strikeOff + }; + + this.outputConfig = Utils.clone(this._defaultConfig); +} + + +/** + * Reset the output config by cloning and setting the default + * + * @return {void} + */ +Terminal.prototype._resetConfig = function () +{ + this.outputConfig = Utils.clone(this._defaultConfig); +} + +/** + * Set or reset the text color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.color = function (pValue) +{ + this.outputConfig.colorText = this._contains(this.fg, pValue) ? pValue : this.fg.reset; + + return this; +} + +/** + * Set or reset the background color + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.background = function (pValue) +{ + this.outputConfig.colorBackground = this._contains(this.bg, pValue) ? pValue : this.bg.reset; + + return this; +} + +/** + * Set, unset or add a formatting to the output config + * + * @param {int} pValue + * @return {Terminal} + */ +Terminal.prototype.format = function (pValue) +{ + var allowedWeightValues = [this.formats.weightBold, this.formats.weightLight, this.formats.weightOff]; + this.outputConfig.bold = this._contains(allowedWeightValues, pValue) ? pValue : this.formats.weightOff; + + var allowedItalicValues = [this.formats.italic, this.formats.italicOff]; + this.outputConfig.italic = this._contains(allowedItalicValues, pValue) ? pValue : this.formats.italicOff; + + var allowedUnderlineValues = [this.formats.underline, this.formats.underlineDouble, this.formats.underlineOff]; + this.outputConfig.underline = this._contains(allowedUnderlineValues, pValue) ? pValue : this.formats.underlineOff; + + var allowedStrikeValues = [this.formats.strike, this.formats.strikeOff]; + this.outputConfig.strike = this._contains(allowedStrikeValues, pValue) ? pValue : this.formats.strikeOff; + + return this; +} + +/** + * Returns a string wrapped in escape sequences according to previous formatting instructions + * Must be called after `.color()`, `.background()` and/or `.format()`. + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.output = function (pString) +{ + var output = ""; + var seqValues = []; + + Object.keys(this.outputConfig).forEach(function(pKey) { + seqValues.push(this.outputConfig[pKey]); + }, this); + + output += this._generateSequence(seqValues); + output += pString; + output += this._generateSequence(this.mod.reset); + + this._resetConfig(); + return output; +} + +/** + * Returns the given string formatted as light-colored text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.debug = function (pString) +{ + return this.color(this.fg.white).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold green text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.success = function (pString) +{ + return this.color(this.fg.green).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on green background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.successBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.green).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold blue text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.info = function (pString) +{ + return this.color(this.fg.blue).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on blue background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.infoBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.blue).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold magenta text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.important = function (pString) +{ + return this.color(this.fg.magenta).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on magenta background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.importantBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.magenta).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold yellow text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warning = function (pString) +{ + return this.color(this.fg.yellow).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold black text on yellow background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.warningBlock = function (pString) +{ + return this.color(this.fg.brightBlack).background(this.bg.yellow).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Returns the given string formatted as bold red text + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.error = function (pString) +{ + return this.color(this.fg.red).format(this.formats.weightBold).output(pString); +} + +/** + * Returns the given string formatted as bold white text on red background + * + * @param {String} pString the string to format + * @return {String} + */ +Terminal.prototype.errorBlock = function (pString) +{ + return this.color(this.fg.brightWhite).background(this.bg.red).format(this.formats.weightBold).output(" " + pString + " "); +} + +/** + * Checks if a specific value is in a given array or object + * + * @param {(Array|Object)} pType + * @param {Any} pValue + * @return {Boolean} + */ +Terminal.prototype._contains = function (pType, pValue) +{ + var res = false; + + if(Array.isArray(pType)) { + res = pType.indexOf(pValue) !== -1; + } else { + Object.keys(pType).forEach(function(pKey) { + if(pType[pKey] === pValue) { + res = true; + } + }, this); + } + + return res; +} + +/** + * Generates and returns a terminal escape sequence + * + * @param {(int|int[])} pSequences A single or multiple escape sequence commands + */ +Terminal.prototype._generateSequence = function (pSequences) +{ + var seq = Array.isArray(pSequences) ? pSequences : [pSequences]; + + seq = seq.filter(function(pElement) { + return Number.isInteger(parseFloat(pElement)) && isFinite(pElement); + }); + + return "\033[" + seq.join(";") + "m"; +} diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js index 14080be4ee9b533ea4a1c88331e3d6f45f64f364..e8f96a61314fcd72884ff65e5f86641d78adbc19 100644 --- a/process/Turnover_lib/process.js +++ b/process/Turnover_lib/process.js @@ -34,7 +34,7 @@ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId) return newSelect("'" + turnoverCategory + "', year(SALESORDERDATE) yearNum, month(SALESORDERDATE) monthNum, SALESORDERITEM.DISCOUNT discount, SALESORDERITEM.VAT vat, SALESORDERITEM.PRICE price, sum(SALESORDERITEM.QUANTITY) quantity, SALESORDERITEM.GROUPCODEID prodGroup, (" + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESORDERITEM.GROUPCODEID") + ") prodGroupName") .from("SALESORDER") .join("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = SALESORDER.SALESORDERID") - .where("SALESORDER.ORDERTYPE = 'ORDTYPEINVO'") + .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") .and("SALESORDER.ORDERSTATUS = 1") .and("SALESORDER.CANCELLATION <> 1") .and("SALESORDERITEM.OPTIONAL <> 1") diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod index 225ac2303844a684c92ac95b0426318362598cb0..a44993167651207727a423951deff7db60238dfb 100644 --- a/process/UnitTest_lib/UnitTest_lib.aod +++ b/process/UnitTest_lib/UnitTest_lib.aod @@ -2,6 +2,7 @@ <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>UnitTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE_O</icon> <process>%aditoprj%/process/UnitTest_lib/process.js</process> <alias>Data_alias</alias> <variants> diff --git a/process/UnitTest_lib/process.js b/process/UnitTest_lib/process.js index 0ce141d4828e7b396f4cc4368c4daae06aec5dd1..382d37e021567c924734a1350a7a368acd1796d3 100644 --- a/process/UnitTest_lib/process.js +++ b/process/UnitTest_lib/process.js @@ -1,235 +1,1265 @@ import("system.logging"); +import("Terminal_lib"); +import("Util_lib"); + +/** + * @param {String} pName the name/description of the test + * @param {Function} pCallback the actual test callback to execute + * @param {Function} pDataProviderCallback an optional callback to deliver multiple datasets to the test + * @param {Boolean} pRerunOnError an optional flag indicating if a test should get rerun without try-catch if an error occurs (default: false) + * + * @class + */ +function Test(pName, pCallback, pDataProviderCallback, pRerunOnError) +{ + this.name = pName; + this.callback = pCallback; + this.dataProviderCallback = pDataProviderCallback || function() { return null; }; + this.rerunOnError = !!pRerunOnError; +} /** * A TestSuite combines several tests - * @param {Array} pTests this is a n array of Tests in the following form:<br/> - * [<br/> - * ["Test description", function(pTester) <br/> - * {<br/> - * // the test which may use pTester.assert(...)<br/> - * }, {Optional: an expected error}<br/> - * ],<br/> - * [...]<br/> - * ]<br/> + * + * @param {String} pName name of the TestSuite + * @param {Array} pTests this is a n array of Tests + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester) { + * var expectValue = 5; + * var var actualValue = 20; + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * ), + * new Test(...) + * ]; + + * @example + * // Using a DataProvider + * var myTest = new TestSuite("MyObject.myTest", [ + * new Test("Test description", + * function(pTester, pDataProvider) { + * var obj = new MyObject("Something"); + * var expectValue = pDataProvider[0]; + * var var actualValue = obj.getNumber(); + * pTester.expectThat(actualValue).isGreater(expectValue).assert(); + * }, + * function dataProvider() { + * return [ + * [0], + * [10], + * [100], + * ]; + * }, + * ), + * new Test(...) + * ]; + * * @param {functionCallback} [pPreAll] a callback, called once before all tests * @param {functionCallback} [pPreTest] a callback, called once before each test * @param {functionCallback} [pPostTest] a callback, called once after each test * @param {functionCallback} [pPostAll] a callback, called once after all tests - * + * + * TODO: set callbacks via separate methods + * * @class */ -function TestSuite(pTests, pPreAll, pPreTest, pPostTest, pPostAll) +function TestSuite(pName, pTests, pPreAll, pPreTest, pPostTest, pPostAll) { + this.name = pName; this.tests = pTests; - this.preAll = (pPreAll ? pPreAll : function() {}); - this.preTest = (pPreTest ? pPreTest : function() {}); - this.postTest = (pPostTest ? pPostTest : function() {}); - this.postAll = (pPostAll ? pPostAll : function() {}); + this.preAll = pPreAll || function() {}; + this.preTest = pPreTest || function() {}; + this.postTest = pPostTest || function() {}; + this.postAll = pPostAll || function() {}; } /** - * The tester can test TestSuites. - * It will be passed as paramter to each test. - * + * The tester runs TestSuites. + * It will be passed as parameter to each test. + * * @param {String} pCollectionName + * + * @example + * var myTest = new TestSuite("MyObject.myTest", [...]); + * var tester = new Tester("Test SqlBuilder", SqlBuilder); + * tester.test(myTest); + * // More test suites using tester.test() + * // ... + * + * tester.summary(); + * + * @class + * + * TODO: Implement `isEmpty()` + * TODO: Implement `hasKey()` + * TODO: Implement `contains()` + * TODO: Implement `containsIgnoreCase()` + * TODO: Implement `isPrimitive()` + * TODO: Implement `matches()` + * TODO: Implement `matchesIgnoreCase()` + * TODO: Move multiple used code blocks into separate methods (like the logging output + reset) + * TODO: Use more getters, especially when implementing `elementAt()` + * TODO: Add examples to test methods + */ +function Tester(pCollectionName) +{ + this.collectionName = pCollectionName; + this.instanceName = undefined; + this.methods = []; + this.methodsCalled = []; + + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + this.dataProvider = undefined; + this.currentTestSuite = undefined; + + this.testCount = 0; + this.successCount = 0; + this.failCount = 0; + this.startTime = new Date().getTime(); + this.endTime = null; + + this.t = new Terminal(); + this.outputEnabled = true; + this.output = ""; +} + +/** + * Set the value to test + * + * @param {*} pValue + * @return {Tester} + */ +Tester.prototype.expectThat = function(pValue) +{ + this.actualValue = pValue; + this.actualDisplayValue = pValue; + this.actualOriginalValue = pValue; + this.actualOriginalDisplayValue = pValue; + this._useNegation = false; + + return this; +} + +/** + * Retrieve the result of the current test + * + * @return {Boolean} + */ +Tester.prototype.getTestResult = function() +{ + return this._useNegation ? !this._testResult : this._testResult; +} + +/** + * Enable or disable the output + * + * @param {Boolean} pIsEnabled whether the output should be enabled or not + * @return {Tester} + */ +Tester.prototype.setOutputEnabled = function(pIsEnabled) +{ + this.outputEnabled = pIsEnabled; + return this; +} + +/** + * Assert makes the test eventually pass or fail by looking at the result and writing into the output + * + * @return {void} + */ +Tester.prototype.assert = function() +{ + if(this.getTestResult() === true) + { + this.successCount++; + this._log("success", "\t\t\u2705 " + this._assertDescription); + } + else + { + this.failCount++; + this._log("error", "\t\t\u274C " + this._assertDescription); + + if(this.actualDisplayValue !== undefined && this.expectedDisplayValue !== undefined) + { + this._log("warning", "\t\t\t expected: " + JSON.stringify(this.expectedDisplayValue, null, "\t")); + this._log("error", "\t\t\t actual: " + JSON.stringify(this.actualDisplayValue, null, "\t")); + } + } +} + +/** + * Activate test negation + * + * @return {Tester} + */ +Tester.prototype.not = function() +{ + this._useNegation = true; + + return this; +} + +/** + * Select a child element of `actualValue` to work with + * + * @param {(String|Number)} pKey the key of the child + * @return {Tester} * * @example - * var tester = new Tester("Test SqlBuilder"); - * tester.test(newSelectTests); - * tester.test(validAndUsageTests); - * tester.test(validOrUsageTests); + * // Grab first array element to test + * pTester.expectThat(actualValue).elementAt(0).equals("MyValue").assert(); * - * logging.log("-------------------------"); - * tester.printResults(); + * // Grab last array element to test + * pTester.expectThat(actualValue).elementAt(-1).equals("MyValue").assert(); * - * @class + * // Grab object element to test + * pTester.expectThat(actualValue).elementAt("myKey").equals("MyValue").assert(); + * + * // Grab nested element in array/object structure to test, in this case `actualValue[5].myKey[2].someChild` + * pTester.expectThat(actualValue).elementAt(5).elementAt("myKey").elementAt(2).elementAt("someChild").equals("MyValue").assert(); */ -function Tester(pCollectionName) +Tester.prototype.elementAt = function(pKey) { - this.collectionName = pCollectionName; - this.testResults = []; + if(!Array.isArray(this.actualValue) && !Utils.isObject(this.actualValue)) + { + var error = new Error("actualValue must be array or object to use elementAt('" + pKey + "')"); + error.name = "UnitTest_lib Error"; + throw error; + } + + var key = Array.isArray(this.actualValue) && pKey === -1 ? this.actualValue.length - 1 : pKey; - // if no assert was called during a test, no test-message would be added. -> Add a success message that no error occoured. - this.currentTestHadAlreadyAssert = false; + this.actualValueElementHierarchy.push(key); + this.actualValue = this.actualValue[key]; + this.actualDisplayValue = this.actualDisplayValue[key]; + + return this; } /** - * generates a summary of the test results - * - * @return {Obect} + * Test if a value is equal to a given value + * + * @param {*} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.equals = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + if(Utils.isObject(this.actualValue) || Utils.isObject(this.expectedValue)) + { + this.expectedDisplayValue = JSON.stringify(this.actualValue); + this._testResult = Utils.isEqual(this.actualValue, this.expectedValue); + this._generateAssertDescription({custom: pCustomDescription, operator: "===", name: "Object value"}); + } + else + { + this._testResult = this.actualValue === this.expectedValue; + this._generateAssertDescription({custom: pCustomDescription, operator: "==="}); + } + + return this; +} + +/** + * Test if a value is greater than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreater = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue > this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">"}); + + return this; +} + +/** + * Test if a value is greater or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isGreaterEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue >= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">="}); + + return this; +} + +/** + * Test if a value is lower than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLower = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue < this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<"}); + + return this; +} + +/** + * Test if a value is lower or equal than a given compare value + * + * @param {Number} pExpect the value to compare + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerEqual = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = this.actualValue <= this.expectedValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<="}); + + return this; +} + +/** + * Test if a value is a boolean + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isBoolean = function(pCustomDescription) +{ + this._setExpectValue("boolean"); + this._testResult = Utils.isBoolean(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a number + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumber = function(pCustomDescription) +{ + this._setExpectValue("number"); + this._testResult = Utils.isNumber(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is numeric + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNumeric = function(pCustomDescription) +{ + this._setExpectValue("numeric"); + this._testResult = Utils.isNumeric(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is NaN (not a number) + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNaN = function(pCustomDescription) +{ + this._setExpectValue("NaN"); + this._testResult = Number.isNaN(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an integer + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInteger = function(pCustomDescription) +{ + this._setExpectValue("integer"); + this._testResult = Utils.isInteger(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a float + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFloat = function(pCustomDescription) +{ + this._setExpectValue("float"); + this._testResult = Utils.isFloat(this.actualValue); + + this.actualDisplayValue = typeof this.actualValue; + this.expectedDisplayValue = "number"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is", expected: this.expectedValue}); + + return this; +} + +/** + * Test if a value is a string + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isString = function(pCustomDescription) +{ + this._setExpectValue("string"); + this._testResult = Utils.isString(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an array + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isArray = function(pCustomDescription) +{ + this._setExpectValue("array"); + this._testResult = Array.isArray(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is an object + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isObject = function(pCustomDescription) +{ + this._setExpectValue("object"); + this._testResult = Utils.isObject(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is a function + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isFunction = function(pCustomDescription) +{ + this._setExpectValue("function"); + this._testResult = Utils.isFunction(this.actualValue); + this.actualDisplayValue = typeof this.actualValue; + + this._generateAssertDescription({custom: pCustomDescription, operator: "type is"}); + + return this; +} + +/** + * Test if a value is null + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isNull = function(pCustomDescription) +{ + this._setExpectValue("null"); + this._testResult = this.actualValue === null; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value is undefined + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUndefined = function(pCustomDescription) +{ + this._setExpectValue("undefined"); + this._testResult = this.actualValue === undefined || typeof this.actualValue === "undefined"; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isUpperCase = function(pCustomDescription) +{ + this._setExpectValue("uppercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toUpperCase() + && this.actualValue !== this.actualValue.toLowerCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a string value is lowercase + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isLowerCase = function(pCustomDescription) +{ + this._setExpectValue("lowercase"); + this._testResult = Utils.isString(this.actualValue) + && this.actualValue === this.actualValue.toLowerCase() + && this.actualValue !== this.actualValue.toUpperCase() + ; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is"}); + + return this; +} + +/** + * Test if a value starts with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.startsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.startsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "starts with"}); + + return this; +} + +/** + * Test if a value end with a given string + * + * An additional check of the opposite must be made to prevent strings with non-letter characters passing the test + * + * @param {Number} pExpect the expected string beginning + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.endsWith = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + this._testResult = Utils.isString(this.actualValue) && this.actualValue.endsWith(this.expectedValue); + + this._generateAssertDescription({custom: pCustomDescription, operator: "ends with"}); + + return this; +} + +/** + * Test if value is an instance of the expected "class" + * + * @param {Number} pExpect the expected instance name + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.isInstanceOf = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + // Checks the name of the constructor and runs a function to check the actual instance. + // To prevent security issues by using `eval()`, a double nested function was needed. + // The outer one to evaluate the code, the inner one to be able to pass an argument, that will be evaluated. + // TODO: Also check for isObject() before + this._testResult = Utils.isObject(this.actualValue) + && this.actualValue.constructor.name === this.expectedValue + && Function('"use strict"; return function(obj) {return obj instanceof ' + this.expectedValue + ';};')()(this.actualValue); + this.actualDisplayValue = this.actualValue.constructor.name; + + this._generateAssertDescription({custom: pCustomDescription, operator: "is instance of"}); + + return this; +} + +/** + * Test if value (array, string, object) has the expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length === this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "===", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a minimum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMinLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length >= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: ">=", nameSuffix: ".length"}); + + return this; +} + +/** + * Test if value (array, string, object) has a maximum expected length + * + * @param {Number} pExpect the expected length + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} + */ +Tester.prototype.hasMaxLength = function(pExpect, pCustomDescription) +{ + this._setExpectValue(pExpect); + + var length = this._getLength(this.actualValue); + this._testResult = length <= this.expectedValue; + this.actualDisplayValue = length; + + this._generateAssertDescription({custom: pCustomDescription, operator: "<=", nameSuffix: ".length"}); + + return this; +} + + +/** + * Test if a callback function throws an exception + * + * @param {Number} pExpect the expected error + * @param {(String|Object)} pCustomDescription an optional custom assert description or config object overwrite + * @return {Tester} */ -Tester.prototype.getSummary = function () +Tester.prototype.throwsException = function(pExpect, pCustomDescription) { - var summary = { - failures : 0, - successes : 0, - failedTests : [], - getMessage : function () + this._setExpectValue(pExpect); + this._generateAssertDescription({custom: pCustomDescription, operator: "throws", expected: "exception", name: " "}); + + if(this._useNegation) + { + try + { + this.actualValue(); + } + catch(e) + { + this._testResult = true; // Actually `false` and therefore failed, but must be `true` to make negation work + this.actualDisplayValue = e; + throw e; + } + + this._testResult = false; // Actually `true` and therefore successful, but must be `false` to make negation work + } + else + { + try { - var message = "-------------------------\n" - + (this.failures ? "Test failure" : "Test success") - + "\n-------------------------\nTests performed: " + (this.successes + this.failures) - + "\nTests successful: " + this.successes - + "\nTests failed: " + this.failures; - if (this.failedTests.length) + this.actualValue(); + } + catch(e) + { + this._testResult = e.toSource() === this.expectedValue.toSource(); + + if (!this._testResult) { - message += "\nFailures:"; - this.failedTests.forEach(function (testName) - { - message += "\n\t" + testName; - }); + this.actualDisplayValue = e; + throw e; } - return message; } } - this.testResults.forEach(function ([testName,, successful]) - { - if (successful) - summary.successes++; + + return this; +} + +/** + * Executes all tests in a TestSuite + * + * @param {TestSuite} pTestSuite the TestSuite which should be tested + * @return {void} + */ +Tester.prototype.test = function(pTestSuite) +{ + this.currentTestSuite = pTestSuite; + this._log("important", "\u2692 Suite: " + this.currentTestSuite.name); + this._registerMethodTestCall(); + + this.currentTestSuite.preAll(this); + + this.currentTestSuite.tests.forEach(function(pTest) { + this._resetTest(); + + this.currentTestSuite.preTest(this); + this.dataProvider = pTest.dataProviderCallback(); + + if(Array.isArray(this.dataProvider) && this.dataProvider.length > 0) + { + this.dataProvider.forEach(function(pElement, pIndex) { + this._runTest(pTest, pIndex); + }, this); + } else { - summary.failures++; - summary.failedTests.push(testName); + this._runTest(pTest); } + + this.currentTestSuite.postTest(this); + }, this); + + this.currentTestSuite.postAll(this); +} + +/** + * Calculate test duration + * + * Will we used in the results and summary output. + * + * @return {Number} the duration in milliseconds + */ +Tester.prototype.getDuration = function() +{ + if(this.endTime === null) + { + this.endTime = new Date().getTime(); + } + + return this.endTime - this.startTime; +} + +/** + * Initializes test coverage by registering available and testable methods of given class + * + * @param {Object=} pInstanceName an optional class instance to make test coverage work + * @return {void} + */ +Tester.prototype.initCoverage = function(pInstanceName) +{ + if(pInstanceName !== undefined) + { + this.instanceName = pInstanceName; + + var instanceMethods = Object.getOwnPropertyNames(this.instanceName.prototype).filter(function(property) { + return typeof this.instanceName.prototype[property] === 'function'; + }, this); + var staticMethods = Object.getOwnPropertyNames(this.instanceName).filter(function(property) { + return typeof this.instanceName[property] === 'function'; + }, this); + + this.methods = instanceMethods.concat(staticMethods); + } +} + +/** + * Get the results of current tester as object + * + * @return {Object} the test results + */ +Tester.prototype.getResults = function() +{ + return { + testCount: this.testCount, + assertCount: this.successCount + this.failCount, + successCount: this.successCount, + failCount: this.failCount, + duration: this.getDuration(), + coverage: this._getCoverageRate(), + methodsTotal: this.methods.length, + methodsCalled: this.methodsCalled.length + }; +} + +/** + * Output the summary for a single or multiple test suites to the server log + * + * The results of multiple tests get cumulated. + * There will be no log output if it has been disabled. + * + * @param {(Object|Object[])} pTestSuiteResults the test suite result(s) to log a summary for + * @return {void} + */ +Tester.prototype.summary = function(pTestSuiteResults) +{ + var testSuiteResults = pTestSuiteResults !== undefined && Array.isArray(pTestSuiteResults) ? pTestSuiteResults : [this.getResults()]; + var divider = testSuiteResults.length > 1 ? "=" : "-"; + var title = testSuiteResults.length > 1 ? "All Tests" : this.collectionName; + + var testCount = 0; + var assertCount = 0; + var successCount = 0; + var failCount = 0; + var duration = 0; + + testSuiteResults.forEach(function(pTestResult) { + testCount += pTestResult.testCount; + assertCount += pTestResult.assertCount; + successCount += pTestResult.successCount; + failCount += pTestResult.failCount; + duration += pTestResult.duration; }); - return summary; + + this._log("info", "\n" + title + " Summary:"); + this._log("info", divider.repeat(32)); + this._log("", "Total: " + this.t.important(testCount + " Tests, " + assertCount + " Assertions")); + this._log("", "Passed: " + (successCount === assertCount ? this.t.success(successCount) : this.t.warning(successCount))); + this._log("", "Failed: " + (failCount === 0 ? this.t.success(failCount) : this.t.error(failCount))); + this._log("", "Time: " + this.t.important(duration + "ms")); + this._log("", "Coverage: " + this._getCoverageOutput(testSuiteResults)); + this._log("", "\n\n"); + + this._print(); } /** - * With assert you can test if a variable is the same like an expected value.<br/> - * The test result is added to the Tester<br/> + * Write a certain message type to the output + * + * If the given message type is not valid/allowed, the output will be plain unformatted text. + * + * @param {String} pType the message type + * @param {String} pOutput the actual message + * @return {void} * - * Note: the values are compared by === so also the type is checked.<br/> - * By using assert you can Test everything you want.<br/> + * @private + */ +Tester.prototype._log = function(pType, pOutput) +{ + var allowedTerminalMethods = ["debug", "success", "info", "error", "warning", "important"]; + + if(allowedTerminalMethods.indexOf(pType) !== -1) + { + this.output += "\n" + this.t[pType](pOutput); + } + else + { + this.output += "\n" + pOutput; + } +} + +/** + * Set the value to test against + * + * @param {*} pValue + * @return {void} * - * @param {AnyValue} pExpect the expected value - * @param {AnyValue} pActual the actual value - * @param {String} [pTestDescription] this is an optional description. You should use it, if you have more than one .assert in your test. + * @private */ -Tester.prototype.assert = function (pExpect, pActual, pTestDescription) +Tester.prototype._setExpectValue = function(pValue) { - this.currentTestHadAlreadyAssert = true; - - var res = pActual === pExpect; + this.expectedValue = pValue; + this.expectedDisplayValue = pValue; +} + +/** + * Determine, whether an error is expected in the current test run + * + * @return {Boolean} + * + * @private + */ +Tester.prototype._testExpectsError = function() +{ + return this.expectedValue instanceof Error; +} + +/** + * Write the ouput to the log and reset the output to an empty string + * + * @return {Tester} + * + * @private + */ +Tester.prototype._print = function() +{ + if(this.outputEnabled) + { + logging.log(this.output); + } - this.testResults.push([ - this._currentTest, - pTestDescription, - res, - pExpect, - pActual - ]); + this.output = ""; + return this; } /** - * Executes all tests in a TestSuite - * @param {TestSuite} pTestSuite the TestSuite which should be tested + * Generates and sets an assert description by given config object or simply set a given custom string + * + * It also handles using the correct operators when negation via `not()` is used + * + * @param {Object} pDescriptionConfig a config object + * @return {void} + * + * @private */ -Tester.prototype.test = function (pTestSuite) +Tester.prototype._generateAssertDescription = function(pDescriptionConfig) { - pTestSuite.preAll(this); + if(Utils.isString(pDescriptionConfig.custom)) + { + this._assertDescription = pDescriptionConfig.custom; + return; + } - pTestSuite.tests.forEach(function(pTest) { - logging.log("Testing " + pTest[0]); - - this.currentTestHadAlreadyAssert = false; - - this._currentTest = pTest[0]; - pTestSuite.preTest(this); - - if (pTest.length >= 3) + Object.assign(pDescriptionConfig, pDescriptionConfig.custom); + var valueName = pDescriptionConfig.name || "value"; + var valueNameSuffix = pDescriptionConfig.nameSuffix || ""; + var operator = pDescriptionConfig.operator.trim(); + var expectedValue = pDescriptionConfig.expected || this.expectedDisplayValue; + expectedValue = Utils.isString(expectedValue) ? "`" + expectedValue + "`" : expectedValue + ""; + + if(this._useNegation) + { + switch(operator) { - var errorThrowed = false; - - try { - pTest[1](this); - } catch (ex) { - errorThrowed = true; - - if (ex.toSource() == pTest[2].toSource()) - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - true, - pTest[2].toSource(), - ex.toSource() - ]); - - // don't throw as it's expected and no detailed stacktrace is needed - } - else - { - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - ex.toSource() - ]); - - logging.log("Expected error: " + pTest[2].toSource() + ", but wrong error occoured.\nRunning test again without try catch to get detailed error stack trace") - - pTestSuite.preTest(this); - pTest[1](this); - pTestSuite.postTest(this); - return; - } - } - - if (!errorThrowed) - { - // if it didn't fail - this.testResults.push([ - this._currentTest, - "Expected error throwed", - false, - pTest[2].toSource(), - "no error" - ]); - } + case "===": + operator = "!=="; + break; + case ">": + operator = "<="; + break; + case ">=": + operator = "<"; + break; + case "<": + operator = ">="; + break; + case "<=": + operator = ">"; + break; + case "is": + case "type is": + case "has": + operator += " not"; + break; + case "is instance of": + operator += "is not instance of"; + break; + case "starts with": + case "ends with": + case "throws": + default: + operator = "not " + operator; + break; } - else + } + + this.actualValueElementHierarchy.forEach(function(pElement) { + valueName += typeof pElement === "number" ? "[" + pElement + "]" : "." + pElement; + }, this); + + var description = valueName + valueNameSuffix + " " + operator + " " + expectedValue; + this._assertDescription = description.trim(); + this.actualValueElementHierarchy = []; +} + +/** + * Reset test-related properties to their initial state + * + * This is done before every test run to prevent side-effects or expired/invalid data and states + * + * @return {Tester} + * + * @private + */ +Tester.prototype._resetTest = function() +{ + this.actualValue = undefined; + this.actualDisplayValue = undefined; + this.actualOriginalValue = undefined; + this.actualOriginalDisplayValue = undefined; + this.actualValueElementHierarchy = []; + this.expectedValue = undefined; + this.expectedDisplayValue = undefined; + this._assertDescription = ""; + this._testResult = false; + this._useNegation = false; + + return this; +} + +/** + * Get the length of a given value or undefined if it is not an array, object or string + * + * @param {(Array|Object|String)} pActualValue the value to get the length from + * @return {Number} + * + * @private + */ +Tester.prototype._getLength = function(pActualValue) +{ + if(Array.isArray(pActualValue) || Utils.isString(pActualValue)) + { + return pActualValue.length; + } + else if(Utils.isObject(pActualValue)) + { + return Object.keys(pActualValue).length; + } + + return undefined; +} + +/** + * Get the percentage of test coverage + * + * Will we used in the results and summary output. + * + * @return {?Number} the duration in milliseconds + */ +Tester.prototype._getCoverageRate = function() +{ + if(this.methods.length === 0 && this.methodsCalled.length === 0) + { + return null; + } + + if(this.methods.length === 0 || this.methodsCalled.length === 0) + { + return 0.00; + } + + var coverage = (this.methodsCalled.length / this.methods.length) * 100; + coverage = Number.parseFloat(Number.parseFloat(coverage).toFixed(2)); + + return coverage > 100 ? 100.00 : coverage; +} + +/** + * Register, which method of the given class has been called + * + * It takes the name of the TestSuite and splits it to get the class name and the method. + * Then, it checks if the class has such a method. It gets added to the call-list, if it has not been added yet. + * This is necessary to calculate the test coverage. + * All available class methods get registered beforehand and will be compared to this list later in `_getCoverageRate()`. + * + * @return {void} + * + * @private + */ +Tester.prototype._registerMethodTestCall = function() +{ + if(this.instanceName !== undefined) + { + var callParts = this.currentTestSuite.name.split("."); + + if(callParts[0] === this.instanceName.prototype.constructor.name && this.methods.indexOf(callParts[1]) !== -1) { - // run without try catch as no error expected - pTest[1](this); + if(this.methodsCalled.indexOf(callParts[1]) === -1) + { + this.methodsCalled.push(callParts[1]); + } } - - if (!this.currentTestHadAlreadyAssert && pTest.length < 3) // only add message if no error expected - { - this.testResults.push([ - this._currentTest, - "Expected no error", - true, - "no error", - "no error" - ]); + } +} + +/** + * Renders the output for the test coverage + * + * The results of multiple tests get cumulated. + * + * @param {Object[]} pTestSuiteResults the test suite(s) to log a summary for + * @return {String} the test coverage output + */ +Tester.prototype._getCoverageOutput = function(pTestSuiteResults) +{ + var coverageOutput = this.t.debug("unknown"); + var methodsTotal = 0; + var methodsCalled = 0; + var coverage = null; + var avgCoverage = null; + var coverageMethodCount = null; + + pTestSuiteResults.forEach(function(pTestResult) { + methodsTotal += pTestResult.methodsTotal; + methodsCalled += pTestResult.methodsCalled; + + if(pTestResult.coverage !== null) { + coverage += pTestResult.coverage; } - - pTestSuite.postTest(this); - }, this); - - pTestSuite.postAll(this); + }); + + if(coverage !== null) + { + avgCoverage = coverage / pTestSuiteResults.length; + coverageMethodCount = "(" + methodsCalled + "/" + methodsTotal + ")"; + } + + if(avgCoverage >= 80) + { + coverageOutput = this.t.success(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage >= 50) + { + coverageOutput = this.t.warning(avgCoverage + "% " + coverageMethodCount); + } + else if(avgCoverage > 0) + { + coverageOutput = this.t.error(avgCoverage + "% " + coverageMethodCount); + } + + return coverageOutput; } /** - * Prints the test results to the log + * Generates the title for the test about to run + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private */ -Tester.prototype.printResults = function () +Tester.prototype._generateTestTitle = function(pTest, pDataProviderIndex) { - var lastTestDescription = ""; - logging.log("Test results for \"" + this.collectionName + "\"") - this.testResults.forEach(function(pResult) { - - if (lastTestDescription != pResult[0]) + if(pDataProviderIndex !== undefined) + { + var titleValues = []; + + this.dataProvider[pDataProviderIndex].forEach(function(pElement) { + titleValues.push(pElement === undefined ? "undefined" : JSON.stringify(pElement)); + }); + this._log("", this.t.info("\t\u2699 Test: " + pTest.name) + this.t.debug(" (#" + (pDataProviderIndex + 1) + ": " + titleValues.join(" | ") + ")")); + } + else + { + this._log("info", "\t\u2699 Test: " + pTest.name); + } +} + +/** + * Runs a single test iteration and handles errors + * + * @param {Test} pTest the test to run + * @param {Number} pDataProviderIndex the current index of the data provider + * @return {void} + * + * @private + */ +Tester.prototype._runTest = function(pTest, pDataProviderIndex) +{ + this._generateTestTitle(pTest, pDataProviderIndex); + this.testCount++; + + var dataProvider = pDataProviderIndex !== undefined ? this.dataProvider[pDataProviderIndex] : undefined; + + try + { + pTest.callback(this, dataProvider); + } + catch (e) + { + this.assert(); + + // Expected, but wrong error + if (this._testExpectsError() && e.toSource() !== this.expectedValue.toSource()) { - logging.log("Test \"" + pResult[0] + "\":"); + this._log("error", "Wrong error occurred"); + this._log("warning", "\t\t expected: " + this.expectedValue.toSource()); + this._log("error", "\t\t actual: " + e.toSource()); } - - var message = (pResult[1] ? " - " + pResult[1] : " - Test result ") + ": " + (pResult[2] ? "success" : "fail\nexpected: " + JSON.stringify(pResult[3], null, "\t") + "\nactual: " + JSON.stringify(pResult[4], null, "\t")); - - logging.log(message); - lastTestDescription = pResult[0]; - }, this); - logging.log(this.getSummary().getMessage()); -} \ No newline at end of file + else + { // Unexpected error + this._log("error", "Unexpected error occurred"); + } + + var exception = logging.toLogString(e["rhinoException"] !== undefined ? e["rhinoException"] : e, true); + this._log("error", e.name + ":\n" + exception.replace(/\s+(at|\[->\])\s/g, "\n\t$1 ")); + this._log("error", "jDito callstack:\n" + e.stack); + + if(pTest.rerunOnError) + { + this._log("debug", "Rerun without try-catch to get detailed error stack trace"); + this._print(); + + this.currentTestSuite.preTest(this); + pTest.callback(this, dataProvider); + this.currentTestSuite.postTest(this); + } + } +} diff --git a/process/UnitTest_test/UnitTest_test.aod b/process/UnitTest_test/UnitTest_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..095a395529bdac348b397a4854c6939cccab89f3 --- /dev/null +++ b/process/UnitTest_test/UnitTest_test.aod @@ -0,0 +1,12 @@ +<?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>UnitTest_test</name> + <title>[TEST] UnitTest_lib</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/UnitTest_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/UnitTest_test/process.js b/process/UnitTest_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..7d80b7995e42cc7b6bc74c8b3f417f2ce3ae0329 --- /dev/null +++ b/process/UnitTest_test/process.js @@ -0,0 +1,1141 @@ +import("system.result"); +import("system.vars"); +import("Keyword_lib"); +import("UnitTest_lib"); + + +var equals = new TestSuite("Tester.equals", [ + new Test("should test value equality", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).equals(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, num, num], + [true, str, str], + [true, true, true], + [true, objStr, objStr], + [true, obj_1, obj_1], + [true, obj_2, obj_2], + [false, true, false], + [false, obj_1, obj_2], + [false, num, objStr], + [false, num, str], + [false, objStr, str], + [false, null, undefined], + [false, objStr, null], + [false, objStr, undefined], + [false, null, "null"], + ]; + } + ) +]); + +var isGreater = new TestSuite("Tester.isGreater", [ + new Test("should test if value is greater than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreater(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 100, 10], + [false, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isGreaterEqual = new TestSuite("Tester.isGreaterEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isGreaterEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 1, 0], + [true, 101, 100], + [true, 3, 3], + [false, 0, 5], + [false, 1234, 5678], + ]; + } + ) +]); + +var isLower = new TestSuite("Tester.isLower", [ + new Test("should test if value is lower than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLower(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 10, 100], + [false, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isLowerEqual = new TestSuite("Tester.isLowerEqual", [ + new Test("should test if value is greater or equal than another", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerEqual(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0, 1], + [true, 100, 101], + [true, 3, 3], + [false, 5, 0], + [false, 5678, 1234], + ]; + } + ) +]); + +var isBoolean = new TestSuite("Tester.isBoolean", [ + new Test("should test if value is a boolean", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isBoolean().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, true], + [true, false], + [false, "true"], + [false, "false"], + [false, ""], + [false, "0"], + [false, 0], + [false, new Object()], + [false, []], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumber = new TestSuite("Tester.isNumber", [ + new Test("should test if value is a number", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumber().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, 0xFFFFFF], + [true, 0777], // Octal + //[true, 0o777], // New octal format since ECMAScript 2015 + //[true, 0b11111111], // Seems like binary numbers are not supported + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNumeric = new TestSuite("Tester.isNumeric", [ + new Test("should test if value is numeric", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNumeric().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 33.33333], + [true, "0777"], // Octal + [true, "2e6"], // Exponentiation + [true, "0.1e2"], // Exponentiation + [true, +Infinity], + [true, -Infinity], + [true, NaN], // This should actually fail. Needs fix in Utils + [true, "50000"], + [true, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNotANumber = new TestSuite("Tester.isNaN", [ + new Test("should test if value is not NaN", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNaN().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, NaN], + [false, 0], + [false, 100], + [false, 33.33333], + [false, "0777"], // Octal + [false, "2e6"], // Exponentiation + [false, "0.1e2"], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, "50000"], + [false, "0"], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isInteger = new TestSuite("Tester.isInteger", [ + new Test("should test if value is an integer", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInteger().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 0], + [true, 100], + [true, 0xFFFFFF], + [true, 0777], // Octal + [true, 2e6], // Exponentiation + [true, 0.1e2], // Exponentiation + [true, "0"], + [false, 33.33333], + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFloat = new TestSuite("Tester.isFloat", [ + new Test("should test if value is a float", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFloat().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, 33.33333], + [false, 0], + [false, 100], + [false, 0xFFFFFF], + [false, 0777], // Octal + [false, 2e6], // Exponentiation + [false, 0.1e2], // Exponentiation + [false, +Infinity], + [false, -Infinity], + [false, NaN], + [false, ""], + [false, "0"], + [false, new Object()], + [false, []], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isString = new TestSuite("Tester.isString", [ + new Test("should test if value is a string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isString().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ""], + [true, "Hello"], + [true, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isArray = new TestSuite("Tester.isArray", [ + new Test("should test if value is an array", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isArray().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [false, ""], + [false, "0"], + [false, new Object()], + [false, new Function()], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isObject = new TestSuite("Tester.isObject", [ + new Test("should test if value is an object", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isObject().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, {}], + [true, []], + [true, ["a", 2, null]], + [true, new Array()], + [true, new Object()], + [true, new String("hello")], + [false, new Function()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isFunction = new TestSuite("Tester.isFunction", [ + new Test("should test if value is a function", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isFunction().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Function()], + [true, function(){}], + [true, Math.sin], + [true, Array.isArray], + [false, new Array()], + [false, new Object()], + [false, ""], + [false, "0"], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isNull = new TestSuite("Tester.isNull", [ + new Test("should test if value is null", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isNull().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, null], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, undefined], + ]; + } + ) +]); + +var isUndefined = new TestSuite("Tester.isUndefined", [ + new Test("should test if value is undefined", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUndefined().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, undefined], + [false, ""], + [false, "Hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + ]; + } + ) +]); + +var isUpperCase = new TestSuite("Tester.isUpperCase", [ + new Test("should test if value is an uppercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isUpperCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "HELLO"], + [false, "HeLlo"], + [false, "hello"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var isLowerCase = new TestSuite("Tester.isLowerCase", [ + new Test("should test if value is a lowercase string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isLowerCase().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "hello"], + [false, "HELLO"], + [false, "HeLlo"], + [false, "0"], + [false, new String('Hello')], + [false, []], + [false, 0], + [false, true], + [false, null], + [false, undefined], + ]; + } + ) +]); + +var startsWith = new TestSuite("Tester.startsWith", [ + new Test("should test if value starts with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).startsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "Mill"], + [false, "Millenium Falcon", "MILL"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var endsWith = new TestSuite("Tester.endsWith", [ + new Test("should test if value ends with a given string", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).endsWith(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "Millenium Falcon", "con"], + [false, "Millenium Falcon", "CON"], + [false, "Millenium Falcon", "Abc"], + [false, "Millenium Falcon", "0"], + ]; + } + ) +]); + +var isInstanceOf = new TestSuite("Tester.isInstanceOf", [ + new Test("should test if value is an instance of given class", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).isInstanceOf(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, new Tester(), "Tester"], + [true, [], "Array"], + [true, {}, "Object"], + [false, "abc", "String"], + [false, true, "Boolean"], + [false, 0, "Number"], + ]; + } + ) +]); + +var hasLength = new TestSuite("Tester.hasLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, ["a", "z"], 2], + [true, new String("?!"), 2], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMinLength = new TestSuite("Tester.hasMinLength", [ + new Test("should test if value has the expected minimum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMinLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 2], + [true, ["a", "z"], 2], + [true, ["a", "z"], 1], + [true, new String("?!"), 2], + [false, "abc", 4], + [false, ["a", "z"], 5], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + + +var hasMaxLength = new TestSuite("Tester.hasMaxLength", [ + new Test("should test if value has the expected maximum length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).hasMaxLength(pDataProvider[2]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "", 0], + [true, [], 0], + [true, {}, 0], + [true, "abc", 3], + [true, "abc", 4], + [true, ["a", "z"], 2], + [true, ["a", "z"], 3], + [true, new String("?!"), 2], + [false, "abc", 2], + [false, ["a", "z"], 1], + [false, 0, 1], + [false, true, 1], + [false, null, 1], + [false, undefined, 1], + ]; + } + ) +]); + +var not = new TestSuite("Tester.not", [ + new Test("should test negation of compare tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method](pDataProvider[3]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + var num = 0; + var str = '0'; + var objStr = new String('0'); + var obj_1 = {a: 1, b: 2, c: 3}; + var obj_2 = {x: null, y: "test", z: true}; + + return [ + [true, "equals", true, false], + [true, "equals", obj_1, obj_2], + [true, "equals", num, objStr], + [false, "equals", num, num], + [false, "equals", str, str], + [false, "equals", true, true], + [true, "isGreater", 3, 3], + [true, "isGreater", 0, 5], + [true, "isGreater", 1234, 5678], + [false, "isGreater", 1, 0], + [false, "isGreater", 100, 10], + [true, "isGreaterEqual", 0, 5], + [true, "isGreaterEqual", 1234, 5678], + [false, "isGreaterEqual", 1, 0], + [false, "isGreaterEqual", 101, 100], + [false, "isGreaterEqual", 3, 3], + [true, "isLower", 3, 3], + [true, "isLower", 5, 0], + [true, "isLower", 5678, 1234], + [false, "isLower", 0, 1], + [false, "isLower", 10, 100], + [true, "isLowerEqual", 5, 0], + [true, "isLowerEqual", 5678, 1234], + [false, "isLowerEqual", 0, 1], + [false, "isLowerEqual", 100, 101], + [false, "isLowerEqual", 3, 3], + [true, "startsWith", "Millenium Falcon", "MILL"], + [true, "startsWith", "Millenium Falcon", "Abc"], + [true, "startsWith", "Millenium Falcon", "0"], + [false, "startsWith", "Millenium Falcon", "Mill"], + [true, "endsWith", "Millenium Falcon", "CON"], + [true, "endsWith", "Millenium Falcon", "Abc"], + [true, "endsWith", "Millenium Falcon", "0"], + [false, "endsWith", "Millenium Falcon", "con"], + [true, "isInstanceOf", "abc", "String"], + [true, "isInstanceOf", true, "Boolean"], + [true, "isInstanceOf", 0, "Number"], + [false, "isInstanceOf", new Tester(), "Tester"], + [false, "isInstanceOf", [], "Array"], + [false, "isInstanceOf", {}, "Object"], + [true, "hasLength", 0, 1], + [true, "hasLength", true, 1], + [true, "hasLength", null, 1], + [true, "hasLength", undefined, 1], + [false, "hasLength", "", 0], + [false, "hasLength", [], 0], + [false, "hasLength", {}, 0], + [false, "hasLength", "abc", 3], + [false, "hasLength", ["a", "z"], 2], + [false, "hasLength", new String("?!"), 2], + ]; + } + ), + new Test("should test negation of type tests", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var method = pDataProvider[1]; + var actualValue = dummyTester.expectThat(pDataProvider[2]).not()[method]().getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, "isBoolean", "true"], + [true, "isBoolean", "false"], + [true, "isBoolean", ""], + [true, "isBoolean", "0"], + [true, "isBoolean", 0], + [true, "isBoolean", new Object()], + [true, "isBoolean", []], + [true, "isBoolean", null], + [true, "isBoolean", undefined], + [false, "isBoolean", true], + [false, "isBoolean", false], + [true, "isNumber", ""], + [true, "isNumber", "0"], + [true, "isNumber", new Object()], + [true, "isNumber", []], + [true, "isNumber", true], + [true, "isNumber", null], + [true, "isNumber", undefined], + [false, "isNumber", 0], + [false, "isNumber", 100], + [false, "isNumber", 33.33333], + [false, "isNumber", 0xFFFFFF], + [false, "isNumber", 0777], // Octal + [false, "isNumber", 2e6], // Exponentiation + [false, "isNumber", 0.1e2], // Exponentiation + [false, "isNumber", +Infinity], + [false, "isNumber", -Infinity], + [false, "isNumber", NaN], + [true, "isNumeric", ""], + [true, "isNumeric", new Object()], + [true, "isNumeric", []], + [true, "isNumeric", true], + [true, "isNumeric", null], + [true, "isNumeric", undefined], + [false, "isNumeric", 0], + [false, "isNumeric", 100], + [false, "isNumeric", 33.33333], + [false, "isNumeric", "0777"], // Octal + [false, "isNumeric", "2e6"], // Exponentiation + [false, "isNumeric", "0.1e2"], // Exponentiation + [false, "isNumeric", +Infinity], + [false, "isNumeric", -Infinity], + [false, "isNumeric", NaN], + [false, "isNumeric", "50000"], + [false, "isNumeric", "0"], + [true, "isNaN", 0], + [true, "isNaN", 100], + [true, "isNaN", 33.33333], + [true, "isNaN", "0777"], // Octal + [true, "isNaN", "2e6"], // Exponentiation + [true, "isNaN", "0.1e2"], // Exponentiation + [true, "isNaN", +Infinity], + [true, "isNaN", -Infinity], + [true, "isNaN", "50000"], + [true, "isNaN", "0"], + [true, "isNaN", ""], + [true, "isNaN", new Object()], + [true, "isNaN", []], + [true, "isNaN", true], + [true, "isNaN", null], + [true, "isNaN", undefined], + [false, "isNaN", NaN], + [true, "isInteger", 33.33333], + [true, "isInteger", +Infinity], + [true, "isInteger", -Infinity], + [true, "isInteger", NaN], + [true, "isInteger", ""], + [true, "isInteger", new Object()], + [true, "isInteger", []], + [true, "isInteger", true], + [true, "isInteger", null], + [true, "isInteger", undefined], + [false, "isInteger", 0], + [false, "isInteger", 100], + [false, "isInteger", 0xFFFFFF], + [false, "isInteger", 0777], // Octal + [false, "isInteger", 2e6], // Exponentiation + [false, "isInteger", 0.1e2], // Exponentiation + [false, "isInteger", "0"], + [true, "isFloat", 0], + [true, "isFloat", 100], + [true, "isFloat", 0xFFFFFF], + [true, "isFloat", 0777], // Octal + [true, "isFloat", 2e6], // Exponentiation + [true, "isFloat", 0.1e2], // Exponentiation + [true, "isFloat", +Infinity], + [true, "isFloat", -Infinity], + [true, "isFloat", NaN], + [true, "isFloat", ""], + [true, "isFloat", "0"], + [true, "isFloat", new Object()], + [true, "isFloat", []], + [true, "isFloat", true], + [true, "isFloat", null], + [true, "isFloat", undefined], + [false, "isFloat", 33.33333], + [true, "isString", new String('Hello')], + [true, "isString", []], + [true, "isString", 0], + [true, "isString", true], + [true, "isString", null], + [true, "isString", undefined], + [false, "isString", ""], + [false, "isString", "Hello"], + [false, "isString", "0"], + [true, "isArray", ""], + [true, "isArray", "0"], + [true, "isArray", new Object()], + [true, "isArray", new Function()], + [true, "isArray", 0], + [true, "isArray", true], + [true, "isArray", null], + [true, "isArray", undefined], + [false, "isArray", []], + [false, "isArray", ["a", 2, null]], + [false, "isArray", new Array()], + [true, "isObject", new Function()], + [true, "isObject", ""], + [true, "isObject", "0"], + [true, "isObject", 0], + [true, "isObject", true], + [true, "isObject", null], + [true, "isObject", undefined], + [false, "isObject", {}], + [false, "isObject", []], + [false, "isObject", ["a", 2, null]], + [false, "isObject", new Array()], + [false, "isObject", new Object()], + [false, "isObject", new String("hello")], + [true, "isFunction", new Array()], + [true, "isFunction", new Object()], + [true, "isFunction", ""], + [true, "isFunction", "0"], + [true, "isFunction", 0], + [true, "isFunction", true], + [true, "isFunction", null], + [true, "isFunction", undefined], + [false, "isFunction", new Function()], + [false, "isFunction", function(){}], + [false, "isFunction", Math.sin], + [false, "isFunction", Array.isArray], + [true, "isNull", ""], + [true, "isNull", "Hello"], + [true, "isNull", "0"], + [true, "isNull", new String('Hello')], + [true, "isNull", []], + [true, "isNull", 0], + [true, "isNull", true], + [true, "isNull", undefined], + [false, "isNull", null], + [true, "isUndefined", ""], + [true, "isUndefined", "Hello"], + [true, "isUndefined", "0"], + [true, "isUndefined", new String('Hello')], + [true, "isUndefined", []], + [true, "isUndefined", 0], + [true, "isUndefined", true], + [true, "isUndefined", null], + [false, "isUndefined", undefined], + [true, "isUpperCase", "HeLlo"], + [true, "isUpperCase", "hello"], + [true, "isUpperCase", "0"], + [true, "isUpperCase", new String('Hello')], + [true, "isUpperCase", []], + [true, "isUpperCase", 0], + [true, "isUpperCase", true], + [true, "isUpperCase", null], + [true, "isUpperCase", undefined], + [false, "isUpperCase", "HELLO"], + [true, "isLowerCase", "HELLO"], + [true, "isLowerCase", "HeLlo"], + [true, "isLowerCase", "0"], + [true, "isLowerCase", new String('Hello')], + [true, "isLowerCase", []], + [true, "isLowerCase", 0], + [true, "isLowerCase", true], + [true, "isLowerCase", null], + [true, "isLowerCase", undefined], + [false, "isLowerCase", "hello"], + ]; + } + ), + new Test("should not affect other assertions", + function(pTester) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + //first assertion with not()-call + var expectValue = true; + var actualValue = dummyTester.expectThat("this value").not().equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + + //second test without not()-call => the first not()-call should not affect the second assertion + expectValue = false; + actualValue = dummyTester.expectThat("this value").equals("that other value").getTestResult(); + pTester.expectThat(actualValue).equals(expectValue).assert(); + } + ) +]); + +var elementAt = new TestSuite("Tester.elementAt", [ + new Test("should test if value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key = pDataProvider[2]; + var method = pDataProvider[3]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key)[method](pDataProvider[4]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, ["a", "z", ["x", true, 42]], 0, "isString", undefined], + [true, ["a", "z", ["x", true, 42]], 1, "equals", "z"], + [true, ["a", "z", ["x", true, 42]], 2, "isArray", undefined], + [true, ["a", "z", ["x", true, 42]], 2, "hasLength", 3], + [true, ["a", "z", {"first": "x", "second": true}], 2, "isObject", undefined], + [true, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 2], + [false, ["a", "z", ["x", true, 42]], 0, "isNumeric", undefined], + [false, ["a", "z", ["x", true, 42]], 1, "equals", "a"], + [false, ["a", "z", ["x", true, 42]], 2, "isString", undefined], + [false, ["a", "z", ["x", true, 42]], 2, "hasLength", 1], + [false, ["a", "z", {"first": "x", "second": true}], 2, "isArray", undefined], + [false, ["a", "z", {"first": "x", "second": true}], 2, "hasLength", 1], + ]; + } + ), + new Test("should test if nested value element at key position passes test", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + var key1 = pDataProvider[2]; + var key2 = pDataProvider[3]; + var method = pDataProvider[4]; + var actualValue = dummyTester.expectThat(pDataProvider[1]).elementAt(key1).elementAt(key2)[method](pDataProvider[5]).getTestResult(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [true, [["x", true, [42]]], 0, 0, "isString", undefined], + [true, [["x", true, [42]]], 0, 0, "equals", "x"], + [true, [["x", true, [42]]], 0, 1, "isBoolean", undefined], + [true, [["x", true, [42]]], 0, 1, "equals", true], + [true, [["x", true, [42]]], 0, 2, "isArray", undefined], + [true, [{"first": "a", "second": 42}], 0, "first", "equals", "a"], + [true, [{"first": "a", "second": 42}], 0, "second", "equals", 42], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "isString", undefined], + [true, {"outer": {"inner": "a"}}, "outer", "inner", "equals", "a"], + [false, [["x", true, [42]]], 0, 1, "equals", "a"], + [false, [["x", true, [42]]], 0, 2, "isNumber", undefined], + [false, {"outer": {"inner": "a"}}, "outer", "inner", "isNumber", undefined], + ]; + } + ) +]); + +var getCoverageRate = new TestSuite("Tester._getCoverageRate", [ + new Test("should test if coverage is correctly calculated", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[0]; + dummyTester.methods = pDataProvider[1]; + dummyTester.methodsCalled = pDataProvider[2]; + var actualValue = dummyTester._getCoverageRate(); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + [100, ["method1", "method2", "method3"], ["method1", "method2", "method3"]], + [33.33, ["method1", "method2", "method3"], ["method1"]], + [66.67, ["method1", "method2", "method3"], ["method1", "method2"]], + [100, ["method1"], ["method1", "method2", "method3"]], + [0, ["method1"], []], + [0, [], ["method1"]], + [null, [], []], + ]; + } + ) +]); + +var getLength = new TestSuite("Tester._getLength", [ + new Test("should test if value has the expected length", + function(pTester, pDataProvider) { + + var dummyTester = (new Tester("Test Dummy")).setOutputEnabled(false); + var expectValue = pDataProvider[1]; + var actualValue = dummyTester._getLength(pDataProvider[0]); + + pTester.expectThat(actualValue).equals(expectValue).assert(); + }, + function dataProvider() { + return [ + ["", 0], + [[], 0], + [{}, 0], + ["abc", 3], + [["a", "z"], 2], + [new String("?!"), 2], + [{first: "xyz"}, 1], + [0, undefined], + [true, undefined], + [null, undefined], + [undefined, undefined], + ]; + } + ) +]); + + + +var tester = new Tester("Test UnitTest_lib"); +tester.initCoverage(Tester); +tester.test(equals); +tester.test(isGreater); +tester.test(isGreaterEqual); +tester.test(isLower); +tester.test(isLowerEqual); +tester.test(isBoolean); +tester.test(isNumber); +tester.test(isNumeric); +tester.test(isNotANumber); +tester.test(isInteger); +tester.test(isFloat); +tester.test(isString); +tester.test(isArray); +tester.test(isObject); +tester.test(isFunction); +tester.test(isNull); +tester.test(isUndefined); +tester.test(isUpperCase); +tester.test(isLowerCase); +tester.test(startsWith); +tester.test(endsWith); +tester.test(isInstanceOf); +tester.test(hasLength); +tester.test(hasMinLength); +tester.test(hasMaxLength); +tester.test(not); +tester.test(elementAt); +tester.test(getCoverageRate); +tester.test(getLength); + +tester.summary(); + +result.object(tester.getResults()); diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 79d48fd346254731ff46aa8f6a8f04467dd63151..97545be1730d3020123b1ed5e55dceed59095b83 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -61,29 +61,46 @@ Utils.isNullOrEmpty = function (pObject) * * var original = new MyObject(); * original.name = "Jotaro"; + * original.obj1 = {}; + * original.obj2 = original.obj1; * * var copy = ObjectUtils.clone(original); * copy.name = "Josuke"; * * logging.log(original.name != copy.name); //true - * logging.log(copy instanceof MyObject()); //true (prototypes are set correctly) + * logging.log(copy instanceof MyObject()); //true, prototypes are set correctly + * logging.log(copy.obj1 === copy.obj2); //true, relative object references are kept */ Utils.clone = function (pObject) { - if (!Utils.isObject(pObject) || pObject === null) - return pObject; //Return the value if inObject is not an object + var referenceMap = new Map(); + return _clone(pObject); - var clonedObject = Array.isArray(pObject) - ? [] - : Object.create(Object.getPrototypeOf(pObject)); //set the prototype of the given object - - for (let key in pObject) + function _clone (pObject) { - var value = pObject[key]; - clonedObject[key] = Utils.clone(value); //Recursively (deep) copy for nested objects, including arrays + if (typeof pObject !== "object" || pObject === null) + return pObject; //Return the value if inObject is not an object + + if (referenceMap.has(pObject)) + return referenceMap.get(pObject); + + var clonedObject = Array.isArray(pObject) + ? [] + : Object.create(Object.getPrototypeOf(pObject)); //set the prototype of the given object + + /* keeps track of all encountered objects and maps the original to the copy, this makes it possible to: + - have the same relative references in the copy as in the original + - copy cyclic references without error */ + referenceMap.set(pObject, clonedObject); + + for (let key in pObject) + { + var value = pObject[key]; + clonedObject[key] = _clone(value); //Recursively (deep) copy for nested objects, including arrays + } + + return clonedObject; } - - return clonedObject; } /** @@ -166,6 +183,39 @@ Utils.isNumber = function (pValue) return typeof pValue === "number"; } +/** + * Checks if the given value is numeric. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is numeric + */ +Utils.isNumeric = function (pValue) +{ + return Utils.isNumber(pValue) || (!isNaN(parseFloat(pValue)) && isFinite(pValue)); +} + +/** + * Checks if the given value is an integer. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is an integer + */ +Utils.isInteger = function (pValue) +{ + return Number.isInteger(parseFloat(pValue)) && isFinite(pValue); +} + +/** + * Checks if the given value is a floating point number. + * + * @param {Object} pValue the value to check + * @return {Boolean} true if the value is a float + */ +Utils.isFloat = function (pValue) +{ + return !Number.isInteger(parseFloat(pValue)) && !isNaN(parseFloat(pValue)) && isFinite(pValue); +} + /** * Checks if the given value is an object. Be careful, null is also considered "object". * @@ -174,7 +224,7 @@ Utils.isNumber = function (pValue) */ Utils.isObject = function (pValue) { - return typeof pValue === "object"; + return typeof pValue === "object" && pValue !== null; } /** diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index 6bea1c6a4d8262beb8400e58754aca2c88a19468..38627a87e22539c50660b586e22538dee5c0ad9a 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -1,3 +1,5 @@ +import("system.process"); +import("Util_lib"); import("system.text"); import("system.logging"); import("system.project"); @@ -36,23 +38,26 @@ WorkflowUtils.getPossibleWorkflowDefinitions = function (pContext) * opens the WorkflowInstance context in new-mode * * @param {Object} [pVariables] variables for the process instance - * @param {String} [pTargetId=$sys.uid] uid of the target object + * @param {String} [pTargetIds=$sys.uid] uid of the target object * @param {String} [pTargetContext=current context] target context * @param {String} [pSelectionFilter] filter */ -WorkflowUtils.openNewInstance = function (pVariables, pTargetId, pTargetContext, pSelectionFilter) +WorkflowUtils.openNewInstance = function (pVariables, pTargetIds, pTargetContext, pSelectionFilter) { - if ((!pTargetId || pTargetId.length === 0) && pSelectionFilter) - pTargetId = []; + if ((!pTargetIds || pTargetIds.length === 0) && pSelectionFilter) + pTargetIds = []; + else if (!pTargetIds) + pTargetIds = [WorkflowVariables.TARGET_ID.getDefaultValue()]; if (!pVariables) pVariables = {}; - Object.assign(pVariables, WorkflowVariables.getTargetVariables(pTargetId, pTargetContext)); + Object.assign(pVariables, WorkflowVariables.getTargetVariables(pTargetIds, pTargetContext)); - neon.openContext("WorkflowInstance", null, null, neon.OPERATINGSTATE_NEW, { - "ProcessVariables_param" : JSON.stringify(pVariables), - "TargetContext_param" : pVariables[WorkflowVariables.TARGET_CONTEXT()], - "TargetIdFilter_param" : pSelectionFilter ? JSON.stringify(pSelectionFilter) : "" + neon.openContext("WorkflowLauncher", "WorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ProcessVariables_param": JSON.stringify(pVariables), + "TargetContext_param": pVariables[WorkflowVariables.TARGET_CONTEXT()], + "TargetFilter_param": pSelectionFilter ? JSON.stringify(pSelectionFilter) : "", + "Targets_param": JSON.stringify(pTargetIds) }); } @@ -65,7 +70,8 @@ WorkflowUtils.getPossibleTargetContexts = function () "Organisation", "Person", "Offer", - "Salesproject" + "Salesproject", + "MarketingWorkflowLauncher" ]; } @@ -74,7 +80,7 @@ WorkflowUtils.getPossibleTargetContexts = function () */ WorkflowUtils.engineIsEnabled = function () { - return String(project.getInstanceConfigValue("workflowEngineEnabled", "false")) == "true"; + return Utils.toBoolean(project.getInstanceConfigValue("workflowEngineEnabled", "false")); } /** @@ -128,33 +134,36 @@ WorkflowSignalSender.EVENT_DELETE = function () * Adds an entry to a context-variable that tells a insert happened. The variable is then checked by WorkflowSignalSender.doInsertedOrUpdated, * where the actual logic is executed. The reason for this approach is that 'inserted' signals should be thrown after the insert finished. * - * @param {String} pTargetId uid of the inserted dataset - * @param {String} pTargetContext context of the inserted dataset + * @param {Object} [pVariables] variables to set + * @param {String} [pTargetId=$sys.uid] uid of the inserted dataset + * @param {String} [pTargetContext=current context] context of the inserted dataset */ -WorkflowSignalSender.inserted = function (pTargetId, pTargetContext) +WorkflowSignalSender.inserted = function (pVariables, pTargetId, pTargetContext) { - WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_INSERT(), pTargetId, pTargetContext); + WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_INSERT(), pTargetId, pTargetContext, pVariables); } /** * Adds an entry to a context-variable that tells a update happened. The variable is then checked by WorkflowSignalSender.doInsertedOrUpdated, * where the actual logic is executed. The reason for this approach is that 'updated' signals should be thrown after the update finished. * - * @param {String} pTargetId uid of the updated dataset - * @param {String} pTargetContext context of the updated dataset + * @param {Object} [pVariables] variables to set + * @param {String} [pTargetId=$sys.uid] uid of the inserted dataset + * @param {String} [pTargetContext=current context] context of the inserted dataset */ -WorkflowSignalSender.updated = function (pTargetId, pTargetContext) +WorkflowSignalSender.updated = function (pVariables, pTargetId, pTargetContext) { - WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_UPDATE(), pTargetId, pTargetContext); + WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_UPDATE(), pTargetId, pTargetContext, pVariables); } /** - * @param {String} pTargetId uid of the deleted dataset - * @param {String} pTargetContext context of the deleted dataset + * @param {Object} [pVariables] variables to set + * @param {String} [pTargetId=$sys.uid] uid of the inserted dataset + * @param {String} [pTargetContext=current context] context of the inserted dataset */ -WorkflowSignalSender.deleted = function (pTargetId, pTargetContext) +WorkflowSignalSender.deleted = function (pVariables, pTargetId, pTargetContext) { - WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_DELETE(), pTargetId, pTargetContext); + WorkflowSignalSender.eventHappened(WorkflowSignalSender.EVENT_DELETE(), pTargetId, pTargetContext, pVariables); } /** @@ -597,4 +606,135 @@ WorkflowModelerApiCall.prototype.importModel = function () return WorkflowModel.fromObject(JSON.parse(modelJson)); } +/** + * Provides functionality to work with urls that trigger certain workflow actions + */ +function WorkflowLinkActions () {} + +/** + * Contains the different types of workflow actions that can be performed + * + * @enum + */ +WorkflowLinkActions.types = { + RECEIVE_TASK: function () {return "rec";}, + SIGNAL: function () {return "sig";}, + MESSAGE: function () {return "msg";} +}; + +WorkflowLinkActions.types.RECEIVE_TASK.title = "Receive Task"; +WorkflowLinkActions.types.SIGNAL.title = "Signal"; +WorkflowLinkActions.types.MESSAGE.title = "Message"; + +/** + * Callback-function that performs the action for the type RECEIVE_TASK. + */ +WorkflowLinkActions.types.RECEIVE_TASK.execute = function (pParameters) +{ + if (!pParameters.processInstanceId) + return; + workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null); +} +/** + * Callback-function that performs the action for the type SIGNAL. + */ +WorkflowLinkActions.types.SIGNAL.execute = function (pParameters) +{ + if (!pParameters.signal) + return; + workflow.signalEventReceived(pParameters.signal); +} + +/** + * Callback-function that performs the action for the type MESSAGE. + */ +WorkflowLinkActions.types.MESSAGE.execute = function (pParameters) +{ + if (!pParameters.processInstanceId || !pParameters.message) + return; + workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId); +} + +/** + * Encodes an action into a special string containing the data required to execute the action. + * This string can be decoded with WorkflowLinkActions.parseAction. + * + * @param {String} pType the action type, see WorkflowLinkActions.types + * @param {String} pLink the url to redirect to after the action has been executed + * @param {Object} pParams extra parameters required for the action + * @return {String} the encoded action-string + */ +WorkflowLinkActions.encodeAction = function (pType, pLink, pParams) +{ + if (!pParams) + pParams = {}; + //map params to have shorter keys, results in shorter url + var actionObj = {}; + if (pParams.processInstanceId) + actionObj.pi = pParams.processInstanceId; + if (pParams.signal) + actionObj.sg = pParams.signal; + if (pParams.message) + actionObj.ms = pParams.message; + if (pParams.receiveTask) + actionObj.re = pParams.receiveTask; + actionObj.ty = pType; + actionObj.ln = pLink; + + var actionString = JSON.stringify(actionObj); + return encodeURIComponent(util.encodeBase64String(actionString)); +} + + +WorkflowLinkActions.getActionLink = function (pBaseUrl, pType, pLink, pParams) +{ + if (!pBaseUrl.endsWith("/")) + pBaseUrl += "/"; + return pBaseUrl + "services/rest/redirect_rest?act=" + WorkflowLinkActions.encodeAction(pType, pLink, pParams); +} + +/** + * Decodes the given action-string and gives back an object that can run the action. + * + * @param {String} pEncodedAction the encoded action-string, see WorkflowLinkActions.encodeAction + * @return {Object} an object that contains the properties of the action and the function 'run' that can be called to execute the action + */ +WorkflowLinkActions.parseAction = function (pEncodedAction) +{ + try + { + var decodedAction = decodeURIComponent(util.decodeBase64String(pEncodedAction)); + var parsedAction = JSON.parse(decodedAction); + } + catch (err) + { + parsedAction = {}; + } + //map the object so it has understandable keys when used + var actionParams = {}; + if (parsedAction.pi) + actionParams.processInstanceId = parsedAction.pi; + if (parsedAction.sg) + actionParams.signal = parsedAction.sg; + if (parsedAction.ms) + actionParams.message = parsedAction.ms; + if (parsedAction.re) + actionParams.receiveTask = parsedAction.re; + + return { + type: parsedAction.ty || null, + redirectLink: parsedAction.ln || null, + params: actionParams, + run: function () + { + for (let typeName in WorkflowLinkActions.types) + { + let actionType = WorkflowLinkActions.types[typeName]; + if (this.type == actionType()) + return actionType.execute.call(this, this.params); + } + return null; + } + }; +} \ No newline at end of file diff --git a/process/WsValidation_lib/process.js b/process/WsValidation_lib/process.js index d7387dcc3df1b261445bbaf1fbac122a1e1be983..03bccc71e669831494fb55307bacff0ba8b07156 100644 --- a/process/WsValidation_lib/process.js +++ b/process/WsValidation_lib/process.js @@ -95,6 +95,11 @@ WsValidationType.get = function(pKey) var cityext = pPlaceData.address.suburb || pPlaceData.address.city_district; + var road = pPlaceData.address.road + || pPlaceData.address.street + || pPlaceData.address.path + || pPlaceData.address.address27; + return { placeId: pPlaceData.place_id, value: pValue, @@ -106,7 +111,7 @@ WsValidationType.get = function(pKey) district: pPlaceData.address.district, region: pPlaceData.address.state_district, state: pPlaceData.address.state, - road: pPlaceData.address.road, //8 + road: road, //8 buildingNo: pPlaceData.address.house_number, lat: pPlaceData.lat, lon: pPlaceData.lon diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..4336a9ddb94b6e8c5741887bbfd4e636f23b0541 --- /dev/null +++ b/process/_all_test/_all_test.aod @@ -0,0 +1,12 @@ +<?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>_all_test</name> + <title>[TEST] .All</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:CHECK_CIRCLE</icon> + <process>%aditoprj%/process/_all_test/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/_all_test/process.js b/process/_all_test/process.js new file mode 100644 index 0000000000000000000000000000000000000000..cbc75f35849b71f8514f1c4330683ee568e08ba0 --- /dev/null +++ b/process/_all_test/process.js @@ -0,0 +1,23 @@ +import("system.logging"); +import("system.process"); +import("UnitTest_lib"); +import("Terminal_lib"); + + +var testResults = []; + +process.getProcesses([process.VARIANT_EXECUTABLE]).forEach(function(pProcessName) { + // Run all executable processes ending with "_test" except THIS one + if(pProcessName !== "_all_test" && pProcessName.substr(-5, 5) === "_test") { + var startConfig = process.createStartConfig().setName(pProcessName); + var testResult = JSON.parse(process.start(startConfig)); + + if(testResult !== null && typeof testResult === "object") { + testResults.push(testResult); + } + } +}); + +var tester = new Tester(""); +tester.summary(testResults); + diff --git a/process/_test_importer/process.js b/process/_test_importer/process.js index 3eaad9708e3ec25675d162bb1731dd4abc913f4a..418c18564dbf0757efb950e9e9af8d57443e7557 100644 --- a/process/_test_importer/process.js +++ b/process/_test_importer/process.js @@ -1,3 +1,4 @@ +import("Attribute_lib"); import("system.text"); import("Util_lib"); import("ImporterTest_lib"); diff --git a/process/redirect_rest/process.js b/process/redirect_rest/process.js new file mode 100644 index 0000000000000000000000000000000000000000..fe542e60083ebae56bacd14f02bff8b8a81a2787 --- /dev/null +++ b/process/redirect_rest/process.js @@ -0,0 +1,23 @@ +import("Workflow_lib"); +import("Util_lib"); +import("system.util"); + +function restget (pRequest) +{ + var request = JSON.parse(pRequest); + var action = WorkflowLinkActions.parseAction(request.query.act); + + action.run(); + + if (action.redirectLink) + { + request.response.httpStatusCode = 302; //found, redirect + request.response.header.Location = action.redirectLink; + } + else + { + request.response.httpStatusCode = 204; //no content + } + + return JSON.stringify(request); +} diff --git a/process/redirect_rest/redirect_rest.aod b/process/redirect_rest/redirect_rest.aod new file mode 100644 index 0000000000000000000000000000000000000000..3087b0ad4b7fcc1e48a6122ae26fe32120328632 --- /dev/null +++ b/process/redirect_rest/redirect_rest.aod @@ -0,0 +1,12 @@ +<?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>redirect_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/redirect_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <loginTypeId>internal.none</loginTypeId> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index 5e0e92752aff29c9212d7fed72e0a86f5592701e..ca529152a3fbd0034322ba26a655361e685a1ac9 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> <property name="ireport.zoom" value="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="144"/> + <property name="ireport.y" value="57"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -41,30 +41,30 @@ <textField> <reportElement x="13" y="0" width="68" height="15" uuid="0a515534-8d2a-4e3e-9370-6cac4c65ef68"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Ordernumber}]]></textFieldExpression> </textField> <textField> <reportElement x="104" y="0" width="63" height="15" uuid="87fc2f40-ffdc-47d5-9fd8-7a8caf821114"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Orderdate}]]></textFieldExpression> </textField> <textField> - <reportElement x="202" y="0" width="62" height="15" uuid="86eacb27-6bb5-4ce8-b8cf-c3f0993380ad"/> + <reportElement x="202" y="0" width="76" height="15" uuid="86eacb27-6bb5-4ce8-b8cf-c3f0993380ad"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{DueDate}]]></textFieldExpression> </textField> <textField> - <reportElement x="429" y="0" width="59" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> + <reportElement x="408" y="0" width="103" height="15" uuid="62a0909f-ef03-4242-969a-8a9532d1aa9a"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> - <textFieldExpression><![CDATA[$P{Due}]]></textFieldExpression> + <textFieldExpression><![CDATA[$P{Outstanding Amount}]]></textFieldExpression> </textField> <line> <reportElement x="13" y="33" width="527" height="1" uuid="d5108302-191f-4e27-8920-fcd330d335e8"/> @@ -72,58 +72,58 @@ <textField> <reportElement x="104" y="36" width="64" height="15" uuid="ca4c366a-1954-4aee-91c4-05c093b04df5"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{ORDERDATE}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="36" width="68" height="15" uuid="3fcb3ee0-fe4d-409e-8cb8-7a0e6ceca5ab"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{ORDERCODE}]]></textFieldExpression> </textField> <textField> <reportElement x="202" y="36" width="62" height="15" uuid="b5e006cf-5d37-42a1-bf74-0b49d3a39b27"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{DUEDATE}]]></textFieldExpression> </textField> <textField> - <reportElement x="428" y="36" width="60" height="15" uuid="d57eeb7b-f517-4c85-a925-cdc3c1ea0830"/> + <reportElement x="451" y="36" width="60" height="15" uuid="d57eeb7b-f517-4c85-a925-cdc3c1ea0830"/> <textElement textAlignment="Right"> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$F{OFFEN}]]></textFieldExpression> </textField> <textField> - <reportElement x="307" y="35" width="56" height="15" uuid="72a49ece-7fc0-4cd7-a00c-94580845d150"/> + <reportElement x="332" y="35" width="56" height="15" uuid="72a49ece-7fc0-4cd7-a00c-94580845d150"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{BRUTTO}]]></textFieldExpression> </textField> <textField> - <reportElement x="307" y="15" width="56" height="15" uuid="a991ccab-0b04-4550-bbd2-2033a5fad0f0"/> + <reportElement x="332" y="15" width="56" height="15" uuid="a991ccab-0b04-4550-bbd2-2033a5fad0f0"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{CURRENCY}]]></textFieldExpression> </textField> <textField> - <reportElement x="429" y="15" width="59" height="15" uuid="8e257160-536a-418a-b9df-80fa020268b8"/> + <reportElement x="452" y="15" width="59" height="15" uuid="8e257160-536a-418a-b9df-80fa020268b8"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$F{CURRENCY}]]></textFieldExpression> </textField> <textField> - <reportElement x="326" y="0" width="62" height="15" uuid="000feb72-9b7d-42e6-ade9-8e12359c3eef"/> + <reportElement x="307" y="0" width="81" height="15" uuid="000feb72-9b7d-42e6-ade9-8e12359c3eef"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> - <textFieldExpression><![CDATA[$R{Rech.-Betrag}]]></textFieldExpression> + <textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression> </textField> </band> </groupHeader> @@ -140,7 +140,7 @@ <textField> <reportElement x="13" y="88" width="527" height="20" forecolor="#000000" uuid="a47fa80c-6b70-4c8a-938d-3d44273b1ffb"/> <textElement textAlignment="Center" verticalAlignment="Middle"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{Address}]]></textFieldExpression> </textField> @@ -157,35 +157,35 @@ <textField isStretchWithOverflow="true"> <reportElement x="13" y="122" width="152" height="20" uuid="c8514bfb-5e34-43f4-a256-7899cb58f0c1"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$P{ReminderAddress}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="172" width="132" height="20" uuid="d21620a9-4a49-496e-80f6-db842f0b70a9"/> <textElement> - <font size="14" isBold="true"/> + <font size="14" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{Reminder}]]></textFieldExpression> </textField> <textField pattern="dd.MM.yyyy"> <reportElement x="388" y="192" width="100" height="20" uuid="5141d92f-3325-445b-b616-90630c1648f7"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="232" width="294" height="20" uuid="3f7d1c4a-a326-436b-831d-5da9fd255bf0"/> <textElement> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$F{DUNNINGTEXT}]]></textFieldExpression> </textField> <textField> <reportElement x="13" y="212" width="214" height="20" uuid="52834aec-d107-4cc7-9662-1cdd73ba15c1"/> <textElement> - <font size="8" isBold="true"/> + <font size="8" isBold="true"/> </textElement> <textFieldExpression><![CDATA[$P{Dunninglevel} + " " + $F{DUNNINGLEVEL}]]></textFieldExpression> </textField> @@ -196,21 +196,21 @@ <textField pattern="EEEEE dd MMMMM yyyy"> <reportElement x="340" y="13" width="112" height="15" forecolor="#999999" uuid="26510f19-a203-4b34-8093-f6a9f7f6050e"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[new java.util.Date()]]></textFieldExpression> </textField> <textField> <reportElement x="452" y="13" width="48" height="15" forecolor="#999999" uuid="218ef560-390f-4807-b7f6-98e6f6162892"/> <textElement textAlignment="Right"> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[$R{Seite}+" "+$V{PAGE_NUMBER}+" "+$R{von}]]></textFieldExpression> </textField> <textField evaluationTime="Report"> <reportElement x="500" y="13" width="40" height="15" forecolor="#999999" uuid="7ac354ed-0f8f-41fa-80a5-c2a0f74f7e09"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> <textFieldExpression><![CDATA[" " + $V{PAGE_NUMBER}]]></textFieldExpression> </textField>