diff --git a/.aditoprj/ignoredScanServiceTasks.json b/.aditoprj/ignoredScanServiceTasks.json index 876fa8e77553251308a11423050ca464a547eba2..bad77c8c7df0345b93811fa627e1ca06bf884517 100644 --- a/.aditoprj/ignoredScanServiceTasks.json +++ b/.aditoprj/ignoredScanServiceTasks.json @@ -1,11 +1,5 @@ { "entries": [ - { - "target": "aliasDefinition/Data_alias/Data_alias.aod", - "line": -1, - "description": "The table \"AB_LOGHISTORY\" has no primary key [65]", - "groupName": "nb-tasklist-warning" - }, { "target": "aliasDefinition/Data_alias/Data_alias.aod", "line": -1, @@ -41,6 +35,36 @@ "line": -1, "description": "There is no index for the column \"DEPLOYMENT_ID\" in the table \"DATABASECHANGELOG\" [59]", "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhaseFunnelChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePieChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT\" located in: PhasePyramidChart/defaultGroupFields/#EXTENSION.Phase_filterExtention.Phase_filterExtention#TEXT [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: TreeTable/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]", + "groupName": "nb-tasklist-warning" + }, + { + "target": "neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod", + "line": -1, + "description": "Dead Reference \"#EXTENSION.Month.Month#NUMBER\" located in: dynamicChart/defaultGroupFields/#EXTENSION.Month.Month#NUMBER [67]", + "groupName": "nb-tasklist-warning" } ] } \ No newline at end of file diff --git a/.aditoprj/project.version b/.aditoprj/project.version index b4940e7b136a1e7dc45d5afe6100e622a0deb61d..94b3c6aab89bbcc9e3c5433f62e4fa30fa7bee5b 100644 --- a/.aditoprj/project.version +++ b/.aditoprj/project.version @@ -1,3 +1,3 @@ #This file is generated by ADITO designer. Do NOT delete or modify! -#Tue Sep 08 15:42:02 CEST 2020 -version=6.2.0 +#Thu Dec 17 10:59:19 CET 2020 +version=6.2.1 diff --git a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml index 62c9c29573a17ca606e5c08d2f5ed680729208ae..c1d76b19cd28910c8be6ee4cb90f1a5a8b1e5541 100644 --- a/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml +++ b/.liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml @@ -10,10 +10,10 @@ <column name="ACTIVITY_ID"/> </createIndex> </changeSet> - <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl" dbms="!oracle"> + <changeSet id="e7527e13-7546-4fa6-ac95-5cc3e1f27056" author="s.listl"> <preConditions onFail="MARK_RAN"> <not> - <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer"/> + <changeSetExecuted id="5a0b62f4-6770-454c-9a0e-d60ca16596dd" author="j.goderbauer" changeLogFile=".liquibase/Data_alias/basic/2019.3.2/reworkDbIndexes.xml"/> </not> </preConditions> <createIndex indexName="IDX_TICKET_TASK_ID" tableName="TICKET"> 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 372497186413416a3a27831bd933c08792bbd0d2..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,7 +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"/> + <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.2/Knowledgemanagement/changelog_knowledgeManagement.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/changelog_knowledgeManagement.xml new file mode 100644 index 0000000000000000000000000000000000000000..06a974df46bd976884bc388f86c95285a26023c8 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/changelog_knowledgeManagement.xml @@ -0,0 +1,14 @@ +<?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="struct/knowledgeManagement_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTagModeration_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeDiscussion_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeGitInterface_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeLink_table.xml" relativeToChangelogFile="true" /> + <include file="data/knowledgeKeywords.xml" relativeToChangelogFile="true" /> + <include file="struct/create_KnowledgeRoles.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTag_table.xml" relativeToChangelogFile="true" /> + <include file="struct/knowledgeTagLink_table.xml" relativeToChangelogFile="true" /> + <include file="data/knowledgeTag.xml" relativeToChangelogFile="true" /> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/git.css b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/git.css new file mode 100644 index 0000000000000000000000000000000000000000..cb1b3ff2ef344a20d2a636075ad42db25cc9482c --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/git.css @@ -0,0 +1,450 @@ +/* Asciidoctor default stylesheet | MIT License | http://asciidoctor.org */ +/* Uncomment @import statement below to use as custom stylesheet */ +/*@import "https://fonts.googleapis.com/css?family=Open+Sans:300,300italic,400,400italic,600,600italic%7CNoto+Serif:400,400italic,700,700italic%7CDroid+Sans+Mono:400,700";*/ +article,aside,details,figcaption,figure,footer,header,hgroup,main,nav,section,summary{display:block} +audio,canvas,video{display:inline-block} +audio:not([controls]){display:none;height:0} +script{display:none!important} +html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%} +a{background:transparent} +a:focus{outline:thin dotted} +a:active,a:hover{outline:0} +h1{font-size:2em;margin:.67em 0} +abbr[title]{border-bottom:1px dotted} +b,strong{font-weight:bold} +dfn{font-style:italic} +hr{-moz-box-sizing:content-box;box-sizing:content-box;height:0} +mark{background:#ff0;color:#000} +code,kbd,pre,samp{font-family:monospace;font-size:1em} +pre{white-space:pre-wrap} +q{quotes:"\201C" "\201D" "\2018" "\2019"} +small{font-size:80%} +sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sup{top:-.5em} +sub{bottom:-.25em} +img{border:0} +svg:not(:root){overflow:hidden} +figure{margin:0} +fieldset{border:1px solid silver;margin:0 2px;padding:.35em .625em .75em} +legend{border:0;padding:0} +button,input,select,textarea{font-family:inherit;font-size:100%;margin:0} +button,input{line-height:normal} +button,select{text-transform:none} +button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer} +button[disabled],html input[disabled]{cursor:default} +input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0} +button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0} +textarea{overflow:auto;vertical-align:top} +table{border-collapse:collapse;border-spacing:0} +*,*::before,*::after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box} +html,body{font-size:100%} +body{background:#fff;color:rgba(0,0,0,.8);padding:0;margin:0;font-family:"Noto Serif","DejaVu Serif",serif;font-weight:400;font-style:normal;line-height:1;position:relative;cursor:auto;tab-size:4;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased} +a:hover{cursor:pointer} +img,object,embed{max-width:100%;height:auto} +object,embed{height:100%} +img{-ms-interpolation-mode:bicubic} +.left{float:left!important} +.right{float:right!important} +.text-left{text-align:left!important} +.text-right{text-align:right!important} +.text-center{text-align:center!important} +.text-justify{text-align:justify!important} +.hide{display:none} +img,object,svg{display:inline-block;vertical-align:middle} +textarea{height:auto;min-height:50px} +select{width:100%} +.center{margin-left:auto;margin-right:auto} +.stretch{width:100%} +.subheader,.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{line-height:1.45;color:#7a2518;font-weight:400;margin-top:0;margin-bottom:.25em} +div,dl,dt,dd,ul,ol,li,h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6,pre,form,p,blockquote,th,td{margin:0;padding:0;direction:ltr} +a{color:#2156a5;text-decoration:underline;line-height:inherit} +a:hover,a:focus{color:#1d4b8f} +a img{border:none} +p{font-family:inherit;font-weight:400;font-size:1em;line-height:1.6;margin-bottom:1.25em;text-rendering:optimizeLegibility} +p aside{font-size:.875em;line-height:1.35;font-style:italic} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{font-family:"Open Sans","DejaVu Sans",sans-serif;font-weight:300;font-style:normal;color:#ba3925;text-rendering:optimizeLegibility;margin-top:1em;margin-bottom:.5em;line-height:1.0125em} +h1 small,h2 small,h3 small,#toctitle small,.sidebarblock>.content>.title small,h4 small,h5 small,h6 small{font-size:60%;color:#e99b8f;line-height:0} +h1{font-size:2.125em} +h2{font-size:1.6875em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.375em} +h4,h5{font-size:1.125em} +h6{font-size:1em} +hr{border:solid #ddddd8;border-width:1px 0 0;clear:both;margin:1.25em 0 1.1875em;height:0} +em,i{font-style:italic;line-height:inherit} +strong,b{font-weight:bold;line-height:inherit} +small{font-size:60%;line-height:inherit} +code{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;color:rgba(0,0,0,.9)} +ul,ol,dl{font-size:1em;line-height:1.6;margin-bottom:1.25em;list-style-position:outside;font-family:inherit} +ul,ol{margin-left:1.5em} +ul li ul,ul li ol{margin-left:1.25em;margin-bottom:0;font-size:1em} +ul.square li ul,ul.circle li ul,ul.disc li ul{list-style:inherit} +ul.square{list-style-type:square} +ul.circle{list-style-type:circle} +ul.disc{list-style-type:disc} +ol li ul,ol li ol{margin-left:1.25em;margin-bottom:0} +dl dt{margin-bottom:.3125em;font-weight:bold} +dl dd{margin-bottom:1.25em} +abbr,acronym{text-transform:uppercase;font-size:90%;color:rgba(0,0,0,.8);border-bottom:1px dotted #ddd;cursor:help} +abbr{text-transform:none} +blockquote{margin:0 0 1.25em;padding:.5625em 1.25em 0 1.1875em;border-left:1px solid #ddd} +blockquote cite{display:block;font-size:.9375em;color:rgba(0,0,0,.6)} +blockquote cite::before{content:"\2014 \0020"} +blockquote cite a,blockquote cite a:visited{color:rgba(0,0,0,.6)} +blockquote,blockquote p{line-height:1.6;color:rgba(0,0,0,.85)} +@media screen and (min-width:768px){h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2} +h1{font-size:2.75em} +h2{font-size:2.3125em} +h3,#toctitle,.sidebarblock>.content>.title{font-size:1.6875em} +h4{font-size:1.4375em}} +table{background:#fff;margin-bottom:1.25em;border:solid 1px #dedede} +table thead,table tfoot{background:#f7f8f7} +table thead tr th,table thead tr td,table tfoot tr th,table tfoot tr td{padding:.5em .625em .625em;font-size:inherit;color:rgba(0,0,0,.8);text-align:left} +table tr th,table tr td{padding:.5625em .625em;font-size:inherit;color:rgba(0,0,0,.8)} +table tr.even,table tr.alt,table tr:nth-of-type(even){background:#f8f8f7} +table thead tr th,table tfoot tr th,table tbody tr td,table tr td,table tfoot tr td{display:table-cell;line-height:1.6} +h1,h2,h3,#toctitle,.sidebarblock>.content>.title,h4,h5,h6{line-height:1.2;word-spacing:-.05em} +h1 strong,h2 strong,h3 strong,#toctitle strong,.sidebarblock>.content>.title strong,h4 strong,h5 strong,h6 strong{font-weight:400} +.clearfix::before,.clearfix::after,.float-group::before,.float-group::after{content:" ";display:table} +.clearfix::after,.float-group::after{clear:both} +*:not(pre)>code{font-size:.9375em;font-style:normal!important;letter-spacing:0;padding:.1em .5ex;word-spacing:-.15em;background-color:#f7f7f8;-webkit-border-radius:4px;border-radius:4px;line-height:1.45;text-rendering:optimizeSpeed;word-wrap:break-word} +*:not(pre)>code.nobreak{word-wrap:normal} +*:not(pre)>code.nowrap{white-space:nowrap} +pre,pre>code{line-height:1.45;color:rgba(0,0,0,.9);font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;font-weight:400;text-rendering:optimizeSpeed} +em em{font-style:normal} +strong strong{font-weight:400} +.keyseq{color:rgba(51,51,51,.8)} +kbd{font-family:"Droid Sans Mono","DejaVu Sans Mono",monospace;display:inline-block;color:rgba(0,0,0,.8);font-size:.65em;line-height:1.45;background-color:#f7f7f7;border:1px solid #ccc;-webkit-border-radius:3px;border-radius:3px;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em white inset;box-shadow:0 1px 0 rgba(0,0,0,.2),0 0 0 .1em #fff inset;margin:0 .15em;padding:.2em .5em;vertical-align:middle;position:relative;top:-.1em;white-space:nowrap} +.keyseq kbd:first-child{margin-left:0} +.keyseq kbd:last-child{margin-right:0} +.menuseq,.menuref{color:#000} +.menuseq b:not(.caret),.menuref{font-weight:inherit} +.menuseq{word-spacing:-.02em} +.menuseq b.caret{font-size:1.25em;line-height:.8} +.menuseq i.caret{font-weight:bold;text-align:center;width:.45em} +b.button::before,b.button::after{position:relative;top:-1px;font-weight:400} +b.button::before{content:"[";padding:0 3px 0 2px} +b.button::after{content:"]";padding:0 2px 0 3px} +p a>code:hover{color:rgba(0,0,0,.9)} +#header,#content,#footnotes,#footer{width:100%;margin-left:auto;margin-right:auto;margin-top:0;margin-bottom:0;/*max-width:62.5em;*/*zoom:1;position:relative;padding-left:.9375em;padding-right:.9375em} +#header::before,#header::after,#content::before,#content::after,#footnotes::before,#footnotes::after,#footer::before,#footer::after{content:" ";display:table} +#header::after,#content::after,#footnotes::after,#footer::after{clear:both} +#content{margin-top:1.25em} +#content::before{content:none} +#header>h1:first-child{color:rgba(0,0,0,.85);margin-top:2.25rem;margin-bottom:0} +#header>h1:first-child+#toc{margin-top:8px;border-top:1px solid #ddddd8} +#header>h1:only-child,body.toc2 #header>h1:nth-last-child(2){border-bottom:1px solid #ddddd8;padding-bottom:8px} +#header .details{border-bottom:1px solid #ddddd8;line-height:1.45;padding-top:.25em;padding-bottom:.25em;padding-left:.25em;color:rgba(0,0,0,.6);display:-ms-flexbox;display:-webkit-flex;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap} +#header .details span:first-child{margin-left:-.125em} +#header .details span.email a{color:rgba(0,0,0,.85)} +#header .details br{display:none} +#header .details br+span::before{content:"\00a0\2013\00a0"} +#header .details br+span.author::before{content:"\00a0\22c5\00a0";color:rgba(0,0,0,.85)} +#header .details br+span#revremark::before{content:"\00a0|\00a0"} +#header #revnumber{text-transform:capitalize} +#header #revnumber::after{content:"\00a0"} +#content>h1:first-child:not([class]){color:rgba(0,0,0,.85);border-bottom:1px solid #ddddd8;padding-bottom:8px;margin-top:0;padding-top:1rem;margin-bottom:1.25rem} +#toc{border-bottom:1px solid #efefed;padding-bottom:.5em} +#toc>ul{margin-left:.125em} +#toc ul.sectlevel0>li>a{font-style:italic} +#toc ul.sectlevel0 ul.sectlevel1{margin:.5em 0} +#toc ul{font-family:"Open Sans","DejaVu Sans",sans-serif;list-style-type:none} +#toc li{line-height:1.3334;margin-top:.3334em} +#toc a{text-decoration:none} +#toc a:active{text-decoration:underline} +#toctitle{color:#7a2518;font-size:1.2em} +@media screen and (min-width:768px){#toctitle{font-size:1.375em} +body.toc2{padding-left:15em;padding-right:0} +#toc.toc2{margin-top:0!important;background-color:#f8f8f7;position:fixed;width:15em;left:0;top:0;border-right:1px solid #efefed;border-top-width:0!important;border-bottom-width:0!important;z-index:1000;padding:1.25em 1em;height:100%;overflow:auto} +#toc.toc2 #toctitle{margin-top:0;margin-bottom:.8rem;font-size:1.2em} +#toc.toc2>ul{font-size:.9em;margin-bottom:0} +#toc.toc2 ul ul{margin-left:0;padding-left:1em} +#toc.toc2 ul.sectlevel0 ul.sectlevel1{padding-left:0;margin-top:.5em;margin-bottom:.5em} +body.toc2.toc-right{padding-left:0;padding-right:15em} +body.toc2.toc-right #toc.toc2{border-right-width:0;border-left:1px solid #efefed;left:auto;right:0}} +@media screen and (min-width:1280px){body.toc2{padding-left:20em;padding-right:0} +#toc.toc2{width:20em} +#toc.toc2 #toctitle{font-size:1.375em} +#toc.toc2>ul{font-size:.95em} +#toc.toc2 ul ul{padding-left:1.25em} +body.toc2.toc-right{padding-left:0;padding-right:20em}} +#content #toc{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +#content #toc>:first-child{margin-top:0} +#content #toc>:last-child{margin-bottom:0} +#footer{max-width:100%;background-color:rgba(0,0,0,.8);padding:1.25em} +#footer-text{color:rgba(255,255,255,.8);line-height:1.44} +#content{margin-bottom:.625em} +.sect1{padding-bottom:.625em} +@media screen and (min-width:768px){#content{margin-bottom:1.25em} +.sect1{padding-bottom:1.25em}} +.sect1:last-child{padding-bottom:0} +.sect1+.sect1{border-top:1px solid #efefed} +#content h1>a.anchor,h2>a.anchor,h3>a.anchor,#toctitle>a.anchor,.sidebarblock>.content>.title>a.anchor,h4>a.anchor,h5>a.anchor,h6>a.anchor{position:absolute;z-index:1001;width:1.5ex;margin-left:-1.5ex;display:block;text-decoration:none!important;visibility:hidden;text-align:center;font-weight:400} +#content h1>a.anchor::before,h2>a.anchor::before,h3>a.anchor::before,#toctitle>a.anchor::before,.sidebarblock>.content>.title>a.anchor::before,h4>a.anchor::before,h5>a.anchor::before,h6>a.anchor::before{content:"\00A7";font-size:.85em;display:block;padding-top:.1em} +#content h1:hover>a.anchor,#content h1>a.anchor:hover,h2:hover>a.anchor,h2>a.anchor:hover,h3:hover>a.anchor,#toctitle:hover>a.anchor,.sidebarblock>.content>.title:hover>a.anchor,h3>a.anchor:hover,#toctitle>a.anchor:hover,.sidebarblock>.content>.title>a.anchor:hover,h4:hover>a.anchor,h4>a.anchor:hover,h5:hover>a.anchor,h5>a.anchor:hover,h6:hover>a.anchor,h6>a.anchor:hover{visibility:visible} +#content h1>a.link,h2>a.link,h3>a.link,#toctitle>a.link,.sidebarblock>.content>.title>a.link,h4>a.link,h5>a.link,h6>a.link{color:#ba3925;text-decoration:none} +#content h1>a.link:hover,h2>a.link:hover,h3>a.link:hover,#toctitle>a.link:hover,.sidebarblock>.content>.title>a.link:hover,h4>a.link:hover,h5>a.link:hover,h6>a.link:hover{color:#a53221} +.audioblock,.imageblock,.literalblock,.listingblock,.stemblock,.videoblock{margin-bottom:1.25em} +.admonitionblock td.content>.title,.audioblock>.title,.exampleblock>.title,.imageblock>.title,.listingblock>.title,.literalblock>.title,.stemblock>.title,.openblock>.title,.paragraph>.title,.quoteblock>.title,table.tableblock>.title,.verseblock>.title,.videoblock>.title,.dlist>.title,.olist>.title,.ulist>.title,.qlist>.title,.hdlist>.title{text-rendering:optimizeLegibility;text-align:left;font-family:"Noto Serif","DejaVu Serif",serif;font-size:1rem;font-style:italic} +table.tableblock.fit-content>caption.title{white-space:nowrap;width:0} +.paragraph.lead>p,#preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:1.21875em;line-height:1.6;color:rgba(0,0,0,.85)} +table.tableblock #preamble>.sectionbody>[class="paragraph"]:first-of-type p{font-size:inherit} +.admonitionblock>table{border-collapse:separate;border:0;background:none;width:100%} +.admonitionblock>table td.icon{text-align:center;width:80px} +.admonitionblock>table td.icon img{max-width:none} +.admonitionblock>table td.icon .title{font-weight:bold;font-family:"Open Sans","DejaVu Sans",sans-serif;text-transform:uppercase} +.admonitionblock>table td.content{padding-left:1.125em;padding-right:1.25em;border-left:1px solid #ddddd8;color:rgba(0,0,0,.6)} +.admonitionblock>table td.content>:last-child>:last-child{margin-bottom:0} +.exampleblock>.content{border-style:solid;border-width:1px;border-color:#e6e6e6;margin-bottom:1.25em;padding:1.25em;background:#fff;-webkit-border-radius:4px;border-radius:4px} +.exampleblock>.content>:first-child{margin-top:0} +.exampleblock>.content>:last-child{margin-bottom:0} +.sidebarblock{border-style:solid;border-width:1px;border-color:#e0e0dc;margin-bottom:1.25em;padding:1.25em;background:#f8f8f7;-webkit-border-radius:4px;border-radius:4px} +.sidebarblock>:first-child{margin-top:0} +.sidebarblock>:last-child{margin-bottom:0} +.sidebarblock>.content>.title{color:#7a2518;margin-top:0;text-align:center} +.exampleblock>.content>:last-child>:last-child,.exampleblock>.content .olist>ol>li:last-child>:last-child,.exampleblock>.content .ulist>ul>li:last-child>:last-child,.exampleblock>.content .qlist>ol>li:last-child>:last-child,.sidebarblock>.content>:last-child>:last-child,.sidebarblock>.content .olist>ol>li:last-child>:last-child,.sidebarblock>.content .ulist>ul>li:last-child>:last-child,.sidebarblock>.content .qlist>ol>li:last-child>:last-child{margin-bottom:0} +.literalblock pre,.listingblock pre:not(.highlight),.listingblock pre[class="highlight"],.listingblock pre[class^="highlight "],.listingblock pre.CodeRay,.listingblock pre.prettyprint{background:#f7f7f8} +.sidebarblock .literalblock pre,.sidebarblock .listingblock pre:not(.highlight),.sidebarblock .listingblock pre[class="highlight"],.sidebarblock .listingblock pre[class^="highlight "],.sidebarblock .listingblock pre.CodeRay,.sidebarblock .listingblock pre.prettyprint{background:#f2f1f1} +.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{-webkit-border-radius:4px;border-radius:4px;word-wrap:break-word;padding:1em;font-size:.8125em} +.literalblock pre.nowrap,.literalblock pre[class].nowrap,.listingblock pre.nowrap,.listingblock pre[class].nowrap{overflow-x:auto;white-space:pre;word-wrap:normal} +@media screen and (min-width:768px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:.90625em}} +@media screen and (min-width:1280px){.literalblock pre,.literalblock pre[class],.listingblock pre,.listingblock pre[class]{font-size:1em}} +.literalblock.output pre{color:#f7f7f8;background-color:rgba(0,0,0,.9)} +.listingblock pre.highlightjs{padding:0} +.listingblock pre.highlightjs>code{padding:1em;-webkit-border-radius:4px;border-radius:4px} +.listingblock pre.prettyprint{border-width:0} +.listingblock>.content{position:relative} +.listingblock code[data-lang]::before{display:none;content:attr(data-lang);position:absolute;font-size:.75em;top:.425rem;right:.5rem;line-height:1;text-transform:uppercase;color:#999} +.listingblock:hover code[data-lang]::before{display:block} +.listingblock.terminal pre .command::before{content:attr(data-prompt);padding-right:.5em;color:#999} +.listingblock.terminal pre .command:not([data-prompt])::before{content:"$"} +table.pyhltable{border-collapse:separate;border:0;margin-bottom:0;background:none} +table.pyhltable td{vertical-align:top;padding-top:0;padding-bottom:0;line-height:1.45} +table.pyhltable td.code{padding-left:.75em;padding-right:0} +pre.pygments .lineno,table.pyhltable td:not(.code){color:#999;padding-left:0;padding-right:.5em;border-right:1px solid #ddddd8} +pre.pygments .lineno{display:inline-block;margin-right:.25em} +table.pyhltable .linenodiv{background:none!important;padding-right:0!important} +.quoteblock{margin:0 1em 1.25em 1.5em;display:table} +.quoteblock>.title{margin-left:-1.5em;margin-bottom:.75em} +.quoteblock blockquote,.quoteblock blockquote p{color:rgba(0,0,0,.85);font-size:1.15rem;line-height:1.75;word-spacing:.1em;letter-spacing:0;font-style:italic;text-align:justify} +.quoteblock blockquote{margin:0;padding:0;border:0} +.quoteblock blockquote::before{content:"\201c";float:left;font-size:2.75em;font-weight:bold;line-height:.6em;margin-left:-.6em;color:#7a2518;text-shadow:0 1px 2px rgba(0,0,0,.1)} +.quoteblock blockquote>.paragraph:last-child p{margin-bottom:0} +.quoteblock .attribution{margin-top:.5em;margin-right:.5ex;text-align:right} +.quoteblock .quoteblock{margin-left:0;margin-right:0;padding:.5em 0;border-left:3px solid rgba(0,0,0,.6)} +.quoteblock .quoteblock blockquote{padding:0 0 0 .75em} +.quoteblock .quoteblock blockquote::before{display:none} +.verseblock{margin:0 1em 1.25em} +.verseblock pre{font-family:"Open Sans","DejaVu Sans",sans;font-size:1.15rem;color:rgba(0,0,0,.85);font-weight:300;text-rendering:optimizeLegibility} +.verseblock pre strong{font-weight:400} +.verseblock .attribution{margin-top:1.25rem;margin-left:.5ex} +.quoteblock .attribution,.verseblock .attribution{font-size:.9375em;line-height:1.45;font-style:italic} +.quoteblock .attribution br,.verseblock .attribution br{display:none} +.quoteblock .attribution cite,.verseblock .attribution cite{display:block;letter-spacing:-.025em;color:rgba(0,0,0,.6)} +.quoteblock.abstract{margin:0 1em 1.25em;display:block} +.quoteblock.abstract>.title{margin:0 0 .375em;font-size:1.15em;text-align:center} +.quoteblock.abstract blockquote,.quoteblock.abstract blockquote p{word-spacing:0;line-height:1.6} +.quoteblock.abstract blockquote::before,.quoteblock.abstract p::before{display:none} +table.tableblock{max-width:100%;border-collapse:separate} +p.tableblock:last-child{margin-bottom:0} +td.tableblock>.content{margin-bottom:-1.25em} +table.tableblock,th.tableblock,td.tableblock{border:0 solid #dedede} +table.grid-all>thead>tr>.tableblock,table.grid-all>tbody>tr>.tableblock{border-width:0 1px 1px 0} +table.grid-all>tfoot>tr>.tableblock{border-width:1px 1px 0 0} +table.grid-cols>*>tr>.tableblock{border-width:0 1px 0 0} +table.grid-rows>thead>tr>.tableblock,table.grid-rows>tbody>tr>.tableblock{border-width:0 0 1px} +table.grid-rows>tfoot>tr>.tableblock{border-width:1px 0 0} +table.grid-all>*>tr>.tableblock:last-child,table.grid-cols>*>tr>.tableblock:last-child{border-right-width:0} +table.grid-all>tbody>tr:last-child>.tableblock,table.grid-all>thead:last-child>tr>.tableblock,table.grid-rows>tbody>tr:last-child>.tableblock,table.grid-rows>thead:last-child>tr>.tableblock{border-bottom-width:0} +table.frame-all{border-width:1px} +table.frame-sides{border-width:0 1px} +table.frame-topbot,table.frame-ends{border-width:1px 0} +table.stripes-all tr,table.stripes-odd tr:nth-of-type(odd){background:#f8f8f7} +table.stripes-none tr,table.stripes-odd tr:nth-of-type(even){background:none} +th.halign-left,td.halign-left{text-align:left} +th.halign-right,td.halign-right{text-align:right} +th.halign-center,td.halign-center{text-align:center} +th.valign-top,td.valign-top{vertical-align:top} +th.valign-bottom,td.valign-bottom{vertical-align:bottom} +th.valign-middle,td.valign-middle{vertical-align:middle} +table thead th,table tfoot th{font-weight:bold} +tbody tr th{display:table-cell;line-height:1.6;background:#f7f8f7} +tbody tr th,tbody tr th p,tfoot tr th,tfoot tr th p{color:rgba(0,0,0,.8);font-weight:bold} +p.tableblock>code:only-child{background:none;padding:0} +p.tableblock{font-size:1em} +td>div.verse{white-space:pre} +ol{margin-left:1.75em} +ul li ol{margin-left:1.5em} +dl dd{margin-left:1.125em} +dl dd:last-child,dl dd:last-child>:last-child{margin-bottom:0} +ol>li p,ul>li p,ul dd,ol dd,.olist .olist,.ulist .ulist,.ulist .olist,.olist .ulist{margin-bottom:.625em} +ul.checklist,ul.none,ol.none,ul.no-bullet,ol.no-bullet,ol.unnumbered,ul.unstyled,ol.unstyled{list-style-type:none} +ul.no-bullet,ol.no-bullet,ol.unnumbered{margin-left:.625em} +ul.unstyled,ol.unstyled{margin-left:0} +ul.checklist{margin-left:.625em} +ul.checklist li>p:first-child>.fa-square-o:first-child,ul.checklist li>p:first-child>.fa-check-square-o:first-child{width:1.25em;font-size:.8em;position:relative;bottom:.125em} +ul.checklist li>p:first-child>input[type="checkbox"]:first-child{margin-right:.25em} +ul.inline{display:-ms-flexbox;display:-webkit-box;display:flex;-ms-flex-flow:row wrap;-webkit-flex-flow:row wrap;flex-flow:row wrap;list-style:none;margin:0 0 .625em -1.25em} +ul.inline>li{margin-left:1.25em} +.unstyled dl dt{font-weight:400;font-style:normal} +ol.arabic{list-style-type:decimal} +ol.decimal{list-style-type:decimal-leading-zero} +ol.loweralpha{list-style-type:lower-alpha} +ol.upperalpha{list-style-type:upper-alpha} +ol.lowerroman{list-style-type:lower-roman} +ol.upperroman{list-style-type:upper-roman} +ol.lowergreek{list-style-type:lower-greek} +.hdlist>table,.colist>table{border:0;background:none} +.hdlist>table>tbody>tr,.colist>table>tbody>tr{background:none} +td.hdlist1,td.hdlist2{vertical-align:top;padding:0 .625em} +td.hdlist1{font-weight:bold;padding-bottom:1.25em} +.literalblock+.colist,.listingblock+.colist{margin-top:-.5em} +.colist td:not([class]):first-child{padding:.4em .75em 0;line-height:1;vertical-align:top} +.colist td:not([class]):first-child img{max-width:none} +.colist td:not([class]):last-child{padding:.25em 0} +.thumb,.th{line-height:0;display:inline-block;border:solid 4px #fff;-webkit-box-shadow:0 0 0 1px #ddd;box-shadow:0 0 0 1px #ddd} +.imageblock.left,.imageblock[style*="float: left"]{margin:.25em .625em 1.25em 0} +.imageblock.right,.imageblock[style*="float: right"]{margin:.25em 0 1.25em .625em} +.imageblock>.title{margin-bottom:0} +.imageblock.thumb,.imageblock.th{border-width:6px} +.imageblock.thumb>.title,.imageblock.th>.title{padding:0 .125em} +.image.left,.image.right{margin-top:.25em;margin-bottom:.25em;display:inline-block;line-height:0} +.image.left{margin-right:.625em} +.image.right{margin-left:.625em} +a.image{text-decoration:none;display:inline-block} +a.image object{pointer-events:none} +sup.footnote,sup.footnoteref{font-size:.875em;position:static;vertical-align:super} +sup.footnote a,sup.footnoteref a{text-decoration:none} +sup.footnote a:active,sup.footnoteref a:active{text-decoration:underline} +#footnotes{padding-top:.75em;padding-bottom:.75em;margin-bottom:.625em} +#footnotes hr{width:20%;min-width:6.25em;margin:-.25em 0 .75em;border-width:1px 0 0} +#footnotes .footnote{padding:0 .375em 0 .225em;line-height:1.3334;font-size:.875em;margin-left:1.2em;margin-bottom:.2em} +#footnotes .footnote a:first-of-type{font-weight:bold;text-decoration:none;margin-left:-1.05em} +#footnotes .footnote:last-of-type{margin-bottom:0} +#content #footnotes{margin-top:-.625em;margin-bottom:0;padding:.75em 0} +.gist .file-data>table{border:0;background:#fff;width:100%;margin-bottom:0} +.gist .file-data>table td.line-data{width:99%} +div.unbreakable{page-break-inside:avoid} +.big{font-size:larger} +.small{font-size:smaller} +.underline{text-decoration:underline} +.overline{text-decoration:overline} +.line-through{text-decoration:line-through} +.aqua{color:#00bfbf} +.aqua-background{background-color:#00fafa} +.black{color:#000} +.black-background{background-color:#000} +.blue{color:#0000bf} +.blue-background{background-color:#0000fa} +.fuchsia{color:#bf00bf} +.fuchsia-background{background-color:#fa00fa} +.gray{color:#606060} +.gray-background{background-color:#7d7d7d} +.green{color:#006000} +.green-background{background-color:#007d00} +.lime{color:#00bf00} +.lime-background{background-color:#00fa00} +.maroon{color:#600000} +.maroon-background{background-color:#7d0000} +.navy{color:#000060} +.navy-background{background-color:#00007d} +.olive{color:#606000} +.olive-background{background-color:#7d7d00} +.purple{color:#600060} +.purple-background{background-color:#7d007d} +.red{color:#bf0000} +.red-background{background-color:#fa0000} +.silver{color:#909090} +.silver-background{background-color:#bcbcbc} +.teal{color:#006060} +.teal-background{background-color:#007d7d} +.white{color:#bfbfbf} +.white-background{background-color:#fafafa} +.yellow{color:#bfbf00} +.yellow-background{background-color:#fafa00} +span.icon>.fa{cursor:default} +a span.icon>.fa{cursor:inherit} +.admonitionblock td.icon [class^="fa icon-"]{font-size:2.5em;text-shadow:1px 1px 2px rgba(0,0,0,.5);cursor:default} +.admonitionblock td.icon .icon-note::before{content:"\f05a";color:#19407c} +.admonitionblock td.icon .icon-tip::before{content:"\f0eb";text-shadow:1px 1px 2px rgba(155,155,0,.8);color:#111} +.admonitionblock td.icon .icon-warning::before{content:"\f071";color:#bf6900} +.admonitionblock td.icon .icon-caution::before{content:"\f06d";color:#bf3400} +.admonitionblock td.icon .icon-important::before{content:"\f06a";color:#bf0000} +.conum[data-value]{display:inline-block;color:#fff!important;background-color:rgba(0,0,0,.8);-webkit-border-radius:100px;border-radius:100px;text-align:center;font-size:.75em;width:1.67em;height:1.67em;line-height:1.67em;font-family:"Open Sans","DejaVu Sans",sans-serif;font-style:normal;font-weight:bold} +.conum[data-value] *{color:#fff!important} +.conum[data-value]+b{display:none} +.conum[data-value]::after{content:attr(data-value)} +pre .conum[data-value]{position:relative;top:-.125em} +b.conum *{color:inherit!important} +.conum:not([data-value]):empty{display:none} +dt,th.tableblock,td.content,div.footnote{text-rendering:optimizeLegibility} +h1,h2,p,td.content,span.alt{letter-spacing:-.01em} +p strong,td.content strong,div.footnote strong{letter-spacing:-.005em} +p,blockquote,dt,td.content,span.alt{font-size:1.0625rem} +p{margin-bottom:1.25rem} +.sidebarblock p,.sidebarblock dt,.sidebarblock td.content,p.tableblock{font-size:1em} +.exampleblock>.content{background-color:#fffef7;border-color:#e0e0dc;-webkit-box-shadow:0 1px 4px #e0e0dc;box-shadow:0 1px 4px #e0e0dc} +.print-only{display:none!important} +@page{margin:1.25cm .75cm} +@media print{*{-webkit-box-shadow:none!important;box-shadow:none!important;text-shadow:none!important} +html{font-size:80%} +a{color:inherit!important;text-decoration:underline!important} +a.bare,a[href^="#"],a[href^="mailto:"]{text-decoration:none!important} +a[href^="http:"]:not(.bare)::after,a[href^="https:"]:not(.bare)::after{content:"(" attr(href) ")";display:inline-block;font-size:.875em;padding-left:.25em} +abbr[title]::after{content:" (" attr(title) ")"} +pre,blockquote,tr,img,object,svg{page-break-inside:avoid} +thead{display:table-header-group} +svg{max-width:100%} +p,blockquote,dt,td.content{font-size:1em;orphans:3;widows:3} +h2,h3,#toctitle,.sidebarblock>.content>.title{page-break-after:avoid} +#toc,.sidebarblock,.exampleblock>.content{background:none!important} +#toc{border-bottom:1px solid #ddddd8!important;padding-bottom:0!important} +body.book #header{text-align:center} +body.book #header>h1:first-child{border:0!important;margin:2.5em 0 1em} +body.book #header .details{border:0!important;display:block;padding:0!important} +body.book #header .details span:first-child{margin-left:0!important} +body.book #header .details br{display:block} +body.book #header .details br+span::before{content:none!important} +body.book #toc{border:0!important;text-align:left!important;padding:0!important;margin:0!important} +body.book #toc,body.book #preamble,body.book h1.sect0,body.book .sect1>h2{page-break-before:always} +.listingblock code[data-lang]::before{display:block} +#footer{padding:0 .9375em} +.hide-on-print{display:none!important} +.print-only{display:block!important} +.hide-for-print{display:none!important} +.show-for-print{display:inherit!important}} +@media print,amzn-kf8{#header>h1:first-child{margin-top:1.25rem} +.sect1{padding:0!important} +.sect1+.sect1{border:0} +#footer{background:none} +#footer-text{color:rgba(0,0,0,.6);font-size:.9em}} +@media amzn-kf8{#header,#content,#footnotes,#footer{padding:0}} + +.topcorner { +font-family: Calibri, Verdana; +font-size: 16px; +float:right; +top:100px; +right: 100px; +width: 300px; +height: auto; +background-color: #EBEBEB; +border-width: 1px; +border-color: #666666; +border-style: dotted; +padding: 3px; +box-shadow: 3px 3px 7px #AAAAAA; +} + +.topcorner p { + font-family:inherit;font-weight:400;font-size:1em;text-rendering:optimizeLegibility +} + +.stitletext { +/*font-family: Calibri, Verdana;*/ +color:#ba3925; +font-size: 30px; +padding-top: 4px; +padding-bottom: 4px; +border-bottom: medium solid #000000; +font-weight: bold; +} \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/standard.css b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/standard.css new file mode 100644 index 0000000000000000000000000000000000000000..3ca3c40a41e0fa4fcdd58ee461b200b1460da10d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/blobs/standard.css @@ -0,0 +1,138 @@ +h1 { +font-family: Calibri, Verdana; +color: #E60048; +font-size: 25px; +} + +h2 { +font-family: Calibri, Verdana; +color: #E60048; +font-size: 20px; +} + +h3 { +font-family: Calibri, Verdana; +font-style: italic; +color: #E60048; +font-size: 20px; +} + +h4 { +font-family: Calibri, Verdana; +font-style: italic; +color: #0095B8; +font-size: 20px; +} + +div { +font-family: Calibri, Verdana; +color: #000000; +font-size: 16px; +} + +p { +font-family: Calibri, Verdana; +color: #000000; +font-size: 18px; +} + +li { +font-family: Calibri, Verdana; +color: #000000; +font-size: 18px; +} + +hr { + border: 0; + height: 1px; + background-image: linear-gradient(to right, #22BBFF, #0095B8, #22BBFF); +} + +table { + border-collapse: collapse; +} + +tr:first-child { + background-color: #8EE1FF; +} + +table, th, td { + border: 1px solid #0095B8; +} + +.stitletext { +font-family: Calibri, Verdana; +font-size: 30px; +padding-top: 4px; +padding-bottom: 4px; +color: #E60048; +border-bottom: medium dotted #0095B8; +font-weight: bold; +} + +.proptext { +font-family: Calibri, Verdana; +font-size: 16px; +padding-top: 2px; +padding-bottom: 2px; +color: #E60048; +font-weight: bold; +} + +.liketext { +font-family: Calibri, Verdana; +font-size: 18px; +padding-top: 2px; +padding-bottom: 2px; +color: #e50047; +font-weight: bold; +} + +.hashtag { +font-family: Calibri, Verdana; +font-size: 12px; +font-style: italic; +color: #666666; +} + +.personas { +font-family: Calibri, Verdana; +font-size: 12px; +color: #666666; +font-weight: bold; +} + +.topcorner { +font-family: Calibri, Verdana; +font-size: 16px; +float:right; +top:100px; +right: 100px; +width: 300px; +height: auto; +background-color: #EBEBEB; +border-width: 1px; +border-color: #666666; +border-style: dotted; +padding: 3px; +box-shadow: 3px 3px 7px #AAAAAA; +} + +.amenub { +color: #0095B8; +text-decoration: underline;} + +.processDesc { +float:left; +} + +.mainDiv { + width:100%; + height:100%; +} + +.businessProcess { + margin-top:30px; + width:100%; + height:100%; +} \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml new file mode 100644 index 0000000000000000000000000000000000000000..51f7d6b6984d86786ebf154e20c76b05f996726c --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeKeywords.xml @@ -0,0 +1,87 @@ +<?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="e.pollinger" id="6c1bb89e-60db-4a50-ba77-c81a8ec82d2c"> + <!-- KEYWORD ENTRIES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <!-- Keywords for discussion status --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONACTIVE"/> + <column name="KEYID" value="ACTIVE"/> + <column name="TITLE" value="Active"/> + <column name="CONTAINER" value="DiscussionStatus"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="DISCUSSIONCLOSED"/> + <column name="KEYID" value="CLOSED"/> + <column name="TITLE" value="Closed"/> + <column name="CONTAINER" value="DiscussionStatus"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- Keywords for knowledge type --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="KNOWLEDGEBASE"/> + <column name="KEYID" value="KNOWLEDGEBASE"/> + <column name="TITLE" value="Knowledgebase"/> + <column name="CONTAINER" value="KnowledgeType"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="EDITORIAL"/> + <column name="KEYID" value="EDITORIAL"/> + <column name="TITLE" value="Editorial"/> + <column name="CONTAINER" value="KnowledgeType"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- Keywords for publishing level --> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="INTERNAL"/> + <column name="KEYID" value="INTERNAL"/> + <column name="TITLE" value="Internal"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="1"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="PARTNER"/> + <column name="KEYID" value="PARTNER"/> + <column name="TITLE" value="Partner"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="2"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_KEYWORD_ENTRY"> + <column name="AB_KEYWORD_ENTRYID" value="PUBLIC"/> + <column name="KEYID" value="PUBLIC"/> + <column name="TITLE" value="Public"/> + <column name="CONTAINER" value="KnowledgePublishLevel"/> + <column name="SORTING" valueNumeric="3"/> + <column name="ISACTIVE" valueNumeric="1"/> + </insert> + <!-- KEYWORD ATTRIBUTES ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <insert tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_ATTRIBUTEID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="NAME" value="contentCssStylesheet"/> + <column name="KIND" value="LONG_CHAR_VALUE"/> + <column name="CONTAINER" value="KnowledgeType"/> + </insert> + <!-- KEYWORD ATTRIBUTE RELATIONS ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --> + <!-- Knowledge type stylesheets--> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="d65d9988-2a50-42ed-8235-e1073d7a035e"/> + <column name="AB_KEYWORD_ENTRY_ID" value="KNOWLEDGEBASE"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="LONG_CHAR_VALUE" valueClobFile="blobs/standard.css"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5c8293eb-2ea2-4de3-a4eb-40e1785c9785"/> + <column name="AB_KEYWORD_ENTRY_ID" value="EDITORIAL"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="b03f93a2-3b87-4a98-b3f9-9ed2358abdfe"/> + <column name="LONG_CHAR_VALUE" valueClobFile="blobs/git.css"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeTag.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeTag.xml new file mode 100644 index 0000000000000000000000000000000000000000..4a17a2ef636b13b4149cd96ed23af6735cc726f0 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/data/knowledgeTag.xml @@ -0,0 +1,10 @@ +<?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="e.pollinger" id="9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"> + <insert tableName="KNOWLEDGETAG"> + <column name="KNOWLEDGETAGID" value="9c1bb89e-60db-4a50-ba77-c81a8ec82d2c"/> + <column name="TAG" value="News"/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml new file mode 100644 index 0000000000000000000000000000000000000000..1987399adb221168427363164d365eb6e183c5c2 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/create_KnowledgeRoles.xml @@ -0,0 +1,16 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="f.adler" id="eea7595b-3908-449b-8976-6e822aa1923c"> + <createTable tableName="KNOWLEDGEROLES"> + <column name="KNOWLEDGEROLESID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEROLES_KNOWLEDGEROLESID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/> + <column name="ROLENAME" type="VARCHAR(100)"/> + </createTable> + <createIndex tableName="KNOWLEDGEROLES" indexName="IDX_KNOWLEDGEROLES_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..0f3de5603a81da59cc30743b70c1b38bd1ccfbb0 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeDiscussion_table.xml @@ -0,0 +1,23 @@ +<?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="e.pollinger" id="1261195c-ffc1-4abb-a31f-0732823ee0cb"> + <createTable tableName="KNOWLEDGEDISCUSSION"> + <column name="KNOWLEDGEDISCUSSIONID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEDISCUSSION_KNOWLEDGEDISCUSSIONID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + <column name="STATUS" type="VARCHAR(36)"/> + <column name="AUTHOR" type="NVARCHAR(50)"/> + <column name="DISCUSSIONTEXT" type="LONGTEXT"/> + <column name="PARENTENTRY" type="CHAR(36)"/> + </createTable> + <createIndex tableName="KNOWLEDGEDISCUSSION" indexName="IDX_KNOWLEDGEDISCUSSION_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeGitInterface_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeGitInterface_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..8440cd20fdf2743eb59de8bfee555457cdb59a4b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeGitInterface_table.xml @@ -0,0 +1,17 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="9e24c875-c592-4839-94aa-3de4269b6fe7"> + <createTable tableName="KNOWLEDGEGITINTERFACE"> + <column name="KNOWLEDGEGITINTERFACEID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEGITINTERFACE_KNOWLEDGEGITINTERFACEID"/> + </column> + <column name="GITCOMMIT" type="NVARCHAR(200)"/> + <column name="SYSTEMNAME" type="NVARCHAR(50)"/> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..f600fb7e878088e0b6fa325a68c5e8dab3a292f9 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeLink_table.xml @@ -0,0 +1,21 @@ +<?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="e.pollinger" id="bee4e42e-9103-4464-849e-59d8b11c542e"> + <createTable tableName="KNOWLEDGELINK"> + <column name="KNOWLEDGELINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGELINK_KNOWLEDGELINKID"/> + </column> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"></column> + <column name="DATE_NEW" type="DATETIME2"/> + <column name="DATE_EDIT" type="DATETIME2"/> + <column name="USER_NEW" type="NVARCHAR(50)"/> + <column name="USER_EDIT" type="NVARCHAR(50)"/> + <column name="ROW_ID" type="CHAR(36)"/> + <column name="OBJECT_TYPE" type="NVARCHAR(100)"/> + </createTable> + <createIndex tableName="KNOWLEDGELINK" indexName="IDX_KNOWLEDGELINK_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..ebe0b76822597e70e516335505e6de25c7c85827 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeManagement_table.xml @@ -0,0 +1,29 @@ +<?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="e.pollinger" id="9a0aaba2-c114-4648-ab1e-15acf489f19d"> + <createTable tableName="KNOWLEDGEMANAGEMENT"> + <column name="KNOWLEDGEMANAGEMENTID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGEMANAGEMENT_KNOWLEDGEMANAGEMENTID"/> + </column> + <column name="AUTHOR_CONTACT_ID" type="CHAR(36)"></column> + <column name="RESPONSIBLE_CONTACT_ID" type="CHAR(36)"></column> + <column name="USER_NEW" type="NVARCHAR(63)"></column> + <column name="DATE_NEW" type="DATETIME2"></column> + <column name="USER_EDIT" type="NVARCHAR(63)"></column> + <column name="DATE_EDIT" type="DATETIME2"></column> + <column name="TITLE" type="NVARCHAR(255)"></column> + <column name="CONTENT" type="LONGTEXT"></column> + <column name="CONTENTDECODED" type="LONGTEXT"></column> + <column name="PUBLISH" type="VARCHAR(36)"></column> + <column name="TYPE" type="VARCHAR(36)"></column> + </createTable> + + <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDGEMANAGEMENT_TITLE"> + <column name="TITLE"/> + </createIndex> + <createIndex tableName="KNOWLEDGEMANAGEMENT" indexName="IDX_KNOWLEDGEMANAGEMENT_TYPE"> + <column name="TYPE"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..ba1e74c9fcbbf6a4abe6098fcf2757b76fb5c67b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagLink_table.xml @@ -0,0 +1,23 @@ +<?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="e.pollinger" id="dc0b71e9-616b-4b5a-ad74-1725f0278a15"> + <createTable tableName="KNOWLEDGETAGLINK"> + <column name="KNOWLEDGETAGLINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGETAGLINK_KNOWLEDGETAGLINKID"/> + </column> + <column name="KNOWLEDGETAG_ID" type="CHAR(36)"/> + <column name="KNOWLEDGEMANAGEMENT_ID" type="CHAR(36)"/> + <column name="DATE_NEW" type="TIMESTAMP"/> + <column name="DATE_EDIT" type="TIMESTAMP"/> + <column name="USER_NEW" type="nvarchar(50)"/> + <column name="USER_EDIT" type="nvarchar(50)"/> + </createTable> + <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_TAG_ID"> + <column name="KNOWLEDGETAG_ID"/> + </createIndex> + <createIndex tableName="KNOWLEDGETAGLINK" indexName="IDX_KNOWLEDGETAGLINK_KM_ID"> + <column name="KNOWLEDGEMANAGEMENT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagModeration_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagModeration_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..e15b847360533f7a523e13c747ef200ef325be1b --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTagModeration_table.xml @@ -0,0 +1,13 @@ +<?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="e.pollinger" id="50ea4ad8-c864-489e-a121-92f4738e0a7f"> + <createTable tableName="KNOWLEDGEMANAGEMENTTAGMODERATION"> + <column name="KNOWLEDGEMANAGEMENTTAGMODERATIONID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_TAGMODERATION_KNOWLEDGEMANAGEMENTTAGMODERATIONID"/> + </column> + <column name="AB_ATTRIBUTE_ID" type="CHAR(36)"></column> + <column name="STATUS" type="CHAR(36)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTag_table.xml b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTag_table.xml new file mode 100644 index 0000000000000000000000000000000000000000..aa0b15c81bba60d40c1310404dffc378bba1657f --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/Knowledgemanagement/struct/knowledgeTag_table.xml @@ -0,0 +1,17 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> + <changeSet author="e.pollinger" id="95eabecf-82f8-49c8-87b2-594c338d3c15"> + <createTable tableName="KNOWLEDGETAG"> + <column name="KNOWLEDGETAGID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_KNOWLEDGETAG_KNOWLEDGETAGID"/> + </column> + <column name="TAG" type="VARCHAR(50)"/> + <column name="STATUS" type="CHAR(36)"/> + <column name="DATE_NEW" type="TIMESTAMP"/> + <column name="DATE_EDIT" type="TIMESTAMP"/> + <column name="USER_NEW" type="nvarchar(50)"/> + <column name="USER_EDIT" type="nvarchar(50)"/> + </createTable> + </changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..d4e6ad9f3d5af78d0f0bb7ec2061aee18715067f --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/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="create_MST_TEAM.xml" relativeToChangelogFile="true"/> + <include file="create_MST_TEAMLINK.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml new file mode 100644 index 0000000000000000000000000000000000000000..3753f3db0c75cb67f100b1063a70e82a18a2d5da --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAM.xml @@ -0,0 +1,16 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> +<changeSet author="m.bilda" id="3d4f843d-9c5d-46b1-9475-9527d45a65b6"> + <createTable tableName="MST_TEAM"> + <column name="MST_TEAMID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_MST_TEAM_MST_TEAMID"/> + </column> + <column name="TEAMNAME" type="NVARCHAR(255)"/> + <column name="GENERAL_CHANNELID" type="CHAR(48)"/> + <column name="IS_ARCHIVED" type="TINYINT"/> + <column name="SERVICE_URL" type="NVARCHAR(255)"/> + <column name="WEB_URL" type="NVARCHAR(500)"/> + </createTable> +</changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml new file mode 100644 index 0000000000000000000000000000000000000000..be14298d37a5e2cdf7923b8c3a3edc7005bfd914 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/MSTeams/create_MST_TEAMLINK.xml @@ -0,0 +1,26 @@ +<?xml version="1.1" encoding="UTF-8" standalone="no"?> +<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> +<changeSet author="s.listl" id="05c74217-459f-43ec-8e33-daee059cafd8"> + <createTable tableName="MST_TEAMLINK"> + <column name="MST_TEAMLINKID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_MST_TEAMLINKID"/> + </column> + <column name="MST_TEAM_ID" type="CHAR(36)"> + <constraints nullable="false"/> + </column> + <column name="OBJECT_ROWID" type="CHAR(36)"> + <constraints nullable="false"/> + </column> + <column name="OBJECT_TYPE" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + </createTable> + <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_MST_TEAM_ID"> + <column name="MST_TEAM_ID"/> + </createIndex> + <createIndex tableName="MST_TEAMLINK" indexName="IDX_MST_TEAMLINK_OBJECT_ROWID"> + <column name="OBJECT_ROWID"/> + </createIndex> +</changeSet> +</databaseChangeLog> diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml new file mode 100644 index 0000000000000000000000000000000000000000..349148d665121715e6703272fde03c4da372a7c0 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsible.xml @@ -0,0 +1,10 @@ +<?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="a.voegl" id="2a30b35b-9882-468e-98a6-a10f0561a681"> + <addColumn tableName="CAMPAIGNPARTICIPANT"> + <column name="RESPONSIBLE_CONTACT_ID" type="CHAR(36)"/> + </addColumn> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml new file mode 100644 index 0000000000000000000000000000000000000000..6360542b2dff79630a5591fcbd5f4b8b2287ad87 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_CampaignParticipantResponsibleIndex.xml @@ -0,0 +1,10 @@ +<?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="a.voegl" id="6d545d51-b838-4325-9573-5fe51eade79b"> + <createIndex indexName="IDX_CAMPAIGNPART_RES_CONTACT" tableName="CAMPAIGNPARTICIPANT"> + <column name="RESPONSIBLE_CONTACT_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml new file mode 100644 index 0000000000000000000000000000000000000000..a6625db2f2f6290579c5c747435541ed7d55e78a --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/alter_TableLeadStatus.xml @@ -0,0 +1,19 @@ +<?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 dbms="derby" author="s.pongratz" id="539e6d12-5ba4-424b-a29d-f63a48d07288"> + <sql> + ALTER TABLE LEAD ADD COLUMN STATUS_NEW VARCHAR(36); + UPDATE LEAD SET STATUS_NEW = CAST ( CAST (STATUS as CHAR(36)) as VARCHAR(36) ); + ALTER TABLE LEAD DROP COLUMN STATUS; + RENAME COLUMN LEAD.STATUS_NEW TO STATUS; + </sql> + </changeSet> + <changeSet author="s.pongratz" id="be79e660-b112-4f58-b53d-d9e36ecd145b"> + <preConditions onFail="CONTINUE"> + <not> + <dbms type="derby" /> + </not> + </preConditions> + <modifyDataType tableName="LEAD" columnName="STATUS" newDataType="VARCHAR(36)"/> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/changelog.xml b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml new file mode 100644 index 0000000000000000000000000000000000000000..2a4bea7a4e0949d9504cea14b44a0f11cf14b25d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/changelog.xml @@ -0,0 +1,13 @@ +<?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="insert_commMediumTitleKeywordAttribute.xml"/> + <include relativeToChangelogFile="true" file="Knowledgemanagement/changelog_knowledgeManagement.xml"/> + <include relativeToChangelogFile="true" file="insert_employeeCountAttribute.xml"/> + <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsible.xml"/> + <include relativeToChangelogFile="true" file="alter_TableLeadStatus.xml"/> + <include relativeToChangelogFile="true" file="alter_CampaignParticipantResponsibleIndex.xml"/> + <include relativeToChangelogFile="true" file="MSTeams/changelog.xml"/> + <include relativeToChangelogFile="true" file="insert_newsletterAttribute.xml"/> + <include relativeToChangelogFile="true" file="readd_ExporttemplateIndizes.xml"/> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml new file mode 100644 index 0000000000000000000000000000000000000000..e67d1cc992d389d0c60a4fe30b7a9fb8a3d5944d --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_commMediumTitleKeywordAttribute.xml @@ -0,0 +1,55 @@ +<?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.listl" id="deb46cd2-c2e7-424b-93a1-052cd0a5aef7"> + <insert tableName="AB_KEYWORD_ATTRIBUTE"> + <column name="AB_KEYWORD_ATTRIBUTEID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="CONTAINER" value="CommunicationMedium"/> + <column name="KIND" value="CHAR_VALUE"/> + <column name="NAME" value="placeholderTitle"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="ebf5a52c-34db-4394-9fc1-21dfbdc3c6ea"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="cc16d938-b95f-4e07-a3b4-73f8524bb664"/> + <column name="CHAR_VALUE" value="Phone number"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5a2bb861-31c8-471d-8fb9-a3c28d589b9f"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="66950de5-fa8b-465c-8db1-4eb7aac98bd3"/> + <column name="CHAR_VALUE" value="Email address"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="c860637f-4182-4cc4-9879-7ed3d009aee4"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="aa2b9cc9-3e87-4fe9-98a2-a4e417a3324f"/> + <column name="CHAR_VALUE" value="Phone number"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="def9c03f-4f8b-4158-9f9c-4f2c6f1f52be"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="cfebe176-0a64-428d-b0ec-bba454d2ca3e"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="bf7be765-ebcc-409f-9c81-66665b6b55f6"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="d80c3689-7e0a-45ac-801d-91d199c08bd5"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="9fc7f919-b04c-40f3-8124-9e1d4d8198f5"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="e6c36792-763d-44f8-8afe-157c8f158ef8"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + <insert tableName="AB_KEYWORD_ATTRIBUTERELATION"> + <column name="AB_KEYWORD_ATTRIBUTERELATIONID" value="5d64759f-acd2-4dbc-9df3-c38bceaf8f6b"/> + <column name="AB_KEYWORD_ATTRIBUTE_ID" value="ace00630-1e07-4615-8d61-2478995538fa"/> + <column name="AB_KEYWORD_ENTRY_ID" value="7abf7fc5-08a1-4bae-b0ca-ec5e406d154c"/> + <column name="CHAR_VALUE" value="URL"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml new file mode 100644 index 0000000000000000000000000000000000000000..f84d5e859c535a143acb02b7b54141dc40cdac59 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_employeeCountAttribute.xml @@ -0,0 +1,21 @@ +<?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.listl" id="59d2d137-086a-4c07-869a-72a2b24952d4"> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/> + <column name="ATTRIBUTE_PARENT_ID" value="e32cd923-3774-41c1-95d5-57b79e52e568"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + <column name="ATTRIBUTE_NAME" value="Employee count"/> + <column name="ATTRIBUTE_TYPE" value="NUMBER"/> + <column name="SORTING" valueNumeric="7"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="8de717a1-9d64-44c9-b692-b350b0857d59"/> + <column name="AB_ATTRIBUTE_ID" value="dd024883-c49e-4d09-85c8-829cf9c9c5e9"/> + <column name="OBJECT_TYPE" value="Organisation"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml new file mode 100644 index 0000000000000000000000000000000000000000..af877f23248b079e318b4a090bbb6e8fe3d90cd5 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/insert_newsletterAttribute.xml @@ -0,0 +1,33 @@ +<?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.listl" id="4b285b34-29bc-4446-8d95-37cfcff7bd58"> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="ATTRIBUTE_NAME" value="Marketing"/> + <column name="ATTRIBUTE_TYPE" value="GROUP"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + </insert> + <insert tableName="AB_ATTRIBUTE"> + <column name="AB_ATTRIBUTEID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/> + <column name="ATTRIBUTE_PARENT_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="ATTRIBUTE_NAME" value="Newsletter"/> + <column name="ATTRIBUTE_TYPE" value="BOOLEAN"/> + <column name="ATTRIBUTE_ACTIVE" valueNumeric="1"/> + <column name="SORTING" valueNumeric="0"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="e9842896-628c-4c80-a0ef-811f35b8ae51"/> + <column name="AB_ATTRIBUTE_ID" value="cf985906-b4f9-443e-9d7b-edbeb60ca463"/> + <column name="OBJECT_TYPE" value="Person"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + <insert tableName="AB_ATTRIBUTEUSAGE"> + <column name="AB_ATTRIBUTEUSAGEID" value="fc594860-76c5-4acb-9758-44ea1a1db5d0"/> + <column name="AB_ATTRIBUTE_ID" value="e196975c-6cfd-46dc-9cb2-053893ec2faa"/> + <column name="OBJECT_TYPE" value="Person"/> + <column name="MAX_COUNT" valueNumeric="1"/> + </insert> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml new file mode 100644 index 0000000000000000000000000000000000000000..67891291f5b0e2c0ea3df39d310b0d6939c77481 --- /dev/null +++ b/.liquibase/Data_alias/basic/2020.2.2/readd_ExporttemplateIndizes.xml @@ -0,0 +1,36 @@ +<?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"> + <!-- in some cases --> + <changeSet author="j.goderbauer" id="140794d8-eb75-4087-a45a-71b0f547e60a"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmpfld_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmpfld_tmpltid" tableName="EXPORTTEMPLATEFIELD"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> + <changeSet author="j.goderbauer" id="e952abd0-29f4-4d6c-b650-ef925248ae18"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmppou_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmppou_tmpltid" tableName="EXPORTTEMPLATEPLACEOFUSE"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> + <changeSet author="j.goderbauer" id="b49a1ac9-80b2-4cfd-b7cd-bdfee4bc0cd8"> + <preConditions onFail="MARK_RAN"> + <not> + <indexExists indexName="idx_exprttmpselection_tmpltid" /> + </not> + </preConditions> + <createIndex indexName="idx_exprttmpselection_tmpltid" tableName="EXPORTTEMPLATESELECTION"> + <column name="EXPORTTEMPLATE_ID"/> + </createIndex> + </changeSet> +</databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/Data_alias/changelog.xml b/.liquibase/Data_alias/changelog.xml index f026f4fe1483a25ff7dbc94a412e14f8c22c94af..faf7b4d858a31a26f2aad2e735685c967f95a989 100644 --- a/.liquibase/Data_alias/changelog.xml +++ b/.liquibase/Data_alias/changelog.xml @@ -17,6 +17,7 @@ <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"/> + <include relativeToChangelogFile="true" file="basic/2020.2.2/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2021.0.0/changelog.xml"/> <!--enable this only when you definetly want to overwrite the existing data with demo records:--> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml index 84b8857d8d5e08885c286dde38ffc6a9c93b1701..8da963bc9892353e093b84f03ae816b204209090 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_aliasconfig.xml @@ -13,7 +13,7 @@ <constraints nullable="false"/> </column> <column name="NAME" type="NVARCHAR(63)"> - <constraints nullable="false"/> + <constraints nullable="false" unique="true"/> </column> <column name="TITLE" type="NVARCHAR(63)"/> <column name="DESCRIPTION" type="NVARCHAR(255)"/> @@ -26,5 +26,8 @@ <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_SERVERID"> <column name="SERVERID"/> </createIndex> + <createIndex tableName="ASYS_ALIASCONFIG" indexName="IDX_ASYS_ALIASCONFIG_ALIASID"> + <column name="ALIASID"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml index e037c40bd68234584e01385d2b9f570bd92b4635..939fc396efeac5d3d51bb1e67082b609e39ba406 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarbackend.xml @@ -23,5 +23,34 @@ <column name="TRANSP" type="CHAR(1)"/> <column name="VCOMPONENT" type="CLOB"/> </createTable> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENTRYTYPE"> + <column name="ENTRYTYPE"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STARTTIME"> + <column name="STARTTIME"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_STATUS"> + <column name="STATUS"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ENDTIME"> + <column name="ENDTIME"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_MAILBOX"> + <column name="MAILBOX"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_LASTMOD"> + <column name="LASTMODIFIED"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTSTART"> + <column name="DTSTART"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_DTEND"> + <column name="DTEND"/> + </createIndex> +</changeSet> +<changeSet id="4810b7c6-50f6-44f6-a0b5-83a3adfae6f7" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <createIndex tableName="ASYS_CALENDARBACKEND" indexName="IDX_CALENDARBACK_ELEMENTUID"> + <column name="ELEMENTUID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml index 4e0f73a0b10270db715663c22349f57547d93abd..a9535f3f3ac114811a1e0159a6e9d71bafb39c84 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_calendarlink.xml @@ -2,19 +2,25 @@ <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="a.schindlbeck" id="c31ed111-b98d-46b6-b7bf-845420624e28"> <createTable tableName="ASYS_CALENDARLINK"> - <column name="DBALIAS" type="VARCHAR(127)"/> - <column name="DBID" type="VARCHAR(191)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_DBID"/> + <column name="ID" type="CHAR(36)"> + <constraints nullable="false" primaryKey="true" primaryKeyName="PK_ASYS_CALENDARLINK_ID"/> </column> + <column name="DBALIAS" type="VARCHAR(127)"/> + <column name="DBID" type="VARCHAR(1023)"/> <column name="DBIDCOLUMN" type="VARCHAR(127)"/> <column name="DBTABLENAME" type="VARCHAR(127)"/> <column name="ENTRYID" type="VARCHAR(512)"/> <column name="ENTRYSTORE" type="VARCHAR(255)"/> <column name="FRAME" type="VARCHAR(1023)"/> - <column name="ID" type="CHAR(36)"> - <constraints nullable="false"/> - </column> <column name="TITLE" type="VARCHAR(2000)"/> </createTable> </changeSet> +<changeSet id="bf6546b4-67e3-4996-bcd9-77a534127b01" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_ENTRYID"> + <column name="ENTRYID"/> + </createIndex> + <createIndex tableName="ASYS_CALENDARLINK" indexName="IDX_ASYS_CALENDARLINK_DBID"> + <column name="DBID"/> + </createIndex> +</changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml index 5f8ddc0ed26f8961dde66978901ff46162f17104..6fcc01993321b4f11d7668493a296751e846f0ae 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_data.xml @@ -10,5 +10,8 @@ <column name="PARENTID" type="CHAR(63)"/> <column name="METRICS" type="CLOB"/> </createTable> + <createIndex tableName="ASYS_COLLECTOR_DATA" indexName="IDX_COLLECTORDATA_TIMECOLLECT"> + <column name="TIMECOLLECTED"/> + </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml index 1fcaf740d8ac5c8f29254872634be78af9426f0e..133aff97c3446084db51cfcf51d91cc3c52015cf 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_collector_tags.xml @@ -3,10 +3,15 @@ <changeSet author="j.hoermann" id="4fe7309e-e131-4f3d-8e65-fb399fcd7090"> <createTable tableName="ASYS_COLLECTOR_TAGS"> <column name="COLLECTORDATAID" type="CHAR(63)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_COLLECTOR_TAGS_ID"/> + <constraints nullable="false"/> + </column> + <column name="TAGNAME" type="VARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="TAGVALUE" type="VARCHAR(63)"> + <constraints nullable="false"/> </column> - <column name="TAGNAME" type="VARCHAR(63)"/> - <column name="TAGVALUE" type="VARCHAR(63)"/> </createTable> + <addPrimaryKey tableName="ASYS_COLLECTOR_TAGS" columnNames="COLLECTORDATAID, TAGNAME, TAGVALUE" constraintName="PK_ASYS_COLLECTOR_TAGS"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml index 6ecf84fd630421d50a01ef071830269f8538cfa8..369537c606f93165cf7710c569d7cd21db94672d 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashletconfigurations.xml @@ -2,22 +2,22 @@ <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="j.hoermann" id="a510b5e9-e599-4503-8bcd-4ef2465f56c6"> <createTable tableName="ASYS_DASHLETCONFIGURATIONS"> - <column name="ID" type="CHAR(36)"> + <column name="ID" type="CHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_ASYS_DASHLETCONFIGURATIONS_ID"/> </column> - <column name="CATEGORIES" type="CLOB"/> + <column name="NAME" type="VARCHAR(63)"/> + <column name="TITLE" type="VARCHAR(63)"/> + <column name="VIEW_NAME" type="VARCHAR(512)"/> <column name="DESCRIPTION" type="VARCHAR(512)"/> - <column name="FRAGMENT" type="VARCHAR(1023)"/> - <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/> <column name="ICON" type="VARCHAR(63)"/> - <column name="NAME" type="VARCHAR(63)"/> - <column name="PARAMETERS" type="CLOB"/> + <column name="FRAGMENT" type="VARCHAR(1023)"/> <column name="PREVIEW" type="CLOB"/> - <column name="REQUIRES_CONFIGURATION" type="INTEGER"/> <column name="SINGLETON" type="INTEGER"/> + <column name="FRAGMENT_CUSTOMIZABLE" type="INTEGER"/> + <column name="REQUIRES_CONFIGURATION" type="INTEGER"/> + <column name="CATEGORIES" type="CLOB"/> + <column name="PARAMETERS" type="CLOB"/> <column name="STORE_ROLES" type="VARCHAR(1023)"/> - <column name="TITLE" type="VARCHAR(63)"/> - <column name="VIEW_NAME" type="VARCHAR(63)"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml index f5ea6eb9088d0ea83e950d2e4d259d3eaddc5207..5b3d2d5a60bf48258a8e82957e9db0d43fbf34f8 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_dashlets.xml @@ -2,18 +2,18 @@ <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="j.hoermann" id="dbdfa16c-8e62-4fc6-8d79-2a14a0d863c5"> <createTable tableName="ASYS_DASHLETS"> - <column name="ID" type="CHAR(36)"> + <column name="ID" type="CHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_DASHLETS_ID"/> </column> - <column name="COLSPAN" type="INTEGER"/> - <column name="CONFIGURATION_ID" type="VARCHAR(63)"/> <column name="DASHBOARD_ID" type="VARCHAR(63)"/> + <column name="CONFIGURATION_ID" type="VARCHAR(63)"/> + <column name="TITLE" type="VARCHAR(63)"/> <column name="FRAGMENT" type="VARCHAR(1023)"/> <column name="PARAMETERS" type="CLOB"/> - <column name="ROWSPAN" type="INTEGER"/> - <column name="TITLE" type="VARCHAR(63)"/> <column name="X" type="INTEGER"/> <column name="Y" type="INTEGER"/> + <column name="COLSPAN" type="INTEGER"/> + <column name="ROWSPAN" type="INTEGER"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml index fb1ae2f5ee87ef81421765227ffdeca8682dd681..e77db9a1c3d3b13f9b4c297bf36cde0a4d92ccad 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notificationcontents.xml @@ -7,20 +7,17 @@ </column> <column name="BACKPACK" type="CLOB"/> <column name="CAPTION" type="VARCHAR(512)"/> - <column name="CREATEDATE" type="TIMESTAMP"/> - <column name="DELETEDATE" type="TIMESTAMP"/> + <column name="CREATEDATE" type="DATETIME"/> <column name="DESCRIPTION" type="VARCHAR(1023)"/> <column name="FORCEDPRIORITY" type="VARCHAR(15)"/> <column name="ICON_INFO" type="VARCHAR(1023)"/> + <column name="DELETEDATE" type="DATETIME"/> <column name="LINK_INFO" type="VARCHAR(1023)"/> <column name="ORIGINATORNAME" type="VARCHAR(63)"/> <column name="RECIPIENTUSERIDS" type="CLOB"/> <column name="TYPECODE" type="VARCHAR(63)"/> <column name="VERSION" type="INTEGER"/> + <column name="SUBCATEGORY" type="VARCHAR(256)"/> </createTable> - - <createIndex indexName="idx_asysnoticontents_contid" tableName="ASYS_NOTIFICATIONCONTENTS"> - <column name="CONTENTID"/> - </createIndex> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml index f3ff1e9ae1ccab5ab2fc46dba3c28bc9e0a783ac..5ecd347c48718a326ba9ec9119f3b9d2e55f6e6c 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_notifications.xml @@ -6,7 +6,7 @@ <constraints primaryKey="true" primaryKeyName="PK_ASYS_NOTIFICATIONS_ID"/> </column> <column name="CONTENTID" type="CHAR(36)"/> - <column name="STATE" type="VARCHAR(15)"/> + <column name="STATE" type="VARCHAR(16)"/> <column name="USERID" type="VARCHAR(63)"/> <column name="RESOLVEDPRIORITY" type="VARCHAR(15)"/> </createTable> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml index c8fae3a479ec0862f068aee234a572c3f092d5c7..35ddb98cb9bb10336fa9fcfa993cd135f1f31b33 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_recordgroup.xml @@ -9,9 +9,6 @@ <column name="TITLE" type="VARCHAR(256)"/> <column name="GROUP_TYPE" type="VARCHAR(64)"/> </createTable> - <createIndex indexName="idx_asysrecordgroup_id" tableName="ASYS_RECORDGROUP"> - <column name="ID"/> - </createIndex> <createIndex indexName="idx_asysrecordgroup_userid" tableName="ASYS_RECORDGROUP"> <column name="USER_ID"/> </createIndex> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml index 4ea33eeb65bbdce19c15b13db043c8fc744e58ab..9f54423b467e072e41b99e53eabf9789457083c0 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles.xml @@ -5,10 +5,10 @@ <column name="ROLENAME" type="VARCHAR(63)"> <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_ID"/> </column> - <column name="ROLETITLE" type="VARCHAR(63)"/> + <column name="ROLETITLE" type="NVARCHAR(63)"/> <column name="ROLEDESCRIPTION" type="VARCHAR(255)"/> - <column name="ASSIGNABLE" type="INTEGER"/> - <column name="CHILDREN" type="CLOB"/> + <column name="ASSIGNABLE" type="TINYINT"/> + <column name="CHILDREN" type="NCLOB"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml index 9dd2c8b7d6d65db71a4b6ecb4b3482f1763c74ad..83fff19bd005bb2e605f38b29a189461f5970c26 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_roles_children.xml @@ -6,7 +6,7 @@ <constraints primaryKey="true" primaryKeyName="PK_ASYS_ROLES_CHILDREN_ID"/> </column> <column name="PARENT_ROLE" type="VARCHAR(63)"/> - <column name="CHILD_ROLE" type="VARCHAR(63)"/> + <column name="CHILD_ROLE" type="NVARCHAR(63)"/> </createTable> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml index 4e001416ea8db72052f9da8c0d0925e90d225150..ec0459b46b9596c3ba26f3aa4f3239bef0ea8608 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_sequences.xml @@ -13,5 +13,8 @@ <constraints nullable="false"/> </column> </createTable> + <createIndex tableName="ASYS_SEQUENCES" indexName="IDX_ASYS_SEQUENCES_ID_GUID"> + <column name="ID_GUID"/> + </createIndex> </changeSet> </databaseChangeLog> diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml index fea891c550df4d29827915634728cef5af053042..fb86982a2864b0d101a4fffb0ecd3106b14335c2 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_timers_serverruns.xml @@ -13,6 +13,6 @@ </createTable> <addPrimaryKey tableName="ASYS_TIMERS_SERVERRUNS" columnNames="SERVERID, TIMERID" - constraintName="PK_ASYS_TIMERS_SERVERRUNS_SERVERID_TIMERID"/> + constraintName="PK_ASYS_TIMERS_SERVERRUNS"/> </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml index c8d26b66bf9e3b832991f2f6f2be6522b0d58043..c2064247aa6464b3bda6f5abce670daf632404a2 100644 --- a/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml +++ b/.liquibase/_____SYSTEMALIAS/basic/init/struct/create_asys_users.xml @@ -1,37 +1,38 @@ <?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="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e"> - <createTable tableName="ASYS_USERS"> - <column name="ID" type="CHAR(36)"> - <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/> - </column> - <column name="DATE_NEW" type="DATETIME"/> - <column name="DATE_EDIT" type="DATETIME"/> - <column name="NAME" type="NVARCHAR(63)"> - <constraints nullable="false"/> - </column> - <column name="GROUPID" type="NVARCHAR(63)"> - <constraints nullable="false"/> - </column> - <column name="PROPKEY" type="VARCHAR(1024)"> - <constraints nullable="false"/> - </column> - <column name="PROPVAL" type="VARCHAR(1024)"/> - <column name="PROPVAL_CLOB" type="CLOB"/> - </createTable> - <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS"> - <column name="NAME"/> - </createIndex> - <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS"> - <column name="GROUPID"/> - </createIndex> - <!--normally a index should be created for propkey and propval but this causes due to it's length problems on some dbms--> - <!--<createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS"> - <column name="PROPKEY"/> - </createIndex> - <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS"> - <column name="PROPVAL"/> - </createIndex>--> - -</changeSet> + <changeSet author="j.hoermann" id="77e5fc97-1e89-45e2-a00f-29742d28ab7e"> + <createTable tableName="ASYS_USERS"> + <column name="ID" type="CHAR(36)"> + <constraints primaryKey="true" primaryKeyName="PK_ASYS_USERS_ID"/> + </column> + <column name="DATE_NEW" type="DATETIME"/> + <column name="DATE_EDIT" type="DATETIME"/> + <column name="NAME" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="GROUPID" type="NVARCHAR(63)"> + <constraints nullable="false"/> + </column> + <column name="PROPKEY" type="VARCHAR(1024)"> + <constraints nullable="false"/> + </column> + <column name="PROPVAL" type="VARCHAR(1024)"/> + <column name="PROPVAL_CLOB" type="CLOB"/> + </createTable> + <createIndex indexName="IDX_ASYS_USERS_NAME" tableName="ASYS_USERS"> + <column name="NAME"/> + </createIndex> + <createIndex indexName="idx_asysusers_groupid" tableName="ASYS_USERS"> + <column name="GROUPID"/> + </createIndex> + </changeSet> + <changeSet id="4d1dc8cd-2bca-4501-9458-9178287a4f38" author="s.listl" dbms="!mssql,!mysql,!mariadb"> + <!--index can't be created on all dbms because of size restrictions--> + <createIndex indexName="idx_asysusers_propkey" tableName="ASYS_USERS"> + <column name="PROPKEY"/> + </createIndex> + <createIndex indexName="idx_asysusers_propval" tableName="ASYS_USERS"> + <column name="PROPVAL"/> + </createIndex> + </changeSet> </databaseChangeLog> \ No newline at end of file diff --git a/aliasDefinition/Data_alias/Data_alias.aod b/aliasDefinition/Data_alias/Data_alias.aod index 96738b180650e265da04ed5ca755f51b7ac40641..1b90bea7f650ec646579634c155ced038fcf0d35 100644 --- a/aliasDefinition/Data_alias/Data_alias.aod +++ b/aliasDefinition/Data_alias/Data_alias.aod @@ -3611,7 +3611,7 @@ <notNull v="true" /> <isUnique v="true" /> <index v="true" /> - <title>Salesproject Id</title> + <title>Sales Project Id</title> <description></description> </entityFieldDb> <entityFieldDb> @@ -8091,7 +8091,7 @@ <isUnique v="false" /> <index v="true" /> <documentation></documentation> - <title>Salesproject Id</title> + <title>Sales Project Id</title> <description></description> <customProperties> <customBooleanProperty> @@ -8140,7 +8140,7 @@ <isUnique v="true" /> <index v="true" /> <documentation></documentation> - <title>Salesproject milestone Id</title> + <title>Sales Project milestone Id</title> <description></description> </entityFieldDb> <entityFieldDb> @@ -8338,6 +8338,20 @@ </entityDependency> </dependencies> </entityFieldDb> + <entityFieldDb> + <name>RESPONSIBLE_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></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -10889,8 +10903,8 @@ <name>RECIPIENTS</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="4000" /> + <columnType v="2005" /> + <size v="2147483647" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -11711,8 +11725,8 @@ <name>SCAN_PATTERN</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="12" /> - <size v="4000" /> + <columnType v="2005" /> + <size v="2147483647" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -13152,8 +13166,8 @@ <name>STATUS</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> + <columnType v="12" /> + <size v="36" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -13883,6 +13897,34 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>P_COMMINTERNET</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>O_COMMINTERNET</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></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -15737,6 +15779,1172 @@ </entityFieldDb> </entityFields> </entityDb> + <entityDb> + <name>KNOWLEDGEDISCUSSION</name> + <dbName></dbName> + <idColumn>KNOWLEDGEDISCUSSIONID</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>PARENTENTRY</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="12" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DISCUSSIONTEXT</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>KNOWLEDGEDISCUSSIONID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AUTHOR</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>DATE_NEW</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>USER_NEW</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>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> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGELINK</name> + <dbName></dbName> + <idColumn>KNOWLEDGELINKID</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>KNOWLEDGELINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>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>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</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>USER_NEW</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>OBJECT_TYPE</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>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> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEMANAGEMENT</name> + <dbName></dbName> + <idColumn>KNOWLEDGEMANAGEMENTID</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="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>KNOWLEDGEMANAGEMENTID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>AUTHOR_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> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>PUBLISH</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> + <entityFieldDb> + <name>USER_EDIT</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>CONTENTDECODED</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>TITLE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="255" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>CONTENT</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> + <customProperties> + <customBooleanProperty> + <name>log</name> + <global v="false" /> + <property v="true" /> + </customBooleanProperty> + </customProperties> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</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>USER_NEW</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>RESPONSIBLE_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> + <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="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEROLES</name> + <dbName></dbName> + <idColumn>KNOWLEDGEROLESID</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>KNOWLEDGEROLESID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>ROLENAME</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> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEGITINTERFACE</name> + <dbName></dbName> + <idColumn>KNOWLEDGEGITINTERFACEID</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="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>KNOWLEDGEGITINTERFACEID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GITCOMMIT</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="false" /> + <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="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SYSTEMNAME</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>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> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGEMANAGEMENTTAGMODERATION</name> + <dbName></dbName> + <idColumn>KNOWLEDGEMANAGEMENTTAGMODERATIONID</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>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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGEMANAGEMENTTAGMODERATIONID</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> + <name>KNOWLEDGETAG</name> + <dbName></dbName> + <idColumn>KNOWLEDGETAGID</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>KNOWLEDGETAGID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>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>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>DATE_NEW</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>TAG</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>USER_NEW</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>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> + </entityFields> + </entityDb> + <entityDb> + <name>KNOWLEDGETAGLINK</name> + <dbName></dbName> + <idColumn>KNOWLEDGETAGLINKID</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="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>KNOWLEDGEMANAGEMENT_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>KNOWLEDGETAGLINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>DATE_NEW</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>KNOWLEDGETAG_ID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>USER_NEW</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>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> + </entityFields> + </entityDb> + <entityDb> + <name>MST_TEAMLINK</name> + <dbName></dbName> + <idColumn>MST_TEAMLINKID</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="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAM_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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>MST_TEAMLINKID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>OBJECT_TYPE</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="63" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + </entityFields> + </entityDb> + <entityDb> + <name>MST_TEAM</name> + <dbName></dbName> + <idColumn>MST_TEAMID</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>MST_TEAMID</name> + <dbName></dbName> + <primaryKey v="true" /> + <columnType v="1" /> + <size v="36" /> + <scale v="0" /> + <notNull v="true" /> + <isUnique v="true" /> + <index v="true" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>IS_ARCHIVED</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>SERVICE_URL</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>TEAMNAME</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></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>GENERAL_CHANNELID</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="1" /> + <size v="48" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> + <entityFieldDb> + <name>WEB_URL</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> + </entityFields> + </entityDb> </entities> </entityGroup> </aliasDefDb> diff --git a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js index aa7a1fe2a061e4d09e65eab58e503c37562cf5a6..7305220193d3d0f0504d588ccb1c70db27d139b2 100644 --- a/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js +++ b/aliasDefinition/Data_alias/aliasdefinitionsub/entitygroup/entities/salesorder/entityfields/object_rowid/customproperties/translate4log/property.js @@ -12,4 +12,4 @@ var type = newSelect("OBJECT_TYPE") .where("SALESORDER.SALESORDERID", params.rowId) .cell(); -result.string(db.cell(ContextUtils.getNameSql(type, params.value))); +result.string(ContextUtils.getTitleByContext(type, params.value)); diff --git a/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod new file mode 100644 index 0000000000000000000000000000000000000000..79981226f95fdf63a642c463bce21dc56fa76f5e --- /dev/null +++ b/aliasDefinition/IndexSearchAlias/IndexSearchAlias.aod @@ -0,0 +1,6 @@ +<?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>IndexSearchAlias</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <datasourceType v="18" /> +</aliasDefinition> diff --git a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod index 6f4f1b2dca5291f2a8a2ad8cbb2b4d47552c98ff..6407da1b96ade99cd89fd172be15282552aca01d 100644 --- a/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod +++ b/aliasDefinition/_____SYSTEMALIAS/_____SYSTEMALIAS.aod @@ -101,7 +101,7 @@ <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -174,7 +174,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -477,7 +477,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -490,7 +490,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -503,7 +503,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -516,7 +516,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -529,7 +529,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -568,7 +568,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -581,7 +581,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -620,7 +620,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -633,7 +633,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -700,12 +700,12 @@ <entityFieldDb> <name>DBID</name> <dbName></dbName> - <primaryKey v="true" /> + <primaryKey v="false" /> <columnType v="12" /> - <size v="191" /> + <size v="1023" /> <scale v="0" /> - <notNull v="true" /> - <isUnique v="true" /> + <notNull v="false" /> + <isUnique v="false" /> <index v="true" /> <title></title> <description></description> @@ -745,7 +745,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -778,13 +778,13 @@ <entityFieldDb> <name>ID</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="1" /> <size v="36" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> + <isUnique v="true" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -883,7 +883,7 @@ <scale v="0" /> <notNull v="true" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -896,7 +896,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -930,7 +930,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -964,8 +964,8 @@ <name>DESCRIPTION</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="2005" /> - <size v="2147483647" /> + <columnType v="12" /> + <size v="255" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1020,8 +1020,8 @@ <size v="63" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="false" /> - <index v="false" /> + <isUnique v="true" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -1034,7 +1034,7 @@ <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <title></title> <description></description> </entityFieldDb> @@ -1142,7 +1142,7 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="15" /> + <size v="16" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1242,7 +1242,7 @@ <dbName></dbName> <primaryKey v="true" /> <columnType v="1" /> - <size v="36" /> + <size v="63" /> <scale v="0" /> <notNull v="true" /> <isUnique v="true" /> @@ -1393,7 +1393,7 @@ <dbName></dbName> <primaryKey v="true" /> <columnType v="1" /> - <size v="36" /> + <size v="63" /> <scale v="0" /> <notNull v="true" /> <isUnique v="true" /> @@ -1497,7 +1497,7 @@ <dbName></dbName> <primaryKey v="false" /> <columnType v="12" /> - <size v="63" /> + <size v="512" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -1707,6 +1707,20 @@ <title></title> <description></description> </entityFieldDb> + <entityFieldDb> + <name>SUBCATEGORY</name> + <dbName></dbName> + <primaryKey v="false" /> + <columnType v="12" /> + <size v="256" /> + <scale v="0" /> + <notNull v="false" /> + <isUnique v="false" /> + <index v="false" /> + <documentation></documentation> + <title></title> + <description></description> + </entityFieldDb> </entityFields> </entityDb> <entityDb> @@ -2049,8 +2063,8 @@ <name>ASSIGNABLE</name> <dbName></dbName> <primaryKey v="false" /> - <columnType v="4" /> - <size v="10" /> + <columnType v="5" /> + <size v="5" /> <scale v="0" /> <notNull v="false" /> <isUnique v="false" /> @@ -2304,7 +2318,7 @@ <scale v="9" /> <notNull v="false" /> <isUnique v="false" /> - <index v="false" /> + <index v="true" /> <documentation></documentation> <title></title> <description></description> @@ -2615,8 +2629,8 @@ <size v="63" /> <scale v="0" /> <notNull v="true" /> - <isUnique v="true" /> - <index v="true" /> + <isUnique v="false" /> + <index v="false" /> <documentation></documentation> <title></title> <description></description> @@ -2624,11 +2638,11 @@ <entityFieldDb> <name>TAGNAME</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="12" /> <size v="63" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> @@ -2638,11 +2652,11 @@ <entityFieldDb> <name>TAGVALUE</name> <dbName></dbName> - <primaryKey v="false" /> + <primaryKey v="true" /> <columnType v="12" /> <size v="63" /> <scale v="0" /> - <notNull v="false" /> + <notNull v="true" /> <isUnique v="false" /> <index v="false" /> <documentation></documentation> diff --git a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod index 2de36e834097c76b055a391c9ed833036b720f86..12e1b3dbc18300005affb2292a9d4bf03fadb450 100644 --- a/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod +++ b/application/_____SYSTEM_APPLICATION_NEON/_____SYSTEM_APPLICATION_NEON.aod @@ -247,6 +247,28 @@ </entityNode> </childNodes> </entityNode> + <entityNode> + <name>Group</name> + <kind v="123" /> + <title>Knowledge Management</title> + <icon>VAADIN:ACADEMY_CAP</icon> + <childNodes> + <entityNode> + <name>Group5</name> + <kind v="123" /> + <childNodes> + <entityNode> + <name>INTERNAL_EVERYONE</name> + <kind v="159" /> + </entityNode> + <entityNode> + <name>KnowledgeManagement</name> + <kind v="10077" /> + </entityNode> + </childNodes> + </entityNode> + </childNodes> + </entityNode> <entityNode> <name>Administration</name> <kind v="123" /> @@ -323,7 +345,7 @@ </childNodes> </entityNode> <entityNode> - <name>User Administration</name> + <name>Useradministration</name> <kind v="123" /> <title>User Administration</title> <icon>VAADIN:UNLINK</icon> diff --git a/entity/360Degree_entity/360Degree_entity.aod b/entity/360Degree_entity/360Degree_entity.aod index e4125015133a7668cae22904bce30d1369e33115..730a2527675aa0dbfc3346850a81cb7961110d5a 100644 --- a/entity/360Degree_entity/360Degree_entity.aod +++ b/entity/360Degree_entity/360Degree_entity.aod @@ -25,6 +25,7 @@ </entityField> <entityField> <name>TITLE</name> + <title>Title</title> <linkedContextProcess>%aditoprj%/entity/360Degree_entity/entityfields/title/linkedContextProcess.js</linkedContextProcess> </entityField> <entityParameter> @@ -42,14 +43,6 @@ <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> <documentation>%aditoprj%/entity/360Degree_entity/entityfields/organisationobjects/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>15488007-165c-4630-828a-447cf2c27899</name> - <entityName>Organisation_entity</entityName> - <fieldName>360DegreeObjects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -61,6 +54,14 @@ <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/organisationobjects/children/basecontextid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>15488007-165c-4630-828a-447cf2c27899</name> + <entityName>Organisation_entity</entityName> + <fieldName>360DegreeObjects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>TARGET_CONTEXT</name> @@ -71,11 +72,10 @@ <entityField> <name>ENTITY_NAME</name> <title>Module</title> - <groupable v="true" /> <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/entity_name/valueProcess.js</valueProcess> </entityField> <entityField> - <name>DATE</name> + <name>DATE_NEW</name> <title>Date</title> <contentType>DATE</contentType> <resolution>DAY</resolution> @@ -85,14 +85,6 @@ <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> <documentation>%aditoprj%/entity/360Degree_entity/entityfields/personobjects/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>1d931ae6-137a-4db3-b02c-eb8872d349c6</name> - <entityName>Person_entity</entityName> - <fieldName>360DegreeObjects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectType_param</name> @@ -104,13 +96,15 @@ <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/personobjects/children/basecontextid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>1d931ae6-137a-4db3-b02c-eb8872d349c6</name> + <entityName>Person_entity</entityName> + <fieldName>360DegreeObjects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> - <entityField> - <name>YEAR</name> - <title>Year</title> - <groupable v="true" /> - <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/year/valueProcess.js</valueProcess> - </entityField> <entityActionGroup> <name>newModule</name> <title>New module</title> @@ -126,7 +120,7 @@ </entityActionField> <entityActionField> <name>newSalesproject</name> - <title>Salesproject</title> + <title>Sales Project</title> <onActionProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/onActionProcess.js</onActionProcess> <iconId>VAADIN:BOOK_DOLLAR</iconId> <stateProcess>%aditoprj%/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js</stateProcess> @@ -166,13 +160,6 @@ <contentType>IMAGE</contentType> <valueProcess>%aditoprj%/entity/360Degree_entity/entityfields/icon/valueProcess.js</valueProcess> </entityField> - <entityField> - <name>ACTIVE</name> - <title>Active</title> - <contentType>TEXT</contentType> - <groupable v="true" /> - <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess> - </entityField> <entityParameter> <name>BaseContextId_param</name> <expose v="true" /> @@ -185,6 +172,25 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>GROUP</name> + <title>Group</title> + <groupable v="true" /> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + </entityField> + <entityField> + <name>YEAR</name> + <title>Year</title> + <groupable v="true" /> + </entityField> + <entityField> + <name>ACTIVE</name> + <title>Active</title> + <dropDownProcess>%aditoprj%/entity/360Degree_entity/entityfields/active/dropDownProcess.js</dropDownProcess> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -203,20 +209,32 @@ <jDitoRecordFieldMapping> <name>TARGET_CONTEXT.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TARGET_CONTEXT.displayValue</name> + </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>TITLE.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>DATE.value</name> + <name>DESCRIPTION.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> - <name>ACTIVE.value</name> + <name>DATE_NEW.value</name> <isFilterable v="true" /> - <isLookupFilter v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>YEAR.value</name> </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>ENTITY_NAME.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>GROUP.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ACTIVE.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/360Degree_entity/documentation.adoc b/entity/360Degree_entity/documentation.adoc index d14c31a7c939c89fb3ace5ae20758bb83cb2f522..b07c00500ceb7ed1fc24f01140cf046eb2f41251 100644 --- a/entity/360Degree_entity/documentation.adoc +++ b/entity/360Degree_entity/documentation.adoc @@ -3,9 +3,9 @@ The 360Degree_entity shows the Connection between data models. The entity has two providers for persons and organizations. -The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity. +The 360Degree_entity shows direct connections, don´t be confused with the ObjectRelation_entity. -== Adding new modules to the 360° view +== Adding new modules to the 360° view You may want to display more modules within the 360degree view (for example after creating and implemeting your own module). .An Example: @@ -14,6 +14,23 @@ display it in the 360degree view. Heres is a list of what you need to do whenever you want to do this: -- Add an entry in the function `ContextUtils.getSelectMap` which is located in the `Context_lib` (check out the documentation there for further details). _Speaking of the example above you need to define there how to retrieve the t-shirt-data for a contact_ +- At first you have to fill/add certain Fields/Processes in your new Context. + - Add (These have to be written exactly like that, if not already existing): + - DATE_NEW, this Field has to contain a Date as a Long Value. That will be used as the Date Value you can see in the Timeline View-Template. + - ACTIVE, in this Field you can specify which Datasets are active or not. You have to declare that in the Value Expression as a Case-When due to the Filter + - Fill (these can be filled in the specific Entity as a Process) + - #CONTENTTITLE, this will be the main display Text and the blue Link + - #CONTENTDESCRIPTION, this will be the smaller, mostly longer, Text beneath the #CONTENTTITLE + +- Add an element (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the JSON-Object which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example -- Add an entry (with the name of the context you want to add) in the process of the `ObjectType_param` in the *corresponding provider* which is located in the `360Degree_entity`. _We would extend the array which is returned in the `PersonObjects`-provider by the name of our t-shirt-context: "TShirt" in our example_ \ No newline at end of file +- In that JSON-Object you can/have to add some Configuration Elements to change the results. + - connectionField, here you have to declare a Field that writes exactly like the one in your Entity (Standard is CONTACT_ID!!!). The Value of this Field will be used to compare it with the Object_Rowid. + - setGroupBy: here you can declare a DB-Column that will be used as the new group by of that context. A good example is Order. We want to group by the Ordertype so we have to declare ORDERTYPE as our groupBy. + - If your DB-Value is related to a Keyword you also have to use groupByKeyword and add the Container as Value + +- If you have a Connection of 1:N in your Database Schema (like Task and TaskLink) you have to add specific Properties in your Context Object. Lets take TaskLink as a Example. + - subContext: the Name of the "Link"-Context -> TaskLink + - childField: The Field where the LinkID to your Parent is stored -> TASK_ID + - parentField: The field in your Parent Context where your Connection to your Child is stored -> TASKID + - contactIdField: The Field in the Link Context where your Contactid is stored -> OBJECT_ROWID \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js index 353aa9f3676bc0c8d4a823b2944a5794acbb4677..fbdfd3fd2e124194d93b908f33d2b56bffbf1bee 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcampaignparticipant/stateProcess.js @@ -7,11 +7,11 @@ if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Campaign") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js index f1cfb310581815a99377b7da0152c0483f24d9d5..64c597b2e188312d6589a3d1bbf53cb00ff83e95 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newcontract/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Contract") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js index 02a2b07b699e399fed77114a8841d76b2d0d35b1..ce3eb11c9bd8dba37fe4bf96fd936fd9fec4f843 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newoffer/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Offer") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js index 1c2b2b9123cb9512962e66ccf03bc2c7fecef0ab..6b9ec8164168c9286b1646b88d8f18e83708d833 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/neworder/stateProcess.js @@ -6,11 +6,11 @@ var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Order") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js index f23023f7d177f0f5d7eec62b42371db2b0289173..6a18dc9adfd19a69b749c88e9282cfb186e35d5c 100644 --- a/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js +++ b/entity/360Degree_entity/entityfields/newmodule/children/newsalesproject/stateProcess.js @@ -7,11 +7,11 @@ if (contextList) { var found = false; - contextList.forEach(function (context) + for(context in contextList) { if(context == "Salesproject") found = true; - }); + } if(found) result.string(neon.COMPONENTSTATE_AUTO); else diff --git a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js index 86503dcd7f316c24dd3b7e31d296e35802db29a4..9b0fe874baa54a8604d5955087be959dfb644563 100644 --- a/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js +++ b/entity/360Degree_entity/entityfields/organisationobjects/children/objecttype_param/valueProcess.js @@ -3,4 +3,21 @@ import("system.result"); //No campaign, since a campaign can only be linked with a person. //Even when all entries of persons are displayed in the organisation_entity: It's still nonsense to display campaigns per status. -result.object(["Salesproject", "Offer", "Order", "Contract", "SupportTicket"]); \ No newline at end of file + +var res = { + "Salesproject": {}, + "Offer": {}, + "Order": { + "setGroupBy":"ORDERTYPE", + "groupByKeyword":"OrderType" + }, + "Contract": {}, + "SupportTicket": { + "subContext":"TaskLink", + "childField":"TASK_ID", + "parentField":"TASK_TASKID", + "contactIdField":"OBJECT_ROWID" + } +} + +result.string(JSON.stringify(res)) \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js index 51c40eed05ba103ae4347347277aea4e2bad20a3..0764eff7f7bb307932d6c09366ff99f6431a1114 100644 --- a/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js +++ b/entity/360Degree_entity/entityfields/personobjects/children/objecttype_param/valueProcess.js @@ -1,4 +1,14 @@ import("system.vars"); import("system.result"); -result.object(["Offer", "Contract", "Campaign", "Order", "SupportTicket"]); \ No newline at end of file +var res = { + "Offer": {}, + "Order": { + "setGroupBy":"ORDERTYPE" + }, + "Contract": {}, + "SupportTicket": {}, + "Campaign": {} +} + +result.string(JSON.stringify(res)) \ No newline at end of file diff --git a/entity/360Degree_entity/entityfields/year/valueProcess.js b/entity/360Degree_entity/entityfields/year/valueProcess.js deleted file mode 100644 index c21dcc8cde6f3f27028dbb1844895cc55f093ff8..0000000000000000000000000000000000000000 --- a/entity/360Degree_entity/entityfields/year/valueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.datetime"); -import("system.result"); -import("system.vars"); - -var dateVal = vars.get("$field.DATE"); -result.string(datetime.toDate(dateVal, "yyyy")); \ No newline at end of file diff --git a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js index 3014803809e5526a81241581d3f12bc965edf216..f6417bb26a778fd4df642ffb42f2f127742c3905 100644 --- a/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/360Degree_entity/recordcontainers/jdito/contentProcess.js @@ -1,36 +1,20 @@ -import("system.util"); -import("system.db"); -import("system.vars"); +import("system.datetime"); +import("system.logging"); +import("Util_lib"); +import("system.translate"); import("system.result"); +import("system.vars"); import("Context_lib"); -import("system.translate"); +import("Keyword_lib"); -if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")) -{ - var active; - var selectMap = ContextUtils.getSelectMap(); - if(vars.exists("$local.filter") && vars.get("$local.filter") ) - { - var filter = vars.get("$local.filter"); - if (filter.filter) - if(filter.filter.childs != null && filter.filter.childs.length > 0) - { - filter.filter.childs.forEach(function(child) - { - if(child.name === "ACTIVE") - active = child.key == 'true'; - }); - } - } - - var contextList = JSON.parse(vars.getString("$param.ObjectType_param")); - var contactId = vars.get("$param.ObjectRowId_param"); - var idValues; - if (vars.exists("$local.idvalues")) - idValues = vars.get("$local.idvalues"); - - var res = _get360Data(selectMap, contactId, contextList, active, idValues); - result.object(res); + +if (vars.exists("$param.ObjectType_param") && vars.get("$param.ObjectType_param") + && vars.exists("$param.ObjectRowId_param") && vars.get("$param.ObjectRowId_param")) +{ + var contextList = JSON.parse(vars.get("$param.ObjectType_param")); + var contactId = JSON.parse(vars.get("$param.ObjectRowId_param")); + var data = _get360Data(contactId, contextList); + result.object(data); } else { @@ -38,79 +22,65 @@ else } /** - * load all data for the 360Degree tree. - * @param {Object} pSelectMap the select map (result of ContextUtils.getSelectMap()) - * @param {String[]} pContactId the Contactid the 360 Degree tree should be loaded for - * @param {String[]} pContextList list of contexts to load. Note that subcontexts use their own list, defined in ContextUtils - * @param {Boolean} [pActive=undefined] if not undefined: it select only for active / inactive state - * @param {Array} [pUids=undefined] uids of the 360° entity that are used for filtering, each rowId needs the format: - * {id: "«rowid»", type: "«context id»"} + * collects all data for the 360Degree tree. + * @param {String} pContactId, the main Contactid that will be used for the Connections + * @param {String[]} pContextList, a list of Contexts that should be displayed * * @return {String[][]} the resulting data */ -function _get360Data(pSelectMap, pContactId, pContextList, pActive, pUids) +function _get360Data(pContactId, pContextList) { - //if there are uids for filtering, group them per context: - var uidContextMap = new Map();//Map where key is the type (contextname) and value is an array of the rowIds for that type - if (pUids) - { - pUids.forEach(function (uid){ - uid = JSON.parse(uid); - if (uidContextMap.has(uid.type)) - uidContextMap.get(uid.type).push(uid.id); - else - uidContextMap.set(uid.type, [uid.id]); - }); - } - var resultList = []; - pContextList.forEach(function (context) + var filter = vars.get("$sys.filter"); + for(var context in pContextList) { - var rowIds; - if (pUids) - { - //when a Uid-filter exists, but there is no context for filtering we can skip that context, - //otherwise we need to filter for the found row ids of that context - if (!uidContextMap.has(context)) - return; - else - rowIds = uidContextMap.get(context); - } - var data = db.table(ContextUtils.getContextDataSql(context, JSON.parse(pContactId), true, pActive, true, true, rowIds)); - data.forEach(function (row) + var group = context; + if(pContextList[context].hasOwnProperty("setGroupBy") && pContextList[context].hasOwnProperty("groupByKeyword")) + var groupKeyword = Utils.objectFromMap(new Map(KeywordUtils.getEntryNamesAndIdsByContainer(pContextList[context]["groupByKeyword"]))); + + var res = ContextUtils.getContextDataViaReadEntity(context, pContextList[context], filter, pContactId); + if(res.length > 0) { - var active; - if(pActive != undefined) //ACTIVE - active = translate.text(pActive); - else + res.forEach(function (row) { - if(pSelectMap[context].activeStates && pSelectMap[context].activeStates.indexOf(row[3]) > -1) - active = translate.text("true"); - else - active = translate.text("false"); - } - - var groupBy = row[4]; - if(groupBy == "") - groupBy = ContextUtils.getEntityTitle(context, true); - - var uid = JSON.stringify({id: row[0], type: context}); - resultList.push([ - uid, // UID - row[0], // TARGET_ID - context, // TARGET_CONTEXT - row[1], // TITLE - row[2], //DATE - active, - groupBy - ]); - }); - }); - - resultList.sort(function (a,b) { - if (a[4] < b[4]) return 1; - if (a[4] > b[4]) return -1; - return 0; - }) + var uid = JSON.stringify({ + "id": row["#UID"], + "type": context + }); + var targetid = row["#UID"]; + var title = row["#CONTENTTITLE"]; + var description = row["#CONTENTDESCRIPTION"]; + var dataDate = row["DATE_NEW"]; + var active = row["ACTIVE"]; + if(pContextList[context].hasOwnProperty("setGroupBy")) + group = row[pContextList[context]["setGroupBy"]] + + + if(pContextList[context].hasOwnProperty("setGroupBy")) + { + if( pContextList[context].hasOwnProperty("groupByKeyword") && groupKeyword) + group = groupKeyword[row[pContextList[context]["setGroupBy"]]] + else + group = row[pContextList[context]["setGroupBy"]] + } + + resultList.push([ + uid, // UID + targetid, // TARGET_ID + context, // TARGET_CONTEXT + translate.text(pContextList[context]), // TARGET_CONTEXT.displayValue + title, // TITLE + description, // DESCRIPTION + dataDate, // DATE + datetime.toDate(dataDate, "yyyy"), // YEAR + ContextUtils.getEntity(context), // ENTITY_NAME + translate.text(group), // GROUP + active // ACTIVE + ]); + }); + } + } + var sortArr = [9, false] + resultList = ArrayUtils.sortMulti(resultList, sortArr) return resultList; } \ No newline at end of file diff --git a/entity/ActivityLink_entity/ActivityLink_entity.aod b/entity/ActivityLink_entity/ActivityLink_entity.aod index e5518fff2fac73d9b45fcd177cd580a8edf2a289..7603602585dc40819b65359733ab6f6a5773002a 100644 --- a/entity/ActivityLink_entity/ActivityLink_entity.aod +++ b/entity/ActivityLink_entity/ActivityLink_entity.aod @@ -40,6 +40,12 @@ <targetIdField>OBJECT_ROWID</targetIdField> <documentation>%aditoprj%/entity/ActivityLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ActivityId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>148c98ea-a24b-453a-afe9-975555486b2c</name> @@ -48,26 +54,20 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ActivityId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/ActivityLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Context</name> diff --git a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644 --- a/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/ActivityLink_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js index 8c0ab0e94b135d4b1b475ecbbde7900cd3fd109e..62c7fcc7146f0ddc96c32458381a18507a831252 100644 --- a/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ActivityLink_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("Sql_lib"); var cond = newWhereIfSet("ACTIVITYLINK.ACTIVITY_ID", "$param.ActivityId_param", SqlBuilder.EQUAL()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Activity_entity/Activity_entity.aod b/entity/Activity_entity/Activity_entity.aod index 9163db06e98eabcd7d5addaa2c6d2a2dfcd6f17a..ddb1971da5fe2dd72dba504187bbf76b890f6bf9 100644 --- a/entity/Activity_entity/Activity_entity.aod +++ b/entity/Activity_entity/Activity_entity.aod @@ -117,11 +117,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -132,15 +127,15 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -151,12 +146,18 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYMONTH</name> <title>Date (Month)</title> <contentType>TEXT</contentType> <groupable v="true" /> + <displayValueProcess>%aditoprj%/entity/Activity_entity/entityfields/entrymonth/displayValueProcess.js</displayValueProcess> <onValueChangeTypes> <element>MASK</element> <element>PROCESS</element> @@ -165,25 +166,20 @@ </entityField> <entityConsumer> <name>Links</name> - <dependency> - <name>dependency</name> - <entityName>ActivityLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>ActivityId_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/links/children/activityid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDirections</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>ActivityLink_entity</entityName> + <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDirections</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -191,11 +187,47 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>LinkedObjects</name> <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>OnlyInnate_param</name> + <expose v="false" /> + <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/children/onlyinnate_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ParentContext_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>PresetDocuments_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8ececf30-a3bc-4cd2-ad04-fb9f3cb9332d</name> @@ -276,37 +308,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyInnate_param</name> - <expose v="false" /> - <documentation>%aditoprj%/entity/Activity_entity/entityfields/linkedobjects/children/onlyinnate_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ParentContext_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>PresetDocuments_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>RESPONSIBLE</name> @@ -320,11 +321,6 @@ </entityField> <entityConsumer> <name>ModuleTrees</name> - <dependency> - <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> - </dependency> <children> <entityParameter> <name>ContextName_param</name> @@ -337,6 +333,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -377,11 +378,6 @@ </entityField> <entityConsumer> <name>KeywordCategories</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -389,6 +385,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYDAY</name> @@ -398,11 +399,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Activity_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -413,6 +409,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -437,11 +438,6 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -452,6 +448,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -519,11 +520,6 @@ </entityParameter> <entityConsumer> <name>ActivityAtrributes</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>ThemeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ThemeObjectRowId_param</name> @@ -534,14 +530,14 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/activityatrributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTreeIsTheme</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>Attribute_entity</entityName> + <fieldName>ThemeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTreeIsTheme</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -556,6 +552,11 @@ <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/attributetreeistheme/children/gettheme_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ENTRYYEAR</name> @@ -576,18 +577,31 @@ </entityParameter> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Activity_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> + <entityActionGroup> + <name>MSTeamsActions</name> + <title>MS Teams</title> + <state>EDITABLE</state> + <stateProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js</stateProcess> + <children> + <entityActionField> + <name>importFromTeams</name> + <title>Import from Teams</title> + <onActionProcess>%aditoprj%/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js</onActionProcess> + </entityActionField> + </children> + </entityActionGroup> <entityParameter> <name>Category_param</name> <expose v="true" /> diff --git a/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..102768f5f8e122cca4946d1cce6beae65d2e3ff5 --- /dev/null +++ b/entity/Activity_entity/entityfields/msteamsactions/children/importfromteams/onActionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); + +neon.openContext("MSTeamsActivityImport", "MSTeamsActivityImportEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectRowId_param" : vars.get("$param.RowId_param"), + "ObjectType_param": vars.get("$param.ObjectId_param") +}); \ No newline at end of file diff --git a/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..828bf3fc5838fa000ec45ce424e0b3d9e16aeae8 --- /dev/null +++ b/entity/Activity_entity/entityfields/msteamsactions/stateProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("MSTeams_lib"); + +var isTeamsEnabled = vars.get("$param.ObjectId_param") in MSTeamsUtils.getTeamLinkContexts() && MSTeamsUtils.isTeamsEnabled(); +result.string(/*isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : */neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/Activity_entity/recordcontainers/db/conditionProcess.js b/entity/Activity_entity/recordcontainers/db/conditionProcess.js index 0b11a5004b58c4183c958973a80043c56bcac66f..950fcd1f1dc1877ea33c1de0d3c20e92fd9e654a 100644 --- a/entity/Activity_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Activity_entity/recordcontainers/db/conditionProcess.js @@ -59,5 +59,4 @@ if (Utils.toBoolean(vars.get("$param.OnlyInnate_param"))) condition.andIfSet("ACTIVITY.PARENT_ID", "$param.ParentId_param"); condition.andIfSet("ACTIVITY.PARENT_CONTEXT", "$param.ParentContext_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(condition.toString()); \ No newline at end of file diff --git a/entity/AddressType_entity/AddressType_entity.aod b/entity/AddressType_entity/AddressType_entity.aod index 44fe6f291552d9072dd56043974aaaf7e422024e..843afd1e218beaffea518bc0979c888cc59da93e 100644 --- a/entity/AddressType_entity/AddressType_entity.aod +++ b/entity/AddressType_entity/AddressType_entity.aod @@ -22,6 +22,13 @@ <name>ByCategory</name> <lookupIdfield>KEYID</lookupIdfield> <documentation>%aditoprj%/entity/AddressType_entity/entityfields/bycategory/documentation.adoc</documentation> + <children> + <entityParameter> + <name>UsageFilter_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0956b1f3-8b67-4f82-b04a-70be88aff19f</name> @@ -30,13 +37,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>UsageFilter_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>UsageFilter_param</name> diff --git a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js index 19180612ce1d42532dc6f3807b84884e8469b4ad..6e937ecf4c22f7a5bb99a4320ddb55e7a32590f0 100644 --- a/entity/AddressType_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AddressType_entity/recordcontainers/db/conditionProcess.js @@ -18,5 +18,4 @@ if (usageFilter) SqlBuilder.IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AddressValidation_entity/AddressValidation_entity.aod b/entity/AddressValidation_entity/AddressValidation_entity.aod index 4f1ed59385145f4ad623b3590763ae1ff9ad8a25..28904169c4f2ebba7d779eaed4ca9ebd8b1383c5 100644 --- a/entity/AddressValidation_entity/AddressValidation_entity.aod +++ b/entity/AddressValidation_entity/AddressValidation_entity.aod @@ -17,6 +17,13 @@ <entityProvider> <name>ZipValidaton</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>fcfcbebe-260a-4773-a874-9791b4887ae2</name> @@ -25,13 +32,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/zipvalidaton/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Type_param</name> @@ -75,6 +75,13 @@ <entityProvider> <name>CityValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>27114db7-8562-43b2-87d8-fa605bbf2319</name> @@ -83,13 +90,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/cityvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>CurrentValue_param</name> @@ -99,6 +99,13 @@ <entityProvider> <name>FullAddressValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>10f700b5-1ac6-4d50-bcb8-aae55714fb43</name> @@ -107,13 +114,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/fulladdressvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>STREET</name> @@ -135,6 +135,13 @@ <entityProvider> <name>StreetValidation</name> <documentation>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Type_param</name> + <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/children/type_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3211d147-0867-4fc1-8640-34a1b8fdcf18</name> @@ -143,13 +150,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Type_param</name> - <valueProcess>%aditoprj%/entity/AddressValidation_entity/entityfields/streetvalidation/children/type_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>City_param</name> @@ -194,9 +194,6 @@ <jDitoRecordFieldMapping> <name>DISTRICT.value</name> </jDitoRecordFieldMapping> - <jDitoRecordFieldMapping> - <name>REGION.value</name> - </jDitoRecordFieldMapping> <jDitoRecordFieldMapping> <name>STATE.value</name> </jDitoRecordFieldMapping> diff --git a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js index e92fed1fd8c707472ada73dd1673279aeb618992..506f8a365a9e962f97b5e7f04490319cc8d883ba 100644 --- a/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/AddressValidation_entity/recordcontainers/jdito/contentProcess.js @@ -49,7 +49,6 @@ else row.cityExt, row.country, row.district, - row.region, row.state, row.road, row.buildingNo, diff --git a/entity/Address_entity/Address_entity.aod b/entity/Address_entity/Address_entity.aod index b1cf501940c85a3f845264d1a6a8bca878db1948..c6e2d95af9f9ed239aa78778b427aa164d21695c 100644 --- a/entity/Address_entity/Address_entity.aod +++ b/entity/Address_entity/Address_entity.aod @@ -90,14 +90,6 @@ <entityProvider> <name>OrganisationAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>b484b43c-16f6-4875-9787-f0813dd200cb</name> - <entityName>Organisation_entity</entityName> - <fieldName>Addresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -118,6 +110,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>b484b43c-16f6-4875-9787-f0813dd200cb</name> + <entityName>Organisation_entity</entityName> + <fieldName>Addresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ContactId_param</name> @@ -128,20 +128,6 @@ <entityProvider> <name>ContactAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/contactaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name> - <entityName>Person_entity</entityName> - <fieldName>PersAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>aecd30a8-b80e-42c5-be09-3042b75a3fa2</name> - <entityName>Contact_entity</entityName> - <fieldName>ContactAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -162,6 +148,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>efdb2f19-ab41-4f49-941a-843610e2b31b</name> + <entityName>Person_entity</entityName> + <fieldName>PersAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>aecd30a8-b80e-42c5-be09-3042b75a3fa2</name> + <entityName>Contact_entity</entityName> + <fieldName>ContactAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER</name> @@ -178,14 +178,6 @@ <name>OrganisationAddressesByContact</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationaddressesbycontact/documentation.adoc</documentation> <titlePlural>Company Addresses</titlePlural> - <dependencies> - <entityDependency> - <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name> - <entityName>Person_entity</entityName> - <fieldName>OrgAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactType_param</name> @@ -198,6 +190,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>388f6ad3-b817-4dc0-a5d5-a41eec485357</name> + <entityName>Person_entity</entityName> + <fieldName>OrgAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>IS_STANDARD</name> @@ -223,26 +223,6 @@ <entityProvider> <name>OrganisationAndContactAddresses</name> <documentation>%aditoprj%/entity/Address_entity/entityfields/organisationandcontactaddresses/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>4d7e3b3a-abba-4429-9f1e-18e11788c0f2</name> - <entityName>Person_entity</entityName> - <fieldName>ContactAndOrganisationAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>daa41953-8e95-46f2-b08a-6c843ab87985</name> - <entityName>Offer_entity</entityName> - <fieldName>PossibleAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>2f162626-bd99-4e2a-b9cf-e95864d9ed0e</name> - <entityName>Order_entity</entityName> - <fieldName>PossibleAddresses</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -264,6 +244,26 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>4d7e3b3a-abba-4429-9f1e-18e11788c0f2</name> + <entityName>Person_entity</entityName> + <fieldName>ContactAndOrganisationAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>daa41953-8e95-46f2-b08a-6c843ab87985</name> + <entityName>Offer_entity</entityName> + <fieldName>PossibleAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>2f162626-bd99-4e2a-b9cf-e95864d9ed0e</name> + <entityName>Order_entity</entityName> + <fieldName>PossibleAddresses</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>OrganisationId_param</name> @@ -272,17 +272,17 @@ </entityParameter> <entityConsumer> <name>KeywordAddressTypes</name> - <dependency> - <name>dependency</name> - <entityName>AddressType_entity</entityName> - <fieldName>ByCategory</fieldName> - </dependency> <children> <entityParameter> <name>UsageFilter_param</name> <valueProcess>%aditoprj%/entity/Address_entity/entityfields/keywordaddresstypes/children/usagefilter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressType_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -309,11 +309,6 @@ </entityField> <entityConsumer> <name>ZipValidation</name> - <dependency> - <name>dependency</name> - <entityName>AddressValidation_entity</entityName> - <fieldName>ZipValidaton</fieldName> - </dependency> <children> <entityParameter> <name>Country_param</name> @@ -324,14 +319,14 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/zipvalidation/children/currentvalue_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CityValidation</name> <dependency> <name>dependency</name> <entityName>AddressValidation_entity</entityName> - <fieldName>CityValidation</fieldName> + <fieldName>ZipValidaton</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CityValidation</name> <children> <entityParameter> <name>CurrentValue_param</name> @@ -342,6 +337,11 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/cityvalidation/children/country_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressValidation_entity</entityName> + <fieldName>CityValidation</fieldName> + </dependency> </entityConsumer> <entityField> <name>AddressSearch</name> @@ -357,11 +357,6 @@ </entityField> <entityConsumer> <name>FullAddressValidation</name> - <dependency> - <name>dependency</name> - <entityName>AddressValidation_entity</entityName> - <fieldName>FullAddressValidation</fieldName> - </dependency> <children> <entityParameter> <name>CurrentValue_param</name> @@ -372,14 +367,14 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/fulladdressvalidation/children/country_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>StreetValidation</name> <dependency> <name>dependency</name> <entityName>AddressValidation_entity</entityName> - <fieldName>StreetValidation</fieldName> + <fieldName>FullAddressValidation</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>StreetValidation</name> <children> <entityParameter> <name>City_param</name> @@ -394,6 +389,11 @@ <valueProcess>%aditoprj%/entity/Address_entity/entityfields/streetvalidation/children/currentvalue_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AddressValidation_entity</entityName> + <fieldName>StreetValidation</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ShowDsgvoMessage_param</name> diff --git a/entity/Address_entity/recordcontainers/db/conditionProcess.js b/entity/Address_entity/recordcontainers/db/conditionProcess.js index a938934f9b9642e9935641e62b1a9f8d957e1fbc..24b457e53de03c851e12a95bc95830c987a5f0f2 100644 --- a/entity/Address_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Address_entity/recordcontainers/db/conditionProcess.js @@ -4,13 +4,9 @@ import("system.db"); import("Sql_lib"); var cond = newWhere() + .andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param"); -if (vars.exists("$param.ContactId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist?? --> It should be null if it's not set... - cond.andIfSet("ADDRESS.CONTACT_ID", "$param.ContactId_param"); - -if (vars.exists("$param.OrganisationId_param")) // Todo: shouldn't be needed, but sometimes in the filter view of pers / org the param doesn't exist??' --> It should be null if it's not set... - var organisationId = vars.get("$param.OrganisationId_param"); - +var organisationId = vars.get("$param.OrganisationId_param"); if (organisationId) { var organisationContactId = newSelect("CONTACT.CONTACTID") @@ -21,5 +17,4 @@ if (organisationId) cond.orIfSet("ADDRESS.CONTACT_ID", organisationContactId); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AdminViewRow_entity/AdminViewRow_entity.aod b/entity/AdminViewRow_entity/AdminViewRow_entity.aod index 75795a8f2a19547b7ca64bdadba1dc2bea26f996..e957f3e131e1570cc6fd74e143d74bfe0caec1d6 100644 --- a/entity/AdminViewRow_entity/AdminViewRow_entity.aod +++ b/entity/AdminViewRow_entity/AdminViewRow_entity.aod @@ -42,6 +42,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>copyValueToClipboard</name> + <onActionProcess>%aditoprj%/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLIPBOARD</iconId> + </entityActionField> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js b/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dd853d9ace41d189f6b152f075fee9c1038e0ecb --- /dev/null +++ b/entity/AdminViewRow_entity/entityfields/copyvaluetoclipboard/onActionProcess.js @@ -0,0 +1,11 @@ +import("system.vars"); +import("system.neon"); + +var fieldValues = JSON.parse(vars.get("$param.Rows_param")); +var fieldId = vars.get("$local.uid"); +var row = fieldValues.find(function ([id]) +{ + return id === fieldId; +}); +if (row) + neon.copyToClipboard(row[2]); \ No newline at end of file diff --git a/entity/AnyContact_entity/AnyContact_entity.aod b/entity/AnyContact_entity/AnyContact_entity.aod index 0d0c5d1d960ce42545577c9ad79cde469d73d4a9..3b3b3c3e9899dc01fc477ddfc3e5f3f910455f69 100644 --- a/entity/AnyContact_entity/AnyContact_entity.aod +++ b/entity/AnyContact_entity/AnyContact_entity.aod @@ -3,6 +3,7 @@ <name>AnyContact_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/AnyContact_entity/documentation.adoc</documentation> + <title>Contact</title> <contentTitleProcess>%aditoprj%/entity/AnyContact_entity/contentTitleProcess.js</contentTitleProcess> <initFilterProcess>%aditoprj%/entity/AnyContact_entity/initFilterProcess.js</initFilterProcess> <imageProcess>%aditoprj%/entity/AnyContact_entity/imageProcess.js</imageProcess> @@ -29,12 +30,6 @@ <fieldName>AnyContacts</fieldName> <isConsumer v="false" /> </entityDependency> - <entityDependency> - <name>336fdc6b-05f8-40bc-89ba-d4ab98bd6948</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>AnyContacts</fieldName> - <isConsumer v="false" /> - </entityDependency> <entityDependency> <name>b2895709-2ebf-46ec-a46d-6b2e9a4575a3</name> <entityName>BulkMailRecipient_entity</entityName> @@ -77,11 +72,23 @@ <fieldName>Contacts</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>ea7c855e-dccd-4c05-9efb-a1303f37dab8</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>AnyContacts</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityProvider> <name>ContactsByIds</name> <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/contactsbyids/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0206f7a8-fd58-47e8-8b7a-5ff4531e56fb</name> @@ -90,12 +97,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContactIds_param</name> @@ -108,6 +109,7 @@ </entityField> <entityField> <name>LANGUAGE</name> + <title>Language</title> </entityField> <entityField> <name>ORGANISATION_ID</name> @@ -157,9 +159,11 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> </entityField> <entityField> <name>PERSON_TITLE</name> + <title>Title</title> </entityField> <entityField> <name>PERSON_SALUTATION</name> + <title>Salutation</title> </entityField> <entityField> <name>PERSON_FULL_NAME</name> @@ -173,6 +177,13 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <entityProvider> <name>OnlySameCompany</name> <documentation>%aditoprj%/entity/AnyContact_entity/entityfields/onlysamecompany/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>28b19d6b-237c-4268-b6c6-323df408c94a</name> @@ -181,13 +192,6 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>WithPrivatePersons_param</name> @@ -248,6 +252,7 @@ See ContactUtils.getRelationTypeByPersOrg for possible values</description> <dbRecordFieldMapping> <name>LANGUAGE.value</name> <recordfield>CONTACT.ISOLANGUAGE</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ORGANISATION_ID.value</name> diff --git a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js index a793d04a1b1ac773414d333e4ccc4e645b1df960..e063f85110e206b097eb26a9bed17fc0b948eabd 100644 --- a/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AnyContact_entity/recordcontainers/db/conditionProcess.js @@ -32,5 +32,4 @@ var contactIds = vars.exists("$param.ContactIds_param") && vars.get("$param.Cont if (contactIds) cond.andIfSet("CONTACT.CONTACTID", JSON.parse(contactIds), SqlBuilder.IN()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/AppointmentLink_entity/AppointmentLink_entity.aod b/entity/AppointmentLink_entity/AppointmentLink_entity.aod index a60f3736b97b1a8f533330412d5d8414e5c1d742..1d6a1b12b3496a05194b7c52de49af7fb6d9b974 100644 --- a/entity/AppointmentLink_entity/AppointmentLink_entity.aod +++ b/entity/AppointmentLink_entity/AppointmentLink_entity.aod @@ -51,6 +51,12 @@ <targetIdField>OBJECTID</targetIdField> <documentation>%aditoprj%/entity/AppointmentLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>AppointmentId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3dde1745-18a1-4499-83d0-61e414086997</name> @@ -59,12 +65,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>AppointmentId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Context</name> @@ -76,17 +76,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/AppointmentLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>opencontext</name> diff --git a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js index e95adef18a9cb958af3277c59ad305d5d4a786b6..a44f299d8aff2125db0785b0a333771b0af21cd5 100644 --- a/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js +++ b/entity/AppointmentLink_entity/entityfields/objectid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECTID")) { result.string(""); } else if (vars.exists("$field.OBJECTTYPE") && vars.get("$field.OBJECTTYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECTTYPE"), vars.get("$field.OBJECTID"))); } \ No newline at end of file diff --git a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js index b9a9cafdcba80e3ff11803906bddf17e2423c3b3..b44b0652bd7cf463b313517ee246185226d339e4 100644 --- a/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AppointmentLink_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("AB_APPOINTMENTLINK.APPOINTMENT_ID", "$param.AppointmentId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Appointment_entity/Appointment_entity.aod b/entity/Appointment_entity/Appointment_entity.aod index 6f51538041ffc0b890e44450ea85fd73235b5185..2b98d6bd2c33292ef54ca82d1d5c8f624b353cbf 100644 --- a/entity/Appointment_entity/Appointment_entity.aod +++ b/entity/Appointment_entity/Appointment_entity.aod @@ -171,11 +171,6 @@ </entityParameter> <entityConsumer> <name>AppointmentLinks</name> - <dependency> - <name>dependency</name> - <entityName>AppointmentLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>AppointmentId_param</name> @@ -187,6 +182,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AppointmentLink_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteSeries</name> @@ -254,6 +254,11 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js b/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js index 1ab0229fb447c8119504440ad07ccc53c097b2f9..52ca1397cf7c11f6ff54c9bc83aa912e5fe05015 100644 --- a/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js +++ b/entity/Appointment_entity/entityfields/attendees/dropDownProcess.js @@ -3,7 +3,7 @@ import("system.result"); import("system.calendars"); var entry = JSON.parse(vars.getString("$param.Entry_param")); -var allUsers = calendars.getFullCalendarUsers(calendars.RIGHT_WRITE); +var allUsers = calendars.getFullCalendarUsers(calendars.RIGHT_READ); var results = []; for (var i = 0; i < allUsers.length; i++) diff --git a/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e5bfa3bbe7f58d2ffaf401248014a6d1a560d2de --- /dev/null +++ b/entity/Appointment_entity/entityfields/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("true"); \ No newline at end of file diff --git a/entity/Appointment_entity/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..709bfac8d00e3b805a383dc0c78c0cb8b91a07d1 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("Employee_lib"); import("system.tools"); import("system.db"); @@ -9,6 +10,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; @@ -27,14 +29,14 @@ if(vars.exists("$param.Entry_param") && vars.get("$param.Entry_param")) //@TODO Icon result.object([ - buildEntry(entry, masterEntry) + CalendarUtil.buildEntry(entry, masterEntry) ]); } else if(vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$local.idvalues") != null && vars.get("$local.idvalues") != "") { var selectedids = vars.get("$local.idvalues"); - result.object([buildEntry(calendars.getEntry(selectedids, null, null), null)]); + result.object([CalendarUtil.buildEntry(calendars.getEntry(selectedids, null, null), null)]); } else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) @@ -42,7 +44,7 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) var contactid = EmployeeUtils.getCurrentContactId(); appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", contactid) - result.object(buildEntriesFromUids(appointmentSelect.table())); + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); } /** @@ -51,78 +53,5 @@ else if(vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if(vars.getString("$param.LinkedObjectId_param") != undefined) { appointmentSelect.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param") - result.object(buildEntriesFromUids(appointmentSelect.table())); -} - -function buildEntriesFromUids(appointmentUids) -{ - var entryArray = new Array(appointmentUids.length); - - for(var i = 0; i < appointmentUids.length; i++) - entryArray[i] = buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); - - return entryArray; -} - - -function buildEntry(pEntry, pMasterentry) -{ - var uid = pEntry[calendars.ID]; - var summary = pEntry[calendars.SUMMARY]; - var attendees = pEntry[calendars.AFFECTEDUSERS]; - var startdate = pEntry[calendars.DTSTART]; - var enddate = pEntry[calendars.DTEND]; - var links = pEntry[calendars.LINKS]; - var description = pEntry[calendars.DESCRIPTION]; - if(pEntry[calendars.ORGANIZER2] != undefined) - var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; - if(pEntry[calendars.USER2] != undefined) - var owner = pEntry[calendars.USER2]["paramvalue"]; - var status = pEntry[calendars.STATUS]; - var location = pEntry[calendars.LOCATION]; - var reminder = pEntry[calendars.REMINDER_DURATION]; - var remindercheck = pEntry[calendars.HASREMINDER] - var classification = pEntry[calendars.CLASSIFICATION]; - var transparency = pEntry[calendars.TRANSPARENCY]; - var categories = pEntry[calendars.CATEGORIES]; - var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; - - var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null - var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null - - // Recurrence - var recurrenceID = pEntry[calendars.RECURRENCEID]; - var rrule = null; - if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master - rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; - } else { - rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; - } - - return [ - uid, - attendees.length, - startdate, - enddate, - summary, - organizer, - owner, - attendees, - status, - description, - location, - '', - isAllDay, - classification, - transparency, - categories, - reminder, - remindercheck, - rrule, - recurrenceID, - null, - masterBegin, - masterEnd, - null - ]; + result.object(CalendarUtil.buildEntriesFromUids(appointmentSelect.table())); } diff --git a/entity/Appointment_entity/recordcontainers/jdito/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/Appointment_entity/recordcontainers/jdito/rowCountProcess.js b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js index afff252f743faff586199e13333a707e5d52c51e..d6495461f9409c2d28cd62951d09cc6797a4eb69 100644 --- a/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/Appointment_entity/recordcontainers/jdito/rowCountProcess.js @@ -1,3 +1,4 @@ +import("Calendar_lib"); import("system.db"); import("Employee_lib"); import("Sql_lib"); @@ -5,7 +6,7 @@ import("system.vars"); import("system.result"); var rowCount = "0"; -var cond = newSelect("count(APPOINTMENT_ID)") +var cond = newSelect("APPOINTMENT_ID") .from("AB_APPOINTMENTLINK"); if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) @@ -13,7 +14,7 @@ if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", EmployeeUtils.getCurrentContactId()); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** @@ -22,7 +23,7 @@ else if (vars.getString("$param.LinkedAppointmentsFromDashlet_param")) else if (vars.getString("$param.LinkedObjectId_param") != undefined) { cond.whereIfSet("AB_APPOINTMENTLINK.OBJECT_ROWID", "$param.LinkedObjectId_param"); - rowCount = cond.cell(); + rowCount = CalendarUtil.countEntriesFromUids(cond.table()); } /** * Will be used, if the user is operating the calendar. diff --git a/entity/AroundLocation_entity/AroundLocation_entity.aod b/entity/AroundLocation_entity/AroundLocation_entity.aod index c91531dc4c43f5cb38c9324e78b6c69f15d6251f..227c9fc268c1ccecd8d7dfe22781522a0f6a2c2b 100644 --- a/entity/AroundLocation_entity/AroundLocation_entity.aod +++ b/entity/AroundLocation_entity/AroundLocation_entity.aod @@ -21,17 +21,17 @@ <entityConsumer> <name>Organisations</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>OrganisationsViaIndex</fieldName> - </dependency> <children> <entityParameter> <name>OnlyShowContactIds_param</name> <valueProcess>%aditoprj%/entity/AroundLocation_entity/entityfields/organisations/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>OrganisationsViaIndex</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>Open</name> diff --git a/entity/AttributeRelation_entity/AttributeRelation_entity.aod b/entity/AttributeRelation_entity/AttributeRelation_entity.aod index 4e5c98f9dece6d09e3bc547dc137db746490724b..6a92d5391d81f8fb81e4968db71c7f66ee112989 100644 --- a/entity/AttributeRelation_entity/AttributeRelation_entity.aod +++ b/entity/AttributeRelation_entity/AttributeRelation_entity.aod @@ -34,6 +34,13 @@ <entityProvider> <name>TreeProvider</name> <documentation>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>GetTree_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/children/gettree_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e0a7a4bc-ec7f-4f09-9b94-cbeb328cd7b8</name> @@ -96,13 +103,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>GetTree_param</name> - <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/treeprovider/children/gettree_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>AB_ATTRIBUTE_ID</name> @@ -132,11 +132,6 @@ </entityField> <entityConsumer> <name>SpecificAttribute</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -155,6 +150,11 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificattribute/children/themeobjectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>GetTree_param</name> @@ -165,6 +165,12 @@ <entityProvider> <name>AttributeRelations</name> <documentation>%aditoprj%/entity/AttributeRelation_entity/entityfields/attributerelations/documentation.adoc</documentation> + <children> + <entityParameter> + <name>GetTree_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>69560cc2-d92a-453c-9e64-fb712a538c4f</name> @@ -239,12 +245,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>GetTree_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>DATE_EDIT</name> @@ -312,11 +312,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>Entity_param</name> @@ -327,6 +322,11 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/objects/children/filter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>DROPDOWNDEFINITION</name> @@ -341,6 +341,7 @@ </entityProvider> <entityField> <name>AB_ATTRIBUTERELATIONID</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js</valueProcess> </entityField> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -348,11 +349,6 @@ </entityProvider> <entityConsumer> <name>SpecificFilterAttributes</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificFilterAttributes</fieldName> - </dependency> <children> <entityParameter> <name>AttributeCount_param</name> @@ -363,9 +359,20 @@ <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/specificfilterattributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>FilterProvider</name> + <children> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/AttributeRelation_entity/entityfields/filterprovider/children/displaysimplename_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0560c6d0-8473-4050-9ca1-a935bbac2ef9</name> @@ -374,12 +381,6 @@ <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> diff --git a/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e11e370a0bf849a4ef24d5ae03cda2d11b82a8ce --- /dev/null +++ b/entity/AttributeRelation_entity/entityfields/ab_attributerelationid/valueProcess.js @@ -0,0 +1,7 @@ +import("system.util"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(util.getNewUUID()); \ No newline at end of file diff --git a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js index e0ce90c175370c539ed09e94eab727271db1cc2d..051e58a290e40ba32c7f91d3782eb37a59768e96 100644 --- a/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js +++ b/entity/AttributeRelation_entity/entityfields/value_lookup/stateProcess.js @@ -4,8 +4,11 @@ import("system.result"); import("Attribute_lib"); var fieldState; -if (AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE"))) +if ((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + && AttributeTypeUtil.useLookup(vars.get("$field.ATTRIBUTE_TYPE"))) +{ fieldState = neon.COMPONENTSTATE_EDITABLE; +} else fieldState = neon.COMPONENTSTATE_INVISIBLE; diff --git a/entity/AttributeUsage_entity/AttributeUsage_entity.aod b/entity/AttributeUsage_entity/AttributeUsage_entity.aod index 281daa5f5aafefe0a4307b836fefb819ed97670a..166b6b8423d16017ff4fa657a9a86be652cb5c0e 100644 --- a/entity/AttributeUsage_entity/AttributeUsage_entity.aod +++ b/entity/AttributeUsage_entity/AttributeUsage_entity.aod @@ -72,16 +72,7 @@ </entityField> <entityConsumer> <name>Context</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> <entityParameter> <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/blacklist_param/valueProcess.js</valueProcess> @@ -91,6 +82,11 @@ <valueProcess>%aditoprj%/entity/AttributeUsage_entity/entityfields/context/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>SingleSelection_param</name> diff --git a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js index 4c333a888b165e2b3fff15433861e3de2b785344..854e2896ae3f2baa9ea18cbab4a7922e6821dd21 100644 --- a/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js +++ b/entity/AttributeUsage_entity/recordcontainers/db/conditionProcess.js @@ -2,6 +2,5 @@ import("Sql_lib"); import("system.db"); import("system.result"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", "$param.AttributeId_param") .toString()); diff --git a/entity/Attribute_entity/Attribute_entity.aod b/entity/Attribute_entity/Attribute_entity.aod index 26e2e934e598ad4d50c640da866a5cd4b452b3f2..76187e3927335461766933afcdea204d792bbfc6 100644 --- a/entity/Attribute_entity/Attribute_entity.aod +++ b/entity/Attribute_entity/Attribute_entity.aod @@ -61,11 +61,6 @@ <name>AttributeUsages</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeUsage_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>AttributeId_param</name> @@ -81,6 +76,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/children/disablemincount_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeUsage_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityField> <name>ATTRIBUTE_ACTIVE</name> @@ -92,11 +92,6 @@ </entityField> <entityConsumer> <name>KeywordAttributeTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -108,6 +103,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/keywordattributetypes/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>DROPDOWNDEFINITION</name> @@ -131,6 +131,34 @@ <entityProvider> <name>SpecificAttribute</name> <lookupIdfield>UID</lookupIdfield> + <documentation>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>FilteredAttributeIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>DisplaySimpleName_param</name> + <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/children/displaysimplename_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ChildId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ChildType_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <description>parent id, this is used for filtering by the parent in the content process</description> + </entityParameter> + </children> <dependencies> <entityDependency> <name>ba3b4d47-7385-49df-bf61-54c99f5b2c81</name> @@ -163,33 +191,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>FilteredAttributeIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisplaySimpleName_param</name> - <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/specificattribute/children/displaysimplename_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ChildId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ChildType_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <description>parent id, this is used for filtering by the parent in the content process</description> - </entityParameter> - </children> </entityProvider> <entityField> <name>FULL_ATTRIBUTE_NAME</name> @@ -214,6 +215,7 @@ </entityField> <entityProvider> <name>AttributeGroups</name> + <documentation>%aditoprj%/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc</documentation> <children> <entityParameter> <name>ThemeObjectRowId_param</name> @@ -240,11 +242,6 @@ <entityConsumer> <name>AttributeGroup</name> <description>Used for the selection of the parent attribute</description> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>AttributeGroups</fieldName> - </dependency> <children> <entityParameter> <name>ChildId_param</name> @@ -259,6 +256,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributegroup/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>AttributeGroups</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -309,25 +311,21 @@ </entityField> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> - <entityParameter> - <name>GetAllContexts_param</name> - <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js</valueProcess> - </entityParameter> <entityParameter> <name>InvertBlacklist_param</name> <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>AttributeActions</name> @@ -359,14 +357,6 @@ </entityActionField> <entityProvider> <name>ThemeProvider</name> - <dependencies> - <entityDependency> - <name>6e314038-62de-4f0c-b89a-92f029c10933</name> - <entityName>Activity_entity</entityName> - <fieldName>ActivityAtrributes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeCount_param</name> @@ -385,6 +375,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>6e314038-62de-4f0c-b89a-92f029c10933</name> + <entityName>Activity_entity</entityName> + <fieldName>ActivityAtrributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ParentId_param</name> @@ -401,14 +399,6 @@ <sortingField>SORTING</sortingField> <documentation>%aditoprj%/entity/Attribute_entity/entityfields/attributechildren/documentation.adoc</documentation> <titlePlural>Child Attributes</titlePlural> - <dependencies> - <entityDependency> - <name>80023321-1954-483f-a4be-b7207557c068</name> - <entityName>Attribute_entity</entityName> - <fieldName>ChildAttributes</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ChildId_param</name> @@ -448,16 +438,19 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>80023321-1954-483f-a4be-b7207557c068</name> + <entityName>Attribute_entity</entityName> + <fieldName>ChildAttributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>ChildAttributes</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/childattributes/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>AttributeChildren</fieldName> - </dependency> <children> <entityParameter> <name>DisplaySimpleName_param</name> @@ -472,6 +465,11 @@ <valueProcess>%aditoprj%/entity/Attribute_entity/entityfields/childattributes/children/parenttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>AttributeChildren</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>GetOnlyFirstLevelChildren_param</name> @@ -487,14 +485,6 @@ </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> @@ -505,6 +495,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>9b2b5f2e-229d-4a10-a54f-cbf77aafe512</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>SpecificFilterAttributes</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> </entityFields> <recordContainers> diff --git a/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..6af9c11f0f7e8517aa60a8bdd6d5fb0a457dd6fc --- /dev/null +++ b/entity/Attribute_entity/entityfields/attributegroups/documentation.adoc @@ -0,0 +1,3 @@ += AttributeGroups + +This provider provides only attribute groups, it is used for the selection of an attribute parent. \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js b/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js index 2405febf9b19c521aa76b395b28c7664d84e6357..6f20e15ed4840e4c2cdb74ed5d57da8b30ce4a5c 100644 --- a/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js +++ b/entity/Attribute_entity/entityfields/openadminview/onActionProcess.js @@ -1,6 +1,4 @@ import("system.vars"); import("Context_lib"); -AdminViewUtils.open("ATTRIBUTEID", [ - ["ATTRIBUTE_PARENT_ID", vars.get("$field.ATTRIBUTE_PARENT_ID")] -]); \ No newline at end of file +AdminViewUtils.open("AB_ATTRIBUTEID", ["ATTRIBUTE_PARENT_ID", "ATTRIBUTE_ACTIVE", "ATTRIBUTE_TYPE", "SORTING"]); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..5084132f04b54babcf687262514ac3462c479261 --- /dev/null +++ b/entity/Attribute_entity/entityfields/specificattribute/documentation.adoc @@ -0,0 +1,4 @@ += SpecificAttribute + +This provider is used for selecting an attribute, for example to create an attribute relation in AttributeRelation_entity. +The attributes are usually filtered by the ObjectType_param parameter to show only attributes that can be used in a specific context. \ No newline at end of file diff --git a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod index 88d93c5023fdb6b90668c9269a64a6a642785a08..2ed69d3a31331cf6801b12b2e12a38394e75d78b 100644 --- a/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod +++ b/entity/AuditLogHistory_entity/AuditLogHistory_entity.aod @@ -2,12 +2,12 @@ <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> + <documentation>%aditoprj%/entity/AuditLogHistory_entity/documentation.adoc</documentation> <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> @@ -132,7 +132,7 @@ <filterExtensions> <filterExtension> <name>contextFilter</name> - <title>Kontext</title> + <title>Context</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> diff --git a/entity/AuditLogHistory_entity/documentation.adoc b/entity/AuditLogHistory_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..2c0a2a12eb8182eeab3ad27c32727dee6d898c20 --- /dev/null +++ b/entity/AuditLogHistory_entity/documentation.adoc @@ -0,0 +1,3 @@ += AuditLogHistory_entity + +This is an entity for loading all log history entries from all contexts. \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod index bae83161b6a2b2580cbc7734093346ce3596a028..0e5fdd626ed467febf43099ab2bbe1d578ced05e 100644 --- a/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod +++ b/entity/BulkMailRecipient_entity/BulkMailRecipient_entity.aod @@ -67,17 +67,17 @@ </entityConsumer> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>EMAIL_ADDRESS</name> @@ -121,6 +121,13 @@ <iconId>VAADIN:BAN</iconId> <tooltipProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/removewithcommrestriction/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing mailing</title> + <onActionProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> + </entityActionField> </children> </entityActionGroup> <entityField> @@ -129,17 +136,17 @@ </entityField> <entityConsumer> <name>EmailAdresses</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/BulkMailRecipient_entity/entityfields/emailadresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cbe91449e5c258643491b9020a7bc6d1b534e7ec --- /dev/null +++ b/entity/BulkMailRecipient_entity/entityfields/recipientactions/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,34 @@ +import("Util_lib"); +import("system.entities"); +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +var rows = vars.get("$sys.selectionRows"); +var filter = vars.get("$sys.filter").filter; +var targets = []; + +if (Utils.isNullOrEmpty(rows)) +{ + let loadConfig = entities.createConfigForLoadingRows() + .entity("BulkMailRecipient_entity") + .provider("BulkMailRecipients") + .fields(["CONTACT_ID", "TARGETCONTEXT"]) + .addParameter("BulkMailId_param", vars.get("$param.BulkMailId_param")); + + if (filter) + loadConfig.filter(JSON.stringify(filter)); + + rows = entities.getRows(loadConfig); +} + +rows = rows.map(function (row) +{ + return [row["CONTACT_ID"], row["TARGETCONTEXT"]]; +}); + + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(rows), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js index a2473cad7ca8ee6904811861505e0e412ab6c6fa..01d4a5dc9c76ee5f350521eea0f4a2bb6016a3ec 100644 --- a/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js +++ b/entity/BulkMailRecipient_entity/recordcontainers/db/conditionProcess.js @@ -2,5 +2,4 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhere("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param").toString()); \ 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/BulkMail_entity/BulkMail_entity.aod b/entity/BulkMail_entity/BulkMail_entity.aod index a6e8b3db47b37d15f43098189957c08b86595414..cc5791ce3abcf79661d371db01061a4de1229fc6 100644 --- a/entity/BulkMail_entity/BulkMail_entity.aod +++ b/entity/BulkMail_entity/BulkMail_entity.aod @@ -56,25 +56,20 @@ <entityConsumer> <name>Recipients</name> <stateProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>BulkMailRecipient_entity</entityName> - <fieldName>BulkMailRecipients</fieldName> - </dependency> <children> <entityParameter> <name>BulkMailId_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipients/children/bulkmailid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Templates</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>BulkMailRecipient_entity</entityName> + <fieldName>BulkMailRecipients</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Templates</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -85,6 +80,11 @@ <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -108,17 +108,17 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>bindata</name> @@ -155,17 +155,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CREATEACTIVITIES</name> @@ -176,17 +176,17 @@ </entityField> <entityConsumer> <name>RecipientStatusChart</name> - <dependency> - <name>dependency</name> - <entityName>BulkMailStatusChart_entity</entityName> - <fieldName>RecipientStatusChart</fieldName> - </dependency> <children> <entityParameter> <name>BulkMailId_param</name> <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/recipientstatuschart/children/bulkmailid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>BulkMailStatusChart_entity</entityName> + <fieldName>RecipientStatusChart</fieldName> + </dependency> </entityConsumer> <entityField> <name>TESTING_CONTACT_ID</name> @@ -213,11 +213,6 @@ </entityConsumer> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -228,6 +223,11 @@ <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>sendMail</name> @@ -290,6 +290,14 @@ </entityParameter> <entityProvider> <name>BulkMailsNotSent</name> + <documentation>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc</documentation> + <children> + <entityParameter> + <name>BulkMailStatus_param</name> + <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/children/bulkmailstatus_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>16cdf326-0b43-4d72-bf19-21434e047e85</name> @@ -298,13 +306,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>BulkMailStatus_param</name> - <valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/bulkmailsnotsent/children/bulkmailstatus_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>BulkMailStatus_param</name> diff --git a/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..256cf217d7182dead7e7dfe8cbfb770cdcd77f86 --- /dev/null +++ b/entity/BulkMail_entity/entityfields/bulkmailsnotsent/documentation.adoc @@ -0,0 +1,3 @@ += BulkMailsNotSent + +Provides only BulkMails with the status 'not sent'. \ No newline at end of file diff --git a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js index 5f100fbe60a4fef3b5f793b411562889452f16c1..c581ed319d6abf9a33281237cd2ccee9cdbfdd69 100644 --- a/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js +++ b/entity/BulkMail_entity/entityfields/documenttemplate_id/onValueChange.js @@ -9,7 +9,7 @@ if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.re { // note: could not use only the valueProcess from $field.content because then it refreshed $field.content just before save. // --> only set in $field.content.valueProcess if $field.content is null and set it from here only if MASK triggered change - [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata"))); + var [content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$local.value"), new FileUpload(vars.get("$field.bindata"))); vars.set("$field.templateType", type); vars.set("$field.content", content); diff --git a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod index 447fef3d4393c2b2dc7924ab017ea3d896006850..5a45ceab9f71040142b2967e02238e309981aa4e 100644 --- a/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod +++ b/entity/CampaignAddParticipants_entity/CampaignAddParticipants_entity.aod @@ -6,6 +6,7 @@ <title>Add participants to Campaign</title> <siblings> <element>CampaignParticipant_entity</element> + <element>Campaign_entity</element> </siblings> <recordContainer>datalessConfig</recordContainer> <entityFields> @@ -59,11 +60,6 @@ </entityConsumer> <entityConsumer> <name>CampaignStepConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -71,6 +67,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> diff --git a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js index b2c37dfa07d393af2fbd10b50ae3ea3dcac816b4..f1697b24ba89faca7eee7192a830ee3bf51ac713 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/addparticipants/onActionProcess.js @@ -31,7 +31,7 @@ else participantCondition = JSON.parse(vars.getString("$param.campaignParticipantsCondition_param")).condition; _handleCondition(campaignId, conditionSourceTableName, participantCondition); } - +neon.refreshAll(); if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentCampaignId_param")) neon.openContext("Campaign", "CampaignMain_view", [campaignId], neon.OPERATINGSTATE_VIEW, null); diff --git a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js index ff279849cebaa73eaaad7f251b821d9379d06ad5..d1c7824536e06bed2ffb8d47a1b93cc8f1260253 100644 --- a/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js +++ b/entity/CampaignAddParticipants_entity/entityfields/campaignparticipantcontactids/valueProcess.js @@ -29,7 +29,7 @@ if(vars.get("$field.CAMPAIGN_ID")) if (vars.get("$param.campaignParticipantsCondition_param")) { var contactFilterCondition = JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition; - contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition, comingfrom); + contactIds = CampaignUtils.GetContactIdsInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition); } else { diff --git a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod index 137b70c4aa991ae7a2e366e78c7658701dd62d68..8aae1d74b98c7a1429ff8a47a0246962919fc058 100644 --- a/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod +++ b/entity/CampaignAnalysis_entity/CampaignAnalysis_entity.aod @@ -6,6 +6,7 @@ <siblings> <element>CampaignCost_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> @@ -14,14 +15,6 @@ <entityProvider> <name>CampaignAnalysisProvider</name> <documentation>%aditoprj%/entity/CampaignAnalysis_entity/entityfields/campaignanalysisprovider/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>bd130613-f0e4-4591-8035-2c2491b08c50</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignAnalysisConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DateEnd_param</name> @@ -39,6 +32,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>bd130613-f0e4-4591-8035-2c2491b08c50</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignAnalysisConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>CampaignId_param</name> diff --git a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod index de366ec455d550396f8e3fbbbb404e73f7c8b02b..f5d7ee451e45fbcc532df7d5ee2d6e934ebe7d79 100644 --- a/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod +++ b/entity/CampaignCostChart_entity/CampaignCostChart_entity.aod @@ -6,6 +6,7 @@ <siblings> <element>CampaignCost_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignCost_entity/CampaignCost_entity.aod b/entity/CampaignCost_entity/CampaignCost_entity.aod index 2af24acc0d0ade0e8fbe9d0df0397c5b4c1a2ced..3f3d974f90dfa7cca37d59ae84a4153b1e0d8d94 100644 --- a/entity/CampaignCost_entity/CampaignCost_entity.aod +++ b/entity/CampaignCost_entity/CampaignCost_entity.aod @@ -7,6 +7,7 @@ <element>CampaignAnalysis_entity</element> <element>CampaignCostChart_entity</element> </siblings> + <usePermissions v="false" /> <titlePlural>Cost entries</titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -79,14 +80,6 @@ <entityProvider> <name>CampaignCosts</name> <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/campaigncosts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>7131288b-af5c-4914-96f5-c5d70217fc23</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>CampaignStepId_param</name> @@ -106,24 +99,18 @@ <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>StepCosts</name> - <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/stepcosts/documentation.adoc</documentation> <dependencies> <entityDependency> - <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name> + <name>7131288b-af5c-4914-96f5-c5d70217fc23</name> <entityName>Campaign_entity</entityName> - <fieldName>CampaignStepCosts</fieldName> + <fieldName>CampaignCosts</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>StepCosts</name> + <documentation>%aditoprj%/entity/CampaignCost_entity/entityfields/stepcosts/documentation.adoc</documentation> <children> <entityParameter> <name>CampaignStepId_param</name> @@ -143,6 +130,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>af147f3e-a1bd-4eb0-9ac8-325dbdaba17d</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignStepCosts</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>2a92b738-c0bb-4c14-9915-aff9e18effaf</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignStepCosts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Campaigns</name> @@ -154,25 +155,20 @@ </entityConsumer> <entityConsumer> <name>CampaignSteps</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCampaignManagementCostCategory</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCampaignManagementCostCategory</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -183,6 +179,11 @@ <valueProcess>%aditoprj%/entity/CampaignCost_entity/entityfields/keywordcampaignmanagementcostcategory/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>CampaignId_param</name> @@ -236,6 +237,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityAggregateField> + <name>NET_aggregate</name> + <parentField>NET</parentField> + </entityAggregateField> + <entityAggregateField> + <name>NETPERPARTICIPANT_aggregate</name> + <parentField>netPerParticipant</parentField> + </entityAggregateField> </entityFields> <recordContainers> <dbRecordContainer> @@ -312,6 +321,15 @@ <name>CURRENCY.value</name> <recordfield>CAMPAIGN.CURRENCY</recordfield> </dbRecordFieldMapping> + <aggregateFieldDbMapping> + <name>NET_aggregate.value</name> + <recordfield>CAMPAIGNCOST.NET</recordfield> + <aggregateType>SUM</aggregateType> + </aggregateFieldDbMapping> + <aggregateFieldDbMapping> + <name>NETPERPARTICIPANT_aggregate.value</name> + <expression>%aditoprj%/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js</expression> + </aggregateFieldDbMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js index 0d440b3273654c53a9eb47fa0da830499214b1a0..41159ac869687465a8b95f1980f26bd891c9851d 100644 --- a/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js +++ b/entity/CampaignCost_entity/recordcontainers/db/conditionProcess.js @@ -19,5 +19,4 @@ else cond.and("CAMPAIGNCOST.CAMPAIGNSTEP_ID is null"); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..18b449265da4cb9e8479a5db4f859cfbc5d6bf53 --- /dev/null +++ b/entity/CampaignCost_entity/recordcontainers/db/recordfieldmappings/netperparticipant_aggregate.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +result.string("SUM(CAMPAIGNCOST.NET/(select COUNT(*) from CAMPAIGNPARTICIPANT where CAMPAIGNCOST.CAMPAIGN_ID = CAMPAIGNPARTICIPANT.CAMPAIGN_ID " + +" and CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID))"); \ No newline at end of file diff --git a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod index 9f4d833b4dd531b6cd9df80f061ed1cd12be9704..6291fe367fc8692ca2d6e068e1d9a6e5a2531818 100644 --- a/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod +++ b/entity/CampaignParticipantChart_entity/CampaignParticipantChart_entity.aod @@ -8,6 +8,7 @@ <element>CampaignStep_entity</element> <element>CampaignAddParticipants_entity</element> </siblings> + <usePermissions v="false" /> <recordContainer>jdito</recordContainer> <entityFields> <entityProvider> diff --git a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod index 3c8e5a5655f3c8320c4188939e9588988e7b9b44..92f21ead9046ed628e9a8e2c4148c710a235f88f 100644 --- a/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod +++ b/entity/CampaignParticipant_entity/CampaignParticipant_entity.aod @@ -7,34 +7,21 @@ <siblings> <element>CampaignAddParticipants_entity</element> <element>CampaignParticipantChart_entity</element> + <element>Campaign_entity</element> </siblings> <afterOperatingState>%aditoprj%/entity/CampaignParticipant_entity/afterOperatingState.js</afterOperatingState> - <useFavorites v="true" /> + <usePermissions v="false" /> <titlePlural>Participants</titlePlural> - <recordContainer>ParticipantsDbRecordContainer</recordContainer> + <recordContainer>db</recordContainer> <entityFields> <entityProvider> <name>#PROVIDER</name> + <recordContainer>db</recordContainer> </entityProvider> <entityProvider> <name>CampaignParticipantsProvider</name> - <targetContextField>CONTACTCONTEXT</targetContextField> - <targetIdField>CONTACT_ID</targetIdField> <documentation>%aditoprj%/entity/CampaignParticipant_entity/entityfields/campaignparticipantsprovider/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> - <entityName>Campaign_entity</entityName> - <fieldName>CampaignParticipants</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignParticipantsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> + <recordContainer>db</recordContainer> <children> <entityParameter> <name>ContactId_param</name> @@ -49,6 +36,20 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f28945cd-4613-4dfa-91f7-a7d9d64cef58</name> + <entityName>Campaign_entity</entityName> + <fieldName>CampaignParticipants</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>7ad08378-b36f-4512-8891-db727c6ddcd7</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignParticipantsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>CampaignStepId_param</name> @@ -113,11 +114,9 @@ <name>CONTACT_ID</name> <title>Participant</title> <consumer>AnyContacts</consumer> - <linkedContextProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> <mandatory v="true" /> <state>READONLY</state> <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/stateProcess.js</stateProcess> - <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> </entityField> <entityField> @@ -145,11 +144,6 @@ <entityConsumer> <name>CampaignSteps</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -157,6 +151,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTCONTEXT</name> @@ -170,9 +169,8 @@ <title>Update campaign step</title> <onActionProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> - <isSelectionAction v="false" /> <iconId>NEON:GROUP_APPOINTMENT</iconId> - <state>DISABLED</state> + <state>AUTO</state> <stateProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js</stateProcess> <tooltip>Update campaign step</tooltip> <tooltipProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/tooltipProcess.js</tooltipProcess> @@ -205,17 +203,17 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionIcon</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/commrestrictionicon/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -230,23 +228,108 @@ <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> + <recordContainer>db</recordContainer> </entityProvider> + <entityField> + <name>CONTACT_ORGANISATION_ID</name> + <title>Organisation</title> + <linkedContext>Organisation</linkedContext> + </entityField> + <entityField> + <name>CONTACT_PERSON_ID</name> + <title>Participant</title> + <linkedContext>Person</linkedContext> + </entityField> + <entityField> + <name>PERSON_CONTACT_ID</name> + <title>Person</title> + <consumer>Persons</consumer> + <linkedContext>Person</linkedContext> + </entityField> + <entityField> + <name>ORGANISATION_CONTACT_ID</name> + <title>Organisation</title> + <consumer>Organisations</consumer> + <groupable v="true" /> + <linkedContext>Organisation</linkedContext> + </entityField> + <entityConsumer> + <name>Persons</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Organisations</name> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>RESPONSIBLE_CONTACT_ID</name> + <title>Responsible</title> + <consumer>ResponsibleEmployees</consumer> + <groupable v="true" /> + <linkedContext>Person</linkedContext> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>ResponsibleEmployees</name> + <children> + <entityParameter> + <name>EmployeeContactIdWhitelist_param</name> + <valueProcess>%aditoprj%/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Employee_entity</entityName> + <fieldName>Employees</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> - <name>ParticipantsDbRecordContainer</name> + <name>db</name> <alias>Data_alias</alias> <hasDependentRecords v="true" /> - <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js</conditionProcess> - <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js</onDBInsert> + <fromClauseProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <conditionProcess>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBInsert>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <linkInformation> <linkInformation> - <name>12b5bf2e-e376-4c40-9799-fb07961a455d</name> + <name>02d0ac80-2767-401c-bdc1-aac3e8abf0e4</name> <tableName>CAMPAIGNPARTICIPANT</tableName> <primaryKey>CAMPAIGNPARTICIPANTID</primaryKey> <isUIDTable v="true" /> <readonly v="false" /> </linkInformation> + <linkInformation> + <name>6c320211-601b-47bf-a562-003886666040</name> + <tableName>CONTACT</tableName> + <primaryKey>CONTACTID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>e1719eb5-112c-4acd-8f72-58a688d5f058</name> + <tableName>PERSON</tableName> + <primaryKey>PERSONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + <linkInformation> + <name>8be80af4-69ea-4a5d-b404-8a26c1f8d8da</name> + <tableName>ORGANISATION</tableName> + <primaryKey>ORGANISATIONID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -260,6 +343,7 @@ <dbRecordFieldMapping> <name>CAMPAIGNSTEP_ID.value</name> <recordfield>CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID</recordfield> + <isFilterable v="true" /> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACT_ID.value</name> @@ -287,15 +371,66 @@ </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_PHONE_COMMUNICATION.displayValue</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js</expression> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>STANDARD_EMAIL_COMMUNICATION.displayValue</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js</expression> </dbRecordFieldMapping> <dbRecordFieldMapping> <name>ADVERTISINGBAN_ICON.value</name> - <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js</expression> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CAMPAIGNSTEP_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>campaignStepCurrentParticipantCount.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORGANISATION_CONTACT_ID.value</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js</expression> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PERSON_CONTACT_ID.value</name> + <recordfield>CONTACT.CONTACTID</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PERSON_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.value</name> + <recordfield>CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID</recordfield> + <isFilterable v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORGANISATION_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_ORGANISATION_ID.value</name> + <recordfield>CONTACT.ORGANISATION_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTACT_PERSON_ID.value</name> + <recordfield>CONTACT.PERSON_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ORGANISATION_CONTACT_ID.displayValue</name> + <recordfield>ORGANISATION.NAME</recordfield> </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> diff --git a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js index 90d07eb4d8a93c6e438b230582858b05be010468..eb6914514d8b5113929b3fb4b41dd78767efde3a 100644 --- a/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/campaignsteps/children/campaignid_param/valueProcess.js @@ -1,3 +1,9 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CAMPAIGN_ID")); \ No newline at end of file + +var campaignID = vars.get("$field.CAMPAIGN_ID"); + +if(!campaignID) + campaignID = vars.get("$param.CampaignId_param"); + +result.string(campaignID); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js index 1e3714bbbc7b3249e43757d6d933fb289cb4f767..85822946ab4fe0ba7730ca93fd6fca69250a5b33 100644 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/contact_id/displayValueProcess.js @@ -3,10 +3,4 @@ import("system.vars"); import("Contact_lib"); import("system.neon"); -let contactId = vars.getString("$field.CONTACT_ID"); -let displayValue = ""; - -if(contactId != "") - displayValue = ContactUtils.getFullTitleByContactId(contactId); - -result.string(displayValue); +result.string(ContactUtils.getFullTitleByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js deleted file mode 100644 index 2e504d63e3b5a3f71b54b072798b3ad09c50984b..0000000000000000000000000000000000000000 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/linkedContextProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.vars"); -import("system.result"); -import("Contact_lib"); - -result.string(ContactUtils.getContextByContactId(vars.getString("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js deleted file mode 100644 index 7a0567f685002323c521639e56667e945aa30d91..0000000000000000000000000000000000000000 --- a/entity/CampaignParticipant_entity/entityfields/contact_id/valueProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("system.result"); -import("system.vars"); - -if(vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) - result.string(vars.get("$param.ContactId_param")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js index 5f2f7a2cfa299eb520877db19056edad8bbef2f6..fbba2db18aa37636d3d3ca5097cccd1c29df51e7 100644 --- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/onActionProcess.js @@ -13,6 +13,5 @@ if(sysSelection.length > 0) //selektierte IDs als Array } else { - let sysFilter = vars.get("$sys.filter");//todo change name - CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(sysFilter), campaignId, campaignStepId); + CampaignUtils.openSetCampaignStepViewByCondition(JSON.stringify(vars.get("$sys.filter")), campaignId, campaignStepId); } \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js index d55386c662b50138c9a582d15dfcd103d2200e20..78eb0e84628e8dd7122682d803a8e555c24594a5 100644 --- a/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js +++ b/entity/CampaignParticipant_entity/entityfields/filterviewactiongroup/children/setsteptoparticipantselection/stateProcess.js @@ -3,8 +3,7 @@ import("system.vars"); import("system.neon"); import("system.result"); -var campaignId = vars.get("$field.CAMPAIGN_ID"); -var participantCount = CampaignUtils.getParticipantCount(campaignId); +var participantCount = vars.get("$sys.datarowcountfull"); if(participantCount > 0) { diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..92bb44a696f0c6d44599487fd487f086d632b652 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Contact_lib"); + +result.string(ContactUtils.getTitleByContactId(vars.get("$field.RESPONSIBLE_CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a952fcd46b87af6cd15e61a321c986df950fe4d7 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsible_contact_id/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(vars.get("$global.user.contactId")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2aacdbde97117f3c607a2234c5b96e5616f10246 --- /dev/null +++ b/entity/CampaignParticipant_entity/entityfields/responsibleemployees/children/employeecontactidwhitelist_param/valueProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); +import("system.neon"); + +if(vars.get("$sys.presentationmode") == neon.CONTEXT_PRESENTATIONMODE_FILTER) +{ + result.string(JSON.stringify(newSelect("DISTINCT CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID") + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", vars.get("$param.CampaignId_param")) + .arrayColumn())); +} \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/conditionProcess.js rename to entity/CampaignParticipant_entity/recordcontainers/db/conditionProcess.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8603fcea0476d3281eedbdcb42db6032e193ff12 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +result.string("CAMPAIGNPARTICIPANT " + +" join CONTACT on CONTACTID = CONTACT_ID " + +" left join PERSON ON PERSONID = PERSON_ID " + +" join ORGANISATION on ORGANISATION_ID = ORGANISATIONiD"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js b/entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/onDBInsert.js rename to entity/CampaignParticipant_entity/recordcontainers/db/onDBInsert.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..3343ac44d8f919400aa9972b5f1c0cd3f7837c57 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/advertisingban_icon.value/expression.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("Contact_lib"); +import("Sql_lib"); +import("system.result"); + +// Now show warning always, if any commrestriction exists. No matter which medium the current step has. +result.string("(" + ContactUtils.getCommRestrictionCount(undefined, vars.get("$sys.date")) + ")"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..d28cdbab4f0d456577a81ffdacfca0609beb60d4 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/contact_person_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..93edad8b41dce7f2dbaab8c776c8054e9097c7a2 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/organisation_contact_id.value/expression.js @@ -0,0 +1,14 @@ +import("system.SQLTYPES"); +import("Sql_lib"); +import("system.result"); + +result.string(SqlBuilder.caseWhen(newWhere(newSelect("COUNT(*)") + .from("CONTACT") + .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and("CONTACT.PERSON_ID is null"), "0", SqlBuilder.GREATER(), SQLTYPES.INTEGER)) + .then("CAMPAIGNPARTICIPANT.CONTACT_ID") + .elseValue(newSelect("c1.CONTACTID") + .from("CONTACT", "c1") + .join("CONTACT", "c1.ORGANISATION_ID = c2.ORGANISATION_ID", "c2") + .where("c2.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") + .and("c1.PERSON_ID is null")).toString()) \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..8e485513f892edef1812070b5521317ed059cf3d --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/person_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..29d2f306f74cbad80faada5dba266f0c819e76d3 --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.RESPONSIBLE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_email_communication.displayvalue/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_email_communication.displayvalue/expression.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js similarity index 100% rename from entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/standard_phone_communication.displayvalue/expression.js rename to entity/CampaignParticipant_entity/recordcontainers/db/recordfieldmappings/standard_phone_communication.displayvalue/expression.js diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js deleted file mode 100644 index 27052d9123b71810bd3c103ca52ea5926567dd69..0000000000000000000000000000000000000000 --- a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/advertisingban_icon.value/expression.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.vars"); -import("Contact_lib"); -import("Sql_lib"); -import("system.result"); - -// Now show warning always, if any commrestriction exists. No matter which medium the current step has. -result.string("(" + newSelect("count(*)") - .from("CONTACT") - .where("CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID") - .and(newWhere(ContactUtils.getCommRestrictionCondition(undefined, false, vars.get("$sys.date")))) // TODO: the newWhere can be removed when getCommRestrictionCondition returns a sqlBuilder instead of a SqlCondition - .toString() + ")"); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..c2a7f5503d93c7ac48568fb0476a41b0bb4193ef --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstep_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("CAMPAIGNSTEP.NAME").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString()); \ No newline at end of file diff --git a/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..7d896cba463f89dde65274356f8bbc5fb2a1097e --- /dev/null +++ b/entity/CampaignParticipant_entity/recordcontainers/participantsdbrecordcontainer/recordfieldmappings/campaignstepcurrentparticipantcount.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT", "p1").where("p1.CAMPAIGNSTEP_ID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID").toString()); \ No newline at end of file diff --git a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod index 2de87bf6e8cb49f4aa8850d0674b0e85d81a2767..44826e7cfe2893a5f59628e874e9c59f0b843d84 100644 --- a/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod +++ b/entity/CampaignPlanning_entity/CampaignPlanning_entity.aod @@ -9,6 +9,7 @@ <element>CampaignStep_entity</element> </siblings> <iconId>NEON:GROUP_APPOINTMENT</iconId> + <usePermissions v="false" /> <recordContainer>jditoRecordContainer</recordContainer> <entityFields> <entityProvider> @@ -80,17 +81,17 @@ </entityField> <entityConsumer> <name>CampaignStatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignPlanning_entity/entityfields/campaignstatuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/CampaignStep_entity/CampaignStep_entity.aod b/entity/CampaignStep_entity/CampaignStep_entity.aod index 38abc14be1b8c632764cc2e8ad4081a5b798d5f3..3632eda854eb4d4dd2b5f0a6773b3aa0fc34b0fb 100644 --- a/entity/CampaignStep_entity/CampaignStep_entity.aod +++ b/entity/CampaignStep_entity/CampaignStep_entity.aod @@ -11,8 +11,10 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/CampaignStep_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/CampaignStep_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/CampaignStep_entity/contentDescriptionProcess.js</contentDescriptionProcess> <onValidation>%aditoprj%/entity/CampaignStep_entity/onValidation.js</onValidation> <imageProcess>%aditoprj%/entity/CampaignStep_entity/imageProcess.js</imageProcess> + <usePermissions v="false" /> <titlePlural>Steps</titlePlural> <recordContainer>db</recordContainer> <entityFields> @@ -58,6 +60,7 @@ <title>Responsible</title> <consumer>Employees</consumer> <groupable v="true" /> + <linkedContext>Person</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess> @@ -95,7 +98,6 @@ <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>SORTING</name> @@ -129,6 +131,13 @@ <name>CampaignSteps</name> <documentation>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignsteps/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>campaignId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>421e6cc2-f874-4834-b022-fe1b253d50af</name> @@ -167,13 +176,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>campaignId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>campaignId_param</name> @@ -182,17 +184,17 @@ </entityParameter> <entityConsumer> <name>KeywordStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>MAXPARTICIPANTS</name> @@ -204,11 +206,6 @@ <entityConsumer> <name>CampaignParticipantsConsumer</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>CampaignParticipantsProvider</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> @@ -219,6 +216,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignparticipantsconsumer/children/campaignstepid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>CampaignParticipantsProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CurrentMaxParticipantsInfo</name> @@ -239,6 +241,12 @@ </entityField> <entityConsumer> <name>Employees</name> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>Employee_entity</entityName> @@ -247,11 +255,6 @@ </entityConsumer> <entityConsumer> <name>CampaignStepCosts</name> - <dependency> - <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>StepCosts</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> @@ -262,6 +265,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepcosts/children/campaignstepid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>StepCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>COST</name> @@ -281,11 +289,6 @@ <entityConsumer> <name>Activities</name> <title>Activities</title> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -296,16 +299,16 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <title>Tasks</title> <stateProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -316,6 +319,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -349,11 +357,6 @@ </entityField> <entityConsumer> <name>CampaignStepsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -365,6 +368,11 @@ <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepsconsumer/children/maxsort_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>CampaignName</name> @@ -375,27 +383,11 @@ <expose v="true" /> <description>PARAMETER</description> </entityParameter> - <entityConsumer> - <name>CampaignStepMedium</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> - <children> - <entityParameter> - <name>ContainerName_param</name> - <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> - </entityConsumer> <entityField> <name>STEPMEDIUM</name> <title>Medium</title> - <consumer>CampaignStepMedium</consumer> + <consumer>KeywordStepMedium</consumer> <groupable v="true" /> - <displayValueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js</displayValueProcess> </entityField> <entityActionField> <name>newBulkMail</name> @@ -422,6 +414,23 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>CurrentParticipantsPerStep</name> + </entityField> + <entityConsumer> + <name>KeywordStepMedium</name> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> @@ -520,6 +529,18 @@ <name>STEPMEDIUM.value</name> <recordfield>CAMPAIGNSTEP.STEPMEDIUM</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CurrentParticipantsPerStep.value</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>STEPMEDIUM.displayValue</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EMPLOYEE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/CampaignStep_entity/contentDescriptionProcess.js b/entity/CampaignStep_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b --- /dev/null +++ b/entity/CampaignStep_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js index fcfc9adff47d5aec4a5503074c7efba56b4bc507..c53bfb5c9af9abcb188c7f5be23e0ba18b92ae7f 100644 --- a/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js +++ b/entity/CampaignStep_entity/entityfields/campaign_id/stateProcess.js @@ -11,13 +11,13 @@ import("system.vars"); * This is specifically required for the campaign planning module as we want to create * new steps there regardless of the selection */ -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_VIEW || (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && (vars.exists("$param.campaignId_param") && vars.get("$param.campaignId_param") == "" || - vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true")) + vars.exists("$param.campaignSelectionVisible_param") && vars.get("$param.campaignSelectionVisible_param") == "true"))) { result.string(neon.COMPONENTSTATE_AUTO); } -else +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { result.string(neon.COMPONENTSTATE_INVISIBLE); } \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js index 86c117c70ddf7fe6b5a8c94a811313929cec7a00..e9ba9c24747c9a500d2b4a46091b85a8a1167b4b 100644 --- a/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/currentmaxparticipantsinfo/valueProcess.js @@ -2,6 +2,14 @@ import("system.result"); import("system.vars"); import("Campaign_lib"); -let currentParticipantsCount = CampaignUtils.getParticipantCountForStep(vars.get("$field.CAMPAIGNSTEPID"), vars.get("$field.CAMPAIGN_ID")); -let maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS"); -result.string(currentParticipantsCount + "/" + maxParticipantsStepCount); \ No newline at end of file +var currentParticipantsCount = vars.get("$field.CurrentParticipantsPerStep"); +var maxParticipantsStepCount = vars.get("$field.MAXPARTICIPANTS"); +var res = []; + +if(currentParticipantsCount) + res.push(currentParticipantsCount); + +if(maxParticipantsStepCount) + res.push(maxParticipantsStepCount); + +result.string(res.join("/")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js index 351d4b3f2c2dd75cb77ecc6ae3e0ec36f0b467de..037d5e264baf41f4e2b0ebcfce8103d365ee7e13 100644 --- a/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js +++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/displayValueProcess.js @@ -1,5 +1,5 @@ -import("system.vars"); -import("system.result"); -import("Contact_lib"); - +import("system.vars"); +import("system.result"); +import("Contact_lib"); + result.string(ContactUtils.getTitleByContactId(vars.get("$field.EMPLOYEE_CONTACT_ID"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js index 0e00e387dfc0f28d5aa51163bd183e450f8535b9..85f342bc9d6e0a7d82ad065c59d5d30e6c735fe6 100644 --- a/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/employee_contact_id/valueProcess.js @@ -3,5 +3,5 @@ import("system.neon"); import("system.vars"); import("Employee_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); diff --git a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js similarity index 97% rename from entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js rename to entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js index ed5935fc124e63ff268a7e65d5efceab70ac456e..cda204045d2aba9ae974e0ce2200ba0cc6c852c0 100644 --- a/entity/AttributeUsage_entity/entityfields/context/children/getallcontexts_param/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/employees/children/onlyactives_param/valueProcess.js @@ -1,2 +1,2 @@ -import("system.result"); +import("system.result"); result.string(true); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js index 3567518a6daebc37b34b1d557a04f5410c2d0a34..09fcdcf23e88706a34b513b13000ad5db2059234 100644 --- a/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/keywordstates/children/containername_param/valueProcess.js @@ -1,5 +1,4 @@ import("system.result"); -import("Keyword_lib"); import("KeywordRegistry_basic"); result.string($KeywordRegistry.campaignStepState()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js similarity index 81% rename from entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js rename to entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js index a944db3259568d4c9b4453d682666704918a9b80..87e20a83401fc3a61ebc4f743ca2cc9763788253 100644 --- a/entity/CampaignStep_entity/entityfields/campaignstepmedium/children/containername_param/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/keywordstepmedium/children/containername_param/valueProcess.js @@ -1,5 +1,3 @@ -import("system.result"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - +import("KeywordRegistry_basic"); +import("system.result"); result.string($KeywordRegistry.communicationMediumCampaign()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js index fd6b6aef2f69c7be604ebcf0512609e3dfdff3cb..de688c4d15daf210c375a6bb8bc8f6af326f20fd 100644 --- a/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js +++ b/entity/CampaignStep_entity/entityfields/maxparticipants/onValidation.js @@ -1,3 +1,4 @@ +import("system.translate"); import("Campaign_lib"); import("system.result"); import("Entity_lib"); @@ -7,4 +8,6 @@ var currentParticipantsCount = parseInt(vars.get("$field.CurrentMaxParticipantsI var newMaxParticipantsCount = parseInt(vars.get("local.value")); if(newMaxParticipantsCount < currentParticipantsCount) - result.string(CampaignUtils.getMaxParticipantsValidationMessage()); \ No newline at end of file + result.string(CampaignUtils.getMaxParticipantsValidationMessage()); +else if(newMaxParticipantsCount <= 0) + result.string(translate.text("The max participants count can not be equal or less then 0")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js deleted file mode 100644 index d0247bf23ab99895d336f6954448a7866fc855c5..0000000000000000000000000000000000000000 --- a/entity/CampaignStep_entity/entityfields/status/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignStepState(), vars.get("$field.STATUS"))); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/status/valueProcess.js b/entity/CampaignStep_entity/entityfields/status/valueProcess.js index dc5efe1d6fe6cca00ad15ff17d26d7fe16a98a55..ed6f79285d36d3d6d904c6554b6e28b79b09d861 100644 --- a/entity/CampaignStep_entity/entityfields/status/valueProcess.js +++ b/entity/CampaignStep_entity/entityfields/status/valueProcess.js @@ -1,7 +1,7 @@ +import("KeywordRegistry_basic"); import("system.vars"); import("system.result"); import("system.neon"); -import("KeywordRegistry_basic"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) - result.string($KeywordRegistry.campaignStepState$open()); \ No newline at end of file + result.string($KeywordRegistry.campaignStepState$open); \ No newline at end of file diff --git a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js b/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js deleted file mode 100644 index 429287a14cde6238f380ff76c6b30c2e6ca93f05..0000000000000000000000000000000000000000 --- a/entity/CampaignStep_entity/entityfields/stepmedium/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("KeywordRegistry_basic"); -import("Keyword_lib"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.communicationMediumCampaign(), vars.get("$field.STEPMEDIUM"))); diff --git a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js index d3d9bfc8c7b5828c91439ec247e9af5ec5ac33a4..c28e929a43d58b57ee5279fea896c3634511bf31 100644 --- a/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js +++ b/entity/CampaignStep_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ import("system.result"); var cond = newWhereIfSet("CAMPAIGNSTEP.CAMPAIGN_ID", "$param.campaignId_param") .andIfSet("CAMPAIGNSTEP.SORTING","$param.maxSort_param", SqlBuilder.LESS_OR_EQUAL()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..adbfaa81f0fab15ab159113880fd2c1cdd6ce47d --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/currentparticipantsperstep.value/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Sql_lib"); +result.string(newSelect("COUNT(*)").from("CAMPAIGNPARTICIPANT").where("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID = CAMPAIGNSTEP.CAMPAIGNSTEPID").toString()); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..54ff36ce1d19a4fcaf358c6242271a93d788c915 --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("system.result"); +import("Person_lib"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGNSTEP.EMPLOYEE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index f0e8a44adee3749dafae8e5cba1b67c52701e01a..dd2e2affd49e8a4b142168764ba20c101f1f500e 100644 --- a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,6 +1,5 @@ import("system.result"); import("Keyword_lib"); -import("KeywordRegistry_basic"); -var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignStepState(), "CAMPAIGNSTEP.STATUS"); +var sql = KeywordUtils.getResolvedTitleSqlPart("CampaignManagementStepStates", "CAMPAIGNSTEP.STATUS"); result.string(sql); \ No newline at end of file diff --git a/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..260b5474d57381f02195ced3290c820a2eea719f --- /dev/null +++ b/entity/CampaignStep_entity/recordcontainers/db/recordfieldmappings/stepmedium.displayvalue/expression.js @@ -0,0 +1,5 @@ +import("system.result"); +import("Keyword_lib"); + +var sql = KeywordUtils.getResolvedTitleSqlPart("CommunicationMediumCampaign", "CAMPAIGNSTEP.STEPMEDIUM"); +result.string(sql); \ No newline at end of file diff --git a/entity/Campaign_entity/Campaign_entity.aod b/entity/Campaign_entity/Campaign_entity.aod index 37416e7b55c7aa8aeec8dc400816f6df5b390cae..0fba3da6c0fe603c6ec1051bd827ebd09ee38bde 100644 --- a/entity/Campaign_entity/Campaign_entity.aod +++ b/entity/Campaign_entity/Campaign_entity.aod @@ -10,9 +10,12 @@ <element>CampaignCost_entity</element> <element>CampaignCostChart_entity</element> <element>CampaignStep_entity</element> + <element>CampaignAddParticipants_entity</element> + <element>CampaignParticipant_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Campaign_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Campaign_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Campaign_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Campaign_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:GROUP</iconId> @@ -45,7 +48,6 @@ <name>NAME</name> <title>Name</title> <mandatory v="true" /> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/name/valueProcess.js</valueProcess> </entityField> <entityField> <name>DATE_START</name> @@ -71,6 +73,7 @@ <title>Person in charge</title> <consumer>Employee</consumer> <groupable v="true" /> + <linkedContext>Person</linkedContext> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js</valueProcess> <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/employee_contact_id/displayValueProcess.js</displayValueProcess> @@ -79,7 +82,6 @@ <name>DESCRIPTION</name> <title>Description</title> <contentType>LONG_TEXT</contentType> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/description/valueProcess.js</valueProcess> </entityField> <entityField> <name>USER_NEW</name> @@ -106,11 +108,6 @@ <entityConsumer> <name>CampaignSteps</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> @@ -119,6 +116,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -127,21 +129,20 @@ <groupable v="true" /> <mandatory v="true" /> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/valueProcess.js</valueProcess> - <displayValueProcess>%aditoprj%/entity/Campaign_entity/entityfields/status/displayValueProcess.js</displayValueProcess> </entityField> <entityConsumer> <name>KeywordStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Campaigns</name> @@ -178,16 +179,7 @@ <name>CampaignParticipants</name> <refreshParent v="false" /> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipant_entity</entityName> - <fieldName>CampaignParticipantsProvider</fieldName> - </dependency> <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> <entityParameter> <name>CampaignStepId_param</name> <expose v="true" /> @@ -198,6 +190,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipant_entity</entityName> + <fieldName>CampaignParticipantsProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Employee</name> @@ -209,17 +206,17 @@ </entityConsumer> <entityConsumer> <name>CampaignCosts</name> - <dependency> - <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>CampaignCosts</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaigncosts/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>CampaignCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>COST</name> @@ -230,17 +227,17 @@ </entityField> <entityConsumer> <name>CampaignStepCosts</name> - <dependency> - <name>dependency</name> - <entityName>CampaignCost_entity</entityName> - <fieldName>StepCosts</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignstepcosts/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCost_entity</entityName> + <fieldName>StepCosts</fieldName> + </dependency> </entityConsumer> <entityField> <name>stepCount</name> @@ -255,11 +252,6 @@ <entityConsumer> <name>Activities</name> <title>Activities</title> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -270,25 +262,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> - <title>Tasks</title> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> </dependency> - <children> - <entityParameter> - <name>ObjectId_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> - </entityParameter> - <entityParameter> - <name>RowId_param</name> - <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -307,32 +285,32 @@ <entityConsumer> <name>CampaignCostsChart</name> <title>Charts</title> - <dependency> - <name>dependency</name> - <entityName>CampaignCostChart_entity</entityName> - <fieldName>CostChart</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaigncostschart/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignCostChart_entity</entityName> + <fieldName>CostChart</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>CampaignParticipantsChart</name> <title>Chart 2</title> - <dependency> - <name>dependency</name> - <entityName>CampaignParticipantChart_entity</entityName> - <fieldName>ParticipantChart</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignparticipantschart/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignParticipantChart_entity</entityName> + <fieldName>ParticipantChart</fieldName> + </dependency> </entityConsumer> <entityField> <name>remainingRuntime</name> @@ -342,27 +320,22 @@ <entityConsumer> <name>CampaignStepsReadonly</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>CampaignStep_entity</entityName> - <fieldName>CampaignSteps</fieldName> - </dependency> <children> <entityParameter> <name>campaignId_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignstepsreadonly/children/campaignid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>CampaignSteps</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Campaign_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -373,6 +346,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newCampaignStep</name> @@ -382,11 +360,6 @@ </entityActionField> <entityConsumer> <name>CampaignAnalysisConsumer</name> - <dependency> - <name>dependency</name> - <entityName>CampaignAnalysis_entity</entityName> - <fieldName>CampaignAnalysisProvider</fieldName> - </dependency> <children> <entityParameter> <name>CampaignId_param</name> @@ -402,14 +375,14 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/campaignanalysisconsumer/children/datestart_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MemberConsumer</name> <dependency> <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>Links</fieldName> + <entityName>CampaignAnalysis_entity</entityName> + <fieldName>CampaignAnalysisProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MemberConsumer</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -420,6 +393,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/memberconsumer/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ShowOnlyCurrentUsersCampaigns_param</name> @@ -439,33 +417,8 @@ <iconId>VAADIN:CURLY_BRACKETS</iconId> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/openadminview/stateProcess.js</stateProcess> </entityActionField> - <entityParameter> - <name>originalCampaignIdCopy_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>description_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>emplContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>name_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>state_param</name> - <expose v="true" /> - </entityParameter> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -476,15 +429,15 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributetree/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -495,6 +448,11 @@ <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CURRENCY</name> @@ -506,17 +464,17 @@ </entityField> <entityConsumer> <name>KeywordCurrency</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/keywordcurrency/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>CAMPAIGN_OBEJCTTYPE</name> @@ -552,12 +510,36 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>ACTIVE</name> + </entityField> + <entityParameter> + <name>Copy_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Tasks</name> + <children> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <dbRecordContainer> <name>db</name> <alias>Data_alias</alias> - <fromClauseProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> <conditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/conditionProcess.js</conditionProcess> <onDBInsert>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBInsert.js</onDBInsert> <onDBUpdate>%aditoprj%/entity/Campaign_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> @@ -667,6 +649,14 @@ <isFilterable v="true" /> <filtertype>BASIC</filtertype> </consumerMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>EMPLOYEE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -676,53 +666,6 @@ <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> - <filterExtension> - <name>DateStart_filter</name> - <title>Startdate</title> - <contentType>DATE</contentType> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>DateEnd_filter</name> - <title>Enddate</title> - <contentType>DATE</contentType> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Participant_filter</name> - <title>Participants</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>CampaignStep_filter</name> - <title>Steps</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Member_filter</name> - <title>Members</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js</filterConditionProcess> - <filtertype>BASIC</filtertype> - </filterExtension> - <filterExtension> - <name>Favorite_filter</name> - <title>Favoritegroup</title> - <contentType>TEXT</contentType> - <filterValuesProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js</filterValuesProcess> - <filterConditionProcess>%aditoprj%/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js</filterConditionProcess> - <groupedRecordField></groupedRecordField> - <filtertype>BASIC</filtertype> - </filterExtension> </filterExtensions> </dbRecordContainer> </recordContainers> diff --git a/entity/Campaign_entity/afterUiInit.js b/entity/Campaign_entity/afterUiInit.js index 40048a413712450e39dc819e7142ed9b2a48d820..d71e3ce2b9233ece766c8092979fc69c296d212f 100644 --- a/entity/Campaign_entity/afterUiInit.js +++ b/entity/Campaign_entity/afterUiInit.js @@ -6,4 +6,9 @@ import("Attribute_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { AttributeRelationUtils.presetMandatoryAttributes(ContextUtils.getCurrentContextId(), "Attributes"); + + if(vars.exists("$param.Copy_param") && vars.get("$param.Copy_param")) + { + neon.setFieldValues(JSON.parse(vars.get("$param.Copy_param"))["FIELDS"]); + } } diff --git a/entity/Campaign_entity/contentDescriptionProcess.js b/entity/Campaign_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b --- /dev/null +++ b/entity/Campaign_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js index d0e4f15cee96a3e7328b2b5d92067f31c8cceaef..10b5370070b7fb3a8afee2313256a569cf4bc5ab 100644 --- a/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js +++ b/entity/Campaign_entity/entityfields/copycampaign/onActionProcess.js @@ -1,11 +1,11 @@ import("system.vars"); import("Campaign_lib"); -var campaignid = vars.getString("$field.CAMPAIGNID"); -var description = vars.getString("$field.DESCRIPTION"); -var emplContactId = vars.getString("$field.EMPLOYEE_CONTACT_ID"); -var name = vars.getString("$field.NAME"); -var state = vars.getString("$field.STATUS"); +var campaignid = vars.get("$field.CAMPAIGNID"); +var description = vars.get("$field.DESCRIPTION"); +var emplContactId = vars.get("$field.EMPLOYEE_CONTACT_ID"); +var name = vars.get("$field.NAME"); +var state = vars.get("$field.STATUS"); CampaignUtils.copyCampaign(campaignid, description, emplContactId, name, state); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/description/valueProcess.js b/entity/Campaign_entity/entityfields/description/valueProcess.js deleted file mode 100644 index f410607cb7949d96ee9b88651ad0d2ae8b82f61c..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/entityfields/description/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.description_param") && vars.get("$param.description_param") && !vars.get("$this.value")) -{ - result.string(vars.get("$param.description_param")); -} \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js index 04046053e32189ddf0521ec4c014092fc503e9e2..4b00f2d048bc22a15174915872c498ea6051b998 100644 --- a/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js +++ b/entity/Campaign_entity/entityfields/employee_contact_id/valueProcess.js @@ -3,10 +3,5 @@ import("system.neon"); import("system.vars"); import("Employee_lib"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - if(vars.exists("$param.emplContactId_param") && vars.get("$param.emplContactId_param") && !vars.get("$this.value")) - result.string(vars.get("$param.emplContactId_param")); - else if(vars.get("$this.value") == null) - result.string(EmployeeUtils.getCurrentContactId()); -} \ No newline at end of file +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/name/valueProcess.js b/entity/Campaign_entity/entityfields/name/valueProcess.js deleted file mode 100644 index 2c8e28aa36ecb0800ec59eccd8579a6a5d31ef10..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/entityfields/name/valueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("system.vars"); -import("system.result"); -import("system.neon"); - -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.name_param") && vars.get("$param.name_param") && !vars.get("$this.value")) -{ - result.string(vars.get("$param.name_param")); -} \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/status/displayValueProcess.js b/entity/Campaign_entity/entityfields/status/displayValueProcess.js deleted file mode 100644 index 2b82fe77f1e59332c6adfbfa9398714a6b7b2566..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/entityfields/status/displayValueProcess.js +++ /dev/null @@ -1,6 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -result.string(KeywordUtils.getViewValue($KeywordRegistry.campaignState(), vars.get("$field.STATUS"))); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/status/valueProcess.js b/entity/Campaign_entity/entityfields/status/valueProcess.js index e772e08d2c7b872067cd42a3605f157f9e41f4b9..c3b6c3a036232875d3123ed76e88d24c518a0e7f 100644 --- a/entity/Campaign_entity/entityfields/status/valueProcess.js +++ b/entity/Campaign_entity/entityfields/status/valueProcess.js @@ -1,12 +1,7 @@ +import("KeywordRegistry_basic"); import("system.neon"); import("system.vars"); import("system.result"); -import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) -{ - if(vars.exists("$param.state_param") && vars.get("$param.state_param") && !vars.get("$this.value")) - result.string(vars.get("$param.state_param")); - else if (vars.get("$this.value") == null) - result.string($KeywordRegistry.campaignState$planning()); -} \ No newline at end of file +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + result.string($KeywordRegistry.campaignState$planning); \ No newline at end of file diff --git a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js index 5996e99db232db8df50f155732110608e5abff4e..e8b4e72e74a0a4696ff39e83135aa6100ef908c0 100644 --- a/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js +++ b/entity/Campaign_entity/entityfields/tasks/children/objectid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getCurrentContextId()); \ No newline at end of file +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getCurrentContextId()); diff --git a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js index 44d452d9b78ba56e5498e9044770c98277bbfb2c..3814648f507bd77edb266f38a807c1669e8c5f1e 100644 --- a/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js +++ b/entity/Campaign_entity/entityfields/tasks/children/rowid_param/valueProcess.js @@ -1,4 +1,4 @@ -import("system.vars"); -import("system.result"); - +import("system.vars"); +import("system.result"); + result.string(vars.get("$field.CAMPAIGNID")); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js index b56a17e4e112b773aa2b1f6f5339c986b5d205bf..e5c5faf2b6e2facaaaad245e6858fa3ddec4c0a7 100644 --- a/entity/Campaign_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Campaign_entity/recordcontainers/db/conditionProcess.js @@ -7,19 +7,11 @@ import("Sql_lib"); var recordState = vars.get("$sys.recordstate"); +var cond = newWhere(); + if(vars.get("$param.ShowOnlyCurrentUsersCampaigns_param") == 'true') { - //TODO: use a preparedCondition (.build instead of .translate) when available #1030812 #1034026 - result.string(newWhere("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()).toString()); -} else if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - var condition = new SqlBuilder() - .whereIfSet("STEPDATESTART_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .andIfSet("STEPDATEEND_TABLEALIAS.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - ; - - result.string(condition.toString()); -} else { - - result.string(newWhere().toString()); -} \ No newline at end of file + cond.and("CAMPAIGN.EMPLOYEE_CONTACT_ID", EmployeeUtils.getCurrentContactId()); +} +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js deleted file mode 100644 index d0dddcc8b370c4307bd88e167744ee1c2be730ac..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterConditionProcess.js +++ /dev/null @@ -1,27 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); -import("Campaign_lib"); - - -var valueSubSelect = "(select CAMPAIGNSTEPID from CAMPAIGNSTEP where CAMPAIGN.CAMPAIGNID = CAMPAIGNSTEP.CAMPAIGN_ID)"; -var countSubSelect = "(select count(*) from CAMPAIGNSTEP where CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js deleted file mode 100644 index 13b3ff34c39b81bad62a1a11c9ade92ac14078fc..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/campaignstep_filter/filterValuesProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("system.result"); -import("Sql_lib"); - - -var campaignStepValues = new SqlBuilder() - .select("CAMPAIGNSTEPID, NAME") - .from("CAMPAIGNSTEP") - .orderBy("NAME") - .table(); - -result.object(campaignStepValues); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js deleted file mode 100644 index c5895859892cd384192c63b347d7c054bb6efc3d..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/dateend_filter/filterConditionProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var subSelect = new SqlBuilder() - .select("max(CAMPAIGNSTEP.DATE_END)") - .from("CAMPAIGNSTEP") - .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .toString(); - -subSelect = "(" + subSelect + ")"; - -var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect); - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js deleted file mode 100644 index 2d15b9e58f29554efe52a565d2033e5ba2f448ab..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/datestart_filter/filterConditionProcess.js +++ /dev/null @@ -1,17 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var subSelect = new SqlBuilder() - .select("min(CAMPAIGNSTEP.DATE_START)") - .from("CAMPAIGNSTEP") - .where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID") - .toString(); - -subSelect = "(" + subSelect + ")"; - -var condition = StringUtils.replaceAll(vars.get("$local.condition"), vars.get("$local.columnPlaceholder"), subSelect); - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js deleted file mode 100644 index 5a2fdfdb69a4f0e0b4e752d9bb6cfff63e45f76e..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterConditionProcess.js +++ /dev/null @@ -1,11 +0,0 @@ -import("Favorites_lib"); -import("system.result"); -import("Sql_lib"); - -var favoFilterCond = newWhere(); -var rowIds = FavoritesUtil.getRowIdsOfFavoriteGroup(); - -for(i = 0; i < rowIds.length; i++) - favoFilterCond.or("CAMPAIGN.CAMPAIGNID", rowIds[i], SqlBuilder.EQUAL()); - -result.string(favoFilterCond.toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js deleted file mode 100644 index 419128ca73fe597afc7ca4aeed50b28e610206ec..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/favorite_filter/filterValuesProcess.js +++ /dev/null @@ -1,5 +0,0 @@ -import("Context_lib"); -import("system.result"); -import("Favorites_lib"); - -result.object(FavoritesUtil.getUserFavoriteGroupsByContext(ContextUtils.getCurrentContextId())); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js deleted file mode 100644 index 48c84a8dcbb02d59429f6b681c2186b3c1767b6b..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterConditionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var valueSubSelect = "(select CONTACT_ID from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)"; -var countSubSelect = "(select count(*) from OBJECTMEMBER where OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js deleted file mode 100644 index 569b13dcd324261da56d6e462a80f7b0a718c1df..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/member_filter/filterValuesProcess.js +++ /dev/null @@ -1,13 +0,0 @@ -import("system.result"); -import("Sql_lib"); -import("Person_lib"); - - -var query = new SqlBuilder() - .select("OBJECTMEMBER.CONTACT_ID, (" + PersUtils.getResolvingDisplaySubSql("OBJECTMEMBER.CONTACT_ID") + ") as C") - .from("OBJECTMEMBER") - .join("CAMPAIGN", "OBJECTMEMBER.OBJECT_ROWID = CAMPAIGN.CAMPAIGNID") - .join("CONTACT", "OBJECTMEMBER.CONTACT_ID = CONTACT.CONTACTID") - ; - -result.object(query.table()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js deleted file mode 100644 index be23e1087b366a1211fadd6672a3ac0a0e9de033..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterConditionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.result"); -import("system.vars"); -import("Sql_lib"); -import("Util_lib"); - - -var valueSubSelect = "(select CONTACT_ID from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var countSubSelect = "(select count(*) from CAMPAIGNPARTICIPANT where CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID)"; -var condition = ""; - -switch(vars.get("$local.comparison")) { - case "ISNOTNULL": - condition = countSubSelect + " > 0"; - break; - case "ISNULL": - condition = countSubSelect + " = 0"; - break; - case "NOT_EQUAL": - condition = vars.get("$local.value") + " not in " + valueSubSelect; - break; - case "EQUAL": - condition = vars.get("$local.value") + " in " + valueSubSelect; - break; -} - -result.object(condition); diff --git a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js b/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js deleted file mode 100644 index 0ff2d9c975bfceec9ad15b02e8b0a921abf3081b..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/filterextensions/participant_filter/filterValuesProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("system.result"); -import("Sql_lib"); -import("Person_lib"); - - -var contactDisplaySelect = "case when CONTACT.PERSON_ID is null" - + " then (select ORGANISATION.NAME FROM ORGANISATION join CONTACT on CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID where CONTACT.CONTACTID = CAMPAIGNPARTICIPANT.CONTACT_ID)" - + " else (" + PersUtils.getResolvingDisplaySubSql("CAMPAIGNPARTICIPANT.CONTACT_ID") + ")" - + " end"; -var query = new SqlBuilder() - .select("distinct CAMPAIGNPARTICIPANT.CONTACT_ID, (" + contactDisplaySelect + ") as C") - .from("CAMPAIGNPARTICIPANT") - .join("CONTACT on CAMPAIGNPARTICIPANT.CONTACT_ID = CONTACT.CONTACTID", "", "", "inner") - ; - -result.object(query.table()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js b/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js deleted file mode 100644 index 5eec4c678e0303f56f160d22534f7c2fbe2bd302..0000000000000000000000000000000000000000 --- a/entity/Campaign_entity/recordcontainers/db/fromClauseProcess.js +++ /dev/null @@ -1,16 +0,0 @@ -import("system.result"); -import("system.neon"); -import("system.vars"); - - -var recordState = vars.get("$sys.recordstate"); -var res = "CAMPAIGN"; - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - var subSelectDateStart = "(select min(DATE_START) as STEPDATESTART_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATESTART_TABLEALIAS"; - var subSelectDateEnd = "(select max(DATE_END) as STEPDATEEND_ALIAS, CAMPAIGN_ID from CAMPAIGNSTEP group by CAMPAIGN_ID) as STEPDATEEND_TABLEALIAS"; - - res += ", " + subSelectDateStart + ", " + subSelectDateEnd; -} - -result.string(res); diff --git a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js index 3c0830aabedeb8f5a85b0d97704ef810d06b9002..ecc62088cac7fd1e7ee7b449554330682ae3a4e2 100644 --- a/entity/Campaign_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Campaign_entity/recordcontainers/db/onDBInsert.js @@ -12,8 +12,8 @@ import("Campaign_lib"); var rowdata = vars.get("$local.rowdata"); var campaignId = vars.get("$local.uid"); -if (vars.get("$param.originalCampaignIdCopy_param")) - CampaignUtils.copyCampaignSteps(vars.getString("$param.originalCampaignIdCopy_param"), campaignId); +if (vars.get("$param.Copy_param")) + CampaignUtils.copyCampaignSteps(JSON.parse(vars.get("$param.Copy_param"))["CAMPAIGNID"], campaignId); else { var threeWeeks = datetime.ONE_WEEK * 3; diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..0c4da8fb72e3474ab6980b621c9139a560e21b09 --- /dev/null +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "CAMPAIGN.STATUS")); \ 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/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js index 510c61f479969118c5e33f8c21cf3861579d0f64..26ead684de6fdd3d812a023a30963789747605ab 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_end.value/expression.js @@ -1,12 +1,4 @@ -import("system.neon"); import("system.result"); -import("system.vars"); +import("Sql_lib"); - -var recordState = vars.get("$sys.recordstate"); - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - result.string("STEPDATEEND_ALIAS"); -} else { - result.string("0"); -} +result.string(newSelect("max(CAMPAIGNSTEP.DATE_END)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js index 77d1b3dde659a3522bd8f4f6d682a091a8a13dc0..4659e92e558e26b8a60f3f37622a934793ac4f21 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/date_start.value/expression.js @@ -1,12 +1,5 @@ import("system.neon"); import("system.result"); -import("system.vars"); +import("Sql_lib"); - -var recordState = vars.get("$sys.recordstate"); - -if (recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) { - result.string("STEPDATESTART_ALIAS"); -} else { - result.string("0"); -} \ No newline at end of file +result.string(newSelect("min(CAMPAIGNSTEP.DATE_START)").from("CAMPAIGNSTEP").where("CAMPAIGNSTEP.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID").toString()); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..f0023d115c5071a9e86a99a3f9624b169018f820 --- /dev/null +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/employee_contact_id.displayvalue/expression.js @@ -0,0 +1,3 @@ +import("Person_lib"); +import("system.result"); +result.string(PersUtils.getResolvingDisplaySubSql("CAMPAIGN.EMPLOYEE_CONTACT_ID")); \ No newline at end of file diff --git a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js index f67e50c289fe9587d704ded87665c5abce6509b5..d5024a1449de08a93db1ac0d8d642c2b1e5a4ceb 100644 --- a/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js +++ b/entity/Campaign_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js @@ -1,6 +1,6 @@ -import("system.result"); -import("Keyword_lib"); import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.result"); var sql = KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.campaignState(), "CAMPAIGN.STATUS"); result.string(sql); \ 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 fdf4e999952bbfc3804623512cf5fe978d900612..39144723e62796ee2c7e4b433e0400cd47bdb623 100644 --- a/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod +++ b/entity/ClassificationGrading_entity/ClassificationGrading_entity.aod @@ -40,6 +40,12 @@ <entityProvider> <name>ClassificationGradings</name> <documentation>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ClassificationTypeId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e0c6b86e-dcc1-43e1-9581-2b10c5c3d0cd</name> @@ -48,13 +54,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ClassificationTypeId_param</name> - <valueProcess>%aditoprj%/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js b/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js deleted file mode 100644 index b11d099579d9bf35111e31b13a41336731c28540..0000000000000000000000000000000000000000 --- a/entity/ClassificationGrading_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.CLASSIFICATIONTYPEID")); \ No newline at end of file diff --git a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod index 546a64d948001e538ed6a971478016d6ae568b0f..c37f1f7de65d9557283ce8e53f1e721e11d4a6c1 100644 --- a/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod +++ b/entity/ClassificationGroup_entity/ClassificationGroup_entity.aod @@ -30,17 +30,17 @@ </entityConsumer> <entityConsumer> <name>ClassificationGradings</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationGrading_entity</entityName> - <fieldName>ClassificationGradings</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationTypeId_param</name> <valueProcess>%aditoprj%/entity/ClassificationGroup_entity/entityfields/classificationgradings/children/classificationtypeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationGrading_entity</entityName> + <fieldName>ClassificationGradings</fieldName> + </dependency> </entityConsumer> <entityField> <name>SORTING</name> diff --git a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js index 2d43dba815cd2dea8e2a5eeb8335aa36c8e3746c..e0b2732445777e17d096a1122bde6538fa369a47 100644 --- a/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ClassificationGroup_entity/recordcontainers/db/conditionProcess.js @@ -16,5 +16,4 @@ if (objectType) .from("CLASSIFICATIONTYPE") .where("CLASSIFICATIONTYPE.OBJECT_TYPE", objectType), SqlBuilder.IN()); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js index 10dbbac6efbdb80f576dab966afa19ede6ffb645..2cc442f6f758f5c33128f5cd38ba37b44c2c00f8 100644 --- a/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js +++ b/entity/ClassificationScore_entity/recordcontainers/db/conditionProcess.js @@ -3,5 +3,4 @@ import("Sql_lib"); import("system.db"); import("system.result"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("CLASSIFICATIONSCORE.CLASSIFICATIONTYPE_ID", "$param.ClassificationTypeId_param").toString()); \ No newline at end of file diff --git a/entity/ClassificationType_entity/ClassificationType_entity.aod b/entity/ClassificationType_entity/ClassificationType_entity.aod index faf8305ab8185d249fd38216f9954fd7d857dcb9..2434fa0a53dd70bbd17eb270b3ce3fa7bc92f247 100644 --- a/entity/ClassificationType_entity/ClassificationType_entity.aod +++ b/entity/ClassificationType_entity/ClassificationType_entity.aod @@ -40,11 +40,6 @@ <entityConsumer> <name>ClassificationScores</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>ClassificationScore_entity</entityName> - <fieldName>ClassificationScores</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationTypeId_param</name> @@ -55,6 +50,11 @@ <valueProcess>%aditoprj%/entity/ClassificationType_entity/entityfields/classificationscores/children/classificationgroup_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationScore_entity</entityName> + <fieldName>ClassificationScores</fieldName> + </dependency> </entityConsumer> <entityField> <name>infoField</name> diff --git a/entity/Classification_entity/Classification_entity.aod b/entity/Classification_entity/Classification_entity.aod index 0ffc7c029876ca37340aa50f5a4503ca4e0c8d1e..61c825296a1680b522cae9a883f7a6a38c5fb226 100644 --- a/entity/Classification_entity/Classification_entity.aod +++ b/entity/Classification_entity/Classification_entity.aod @@ -88,11 +88,6 @@ </entityField> <entityConsumer> <name>ClassificationScores</name> - <dependency> - <name>dependency</name> - <entityName>ClassificationScore_entity</entityName> - <fieldName>ClassificationScores</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationGroup_param</name> @@ -107,6 +102,11 @@ <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/classificationscores/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ClassificationScore_entity</entityName> + <fieldName>ClassificationScores</fieldName> + </dependency> </entityConsumer> <entityField> <name>CLASSIFICATIONTYPE</name> @@ -130,17 +130,17 @@ </entityField> <entityConsumer> <name>KeywordClassificationTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Classification_entity/entityfields/keywordclassificationtypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>SCORETYPE</name> diff --git a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js index 78879bee92567449a5ca43c6ef616d91d236a62f..9af7e2ab58bfb43d0f1fcbfa4c0b35f42ad13c23 100644 --- a/entity/Classification_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Classification_entity/recordcontainers/jdito/contentProcess.js @@ -161,5 +161,12 @@ function _updateScore() var values = [calculatedClassification]; if(storedClassification[1] != undefined && calculatedClassification != storedClassification[1]) //Update the stored classification if the freshly calculated one differs - newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values); + { + newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONSTORAGEID", storedClassification[0]).updateData(true, table, columns, null, values); + } + else if(storedClassification[1] == undefined) //insert if no classificationstorage exists yet + { + db.insertData(table, ["CLASSIFICATIONSTORAGEID", "CLASSIFICATIONVALUE", "OBJECT_ROWID", "OBJECT_TYPE"], null, + [util.getNewUUID(), calculatedClassification, objectRowIdParam, objectTypeParam]) + } } \ No newline at end of file diff --git a/entity/CommRestriction_Entity/CommRestriction_Entity.aod b/entity/CommRestriction_Entity/CommRestriction_Entity.aod index 102c450de9e00d97a4f3e8329bc4d5b528787b1f..60d0a7e5c5161c167310bb868be2f7e3aa4fcdd8 100644 --- a/entity/CommRestriction_Entity/CommRestriction_Entity.aod +++ b/entity/CommRestriction_Entity/CommRestriction_Entity.aod @@ -55,11 +55,6 @@ </entityConsumer> <entityConsumer> <name>CommRestrictionMedium</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -71,6 +66,11 @@ <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/commrestrictionmedium/children/excludedkeyidssubquery_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>CommRestrictions</name> @@ -103,17 +103,17 @@ </entityField> <entityConsumer> <name>MediumKeywordAttribute</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/CommRestriction_Entity/entityfields/mediumkeywordattribute/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js index 4a714c57054e0ee4bd91998185d6157db848cb7f..035d01b5f3e1adb6f2dc0f6a9b1a46153cb5b327 100644 --- a/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js +++ b/entity/CommRestriction_Entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("COMMRESTRICTION.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Communication_entity/Communication_entity.aod b/entity/Communication_entity/Communication_entity.aod index dbc7bf89b31da1c696fa6870dea497360ae54ea7..f931c15531a870c0828c7706d110e39542b74bbd 100644 --- a/entity/Communication_entity/Communication_entity.aod +++ b/entity/Communication_entity/Communication_entity.aod @@ -13,6 +13,7 @@ <title>${COMM_ADDRESS}</title> <contentTypeProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/contentTypeProcess.js</contentTypeProcess> <mandatory v="true" /> + <titleProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/addr/valueProcess.js</valueProcess> <onValidation>%aditoprj%/entity/Communication_entity/entityfields/addr/onValidation.js</onValidation> </entityField> @@ -62,6 +63,27 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <name>AllCommunications</name> <documentation>%aditoprj%/entity/Communication_entity/entityfields/allcommunications/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>CommCategory_param</name> + <expose v="true" /> + <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. +Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> + </entityParameter> + <entityParameter> + <name>Address_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AdditionalContactIds_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>070b2457-3766-4c8a-b43f-a2bf7c9ef638</name> @@ -88,10 +110,16 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>PhoneCommunications</name> + <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation> + <recordContainer>db</recordContainer> <children> <entityParameter> <name>CommCategory_param</name> - <expose v="true" /> + <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess> + <expose v="false" /> <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> </entityParameter> <entityParameter> @@ -102,18 +130,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityParameter> <name>Address_param</name> - <expose v="false" /> + <expose v="true" /> + <mandatory v="false" /> </entityParameter> <entityParameter> <name>AdditionalContactIds_param</name> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>PhoneCommunications</name> - <documentation>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/documentation.adoc</documentation> - <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>7382242a-aa18-4a31-ab77-69a79f2b97b8</name> @@ -128,10 +152,16 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>EmailCommunications</name> + <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation> + <recordContainer>db</recordContainer> <children> <entityParameter> <name>CommCategory_param</name> - <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/phonecommunications/children/commcategory_param/valueProcess.js</valueProcess> + <title></title> + <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess> <expose v="false" /> <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> </entityParameter> @@ -143,19 +173,13 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityParameter> <name>Address_param</name> - <expose v="true" /> - <mandatory v="false" /> + <expose v="false" /> </entityParameter> <entityParameter> <name>AdditionalContactIds_param</name> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>EmailCommunications</name> - <documentation>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/documentation.adoc</documentation> - <recordContainer>db</recordContainer> <dependencies> <entityDependency> <name>ecfbf518-fe92-4661-8ebe-e2d3c8d259e1</name> @@ -182,29 +206,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>CommCategory_param</name> - <title></title> - <valueProcess>%aditoprj%/entity/Communication_entity/entityfields/emailcommunications/children/commcategory_param/valueProcess.js</valueProcess> - <expose v="false" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <description>This parameter is used for specifing a related "CONTACTID" to a COMMUNICATION-entry. -Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> - </entityParameter> - <entityParameter> - <name>Address_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AdditionalContactIds_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>CommCategory_param</name> @@ -218,11 +219,6 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact </entityParameter> <entityConsumer> <name>KeywordMediums</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -230,6 +226,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> diff --git a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js index 25141c53776680b9c9c714926c752fda5419deaa..249c9ed0275f8f6dc97e9986016da4b85d48501f 100644 --- a/entity/Communication_entity/entityfields/addr/contentTypeProcess.js +++ b/entity/Communication_entity/entityfields/addr/contentTypeProcess.js @@ -4,7 +4,6 @@ import("system.vars"); import("system.result"); import("system.neon"); -//TODO: add constants for contentTypes #1022547 var medium = vars.get("$field.MEDIUM_ID"); var contentType; if (medium) diff --git a/entity/Communication_entity/entityfields/addr/titleProcess.js b/entity/Communication_entity/entityfields/addr/titleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8bacbaa9a703edcdb8e4ade535013cde65ea17b8 --- /dev/null +++ b/entity/Communication_entity/entityfields/addr/titleProcess.js @@ -0,0 +1,10 @@ +import("system.translate"); +import("system.result"); +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.vars"); + +var commMedium = vars.get("$field.MEDIUM_ID"); +var keywordAttributes = KeywordUtils.getAttributeRelationsByKey(commMedium, $KeywordRegistry.communicationMedium()); +if (keywordAttributes && keywordAttributes.placeholderTitle) + result.string(translate.text(keywordAttributes.placeholderTitle)); \ No newline at end of file diff --git a/entity/Communication_entity/recordcontainers/db/conditionProcess.js b/entity/Communication_entity/recordcontainers/db/conditionProcess.js index 39f447f1fe79e21b1235025d2c5859cee0a33c23..ec18465d42f9bcc87f5b557653b021a94438c14c 100644 --- a/entity/Communication_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Communication_entity/recordcontainers/db/conditionProcess.js @@ -13,5 +13,4 @@ if (vars.getString("$param.CommMediumIds_param")) var mediumIds = JSON.parse(vars.getString("$param.CommMediumIds_param")); cond.andIfSet("COMMUNICATION.MEDIUM_ID", mediumIds, SqlBuilder.IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js index 611aa890f7584912618700b429c0a1415e50cb6d..bafe6c4d6176c505dd8e202d89ae7544d0bd4bb9 100644 --- a/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Communication_entity/recordcontainers/db/fromClauseProcess.js @@ -1,8 +1,10 @@ -import("system.logging"); import("Sql_lib"); import("system.result"); import("KeywordRegistry_basic"); -result.string("COMMUNICATION " + new SqlBuilder().leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID") - .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium())) - .toString()); \ No newline at end of file +result.string(new SqlBuilder() + .from("COMMUNICATION") + .leftJoin("AB_KEYWORD_ENTRY", newWhere("COMMUNICATION.MEDIUM_ID = AB_KEYWORD_ENTRY.KEYID") + .and("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.communicationMedium())) + .toString() +); \ No newline at end of file diff --git a/entity/Competition_entity/Competition_entity.aod b/entity/Competition_entity/Competition_entity.aod index ac91f28ee4dbfaeaea563112aca8d9ae0bd288f3..50d4bcf30967f630f2a0bd4242e46559beeae68f 100644 --- a/entity/Competition_entity/Competition_entity.aod +++ b/entity/Competition_entity/Competition_entity.aod @@ -79,11 +79,6 @@ </entityConsumer> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithAttribute</fieldName> - </dependency> <children> <entityParameter> <name>AttributeId_param</name> @@ -102,15 +97,15 @@ <title></title> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>WithAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -118,6 +113,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>PHASE</name> @@ -127,11 +127,6 @@ </entityField> <entityConsumer> <name>KeywordPricePolitics</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -139,14 +134,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -154,14 +149,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -169,14 +164,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPhases</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPhases</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -184,14 +179,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -199,15 +194,15 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <state>DISABLED</state> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -222,6 +217,11 @@ <valueProcess>%aditoprj%/entity/Competition_entity/entityfields/attributes/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>IMAGE</name> @@ -254,11 +254,6 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -267,18 +262,15 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>be977304-6623-42eb-a8bd-80ef43831204</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Competitions</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -289,6 +281,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>be977304-6623-42eb-a8bd-80ef43831204</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Competitions</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -374,10 +374,6 @@ <name>PHASE.value</name> <recordfield>COMPETITION.PHASE</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>COMPETITIONID.value</name> <recordfield>COMPETITION.COMPETITIONID</recordfield> diff --git a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644 --- a/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Competition_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Competition_entity/recordcontainers/db/conditionProcess.js b/entity/Competition_entity/recordcontainers/db/conditionProcess.js index 7fdde447ee0c40d4ad260e0392be5c9efe6e345b..79b1357d5be15475ab5c0ec0b2f3b95e8b42d12b 100644 --- a/entity/Competition_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Competition_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ var cond = newWhere() .andIfSet("COMPETITION.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("COMPETITION.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index 33554680cccd2c3d363443686457c41e0c1c5729..0000000000000000000000000000000000000000 --- a/entity/Competition_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Contact_entity/Contact_entity.aod b/entity/Contact_entity/Contact_entity.aod index 41a386bd8dce1d009f4b1887e118adb79b9165cc..051d569c5b1e50b704fc389e793839d515280e2d 100644 --- a/entity/Contact_entity/Contact_entity.aod +++ b/entity/Contact_entity/Contact_entity.aod @@ -65,17 +65,17 @@ </entityField> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PersonId_param</name> @@ -86,6 +86,12 @@ <name>PersonRelated</name> <targetContextField>targetContext</targetContextField> <targetIdField>CONTACTID</targetIdField> + <children> + <entityParameter> + <name>OwnContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>14975dad-907c-4f8c-bd39-243508ede721</name> @@ -94,12 +100,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OwnContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>ADDRESS_ID</name> @@ -115,31 +115,31 @@ </entityField> <entityConsumer> <name>Communications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/communications/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContactAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContactAddresses</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/contactaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>LANGUAGE</name> @@ -163,6 +163,13 @@ <targetContextField>targetContext</targetContextField> <targetIdField>CONTACTID</targetIdField> <titlePlural>Other Contactroles</titlePlural> + <children> + <entityParameter> + <name>PersonId_param</name> + <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>34cc85f4-5555-4631-94fc-f3ad35b7ce7e</name> @@ -171,13 +178,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>PersonId_param</name> - <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/personscontactsexceptown/children/personid_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OwnContactId_param</name> @@ -198,17 +198,17 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Contact_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>LanguageKey_param</name> diff --git a/entity/Contact_entity/recordcontainers/db/conditionProcess.js b/entity/Contact_entity/recordcontainers/db/conditionProcess.js index 6f1b0fc9fbbbe71f274f50189be2dfb360c306f2..80af2eaae28bdb8c9e2f0c707256a507acd83d67 100644 --- a/entity/Contact_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Contact_entity/recordcontainers/db/conditionProcess.js @@ -7,5 +7,4 @@ var cond = newWhere() .andIfSet("CONTACT.CONTACTID", "$param.OwnContactId_param", SqlBuilder.NOT_EQUAL()) .andIfSet("CONTACT.PERSON_ID", "$param.PersonId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Context_entity/Context_entity.aod b/entity/Context_entity/Context_entity.aod index c82aab16b52506b32800ef2f9635b260fffa3d6b..8e8f8d01c34ea6b4acb2208b165bd6bcc58e60a5 100644 --- a/entity/Context_entity/Context_entity.aod +++ b/entity/Context_entity/Context_entity.aod @@ -30,6 +30,16 @@ </entityField> <entityProvider> <name>Context</name> + <children> + <entityParameter> + <name>InvertBlacklist_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>Blacklist_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>dab09827-2eeb-403d-a070-ba805d2640ee</name> @@ -56,16 +66,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>InvertBlacklist_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>Blacklist_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Blacklist_param</name> @@ -74,6 +74,13 @@ </entityParameter> <entityProvider> <name>ActivityLinkable</name> + <children> + <entityParameter> + <name>Blacklist_param</name> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/activitylinkable/children/blacklist_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>de50f67e-5ed0-46aa-b007-8c086cf5fea5</name> @@ -82,16 +89,16 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>TaskLinkable</name> <children> <entityParameter> <name>Blacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/activitylinkable/children/blacklist_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/tasklinkable/children/blacklist_param/valueProcess.js</valueProcess> <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>TaskLinkable</name> <dependencies> <entityDependency> <name>ff8925da-b69a-46dd-8fe2-d6707da8808e</name> @@ -100,19 +107,7 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Blacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/tasklinkable/children/blacklist_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> - <entityParameter> - <name>GetAllContexts_param</name> - <expose v="true" /> - <description>PARAMETER</description> - </entityParameter> <entityParameter> <name>InvertBlacklist_param</name> <expose v="true" /> @@ -162,6 +157,17 @@ </entityProvider> <entityProvider> <name>ContextTemplatePlaceOfUse</name> + <children> + <entityParameter> + <name>InvertBlacklist_param</name> + <valueProcess>%aditoprj%/entity/Context_entity/entityfields/contexttemplateplaceofuse/children/invertblacklist_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Blacklist_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>423a7a33-02f4-4975-94fd-fa0c21278e3b</name> @@ -176,17 +182,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>InvertBlacklist_param</name> - <valueProcess>%aditoprj%/entity/Context_entity/entityfields/contexttemplateplaceofuse/children/invertblacklist_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>Blacklist_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Context_entity/recordcontainers/jdito/contentProcess.js b/entity/Context_entity/recordcontainers/jdito/contentProcess.js index 25682212551e2b430d137096dd04818e97fbfb5f..1bdca6e2fa31e0c1fb90a38136dbc6af182d38b0 100644 --- a/entity/Context_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Context_entity/recordcontainers/jdito/contentProcess.js @@ -4,7 +4,6 @@ import("Context_lib"); var blacklist var invertBlacklist -var filterContexts = vars.get("$param.GetAllContexts_param") != "true"; var whitelist; if (vars.get("$local.idvalues") && vars.get("$local.idvalues").length > 0) @@ -23,4 +22,4 @@ else invertBlacklist = vars.get("$param.InvertBlacklist_param") == "true"; } -result.object(ContextUtils.getContexts(filterContexts, blacklist, invertBlacklist)); \ No newline at end of file +result.object(ContextUtils.getContexts(blacklist, invertBlacklist)); \ No newline at end of file diff --git a/entity/Contract_entity/Contract_entity.aod b/entity/Contract_entity/Contract_entity.aod index 273e731918f9e43fbd9259ff07c9dc9ec8123887..3281aae04f01796444be478eb344530931f2c173 100644 --- a/entity/Contract_entity/Contract_entity.aod +++ b/entity/Contract_entity/Contract_entity.aod @@ -6,6 +6,7 @@ <title>Contract</title> <grantDeleteProcess>%aditoprj%/entity/Contract_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Contract_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Contract_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Contract_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Contract_entity/onValidation.js</onValidation> <useFavorites v="true" /> @@ -101,7 +102,14 @@ </entityField> <entityProvider> <name>Contracts</name> + <documentation>%aditoprj%/entity/Contract_entity/entityfields/contracts/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>6d7c7166-84b4-4da2-9a48-cc1e390ac987</name> @@ -116,12 +124,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContactId_param</name> @@ -147,11 +149,6 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -166,6 +163,11 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AnyContacts</name> @@ -206,11 +208,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -221,15 +218,15 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -240,14 +237,14 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractPayments</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractPayments</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -255,14 +252,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -270,14 +267,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContractTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContractTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -285,6 +282,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -298,11 +300,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Contract_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -315,15 +312,15 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -334,15 +331,15 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -357,6 +354,11 @@ <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newTask</name> @@ -366,17 +368,17 @@ </entityActionField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Contract_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> @@ -402,6 +404,12 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -544,6 +552,14 @@ <recordfield>CONTRACT.CONTRACTID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>CONTRACT.CONTRACTSTART</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Contract_entity/contentDescriptionProcess.js b/entity/Contract_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c1836a1fcb2ff3413849aca20c8bc8912de21a53 --- /dev/null +++ b/entity/Contract_entity/contentDescriptionProcess.js @@ -0,0 +1,16 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = [translate.text("Payment method") + ": " + vars.get("$field.PAYMENT.displayValue")]; + +if(vars.get("$field.CONTRACTDUE")) + res.push(translate.text("Next due date") + ": " + datetime.toDate(vars.get("$field.CONTRACTDUE"), translate.text("dd.MM.yyyy"))); + +if(vars.get("$field.CONTRACTEND")) + res.push(translate.text("Contract expiry date") + ": " + datetime.toDate(vars.get("$field.CONTRACTEND"), translate.text("dd.MM.yyyy"))) + +res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Contract_entity/contentTitleProcess.js b/entity/Contract_entity/contentTitleProcess.js index 302a1d406e496a03d1f78d114d81592e4cf79582..94a08f9ad5c27a46b15210f60b0b6e9f58cba875 100644 --- a/entity/Contract_entity/contentTitleProcess.js +++ b/entity/Contract_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup")); \ No newline at end of file +var res = [vars.get("$field.CONTRACTCODE_DISPLAY_fieldGroup"), vars.get("$field.CONTRACTSTATUS.displayValue")]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Contract_entity/entityfields/contracts/documentation.adoc b/entity/Contract_entity/entityfields/contracts/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..d329bb27a710b109b2a31416e72c432e1ac947ec --- /dev/null +++ b/entity/Contract_entity/entityfields/contracts/documentation.adoc @@ -0,0 +1,3 @@ += Contracts + +Provides the contracts that are linked with a contact. \ No newline at end of file diff --git a/entity/Contract_entity/recordcontainers/db/conditionProcess.js b/entity/Contract_entity/recordcontainers/db/conditionProcess.js index 0fc49f960a068a0e10aa355fe661c104cb8db537..80390ca2afca4cb07cf9c4de21b819375b4601c6 100644 --- a/entity/Contract_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Contract_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("Sql_lib"); var cond = newWhereIfSet("CONTRACT.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..d788aeadb9234f464203300da1dac4661fcb9d11 --- /dev/null +++ b/entity/Contract_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "CONTRACT.CONTRACTSTATUS")); \ 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/Contract_entity/recordcontainers/index/query.js b/entity/Contract_entity/recordcontainers/index/query.js index e12356c93b0c2cefab1f3d847d91dfa563ffbbbe..62196bdcbb7ac0867788fcdd4f7ad7d99a664c6a 100644 --- a/entity/Contract_entity/recordcontainers/index/query.js +++ b/entity/Contract_entity/recordcontainers/index/query.js @@ -10,8 +10,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTRACTID", //#UID - sqlHelper.concat(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", + sqlHelper.concatWithSeparator(["CONTRACTCODE", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractStatus(), "CONTRACTSTATUS")], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'| " + translate.text("Type of contract") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.contractType(), "CONTRACTTYPE")]), //#DESCRIPTION "CONTRACTCODE", "CONTACT.ORGANISATION_ID", //CONTACT_ORG_ID diff --git a/entity/Countries_Entity/Countries_Entity.aod b/entity/Countries_Entity/Countries_Entity.aod index 9a4408cb03cc9d0d4de39895c93611b24df313da..1b19a2841ca62eacc9ae2a1ee8ce5442028172ce 100644 --- a/entity/Countries_Entity/Countries_Entity.aod +++ b/entity/Countries_Entity/Countries_Entity.aod @@ -16,6 +16,18 @@ <name>ISO2Name</name> <lookupIdfield>ISO2</lookupIdfield> <documentation>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/documentation.adoc</documentation> + <children> + <entityParameter> + <name>Key_param</name> + <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/key_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>Value_param</name> + <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/value_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>83e8a2e6-aa80-4b35-a0ad-8dad483ed428</name> @@ -30,18 +42,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Key_param</name> - <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/key_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>Value_param</name> - <valueProcess>%aditoprj%/entity/Countries_Entity/entityfields/iso2name/children/value_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Key_param</name> diff --git a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod index 9a090c1ee2cc636fcc7b1dfe8a5651482b51f376..c170fcd06fc27a9ff7ef23c14a110bf5205daef0 100644 --- a/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod +++ b/entity/DSGVOInfo_entity/DSGVOInfo_entity.aod @@ -83,31 +83,31 @@ </entityField> <entityConsumer> <name>KeywordDeadline</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keyworddeadline/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordTransmission</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordTransmission</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keywordtransmission/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>TRANSMISSION</name> @@ -140,17 +140,17 @@ </entityConsumer> <entityConsumer> <name>KeywordGuarantee</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVOInfo_entity/entityfields/keywordguarantee/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js index 0135f590498ce6e715386047a43ac6219af36a35..14a93daf75f5f4b3c32a037f7a98840a32adaa66 100644 --- a/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DSGVOInfo_entity/recordcontainers/db/conditionProcess.js @@ -2,6 +2,5 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhere("DSGVOINFO.CONTACT_ID", "$param.ContactId_param").toString()) \ No newline at end of file diff --git a/entity/DSGVO_entity/DSGVO_entity.aod b/entity/DSGVO_entity/DSGVO_entity.aod index 19cefc3a19e90adbc2a12a91fe584c93032a6554..a6445e18ca69ee174c9338f15491fcfc8240d805 100644 --- a/entity/DSGVO_entity/DSGVO_entity.aod +++ b/entity/DSGVO_entity/DSGVO_entity.aod @@ -84,11 +84,6 @@ </entityField> <entityConsumer> <name>KeywordDSGVOPurpose</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -96,20 +91,25 @@ <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvopurpose/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDSGVOStatuoritysource</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDSGVOStatuoritysource</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvostatuoritysource/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Communications</name> @@ -181,17 +181,17 @@ </entityField> <entityConsumer> <name>KeywordDSGVOType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DSGVO_entity/entityfields/keyworddsgvotype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>DSGVOEntries</name> diff --git a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod index a84b79d58a22aff0e293f7115c2f4fcdcede4b84..7b0b1dd8ef9bc50a75c65fe7b422dc6d06d6a575 100644 --- a/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod +++ b/entity/DefaultAdminView_entity/DefaultAdminView_entity.aod @@ -19,17 +19,17 @@ <entityConsumer> <name>Rows</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>AdminViewRow_entity</entityName> - <fieldName>AdminViewRows</fieldName> - </dependency> <children> <entityParameter> <name>Rows_param</name> <valueProcess>%aditoprj%/entity/DefaultAdminView_entity/entityfields/rows/children/rows_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AdminViewRow_entity</entityName> + <fieldName>AdminViewRows</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Uid_param</name> @@ -40,6 +40,14 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityParameter> + <name>Entity_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>ENTITY</name> + <title>Entity</title> + </entityField> </entityFields> <recordContainers> <jDitoRecordContainer> @@ -49,6 +57,9 @@ <jDitoRecordFieldMapping> <name>UID.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ENTITY.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js b/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js index b6f288f713ee37fdc2431d8713d06ab465528c88..aa5a7e9b8e4b2bf005c0e43b99498e430d18726a 100644 --- a/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/DefaultAdminView_entity/recordcontainers/jdito/contentProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.object([[vars.get("$param.Uid_param")]]); \ No newline at end of file +result.object([[vars.get("$param.Uid_param"), vars.get("$param.Entity_param")]]); \ No newline at end of file diff --git a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod index 83aa32b97318445d0891b35c2443d6452e929739..125b89eb929ff7c7bc2f82abb6b513a12cfea883 100644 --- a/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod +++ b/entity/DescriptionTranslation_entity/DescriptionTranslation_entity.aod @@ -40,17 +40,17 @@ </entityField> <entityConsumer> <name>Languages</name> - <dependency> - <name>dependency</name> - <entityName>Language_entity</entityName> - <fieldName>ISO3NameFiltered</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedIds_param</name> <valueProcess>%aditoprj%/entity/DescriptionTranslation_entity/entityfields/languages/children/excludedids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Language_entity</entityName> + <fieldName>ISO3NameFiltered</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectType_param</name> diff --git a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js index 9b60a2f7aecaea90d458fba6ecff1b8f6aa41a7b..daa85fa01b438eb9728e27f28be4c808d7b25040 100644 --- a/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DescriptionTranslation_entity/recordcontainers/db/conditionProcess.js @@ -4,6 +4,5 @@ import("Sql_lib"); var cond = newWhere() .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_TYPE", "$param.ObjectType_param") .andIfSet("DESCRIPTIONTRANSLATION.OBJECT_ROWID", "$param.ObjectRowid_param"); - -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 + result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod index 4062bb8fd405fd3447584e1169ac5f9f8e15c83c..542e050c6414a26472b63a41636ef1632d31f79e 100644 --- a/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod +++ b/entity/DistrictResponsible_entity/DistrictResponsible_entity.aod @@ -37,11 +37,6 @@ </entityField> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> @@ -49,6 +44,11 @@ <description>parent id, this is used for filtering by the parent in the content process</description> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Employees</name> @@ -90,14 +90,6 @@ <lookupIdfield>DISTRICTRESPONSIBLEID</lookupIdfield> <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/districtresponsibles/documentation.adoc</documentation> <titlePlural>Responsibles</titlePlural> - <dependencies> - <entityDependency> - <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name> - <entityName>District_entity</entityName> - <fieldName>DistrictResponsibles</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DistrictId_param</name> @@ -108,6 +100,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>ef26fdb6-5fcf-416e-bcc8-380b5751b523</name> + <entityName>District_entity</entityName> + <fieldName>DistrictResponsibles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>DistrictId_param</name> @@ -116,25 +116,20 @@ </entityParameter> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Documents</name> <dependency> <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Documents</name> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -145,6 +140,11 @@ <valueProcess>%aditoprj%/entity/DistrictResponsible_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>departmentAttributeName</name> @@ -159,6 +159,12 @@ <targetContextField>targetContext</targetContextField> <targetIdField>EMPLOYEE_CONTACT_ID</targetIdField> <documentation>%aditoprj%/entity/DistrictResponsible_entity/entityfields/organisationresponsibles/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DistrictId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>9c2fe0da-9456-44ef-ac6c-28ac234b35f7</name> @@ -173,12 +179,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DistrictId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OrgUid_param</name> diff --git a/entity/District_entity/District_entity.aod b/entity/District_entity/District_entity.aod index e775acd3c2243cada93f42afa935b6336bb8d256..8ae74f7b15631f61f43dfe094c3931db48eb1339 100644 --- a/entity/District_entity/District_entity.aod +++ b/entity/District_entity/District_entity.aod @@ -82,14 +82,6 @@ <documentation>%aditoprj%/entity/District_entity/entityfields/responsibledistricts/documentation.adoc</documentation> <titlePlural>Responsible Districts</titlePlural> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>291c0ca4-5a68-45f5-80a7-745c7df56d7c</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>Districts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludedDistrictIds_param</name> @@ -100,6 +92,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>291c0ca4-5a68-45f5-80a7-745c7df56d7c</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>Districts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Languages</name> @@ -111,17 +111,17 @@ </entityConsumer> <entityConsumer> <name>DistrictResponsibles</name> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>DistrictResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>DistrictId_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/districtresponsibles/children/districtid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>DistrictResponsibles</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -142,17 +142,17 @@ <entityConsumer> <name>Organisations</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>Organisations</fieldName> - </dependency> <children> <entityParameter> <name>FilterPreSet_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/organisations/children/filterpreset_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>DISTRICT_NUMBER_fieldGroup</name> @@ -164,11 +164,6 @@ </entityFieldGroup> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -179,6 +174,11 @@ <valueProcess>%aditoprj%/entity/District_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>LogHistories</name> @@ -217,21 +217,27 @@ </entityProvider> <entityConsumer> <name>ParentDistricts</name> - <dependency> - <name>dependency</name> - <entityName>#ENTITY</entityName> - <fieldName>ValidParentDistricts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedDistrictIds_param</name> <valueProcess>%aditoprj%/entity/District_entity/entityfields/parentdistricts/children/excludeddistrictids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>#ENTITY</entityName> + <fieldName>ValidParentDistricts</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ValidParentDistricts</name> <documentation>%aditoprj%/entity/District_entity/entityfields/validparentdistricts/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DistrictsByContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>8b0738a4-e4cd-4f9e-8df1-f499046c81bf</name> @@ -240,12 +246,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DistrictsByContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludedDistrictIds_param</name> diff --git a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod index e848d6cbed30ee763ef247d2b50de2b6a9fcd166..045e605d322c3f26bb96ae14b37d59b96a15be20 100644 --- a/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod +++ b/entity/DocumentTemplateLink_entity/DocumentTemplateLink_entity.aod @@ -51,11 +51,6 @@ </entityParameter> <entityConsumer> <name>Attachments</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>Attachments</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -63,20 +58,17 @@ <valueProcess>%aditoprj%/entity/DocumentTemplateLink_entity/entityfields/attachments/children/documenttemplatetype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>Attachments</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <targetIdField>DOCUMENTTEMPLATE_ID_CHILD</targetIdField> <documentation>%aditoprj%/entity/DocumentTemplateLink_entity/entityfields/links/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>db3b7e04-ca3b-4205-a1d3-5e5e5cb13073</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>Links</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>DocumentId_param</name> @@ -87,6 +79,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>db3b7e04-ca3b-4205-a1d3-5e5e5cb13073</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>Links</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Type_param</name> diff --git a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js index 72212f07978dfd9e4d0d8b8f670a0a3e08316621..0c634187ccb1d78964c27dccf2118f95aa72078d 100644 --- a/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DocumentTemplateLink_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("DOCUMENTTEMPLATELINK.DOCUMENTTEMPLATE_ID_PARENT", "$param.DocumentId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod index 6db556011a3702c802f4b5a1c3ade5dcb8e172b2..ecc597470943e0219985ae481d76dea66c63687d 100644 --- a/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod +++ b/entity/DocumentTemplatePlaceOfUse_entity/DocumentTemplatePlaceOfUse_entity.aod @@ -29,11 +29,6 @@ </entityField> <entityConsumer> <name>ContextDocumentTemplatePlaceOfUse</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>ContextTemplatePlaceOfUse</fieldName> - </dependency> <children> <entityParameter> <name>InvertBlacklist_param</name> @@ -43,15 +38,22 @@ <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> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ContextTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>DocumentTemplatePlaceOfUse</name> <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/documentation.adoc</documentation> + <children> + <entityParameter> + <name>DocumentTemplatePlaceOfUse_param</name> + <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/documentation.adoc</documentation> + </entityParameter> + </children> <dependencies> <entityDependency> <name>bc05b556-ecca-478c-9a92-b77e4d98d6f3</name> @@ -60,17 +62,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>DocumentTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js</valueProcess> - <documentation>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/documentation.adoc</documentation> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DocumentTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityProvider> diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index f786c8c7b183a2cf2240b9a314f499b55fcdf72c..0000000000000000000000000000000000000000 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse/children/documenttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.get("$field.DOCUMENTTEMPLATEID")); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js b/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index f786c8c7b183a2cf2240b9a314f499b55fcdf72c..0000000000000000000000000000000000000000 --- a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/documenttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("system.vars"); - -result.string(vars.get("$field.DOCUMENTTEMPLATEID")); \ No newline at end of file diff --git a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod index bea4c1751d8494da143d1330f839615910e4cba6..c6fa4c852db2405ec9cfc663e8fe80f4ed1ac4fc 100644 --- a/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod +++ b/entity/DocumentTemplateTypeCategory_entity/DocumentTemplateTypeCategory_entity.aod @@ -32,6 +32,12 @@ <lookupIdfield>KEYID</lookupIdfield> <documentation>%aditoprj%/entity/DocumentTemplateTypeCategory_entity/entityfields/bycategory/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>usageFilter_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>5eb6b17c-8c13-48df-84d5-a949b7d21cf3</name> @@ -40,12 +46,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>usageFilter_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js index 42e83fc6e021aace37f74c3de356acc19c11a2d0..0cec405b433c9f43d6e536f471fb001b9da9ac43 100644 --- a/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js +++ b/entity/DocumentTemplateTypeCategory_entity/recordcontainers/db/conditionProcess.js @@ -19,5 +19,4 @@ if (usageFilter) , SqlBuilder.IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod index 9cf1d9cca301bb4240acea90684327824bbd201d..b19bc7ae52fbb3717e35a9917861913b69a226e4 100644 --- a/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod +++ b/entity/DocumentTemplate_entity/DocumentTemplate_entity.aod @@ -94,11 +94,6 @@ </entityField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -109,6 +104,11 @@ <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -120,27 +120,22 @@ </entityConsumer> <entityConsumer> <name>KeywordDocumentTemplateType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/keyworddocumenttemplatetype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -151,6 +146,11 @@ <valueProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>Content</name> @@ -176,11 +176,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTypeCategory</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplateTypeCategory_entity</entityName> - <fieldName>ByCategory</fieldName> - </dependency> <children> <entityParameter> <name>usageFilter_param</name> @@ -188,6 +183,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplateTypeCategory_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Attachments</name> @@ -208,11 +208,6 @@ <entityConsumer> <name>Links</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/links/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplateLink_entity</entityName> - <fieldName>Links</fieldName> - </dependency> <children> <entityParameter> <name>DocumentId_param</name> @@ -225,6 +220,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplateLink_entity</entityName> + <fieldName>Links</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>DocumentTemplateTypeClassification_param</name> @@ -234,6 +234,12 @@ <entityProvider> <name>DocumentTemplateProvider</name> <documentation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ComingFrom_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>9c10883d-eb73-4587-b758-693a66367a4c</name> @@ -278,12 +284,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ComingFrom_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DocumentTemplateType_param</name> @@ -321,11 +321,7 @@ <entityConsumer> <name>DocumentTemplatePlaceOfUse</name> <stateProcess>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplatePlaceOfUse_entity</entityName> - <fieldName>DocumentTemplatePlaceOfUse</fieldName> - </dependency> + <onValidation>%aditoprj%/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js</onValidation> <children> <entityParameter> <name>DocumentTemplatePlaceOfUse_param</name> @@ -333,6 +329,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplatePlaceOfUse_entity</entityName> + <fieldName>DocumentTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ComingFrom_param</name> diff --git a/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..a40be7eb7d8e21b088a3cf4683b41849239e35ee --- /dev/null +++ b/entity/DocumentTemplate_entity/entityfields/documenttemplateplaceofuse/onValidation.js @@ -0,0 +1,14 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +var usages = EntityConsumerRowsHelper.getCurrentConsumerRows("DocumentTemplatePlaceOfUse", ["PLACEOFUSE"]); +var hasMarketingWorkflowUsage = usages.some(function (usage) +{ + return usage["PLACEOFUSE"] == "MarketingWorkflowLauncher"; +}); +if (hasMarketingWorkflowUsage && !vars.get("$field.Content").includes("{@workflowActionLink@}")) +{ + result.string(translate.text("The template must contain the placeholder for the worklow-link to use it with the marketing workflow")); +} diff --git a/entity/Document_entity/Document_entity.aod b/entity/Document_entity/Document_entity.aod index 420157a37135f2b6b3fd1105810584e32ac6935e..f1dda1cc413a7dc2f7f2678ef59c6188096c0d5f 100644 --- a/entity/Document_entity/Document_entity.aod +++ b/entity/Document_entity/Document_entity.aod @@ -143,7 +143,28 @@ </entityActionField> <entityProvider> <name>Documents</name> + <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>AssignmentName_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <expose v="true" /> + <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AssignmentTable_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Keyword_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1eae1907-53ea-4d6f-bcf1-772052365020</name> @@ -225,7 +246,7 @@ </entityDependency> <entityDependency> <name>2e6fcf27-ee98-4f7d-a99d-7ce02774076b</name> - <entityName>UserhelpResources</entityName> + <entityName>UserhelpResources_entity</entityName> <fieldName>Documents</fieldName> <isConsumer v="false" /> </entityDependency> @@ -242,12 +263,23 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>MainDocuments</name> + <recordContainer>jdito</recordContainer> <children> + <entityParameter> + <name>Keyword_param</name> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> + <expose v="true" /> + <mandatory v="true" /> + <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> + </entityParameter> <entityParameter> <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/documents/children/assignmentname_param/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> @@ -258,14 +290,10 @@ <expose v="true" /> </entityParameter> <entityParameter> - <name>Keyword_param</name> - <expose v="true" /> + <name>DisallowCreate_param</name> + <expose v="false" /> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>MainDocuments</name> - <recordContainer>jdito</recordContainer> <dependencies> <entityDependency> <name>87d738a5-5d5e-425e-b013-007371475a38</name> @@ -310,33 +338,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Keyword_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/keyword_param/valueProcess.js</valueProcess> - <expose v="true" /> - <mandatory v="true" /> - <description>TODO: expose auf false. aktuell wird der Code nicht ausgeführt, wenn Expose false ist.</description> - </entityParameter> - <entityParameter> - <name>AssignmentName_param</name> - <valueProcess>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/valueProcess.js</valueProcess> - <expose v="true" /> - <documentation>%aditoprj%/entity/Document_entity/entityfields/maindocuments/children/assignmentname_param/documentation.adoc</documentation> - </entityParameter> - <entityParameter> - <name>AssignmentRowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AssignmentTable_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>DisallowCreate_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>DisallowCreate_param</name> @@ -346,14 +347,6 @@ <entityProvider> <name>SingleDocument</name> <titlePlural>Document</titlePlural> - <dependencies> - <entityDependency> - <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> - <entityName>SerialLetter_entity</entityName> - <fieldName>Documents</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AssignmentName_param</name> @@ -364,12 +357,42 @@ <valueProcess>%aditoprj%/entity/Document_entity/entityfields/singledocument/children/disallowcreate_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="false" /> + </entityParameter> </children> + <dependencies> + <entityDependency> + <name>91f87622-d0e8-43c6-99a0-5f9cebf79aaf</name> + <entityName>SerialLetter_entity</entityName> + <fieldName>Documents</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionGroup> + <name>MSTeam</name> + <title>MS Teams</title> + <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/stateProcess.js</stateProcess> + <children> + <entityActionField> + <name>synchronizeDocuments</name> + <title>Synchronize documents</title> + <onActionProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js</onActionProcess> + <iconId>VAADIN:REFRESH</iconId> + <stateProcess>%aditoprj%/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js</stateProcess> + </entityActionField> + </children> + </entityActionGroup> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Document_entity/entityfields/documents/documentation.adoc b/entity/Document_entity/entityfields/documents/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e2c292d974ff694c3b44fef1fbb7d5da60cb7db0 --- /dev/null +++ b/entity/Document_entity/entityfields/documents/documentation.adoc @@ -0,0 +1,3 @@ += Documents + +Provider for getting all documents linked to an object. \ No newline at end of file diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..841ff10b1844fa44c81a817f99987d1ff2f42db7 --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/onActionProcess.js @@ -0,0 +1,9 @@ +import("system.neon"); +import("system.vars"); + +neon.openContext("MSTTeamsDocument", "MSTeamsDocumentEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "MSTTeamId_param" : vars.get("$param.MSTTeamId_param"), + "ObjectRowId_param" : vars.get("$param.AssignmentRowId_param"), + "AssignmentName_param" : vars.get("$param.AssignmentName_param"), + "AssignmentTable_param" : vars.get("$param.AssignmentTable_param") +}); diff --git a/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0bd4c4c544c99f66a5a2ce914d8abd13910ad5c5 --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/children/synchronizedocuments/stateProcess.js @@ -0,0 +1,7 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); + +var isEnabled = MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(vars.get("$param.MSTTeamId_param")); +result.string(isEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_DISABLED); \ No newline at end of file diff --git a/entity/Document_entity/entityfields/msteam/stateProcess.js b/entity/Document_entity/entityfields/msteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cd16b0694665a45b7c95ff7aa35547fef4e4f633 --- /dev/null +++ b/entity/Document_entity/entityfields/msteam/stateProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.result"); +import("system.vars"); + +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") + ? neon.COMPONENTSTATE_EDITABLE + : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod index fb343c9aa35db6794cf56f61fb5920617e799a91..b03785e283988f81205973dca4b69b0f77b34416 100644 --- a/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod +++ b/entity/DuplicateScanner_entity/DuplicateScanner_entity.aod @@ -74,17 +74,17 @@ </entityField> <entityConsumer> <name>ScannerResultFieldsConfig_Consumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicateScannerResultFieldConfig_entity</entityName> - <fieldName>ScannerResultFieldConfigProvider</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateScannerId_param</name> <valueProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/scannerresultfieldsconfig_consumer/children/duplicatescannerid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicateScannerResultFieldConfig_entity</entityName> + <fieldName>ScannerResultFieldConfigProvider</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>RunActionGroup</name> diff --git a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js index c8e53ac00d768ffab9c7f50553de8b2f3d327bed..c752ef5850f94d87e6353b5cace686dafb172353 100644 --- a/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js +++ b/entity/DuplicateScanner_entity/recordcontainers/dbrecordcontainer/onDBUpdate.js @@ -1,3 +1,4 @@ +import("Sql_lib"); import("system.vars"); var rowdata = vars.get("$local.rowdata"); @@ -6,5 +7,6 @@ let scanPattern = JSON.parse(rowdata["DUPLICATESCANNER.SCAN_PATTERN"]); if (scanPattern.provider == undefined) { scanPattern.provider = "indexP"; - vars.set("$field.SCAN_PATTERN", JSON.stringify(scanPattern)); + newWhere("DUPLICATESCANNER.ID", vars.get("$local.uid")) + .updateData(true, "DUPLICATESCANNER", ["DUPLICATESCANNER.SCAN_PATTERN"], null,[JSON.stringify(scanPattern)]); } \ No newline at end of file diff --git a/entity/Duplicates_entity/Duplicates_entity.aod b/entity/Duplicates_entity/Duplicates_entity.aod index 54ee932a3235f4e127feeb5112c9c11e3e7f2e47..01016698641fb613af8dd98543ce9c7d4e3fd809 100644 --- a/entity/Duplicates_entity/Duplicates_entity.aod +++ b/entity/Duplicates_entity/Duplicates_entity.aod @@ -42,11 +42,6 @@ </entityProvider> <entityConsumer> <name>SelfPersonDuplicatesConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Duplicates_entity</entityName> - <fieldName>SelfPersonDuplicatesProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -58,6 +53,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/selfpersonduplicatesconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Duplicates_entity</entityName> + <fieldName>SelfPersonDuplicatesProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>TargetEntity</name> @@ -66,11 +66,6 @@ </entityParameter> <entityConsumer> <name>SelfOrganisationDuplicatesConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Duplicates_entity</entityName> - <fieldName>SelfOrganisationDuplicatesProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -81,6 +76,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/selforganisationduplicatesconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Duplicates_entity</entityName> + <fieldName>SelfOrganisationDuplicatesProvider</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>SelfOrganisationDuplicatesProvider</name> @@ -88,11 +88,6 @@ </entityProvider> <entityConsumer> <name>DuplicatesUnrelatedPersonConsumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicatesUnrelated_entity</entityName> - <fieldName>UnrelatedPersonsProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -103,17 +98,17 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatesunrelatedpersonconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicatesUnrelated_entity</entityName> + <fieldName>UnrelatedPersonsProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>CLUSTER_ID</name> </entityField> <entityConsumer> <name>DuplicatePersonsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>NonselfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>OnlyShowContactIds_param</name> @@ -124,6 +119,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatepersonsconsumer/children/duplicateactionscontrol_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>NonselfDuplicates</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>DuplicateClusterActionGroup</name> @@ -140,11 +140,6 @@ </entityActionGroup> <entityConsumer> <name>DuplicatesUnrelatedOrganisationConsumer</name> - <dependency> - <name>dependency</name> - <entityName>DuplicatesUnrelated_entity</entityName> - <fieldName>UnrelatedOrganisationsProvider</fieldName> - </dependency> <children> <entityParameter> <name>TargetEntity</name> @@ -155,6 +150,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicatesunrelatedorganisationconsumer/children/clusterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DuplicatesUnrelated_entity</entityName> + <fieldName>UnrelatedOrganisationsProvider</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>PersonOpenClusterDetailActionGroup</name> @@ -186,11 +186,6 @@ </entityActionGroup> <entityConsumer> <name>DuplicateOrganisationsConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>NonselfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -201,6 +196,11 @@ <valueProcess>%aditoprj%/entity/Duplicates_entity/entityfields/duplicateorganisationsconsumer/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Organisation_entity</entityName> + <fieldName>NonselfDuplicates</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Email_entity/Email_entity.aod b/entity/Email_entity/Email_entity.aod index 3fae2a234bd2ebccb4ee178dd4c55cbdbacfb054..73da7f79012e6ebb9435ada80d688952aa713aef 100644 --- a/entity/Email_entity/Email_entity.aod +++ b/entity/Email_entity/Email_entity.aod @@ -29,11 +29,6 @@ </entityField> <entityConsumer> <name>DocumentTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -48,6 +43,11 @@ <valueProcess>%aditoprj%/entity/Email_entity/entityfields/documenttemplates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Recipient_param</name> @@ -65,17 +65,17 @@ </entityField> <entityConsumer> <name>EmailAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Email_entity/entityfields/emailaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> diff --git a/entity/Email_entity/entityfields/recipient/displayValueProcess.js b/entity/Email_entity/entityfields/recipient/displayValueProcess.js index 8e2f689eb15234549c8e1586c5aeba949ada2d62..ee4d3155ec9f2c715989a6c0a5d13d57fc0ab006 100644 --- a/entity/Email_entity/entityfields/recipient/displayValueProcess.js +++ b/entity/Email_entity/entityfields/recipient/displayValueProcess.js @@ -1,6 +1,14 @@ +import("Communication_lib"); import("system.result"); -import("system.neon"); import("system.vars"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) - result.string(vars.get("$field.RECIPIENT")); \ No newline at end of file +if(vars.get("$field.RECIPIENT")) +{ + var res = ""; + if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) + res = vars.get("$param.Recipient_param"); + else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) + res = CommUtil.getStandardMail(vars.get("$param.ContactId_param")); + + result.string(res); +} \ No newline at end of file diff --git a/entity/Email_entity/entityfields/recipient/valueProcess.js b/entity/Email_entity/entityfields/recipient/valueProcess.js index 0b715605584a88bb3436e29a08fc69651eb5efc8..13f68a3ed37b6a9fb973117f5743750c34f2a3b1 100644 --- a/entity/Email_entity/entityfields/recipient/valueProcess.js +++ b/entity/Email_entity/entityfields/recipient/valueProcess.js @@ -1,16 +1,14 @@ import("Communication_lib"); import("system.result"); -import("system.neon"); import("system.vars"); if (vars.get("$this.value") == null) { + var res = ""; if (vars.exists("$param.Recipient_param") && vars.get("$param.Recipient_param")) - result.string(vars.get("$param.Recipient_param")); + res = vars.get("$param.Recipient_param"); else if (vars.exists("$param.ContactId_param") && vars.get("$param.ContactId_param")) - result.string(CommUtil.getStandardMail(vars.get("$param.ContactId_param"))); -} -else if (!vars.get("$this.value").includes("@") && vars.get("$this.value") != "") - result.string(newSelect("ADDR") - .from("COMMUNICATION") - .where("COMMUNICATION.COMMUNICATIONID", vars.get("$this.value")).cell()); \ No newline at end of file + res = CommUtil.getStandardMail(vars.get("$param.ContactId_param")); + + result.string(res); +} \ No newline at end of file diff --git a/entity/EmployeeRole_entity/EmployeeRole_entity.aod b/entity/EmployeeRole_entity/EmployeeRole_entity.aod index 8bf5d69b2368ae1236e0d8eedd86745dbfa9927f..a3ed777f95a55fdcb1a293e7ba64444d9eb0ebdb 100644 --- a/entity/EmployeeRole_entity/EmployeeRole_entity.aod +++ b/entity/EmployeeRole_entity/EmployeeRole_entity.aod @@ -26,6 +26,13 @@ <name>EmployeeRoles</name> <targetContextField>TARGETCONTEXT</targetContextField> <targetIdField>UID</targetIdField> + <children> + <entityParameter> + <name>UserTitle_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3bcec57a-7165-4773-9253-5ecab26ee3f4</name> @@ -34,13 +41,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>UserTitle_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>ROLE</name> @@ -51,17 +51,17 @@ </entityField> <entityConsumer> <name>Roles</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilteredRoles</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/EmployeeRole_entity/entityfields/roles/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilteredRoles</fieldName> + </dependency> </entityConsumer> <entityField> <name>TARGETCONTEXT</name> diff --git a/entity/Employee_entity/Employee_entity.aod b/entity/Employee_entity/Employee_entity.aod index c6c1df49e89ca1dde5d9de14f50e8f38a120fe4c..c17ea53f45bca4ddb64fbf866dad9505601bb5b8 100644 --- a/entity/Employee_entity/Employee_entity.aod +++ b/entity/Employee_entity/Employee_entity.aod @@ -111,11 +111,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Employee_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -126,6 +121,11 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>NAME_fieldGroup</name> @@ -156,25 +156,20 @@ </entityField> <entityConsumer> <name>EmployeeRoles</name> - <dependency> - <name>dependency</name> - <entityName>EmployeeRole_entity</entityName> - <fieldName>EmployeeRoles</fieldName> - </dependency> <children> <entityParameter> <name>UserTitle_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeeroles/children/usertitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>EmployeeRole_entity</entityName> + <fieldName>EmployeeRoles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -185,15 +180,15 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> @@ -204,11 +199,22 @@ <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Employees</name> <lookupIdfield>CONTACT_ID</lookupIdfield> <filterVariablesProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/filterVariablesProcess.js</filterVariablesProcess> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0ca415b9-a940-424e-bee8-05c007b20659</name> @@ -271,26 +277,20 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employees/children/onlyactives_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/departments/children/parentid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> @@ -301,17 +301,17 @@ </entityActionField> <entityConsumer> <name>PossibleRoles</name> - <dependency> - <name>dependency</name> - <entityName>Role_entity</entityName> - <fieldName>FilteredRoles</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeRoles_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/possibleroles/children/excluderoles_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilteredRoles</fieldName> + </dependency> </entityConsumer> <entityField> <name>SHORT_UID</name> @@ -352,31 +352,31 @@ <entityConsumer> <name>MyPermission</name> <refreshParent v="false" /> - <dependency> - <name>dependency</name> - <entityName>PermissionCalendar_entity</entityName> - <fieldName>Permissions</fieldName> - </dependency> <children> <entityParameter> <name>PermissionProcurer_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/mypermission/children/permissionprocurer_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>TheirPermissions</name> <dependency> <name>dependency</name> <entityName>PermissionCalendar_entity</entityName> <fieldName>Permissions</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TheirPermissions</name> <children> <entityParameter> <name>PermissionDealer_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/theirpermissions/children/permissiondealer_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionCalendar_entity</entityName> + <fieldName>Permissions</fieldName> + </dependency> </entityConsumer> <entityField> <name>PICTURE</name> @@ -398,18 +398,22 @@ </entityParameter> <entityConsumer> <name>EmployeeTokens</name> - <dependency> - <name>dependency</name> - <entityName>EmployeeToken_entity</entityName> - <fieldName>EmployeeTokenProvider</fieldName> - </dependency> <children> <entityParameter> <name>employeeId_param</name> <valueProcess>%aditoprj%/entity/Employee_entity/entityfields/employeetokens/children/employeeid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>EmployeeToken_entity</entityName> + <fieldName>EmployeeTokenProvider</fieldName> + </dependency> </entityConsumer> + <entityParameter> + <name>EmployeeContactIdWhitelist_param</name> + <expose v="true" /> + </entityParameter> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js index 42ea78f8cac66461da9ad093bf976729358f76db..8970fd6bd60fb0f744c14a2089ae5a213ef71702 100644 --- a/entity/Employee_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Employee_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("system.logging"); import("Sql_lib"); import("system.db"); import("Attribute_lib"); @@ -12,6 +13,10 @@ import("Employee_lib"); var users; if (vars.exists("$local.idvalues") && vars.get("$local.idvalues")) users = tools.getUsersByAttribute(tools.NAME, vars.get("$local.idvalues"), tools.PROFILE_FULL); +else if(vars.exists("$param.EmployeeContactIdWhitelist_param") && vars.get("$param.EmployeeContactIdWhitelist_param")) +{ + users = tools.getUsersByAttribute(tools.CONTACTID, JSON.parse(vars.get("$param.EmployeeContactIdWhitelist_param")), tools.PROFILE_DEFAULT); +} else { var values = ["true", "false"]; diff --git a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod index e010ab9f6c122d2c7ece42f3c17cad5eb4ddae91..ae07c537a21b1bfa942f26a14123b266163f17b2 100644 --- a/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod +++ b/entity/ExportTemplateField_entity/ExportTemplateField_entity.aod @@ -41,16 +41,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplateField_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExportTemplateField_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityField> diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js deleted file mode 100644 index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000 --- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefield_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js b/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js deleted file mode 100644 index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000 --- a/entity/ExportTemplateField_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod index 0dc5e1fc3a6ba07fa7a4b83bf0525011d9a81f57..91964c2b417efeb73c0e5c094a61fa6b57efe915 100644 --- a/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod +++ b/entity/ExportTemplatePlaceOfUse_entity/ExportTemplatePlaceOfUse_entity.aod @@ -32,11 +32,6 @@ </entityField> <entityConsumer> <name>ContextExportTemplatePlaceOfUse</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>ContextTemplatePlaceOfUse</fieldName> - </dependency> <children> <entityParameter> <name>InvertBlacklist_param</name> @@ -47,15 +42,25 @@ <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/contextexporttemplateplaceofuse/children/blacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ContextTemplatePlaceOfUse</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExportTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> <entityProvider> <name>ExportTemplatePlaceOfUser</name> <documentation>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ExportTemplatePlaceOfUse_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>c60a238a-51f0-4538-8c53-6921481ddd4c</name> @@ -64,13 +69,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplatePlaceOfUse_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000 --- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js b/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js deleted file mode 100644 index 3cbc49005642cf289c724b7b2de89a5db926e630..0000000000000000000000000000000000000000 --- a/entity/ExportTemplatePlaceOfUse_entity/entityfields/exporttemplateplaceofuser/children/exporttemplateplaceofuse_param/valueProcess.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.vars"); -import("system.result"); - -result.string(vars.get("$field.EXPORTTEMPLATEID")); \ No newline at end of file diff --git a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod index 2840322c0f7c58e64da8ab5f42cd09ded6c47426..b8dcbc15cc2c0d02368ba2b6ffa60e8023e2c034 100644 --- a/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod +++ b/entity/ExportTemplateSelection_entity/ExportTemplateSelection_entity.aod @@ -29,11 +29,6 @@ </entityParameter> <entityConsumer> <name>ExportTemplateComsumer</name> - <dependency> - <name>dependency</name> - <entityName>ExportTemplate_entity</entityName> - <fieldName>ExportTemplateIDs</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplateIDs_param</name> @@ -44,6 +39,11 @@ <valueProcess>%aditoprj%/entity/ExportTemplateSelection_entity/entityfields/exporttemplatecomsumer/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplate_entity</entityName> + <fieldName>ExportTemplateIDs</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> diff --git a/entity/ExportTemplate_entity/ExportTemplate_entity.aod b/entity/ExportTemplate_entity/ExportTemplate_entity.aod index a38388bbd5de723db021a3cb15d5d40cb1322e35..65ba57734b719cca9d227313c6557010d0812147 100644 --- a/entity/ExportTemplate_entity/ExportTemplate_entity.aod +++ b/entity/ExportTemplate_entity/ExportTemplate_entity.aod @@ -61,6 +61,7 @@ <entityField> <name>DESCRIPTION</name> <title>Description</title> + <contentType>LONG_TEXT</contentType> </entityField> <entityConsumer> <name>Languages</name> @@ -73,11 +74,6 @@ <entityConsumer> <name>ExportTemplateFields</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>ExportTemplateField_entity</entityName> - <fieldName>ExportTemplateFields</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplateField_param</name> @@ -86,6 +82,11 @@ <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplatefields/children/exporttemplatefield_param/documentation.adoc</documentation> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplateField_entity</entityName> + <fieldName>ExportTemplateFields</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExportTemplateIDs_param</name> @@ -94,11 +95,6 @@ </entityParameter> <entityConsumer> <name>ExportTemplateplaceOfUseCon</name> - <dependency> - <name>dependency</name> - <entityName>ExportTemplatePlaceOfUse_entity</entityName> - <fieldName>ExportTemplatePlaceOfUser</fieldName> - </dependency> <children> <entityParameter> <name>ExportTemplatePlaceOfUse_param</name> @@ -106,11 +102,23 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ExportTemplatePlaceOfUse_entity</entityName> + <fieldName>ExportTemplatePlaceOfUser</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ExportTemplateIDs</name> <documentation>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ExportTemplateIDs_param</name> + <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/children/exporttemplateids_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1b692618-b800-47ae-a48c-3d4164d68401</name> @@ -119,13 +127,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExportTemplateIDs_param</name> - <valueProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/exporttemplateids/children/exporttemplateids_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>comingFrom_param</name> @@ -153,6 +154,13 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityActionField> + <name>openAdminView</name> + <title>Open admin view</title> + <onActionProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CURLY_BRACKETS</iconId> + <stateProcess>%aditoprj%/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js</stateProcess> + </entityActionField> </entityFields> <recordContainers> <dbRecordContainer> @@ -160,6 +168,7 @@ <alias>Data_alias</alias> <isReadOnly v="false" /> <conditionProcess>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBDelete>%aditoprj%/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js</onDBDelete> <linkInformation> <linkInformation> <name>ce410f40-846b-43e6-9c30-150393cee43d</name> diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..34ed41f947d2483b4ed77b2b949dcc8d435338be --- /dev/null +++ b/entity/ExportTemplate_entity/entityfields/openadminview/onActionProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("Context_lib"); + +AdminViewUtils.open("EXPORTTEMPLATEID", ["DATE_NEW", "DATE_EDIT", "USER_NEW", "USER_EDIT"]); \ No newline at end of file diff --git a/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..38f2298db7304b4d44a15fbad7f720558c02da99 --- /dev/null +++ b/entity/ExportTemplate_entity/entityfields/openadminview/stateProcess.js @@ -0,0 +1,4 @@ +import("Context_lib"); +import("system.result"); + +result.string(AdminViewUtils.getActionState()); \ No newline at end of file diff --git a/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..571ed49a75e9c390650c56139d99139532a32649 --- /dev/null +++ b/entity/ExportTemplate_entity/recordcontainers/db/onDBDelete.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("Sql_lib"); + +var exportTemplateId = vars.get("$local.uid"); + +newWhere("EXPORTTEMPLATEPLACEOFUSE.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); +newWhere("EXPORTTEMPLATESELECTION.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); +newWhere("EXPORTTEMPLATEFIELD.EXPORTTEMPLATE_ID", exportTemplateId).deleteData(); \ No newline at end of file diff --git a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js index 3bf9fefa02cb04a9da8583c410e0f8c4782fc974..eafabfcf64d2ef9eaea73303673e6b186e7ab184 100644 --- a/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js +++ b/entity/Favorite_entity/recordcontainers/jditorecordcontainer/contentProcess.js @@ -127,10 +127,17 @@ function buildFavorites(favos, objecttype) loadConfig.uids(ids); loadConfig.count(200); loadConfig.fields(["#CONTENTTITLE", "#IMAGE", "#UID"]); - var loadedRows = entities.getRows(loadConfig); - for(z = 0; z < loadedRows.length; z++) - getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + try { + var loadedRows = entities.getRows(loadConfig); + + for(z = 0; z < loadedRows.length; z++) + getFavoriteWith(loadedRows[z], builtFavos, favos, loadedRows[z]["#UID"], objecttype); + + } catch(e) + { + //maybe a missing permission for entity + } return builtFavos; } diff --git a/entity/Forecast_entity/Forecast_entity.aod b/entity/Forecast_entity/Forecast_entity.aod index f553dde8f46895a3f1a215e1bcf33825610c8009..7487314f3553b288e9711c5c4bf89961a3aeb295 100644 --- a/entity/Forecast_entity/Forecast_entity.aod +++ b/entity/Forecast_entity/Forecast_entity.aod @@ -53,11 +53,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -65,6 +60,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_TYPE</name> @@ -75,11 +75,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -88,6 +83,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> @@ -171,10 +171,6 @@ <name>OBJECT_ROWID.value</name> <recordfield>FORECAST.OBJECT_ROWID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT_TYPE.value</name> <recordfield>FORECAST.OBJECT_TYPE</recordfield> diff --git a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644 --- a/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Forecast_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js index a4ec94640015904a7560453161e2cab3a49c2320..0c0805ca63787abe761e25b34fa860f9cb5c820d 100644 --- a/entity/Forecast_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Forecast_entity/recordcontainers/db/conditionProcess.js @@ -7,5 +7,4 @@ var cond = newWhere() .andIfSet("FORECAST.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("FORECAST.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index 33554680cccd2c3d363443686457c41e0c1c5729..0000000000000000000000000000000000000000 --- a/entity/Forecast_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/ImportField_Entity/ImportField_Entity.aod b/entity/ImportField_Entity/ImportField_Entity.aod index cb5bb3fb6434c7a789b8d105cc18d40891bfd3f5..8b47e84bc5da830c573bd68818dceb0f58ad71f3 100644 --- a/entity/ImportField_Entity/ImportField_Entity.aod +++ b/entity/ImportField_Entity/ImportField_Entity.aod @@ -72,17 +72,17 @@ </entityParameter> <entityConsumer> <name>KeywordImportFields</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/ImportField_Entity/entityfields/keywordimportfields/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod index 81be338ad3887462424137b8445aaeef00347076..16bede930f35ec4d63ade98263a7b0b2ccb29d1a 100644 --- a/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod +++ b/entity/KeywordAttributeRelation_entity/KeywordAttributeRelation_entity.aod @@ -51,6 +51,13 @@ <name>AttributesForKeywordEntry</name> <titlePlural></titlePlural> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>KeywordEntryId_param</name> + <expose v="true" /> + <mandatory v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>490d12c0-6ace-42e5-89e1-d40b25322161</name> @@ -59,13 +66,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>KeywordEntryId_param</name> - <expose v="true" /> - <mandatory v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ContainerName_param</name> @@ -75,11 +75,6 @@ </entityParameter> <entityConsumer> <name>KeywordAttributes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordAttribute_entity</entityName> - <fieldName>SpecificContainerKeyword</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -92,6 +87,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttribute_entity</entityName> + <fieldName>SpecificContainerKeyword</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>KeywordEntryId_param</name> diff --git a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js index 88a371d623036551c0e883501e7ce2fbb7467852..08a73e065351292b94799258ed901ef6689197e1 100644 --- a/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordAttributeRelation_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ import("Sql_lib"); var cond = newWhereIfSet("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID", "$param.KeywordEntryId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod index 660467e301eb5004b4aca71e1aa786ba5d0df3cc..13cb14c44b1c2b480f27cd3e54c51a2fd6b0af97 100644 --- a/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod +++ b/entity/KeywordAttribute_entity/KeywordAttribute_entity.aod @@ -69,11 +69,6 @@ </entityParameter> <entityConsumer> <name>KeywordAttributeTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -81,6 +76,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js index 823c3d4a9247760a8f02f2a715291b64e32315b4..15f1ee62a401226343c96a26c3a7b084e07a843b 100644 --- a/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordAttribute_entity/recordcontainers/db/conditionProcess.js @@ -16,5 +16,4 @@ if (entryIdForFilter) SqlBuilder.NOT_IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KeywordEntry_entity/KeywordEntry_entity.aod b/entity/KeywordEntry_entity/KeywordEntry_entity.aod index ad9c6c66275b74b098addef8c4d4ed2ca621cb5c..3472852e89848b764ea1dc9a2525a2e6bc300530 100644 --- a/entity/KeywordEntry_entity/KeywordEntry_entity.aod +++ b/entity/KeywordEntry_entity/KeywordEntry_entity.aod @@ -95,7 +95,19 @@ <entityProvider> <name>SpecificContainerKeywords</name> <lookupIdfield>KEYID</lookupIdfield> + <documentation>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ContainerName_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>bb48a3ee-f340-4fd4-8c80-ef73b765ab58</name> @@ -589,18 +601,13 @@ <fieldName>KeywordVisitRecommendationSource</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>10ced13f-78ae-4e99-a315-82f1f7389029</name> + <entityName>CampaignStep_entity</entityName> + <fieldName>KeywordStepMedium</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyActives_param</name> - <valueProcess>%aditoprj%/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/children/onlyactives_param/valueProcess.js</valueProcess> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ContainerName_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>TITLE_TRANSLATED</name> @@ -615,11 +622,6 @@ <entityConsumer> <name>KeywordAttributeRelations</name> <onValidation>%aditoprj%/entity/KeywordEntry_entity/entityfields/keywordattributerelations/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>KeywordAttributeRelation_entity</entityName> - <fieldName>AttributesForKeywordEntry</fieldName> - </dependency> <children> <entityParameter> <name>KeywordEntryId_param</name> @@ -627,6 +629,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordAttributeRelation_entity</entityName> + <fieldName>AttributesForKeywordEntry</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedKeyIdsSubquery_param</name> diff --git a/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..0525588e240333d63a3e3b76b2c9bfb08d14dc54 --- /dev/null +++ b/entity/KeywordEntry_entity/entityfields/specificcontainerkeywords/documentation.adoc @@ -0,0 +1,3 @@ += SpecificContainerKeywords + +Delivers only keywords of a specific container for a keyword selection. \ No newline at end of file diff --git a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js index 6fcb81de353b15da6987c4a057a54535f2d1fcbb..c2921e933fff759455fdd5adefee3f8731fe79d3 100644 --- a/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js +++ b/entity/KeywordEntry_entity/recordcontainers/db/conditionProcess.js @@ -23,5 +23,4 @@ if (vars.getString("$param.WhitelistIds_param")) cond.noResult(); // force empty result if whitelist is empty } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); diff --git a/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..81246e32ac3a583b322226484c6a2b62a406c5ea --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/KnowledgeDiscussion_entity.aod @@ -0,0 +1,211 @@ +<?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>KnowledgeDiscussion_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/documentation.adoc</documentation> + <title>Discussion</title> + <grantCreateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantCreateProcess.js</grantCreateProcess> + <grantUpdateProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js</grantDeleteProcess> + <iconIdProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Discussions</titlePlural> + <recordContainer>JDito_KnowledgeDiscussionContainer</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>DISCUSSIONTEXT</name> + <title>Discussion</title> + <contentType>LONG_TEXT</contentType> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AUTHOR</name> + <title>Author</title> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>STATUS</name> + <title>Status</title> + <consumer>StatusKeyword</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_NEW</name> + </entityField> + <entityField> + <name>USER_EDIT</name> + </entityField> + <entityField> + <name>DATE_NEW</name> + <title>new</title> + <contentType>DATE</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <title>edited</title> + <contentType>DATE</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>PARENTENTRY</name> + </entityField> + <entityField> + <name>ICON</name> + <title>Icon</title> + <contentType>IMAGE</contentType> + </entityField> + <entityConsumer> + <name>StatusKeyword</name> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>OnlyActives_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + </entityConsumer> + <entityProvider> + <name>ByKnowledgeId</name> + <documentation>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>fbacb136-2690-495a-82c5-b6ab1576d3f9</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>DiscussionsByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>KnowledgeId_param</name> + <expose v="true" /> + </entityParameter> + <entityActionGroup> + <name>Edit_ActionGroup</name> + <title>Edit</title> + <children> + <entityActionField> + <name>addAnswer_action</name> + <title>Reply</title> + <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> + <iconId>VAADIN:COMMENT_O</iconId> + <tooltip>Adds an answer to the selected discussion</tooltip> + </entityActionField> + <entityActionField> + <name>toggleDiscussionStatus_action</name> + <title>Toggle status</title> + <onActionProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <isSelectionAction v="true" /> + <iconId>VAADIN:LOCK</iconId> + <tooltip>Toggles the status of selected discussion between open and closed</tooltip> + </entityActionField> + </children> + </entityActionGroup> + <entityParameter> + <name>ParentId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>RowCount_param</name> + </entityParameter> + <entityField> + <name>nodeType</name> + </entityField> + <entityField> + <name>showAll</name> + <contentType>BOOLEAN</contentType> + </entityField> + <entityField> + <name>discussionTitle</name> + <title>Last change</title> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_KnowledgeDiscussionContainer</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isPageable v="false" /> + <isFilterable v="true" /> + <isRequireContainerFiltering v="true" /> + <isSortable v="false" /> + <contentProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js</contentProcess> + <rowCountProcess>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js</rowCountProcess> + <hasDependentRecords v="true" /> + <onInsert>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js</onDelete> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>PARENTENTRY.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENT_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>AUTHOR.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DISCUSSIONTEXT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>STATUS.value</name> + <isFilterable v="true" /> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>STATUS.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DATE_NEW.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DATE_EDIT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>USER_NEW.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>USER_EDIT.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>AUTHOR.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ICON.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>nodeType.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>discussionTitle.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeDiscussion_entity/documentation.adoc b/entity/KnowledgeDiscussion_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..d2fa0a728ff196aa8dba9163da1aefd62fd12eb1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/documentation.adoc @@ -0,0 +1,3 @@ +This entity manages the discussion "forum" which is linked to a knowledge entry +It uses a JDito recordcontainer to build the tree. +The tree is always sorted by latest action. So the dicussion where an answer was added last, is put on top \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2301fca2d43398da856f6cde418bed45abb1aca7 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/author/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$this.value") === null && vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..f57edf8c453eebabc900ee3944e040bccc7154f0 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/byknowledgeid/documentation.adoc @@ -0,0 +1,3 @@ +This provider needs the id of a knowledge entry to deliver all discussions of it + +Always fill KnowledgeId_param \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..090ae91afeada702f00db3cb657dfcac0d63650b --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.datetime"); + +if(vars.get("$sys.recordstate") === neon.OPERATINGSTATE_EDIT) + result.string(datetime.date()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cb4f3c1d5a116427fe672eb6973e64a206b312f1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,7 @@ +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) + result.string(datetime.date()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..014090f103f492b497d4c4aec743a7108ad3eb0a --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/addanswer_action/onActionProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.neon"); + +var params = { + "KnowledgeId_param":vars.get("$param.KnowledgeId_param") + ,"ParentId_param":vars.get("$field.UID") +} + +neon.openContext("KnowledgeDiscussion", "KnowledgeDiscussionEdit_view", null, neon.OPERATINGSTATE_NEW, params); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..79943300955b21920d3260068e2b4b3dde93e69c --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/edit_actiongroup/children/togglediscussionstatus_action/onActionProcess.js @@ -0,0 +1,12 @@ +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.neon"); + +var status = (vars.get("$field.STATUS") == $KeywordRegistry.discussionStatus$acitve()) + ? $KeywordRegistry.discussionStatus$closed() + : $KeywordRegistry.discussionStatus$acitve(); + +KnowledgeDiscussion.getInstance(vars.get("$param.KnowledgeId_param")) + .setDiscussionStatus(vars.get("$field.UID"), status); +neon.refresh(); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3204947cd26a0f50de3268f8be7ab8ce6ea654d1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/knowledgemanagement_id/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); + +if(vars.exists("$param.KnowledgeId_param") + && vars.get("$param.KnowledgeId_param") + && vars.get("$this.value") === null) + result.string(vars.get("$param.KnowledgeId_param")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..051fa1deb287bb12bddf8b7a57015bdb2cf74677 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/status/valueProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") === null && vars.get("$sys.recordstate") === neon.OPERATINGSTATE_NEW) + result.string($KeywordRegistry.discussionStatus$acitve()); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..10532b30b86375408acb062445dccc28b4d9a8a5 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("KeywordRegistry_basic"); +import("system.result"); + +result.string($KeywordRegistry.discussionStatus()); \ No newline at end of file diff --git a/entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js similarity index 100% rename from entity/Attribute_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js rename to entity/KnowledgeDiscussion_entity/entityfields/statuskeyword/children/onlyactives_param/valueProcess.js diff --git a/entity/KnowledgeDiscussion_entity/grantCreateProcess.js b/entity/KnowledgeDiscussion_entity/grantCreateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..241a88da0b592ff695a2b6182e867a75cf8460b6 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantCreateProcess.js @@ -0,0 +1,18 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); + +var status = KnowledgeUtils.trimAndUp(vars.get("$field.STATUS")); +var parent = vars.exists("$param.ParentId_param") && vars.get("$param.ParentId_param"); + +var cond = ( + ( + status == KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve()) + || + status == "" + ) +); + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js b/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b76b609eeb198e6c199d261a5d4760d685b4c0a1 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantDeleteProcess.js @@ -0,0 +1,24 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +import("KeywordRegistry_basic"); + +var hasChildren = KnowledgeDiscussion.hasChildren(vars.get("$field.UID")); +var status = vars.get("$field.STATUS"); +var user = vars.get("$sys.user"); +var author = vars.get("$field.AUTHOR"); +//As long as it doesn't have children AND ( ((author == user) and status == active) OR user is academy) +var cond = ( + !hasChildren + && + ( + ( + KnowledgeUtils.trimAndUp(author) === KnowledgeUtils.trimAndUp(user) + && ( KnowledgeUtils.trimAndUp(status) === KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve().slice(0))) + ) + || + KnowledgeUtils.isAcademy(user) + ) +); + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js b/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..07664375a4dd09efc3c2f5c5ba428b9adf1f5b7b --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/grantUpdateProcess.js @@ -0,0 +1,30 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); +import("KnowledgeManagement_lib"); + +var user = vars.get("$sys.user"); +var author = vars.get("$field.AUTHOR"); +var status = vars.get("$field.STATUS"); + + + +//if (author == user and status == active) OR user is of role "academy" allow edit +var cond = ( + ( + KnowledgeUtils.trimAndUp(author) === KnowledgeUtils.trimAndUp(user) + && ( KnowledgeUtils.trimAndUp(status) === KnowledgeUtils.trimAndUp($KeywordRegistry.discussionStatus$acitve().slice(0))) + ) + || + KnowledgeUtils.isAcademy(user) +); + +/* + * ( + author === user + && + status === $KeywordRegistry.discussionStatus$acitve() +); + */ + +result.string(cond); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/iconIdProcess.js b/entity/KnowledgeDiscussion_entity/iconIdProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f86b12ac2a9815380d0355d333a56acb87083bb0 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/iconIdProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.ICON")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ea4631c51b75573cd3141a5fd97c8c8060fc5f42 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/contentProcess.js @@ -0,0 +1,14 @@ +import("JditoFilter_lib"); +import("KnowledgeManagement_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); + +var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); +var filterCondition = new FilterSqlTranslator(vars.get("$local.filter"), "KNOWLEDGEDISCUSSION").getSqlCondition(); + +var discussions = KnowledgeDiscussion.getInstance(kId); +var retData = discussions.buildCompleteTree(filterCondition, idValues).data; +result.object(retData); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..8493a27873be85550c508c18b535f6ddb7844ad4 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onDelete.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeDiscussion.getInstance(vars.get("$field.KNOWLEDGEMANAGEMENT_ID")) + .deleteDiscussion(vars.get("$local.uid")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..350267a4b0634fc24b6cad0370cbaf9c932cc4f3 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onInsert.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +var parent = vars.exists("$param.ParentId_param") && vars.get("$param.ParentId_param"); + +KnowledgeDiscussion.getInstance(vars.get("$param.KnowledgeId_param")) + .addDiscussion(parent + ,vars.get("$local.rowdata")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..dbd17c4439fd624cff63481d8aace9983b8a4fa5 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/onUpdate.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeDiscussion.getInstance(vars.get("$field.KNOWLEDGEMANAGEMENT_ID")) + .editDiscussion(vars.get("$local.uid") + , vars.get("$local.rowdata") + , vars.get("$local.changed")); \ No newline at end of file diff --git a/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ceb82cc107097c83f8a907f842e5ed320e255490 --- /dev/null +++ b/entity/KnowledgeDiscussion_entity/recordcontainers/jdito_knowledgediscussioncontainer/rowCountProcess.js @@ -0,0 +1,17 @@ +import("KnowledgeManagement_lib"); +import("JditoFilter_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +var kId = vars.exists("$param.KnowledgeId_param") && vars.get("$param.KnowledgeId_param"); + +var idValues = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); +var filterCondition = new FilterSqlTranslator(vars.get("$local.filter"), "KNOWLEDGEDISCUSSION").getSqlCondition(); + +if(kId) +{ + var discussions = KnowledgeDiscussion.getInstance(kId); + var retData = discussions.getDatasetCount(filterCondition, idValues); + result.object(retData); +} \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..e77405dfb6540f4ce466f897ed6bb42fd94866c1 --- /dev/null +++ b/entity/KnowledgeLink_entity/KnowledgeLink_entity.aod @@ -0,0 +1,164 @@ +<?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>KnowledgeLink_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeLink_entity/documentation.adoc</documentation> + <title>Link</title> + <iconIdProcess>%aditoprj%/entity/KnowledgeLink_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Links</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>KNOWLEDGELINKID</name> + <usePermissions v="false" /> + </entityField> + <entityField> + <name>ROW_ID</name> + <title>Dataset</title> + <consumer>Objects</consumer> + <linkedContextProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js</linkedContextProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + <title>Type</title> + <consumer>Contexts</consumer> + <displayValueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGEMENT_ID</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_NEW</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Contexts</name> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>ActivityLinkable</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Objects</name> + <children> + <entityParameter> + <name>Entity_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> + </entityConsumer> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>ByKnowledgeId</name> + <targetContextField>OBJECT_TYPE</targetContextField> + <targetIdField>ROW_ID</targetIdField> + <documentation>%aditoprj%/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <expose v="false" /> + </entityParameter> + </children> + <dependencies> + <entityDependency> + <name>c3ed10c1-db55-4e55-9c18-2b8d400df033</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>LinksByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <conditionProcess>%aditoprj%/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <linkInformation> + <linkInformation> + <name>aea9524a-589e-47df-87d7-5f79519eb135</name> + <tableName>KNOWLEDGELINK</tableName> + <primaryKey>KNOWLEDGELINKID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>KNOWLEDGELINK.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>KNOWLEDGELINK.DATE_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGELINKID.value</name> + <recordfield>KNOWLEDGELINK.KNOWLEDGELINKID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENT_ID.value</name> + <recordfield>KNOWLEDGELINK.KNOWLEDGEMANAGEMENT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + <recordfield>KNOWLEDGELINK.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ROW_ID.value</name> + <recordfield>KNOWLEDGELINK.ROW_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>KNOWLEDGELINK.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>KNOWLEDGELINK.USER_NEW</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeLink_entity/documentation.adoc b/entity/KnowledgeLink_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..32310ca526d16e0c87a4db78a1ef86dfeb15b45d --- /dev/null +++ b/entity/KnowledgeLink_entity/documentation.adoc @@ -0,0 +1 @@ +This entity is used to manage links to other objects, that are read from ObjectProxy_entity via a consumer \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..94bf48727d7cf920859494f4f7a35b058a4c90b1 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/byknowledgeid/documentation.adoc @@ -0,0 +1 @@ +Delivers all links to other objects that are linked to a knowledge entry \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f9bd2052348245b216ddc07324deaab863cbf1e1 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2fc9c2258e740f035482eaf127d1268e24a7cf48 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d21371587c7b477fd47c83652d1f061f6450f0a5 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/knowledgemanagement_id/valueProcess.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +result.string( + ( + vars.exists("$param.KnowledgeManagementId_param") + && vars.get("$this.value") == null + && vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + ) + ? vars.getString("$param.KnowledgeManagementId_param") + : "" +); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js b/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3922264dc37d0431952c91c91192f7c422453e7e --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/object_type/displayValueProcess.js @@ -0,0 +1,7 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Context_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.get("$field.OBJECT_TYPE")) + result.string(ContextUtils.getTitle(vars.get("$field.OBJECT_TYPE"))); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7f9d49710e5f4b78cca4b7c0fa61bf80d015daf6 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/objects/children/entity_param/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("Context_lib"); +import("system.result"); + +result.string(ContextUtils.getEntity(vars.get("$field.OBJECT_TYPE"))); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js b/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3dbbcf620a10c6c02d3326da49ece763bf738dc5 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/row_id/displayValueProcess.js @@ -0,0 +1,11 @@ +import("system.neon"); +import("system.vars"); +import("system.db"); +import("system.result"); +import("Context_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.ROW_ID")) { + result.string(""); +} else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { + result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.ROW_ID")))); +} \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js b/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d868fe097f20bc5d880af358b27fdea7a2c86063 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/row_id/linkedContextProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Context_lib"); + +result.string(ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE"))) \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d0d7b9894d5d7d012f144c21f5d2747652d67534 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..444094080244a63d3d5b1d099b3a1e40df9730b8 --- /dev/null +++ b/entity/KnowledgeLink_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(vars.get("$sys.user")); \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/iconIdProcess.js b/entity/KnowledgeLink_entity/iconIdProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..07e66a14ebd280538d18ad5fa3958dd44f28903b --- /dev/null +++ b/entity/KnowledgeLink_entity/iconIdProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Context_lib"); + +result.string("TEXT:" + ContextUtils.getContextName(vars.get("$field.OBJECT_TYPE"))) \ No newline at end of file diff --git a/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ba94f4a6e340e9367aa0d46741c5c0dac78d7949 --- /dev/null +++ b/entity/KnowledgeLink_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,10 @@ +import("Sql_lib"); +import("system.vars"); +import("system.result"); + +var localId = (vars.exists("$local.idvalue")) ? vars.get("$local.idvalue") : null; + +var cond = newWhereIfSet("KNOWLEDGELINK.KNOWLEDGEMANAGEMENT_ID", "$param.KnowledgeManagementId_param") + .andIfSet("KNOWLEDGELINK.KNOWLEDGELINKID", localId); + +result.string(cond.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..3a8e46df4e9a2abe34e632740db8f66c0a082da0 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/KnowledgeManagementTagList_entity.aod @@ -0,0 +1,50 @@ +<?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>KnowledgeManagementTagList_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/documentation.adoc</documentation> + <contentTitleProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js</contentTitleProcess> + <recordContainer>JDito_TagList</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>NAME</name> + </entityField> + <entityProvider> + <name>CompleteList</name> + <documentation>%aditoprj%/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>85925baa-5edc-4908-804e-f7ec4c5a2a0c</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>CompleteTagList</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_TagList</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js</contentProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>NAME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js b/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..28fd67de270b497ba718dd4e91766bd22936f67e --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.NAME")); \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/documentation.adoc b/entity/KnowledgeManagementTagList_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..d2eef458abade304a5c07db9ebbdff5e83879704 --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/documentation.adoc @@ -0,0 +1 @@ +The entity provides a complete list of all existing tags and is consumed where tags can be chosen \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..d26c90a04d79b44a90c99cc2fdbafb008ea7fcbe --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/entityfields/completelist/documentation.adoc @@ -0,0 +1 @@ +provides a complete list of all possible tags, so they can be chosen when you add tags \ No newline at end of file diff --git a/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js b/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..65e0462c8e4605032d2d8e19aa5040c68131c4af --- /dev/null +++ b/entity/KnowledgeManagementTagList_entity/recordcontainers/jdito_taglist/contentProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.logging"); +import("KnowledgeManagement_lib"); +import("system.result"); + +var res = KnowledgeManagementTagsModel.getInstance().getPossibleTags(KnowledgeUtils.getLocalIdValue()).array; + +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..94e8106d88dd3b8f4f1b2205b0d9d5b300bc8bb2 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/KnowledgeManagementTags_entity.aod @@ -0,0 +1,78 @@ +<?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>KnowledgeManagementTags_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/documentation.adoc</documentation> + <recordContainer>JDito_KnowledgeManagementKeywords</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>ByKnowledgeManagementId</name> + <documentation>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc</documentation> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <mandatory v="true" /> + </entityParameter> + </children> + <dependencies> + <entityDependency> + <name>8d86a61b-0fe3-44c4-a512-e044c990fded</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>TagsByKnowledgeId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>TAG</name> + <title>Tag</title> + <consumer>CompleteTagList</consumer> + <textInputAllowed v="true" /> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityConsumer> + <name>CompleteTagList</name> + <state>EDITABLE</state> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTagList_entity</entityName> + <fieldName>CompleteList</fieldName> + </dependency> + </entityConsumer> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>JDito_KnowledgeManagementKeywords</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js</onDelete> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TAG.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TAG.displayValue</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagementTags_entity/documentation.adoc b/entity/KnowledgeManagementTags_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..ca20973196d16e0261b5acb7b6f4af869f56b496 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/documentation.adoc @@ -0,0 +1,5 @@ +This entity represents the tags of a knowledge entry and handles adding, editing and deleting of linked tags + +If a tag, which doesn't exist yet is entered, the tag is created and then added to the knowledge entry + +Always fill KnowledgeManagementId_param \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..76bdf00546188f3a4331b2508e472c51b94cb94b --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/entityfields/byknowledgemanagementid/documentation.adoc @@ -0,0 +1,3 @@ +This provider delivers the list of tags of a knowledge entry + +KnowledgeManagementId_param has to be filled, otherwise it won't work \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..26d516e5a813889ed49009c0c827198157570267 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/entityfields/tag/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +result.string(new SqlBuilder().select("TAG").from("KNOWLEDGETAG").where("KNOWLEDGETAG.KNOWLEDGETAGID", "$field.TAG").cell()); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d48540b541b3e965acf2ad16d45b0be587ab0672 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/contentProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); +import("system.db"); +import("KnowledgeManagement_lib"); +import("system.text"); +import("system.net"); + +var idValue = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + +result.object(KnowledgeManagementTagsModel.getInstance() + .collectTags(vars.get("$param.KnowledgeManagementId_param"), idValue) + .data); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..8d94951f9666ef9c8606f1c15476d9bd2617350f --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onDelete.js @@ -0,0 +1,8 @@ +import("system.logging"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +KnowledgeManagementTagsController + .getInstance(vars.get("$param.KnowledgeManagementId_param")) + .deleteTag(vars.get("$local.uid"), vars.get("$local.rowdata")) \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..410d6308dafe094e63fc9feccac11bac7fa74ce8 --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onInsert.js @@ -0,0 +1,17 @@ +import("system.db"); +import("system.neon"); +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); +//You have to access this object in Array notation, cause the Keys are like "FIELD.value", +//if you do variable.FIELD.value, you get an error "Cannot find property value of undefined" +//Because FIELD doesn't exist within the object, but "FIELD.value" does... +var rowData = vars.get("$local.rowdata"); + +//UID of this entity is being used for the attribute relation +var attrRelationId = vars.get("$local.uid"); +var knowledgeId = vars.get("$param.KnowledgeManagementId_param"); + +KnowledgeManagementTagsController + .getInstance(knowledgeId) + .addTag(attrRelationId, rowData); \ No newline at end of file diff --git a/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..e60c40d6f32af12e6b137ef1a2e067a0c213231e --- /dev/null +++ b/entity/KnowledgeManagementTags_entity/recordcontainers/jdito_knowledgemanagementkeywords/onUpdate.js @@ -0,0 +1,13 @@ +import("system.db"); +import("KnowledgeManagement_lib"); +import("system.logging"); +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var data = vars.get("$local.rowdata"); +var knowledgeId = vars.get("$param.KnowledgeManagementId_param"); + +KnowledgeManagementTagsController + .getInstance(knowledgeId) + .editTag(data["UID.value"], data); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..93e235fcee3100efa34cbea44a49489448453b71 --- /dev/null +++ b/entity/KnowledgeManagement_entity/KnowledgeManagement_entity.aod @@ -0,0 +1,504 @@ +<?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>KnowledgeManagement_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeManagement_entity/documentation.adoc</documentation> + <icon>VAADIN:ACADEMY_CAP</icon> + <title>Knowledge</title> + <grantUpdateProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/KnowledgeManagement_entity/grantDeleteProcess.js</grantDeleteProcess> + <contentTitleProcess>%aditoprj%/entity/KnowledgeManagement_entity/contentTitleProcess.js</contentTitleProcess> + <afterOperatingState>%aditoprj%/entity/KnowledgeManagement_entity/afterOperatingState.js</afterOperatingState> + <useFavorites v="true" /> + <iconIdProcess>%aditoprj%/entity/KnowledgeManagement_entity/iconIdProcess.js</iconIdProcess> + <titlePlural>Knowledge entries</titlePlural> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>KNOWLEDGEMANAGEMENTID</name> + </entityField> + <entityField> + <name>TITLE</name> + <title>Title</title> + <mandatory v="true" /> + </entityField> + <entityField> + <name>CONTENT</name> + <title>Content</title> + <contentType>HTML</contentType> + <outputFormat></outputFormat> + <mandatory v="true" /> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>CONTENTDECODED</name> + <title>Text content</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AUTHOR_CONTACT_ID</name> + <title>Author</title> + <consumer>PersonContacts</consumer> + <linkedContext>Person</linkedContext> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>DATE_NEW</name> + <title>Created on</title> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + <outputFormat>dd.MM.yyyy HH:mm</outputFormat> + <inputFormat>dd.MM.yyyy HH:mm</inputFormat> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DATE_EDIT</name> + <title>Edited on</title> + <contentType>DATE</contentType> + <resolution>SECOND</resolution> + <outputFormat>dd.MM.yyyy HH:mm</outputFormat> + <inputFormat>dd.MM.yyyy HH:mm</inputFormat> + <state>READONLY</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js</valueProcess> + <onValueChangeTypes> + <element>MASK</element> + <element>PROCESS</element> + <element>PROCESS_SETVALUE</element> + </onValueChangeTypes> + </entityField> + <entityField> + <name>USER_NEW</name> + <title>Created by</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>USER_EDIT</name> + <title>Edited by</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TYPE</name> + <title>Type</title> + <consumer>KeywordKnowledgeType</consumer> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>htmlView</name> + <title>Content</title> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>TagsByKnowledgeId</name> + <refreshParent v="true" /> + <state>EDITABLE</state> + <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js</onValidation> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeManagementTags_entity</entityName> + <fieldName>ByKnowledgeManagementId</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>DiscussionsByKnowledgeId</name> + <refreshParent v="true" /> + <children> + <entityParameter> + <name>KnowledgeId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeDiscussion_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> + </entityConsumer> + <entityProvider> + <name>Provider</name> + <documentation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc</documentation> + </entityProvider> + <entityConsumer> + <name>PersonContacts</name> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordKnowledgeType</name> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPublish</name> + <children> + <entityParameter> + <name>ContainerName_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>indexTag</name> + </entityField> + <entityConsumer> + <name>LinkedDocuments</name> + <children> + <entityParameter> + <name>AssignmentTable_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>AssignmentRowId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> + </entityConsumer> + <entityActionField> + <name>openEntryAsMail</name> + <title>send as mail</title> + <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isSelectionAction v="true" /> + <state>INVISIBLE</state> + </entityActionField> + <entityConsumer> + <name>LinksByKnowledgeId</name> + <refreshParent v="true" /> + <children> + <entityParameter> + <name>KnowledgeManagementId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>ByKnowledgeId</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>LastChange</name> + <title>Last change</title> + <contentType>DATE</contentType> + </entityField> + <entityConsumer> + <name>LogHistories</name> + <children> + <entityParameter> + <name>tablenames_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> + </entityConsumer> + <entityActionField> + <name>exportHTML_action</name> + <title>Export HTML</title> + <onActionProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js</onActionProcess> + <iconId>NEON:EXPORT</iconId> + <tooltip>Exports the knowledge entry as a html file</tooltip> + </entityActionField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>KNOWLEDGEMANAGEMENT_OBJECTTYPE</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>binaryContents</name> + <contentType>FILE</contentType> + </entityField> + <entityField> + <name>isNewsMark</name> + <title>News</title> + <contentType>BOOLEAN</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>notificationMark</name> + <title>Notification</title> + <description>Oh Hi Mark</description> + <contentType>BOOLEAN</contentType> + <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js</stateProcess> + </entityField> + <entityParameter> + <name>isDashlet_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>KnowledgeRoles</name> + <stateProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js</onValidation> + <children> + <entityParameter> + <name>KnowledgeManagement_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PublishLevelRoles_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>KnowledgeRole_entity</entityName> + <fieldName>KnowledgeRole</fieldName> + </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> + <children> + <entityParameter> + <name>ObjectId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>RowId_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>RESPONSIBLE_CONTACT_ID</name> + <title>Responsible</title> + <consumer>PersonContacts</consumer> + <linkedContext>Person</linkedContext> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>PUBLISH</name> + <title>Publishing level</title> + <consumer>KeywordPublish</consumer> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js</displayValueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <isRequireContainerFiltering v="true" /> + <conditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <orderClauseProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js</orderClauseProcess> + <onDBInsert>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <linkInformation> + <linkInformation> + <name>9d4a7198-a4d1-45b3-867f-bf12cd558274</name> + <tableName>KNOWLEDGEMANAGEMENT</tableName> + <primaryKey>KNOWLEDGEMANAGEMENTID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>AUTHOR_CONTACT_ID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTENT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.CONTENT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>CONTENTDECODED.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.CONTENTDECODED</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_EDIT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.DATE_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.DATE_NEW</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENTID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TITLE.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.TITLE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TYPE.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.TYPE</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_EDIT.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.USER_EDIT</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>USER_NEW.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.USER_NEW</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>AUTHOR_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>LastChange.value</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TYPE.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + <consumerMapping> + <name>KnowledgeRoles</name> + <filterConditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js</filterConditionProcess> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + <filtertype>BASIC</filtertype> + </consumerMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.RESPONSIBLE_CONTACT_ID</recordfield> + <columnAlias></columnAlias> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>RESPONSIBLE_CONTACT_ID.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js</expression> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PUBLISH.value</name> + <recordfield>KNOWLEDGEMANAGEMENT.PUBLISH</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>PUBLISH.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + <filterExtensions> + <filterExtension> + <name>TagFilter</name> + <title>Tag</title> + <contentType>TEXT</contentType> + <filterValuesProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js</filterValuesProcess> + <filterConditionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js</filterConditionProcess> + <filtertype>BASIC</filtertype> + </filterExtension> + </filterExtensions> + </dbRecordContainer> + <indexRecordContainer> + <name>indexSearchKnowledgebase</name> + <configMode>INDEXGROUP_DEFINITION</configMode> + <patternExtensionProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js</patternExtensionProcess> + <indexRecordAlias>Data_alias</indexRecordAlias> + <query>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js</query> + <subProcess>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js</subProcess> + <affectedTables> + <element>KNOWLEDGEMANAGEMENT</element> + <element>KNOWLEDGETAGLINK</element> + </affectedTables> + <affectedIds>%aditoprj%/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js</affectedIds> + <title>Knowledgebase</title> + <indexFieldMappings> + <indexRecordSystemFieldMapping> + <name>#UID</name> + </indexRecordSystemFieldMapping> + <indexRecordMultilingualSystemFieldMapping> + <name>#TITLE</name> + </indexRecordMultilingualSystemFieldMapping> + <indexRecordMultilingualSystemFieldMapping> + <name>#DESCRIPTION</name> + </indexRecordMultilingualSystemFieldMapping> + <indexRecordFieldMapping> + <name>KNOWLEDGEMANAGEMENTID.value</name> + <systemField>UID</systemField> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>TITLE.value</name> + <indexFieldType>TEXT</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>CONTENTDECODED.value</name> + <indexFieldType>TEXT</indexFieldType> + </indexRecordFieldMapping> + <indexRecordFieldMapping> + <name>indexTag.value</name> + </indexRecordFieldMapping> + <indexRecordSystemFieldMapping> + <name>#SUB_GROUP</name> + </indexRecordSystemFieldMapping> + <indexRecordFieldMapping> + <name>binaryContents.value</name> + <isStored v="false" /> + <isMultiValued v="true" /> + </indexRecordFieldMapping> + </indexFieldMappings> + </indexRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeManagement_entity/afterOperatingState.js b/entity/KnowledgeManagement_entity/afterOperatingState.js new file mode 100644 index 0000000000000000000000000000000000000000..e94e7d5272132f8c3301112c3135e50713f25686 --- /dev/null +++ b/entity/KnowledgeManagement_entity/afterOperatingState.js @@ -0,0 +1,52 @@ +import("Util_lib"); +import("system.tools"); +import("system.neon"); +import("system.entities"); +import("NewsSystem_lib"); +import("system.vars"); + +if(vars.exists("$field.isNewsMark") && Utils.toBoolean(vars.get("$field.isNewsMark"))) +{ + if(vars.exists("$context.setNotificationMark") + && vars.get("$context.setNotificationMark")) + { + var roles = []; + + /* + * We need a solution for the following problem: + * we need every child role of a parent Role like PROJECT_ADITO because nobody has PROJECT_ADITO but the rest is a child of the parent. + * Maybe a tools. method to get them. Currently I don't know how it translates to the prod system. + * Testing locally works. + */ + + + + var config = entities.createConfigForLoadingConsumerRows() + .consumer("KnowledgeRoles") + .fields(["ROLES"]); + + var roleData = entities.getRows(config); //get the rows of the consumer + + if(roleData) + { + roles = roleData.map(function(row) //check each role of this object and push it into an array + { + return row["ROLES"]; + }); + } + + var users = NewsSystem.getUsersWithRoles(roles); //get users with the given role(s) + + var content = vars.get("$field.CONTENTDECODED"); + if (content.length > 72) + content = content.substring(0, 69) + " ..."; + if(users.length > 0) + NewsSystem.createNewsNotification(content //create notification + ,vars.get("$field.TITLE") + ,users + ,vars.get("$field.KNOWLEDGEMANAGEMENTID") + ); + } + + vars.set("$context.setNotificationMark", false); //set it 'false' so that it doesn't trigger again if it shouldn't +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/contentTitleProcess.js b/entity/KnowledgeManagement_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e3e512ab73cf4d9d8e1512be1786a2b9e238678b --- /dev/null +++ b/entity/KnowledgeManagement_entity/contentTitleProcess.js @@ -0,0 +1,3 @@ +import("system.result"); +import("system.vars"); +result.string(vars.get("$field.TITLE")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/documentation.adoc b/entity/KnowledgeManagement_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..db9002b6103f2b1f3c04f5b55d9b2e457ee0ef17 --- /dev/null +++ b/entity/KnowledgeManagement_entity/documentation.adoc @@ -0,0 +1,3 @@ +The main entity of the knowledgemanagement + +manages the content and consumes discussions, links, log history, documents \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ec6e27b3d071457bd455ca6ab815da0f869eef57 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/displayValueProcess.js @@ -0,0 +1,14 @@ +import("Sql_lib"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) +{ + result.string(newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID", "$this.value") + .cell() + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..73c38e80b263ed787621164e87482c7f668e818b --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/author_contact_id/valueProcess.js @@ -0,0 +1,6 @@ +import("Employee_lib"); +import("system.vars"); +import("system.result"); + +if(vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..818f75bf6ec997d9f6f9ffe300194e382ddc62c3 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/contentdecoded/valueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("system.text"); + +result.string(text.html2text(vars.get("$field.CONTENT"))); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f3fbb8b9401628f02e0b80a2fc5f1bbfc1930f73 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/date_edit/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) + result.string(vars.get("$sys.date")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6f4ffab7ba7cc9791b3aced43d5d7e2cd82a2aa0 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/date_new/valueProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +import("system.datetime"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.DATE_NEW")) +{ + result.string(datetime.date()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/discussionsbyknowledgeid/children/knowledgeid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..942f98b2ed41cc2cfcf0277e60b211d2daf1bd9e --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/exporthtml_action/onActionProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.neon"); +import("system.util"); + +neon.download(util.encodeBase64String(vars.get("$field.htmlView")), vars.get("$field.TITLE").replace(/\s/gi,"_") + ".html"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..245543678a57558455aea5101b36cea344b11c5c --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/htmlview/valueProcess.js @@ -0,0 +1,12 @@ +import("KnowledgeManagement_lib"); +import("Html_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.result"); + +var ret = KnowledgeManagementModel.getInstance(vars.getString("$field.CONTENT"), vars.get("$field.KNOWLEDGEMANAGEMENTID")) + .style(KeywordUtils.getAttributeRelation(vars.get("$field.TYPE"), $KeywordRegistry.knowledgeType(), "contentCssStylesheet")) + .replaceAditoLinks().buildHTML(); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..eff63fa32ee42ccf61dcae9afeea57fb4864458f --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/isnewsmark/valueProcess.js @@ -0,0 +1,18 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT && !vars.getString("$this.value")) +{ + var knowledgeId = vars.get("$field.KNOWLEDGEMANAGEMENTID"); + + var isTagSet = newSelect("'1'") + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG", "KNOWLEDGETAG.KNOWLEDGETAGID = KNOWLEDGETAGLINK.KNOWLEDGETAG_ID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", knowledgeId) + .and("KNOWLEDGETAG.TAG", "News") + .cell(); + + result.string(isTagSet ? 1 : 0); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..777264ed660b668a661dfec46b03ec6341fcab96 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/keywordknowledgetype/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.knowledgeType()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ecc5b27a744bfa1fff0af2b064a6dae550036d5d --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/keywordpublish/children/containername_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("KeywordRegistry_basic"); + +result.string($KeywordRegistry.knowledgePublishLevel()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c437e7b5c35a70149bcea392a1faa1cc442cf687 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgemanagement_objecttype/valueProcess.js @@ -0,0 +1,2 @@ +import("system.result"); +result.string("KnowledgeManagement"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/knowledgemanagement_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..08d815d9cd504d45325bc5040dd96fe8d4449652 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/children/publishlevelroles_param/valueProcess.js @@ -0,0 +1,28 @@ +import("KeywordRegistry_basic"); +import("system.vars"); +import("system.result"); + +//return a one dimensional array for the excluded roles from the publish level +//$KeywordRegistry.knowledgePublishLevel$internal() + +var level = vars.get("$field.PUBLISH"); + +var res = _getExcludedRoles() + +result.object(res); + + +function _getExcludedRoles() +{ + switch (level) + { + case $KeywordRegistry.knowledgePublishLevel$internal(): + return ["PROJECT_Partner", "PROJECT_Subcontractor", "PROJECT_ExternMitarbeiter"]; + case $KeywordRegistry.knowledgePublishLevel$partner(): + return ["PROJECT_ExternMitarbeiter"]; + case $KeywordRegistry.knowledgePublishLevel$public(): + return [""]; + default: + return ["PROJECT_Partner", "PROJECT_Subcontractor", "PROJECT_ExternMitarbeiter"]; + } +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..d9426aaf28843c5935941bddb88cfb36616d51a9 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/onValidation.js @@ -0,0 +1,15 @@ +import("system.translate"); +import("Util_lib"); +import("system.result"); +import("system.logging"); +import("system.vars"); +import("Entity_lib"); + +vars.get("$field.KnowledgeRoles.insertedRows"); +vars.get("$field.KnowledgeRoles.changedRows"); +vars.get("$field.KnowledgeRoles.deletedRows"); + +var data = EntityConsumerRowsHelper.getCurrentConsumerRows("KnowledgeRoles", ["ROLES"]) + +if(Utils.toBoolean(vars.get("$field.isNewsMark")) && data[0].ROLES == "" ) + result.string(translate.text("No role(s) selected")) \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8a02cf00398251e14d9b58e0a664045736438a66 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/knowledgeroles/stateProcess.js @@ -0,0 +1,11 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); +import("system.neon"); + +//make invisible if no news +if(!Utils.toBoolean(vars.get("$field.isNewsMark"))) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_EDITABLE); + diff --git a/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmentrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3057b0f452d61c97e96fc53ac7646b879e28ebaf --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linkeddocuments/children/assignmenttable_param/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("KNOWLEDGEMANAGEMENT"); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/linksbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d31541c503b349b3c03366a9722a35b13b46747b --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); + +var res = []; +res.push({id: vars.get("$field.KNOWLEDGEMANAGEMENTID"), tableNames: ["KNOWLEDGEMANAGEMENT","AB_ATTRIBUTERELATION","KNOWLEDGEDISCUSSION"]}); + +res = JSON.stringify(res);//currently only strings can be passed as param +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js b/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1c027a16a263da243a61108bce9a006eaeec96e7 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/notificationmark/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); +//make invisible if no news +if(vars.get("$field.isNewsMark") == false) + result.string(neon.COMPONENTSTATE_INVISIBLE); +else + result.string(neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js b/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..069f4e90fe0792cddd473a948b0114415222cecf --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/openentryasmail/onActionProcess.js @@ -0,0 +1,10 @@ +import("system.tools"); +import("Email_lib"); +import("system.vars"); +import("system.result"); + +var toSend = new Email(vars.get("$field.CONTENT")); + +toSend.setSender(tools.getUser(vars.get("$sys.user"))[tools.PARAMS][tools.CONTACTID]); +toSend.subject = "Wissen: " + vars.get("$field.TITLE"); +toSend.openMail(); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..d72ef5f67309fa7a7091cbe6e102116e123f64ea --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/provider/documentation.adoc @@ -0,0 +1 @@ +This provider is used by dashlets which set isDashlet_param \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f3b04d3586264c58bb0536c8dbd61046659bc327 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/publish/displayValueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); +import("Keyword_lib"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(KeywordUtils.getViewValue("KnowledgePublishLevel", vars.get("$this.value"))); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3ee4bee455432dab7fa7bd7310ff0c1959b12703 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/publish/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") == null) +{ + result.string($KeywordRegistry.knowledgePublishLevel$internal()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ec6e27b3d071457bd455ca6ab815da0f869eef57 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/displayValueProcess.js @@ -0,0 +1,14 @@ +import("Sql_lib"); +import("system.neon"); +import("system.vars"); +import("system.result"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value")) +{ + result.string(newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID", "$this.value") + .cell() + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..73c38e80b263ed787621164e87482c7f668e818b --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/responsible_contact_id/valueProcess.js @@ -0,0 +1,6 @@ +import("Employee_lib"); +import("system.vars"); +import("system.result"); + +if(vars.exists("$this.value") && vars.get("$this.value") == null) + result.string(EmployeeUtils.getCurrentContactId()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/children/knowledgemanagementid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..a7755c7c8e3817c1c4ce2b06c5aed3bf161cccf1 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tagsbyknowledgeid/onValidation.js @@ -0,0 +1,22 @@ +import("system.translate"); +import("system.result"); +import("system.vars"); +import("Entity_lib"); + +vars.get("$field.TagsByKnowledgeId.insertedRows"); +vars.get("$field.TagsByKnowledgeId.changedRows"); +vars.get("$field.TagsByKnowledgeId.deletedRows"); + +var tagRows = EntityConsumerRowsHelper.getCurrentConsumerRows("TagsByKnowledgeId", ["TAG"]); +var tagSet = new Set(); +var hasDuplicate = tagRows.some(function (row) +{ + var tag = row["TAG"].trim(); + if (tagSet.has(tag)) + return true; + tagSet.add(tag); + return false; +}); + +if (hasDuplicate) + result.string(translate.text("Tags can't be assigned more than once!")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cc6924394ae950c43386275dda2c8db5d7a9c0ed --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/objectid_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/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..a540967e165facb01d6e0d912f1ff0490fa3c9fa --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js @@ -0,0 +1,5 @@ +import("Context_lib"); +import("system.result"); +import("system.vars"); + +result.object([[ContextUtils.getCurrentContextId(),vars.get("$field.KNOWLEDGEMANAGEMENTID")]]); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..78c1da185830c7db84eedbde260e8a2d7df71e52 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/tasks/children/rowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.KNOWLEDGEMANAGEMENTID")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..534409e0c3a40c251eed06e5aa7bb1c1aa5221c6 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/type/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +if(vars.get("$this.value") == null) +{ + result.string($KeywordRegistry.knowledgeType$knowledgeBase()); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..101f9115ca7d48575761308d7d8403f96c241128 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/user_edit/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js b/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6dbbcb8ffdc78d1efd3836493e6c6556ac143db9 --- /dev/null +++ b/entity/KnowledgeManagement_entity/entityfields/user_new/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.USER_NEW")) +{ + result.string(vars.get("$sys.user")); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/grantDeleteProcess.js b/entity/KnowledgeManagement_entity/grantDeleteProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b91bca7d6742ca3f48aceffd0ab4c8c46d031507 --- /dev/null +++ b/entity/KnowledgeManagement_entity/grantDeleteProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("KeywordRegistry_basic"); +import("system.vars"); + +var type = vars.getString("$field.TYPE"); + +var ret = (type != $KeywordRegistry.knowledgeType$editorial()); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/grantUpdateProcess.js b/entity/KnowledgeManagement_entity/grantUpdateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b91bca7d6742ca3f48aceffd0ab4c8c46d031507 --- /dev/null +++ b/entity/KnowledgeManagement_entity/grantUpdateProcess.js @@ -0,0 +1,9 @@ +import("system.result"); +import("KeywordRegistry_basic"); +import("system.vars"); + +var type = vars.getString("$field.TYPE"); + +var ret = (type != $KeywordRegistry.knowledgeType$editorial()); + +result.string(ret); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/iconIdProcess.js b/entity/KnowledgeManagement_entity/iconIdProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..385d0165847bff5290aad71dbcf66dfe6cec0b83 --- /dev/null +++ b/entity/KnowledgeManagement_entity/iconIdProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); + +var type = vars.get("$field.TYPE.displayValue"); + +result.string("TEXT:" + type); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d73eb83fe46705ad872645c30e31657f9aea9436 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,26 @@ +import("system.logging"); +import("AttributeRegistry_basic"); +import("Sql_lib"); +import("system.vars"); +import("system.tools"); +import("system.result"); + +var cond = newWhere(); + +if(vars.exists("$param.isDashlet_param") && vars.get("$param.isDashlet_param")) //check if the parameter exists and is filled +{ + var userRoles = tools.getRoles(vars.get("$sys.user")); //get all Roles from the current User + cond.and(null //create a new condition where we check if any data sets exists with the given parameters + ,newSelect("KNOWLEDGEROLES.ROLENAME") //create a subselect for all data sets with the current user roles + .from("KNOWLEDGEROLES") + .where("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .and("KNOWLEDGEROLES.ROLENAME", userRoles, SqlBuilder.IN()), SqlBuilder.EXISTS()) + .and(null + ,newSelect("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID") + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG", "KNOWLEDGETAGLINK.KNOWLEDGETAG_ID = KNOWLEDGETAG.KNOWLEDGETAGID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .and("KNOWLEDGETAG.TAG", "News"), SqlBuilder.EXISTS()); +} + +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c05ae19af196f98abd32e4f906c9614c8050a27e --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterConditionProcess.js @@ -0,0 +1,25 @@ +import("Sql_lib"); +import("system.result"); +import("system.vars"); + +var condition = newWhere(); +var tagLinkSql = newSelect("KNOWLEDGEMANAGEMENT_ID") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID"); +var condType = SqlBuilder.EXISTS(); + +switch (vars.get("$local.comparison")) +{ + case "NOT_EQUAL": + condType = SqlBuilder.NOT_EXISTS(); + case "EQUAL": + condition.and(null, tagLinkSql.and("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", "$local.rawvalue"), condType); + break; + case "ISNULL": + condType = SqlBuilder.NOT_EXISTS(); + case "ISNOTNULL": + condition.and(null, tagLinkSql, condType); + break; +} + +result.string(condition.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b2c2c7b07ef169e69c4d169d7ab1577179140b95 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/filterextensions/tagfilter/filterValuesProcess.js @@ -0,0 +1,4 @@ +import("Sql_lib"); +import("system.result"); + +result.object(new SqlBuilder().selectDistinct(["KNOWLEDGETAGID", "TAG"]).from("KNOWLEDGETAG").orderBy("TAG").table()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..091635be04440cb3b695a6eb09172a7c54415eec --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,17 @@ +import("system.neon"); +import("system.vars"); +import("NewsSystem_lib"); +import("Util_lib"); + +var bool = Utils.toBoolean; //Alias Utils.toBoolean to bool for easier reading + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + && vars.exists("$field.isNewsMark") + && bool(vars.get("$field.isNewsMark"))) +{ + NewsSystem.setAsNews( + vars.get("$field.KNOWLEDGEMANAGEMENTID") + , bool(vars.get("$field.notificationMark")) + , bool(vars.get("$field.isNewsMark")) + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..091635be04440cb3b695a6eb09172a7c54415eec --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,17 @@ +import("system.neon"); +import("system.vars"); +import("NewsSystem_lib"); +import("Util_lib"); + +var bool = Utils.toBoolean; //Alias Utils.toBoolean to bool for easier reading + +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW + && vars.exists("$field.isNewsMark") + && bool(vars.get("$field.isNewsMark"))) +{ + NewsSystem.setAsNews( + vars.get("$field.KNOWLEDGEMANAGEMENTID") + , bool(vars.get("$field.notificationMark")) + , bool(vars.get("$field.isNewsMark")) + ); +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bc51d2191bf3857fd1120908f74afa44073e32ce --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/orderClauseProcess.js @@ -0,0 +1,8 @@ +import("system.db"); +import("system.result"); +import("Sql_lib"); + +var sortOrder = {}; +sortOrder[new SqlMaskingUtils().isNull("KNOWLEDGEMANAGEMENT.DATE_EDIT", "KNOWLEDGEMANAGEMENT.DATE_NEW")] = db.DESCENDING; + +result.object(sortOrder); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..4ed9cfc3749ec9653c2b47f8fb8fe78ed04bbfde --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/author_contact_id.displayvalue/expression.js @@ -0,0 +1,10 @@ +import("system.result"); +import("Sql_lib"); + +result.string( + newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID") + .toString() +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e518964b17a4e16412ceb51c57ad73a42d2ca7ec --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/knowledgeroles/filterConditionProcess.js @@ -0,0 +1,9 @@ +import("Sql_lib"); +import("system.vars"); +import("system.result"); + +result.string(newWhere(null, newSelect("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID") + .from("KNOWLEDGEROLES") + .where("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID = KNOWLEDGEMANAGEMENTID") + .and(vars.get("$local.condition")), SqlBuilder.EXISTS()) +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..c62b199149670a9eeee28c2257a23cc68bc36438 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/lastchange.value/expression.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Sql_lib"); + +var maskUtil = new SqlMaskingUtils(); + +result.string( maskUtil.coalesce(["DATE_EDIT","DATE_NEW"]) ); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..caefc84ff51f719625700138a42f45fe88421803 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/publish.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Keyword_lib"); +import("system.result"); + +result.string(KeywordUtils.getResolvedTitleSqlPart("KnowledgePublishLevel", "knowledgemanagement.PUBLISH")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..4ed9cfc3749ec9653c2b47f8fb8fe78ed04bbfde --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/responsible_contact_id.displayvalue/expression.js @@ -0,0 +1,10 @@ +import("system.result"); +import("Sql_lib"); + +result.string( + newSelect(new SqlMaskingUtils().concatWithSeparator(["PERSON.FIRSTNAME","PERSON.LASTNAME"])) + .from("PERSON") + .join("CONTACT", "PERSON.PERSONID = CONTACT.PERSON_ID") + .where("CONTACT.CONTACTID = KNOWLEDGEMANAGEMENT.AUTHOR_CONTACT_ID") + .toString() +); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..3f4fde9ce6da84535a3b4a822110440836cb948b --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/db/recordfieldmappings/type.displayvalue/expression.js @@ -0,0 +1,4 @@ +import("Keyword_lib"); +import("system.result"); + +result.string(KeywordUtils.getResolvedTitleSqlPart("KnowledgeType", "knowledgemanagement.TYPE")); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js new file mode 100644 index 0000000000000000000000000000000000000000..7e282414273e4d43616a68225934740b96eef5df --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/affectedIds.js @@ -0,0 +1,25 @@ +import("system.db"); +import("system.result"); +import("system.vars"); +import("IndexSearch_lib"); +import("Sql_lib"); + +var infoContainer, onUpdFn, tableName, res; + +tableName = vars.get("$local.table"); +idValue = vars.get("$local.idvalue"); + +switch (tableName) +{ + case "KNOWLEDGEMANAGEMENT": + res = [idValue]; + break; + case "KNOWLEDGETAGLINK": + res = newSelect("KNOWLEDGEMANAGEMENT_ID").from("KNOWLEDGETAGLINK").where("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", idValue).arrayColumn(); + break; +} + +if (res) { + result.object(res); +} + \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ad39e57e9cd6587861d2480f9fbde1e483008f00 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/patternExtensionProcess.js @@ -0,0 +1,11 @@ +import("system.logging"); +import("system.result"); +import("system.db"); +import("system.vars"); +import("system.tools"); + +if(tools.hasRole(vars.get("$sys.user"), "PROJECT_Support")) +{ + var filter = "( +_index_group_:KNOWLEDGE_KNOWLEDGEBASE + ( (publish_value: 2)) ) OR ( -_index_group_:KNOWLEDGE_KNOWLEDGEBASE )"; + result.string(filter) +} \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js new file mode 100644 index 0000000000000000000000000000000000000000..29d30e242c27ba5f0c73e988eb1e365e3e130b67 --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/query.js @@ -0,0 +1,32 @@ +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); +import("Sql_lib"); +import("system.SQLTYPES"); + +var sql = newSelect([ + "km1.KNOWLEDGEMANAGEMENTID", "km1.TITLE", new SqlMaskingUtils().castLob("CONTENTDECODED", 255), "km1.KNOWLEDGEMANAGEMENTID", + "km1.TITLE", "km1.CONTENTDECODED", "KNOWLEDGETAG.TAG", + SqlBuilder.caseWhen(null, newSelect("KNOWLEDGEMANAGEMENTID") + .from("KNOWLEDGEMANAGEMENT") + .join("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID") + .join("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .where("KNOWLEDGETAG.TAG", "News") + .and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = km1.KNOWLEDGEMANAGEMENTID"), SqlBuilder.EXISTS()) + .thenString("News") + .when(newWhere("TYPE = '1'")) + .thenString("Knowledgebase") + .when(newWhere("TYPE = '2'")) + .thenString("Editorial") + .when(newWhere("TYPE = '3'")) + .thenString("Business process"), + "''" + ]).from("KNOWLEDGEMANAGEMENT", "km1") + .leftJoin("KNOWLEDGETAGLINK", "KNOWLEDGEMANAGEMENTID = KNOWLEDGEMANAGEMENT_ID") + .leftJoin("KNOWLEDGETAG", "KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .orderBy("KNOWLEDGEMANAGEMENTID"); + +if (vars.exists("$local.idvalue")) + querySelect.whereIfSet("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", "$local.idvalue"); + +result.string(sql.toString()); \ No newline at end of file diff --git a/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..197f0230b508d44c9d127d406d015ffa5af2af8a --- /dev/null +++ b/entity/KnowledgeManagement_entity/recordcontainers/indexsearchknowledgebase/subProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.result"); +import("KnowledgeManagement_lib"); + +var res = KnowledgeIndexHelper.getInstance(vars.get("$local.idvalue"),vars.get("$local.data")).getDocumentsFromContent().data; + +result.object(res); \ No newline at end of file diff --git a/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..aa197ca8d2a1e231c8296d8cf579cc435fc5a060 --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/KnowledgeNewsFeed_entity.aod @@ -0,0 +1,29 @@ +<?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>KnowledgeNewsFeed_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeNewsFeed_entity/documentation.adoc</documentation> + <title>Feed</title> + <recordContainer>recordContainer</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>HTMLContent</name> + <title>Content</title> + <contentType>HTML</contentType> + <valueProcess>%aditoprj%/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js</valueProcess> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>recordContainer</name> + <alias>Data_alias</alias> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeNewsFeed_entity/documentation.adoc b/entity/KnowledgeNewsFeed_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..32d6227c6622e61f9f6dbaf1d02fb6379b22aedf --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/documentation.adoc @@ -0,0 +1,3 @@ += Knowledge Newsfeed + +This entity is used for the creation of the newsfeed in ADITO. A HTML is generated and will be displayed in the client \ No newline at end of file diff --git a/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js b/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ed8c1c9f31549780f8859e20ac982bbd123b4837 --- /dev/null +++ b/entity/KnowledgeNewsFeed_entity/entityfields/htmlcontent/valueProcess.js @@ -0,0 +1,34 @@ +import("KeywordRegistry_basic"); +import("system.vars"); +import("Keyword_lib"); +import("Html_lib"); +import("system.entities"); +import("system.result"); + +var config = entities.createConfigForLoadingRows() + .addParameter("isDashlet_param", true) + .entity("KnowledgeManagement_entity") + .fields(["TITLE", "CONTENT", "AUTHOR_CONTACT_ID.displayValue", "AUTHOR_CONTACT_ID"]) + .ignorePermissions(true) + .count(10); + +var data = entities.getRows(config); + +var htmlContent = ""; + +if(data) +{ + data.forEach(function(row) + { + htmlContent += "<H2>" + row["TITLE"] + "</H2>\n"; + htmlContent += "<h3>" + row["AUTHOR_CONTACT_ID.displayValue"] + "</h3>"; + htmlContent += "<p>" + row["CONTENT"] + "</p>\n"; + htmlContent += "<hr>\n"; + }); +} + +var css = KeywordUtils.getAttributeRelation($KeywordRegistry.knowledgeType$knowledgeBase(), $KeywordRegistry.knowledgeType(), "contentCssStylesheet"); + +var htmlBody = SimpleHtmlObject.getInstance().body(htmlContent).style(css).toString(); + +result.string(htmlBody); diff --git a/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..fe16e94a9f9fc50735030a2c181ef8cf5e38c9af --- /dev/null +++ b/entity/KnowledgeRole_entity/KnowledgeRole_entity.aod @@ -0,0 +1,113 @@ +<?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>KnowledgeRole_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/KnowledgeRole_entity/documentation.adoc</documentation> + <title>Knowledge Role</title> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>ROLES</name> + <title>Roles</title> + <consumer>NewsRole</consumer> + <displayValueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js</displayValueProcess> + </entityField> + <entityConsumer> + <name>NewsRole</name> + <children> + <entityParameter> + <name>ExcludeRoles_param</name> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Role_entity</entityName> + <fieldName>FilterRolesWithoutPermission</fieldName> + </dependency> + </entityConsumer> + <entityProvider> + <name>KnowledgeRole</name> + <lookupIdfield>ROLES</lookupIdfield> + <documentation>%aditoprj%/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc</documentation> + <titlePlural>KnowledgeRoles</titlePlural> + <recordContainer>db</recordContainer> + <dependencies> + <entityDependency> + <name>404bd92c-6222-4b58-95b4-d7f657b62c82</name> + <entityName>KnowledgeManagement_entity</entityName> + <fieldName>KnowledgeRoles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>KNOWLEDGEROLEID</name> + </entityField> + <entityField> + <name>KNOWLEDGEMANAGMENT_ID</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TARGETCONTEXT</name> + <valueProcess>%aditoprj%/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>KnowledgeManagement_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>CurrentRoles_param</name> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityParameter> + <name>PublishLevelRoles_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <hasDependentRecords v="true" /> + <conditionProcess>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <title>Knowledge Roles</title> + <linkInformation> + <linkInformation> + <name>16e6127e-67c6-4dce-b2e9-4b2b951dbcd4</name> + <tableName>KNOWLEDGEROLES</tableName> + <primaryKey>KNOWLEDGEROLESID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>ROLES.value</name> + <recordfield>KNOWLEDGEROLES.ROLENAME</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEROLEID.value</name> + <recordfield>KNOWLEDGEROLES.KNOWLEDGEROLESID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>KNOWLEDGEMANAGMENT_ID.value</name> + <recordfield>KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ROLES.displayValue</name> + <expression>%aditoprj%/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js</expression> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/KnowledgeRole_entity/documentation.adoc b/entity/KnowledgeRole_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..6b291538809455a2847b23e14f93cbec08598048 --- /dev/null +++ b/entity/KnowledgeRole_entity/documentation.adoc @@ -0,0 +1,5 @@ +This entity handles the roles, that are linked to a knowledge entry +The roles are used to create notifications and newsfeed entries for specific roles when the switches are set + +KnowledgeManagement_param needs the id of a knowledge entry +PublishLevelRoles_param takes an array of role names which get excluded from the role list \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..10f790fb648c0909495dad89e55599a351001947 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/knowledgemanagment_id/valueProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +result.string(vars.get("$param.KnowledgeManagement_param")); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..781e59c75976c40ab98ceb4e76b174e38d31a69e --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/knowledgerole/documentation.adoc @@ -0,0 +1,2 @@ +KnowledgeManagement_param needs the id of a knowledge entry +PublishLevelRoles_param takes an array of role names which get excluded from the role list \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..937bc3cba4424062e8c688c103d0e2489cfc1756 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/newsrole/children/excluderoles_param/valueProcess.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("system.result"); + +//RIP Richy +var roles = JSON.parse(vars.get("$param.PublishLevelRoles_param")); +var roleArray = ["XMPP_OK", "INTERNAL_WEBSERVICE", "INTERNAL_CANARY", "INTERNAL_EVERYONE", "INTERNAL_GROUPWARE", "INTERNAL_SNMP", "INTERNAL_DESIGNER", "INTERNAL_TECHNICAL", "INTERNAL_DASHBOARDSTOREADMIN", ] + .concat(roles); //concat the excluded roles with the other roles +var res = JSON.stringify(roleArray); //stringify the array + + + +result.string(res); //return \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..34cda7e17c14ba4b8810207343c1e6ded197f955 --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/roles/displayValueProcess.js @@ -0,0 +1,11 @@ +import("system.result"); +import("system.vars"); +import("system.tools"); + +var allRoles = tools.getAllRoles(["PROJECT", "CUSTOM", "INTERNAL"], true); +var roleTitle = vars.get("$field.ROLES"); + +if (roleTitle in allRoles) + roleTitle = allRoles[roleTitle][0]; + +result.string(roleTitle); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js b/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c9d54057e5ae103d74826aa989acee631deced0d --- /dev/null +++ b/entity/KnowledgeRole_entity/entityfields/targetcontext/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("KnowledgeManagement"); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js b/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9148537a0db5d39cf5fea801d8659efda903cab3 --- /dev/null +++ b/entity/KnowledgeRole_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Sql_lib"); + +var cond = newWhereIfSet("KNOWLEDGEROLES.KNOWLEDGEMANAGEMENT_ID", "$param.KnowledgeManagement_param"); + +result.string(cond.toString()); \ No newline at end of file diff --git a/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js b/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..c694956db20b566bf4454fe665a548b1acf24ac9 --- /dev/null +++ b/entity/KnowledgeRole_entity/recordcontainers/db/recordfieldmappings/roles.displayvalue/expression.js @@ -0,0 +1,7 @@ +import("system.result"); +import("NewsSystem_lib"); + +var resultSubSQL = NewsSystem.getDisplayValue(); + +result.string(resultSubSQL); + diff --git a/entity/Language_entity/Language_entity.aod b/entity/Language_entity/Language_entity.aod index 2afefb3f30bcad00355211100c7b648e58118ddf..6c74b7472d2e9dc5877912344d0593fb0cc9edaf 100644 --- a/entity/Language_entity/Language_entity.aod +++ b/entity/Language_entity/Language_entity.aod @@ -33,6 +33,12 @@ <lookupIdfield>ISO3</lookupIdfield> <documentation>%aditoprj%/entity/Language_entity/entityfields/iso3name/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ExcludedIds_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>471b099a-03ab-4c49-8372-729b1e789ecc</name> @@ -95,17 +101,17 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedIds_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityProvider> <name>ISO3NameFiltered</name> <lookupIdfield>ISO3</lookupIdfield> <documentation>%aditoprj%/entity/Language_entity/entityfields/iso3namefiltered/documentation.adoc</documentation> + <children> + <entityParameter> + <name>ExcludedIds_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>2df9d0ed-c26b-4166-9667-786a55146e05</name> @@ -114,12 +120,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedIds_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludedIds_param</name> diff --git a/entity/Language_entity/recordcontainers/db/conditionProcess.js b/entity/Language_entity/recordcontainers/db/conditionProcess.js index 9e0e3a69ce20255f94f5f90179b9dbc93ac2c006..f36ae3e0f8d6f0cd9d8ae5df3c1dbce72112dfad 100644 --- a/entity/Language_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Language_entity/recordcontainers/db/conditionProcess.js @@ -10,5 +10,4 @@ if (vars.getString("$param.ExcludedIds_param")) cond.andIfSet("AB_LANGUAGE.ISO3", JSON.parse(vars.getString("$param.ExcludedIds_param")), SqlBuilder.NOT_IN()) } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()) \ No newline at end of file diff --git a/entity/LeadLog_entity/LeadLog_entity.aod b/entity/LeadLog_entity/LeadLog_entity.aod index ca424a627c7dd8b54e6c90a2383f372981e6c5d3..c5d2fde11e07a8ac46e81662fc89aa749460597f 100644 --- a/entity/LeadLog_entity/LeadLog_entity.aod +++ b/entity/LeadLog_entity/LeadLog_entity.aod @@ -61,11 +61,6 @@ </entityField> <entityConsumer> <name>LogDocuments</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentName_param</name> @@ -80,6 +75,11 @@ <valueProcess>%aditoprj%/entity/LeadLog_entity/entityfields/logdocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Lead_entity/Lead_entity.aod b/entity/Lead_entity/Lead_entity.aod index 6a8a9fed94965be2a51c7c27cef30ed371dc7631..1889a635743be724c4dc634e2c9a4bca56e66828 100644 --- a/entity/Lead_entity/Lead_entity.aod +++ b/entity/Lead_entity/Lead_entity.aod @@ -77,17 +77,17 @@ </entityField> <entityConsumer> <name>ContactId</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>Contact</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Lead_entity/entityfields/contactid/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contact</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEADDUP_STATUS</name> @@ -108,11 +108,6 @@ </entityField> <entityConsumer> <name>KeywordDupStatus</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -120,6 +115,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod index f985150a0e1cb55d7858aa3540456b609937f07d..f525794d52d51a5b529dc78b5247db6196e626d9 100644 --- a/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod +++ b/entity/LeadimportMappingAssistant_entity/LeadimportMappingAssistant_entity.aod @@ -70,17 +70,17 @@ </entityParameter> <entityConsumer> <name>KeywordImportFields</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/LeadimportMappingAssistant_entity/entityfields/keywordimportfields/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Leadimport_entity/Leadimport_entity.aod b/entity/Leadimport_entity/Leadimport_entity.aod index e5241d647c840387bb8afa77a68ae3282a8532b1..141e0c172a3f2b0d90e9efc1bff354503ff3d12e 100644 --- a/entity/Leadimport_entity/Leadimport_entity.aod +++ b/entity/Leadimport_entity/Leadimport_entity.aod @@ -10,6 +10,7 @@ <grantDelete v="true" /> <grantDeleteProcess>%aditoprj%/entity/Leadimport_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Leadimport_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Leadimport_entity/contentDescriptionProcess.js</contentDescriptionProcess> <iconId>NEON:IMPORT</iconId> <imageProcess>%aditoprj%/entity/Leadimport_entity/imageProcess.js</imageProcess> <titlePlural>Lead Imports</titlePlural> @@ -17,6 +18,14 @@ <entityFields> <entityProvider> <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>451f0237-27f9-4018-a165-9bb4857d6565</name> + <entityName>Object_entity</entityName> + <fieldName>Leadimports</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>NAME</name> @@ -96,17 +105,17 @@ </entityField> <entityConsumer> <name>KeywordImportStatus</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/keywordimportstatus/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Leadimport_Empl</name> @@ -145,25 +154,20 @@ </entityProvider> <entityConsumer> <name>ImportFieldID</name> - <dependency> - <name>dependency</name> - <entityName>ImportField_Entity</entityName> - <fieldName>LeadImportIds</fieldName> - </dependency> <children> <entityParameter> <name>LeadImportID</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/importfieldid/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentC</name> <dependency> <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <entityName>ImportField_Entity</entityName> + <fieldName>LeadImportIds</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentC</name> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -174,28 +178,28 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/documentc/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistoryC</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistoryC</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/loghistoryc/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -206,15 +210,15 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/tasks/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Leadimport_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -225,6 +229,11 @@ <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityField> <name>UID</name> @@ -257,45 +266,45 @@ </entityActionField> <entityConsumer> <name>LeadTempC</name> + <children> + <entityParameter> + <name>LeadImportId</name> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadtempc/children/leadimportid/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>LeadTemp_entity</entityName> <fieldName>LeadTempP</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LeadC</name> <children> <entityParameter> <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadtempc/children/leadimportid/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadc/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LeadC</name> <dependency> <name>dependency</name> <entityName>Lead_entity</entityName> <fieldName>LeadP</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LeadLogC</name> <children> <entityParameter> <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadc/children/leadimportid/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadlogc/children/leadimportid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LeadLogC</name> <dependency> <name>dependency</name> <entityName>LeadLog_entity</entityName> <fieldName>LeadLogP</fieldName> </dependency> - <children> - <entityParameter> - <name>LeadImportId</name> - <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadlogc/children/leadimportid/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityActionField> <name>LeadimportReset</name> @@ -307,17 +316,17 @@ </entityActionField> <entityConsumer> <name>LeadimportMappings</name> - <dependency> - <name>dependency</name> - <entityName>LeadimportMappingAssistant_entity</entityName> - <fieldName>LeadimportMapping</fieldName> - </dependency> <children> <entityParameter> <name>Leadimport_ID_param</name> <valueProcess>%aditoprj%/entity/Leadimport_entity/entityfields/leadimportmappings/children/leadimport_id_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LeadimportMappingAssistant_entity</entityName> + <fieldName>LeadimportMapping</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEADIMPORT_OBJECTTYPE</name> diff --git a/entity/Leadimport_entity/contentDescriptionProcess.js b/entity/Leadimport_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5fa0cb58bc2af5ffc2520ddbfde0595a93c67cb9 --- /dev/null +++ b/entity/Leadimport_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("system.translate"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file 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/Letter_entity/Letter_entity.aod b/entity/Letter_entity/Letter_entity.aod index 5e357ba666061841bd96270267b9be9f7dc091ca..6140a981138f2c49c09a60f45e731f0685e65c3e 100644 --- a/entity/Letter_entity/Letter_entity.aod +++ b/entity/Letter_entity/Letter_entity.aod @@ -22,11 +22,6 @@ </entityField> <entityConsumer> <name>DocumentTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -37,6 +32,11 @@ <valueProcess>%aditoprj%/entity/Letter_entity/entityfields/documenttemplates/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> diff --git a/entity/LogHistory_entity/LogHistory_entity.aod b/entity/LogHistory_entity/LogHistory_entity.aod index 6499fc00e002942363effcb7f67696ae5849e409..b7abfc4219a2b8478201416b55233d42b5207737 100644 --- a/entity/LogHistory_entity/LogHistory_entity.aod +++ b/entity/LogHistory_entity/LogHistory_entity.aod @@ -39,6 +39,12 @@ <entityProvider> <name>LogHistoryProvider</name> <documentation>%aditoprj%/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc</documentation> + <children> + <entityParameter> + <name>tablenames_param</name> + <documentation>%aditoprj%/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc</documentation> + </entityParameter> + </children> <dependencies> <entityDependency> <name>23dbfa51-5340-48e3-bd60-e0dcb7d44ad3</name> diff --git a/entity/LogHistory_entity/documentation.adoc b/entity/LogHistory_entity/documentation.adoc index 20fa16faa475bdb8b0cd35d7ddb11fe847f73e0e..b38670d44b72f1f2236c7f594c3f1935458061a3 100644 --- a/entity/LogHistory_entity/documentation.adoc +++ b/entity/LogHistory_entity/documentation.adoc @@ -2,5 +2,92 @@ Entity for the log entries in the individual modules. -This entity is based on the `AB_LOGHISTORY`-table. Note that this database table has no primary key associated to it. -This is because it is only a pit of log-record and not necessary. \ No newline at end of file +This entity is based on the `AB_LOGHISTORY`-table. + +== configure Loghistory + +:DATA_ALIAS: Data_alias +:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor + +=== the concept +//TODO: extend the concept description +Stoarge: Database-table: `AB_LOGHISTORY` + +Collecting Data: +---- +Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor +---- + +Data is collected and pre-translated. Therefor only one Language can be applied for logging. +Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged. + +=== prerequisites + +Auditing has to be activated for all tables you want to log. + +.prerequisites of enabling Audit in general +* Auditing has to be enabled in your Server +* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+) +* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_ +** property `idColumn` has to be set (a primary key is needed therefore) +** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need) + + +=== activate writing into loghistory + +Assuming that the + +* required database-tables exist +* JDito-processes already exist +* audit has been activated in general + +you are ready to configure _which_ column shall be logged and _how_. + +==== configure columns for logging + +There are several properties (custom and pre-exisiting) that can be set for configuring the logging: + +.configuration options per column +[options="header"] +|======= +|property |purpose |property-type +|+title+ |text that is used to display which column has been modified|pre-exisiting +|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan +|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String +|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting +|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String +|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan +|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito +|======= + ++translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind: + +* translate text if necessary via the locale-parameter +* the process is called each time a change to that column is applied - keep it fast and simple + +.translate4Log example (skip imports for better readability) +[source,javascript] +---- +var params = Translate4LogParams.load();// <1> +var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2> +result.string(countryName);// <3> +---- +<1> load the parameters in a easy and fail-proof way +<2> locale is passed to the resolving function and in that function a translation is applied +<3> always return a string + +==== configure a consumer for retrieving the loghistory + +.Example for the +tablenames_param+ process +---- +import("system.vars"); +import("system.result"); +import("Context_lib"); + +var res = []; +res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); +res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); + +res = JSON.stringify(res); +result.object(res); +---- \ No newline at end of file diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..3051d2df3f9362543da5347d37f36446eb4a924f --- /dev/null +++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/children/tablenames_param/documentation.adoc @@ -0,0 +1,15 @@ += tablenames_param + +.Example +---- +import("system.vars"); +import("system.result"); +import("Context_lib"); + +var res = []; +res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); +res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); + +res = JSON.stringify(res); +result.object(res); +---- \ No newline at end of file diff --git a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc index 2712d5d5c6d4ad5349fc4f6539190503d2efa92d..4088dd1c6fa530aa4a30a142f1eb47d5ce7a7c1e 100644 --- a/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc +++ b/entity/LogHistory_entity/entityfields/loghistoryprovider/documentation.adoc @@ -1,3 +1,5 @@ += LogHistoryProvider + Generic provider for log history entries. A filter for given _tablenames_ is applied, see the documentation of the parameters for an example. \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..d2df3a1cd3f9fc1b4d60743b0143d100153d3191 --- /dev/null +++ b/entity/MSTTeamLink_entity/MSTTeamLink_entity.aod @@ -0,0 +1,114 @@ +<?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>MSTTeamLink_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeamLink_entity/documentation.adoc</documentation> + <siblings> + <element>Salesproject_entity</element> + <element>Member_entity</element> + </siblings> + <afterUiInit>%aditoprj%/entity/MSTTeamLink_entity/afterUiInit.js</afterUiInit> + <recordContainer>db</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>MST_TEAMLINKID</name> + </entityField> + <entityField> + <name>MST_TEAM_ID</name> + <title>Team</title> + <mandatory v="true" /> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>OBJECT_ROWID</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>OBJECT_TYPE</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Teams</name> + <dependency> + <name>dependency</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>TeamsByIdAndName</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>TEAMNAME</name> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>TEAM_ID_AND_NAME</name> + <documentation>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc</documentation> + <title>Team</title> + <consumer>Teams</consumer> + <valueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js</valueProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js</displayValueProcess> + </entityField> + </entityFields> + <recordContainers> + <dbRecordContainer> + <name>db</name> + <alias>Data_alias</alias> + <fromClauseProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js</fromClauseProcess> + <conditionProcess>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js</conditionProcess> + <onDBInsert>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js</onDBInsert> + <onDBUpdate>%aditoprj%/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js</onDBUpdate> + <linkInformation> + <linkInformation> + <name>178230f3-4ee4-4ec0-a7f6-4f4ddddbbb22</name> + <tableName>MST_TEAMLINK</tableName> + <primaryKey>MST_TEAMLINKID</primaryKey> + <isUIDTable v="true" /> + <readonly v="false" /> + </linkInformation> + <linkInformation> + <name>53378325-f195-4eb3-9e22-68fd769eef03</name> + <tableName>MST_TEAM</tableName> + <primaryKey>MST_TEAMID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> + </linkInformation> + <recordFieldMappings> + <dbRecordFieldMapping> + <name>MST_TEAMLINKID.value</name> + <recordfield>MST_TEAMLINK.MST_TEAMLINKID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.value</name> + <recordfield>MST_TEAMLINK.MST_TEAM_ID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_ROWID.value</name> + <recordfield>MST_TEAMLINK.OBJECT_ROWID</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>OBJECT_TYPE.value</name> + <recordfield>MST_TEAMLINK.OBJECT_TYPE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>TEAMNAME.value</name> + <recordfield>MST_TEAM.TEAMNAME</recordfield> + </dbRecordFieldMapping> + </recordFieldMappings> + </dbRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamLink_entity/afterUiInit.js b/entity/MSTTeamLink_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..bac4e960d87d6ae60ae5e5d5f2fc506fdd3d191b --- /dev/null +++ b/entity/MSTTeamLink_entity/afterUiInit.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.neon"); +import("system.entities"); + +//reload the teams once, because the cache might not be up-to-date +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) +{ + entities.invalidateCache("MSTTeam_entity", "jdito"); + entities.getRows(entities.createConfigForLoadingConsumerRows() + .consumer("Teams") + .fields(["UID", "TEAMNAME", "TEAMID_AND_NAME", "ISARCHIVED", "DESCRIPTION"]) + ); +} \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/documentation.adoc b/entity/MSTTeamLink_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..55fcd72aba98ec0011c6562a4a81014327899e72 --- /dev/null +++ b/entity/MSTTeamLink_entity/documentation.adoc @@ -0,0 +1,3 @@ += MSTTeamLink_entity + +This entity represents a relation between a MST team and an object (e. g. a Sales Project). \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8b66b4de6f181006ed9464bc5c730db279e5af42 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/mst_team_id/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Util_lib"); + +var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME")); +if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) + result.string(teamIdAndName[0]); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..53123b405da6e47e653fc29b6ea5b1d7ab0b7aba --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/object_rowid/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7f34d7fdb9049c4c3427fb40b45a320b1585d5b0 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/object_type/valueProcess.js @@ -0,0 +1,6 @@ +import("system.neon"); +import("system.vars"); +import("system.result"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) + result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ada1bccad1d8dba906a5f5db4d9289e0abf3f44f --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/displayValueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TEAMNAME")); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..7ef07b42d0e7f4ddef718cf1cf07362e36866b23 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/documentation.adoc @@ -0,0 +1,7 @@ += TEAM_ID_AND_NAME + +This field is used for selecting a MST team for the teamLink. Because we need both the id and the name from the team, it can't be selected +directly in the MST_TEAM_ID field, which contains only the id (and fetching the name afterwards using the id would be rather slow). + +In new- or edit-mode, the two fields MST_TEAM_ID and TEAMNAME pull their values from this field. In view-mode, this field gets the value +from MST_TEAM_ID and TEAMNAME, because only these two fields are connected to the recordContainer. \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..94638c9fe9031b798104127c1426fc2d471dca36 --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/team_id_and_name/valueProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +//in view-mode, load the values from the fields that are connected to the recordcontainer +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$sys.recordstate") != neon.OPERATINGSTATE_EDIT) + result.string(JSON.stringify([vars.get("$field.MST_TEAM_ID"), vars.get("$field.TEAMNAME")])); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d3f581dba2d01626cb9050634dac3abba981f6ab --- /dev/null +++ b/entity/MSTTeamLink_entity/entityfields/teamname/valueProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); +import("Util_lib"); + +var teamIdAndName = Utils.parseJSON(vars.get("$field.TEAM_ID_AND_NAME")); +if (teamIdAndName && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) + result.string(teamIdAndName[1]); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ad0a18104e1291790bd33463603537bce7c5914b --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/conditionProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("Sql_lib"); + +var condition = newWhereIfSet("MST_TEAMLINK.OBJECT_ROWID", "$param.ObjectRowId_param") + .andIfSet("MST_TEAMLINK.OBJECT_TYPE", "$param.ObjectType_param"); + +result.string(condition.toString(SqlBuilder.NORESULT_CONDITION())); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4457ba9b19fa0da6c133ce39565cb83164888cfb --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/fromClauseProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("MST_TEAMLINK left join MST_TEAM on MST_TEAMLINK.MST_TEAM_ID = MST_TEAM.MST_TEAMID"); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..bf45fb336010b2db0a4ddc1e03a35ce009fb2c15 --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBInsert.js @@ -0,0 +1,12 @@ +import("system.vars"); +import("MSTeams_lib"); + +var teamLinkId = vars.get("$local.uid"); +var rowData = vars.get("$local.rowdata"); +//if the linked context is configured to have just one teamLink but the object already has a teamLink, the old teamLink will be deleted +MSTeamsUtils.purgeCorruptTeamLinks(rowData["MST_TEAMLINK.OBJECT_ROWID"], rowData["MST_TEAMLINK.OBJECT_TYPE"], teamLinkId); + +MSTeamsUtils.insertTeamIfMissing({ + teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"], + teamName: rowData["MST_TEAM.TEAMNAME"] +}); \ No newline at end of file diff --git a/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..61769345ec3f8bb71aad2e776267b4f5f009f185 --- /dev/null +++ b/entity/MSTTeamLink_entity/recordcontainers/db/onDBUpdate.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("MSTeams_lib"); + +var rowData = vars.get("$local.rowdata"); + +MSTeamsUtils.insertTeamIfMissing({ + teamId: rowData["MST_TEAMLINK.MST_TEAM_ID"], + teamName: rowData["MST_TEAM.TEAMNAME"] +}); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..72dead10e1dc47cf5fe80fb31d4493667fd40677 --- /dev/null +++ b/entity/MSTTeamMember_entity/MSTTeamMember_entity.aod @@ -0,0 +1,158 @@ +<?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>MSTTeamMember_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeamMember_entity/documentation.adoc</documentation> + <title>Member</title> + <siblings /> + <titlePlural>Members</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + <dependencies> + <entityDependency> + <name>335d30c4-7beb-4dcb-8a0f-de85108530a9</name> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>CONTACT_ID</name> + <title>Members</title> + <consumer>ProjectMembers</consumer> + <linkedContextProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess> + <mandatory v="true" /> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js</displayValueProcess> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>UpnsOfMembers_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>MailsOfExtern_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>ProjectMembers</name> + <children> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>TeamMemberProvider</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>ISEXTERN</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>MEMBERNAME</name> + </entityField> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>MembersOfTeam</name> + <documentation>%aditoprj%/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>37854fde-c4ae-4f56-82df-14385717f82e</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>TeamMembers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>ROLE</name> + <title>Role</title> + <mandatory v="true" /> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js</mandatoryProcess> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js</stateProcess> + </entityField> + <entityField> + <name>INVITE</name> + <title>Invitation</title> + <mandatoryProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js</mandatoryProcess> + <dropDownProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js</dropDownProcess> + <stateProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js</stateProcess> + </entityField> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityField> + <name>AZUREID</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AZUREUPN</name> + <state>INVISIBLE</state> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>AZURE_DATA</name> + <valueProcess>%aditoprj%/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js</valueProcess> + </entityField> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <hasDependentRecords v="true" /> + <onInsert>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js</onDelete> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MEMBERNAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ROLE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ROLE.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CONTACT_ID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CONTACT_ID.displayValue</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ISEXTERN.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeamMember_entity/documentation.adoc b/entity/MSTTeamMember_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..31059321e3f9951411240a778c077d89bda07fbc --- /dev/null +++ b/entity/MSTTeamMember_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTTeamMember +============ + +== Overview == +MSTTeamMember is used to get all members of a MST team + +== A MSTTeamMember consists of some modules: == +- MSTTeamMember itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2df756b62a28fb058c3cec8a2df5de3090bf9538 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azure_data/valueProcess.js @@ -0,0 +1,16 @@ +import("system.result"); +import("system.neon"); +import("system.tools"); +import("system.vars"); +import("Employee_lib"); + +var contactId = vars.get("$field.CONTACT_ID"); +var user = EmployeeUtils.getUserByContactId(contactId); +var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : ""; +var azureUpn = user ? user[tools.PARAMS][tools.TEAMS_AZUREUPN] : ""; + +var azureData = { + azureId: azureId, + azureUpn: azureUpn +}; +result.string(JSON.stringify(azureData)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7744184c730b891e88e88ada811a017db109b03d --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azureid/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(azureData ? azureData.azureId : ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..554d4e727325955acb211567d4ea1878a534128c --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/azureupn/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(azureData ? azureData.azureUpn : ""); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e038c4ba3609a69417debdc9c43185e7051438ff --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/contact_id/displayValueProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("system.vars"); +import("Contact_lib"); + +if (vars.get("$field.MEMBERNAME")) + result.string(vars.get("$field.MEMBERNAME")); +else +{ + result.string(ContactUtils.getTitleByContactId(vars.get("$field.CONTACT_ID"))); +} \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c02451c808e121fce9dea7537331dc3fa0dd6e02 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/contact_id/linkedContextProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if (vars.get("$field.CONTACT_ID")) + result.string("Person"); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..53c48b1aa60c14977805717d383efb2668f5bd64 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/contact_id/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +result.string(vars.get("$field.MEMBERNAME") ? neon.COMPONENTSTATE_READONLY : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0a4ec38e3c77cac49e9a94b463d4c483a63715a7 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["true", translate.text("Invite")], + ["false", translate.text("Don't invite")] +]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..488ee5dc7e0ad5e6122271731fa275245d7057e6 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/mandatoryProcess.js @@ -0,0 +1,5 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +result.string(Utils.toBoolean(vars.get("$field.ISEXTERN"))); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..37feecaa37dcd3ffed35221ff2e9157477fa6f4e --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/invite/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$field.MEMBERNAME") || vars.get("$field.ISEXTERN") != "true" ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c2bd7034a52ed887060a47de48959ab0db7792f5 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/isextern/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("Util_lib"); +import("system.vars"); + +var azureData = Utils.parseJSON(vars.get("$field.AZURE_DATA")); +result.string(!azureData || !(azureData.azureId || azureData.azureUpn)); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..f9cc1fa6dc82eea3b61b20c766c074e38ac518f1 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/membersofteam/documentation.adoc @@ -0,0 +1,3 @@ +Provider MembersOfTeam + +Provides the members of a team \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f21aa5c2a735e552ff099c71fed0cd5fd88cbca1 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objectrowid_param/valueProcess.js @@ -0,0 +1,13 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); + +var rowId = vars.get("$param.ObjectRowId_param"); +if (!rowId) +{ + rowId = newSelect("OBJECT_ROWID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.MST_TEAM_ID", "$param.MSTTeamId_param") + .cell(); +} +result.string(rowId); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..95c8514f3bbc2804547c47b50ec222c09aec3f59 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/projectmembers/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..97558334115b6199684018810a38d54788a0e56b --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["owner", translate.text("Owner")], + ["member", translate.text("Member")] +]); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..79bef7b2ca07a9f35c95021eedcee8f89d68f873 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/mandatoryProcess.js @@ -0,0 +1,5 @@ +import("Util_lib"); +import("system.vars"); +import("system.result"); + +result.string(!Utils.toBoolean(vars.get("$field.ISEXTERN"))); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f76be28d47e7adee58f41d88a7a7993bda575de0 --- /dev/null +++ b/entity/MSTTeamMember_entity/entityfields/role/stateProcess.js @@ -0,0 +1,15 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); +import("system.logging") + +var state = neon.COMPONENTSTATE_EDITABLE; +if (vars.get("$field.ISEXTERN") == "true") +{ + if (!vars.get("$field.MEMBERNAME")) + state = neon.COMPONENTSTATE_INVISIBLE; + else + state = neon.COMPONENTSTATE_READONLY; +} + +result.string(state); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..4f615a675a9df54c018305fd39293403cd7f852f --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,44 @@ +import("system.translate"); +import("system.teams"); +import("system.result"); +import("system.vars"); +import("MSTeams_lib"); + +var teamId = vars.get("$param.MSTTeamId_param"); +var allMembers = teamId ? teams.getAllMembers(teamId) : {}; +var impersoAzureId = MSTeamsUtils.getImpersoAzureId(); +if (impersoAzureId in allMembers) //don't display the imperso user + delete allMembers[impersoAzureId]; + +var memberIds = vars.get("$local.idvalues") || Object.keys(allMembers); +var owners = teamId ? teams.getAllOwners(teamId) : {}; +var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); +var memberArray = []; + +memberArray = memberIds.map(function (memberId) +{ + var role = "guest"; + var roleName = translate.text("Guest"); + if (memberId in owners) + { + role = "owner"; + roleName = translate.text("Owner"); + } + else if (memberId in memberContactIds) + { + role = "member"; + roleName = translate.text("Member"); + } + + return [ + memberId, + allMembers[memberId] || "", + role, + roleName, + memberContactIds[memberId] || "", + allMembers[memberId] || "", + !(memberId in memberContactIds) + ]; +}); + +result.object(memberArray); \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..03dee90e18e2a92a7f745165aedf7168e54e7f60 --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1,2 @@ +//deletion is done in the MSTTeam_entity +var e = "e"; \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..c776217e3402eab8c1c1dceed828a5cc17e1d380 --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,2 @@ +//inserting is done in the MSTTeam_entity +var dummy = "dummy"; \ No newline at end of file diff --git a/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..1df92b6ad9e44d0f84ee47f4e96b94fffa54721f --- /dev/null +++ b/entity/MSTTeamMember_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1,2 @@ +//updating is done in the MSTTeam_entity +var dummy = "dummy"; \ No newline at end of file diff --git a/entity/MSTTeam_entity/MSTTeam_entity.aod b/entity/MSTTeam_entity/MSTTeam_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..f7675657fed04c925d381d928cb6d43ce6d14d20 --- /dev/null +++ b/entity/MSTTeam_entity/MSTTeam_entity.aod @@ -0,0 +1,159 @@ +<?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>MSTTeam_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTTeam_entity/documentation.adoc</documentation> + <grantUpdateProcess>%aditoprj%/entity/MSTTeam_entity/grantUpdateProcess.js</grantUpdateProcess> + <grantDeleteProcess>%aditoprj%/entity/MSTTeam_entity/grantDeleteProcess.js</grantDeleteProcess> + <contentTitleProcess>%aditoprj%/entity/MSTTeam_entity/contentTitleProcess.js</contentTitleProcess> + <afterUiInit>%aditoprj%/entity/MSTTeam_entity/afterUiInit.js</afterUiInit> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityField> + <name>TEAMNAME</name> + <title>Name</title> + <mandatory v="true" /> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js</valueProcess> + </entityField> + <entityField> + <name>DESCRIPTION</name> + <title>Description</title> + <contentType>LONG_TEXT</contentType> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/stateProcess.js</stateProcess> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/description/valueProcess.js</valueProcess> + </entityField> + <entityParameter> + <name>TeamName_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>Description_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>TeamMembers</name> + <stateProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js</stateProcess> + <onValidation>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js</onValidation> + <children> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectRowId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>MembersOfTeam</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>TEAMID_AND_NAME</name> + </entityField> + <entityField> + <name>ISARCHIVED</name> + <title>Archived</title> + <dropDownProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js</dropDownProcess> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Channels</name> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> + </entityConsumer> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityParameter> + <name>SalesprojectCode_param</name> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> + <entityProvider> + <name>TeamsByIdAndName</name> + <lookupIdfield>TEAMID_AND_NAME</lookupIdfield> + <documentation>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc</documentation> + <children> + <entityParameter> + <name>UseCache_param</name> + <valueProcess>%aditoprj%/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> + <dependencies> + <entityDependency> + <name>e48136a2-5f66-4399-903a-cd1363fa30c6</name> + <entityName>MSTTeamLink_entity</entityName> + <fieldName>Teams</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>UseCache_param</name> + <expose v="true" /> + </entityParameter> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <isFilterable v="true" /> + <isRequireContainerFiltering v="true" /> + <contentProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <onInsert>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js</onInsert> + <onUpdate>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js</onUpdate> + <onDelete>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js</onDelete> + <cacheType>SESSION</cacheType> + <cacheKeyProcess>%aditoprj%/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TEAMNAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>TEAMID_AND_NAME.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>DESCRIPTION.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>ISARCHIVED.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTTeam_entity/afterUiInit.js b/entity/MSTTeam_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..018d0a4733e5cbbe12c222b5dad06af43196a371 --- /dev/null +++ b/entity/MSTTeam_entity/afterUiInit.js @@ -0,0 +1,20 @@ +import("system.entities"); +import("system.vars"); +import("system.neon"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + var memberLoadConfig = entities.createConfigForLoadingRows() + .fields(["CONTACT_ID"]) + .entity("Member_entity") + .provider("Links") + .addParameter("ObjectRowId_param", vars.get("$param.ObjectRowId_param")) + .addParameter("ObjectType_param", vars.get("$param.ObjectType_param")); + + entities.getRows(memberLoadConfig).forEach(function (member) + { + neon.addRecord("TeamMembers", { + "CONTACT_ID": member["CONTACT_ID"] + }); + }) +} \ No newline at end of file diff --git a/entity/MSTTeam_entity/contentTitleProcess.js b/entity/MSTTeam_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ada1bccad1d8dba906a5f5db4d9289e0abf3f44f --- /dev/null +++ b/entity/MSTTeam_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TEAMNAME")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/documentation.adoc b/entity/MSTTeam_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..1d8ddac0f359514ccb2d7bef6dc161e4227d6036 --- /dev/null +++ b/entity/MSTTeam_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTTeam +============ + +== Overview == +MSTTeam is used to display the linked team. create a team, edit a team + +== A MSTTeam consists of some modules: == +- MSTTeam itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..16c85500b5355a72548030867e3d300661e9d4aa --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/description/stateProcess.js b/entity/MSTTeam_entity/entityfields/description/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..18f779e6910541c7a8e75facfe14a54cfc74458b --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/description/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/description/valueProcess.js b/entity/MSTTeam_entity/entityfields/description/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..561cefe7b56371783c388b4e0c233197a6a96d73 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/description/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.Description_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.Description_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f77d640ef1d32a67d4fd3e8da7bcff5531277f05 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/isarchived/dropDownProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.translate"); + +result.object([ + ["true", translate.text("Yes")], + ["false", translate.text("No")] +]); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7b7daa293fe35f6acc203b39e6cb67bb7a987151 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/mstteamid_param/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("system.result"); +import("system.neon"); + +if (vars.get("$sys.recordstate") != neon.OPERATINGSTATE_NEW && vars.get("$field.TEAMID_AND_NAME")) + result.string(vars.get("$field.UID")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dc0d70ccbe710b96a2f13dfac668a5b705e5aae1 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objectrowid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectRowId_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..95c8514f3bbc2804547c47b50ec222c09aec3f59 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/children/objecttype_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js new file mode 100644 index 0000000000000000000000000000000000000000..0629031e507398d3f502728590e967582d74fc50 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/onValidation.js @@ -0,0 +1,11 @@ +import("Entity_lib"); +import("system.result"); +import("system.translate"); + +var members = EntityConsumerRowsHelper.getCurrentConsumerRows("TeamMembers", ["ROLE"]); +var hasOwner = members.some(function (member) +{ + return member["ROLE"] == "owner"; +}); +if (!hasOwner) + result.string(translate.text("The team must have at least one owner")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1c53ca6a0df2f0f9fe9edc13efa4226f1b936c5f --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teammembers/stateProcess.js @@ -0,0 +1,6 @@ +import("Util_lib"); +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(Utils.toBoolean(vars.get("$field.ISARCHIVED")) ? neon.COMPONENTSTATE_INVISIBLE : neon.COMPONENTSTATE_EDITABLE); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..18f779e6910541c7a8e75facfe14a54cfc74458b --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamname/stateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("system.neon"); + +result.string(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_READONLY); \ No newline at end of file diff --git a/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..31b659fe1728c550134884ef7bdbf98fed4110d2 --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamname/valueProcess.js @@ -0,0 +1,6 @@ +import("system.result"); +import("system.neon"); +import("system.vars"); + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$param.TeamName_param") && vars.get("$this.value") == null) + result.string(vars.get("$param.TeamName_param")); \ No newline at end of file diff --git a/entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js b/entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js similarity index 100% rename from entity/DocumentTemplatePlaceOfUse_entity/entityfields/contextdocumenttemplateplaceofuse/children/getallcontexts_param/valueProcess.js rename to entity/MSTTeam_entity/entityfields/teamsbyidandname/children/usecache_param/valueProcess.js diff --git a/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..84522789b1b5dd1e014bd0db3e6c4c7b740f7b3a --- /dev/null +++ b/entity/MSTTeam_entity/entityfields/teamsbyidandname/documentation.adoc @@ -0,0 +1,4 @@ += TeamsByIdAndName + +The provider uses a JSON containing [teamId, teamName] as the lookupIdField for cases when both values are needed. +Because the request that loads the MST teams can be slow, the records will be cached if this provider is used. \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantDeleteProcess.js b/entity/MSTTeam_entity/grantDeleteProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3fad7d06d00a3a204f60e7ef811caa4e1fd000c5 --- /dev/null +++ b/entity/MSTTeam_entity/grantDeleteProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("MSTeams_lib"); + +result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/MSTTeam_entity/grantUpdateProcess.js b/entity/MSTTeam_entity/grantUpdateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3fad7d06d00a3a204f60e7ef811caa4e1fd000c5 --- /dev/null +++ b/entity/MSTTeam_entity/grantUpdateProcess.js @@ -0,0 +1,5 @@ +import("system.result"); +import("system.vars"); +import("MSTeams_lib"); + +result.string(vars.get("$field.TEAMID_AND_NAME") && vars.get("$field.ISARCHIVED") != "true" && MSTeamsUtils.isUserTeamOwner(vars.get("$field.UID"))); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f9c2f6bbd9ddf14c6cd10228138b52546d0184b7 --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/cacheKeyProcess.js @@ -0,0 +1,7 @@ +import("system.result"); +import("system.vars"); +import("Util_lib"); +import("CachedRecordContainer_lib"); + +if (Utils.toBoolean(vars.get("$param.UseCache_param"))) + result.string(CachedRecordContainerUtils.getCommonKey("$param.UseCache_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dccb70e0330c7d584be6a0786ea150e8eb508396 --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,65 @@ +import("system.teams"); +import("system.result"); +import("system.vars"); +import("JditoFilter_lib"); + +var lookupFilter = new FilterConditionGroup(vars.get("$local.filter")).getRow("$$$LOOKUPFIELD$$$"); +var searchValue = lookupFilter ? lookupFilter.key : null; + +var allTeams = teams.getAllTeams(searchValue || null); +var teamsArray = []; + +if (vars.get("$local.idvalues")) +{ + var teamInfoLoader = { + normalTeams : allTeams, + archivedTeams : null, + getTeamInfo : function (pTeamId) + { + if (pTeamId in this.normalTeams) + { + return { + name : this.normalTeams[pTeamId], + isArchived : false + }; + } + + if (this.archivedTeams == null) + this.archivedTeams = teams.getAllArchivedTeams(null); + + return { + name : this.archivedTeams[pTeamId] || "", + isArchived : pTeamId in this.archivedTeams + }; + } + }; + + teamsArray = vars.get("$local.idvalues").map(function (teamId) + { + var teamInfo = teamInfoLoader.getTeamInfo(teamId); + var idAndName = JSON.stringify([teamId, teamInfo.name]); + return [ + teamId, + teamInfo.name, + idAndName, + "", + teamInfo.isArchived + ]; + }); +} +else +{ + for (let teamId in allTeams) + { + var idAndName = JSON.stringify([teamId, allTeams[teamId]]); + teamsArray.push([ + teamId, + allTeams[teamId], + idAndName, + "", + false + ]); + } +} + +result.object(teamsArray); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js new file mode 100644 index 0000000000000000000000000000000000000000..ed8e457d4a824e1d4029b7640fea9804d41463cb --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onDelete.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.teams"); +import("Sql_lib"); + +var teamId = vars.get("$field.UID"); +teams.archiveTeam(teamId); +newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "1"}); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js new file mode 100644 index 0000000000000000000000000000000000000000..8a1c6e0c83d6d16ef62ed23cb2594be121eb5a0f --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onInsert.js @@ -0,0 +1,66 @@ +import("Util_lib"); +import("Communication_lib"); +import("Sql_lib"); +import("system.vars"); +import("system.teams"); +import("system.tools"); +import("Employee_lib"); +import("MSTeams_lib"); + +var rowData = vars.get("$local.rowdata"); +var teamName = rowData["TEAMNAME.value"]; +var description = rowData["DESCRIPTION.value"]; +var teamMembers = vars.get("$field.TeamMembers.insertedRows"); + +var ownerIds = []; +var internalMembers = []; +var externalMembers = []; +teamMembers.forEach(function (teamMember) +{ + var contactId = teamMember["CONTACT_ID"]; + var isExtern = Utils.toBoolean(teamMember["ISEXTERN"]); + var isInvite = Utils.toBoolean(teamMember["INVITE"]); + if (isExtern) + { + var memberEmail = CommUtil.getStandardMail(contactId); + if (memberEmail) + { + externalMembers.push( + teams.createExternalUserConfig(memberEmail) + .sendInvitation(isInvite) + ); + } + return; + } + var memberAzureId = teamMember["AZUREID"]; + var memberUpn = teamMember["AZUREUPN"]; + var isOwner = teamMember["ROLE"] == "owner"; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) + { + if (isOwner) + ownerIds.push(memberAzureId); + else + internalMembers.push(teams.createInternalUserConfig(memberAzureId)); + } +}); + +var mailNickName = StringUtils.toLowerCamelCase(teamName); //mailNickName = teamName in camel case +mailNickName = mailNickName + vars.get("$param.SalesprojectCode_param"); + +var groupConfig = teams.createGroupConfig(teamName, mailNickName, ownerIds); +if (description) + groupConfig.setDescription(description); +var teamConfig = teams.createTeamConfig(); + +var mstTeam = teams.createTeam(groupConfig, teamConfig); + +if (internalMembers.length !== 0) + teams.addInternalMembers(mstTeam.teamId, internalMembers); + +if (externalMembers.length !== 0) + teams.addExternalMembers(mstTeam.teamId, externalMembers); + +MSTeamsUtils.insertTeamIfMissing(mstTeam); +MSTeamsUtils.createTeamLink(mstTeam.teamId, vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")); \ No newline at end of file diff --git a/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js new file mode 100644 index 0000000000000000000000000000000000000000..54e7ab9ab6b4e76d9a767db9d8314b6cbb3d2dc5 --- /dev/null +++ b/entity/MSTTeam_entity/recordcontainers/jdito/onUpdate.js @@ -0,0 +1,77 @@ +import("Communication_lib"); +import("Sql_lib"); +import("system.vars"); +import("system.teams"); +import("system.tools"); +import("Employee_lib"); + +var rowData = vars.get("$local.rowdata"); +var teamId = rowData["UID.value"]; +var teamName = rowData["TEAMNAME.value"]; +var description = rowData["DESCRIPTION.value"]; +var insertedTeamMembers = vars.get("$field.TeamMembers.insertedRows"); +var changedTeamMembers = vars.get("$field.TeamMembers.changedRows"); +var deletedTeamMembers = vars.get("$field.TeamMembers.deletedRows"); + +var internalMembers = []; +var externalMembers = []; +insertedTeamMembers.forEach(function (teamMember) +{ + var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); + if (!memberUser) + { + var memberEmail = CommUtil.getStandardMail(teamMember["CONTACT_ID"]); + if (memberEmail) + { + externalMembers.push( + teams.createExternalUserConfig(memberEmail) + .sendInvitation(teamMember["INVITE"] == "true") + ); + } + return; + } + var internalUserConfigToAdd = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner"); + if (internalUserConfigToAdd) + internalMembers.push(internalUserConfigToAdd); +}); + +if (internalMembers.length !== 0) + teams.addInternalMembers(teamId, internalMembers); + +if (externalMembers.length !== 0) + teams.addExternalMembers(teamId, externalMembers); + +changedTeamMembers.forEach(function (teamMember) +{ + var memberUser = EmployeeUtils.getUserByContactId(teamMember["CONTACT_ID"]); + if (!memberUser) + return; + + var internalUserConfigToChange = _getTeamsInternalUserConfig(memberUser, teamMember["ROLE"] == "owner"); + if (internalUserConfigToChange) + teams.changeRole(teamId, internalUserConfigToChange); +}); + + +var owners = teams.getAllOwners(teamId); +var removeMembers = deletedTeamMembers.map(function (member) +{ + var isOwner = member["#UID"] in owners; + return teams.createInternalUserConfig(member["#UID"]).setOwner(isOwner); +}); + +if (removeMembers.length !== 0) + teams.removeInternalMembers(teamId, removeMembers); + +function _getTeamsInternalUserConfig(pUserObject, pAsOwner) +{ + var memberAzureId = pUserObject[tools.PARAMS][tools.TEAMS_AZUREID]; + var memberUpn = pUserObject[tools.PARAMS][tools.TEAMS_AZUREUPN]; + if (!memberAzureId && memberUpn) + memberAzureId = teams.getInternalAzureId(memberUpn); + if (memberAzureId) + { + return teams.createInternalUserConfig(memberAzureId).setOwner(pAsOwner); + } + return null; +} \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..2f279cf23fb22d886b2a3a7bce9c60edcf83206c --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/MSTeamsActivityImport_entity.aod @@ -0,0 +1,91 @@ +<?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>MSTeamsActivityImport_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsActivityImport_entity/documentation.adoc</documentation> + <siblings /> + <afterUiInit>%aditoprj%/entity/MSTeamsActivityImport_entity/afterUiInit.js</afterUiInit> + <recordContainer>dataless</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityConsumer> + <name>Messages</name> + <selectionMode>MULTI</selectionMode> + <children> + <entityParameter> + <name>Channel_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>LoadNext_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsMessage_entity</entityName> + <fieldName>Messages</fieldName> + </dependency> + </entityConsumer> + <entityField> + <name>CHANNEL_ID</name> + <title>Channel</title> + <consumer>Channels</consumer> + <state>EDITABLE</state> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>TEAM_ID</name> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js</valueProcess> + </entityField> + <entityConsumer> + <name>Channels</name> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsForTeam</fieldName> + </dependency> + </entityConsumer> + <entityActionField> + <name>loadNextMessages</name> + <title>Load older messages</title> + <onActionProcess>%aditoprj%/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js</onActionProcess> + <iconId>VAADIN:CLOCK</iconId> + </entityActionField> + <entityField> + <name>LOAD_ID</name> + </entityField> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityActionField> + <name>importMessages</name> + </entityActionField> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>dataless</name> + <alias>Data_alias</alias> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTeamsActivityImport_entity/afterUiInit.js b/entity/MSTeamsActivityImport_entity/afterUiInit.js new file mode 100644 index 0000000000000000000000000000000000000000..9357f9cbc246dd684cda414ee905e0e5586e4cb7 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/afterUiInit.js @@ -0,0 +1,8 @@ +import("system.entities"); + +//load the channels into the cache when opening the dialog, so the user doesn't have to wait when opening the lookup +entities.invalidateCache("MSTeamsChannel_entity", "jdito"); +entities.getRows(entities.createConfigForLoadingConsumerRows() + .consumer("Channels") + .fields(["UID", "CHANNELNAME"]) +); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/documentation.adoc b/entity/MSTeamsActivityImport_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e9a7b4eadedbbcc63946070f941eecaa515905cd --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/documentation.adoc @@ -0,0 +1,12 @@ +MSTTeamsActivityImport +============ + +== Overview == +MSTTeamsActivityImport is used to import messages from MST + +== A MSTTeamsActivityImport consists of some modules: == +- MSTTeamsActivityImport itself + +== BestPractice == + +== FAQ == \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e6f0ee80bb8afc2a1d41e693e8a433805743e014 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..05f69f965eba54557bac6aed07227f6d8ff716a0 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/loadnextmessages/onActionProcess.js @@ -0,0 +1,5 @@ +import("system.neon"); +import("system.util"); + +//set a new random ID to reload the messages consumer +neon.setFieldValue("$field.LOAD_ID", util.getNewUUID()); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2385cda828f2a88ccb21220449e36a1b09b1db91 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/channel_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CHANNEL_ID")); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f83604cf16728a3863ed3f26751100c6a947b6eb --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/loadnext_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.LOAD_ID")); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9eed48618458976b1838543de6ba1c7719f79911 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/messages/children/teamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.TEAM_ID")); \ No newline at end of file diff --git a/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c431bd3ac3e9bc6fa97d0b85729ed1c4f9b203b0 --- /dev/null +++ b/entity/MSTeamsActivityImport_entity/entityfields/team_id/valueProcess.js @@ -0,0 +1,6 @@ +import("system.vars"); +import("MSTeams_lib"); +import("system.result"); +import("Sql_lib"); + +result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), vars.get("$param.ObjectType_param")) || ""); \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..4c2ea19b1014949ea8bc56f1a925d367ff004286 --- /dev/null +++ b/entity/MSTeamsChannel_entity/MSTeamsChannel_entity.aod @@ -0,0 +1,80 @@ +<?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>MSTeamsChannel_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/documentation.adoc</documentation> + <title>Channel</title> + <siblings /> + <contentTitleProcess>%aditoprj%/entity/MSTeamsChannel_entity/contentTitleProcess.js</contentTitleProcess> + <titlePlural>Channels</titlePlural> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>CHANNELNAME</name> + <title>Channel Name</title> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityProvider> + <name>ChannelsForTeam</name> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>a784ee43-b2ef-4d55-a092-9c7f822905fa</name> + <entityName>MSTeamsActivityImport_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>c2b60ab3-3edd-4571-b9aa-766826f561fd</name> + <entityName>MSTTeam_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityParameter> + <name>TeamId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityProvider> + <name>ChannelsByName</name> + <lookupIdfield>CHANNELNAME</lookupIdfield> + <documentation>%aditoprj%/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc</documentation> + <dependencies> + <entityDependency> + <name>3dfb5be2-d956-4e8a-9aec-4c80b81e0527</name> + <entityName>MSTeamsDocument_entity</entityName> + <fieldName>Channels</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <cacheType>SESSION</cacheType> + <cacheKeyProcess>%aditoprj%/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js</cacheKeyProcess> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CHANNELNAME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTeamsChannel_entity/contentTitleProcess.js b/entity/MSTeamsChannel_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..678b5f5e99791cb0d6158d3bb6b7e01f0450fd37 --- /dev/null +++ b/entity/MSTeamsChannel_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CHANNELNAME")); \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/documentation.adoc b/entity/MSTeamsChannel_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..84851137bfe4a7a9bbd4b774b01bb719b904ed06 --- /dev/null +++ b/entity/MSTeamsChannel_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsChannel +============ + +== Overview == +MSTeamsChannel is used to get all channels of a MST Team + +== A MSTeamsChannel consists of some modules: == +- MSTeamsChannel itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..276b88812f25badc1678f208ee47a4d156d0089e --- /dev/null +++ b/entity/MSTeamsChannel_entity/entityfields/channelsbyname/documentation.adoc @@ -0,0 +1,3 @@ +Provider ChannelsByName + +Gets all channels by their names \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..c8c3ce9e5628a6d5e656abb9f9babc3167fe1ca1 --- /dev/null +++ b/entity/MSTeamsChannel_entity/entityfields/channelsforteam/documentation.adoc @@ -0,0 +1,3 @@ +Provider ChannelsForTeam + +Gets all channels for the specific team \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ee4f6d2376080e71d86c3fa327113b15ce3e25a2 --- /dev/null +++ b/entity/MSTeamsChannel_entity/recordcontainers/jdito/cacheKeyProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("CachedRecordContainer_lib"); + +result.string(CachedRecordContainerUtils.getCommonKey("$param.TeamId_param")); \ No newline at end of file diff --git a/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e687b04b480eb8244dda328b5388cb40ddab1bf3 --- /dev/null +++ b/entity/MSTeamsChannel_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,33 @@ +import("system.teams"); +import("system.result"); +import("system.vars"); +import("JditoFilter_lib"); + +var searchValue = null; +JditoFilterUtils.filterRecords(["$$$LOOKUPFIELD$$$"], [["dummy"]], vars.get("$local.filter").filter, { + "$$$LOOKUPFIELD$$$" : function (recordValue, filterValue) + { + searchValue = filterValue; + return true; + } +}); + +var allChannels = teams.getAllChannels(vars.get("$param.TeamId_param"), searchValue || null); +var channels = []; + +if (vars.get("$local.idvalues")) +{ + channels = vars.get("$local.idvalues").map(function (channelId) + { + return [channelId, allChannels[channelId]]; + }); +} +else +{ + for (let channelId in allChannels) + { + channels.push([channelId, allChannels[channelId]]); + } +} + +result.object(channels); \ No newline at end of file diff --git a/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..7b63c5f0e10641d17d6bc056c6f771d217cc1e7d --- /dev/null +++ b/entity/MSTeamsDocument_entity/MSTeamsDocument_entity.aod @@ -0,0 +1,75 @@ +<?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>MSTeamsDocument_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsDocument_entity/documentation.adoc</documentation> + <siblings /> + <recordContainer>dataless</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>DOCUMENTS</name> + <title>Documents</title> + <dropDownProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js</dropDownProcess> + <selectionMode>MULTI</selectionMode> + <state>EDITABLE</state> + </entityField> + <entityField> + <name>CHANNEL</name> + <title>Channel</title> + <consumer>Channels</consumer> + <mandatory v="true" /> + <state>EDITABLE</state> + </entityField> + <entityParameter> + <name>ObjectRowId_param</name> + <expose v="true" /> + </entityParameter> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>AssignmentTable_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AssignmentName_param</name> + <expose v="true" /> + </entityParameter> + <entityConsumer> + <name>Channels</name> + <children> + <entityParameter> + <name>TeamId_param</name> + <valueProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> + <dependency> + <name>dependency</name> + <entityName>MSTeamsChannel_entity</entityName> + <fieldName>ChannelsByName</fieldName> + </dependency> + </entityConsumer> + <entityParameter> + <name>MSTTeamId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + <entityActionField> + <name>importDocuments</name> + <onActionProcess>%aditoprj%/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js</onActionProcess> + </entityActionField> + </entityFields> + <recordContainers> + <datalessRecordContainer> + <name>dataless</name> + <alias>Data_alias</alias> + </datalessRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTeamsDocument_entity/documentation.adoc b/entity/MSTeamsDocument_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..e751b842c923ed49543f07c8af2a3203628ad8b2 --- /dev/null +++ b/entity/MSTeamsDocument_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsDocument +============ + +== Overview == +MSTeamsDocument is used to synchronize all MST Documents with ADITO + +== A MSTeamsDocument consists of some modules: == +- MSTeamsDocument itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js b/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..9036fa977855169ff3de7b568364d5073791d72a --- /dev/null +++ b/entity/MSTeamsDocument_entity/entityfields/channels/children/teamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$param.MSTTeamId_param")); \ No newline at end of file diff --git a/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js b/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d46e42f287a77be32c587b85fc7a475cfa87a348 --- /dev/null +++ b/entity/MSTeamsDocument_entity/entityfields/documents/dropDownProcess.js @@ -0,0 +1,20 @@ +import("system.result"); +import("system.teams"); +import("system.vars"); +import("system.logging"); +import("Sql_lib"); + +var channelName = vars.get("$field.CHANNEL"); +if (channelName) +{ + var teamId = vars.get("$param.MSTTeamId_param"); + + var documents = teams.getAllDocuments(teamId, channelName); + documents = documents.map(function (document) + { + return [JSON.stringify([document.downloadUrl, document.name]), document.name]; + }); + result.object(documents); +} +else + result.object([]); \ No newline at end of file diff --git a/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7237c6c01de74d5355cde59d84173d56989b55b0 --- /dev/null +++ b/entity/MSTeamsDocument_entity/entityfields/importdocuments/onActionProcess.js @@ -0,0 +1,27 @@ +import("system.text"); +import("system.teams"); +import("system.vars"); +import("system.db"); +import("system.util") +import("Sql_lib"); +import("system.net") +import("system.logging"); +import("system.neon"); + +var rowData = vars.get("$local.rowdata"); +var documents = text.decodeMS(vars.get("$field.DOCUMENTS")); + +documents.forEach(function (document) +{ + var [downloadUrl, documentName] = JSON.parse(document); + var file = net.getURLContent(downloadUrl, false, null, null, null, false); + + var assignmentTable = vars.get("$param.AssignmentTable_param"); + var assignmentName = vars.get("$param.AssignmentName_param"); + var assignmentRowId = vars.get("$param.ObjectRowId_param"); + var alias = SqlUtils.getBinariesAlias(); + + db.insertBinary(assignmentTable, assignmentName, assignmentRowId, null, + file, documentName, "", "", alias, util.getNewUUID()); +}); + diff --git a/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..437ba4f01752bc9a118f40f47ce80f9fdb5b7e3c --- /dev/null +++ b/entity/MSTeamsMessage_entity/MSTeamsMessage_entity.aod @@ -0,0 +1,83 @@ +<?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>MSTeamsMessage_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/entity/MSTeamsMessage_entity/documentation.adoc</documentation> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>FROM</name> + <title>Author</title> + </entityField> + <entityField> + <name>MESSAGE</name> + <title>Message</title> + </entityField> + <entityField> + <name>CREATED_DATE_TIME</name> + <title>Creation date</title> + <contentType>DATE</contentType> + </entityField> + <entityProvider> + <name>Messages</name> + <documentation>%aditoprj%/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc</documentation> + <recordContainer>jdito</recordContainer> + <dependencies> + <entityDependency> + <name>89048e4d-32bc-4531-9b45-b0c0d9de82b1</name> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>c79dc4f8-df40-47ba-9baa-b6a64c00f46c</name> + <entityName>MSTeamsActivityImport_entity</entityName> + <fieldName>Messages</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> + </entityProvider> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>Channel_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>TeamId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>LoadNext_param</name> + <expose v="true" /> + </entityParameter> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <jDitoRecordAlias>Data_alias</jDitoRecordAlias> + <contentProcess>%aditoprj%/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js</contentProcess> + <title>Messages</title> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>FROM.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MESSAGE.value</name> + </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>CREATED_DATE_TIME.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/MSTeamsMessage_entity/documentation.adoc b/entity/MSTeamsMessage_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..739a9e5de3c0c179690583b7d534b85203990865 --- /dev/null +++ b/entity/MSTeamsMessage_entity/documentation.adoc @@ -0,0 +1,14 @@ +MSTeamsMessage +============ + +== Overview == +MSTeamsMessage is used to get the messages written in MST + +== A MSTeamsMessage consists of some modules: == +- MSTeamsMessage itself + +== BestPractice == + +== FAQ == + + diff --git a/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..6bcca7fb1e986c54ce197ca8a4134ad98c23e51c --- /dev/null +++ b/entity/MSTeamsMessage_entity/entityfields/messages/documentation.adoc @@ -0,0 +1,3 @@ +Provider Messages + +Provides the messages for other entities \ No newline at end of file diff --git a/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..d8c0bad8a65f7fb8ad38753f002d20f1eb5f505a --- /dev/null +++ b/entity/MSTeamsMessage_entity/recordcontainers/jdito/contentProcess.js @@ -0,0 +1,41 @@ +import("Sql_lib"); +import("system.teams"); +import("system.result"); +import("system.util"); +import("system.vars"); +import("system.neon"); + +var loadNextMessages = vars.exists("$param.LoadNext_param") && vars.get("$param.LoadNext_param"); +var messageAmount = 10; +var channelMessages; +var messages = []; + +if (loadNextMessages) +{ + var nextLink = vars.exists("$context.nextLink") ? vars.get("$context.nextLink") : null; + if(nextLink) + { + channelMessages = teams.getNextChannelMessages(nextLink, messageAmount); + messages = channelMessages.messages; + vars.set("$context.nextLink", channelMessages.nextLink || null); + } +} +else if (vars.get("$param.TeamId_param") && vars.get("$param.Channel_param")) +{ + channelMessages = teams.getChannelMessages(vars.get("$param.TeamId_param"), vars.get("$param.Channel_param"), messageAmount); + messages = channelMessages.messages; + + vars.set("$context.nextLink", channelMessages.nextLink || null); +} + +messages = messages.map(function (message) +{ + return [ + util.getNewUUID(), + message.author.userName, + message.message.message, + Date.parse(message.createdDateTime).toString() + ]; +}); + +result.object(messages); diff --git a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod index 40b9b39c8993d2b421f368b11fca27d80abb24f5..8efdde1d70c6ad1164767134ad57e8e1282e13b9 100644 --- a/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod +++ b/entity/MarketingWorkflowLauncher_entity/MarketingWorkflowLauncher_entity.aod @@ -14,7 +14,7 @@ </entityProvider> <entityField> <name>DOCUMENTTEMPLATE_ID</name> - <title>Document template</title> + <title>Document Template</title> <consumer>EmailTemplates</consumer> <mandatory v="true" /> <state>EDITABLE</state> @@ -22,11 +22,6 @@ <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> @@ -45,6 +40,11 @@ <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targetcontext_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowLauncher_entity</entityName> + <fieldName>Integration</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectType_param</name> @@ -60,11 +60,6 @@ </entityParameter> <entityConsumer> <name>EmailTemplates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -75,11 +70,17 @@ <valueProcess>%aditoprj%/entity/MarketingWorkflowLauncher_entity/entityfields/emailtemplates/children/comingfrom_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js index b81df3d4fb93fc9608febd7783247052a61d4acd..cea637a710a0e3e0903248241654aec944c88137 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/processvariables_param/valueProcess.js @@ -2,6 +2,7 @@ import("system.vars"); import("system.result"); var variables = { - documentTemplate: vars.get("$field.DOCUMENTTEMPLATE_ID") + documentTemplateId: vars.get("$field.DOCUMENTTEMPLATE_ID"), + originUrl: vars.get("$sys.origin") }; result.string(JSON.stringify(variables)); \ No newline at end of file diff --git a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js index 6a28aafa528aa4130e913b642f80e04cfadc8b19..1bfc02a3f326e8e82420c38d5f60d1faee9cdf6b 100644 --- a/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js +++ b/entity/MarketingWorkflowLauncher_entity/entityfields/workflowlauncherintegration/children/targets_param/valueProcess.js @@ -1,13 +1,43 @@ +import("Sql_lib"); import("Util_lib"); import("system.vars"); import("system.result"); +import("FilterViewAction_lib"); var context = vars.get("$param.ObjectType_param"); -var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")) || []; -targets = targets.map(function (targetId) +var targets = Utils.parseJSON(vars.get("$param.ObjectIds_param")); +var filter = Utils.parseJSON(vars.get("$param.ObjectFilter_param")); + +var personContactIds = []; + +targets = FilterViewActionUtils.getUidsBySelectionOrFilter(context, targets, filter).map(function (target) { - if (Utils.isString(targetId)) - return [targetId, context]; //todo: context dynamic (eg for participants) - return targetId; + if (Utils.isString(target)) + target = [target, context]; + if (target[1] == "Person") + personContactIds.push(target[0]); + return target; }); + +if (personContactIds.length !== 0) +{ + var orgContactIds = newSelect(["anyContact.CONTACTID", "orgContact.CONTACTID"]) + .from("CONTACT", "orgContact") + .join("CONTACT", "anyContact.ORGANISATION_ID = orgContact.ORGANISATION_ID and orgContact.PERSON_ID is null", "anyContact") + .where(["CONTACT", "CONTACTID", "anyContact"], personContactIds, SqlBuilder.IN()) + .table(); + var contactIdMap = new Map(orgContactIds); + targets.forEach(function ([targetId, targetContext, variables], i, allTargets) + { + if (contactIdMap.has(targetId)) + { + if (!variables) + variables = {}; + variables.attributeRowId = contactIdMap.get(targetId); + variables.attributeContext = "Organisation"; + allTargets[i][2] = variables; + } + }); +} + result.string(JSON.stringify(targets)); \ No newline at end of file diff --git a/entity/Member_entity/Member_entity.aod b/entity/Member_entity/Member_entity.aod index 23a14e5ebe902ca5f5fcda22532dae26cc4b2c17..a416ef148b261e8877df19ee82ee0802b49753fb 100644 --- a/entity/Member_entity/Member_entity.aod +++ b/entity/Member_entity/Member_entity.aod @@ -4,8 +4,13 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/Member_entity/documentation.adoc</documentation> <title>${SALESPROJECT_MEMBER}</title> + <siblings> + <element>MSTTeam_entity</element> + <element>MSTTeamLink_entity</element> + </siblings> <grantUpdateProcess>%aditoprj%/entity/Member_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Member_entity/grantDeleteProcess.js</grantDeleteProcess> + <contentTitleProcess>%aditoprj%/entity/Member_entity/contentTitleProcess.js</contentTitleProcess> <iconId>VAADIN:FILE_SOUND</iconId> <titlePlural>${SALESPROJECT_MEMBER}</titlePlural> <recordContainer>db</recordContainer> @@ -81,11 +86,6 @@ </entityField> <entityConsumer> <name>Contacts</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>IdFilteredActiveContacts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -96,20 +96,25 @@ <valueProcess>%aditoprj%/entity/Member_entity/entityfields/contacts/children/onlyactive_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordMemberRoles</name> <dependency> <name>dependency</name> - <entityName>MemberRoles_entity</entityName> - <fieldName>ByCategory</fieldName> + <entityName>Person_entity</entityName> + <fieldName>IdFilteredActiveContacts</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordMemberRoles</name> <children> <entityParameter> <name>UsageFilter_param</name> <valueProcess>%aditoprj%/entity/Member_entity/entityfields/keywordmemberroles/children/usagefilter_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>MemberRoles_entity</entityName> + <fieldName>ByCategory</fieldName> + </dependency> </entityConsumer> <entityField> <name>TARGETCONTEXT</name> @@ -149,11 +154,6 @@ </entityParameter> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -162,6 +162,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contexts</name> @@ -203,23 +208,104 @@ <entityProvider> <name>WithDistrictResponsibles</name> <recordContainer>jdito</recordContainer> + </entityProvider> + <entityField> + <name>UID</name> + <documentation>%aditoprj%/entity/Member_entity/entityfields/uid/documentation.adoc</documentation> + </entityField> + <entityActionGroup> + <name>MSTeamsActionGroup</name> + <title>MS Teams</title> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js</stateProcess> + <children> + <entityActionField> + <name>createTeam</name> + <title>Create Team</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js</onActionProcess> + <isSelectionAction v="false" /> + <iconId>NEON:PLUS</iconId> + <state>EDITABLE</state> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>editTeam</name> + <title>Edit Team</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js</onActionProcess> + <iconId>NEON:PENCIL</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>addApp</name> + <title>Add app</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js</onActionProcess> + <iconId>VAADIN:MOBILE</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>chooseTeam</name> + <title>Choose Team</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js</onActionProcess> + <iconId>NEON:GROUP_APPOINTMENT</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>restoreTeam</name> + <title>Restore Team</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js</onActionProcess> + <iconId>VAADIN:ARROW_BACKWARD</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>openMSTeams</name> + <title>Open Teams</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js</onActionProcess> + <iconId>VAADIN:EXTERNAL_LINK</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js</stateProcess> + </entityActionField> + <entityActionField> + <name>deleteTeam</name> + <title>Delete Team</title> + <onActionProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js</onActionProcess> + <iconId>NEON:TRASH</iconId> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js</stateProcess> + </entityActionField> + </children> + </entityActionGroup> + <entityProvider> + <name>TeamMemberProvider</name> + <lookupIdfield>CONTACT_ID</lookupIdfield> <dependencies> <entityDependency> - <name>6f90b6c6-118c-485e-9a41-365bdc325f9b</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Members</fieldName> + <name>373a0c5c-dff5-4a6d-9a1f-68d7b73804ce</name> + <entityName>MSTTeamMember_entity</entityName> + <fieldName>ProjectMembers</fieldName> <isConsumer v="false" /> </entityDependency> </dependencies> </entityProvider> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js</valueProcess> + <expose v="true" /> + </entityParameter> <entityField> - <name>UID</name> - <documentation>%aditoprj%/entity/Member_entity/entityfields/uid/documentation.adoc</documentation> + <name>MST_MEMBERROLE</name> + <title>Team role</title> + <stateProcess>%aditoprj%/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js</stateProcess> </entityField> + <entityParameter> + <name>EnableMSTeams_param</name> + <expose v="true" /> + </entityParameter> <entityField> <name>recordType</name> <documentation>%aditoprj%/entity/Member_entity/entityfields/recordtype/documentation.adoc</documentation> </entityField> + <entityParameter> + <name>SalesprojectCode_param</name> + <expose v="true" /> + <description>PARAMETER</description> + </entityParameter> </entityFields> <recordContainers> <dbRecordContainer> @@ -326,10 +412,6 @@ <name>OBJECTMEMBERID.value</name> <recordfield>OBJECTMEMBER.OBJECTMEMBERID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>MEMBERROLE.displayValue</name> <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/memberrole.displayvalue/expression.js</expression> @@ -344,6 +426,10 @@ <name>recordType.value</name> <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/recordtype.value/expression.js</expression> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_MEMBERROLE.value</name> + <expression>%aditoprj%/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> <jDitoRecordContainer> @@ -424,6 +510,9 @@ <jDitoRecordFieldMapping> <name>recordType.value</name> </jDitoRecordFieldMapping> + <jDitoRecordFieldMapping> + <name>MST_MEMBERROLE.value</name> + </jDitoRecordFieldMapping> </recordFieldMappings> </jDitoRecordContainer> </recordContainers> diff --git a/entity/Member_entity/contentTitleProcess.js b/entity/Member_entity/contentTitleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..e2e9200a47926fc38af5a2534902d2741ed04877 --- /dev/null +++ b/entity/Member_entity/contentTitleProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.PERSON_FULL_NAME")); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0d9f56400af9597e47b8cd95b2d2060881eaa30e --- /dev/null +++ b/entity/Member_entity/entityfields/mst_memberrole/stateProcess.js @@ -0,0 +1,9 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("MSTeams_lib"); + +result.string(MSTeamsUtils.isTeamsEnabled() && vars.get("$param.EnableMSTeams_param") == "true" + ? neon.COMPONENTSTATE_READONLY + : neon.COMPONENTSTATE_INVISIBLE +); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f53cd7c87d173497b7b8fd5bcbb4ba4212bac637 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/onActionProcess.js @@ -0,0 +1,7 @@ +import("system.teams"); +import("system.project"); +import("system.vars"); + +var appId = project.getInstanceConfigValue("teamsAppId", null); +if (appId) + teams.addApp(vars.get("$param.MSTTeamId_param"), appId); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f1febe96416f12e029c6de6537cf96e5c7f4d5db --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/addapp/stateProcess.js @@ -0,0 +1,16 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var res = neon.COMPONENTSTATE_DISABLED; +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl) + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f5761f78639c0a8b2fc209d0fe50d47ccbb390e2 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/onActionProcess.js @@ -0,0 +1,4 @@ +import("MSTeams_lib"); +import("system.vars"); + +MSTeamsUtils.changeTeamsLink(vars.get("$field.OBJECT_ROWID"), vars.get("$field.OBJECT_TYPE")); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..82ce3fae3fb447579e492f43ad7158f1d8bd0182 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/chooseteam/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); + +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") + ? neon.COMPONENTSTATE_DISABLED + : neon.COMPONENTSTATE_EDITABLE +); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..611e6d3926780aa4e436f626508e3b1f7a8a4cbc --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/onActionProcess.js @@ -0,0 +1,24 @@ +import("system.vars"); +import("system.neon"); +import("system.teams"); +import("Sql_lib"); + +var rowId = vars.get("$param.ObjectRowId_param"); +var objectType = vars.get("$param.ObjectType_param"); +var params = { + "ObjectRowId_param": rowId, + "ObjectType_param": objectType +}; + +if (objectType === "Salesproject") +{ + var [teamName, description] = newSelect("PROJECTTITLE, INFO") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", rowId) + .arrayRow(); + params["TeamName_param"] = teamName; + params["Description_param"] = description; + params["SalesprojectCode_param"] = vars.get("$param.SalesprojectCode_param"); +} + +neon.openContext("MSTTeam", null, null, neon.OPERATINGSTATE_NEW, params); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..82ce3fae3fb447579e492f43ad7158f1d8bd0182 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/createteam/stateProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); + +result.string(vars.exists("$param.MSTTeamId_param") && vars.get("$param.MSTTeamId_param") + ? neon.COMPONENTSTATE_DISABLED + : neon.COMPONENTSTATE_EDITABLE +); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..02a6be4eecfffc75564fb7841470f50c0d00d7b1 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/onActionProcess.js @@ -0,0 +1,13 @@ +import("system.teams"); +import("Sql_lib"); +import("system.vars"); +import("system.neon"); + +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId) +{ + teams.archiveTeam(teamId); + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "1"}); + neon.refreshAll(); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dcaec1cc02ac3718197fd77a80e966630bdc0e1d --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/deleteteam/stateProcess.js @@ -0,0 +1,15 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); + +var res = neon.COMPONENTSTATE_DISABLED; +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && !teamInfo.isArchived && !teamInfo.serviceUrl && MSTeamsUtils.isUserTeamOwner(teamId)) + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8f072bc03d016ca70df4643d9f32d8c29c8523e5 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/onActionProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); + +neon.openContext("MSTTeam", "MSTTeamEditMembers_view", [vars.get("$param.MSTTeamId_param")], neon.OPERATINGSTATE_EDIT, { + "ObjectRowId_param": vars.get("$param.ObjectRowId_param"), + "ObjectType_param": vars.get("$param.ObjectType_param") +}); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7aa4197a0d2f1be51667f68696e2ecf18cbf3bc1 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/editteam/stateProcess.js @@ -0,0 +1,13 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); + +var res = neon.COMPONENTSTATE_DISABLED; +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId) && MSTeamsUtils.isUserTeamOwner(teamId)) +{ + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..dd6293385c56357965b6ddd53fa1f5611b6bcf72 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/onActionProcess.js @@ -0,0 +1,8 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); + +var teamInfo = MSTeamsUtils.getTeamInfo(vars.get("$param.MSTTeamId_param")); + +if (teamInfo && teamInfo.webUrl) + neon.openUrl(teamInfo.webUrl, true); diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..ce25c1feb1a1c2247dc19707bd447b5096e04184 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/openmsteams/stateProcess.js @@ -0,0 +1,14 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var res = neon.COMPONENTSTATE_DISABLED; +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled() && MSTeamsUtils.isTeamActive(teamId)) +{ + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..6a3f91dd3284c696644915699f39cd83512a74a6 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/onActionProcess.js @@ -0,0 +1,13 @@ +import("system.teams"); +import("Sql_lib"); +import("system.vars"); +import("system.neon"); + +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId) +{ + teams.unarchiveTeam(teamId); + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"IS_ARCHIVED" : "0"}); + neon.refreshAll(); +} \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..45ca08b1622ea01f75c5029fbb125be25fba87c5 --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/children/restoreteam/stateProcess.js @@ -0,0 +1,16 @@ +import("MSTeams_lib"); +import("system.vars"); +import("system.neon"); +import("system.result"); +import("Sql_lib"); + +var res = neon.COMPONENTSTATE_DISABLED; +var teamId = vars.get("$param.MSTTeamId_param"); +if (teamId && MSTeamsUtils.isTeamsEnabled()) +{ + var teamInfo = MSTeamsUtils.getTeamInfo(teamId); + if (teamInfo && teamInfo.isArchived) + res = neon.COMPONENTSTATE_EDITABLE; +} + +result.string(res); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c05618702e36bfc821bfcd8ebefe57722f7f29dd --- /dev/null +++ b/entity/Member_entity/entityfields/msteamsactiongroup/stateProcess.js @@ -0,0 +1,7 @@ +import("system.vars"); +import("system.neon"); +import("system.result"); +import("MSTeams_lib"); + +var isTeamsEnabled = vars.get("$param.EnableMSTeams_param") == "true" && MSTeamsUtils.isTeamsEnabled(); +result.string(isTeamsEnabled ? neon.COMPONENTSTATE_EDITABLE : neon.COMPONENTSTATE_INVISIBLE); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..566da0b330d91a6b956f6a40c0517ce03f795a91 --- /dev/null +++ b/entity/Member_entity/entityfields/mstteamid_param/valueProcess.js @@ -0,0 +1,8 @@ +import("system.vars"); +import("system.result"); +import("Sql_lib"); +import("MSTeams_lib"); + +var objectType = vars.get("$param.ObjectType_param"); +if (objectType in MSTeamsUtils.getTeamLinkContexts()) + result.string(MSTeamsUtils.getLinkedTeam(vars.get("$param.ObjectRowId_param"), objectType) || ""); \ No newline at end of file diff --git a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644 --- a/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Member_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/conditionProcess.js b/entity/Member_entity/recordcontainers/db/conditionProcess.js index 8ea033217e401e458c462cc899184bf4f8b24cd1..ce742b4d37acd1af594044cc09f317b8279ad3ee 100644 --- a/entity/Member_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Member_entity/recordcontainers/db/conditionProcess.js @@ -6,5 +6,4 @@ var cond = newWhere() .andIfSet("OBJECTMEMBER.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("OBJECTMEMBER.OBJECT_TYPE", "$param.ObjectType_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..2296cd85fe7663014d2f6724534e21d1e2de81d9 --- /dev/null +++ b/entity/Member_entity/recordcontainers/db/recordfieldmappings/mst_memberrole.value/expression.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); +import("MSTeams_lib"); + +result.string(MSTeamsUtils.getTeamRoleSubSql(vars.get("$param.MSTTeamId_param"), "OBJECTMEMBER.CONTACT_ID")); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index 000d055cfacc970e2ca0dc70689b4c793e0bc0cd..0000000000000000000000000000000000000000 --- a/entity/Member_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,10 +0,0 @@ -import("system.vars"); -import("system.result"); -import("Context_lib"); - -//TODO: refactor: -//whenever we want to shrink data for a single object it's not needed to resolve the objects name where we're from -if (vars.get("$param.ObjectType_param") == null) - result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")); -else - result.string("'OBJECT_ROWID.displayValue not loaded'"); \ No newline at end of file diff --git a/entity/Member_entity/recordcontainers/jdito/contentProcess.js b/entity/Member_entity/recordcontainers/jdito/contentProcess.js index e4d4225eebe44cebd4e0d39c0acb38313d53162f..48b27281c4ebadf918be03ac5c907c41683d133a 100644 --- a/entity/Member_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Member_entity/recordcontainers/jdito/contentProcess.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("system.translate"); import("system.result"); import("system.vars"); @@ -16,7 +17,7 @@ var memberLoadingConfig = entities.createConfigForLoadingRows() "MEMBERROLE", "MEMBERROLE.displayValue", "OBJECT_ROWID", "OBJECT_TYPE", "OBJECTMEMBERID", "ORG_ORGID", "ORGANISATION_NAME", "PERSON_FIRSTNAME", "PERSON_FULL_NAME", "PERSON_LASTNAME", "PERSON_PERSID", "PERSON_SALUTATION", "PERSON_TITLE", "POSITION", "TARGETCONTEXT", - "recordType"]); + "recordType", "MST_MEMBERROLE"]); if (idValues) { @@ -29,90 +30,122 @@ if (filter && filter.filter != null) } var memberRows = entities.getRows(memberLoadingConfig); +memberRows = memberRows.map(function(row) +{ + return [ + row["#UID"], + row["OBJECTMEMBERID"], + row["CONTACT_ID"], + row["CONTACT_ID.displayValue"], + row["CONTACTROLE"], + row["DEPARTMENT"], + row["ICON"], + row["IMAGE"], + row["MEMBERROLE"], + row["MEMBERROLE.displayValue"], + row["OBJECT_ROWID"], + row["OBJECT_TYPE"], + row["ORG_ORGID"], + row["ORGANISATION_NAME"], + row["PERSON_FIRSTNAME"], + row["PERSON_FULL_NAME"], + row["PERSON_LASTNAME"], + row["PERSON_PERSID"], + row["PERSON_SALUTATION"], + row["PERSON_TITLE"], + row["POSITION"], + row["TARGETCONTEXT"], + row["recordType"], + row["MST_MEMBERROLE"] + ]; +}); -if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null) +if (Utils.isNullOrEmpty(idValues) || memberRows.length === 0) { - var orgContactId = newSelect("SALESPROJECT.CONTACT_ID") - .from("SALESPROJECT") - .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") - .cell(); - - var districtLoadingConfig = entities.createConfigForLoadingRows() - .entity("DistrictResponsible_entity") - .provider("OrganisationResponsibles") - .addParameter("OrgUid_param", orgContactId) - .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", - "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", - "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); - - var districtRows = entities.getRows(districtLoadingConfig); - - - districtRows = districtRows.map(function(row) + if (vars.get("$param.ObjectType_param") == "Salesproject" && vars.get("$param.ObjectRowId_param") != null) { - return [row["#UID"], row["DISTRICTRESPONSIBLEID"], row["DISTRICT_ID"], row["EMPLOYEE_CONTACT_ID"], row["EMPLOYEE_CONTACT_ID.displayValue"], - row["USER_EDIT"], row["USER_NEW"], row["departmentAttributeName"], row["DATE_EDIT"], row["DATE_NEW"]]; - }); -} + var orgContactId = newSelect("SALESPROJECT.CONTACT_ID") + .from("SALESPROJECT") + .where("SALESPROJECT.SALESPROJECTID", "$param.ObjectRowId_param") + .cell(); + var districtLoadingConfig = entities.createConfigForLoadingRows() + .entity("DistrictResponsible_entity") + .provider("OrganisationResponsibles") + .addParameter("OrgUid_param", orgContactId) + .fields(["#UID","DISTRICTRESPONSIBLEID", "DISTRICT_ID", "EMPLOYEE_CONTACT_ID", + "EMPLOYEE_CONTACT_ID.displayValue", "USER_EDIT", "USER_NEW", + "departmentAttributeName", "DATE_EDIT", "DATE_NEW"]); -memberRows = memberRows.map(function(row) -{ - return [row["#UID"], row["OBJECTMEMBERID"], row["CONTACT_ID"], row["CONTACT_ID.displayValue"], row["CONTACTROLE"], row["DEPARTMENT"], row["ICON"], - row["IMAGE"], row["MEMBERROLE"], row["MEMBERROLE.displayValue"], row["OBJECT_ROWID"], - row["OBJECT_TYPE"], row["ORG_ORGID"], row["ORGANISATION_NAME"], row["PERSON_FIRSTNAME"], - row["PERSON_FULL_NAME"], row["PERSON_LASTNAME"], row["PERSON_PERSID"], row["PERSON_SALUTATION"], row["PERSON_TITLE"], - row["POSITION"], row["TARGETCONTEXT"], row["recordType"]]; -}); + var districtRows = entities.getRows(districtLoadingConfig); -var responsibleUids = []; + districtRows = districtRows.map(function(row) + { + return [ + row["#UID"], + row["DISTRICTRESPONSIBLEID"], + row["DISTRICT_ID"], + row["EMPLOYEE_CONTACT_ID"], + row["EMPLOYEE_CONTACT_ID.displayValue"], + row["USER_EDIT"], + row["USER_NEW"], + row["departmentAttributeName"], + row["DATE_EDIT"], + row["DATE_NEW"] + ]; + }); + } -districtRows.forEach(function(row){ - responsibleUids.push(row[3]); -}); + var responsibleUids = []; -var loadingConfPers = entities.createConfigForLoadingRows() - .entity("Person_entity") - .uids(responsibleUids) - .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", - "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]); + districtRows.forEach(function(row){ + responsibleUids.push(row[3]); + }); -var persRows = entities.getRows(loadingConfPers); + var loadingConfPers = entities.createConfigForLoadingRows() + .entity("Person_entity") + .uids(responsibleUids) + .fields(["ORGANISATION_ID", "ORGANISATION_NAME", "CONTACTROLE", "POSITION", + "FIRSTNAME", "LASTNAME", "SALUTATION", "TITLE"]); -persRows = persRows.map(function(row){ - return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"], - row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"], - row["POSITION"], row["PERSONID"]]; -}); + var persRows = entities.getRows(loadingConfPers); + persRows = persRows.map(function(row){ + return [row["SALUTATION"], row["TITLE"], row["FIRSTNAME"], row["LASTNAME"], + row["ORGANISATION_NAME"], row["ORGANISATION_ID"], row["CONTACTROLE"], + row["POSITION"], row["PERSONID"]]; + }); -districtRows.forEach(function(row, counter){ - - memberRows.push( - [row[0], - null, - row[3], - row[4], - persRows[counter][6], - row[7], - "VAADIN:GLOBE", - "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length), - "MEMBERROLEDISTRICTRESPONSIBLE", - translate.text("District Responsible"), - vars.get("$param.ObjectRowId_param"), - vars.get("$param.ObjectType_param"), - persRows[counter][5], - persRows[counter][4], - persRows[counter][2], - row[4], - persRows[counter][3], - persRows[counter][8], - persRows[counter][0], - persRows[counter][1], - persRows[counter][7], - null, - "DistrictResponsible" - ]); -}); + + districtRows.forEach(function(row, counter){ + + memberRows.push( + [row[0], + null, + row[3], + row[4], + persRows[counter][6], + row[7], + "VAADIN:GLOBE", + "TEXT:" + row[4].substring(row[4].indexOf(" ", 0)+1, row[4].length), + "MEMBERROLEDISTRICTRESPONSIBLE", + translate.text("District Responsible"), + vars.get("$param.ObjectRowId_param"), + vars.get("$param.ObjectType_param"), + persRows[counter][5], + persRows[counter][4], + persRows[counter][2], + row[4], + persRows[counter][3], + persRows[counter][8], + persRows[counter][0], + persRows[counter][1], + persRows[counter][7], + null, + "DistrictResponsible", + "" + ]); + }); +} result.object(memberRows); \ No newline at end of file diff --git a/entity/ModuleTree_entity/ModuleTree_entity.aod b/entity/ModuleTree_entity/ModuleTree_entity.aod index 576d1171a8410d0c8fc1a15614a746438582b1c0..4340bcf19196be6814b2294b553a9013ceea00bb 100644 --- a/entity/ModuleTree_entity/ModuleTree_entity.aod +++ b/entity/ModuleTree_entity/ModuleTree_entity.aod @@ -26,6 +26,16 @@ <targetContextField>TYPE</targetContextField> <targetIdField>ROW_ID</targetIdField> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>ContextName_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ID_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>7da88ffb-4292-4fe2-88e2-dda2dc4aa625</name> @@ -46,16 +56,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContextName_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ID_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>PARENT_ID</name> diff --git a/entity/Notification_entity/Notification_entity.aod b/entity/Notification_entity/Notification_entity.aod index 8dead6bc118e4d353c6c708976a037b3ace5c45e..2668a0419e9a0b0d0d74c0f6f25867fd05c13faf 100644 --- a/entity/Notification_entity/Notification_entity.aod +++ b/entity/Notification_entity/Notification_entity.aod @@ -132,31 +132,31 @@ </entityField> <entityConsumer> <name>StateKeywords</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/statekeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PrioKeywords</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PrioKeywords</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Notification_entity/entityfields/priokeywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -170,13 +170,16 @@ <outputFormat>dd.MM.yyyy</outputFormat> <inputFormat>dd.MM.yyyy</inputFormat> </entityField> + <entityField> + <name>SUBCATEGORY</name> + <title>Subcategory</title> + </entityField> </entityFields> <recordContainers> <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> @@ -282,6 +285,12 @@ <name>CREATEDAY.value</name> <recordfield>ASYS_NOTIFICATIONCONTENTS.CREATEDATE</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>SUBCATEGORY.value</name> + <recordfield>ASYS_NOTIFICATIONCONTENTS.SUBCATEGORY</recordfield> + <isFilterable v="true" /> + <isLookupFilter v="true" /> + </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/Notification_entity/recordcontainers/db/onDBDelete.js b/entity/Notification_entity/recordcontainers/db/onDBDelete.js index 54618e0f77334d441107ac955591986a7540f4d0..ecd41a4a7a4731ed092c070714bad37a909deccf 100644 --- a/entity/Notification_entity/recordcontainers/db/onDBDelete.js +++ b/entity/Notification_entity/recordcontainers/db/onDBDelete.js @@ -4,4 +4,4 @@ import("system.notification"); // Deletes notificationContents from its table, if there are no user notification left // Only AppointmentContents need to stay, because they would appear again after every deletion. if(vars.get("$field.TYPECODE") != "_____SYSTEM_NOTIFICATION_APPOINTMENT") - notification.deleteContentIfOrphan(vars.get("$field.ID"), vars.get("$field.CONTENTID")); \ No newline at end of file + notification.deleteMultipleContentsIfOrphan([vars.get("$field.CONTENTID")]); \ No newline at end of file diff --git a/entity/ObjectProxy_entity/ObjectProxy_entity.aod b/entity/ObjectProxy_entity/ObjectProxy_entity.aod index ade8076995cdf19ebddb1dc97d0ed3626fb4ea9e..8eb6e53ec1fac158f5a89f6eed26678277279810 100644 --- a/entity/ObjectProxy_entity/ObjectProxy_entity.aod +++ b/entity/ObjectProxy_entity/ObjectProxy_entity.aod @@ -18,6 +18,7 @@ <entityProvider> <name>FilteredObjects</name> <targetConsumerProcess>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/targetConsumerProcess.js</targetConsumerProcess> + <documentation>%aditoprj%/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc</documentation> <dependencies> <entityDependency> <name>92e21c48-19aa-402c-b75f-96cad75d8a14</name> @@ -31,6 +32,12 @@ <fieldName>LinkedObject</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>9d75842d-0f91-4ddf-bd94-d8f092f17224</name> + <entityName>KnowledgeLink_entity</entityName> + <fieldName>Objects</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityParameter> diff --git a/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..1c4b46dd5e5b005c54afe5060159e4897799d352 --- /dev/null +++ b/entity/ObjectProxy_entity/entityfields/filteredobjects/documentation.adoc @@ -0,0 +1,3 @@ += FilteredObjects + +This provider can retrieve objects of the given entity, the results can be filtered. \ No newline at end of file diff --git a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod index a2a47eb12c23e662e6c4e789dd4f4b5ae4d032a0..4488b7e9c3c10e6801d1c176c4936df657b38717 100644 --- a/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod +++ b/entity/ObjectRelationType_entity/ObjectRelationType_entity.aod @@ -30,6 +30,13 @@ </entityParameter> <entityProvider> <name>ObjectRelationTypes</name> + <children> + <entityParameter> + <name>OnlyFirstSide_param</name> + <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>81f4567a-fc89-49fc-be86-77600cb66305</name> @@ -38,13 +45,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyFirstSide_param</name> - <valueProcess>%aditoprj%/entity/ObjectRelationType_entity/entityfields/objectrelationtypes/children/onlyfirstside_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>OnlyFirstSide_param</name> diff --git a/entity/ObjectTree_entity/ObjectTree_entity.aod b/entity/ObjectTree_entity/ObjectTree_entity.aod index 4266919a6b46eca1ea8ba194b849935a8c606e23..7edb15c3b6b7c93b3b7c06acdec09c16b828d48c 100644 --- a/entity/ObjectTree_entity/ObjectTree_entity.aod +++ b/entity/ObjectTree_entity/ObjectTree_entity.aod @@ -17,6 +17,16 @@ <name>TreeProvider</name> <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TARGET_ID</targetIdField> + <children> + <entityParameter> + <name>Uid_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>RelationTypes_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>f4c0605f-3ccb-4ff1-b460-7268e8553857</name> @@ -31,16 +41,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Uid_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>RelationTypes_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ObjectIds_param</name> @@ -68,17 +68,17 @@ </entityField> <entityConsumer> <name>ObjectRelationTypes</name> - <dependency> - <name>dependency</name> - <entityName>ObjectRelationType_entity</entityName> - <fieldName>ObjectRelationTypes</fieldName> - </dependency> <children> <entityParameter> <name>SourceObjectTypes_param</name> <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objectrelationtypes/children/sourceobjecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectRelationType_entity</entityName> + <fieldName>ObjectRelationTypes</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ObjectTypes_param</name> @@ -126,11 +126,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -142,6 +137,11 @@ <valueProcess>%aditoprj%/entity/ObjectTree_entity/entityfields/objects/children/excludedobjectids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>alter</name> diff --git a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js index 700dc7461b5f61b17ead3d2735ef8fd2eb7ac6f6..cd4083fad2fbb15ab6da846ce70808957582da6a 100644 --- a/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js +++ b/entity/ObjectTree_entity/entityfields/target_context/valueProcess.js @@ -5,5 +5,9 @@ import("ObjectRelation_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT) { - result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]); + var relationType = ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID")); + if(relationType[3] == "reverse") + result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[5]); + else + result.string(ObjectRelationUtils.getRelationType(vars.get("$field.OBJECTRELATIONTYPEID"))[6]); } \ No newline at end of file diff --git a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js index d074689525fa0fc64cc41002e883c2c8cd5579f3..81438bdcb9fc7b302aebf1c0fdcf797bef0334c3 100644 --- a/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js +++ b/entity/ObjectTree_entity/entityfields/target_id/displayValueProcess.js @@ -6,5 +6,5 @@ import("Context_lib"); if (vars.get("$field.TARGET_ID") && vars.get("$field.TARGET_CONTEXT")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.TARGET_CONTEXT"), vars.get("$field.TARGET_ID"))); } \ 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 d1d925c81b4e8fbd86046d8211e7366524b23882..7980a2bd4337487f4d163001299d364840e52f4e 100644 --- a/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/ObjectTree_entity/recordcontainers/jdito/contentProcess.js @@ -298,7 +298,7 @@ function _insertEntry(pTree, pEntryData, pNodeId, pLayer, pObjectType, pNewRelat pEntryData.forEach(function ([objectId, objectRelationId, objectType, relationTitle, info, objectRelationTypeId], i) { //TODO: entities.getRow, check if this is possible with fewer queries - var display = db.cell(ContextUtils.getNameSql(pObjectType, objectId)); + var display = ContextUtils.getTitleByContext(pObjectType, objectId); // TODO: Icon var uid = [objectId, i, objectRelationTypeId, pObjectType, pNodeId, objectType, objectRelationId, pHierarchy]; diff --git a/entity/Object_entity/Object_entity.aod b/entity/Object_entity/Object_entity.aod index 1a571fad307eb9e7e768bdfa12c553247e3ec376..884a3a733c379f529f1d10c2ad7b4cd9d144900f 100644 --- a/entity/Object_entity/Object_entity.aod +++ b/entity/Object_entity/Object_entity.aod @@ -27,6 +27,21 @@ <targetConsumerProcess>%aditoprj%/entity/Object_entity/entityfields/allobjects/targetConsumerProcess.js</targetConsumerProcess> <documentation>%aditoprj%/entity/Object_entity/entityfields/allobjects/documentation.adoc</documentation> <recordContainer>jdito</recordContainer> + <children> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludedObjectIds_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>445b79b3-e826-40d1-b6c2-46d62daf0818</name> @@ -65,43 +80,23 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludedObjectIds_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/organisations/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Persons</name> <dependency> <name>dependency</name> - <entityName>Person_entity</entityName> + <entityName>Organisation_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Persons</name> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -112,34 +107,39 @@ <valueProcess>%aditoprj%/entity/Object_entity/entityfields/persons/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> + <entityName>Person_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Orders</name> <dependency> <name>dependency</name> - <entityName>Order_entity</entityName> + <entityName>Offer_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Orders</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/orders/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Order_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -151,31 +151,31 @@ </entityConsumer> <entityConsumer> <name>Contracts</name> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/contracts/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> + <entityName>Contract_entity</entityName> <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedObjectIds_param</name> @@ -185,6 +185,21 @@ <entityProvider> <name>FilteredObjects</name> <targetConsumerProcess>%aditoprj%/entity/Object_entity/entityfields/filteredobjects/targetConsumerProcess.js</targetConsumerProcess> + <children> + <entityParameter> + <name>ExcludedObjectIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ObjectType_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>e644a709-cc8f-425e-bef2-9c51eea9bbe9</name> @@ -205,21 +220,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedObjectIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ObjectType_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Campaigns</name> @@ -243,17 +243,17 @@ </entityParameter> <entityConsumer> <name>PrivatePersons</name> - <dependency> - <name>dependency</name> - <entityName>PrivatePerson_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedPersonIds_param</name> <valueProcess>%aditoprj%/entity/Object_entity/entityfields/privatepersons/children/excludedpersonids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PrivatePerson_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Activities</name> @@ -283,6 +283,14 @@ <fieldName>#PROVIDER</fieldName> </dependency> </entityConsumer> + <entityConsumer> + <name>Leadimports</name> + <dependency> + <name>dependency</name> + <entityName>Leadimport_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> + </entityConsumer> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Object_entity/recordcontainers/jdito/contentProcess.js b/entity/Object_entity/recordcontainers/jdito/contentProcess.js index 27b0b7e83a11771b4ea8be2716a3fd61d1c5a6a7..bf77eb9a2d0f0df969843311c18f5bc4eb29738b 100644 --- a/entity/Object_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Object_entity/recordcontainers/jdito/contentProcess.js @@ -19,7 +19,7 @@ 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, null, null, excludedIds))) + result.object(ContextUtils.loadContent(ContextUtils.getEntity(objectType), [contactId], ["#UID", "#CONTENTTITLE"], excludedIds)) } else { diff --git a/entity/Offer_entity/Offer_entity.aod b/entity/Offer_entity/Offer_entity.aod index 0491466e0b6a47b54b5d0c67d48d8d4b7a891d31..5349b4d8fd4c116790e08f7527679c5de5f74b5f 100644 --- a/entity/Offer_entity/Offer_entity.aod +++ b/entity/Offer_entity/Offer_entity.aod @@ -10,6 +10,7 @@ <grantUpdateProcess>%aditoprj%/entity/Offer_entity/grantUpdateProcess.js</grantUpdateProcess> <grantDeleteProcess>%aditoprj%/entity/Offer_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Offer_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Offer_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Offer_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:CART</iconId> @@ -116,11 +117,6 @@ <name>Offeritems</name> <refreshParent v="true" /> <description></description> - <dependency> - <name>dependency</name> - <entityName>Offeritem_entity</entityName> - <fieldName>OfferItems</fieldName> - </dependency> <children> <entityParameter> <name>OfferId_param</name> @@ -150,6 +146,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/offeritems/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Offeritem_entity</entityName> + <fieldName>OfferItems</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOfferVersion</name> @@ -246,27 +247,22 @@ </entityField> <entityConsumer> <name>AnyContacts</name> - <dependency> - <name>dependency</name> - <entityName>AnyContact_entity</entityName> - <fieldName>OnlySameCompany</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/anycontacts/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>OnlySameCompany</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/documents/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -277,15 +273,15 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -296,6 +292,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS</name> @@ -322,11 +323,6 @@ </entityField> <entityConsumer> <name>KeywordCurrencies</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -334,14 +330,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordOfferStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordOfferStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -349,6 +345,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOrder</name> @@ -366,11 +367,6 @@ </entityConsumer> <entityConsumer> <name>KeywordProbabilities</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -378,14 +374,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -400,6 +396,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -411,26 +412,6 @@ </entityActionField> <entityProvider> <name>ContactOffers</name> - <dependencies> - <entityDependency> - <name>5c9720b5-1288-4a30-88fd-6dcff6359083</name> - <entityName>Person_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>b308795f-3c81-4e60-99ca-3b5f8e82f62a</name> - <entityName>Organisation_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a74b02c4-bdb3-4ba8-9207-66a0af528b1b</name> - <entityName>Order_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -481,6 +462,26 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5c9720b5-1288-4a30-88fd-6dcff6359083</name> + <entityName>Person_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>b308795f-3c81-4e60-99ca-3b5f8e82f62a</name> + <entityName>Organisation_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a74b02c4-bdb3-4ba8-9207-66a0af528b1b</name> + <entityName>Order_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>OfferCurrency_param</name> @@ -550,40 +551,35 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerm</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keywordpaymentterm/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerm</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerm</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/keyworddeliveryterm/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -598,6 +594,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>INFO</name> @@ -609,11 +610,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Offer_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Offer_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -624,6 +620,11 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>OfferPaymentTerm_param</name> @@ -663,17 +664,17 @@ </entityField> <entityConsumer> <name>PossibleAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChoosenTEXHeader</name> @@ -715,11 +716,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -730,14 +726,14 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/objects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -748,18 +744,15 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Links</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>88a166e6-ccd0-4d51-b554-e3327f66d834</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Offers</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>OfferDeliveryTerm_param</name> @@ -815,6 +808,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>88a166e6-ccd0-4d51-b554-e3327f66d834</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Offers</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ObjectRowId_param</name> @@ -832,11 +833,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTexHeader</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -847,20 +843,25 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>FOOTER</name> @@ -887,11 +888,6 @@ </entityField> <entityConsumer> <name>DocumentTemplateTexFooter</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -902,20 +898,25 @@ <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Offer_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACT_ID</name> @@ -1052,6 +1053,9 @@ <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1243,10 +1247,6 @@ <name>OBJECT_TYPE.value</name> <recordfield>OFFER.OBJECT_TYPE</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>CONTACT_ID.value</name> <recordfield>OFFER.CONTACT_ID</recordfield> @@ -1304,6 +1304,10 @@ <name>OFFER_ID.value</name> <recordfield>OFFER.OFFER_ID</recordfield> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> diff --git a/entity/Offer_entity/contentDescriptionProcess.js b/entity/Offer_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..f1afab18db7ad38a661329de19f0554dac92285c --- /dev/null +++ b/entity/Offer_entity/contentDescriptionProcess.js @@ -0,0 +1,12 @@ +import("Util_lib"); +import("system.eMath"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = [translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue"), + translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"), + translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Offer_entity/contentTitleProcess.js b/entity/Offer_entity/contentTitleProcess.js index 98f9e420320b5614344632935f8bb864a240052e..e90d32e0f10a837286539bbe79d4558449dd6b19 100644 --- a/entity/Offer_entity/contentTitleProcess.js +++ b/entity/Offer_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.OfferCode_VersNr_fieldgroup")); \ No newline at end of file +var res = [vars.get("$field.OfferCode_VersNr_fieldgroup"), vars.get("$field.STATUS.displayValue")] + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js index 17cc41af8869fdfbe8de679bb2a0190d3367e51a..d610943f3409687827462179063e28df0aa3dde8 100644 --- a/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js +++ b/entity/Offer_entity/entityfields/copyoffer/onActionProcess.js @@ -1,19 +1,19 @@ import("system.vars"); -import("system.neon"); import("Offer_lib"); -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); var offerId = vars.getString("$field.OFFERID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + language: vars.getString("$field.ISOLANGUAGE"), + currency: vars.getString("$field.CURRENCY"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE") +}; - -OfferUtils.copyOffer(offerId, contactId, language, currency, header, footer, deliveryTerm, paymentTerm, objectType, rowId); +OfferUtils.copyOffer(offerId, fieldValues); \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js index ff143a3b866db9b739ae9532997d6dd4041b5a89..58333ceee85c85ca43b36ec1a03d4d3067f6a9a9 100644 --- a/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js +++ b/entity/Offer_entity/entityfields/deliveryterms/valueProcess.js @@ -11,7 +11,7 @@ if (vars.exists("$param.OfferDeliveryTerm_param") && vars.get("$param.OfferDeliv { result.string(vars.get("$param.OfferDeliveryTerm_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")) diff --git a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js index fe2b7c72502d9937add9b539ed38483e6ca4bd51..8074aca46e2680d0b0d19060e41f370b84830fa1 100644 --- a/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Offer_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$field.OBJECT_ROWID") == null) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js index 0f003f4454eb7dc65386ea75080398e1070aef56..820659874926c9870e401c3898695443e6c2a075 100644 --- a/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js +++ b/entity/Offer_entity/entityfields/offerreportdispatch/children/dispatchofferreport/onActionProcess.js @@ -11,7 +11,7 @@ import("MimeType_lib"); var offerReport = {} var attachmentArray = []; -var updateStatements = [["OFFER", ["STATUS"], db.getColumnTypes("OFFER", ["STATUS"]), [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]]; +var updateStatements = [["OFFER", ["STATUS"], null, [$KeywordRegistry.offerStatus$sent()], newWhere("OFFER.OFFERID", vars.get("$field.OFFERID")).build()]]; var notificationMsg = translate.text("The status of the offer was changed to \"sent\"."); var contactId = vars.get("$field.CONTACT_ID"); var arrayReport = OfferUtils.buildOfferReport(vars.get("$field.OFFERID")); diff --git a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js index 4b13796a10e4c66b70d7abe004fa7369b3c515b3..b9fd6cd7aee19dcfa86cb5e4625f9998548efd02 100644 --- a/entity/Offer_entity/entityfields/paymentterms/valueProcess.js +++ b/entity/Offer_entity/entityfields/paymentterms/valueProcess.js @@ -11,7 +11,7 @@ if (vars.exists("$param.OfferPaymentTerm_param") && vars.get("$param.OfferPaymen { result.string(vars.get("$param.OfferPaymentTerm_param")); } -else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +else if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")) diff --git a/entity/Offer_entity/recordcontainers/db/conditionProcess.js b/entity/Offer_entity/recordcontainers/db/conditionProcess.js index 001612ec1946c47b24fee4e07a2273b60586162e..eabc7f2454152f89cb58b7cd582e76dc41cdcdd6 100644 --- a/entity/Offer_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Offer_entity/recordcontainers/db/conditionProcess.js @@ -14,5 +14,4 @@ else { cond.andIfSet("OFFER.STATUS", "$param.OfferStatus_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/db/onDBInsert.js b/entity/Offer_entity/recordcontainers/db/onDBInsert.js index 086ca1c55981c155c21009f26992a12a4a701fac..da551808a8c82e05a35c7aecf40d283434b2f4c0 100644 --- a/entity/Offer_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Offer_entity/recordcontainers/db/onDBInsert.js @@ -1,23 +1,28 @@ +import("Context_lib"); import("system.workflow"); import("Workflow_lib"); -import("system.db"); import("system.datetime"); -import("system.util"); import("system.neon"); import("system.vars"); import("Offer_lib"); +import("Sql_lib"); if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) { + var offerId = vars.get("$local.uid"); if (vars.exists("$param.OfferOriginal_Id_param")) - OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), vars.get("$local.uid")); + OfferUtils.copyOfferItems(vars.getString("$param.OfferOriginal_Id_param"), offerId); var activityId = vars.get("$param.ActivityId_param"); if (activityId) { - var activityLinkColumns = ["ACTIVITYLINKID", "ACTIVITY_ID", "DATE_NEW", "USER_NEW", "OBJECT_TYPE", "OBJECT_ROWID"]; - var activityLinkValues = [util.getNewUUID(), activityId, datetime.date(), vars.get("$sys.user"), "Offer", vars.get("$field.OFFERID")]; - db.insertData("ACTIVITYLINK", activityLinkColumns, null, activityLinkValues); + new SqlBuilder().insertFields({ + "ACTIVITY_ID": activityId, + "DATE_NEW": datetime.date(), + "USER_NEW": vars.get("$sys.user"), + "OBJECT_TYPE": ContextUtils.getCurrentContextId(), + "OBJECT_ROWID": offerId + }, "ACTIVITYLINK", "ACTIVITYLINKID"); } } diff --git a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..6da46407ad55e7e624304130313492b538a2d012 --- /dev/null +++ b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "OFFER.STATUS")); \ 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/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index 33554680cccd2c3d363443686457c41e0c1c5729..0000000000000000000000000000000000000000 --- a/entity/Offer_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("OBJECT_TYPE", "OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Offer_entity/recordcontainers/index/query.js b/entity/Offer_entity/recordcontainers/index/query.js index 7d975c8bb3ea9f1aca3528603f54089ca89cbfbb..b2853b92f92016f237a151162f814427c4ecc671 100644 --- a/entity/Offer_entity/recordcontainers/index/query.js +++ b/entity/Offer_entity/recordcontainers/index/query.js @@ -9,8 +9,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "OFFER.OFFERID", //#UID - sqlHelper.concat([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]), //#DESCRIPTION + sqlHelper.concatWithSeparator([sqlHelper.cast("OFFER.OFFERCODE", SQLTYPES.CHAR, 10), KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.offerStatus(), "OFFER.STATUS")], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'| " + translate.text("Description") + ":'", sqlHelper.castLob("OFFER.INFO", 250)]), //#DESCRIPTION "OFFER.OFFERCODE", "OFFER.CONTACT_ID", "CONTACT.ORGANISATION_ID", //CONTACT_ORG_ID diff --git a/entity/Offeritem_entity/Offeritem_entity.aod b/entity/Offeritem_entity/Offeritem_entity.aod index a900e6473e8d7ded55a0ca946aa0798296bf657e..281231dc1f88650ef4b04dd1f128b7d1438a4e60 100644 --- a/entity/Offeritem_entity/Offeritem_entity.aod +++ b/entity/Offeritem_entity/Offeritem_entity.aod @@ -163,14 +163,6 @@ <entityProvider> <name>OfferItems</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> - <entityName>Offer_entity</entityName> - <fieldName>Offeritems</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -194,6 +186,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> + <entityName>Offer_entity</entityName> + <fieldName>Offeritems</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>INFO</name> @@ -204,11 +204,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -216,14 +211,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -231,6 +226,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> 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/Offeritem_entity/recordcontainers/db/conditionProcess.js b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js index 82c536561aaac4f8a876433b2311a932cc7b50f4..ee1e6cbd8479673064d2d5aa2350046f148b9102 100644 --- a/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Offeritem_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("system.vars"); var cond = newWhereIfSet("OFFERITEM.OFFER_ID", "$param.OfferId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Order_entity/Order_entity.aod b/entity/Order_entity/Order_entity.aod index 06389d921d507bf630d1baddcbbcd03d570f6faa..0bda9d9f780367d4ddabd0e30a5e482e6d67418c 100644 --- a/entity/Order_entity/Order_entity.aod +++ b/entity/Order_entity/Order_entity.aod @@ -6,6 +6,7 @@ <title>Receipt</title> <grantDeleteProcess>%aditoprj%/entity/Order_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Order_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Order_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Order_entity/afterUiInit.js</afterUiInit> <useFavorites v="true" /> <iconId>VAADIN:DOLLAR</iconId> @@ -28,6 +29,12 @@ <fieldName>Orders</fieldName> <isConsumer v="false" /> </entityDependency> + <entityDependency> + <name>bfc738ad-8af3-4d2b-9ed5-b3ca2212bb9e</name> + <entityName>Person_entity</entityName> + <fieldName>Orders</fieldName> + <isConsumer v="false" /> + </entityDependency> </dependencies> </entityProvider> <entityField> @@ -100,11 +107,6 @@ <entityConsumer> <name>Orderitems</name> <description></description> - <dependency> - <name>dependency</name> - <entityName>Orderitem_entity</entityName> - <fieldName>Orderitems</fieldName> - </dependency> <children> <entityParameter> <name>OrderId_param</name> @@ -130,6 +132,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Orderitem_entity</entityName> + <fieldName>Orderitems</fieldName> + </dependency> </entityConsumer> <entityField> <name>NET</name> @@ -191,11 +198,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -206,19 +208,16 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> - <entityParameter> - <name>AssignmentName_param</name> - </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmentrowid_param/valueProcess.js</valueProcess> @@ -228,28 +227,28 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/salesprojects/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordCurrencies</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordCurrencies</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -257,14 +256,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -272,6 +271,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -290,11 +294,6 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -309,6 +308,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>OFFER_ID</name> @@ -322,11 +326,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -341,15 +340,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Order_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -360,15 +359,15 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -379,20 +378,25 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORDERTYPE</name> @@ -470,31 +474,31 @@ </entityField> <entityConsumer> <name>KeywordOrderTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordordertypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDunningLevels</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDunningLevels</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddunninglevels/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>OBJECT_ROWID</name> @@ -522,11 +526,6 @@ </entityField> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -537,14 +536,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contexts</name> <dependency> <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> + <entityName>Object_entity</entityName> + <fieldName>FilteredObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contexts</name> <children> <entityParameter> <name>Blacklist_param</name> @@ -555,6 +554,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PossibleConnectionTypes</name> @@ -607,46 +611,46 @@ </entityField> <entityConsumer> <name>KeywordPaymentTerms</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keywordpaymentterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordDeliveryTerms</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordDeliveryTerms</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/keyworddeliveryterms/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PossibleAddresses</name> <documentation>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/possibleaddresses/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>NOTICE</name> @@ -663,25 +667,20 @@ </entityField> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexHeader</name> <dependency> <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexHeader</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -692,14 +691,14 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexheader/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>DocumentTemplateTexFooter</name> <dependency> <name>dependency</name> <entityName>DocumentTemplate_entity</entityName> <fieldName>DocumentTemplateProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>DocumentTemplateTexFooter</name> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -710,6 +709,11 @@ <valueProcess>%aditoprj%/entity/Order_entity/entityfields/documenttemplatetexfooter/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>ChosenTexHeader</name> @@ -797,10 +801,10 @@ <title>Count</title> </entityAggregateField> <entityActionField> - <name>newOrder</name> - <documentation>%aditoprj%/entity/Order_entity/entityfields/neworder/documentation.adoc</documentation> + <name>copyOrder</name> + <documentation>%aditoprj%/entity/Order_entity/entityfields/copyorder/documentation.adoc</documentation> <title>Copy receipt</title> - <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/neworder/onActionProcess.js</onActionProcess> + <onActionProcess>%aditoprj%/entity/Order_entity/entityfields/copyorder/onActionProcess.js</onActionProcess> <iconId>VAADIN:COPY</iconId> </entityActionField> <entityActionField> @@ -916,6 +920,19 @@ </entityActionField> </children> </entityActionGroup> + <entityParameter> + <name>SourceOrderId_param</name> + <expose v="true" /> + <description></description> + </entityParameter> + <entityField> + <name>DATE_NEW</name> + <contentType>DATE</contentType> + <resolution>DAY</resolution> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -1072,14 +1089,6 @@ <name>OBJECT_ROWID.value</name> <recordfield>SALESORDER.OBJECT_ROWID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OBJECT_ROWID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js</expression> - </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>OFFER_ID.displayValue</name> - <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> <dbRecordFieldMapping> <name>OBJECT_TYPE.value</name> <recordfield>SALESORDER.OBJECT_TYPE</recordfield> @@ -1139,6 +1148,14 @@ <recordfield>SALESORDER.SALESORDERID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>SALESORDER.SALESORDERDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtension> diff --git a/entity/Order_entity/contentDescriptionProcess.js b/entity/Order_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..bd351d26e62473bda001b51a8393d3ed4f2cdb19 --- /dev/null +++ b/entity/Order_entity/contentDescriptionProcess.js @@ -0,0 +1,19 @@ +import("system.logging"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +var orderstatus = vars.get("$field.ORDERSTATUS") == "1" ? translate.text("Yes"): translate.text("No") + +var res = [translate.text("Sent") + ": " + orderstatus, + translate.text("Total gross") + ": " + vars.get("$field.TotalGross.displayValue")] + +if(vars.get("$field.PAYDATE")) + res.push(translate.text("Pay date") + ": " + datetime.toDate(vars.get("$field.PAYDATE"), translate.text("dd.MM.yyyy"))) + + +res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Order_entity/contentTitleProcess.js b/entity/Order_entity/contentTitleProcess.js index efca7174f4eba418870382ab3a958d1428e7d247..376625c4943175ab2b0f7f9b5da3a2e7c9d66f4f 100644 --- a/entity/Order_entity/contentTitleProcess.js +++ b/entity/Order_entity/contentTitleProcess.js @@ -4,4 +4,9 @@ import("system.translate"); import("system.vars"); import("system.result"); -result.string(KeywordUtils.getViewValue($KeywordRegistry.orderType(), vars.get("$field.ORDERTYPE")) +" - "+ vars.get("$field.SALESORDERCODE")); +var res = [vars.get("$field.SALESORDERCODE")]; + +if(vars.get("$field.CANCELLATION") == "1") + res.push(translate.text("${ORDER_CANCELLED}")); + +result.string(res.join(" | ")); diff --git a/entity/Order_entity/entityfields/neworder/documentation.adoc b/entity/Order_entity/entityfields/copyorder/documentation.adoc similarity index 100% rename from entity/Order_entity/entityfields/neworder/documentation.adoc rename to entity/Order_entity/entityfields/copyorder/documentation.adoc diff --git a/entity/Order_entity/entityfields/copyorder/onActionProcess.js b/entity/Order_entity/entityfields/copyorder/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..57c33c7f0149a55843b44c007ac0c13ab4645ede --- /dev/null +++ b/entity/Order_entity/entityfields/copyorder/onActionProcess.js @@ -0,0 +1,30 @@ +import("system.vars"); +import("system.neon"); +import("Order_lib"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); + + +var orderId = vars.get("$field.SALESORDERID"); +var fieldValues = { + contactId: vars.getString("$field.CONTACT_ID"), + currency: vars.getString("$field.CURRENCY"), + language: vars.getString("$field.ISOLANGUAGE"), + header: vars.getString("$field.HEADER"), + footer: vars.getString("$field.FOOTER"), + offerId: vars.getString("$field.OFFER_ID"), + deliveryTerm: vars.getString("$field.DELIVERYTERMS"), + paymentTerm: vars.getString("$field.PAYMENTTERMS"), + paymentAddress: vars.getString("$field.PAYMENTADDRESS"), + deliveryAddress: vars.getString("$field.DELIVERYADDRESS"), + objectRowId: vars.getString("$field.OBJECT_ROWID"), + objectType: vars.getString("$field.OBJECT_TYPE"), + dunningDate: vars.getString("$field.DUNNINGDATE"), + dunningLevel: vars.getString("$field.DUNNINGLEVEL"), + orderType: vars.getString("$field.ORDERTYPE"), + cancellation: vars.getString("$field.CANCELLATION"), + orderStatus:vars.getString("$field.ORDERSTATUS") +}; + +OrderUtils.copyOrder(orderId, fieldValues); + \ No newline at end of file diff --git a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js index 8e6fb1be5bc999ff98be26570bbd8ff5d5233ff1..ed78d05852c8a088d333cf55307036313541b3e1 100644 --- a/entity/Order_entity/entityfields/deliveryterms/valueProcess.js +++ b/entity/Order_entity/entityfields/deliveryterms/valueProcess.js @@ -9,7 +9,7 @@ import("Contact_lib"); -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) { var presetValue = ""; var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); diff --git a/entity/Order_entity/entityfields/neworder/onActionProcess.js b/entity/Order_entity/entityfields/neworder/onActionProcess.js deleted file mode 100644 index d73a39e61fe0b77c7736dd936384a78344dd2e9d..0000000000000000000000000000000000000000 --- a/entity/Order_entity/entityfields/neworder/onActionProcess.js +++ /dev/null @@ -1,26 +0,0 @@ -import("system.vars"); -import("system.neon"); -import("Order_lib"); -import("Keyword_lib"); -import("KeywordRegistry_basic"); - -var contactId = vars.getString("$field.CONTACT_ID"); -var currency = vars.getString("$field.CURRENCY"); -var language = vars.getString("$field.ISOLANGUAGE"); -var header = vars.getString("$field.HEADER"); -var footer = vars.getString("$field.FOOTER"); -var offerId = vars.getString("$field.OFFER_ID"); -var deliveryTerm = vars.getString("$field.DELIVERYTERMS"); -var paymentTerm = vars.getString("$field.PAYMENTTERMS"); -var paymentAddress = vars.getString("$field.PAYMENTADDRESS"); -var deliveryAddress = vars.getString("$field.DELIVERYADDRESS"); -var rowId = vars.getString("$field.OBJECT_ROWID"); -var objectType = vars.getString("$field.OBJECT_TYPE"); -var dunningDate = vars.getString("$field.DUNNINGDATE"); -var dunningLevel = vars.getString("$field.DUNNINGLEVEL"); -var orderType= vars.getString("$field.ORDERTYPE"); -var cancellation= vars.getString("$field.CANCELLATION"); -var orderStatus=vars.getString("$field.ORDERSTATUS"); - -OrderUtils.copyOrder(offerId, contactId, orderType, language, currency, header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, rowId, dunningDate, dunningLevel, cancellation, orderStatus); - \ No newline at end of file diff --git a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js index 8b080bceea92c146a676b0f33cc7cb87d4e86b9d..95c4eea5367140dc2d81e470ba0607adf52f07c1 100644 --- a/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/Order_entity/entityfields/object_rowid/displayValueProcess.js @@ -7,5 +7,5 @@ import("Context_lib"); if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && !vars.get("$field.OBJECT_ROWID")) { result.string(""); } else if (vars.exists("$field.OBJECT_TYPE") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js index 7b92c1bb14aa08001b7d5738111337ab7e81f4cc..cf4b6cd38a6154032bc3607894ce054e4754a062 100644 --- a/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js +++ b/entity/Order_entity/entityfields/offers/children/contactid_param/valueProcess.js @@ -1,10 +1,4 @@ import("system.result"); import("system.vars"); -import("Contact_lib"); -if (vars.get("$field.CONTACT_ID")) -{ - var ids = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); - if (ids.length >= 3 && ids[2]) - result.string(ids[2]); -} \ No newline at end of file +result.string(vars.get("$field.CONTACT_ID")); diff --git a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js index 44cf00055adb79b0f8a573e12ded26e954c36f73..53225e7adf9f1876a1494a42cda2bf08e726f5b0 100644 --- a/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js +++ b/entity/Order_entity/entityfields/orderreportdispatch/children/dispatchorderreport/onActionProcess.js @@ -8,7 +8,7 @@ import("Sql_lib"); var orderReport = {}; var attachmentArray = []; -var updateStatements = [["SALESORDER", ["ORDERSTATUS"], db.getColumnTypes("SALESORDER", ["ORDERSTATUS"]), ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]]; +var updateStatements = [["SALESORDER", ["ORDERSTATUS"], null, ["1"], newWhere("SALESORDER.SALESORDERID", vars.get("$field.SALESORDERID")).build()]]; var notificationMsg = translate.text("The status of the order was changed to \"sent\"."); var contactId = vars.get("$field.CONTACT_ID"); var orgContactId = vars.get("$field.CONTACT_ORG_ID"); diff --git a/entity/Order_entity/entityfields/paymentterms/valueProcess.js b/entity/Order_entity/entityfields/paymentterms/valueProcess.js index 7501b966d14bf76fa1fc2ded5b655a8f0e3e9129..8cf77fdb2b60bc5b819d97a770b3b3c3e8cd8199 100644 --- a/entity/Order_entity/entityfields/paymentterms/valueProcess.js +++ b/entity/Order_entity/entityfields/paymentterms/valueProcess.js @@ -7,23 +7,23 @@ import("system.result"); import("system.vars"); import("Attribute_lib"); -if (vars.get("$this.value") == null) { - if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) + +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null && vars.get("$field.CONTACT_ID")) +{ + var presetValue = ""; + var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); + if (contactIds.length >= 3 && contactIds[2]) { - var presetValue = ""; - var contactIds = ContactUtils.getPersOrgIds(vars.getString("$field.CONTACT_ID")); - if (contactIds.length >= 3 && contactIds[2]) - { - var orgContactId = ContactUtils.getOrgContactId(contactIds[2]); - if (orgContactId) - { - presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue(); - } + var orgContactId = ContactUtils.getOrgContactId(contactIds[2]); + if (orgContactId) + { + presetValue = new AttributeRelationQuery(orgContactId, $AttributeRegistry.paymentTerm()).getSingleAttributeValue(); } - - if (presetValue) - result.string(presetValue); - else - result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm())); } + + if (presetValue) + result.string(presetValue); + else + result.string(KeywordUtils.getFirst($KeywordRegistry.paymentTerm())); } + diff --git a/entity/Order_entity/recordcontainers/db/conditionProcess.js b/entity/Order_entity/recordcontainers/db/conditionProcess.js index d799cf12382ac030ddeeb35b7e61e891c2a07f6e..572d8249ded4490fb35322640e28b49764831b3f 100644 --- a/entity/Order_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Order_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ else { cond.andIfSet("SALESORDER.OBJECT_ROWID", "$param.ObjectRowId_param") .andIfSet("SALESORDER.OBJECT_TYPE", "$param.ObjectType_param"); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/onDBInsert.js b/entity/Order_entity/recordcontainers/db/onDBInsert.js index 8e0f20e8575328e3bb330498cf028d3c9a7ee08c..bd3c2bb14b920b17de3b9bfba245f260f445b66d 100644 --- a/entity/Order_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Order_entity/recordcontainers/db/onDBInsert.js @@ -4,7 +4,11 @@ import("system.neon"); import("system.vars"); //@TODO: OfferId_param is also set by 'copy order' -> the items of the offer are copied. What should happen? -if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.exists("$param.OfferId_param")) - OrderUtils.copyOfferItemsToOrder(vars.getString("$param.OfferId_param"), vars.get("$local.rowdata")["SALESORDER.SALESORDERID"]); - +if (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +{ + if (vars.exists("$param.OfferId_param") && vars.get("$param.OfferId_param")) + OrderUtils.copyOfferItemsToOrder(vars.get("$param.OfferId_param"), vars.get("$local.uid")); + if (vars.exists("$param.SourceOrderId_param") && vars.get("$param.SourceOrderId_param")) + OrderUtils.copyOrderItems(vars.get("$param.SourceOrderId_param"), vars.get("$local.uid")); +} WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..b6235593124a2fa09d7432f19455a4dc4cc42dda --- /dev/null +++ b/entity/Order_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [0, 1]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESORDER.ORDERSTATUS")); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js deleted file mode 100644 index bbe883a82964ab9693ce6c4fca792a9c27e01363..0000000000000000000000000000000000000000 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/object_rowid.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("SALESORDER.OBJECT_TYPE", "SALESORDER.OBJECT_ROWID")) \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js b/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js deleted file mode 100644 index a86ac585f271d61227c89ec425d97d7c43e2a73d..0000000000000000000000000000000000000000 --- a/entity/Order_entity/recordcontainers/db/recordfieldmappings/offer_id.displayvalue/expression.js +++ /dev/null @@ -1,4 +0,0 @@ -import("system.result"); -import("Context_lib"); - -result.string(ContextUtils.getNameSubselectSql("'Offer'", "SALESORDER.OFFER_ID")); \ No newline at end of file diff --git a/entity/Order_entity/recordcontainers/index/query.js b/entity/Order_entity/recordcontainers/index/query.js index 75ed9d1999b1e1b53073b2c6f99a368fb69cb874..74db3c61d092e8fc771d678ec24bbccd860ca727 100644 --- a/entity/Order_entity/recordcontainers/index/query.js +++ b/entity/Order_entity/recordcontainers/index/query.js @@ -8,8 +8,8 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "SALESORDERID", //#UID - sqlHelper.concat([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | "), //#TITLE - sqlHelper.concat(["ORGANISATION.NAME"], " | "), //#DESCRIPTION + sqlHelper.concatWithSeparator([sqlHelper.cast("SALESORDERCODE", SQLTYPES.CHAR, 10)], " | "), //#TITLE + sqlHelper.concatWithSeparator(["ORGANISATION.NAME"], " | "), //#DESCRIPTION "SALESORDERCODE", "SALESORDER.CONTACT_ID", "CONTACT.ORGANISATION_ID", //as CONTACT_ORG_ID diff --git a/entity/Orderitem_entity/Orderitem_entity.aod b/entity/Orderitem_entity/Orderitem_entity.aod index 888a453225876d3097dfbf65f250e8a3576e83b5..1f80cb9b60958fc24d08fd0d68b3b04b2ff95c97 100644 --- a/entity/Orderitem_entity/Orderitem_entity.aod +++ b/entity/Orderitem_entity/Orderitem_entity.aod @@ -144,20 +144,6 @@ <entityProvider> <name>Orderitems</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> - <entityName>Order_entity</entityName> - <fieldName>Orderitems</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>911de4a4-0e85-4d50-93ee-6f8f2308589e</name> - <entityName>Order_entity</entityName> - <fieldName>Orderitems</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -180,6 +166,20 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>7810e350-d011-4d95-8d0b-883f3a0e519c</name> + <entityName>Order_entity</entityName> + <fieldName>Orderitems</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>911de4a4-0e85-4d50-93ee-6f8f2308589e</name> + <entityName>Order_entity</entityName> + <fieldName>Orderitems</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>INFO</name> @@ -188,11 +188,6 @@ </entityField> <entityConsumer> <name>KeywordProductGroupcodes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -200,14 +195,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -215,6 +210,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> diff --git a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js index 5957207757012e79cce2cff0ed3316c780d85fec..6794f43bc98a7ee4099be70e2d1ce4215cccab26 100644 --- a/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Orderitem_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ import("system.vars"); var cond = newWhereIfSet("SALESORDERITEM.SALESORDER_ID", "$param.OrderId_param") -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Organisation_entity/Organisation_entity.aod b/entity/Organisation_entity/Organisation_entity.aod index 4d5db6ed1a8789383791d9793b7c5791ae8f30a6..076fe1f6213c28183ea068723d42855cd05d09c4 100644 --- a/entity/Organisation_entity/Organisation_entity.aod +++ b/entity/Organisation_entity/Organisation_entity.aod @@ -7,6 +7,7 @@ <title>Company</title> <grantDeleteProcess>%aditoprj%/entity/Organisation_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Organisation_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Organisation_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Organisation_entity/afterUiInit.js</afterUiInit> <initFilterProcess>%aditoprj%/entity/Organisation_entity/initFilterProcess.js</initFilterProcess> <useFavorites v="true" /> @@ -71,11 +72,6 @@ </entityField> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -86,21 +82,26 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contact</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>OrganisationRelated</fieldName> - </dependency> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/contact/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>OrganisationRelated</fieldName> + </dependency> </entityConsumer> <entityFieldGroup> <name>CUSTOMERCODE_DISPLAY_fieldGroup</name> @@ -114,6 +115,36 @@ <name>Organisations</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisations/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>WithPrivate_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ExcludeOrganisationsByPersonId</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ExcludedContactIds_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>AttributeKeyId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>AttributeId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateActionsControl_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>DuplicateCurrentContactId_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>85aa363e-d8ba-4df5-8422-bf7aff86a4f8</name> @@ -152,44 +183,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>WithPrivate_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ExcludeOrganisationsByPersonId</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ExcludedContactIds_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>AttributeKeyId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>AttributeId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateActionsControl_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>DuplicateCurrentContactId_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>Addresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -201,6 +197,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -211,11 +212,6 @@ </entityField> <entityConsumer> <name>Communications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -227,15 +223,15 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Contracts</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -244,14 +240,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Productprices</name> <dependency> <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Productprices</name> <children> <entityParameter> <name>ContactId_param</name> @@ -260,10 +256,14 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> - <sortingField>NAME</sortingField> <dependencies> <entityDependency> <name>1a472ca0-4d27-453c-8de5-a046b86f22fb</name> @@ -300,11 +300,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -315,6 +310,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -330,11 +330,6 @@ </entityField> <entityConsumer> <name>PhoneCommunications</name> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -342,14 +337,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -357,6 +352,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Countries</name> @@ -369,11 +369,6 @@ <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -385,14 +380,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributes/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordContactStates</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordContactStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -400,14 +395,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordOrganisationTypes</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordOrganisationTypes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -415,6 +410,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -426,11 +426,6 @@ </entityConsumer> <entityConsumer> <name>KeywordPricePolitics</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -438,14 +433,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordWeaknesses</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordWeaknesses</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -453,14 +448,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStrenghts</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStrenghts</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -468,14 +463,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salesprojects</name> <dependency> <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Salesprojects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salesprojects</name> <children> <entityParameter> <name>ContactId_param</name> @@ -484,14 +479,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>Salesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ContactId_param</name> @@ -500,14 +495,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Tasks</name> <dependency> <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Tasks</name> <children> <entityParameter> <name>RowId_param</name> @@ -518,6 +513,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>WithPrivate_param</name> @@ -528,11 +528,6 @@ </entityParameter> <entityConsumer> <name>ObjectTrees</name> - <dependency> - <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectIds_param</name> @@ -543,14 +538,14 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> @@ -559,14 +554,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>360DegreeObjects</name> <dependency> <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>OrganisationObjects</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>360DegreeObjects</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -577,6 +572,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>360Degree_entity</entityName> + <fieldName>OrganisationObjects</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -587,26 +587,6 @@ <entityProvider> <name>WithPersonIdFilter</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withpersonidfilter/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> - <entityName>Contact_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> - <entityName>Person_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisation</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -639,6 +619,26 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5a456b04-f0ca-4a45-9c1f-bdfdf074434a</name> + <entityName>Contact_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>a80c3db0-29db-433c-8f7c-4ebf6639ad6d</name> + <entityName>Person_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>748a3083-89c2-41b4-a233-3fd5364396e9</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisation</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>AttributeId_param</name> @@ -653,20 +653,6 @@ <entityProvider> <name>WithAttribute</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/withattribute/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> - <entityName>Competition_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f368be61-1a15-449f-b37c-b1343069412c</name> - <entityName>Product_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeId_param</name> @@ -698,6 +684,20 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>10480df2-f0b6-4cb6-8bfb-4a468b994996</name> + <entityName>Competition_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f368be61-1a15-449f-b37c-b1343069412c</name> + <entityName>Product_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>ExcludedContactIds_param</name> @@ -706,11 +706,6 @@ </entityParameter> <entityConsumer> <name>AttributeTree</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -721,6 +716,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -772,11 +772,6 @@ <entityConsumer> <name>AttributeConditions</name> <onValidation>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -799,20 +794,29 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributeconditions/children/showempty_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LinkedAppointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LinkedAppointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Products</name> @@ -955,6 +959,13 @@ <tooltip>Export fields of this table</tooltip> <tooltipProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/export/tooltipProcess.js</tooltipProcess> </entityActionField> + <entityActionField> + <name>startMarketingWorkflows</name> + <title>Start marketing mailing</title> + <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> + </entityActionField> </children> </entityActionGroup> <entityActionField> @@ -1043,6 +1054,8 @@ <name>IntegrateSelectedIntoCurrentAction</name> <title>Integrate selected into current contact</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:IMPORT</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess> @@ -1051,6 +1064,8 @@ <name>IntegrateCurrentIntoSelectedAction</name> <title>Integrate current into selected contact</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:EXPORT</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess> @@ -1059,6 +1074,8 @@ <name>IgnoreDuplicate</name> <title>Ignore Duplicate</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess> @@ -1067,6 +1084,7 @@ <name>IgnoreWholeCluster</name> <title>Ignore whole Cluster</title> <onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess> </entityActionField> @@ -1083,11 +1101,6 @@ </entityParameter> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -1107,20 +1120,25 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>CommRestrictions</name> <dependency> <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>SelfDuplicates</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>CommRestrictions</name> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityField> <name>COMMRESTRICTIONS_ACTIVE</name> @@ -1175,11 +1193,6 @@ <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ClassificationType_param</name> @@ -1197,6 +1210,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>COUNT</name> @@ -1217,14 +1235,6 @@ <name>OrganisationsViaIndex</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/organisationsviaindex/documentation.adoc</documentation> <recordContainer>index</recordContainer> - <dependencies> - <entityDependency> - <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> - <entityName>AroundLocation_entity</entityName> - <fieldName>Organisations</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> @@ -1267,6 +1277,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>e60b8983-166d-4280-a1a5-f990ad77eeb9</name> + <entityName>AroundLocation_entity</entityName> + <fieldName>Organisations</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openAroundLocation</name> @@ -1337,17 +1355,17 @@ </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> - <dependency> - <name>dependency</name> - <entityName>DistrictResponsible_entity</entityName> - <fieldName>OrganisationResponsibles</fieldName> - </dependency> <children> <entityParameter> <name>OrgUid_param</name> <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DistrictResponsible_entity</entityName> + <fieldName>OrganisationResponsibles</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>FilterPreSet_param</name> @@ -1356,14 +1374,6 @@ <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Organisation_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicateOrganisationsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>AttributeKeyId_param</name> @@ -1386,6 +1396,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>2e410b9e-5ebc-48ea-9562-da386202d7e8</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicateOrganisationsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionGroup> <name>orgReportDispatch</name> @@ -1402,11 +1420,6 @@ </entityActionGroup> <entityConsumer> <name>AttributesFilter</name> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>FilterProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -1417,6 +1430,11 @@ <valueProcess>%aditoprj%/entity/Organisation_entity/entityfields/attributesfilter/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>FilterProvider</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> @@ -1658,6 +1676,8 @@ <filterFieldsProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> diff --git a/entity/Organisation_entity/contentDescriptionProcess.js b/entity/Organisation_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b --- /dev/null +++ b/entity/Organisation_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js index 1f3a9e3ddfca04ca5911fd70b734115ff1f60291..6bb5f4cde7193d3a4171b6d613cbfb0bfee097c8 100644 --- a/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js +++ b/entity/Organisation_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js @@ -16,5 +16,8 @@ if(mergeSuccess) if(currentContactId == null) currentContactId = ""; DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Organisation"); - neon.refreshAll(); + //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both, + //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted + //and does not exist any more which results in an exception + neon.refresh(); } \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2b04867cc90fd72a300747605800b32664d4b5b4 --- /dev/null +++ b/entity/Organisation_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -0,0 +1,9 @@ +import("Context_lib"); +import("system.vars"); +import("system.neon"); + +neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { + "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), + "ObjectType_param": ContextUtils.getCurrentContextId() +}); \ No newline at end of file diff --git a/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..15b1f8d0322593145f40d707c61dfdfd9babf0fe --- /dev/null +++ b/entity/Organisation_entity/entityfields/linkedappointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js index 7ef4fdefa4f6e4dcb25f9b97086b5a1e943e0dda..a38a50972c05d3a71887d352e767a4413d5398bb 100644 --- a/entity/Organisation_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Organisation_entity/recordcontainers/db/conditionProcess.js @@ -55,5 +55,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup SqlBuilder.EXISTS() ); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..03fd2fb9213fbcb64981815207d65e37e1c00e3e --- /dev/null +++ b/entity/Organisation_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("ORGANISATION \n\ + join CONTACT on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null)\n\ + left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID)"); +result.string(sqlCond); \ 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/onDBInsert.js b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js index 434601a60b8df854ee2910909a9c22d187266dd9..87c54eb133ade2f232b31f1ef23e47e3053e1f7f 100644 --- a/entity/Organisation_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Organisation_entity/recordcontainers/db/onDBInsert.js @@ -1,13 +1,9 @@ import("system.vars"); -import("Classification_lib"); import("Workflow_lib"); - var uid = vars.get("$sys.uid"); var contextname = vars.get("$sys.currentcontextname"); -ClassificationUtils.insertEmptyClassification(uid, contextname); - //start the execution in afterOperatingState, because here the dataset is not yet inserted vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Organisation_entity/recordcontainers/index/query.js b/entity/Organisation_entity/recordcontainers/index/query.js index 2d434dc250ffc55f3a17d7dfc6994f29dc86f083..e26250598edb296c39f96f355d82fae6f096a7df 100644 --- a/entity/Organisation_entity/recordcontainers/index/query.js +++ b/entity/Organisation_entity/recordcontainers/index/query.js @@ -20,14 +20,14 @@ var commMediumMailIds = CommUtil.getMediumIdsByCategory("EMAIL"); var sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTACT.CONTACTID", - sqlHelper.concat(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]), - sqlHelper.concat([ - sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO", "'-'" + sqlHelper.concatWithSeparator(["ORGANISATION.NAME", "'|'", "ORGANISATION.CUSTOMERCODE"]), + sqlHelper.concatWithSeparator([ + sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO", "'-'" ,"standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]), - sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), - sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + sqlHelper.concatWithSeparator(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), + sqlHelper.concatWithSeparator(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) ], " | "), - sqlHelper.concat([sqlHelper.cast("standardAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("standardAddress.LON", SQLTYPES.VARCHAR, 16)], ","), + sqlHelper.concatWithSeparator([sqlHelper.cast("standardAddress.LAT", SQLTYPES.VARCHAR, 16), sqlHelper.cast("standardAddress.LON", SQLTYPES.VARCHAR, 16)], ","), //additional indexed fields "ORGANISATION.NAME", sqlHelper.trim("ORGANISATION.ORGANISATIONID"),//trim to enable filter patterns like: >> -organisationid_value:0<< @@ -39,8 +39,8 @@ var querySelect = newSelect([ "ADDRESS.CITY", "standardEmail.ADDR", "standardPhone.ADDR", - sqlHelper.concat([sqlHelper.concat(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) - ,sqlHelper.concat(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) + sqlHelper.concatWithSeparator([sqlHelper.concatWithSeparator(["standardAddress.ADDRESS", "standardAddress.BUILDINGNO"]) + ,sqlHelper.concatWithSeparator(["standardAddress.COUNTRY", "standardAddress.ZIP", "standardAddress.CITY"]) ], " - ") ]) .from("ORGANISATION") diff --git a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod index 6fd9cfebf50492e7de30e44e050a9e60450778b5..c4614de972159eb81a5f83a2576106930fdee3cf 100644 --- a/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod +++ b/entity/PermissionCalendar_entity/PermissionCalendar_entity.aod @@ -147,11 +147,6 @@ </entityField> <entityConsumer> <name>Departments</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ParentId_param</name> @@ -162,6 +157,11 @@ <valueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/departments/children/includeparentrecord_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>User</name> @@ -184,17 +184,17 @@ </entityField> <entityConsumer> <name>KeywordPermissionCalendarTypes</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/PermissionCalendar_entity/entityfields/keywordpermissioncalendartypes/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>PermissionDealer_param</name> diff --git a/entity/PermissionDetail_entity/PermissionDetail_entity.aod b/entity/PermissionDetail_entity/PermissionDetail_entity.aod index e18801ffb9cab3450e4dc8c5dbe77069c76add1b..afc95caa0edab0f2d58760314ef6c1987c2e5c8c 100644 --- a/entity/PermissionDetail_entity/PermissionDetail_entity.aod +++ b/entity/PermissionDetail_entity/PermissionDetail_entity.aod @@ -139,11 +139,6 @@ </entityParameter> <entityConsumer> <name>KeywordConditionType</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -151,14 +146,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordAccessType</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordAccessType</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -166,17 +161,17 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PermissionActions</name> <refreshParent v="true" /> <stateProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>PermissionAction_entity</entityName> - <fieldName>PermissionActions</fieldName> - </dependency> <children> <entityParameter> <name>PermissionId_param</name> @@ -195,6 +190,11 @@ <valueProcess>%aditoprj%/entity/PermissionDetail_entity/entityfields/permissionactions/children/fullpermissions_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionAction_entity</entityName> + <fieldName>PermissionActions</fieldName> + </dependency> </entityConsumer> <entityField> <name>FULLPERMISSIONS</name> diff --git a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod index b2006b9d74a349c0fd3b27a7ceca370802b5c8d6..6c80e3e90f082da76319817007d6a006c1349bd2 100644 --- a/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod +++ b/entity/PermissionMetaData_entity/PermissionMetaData_entity.aod @@ -32,6 +32,12 @@ <entityProvider> <name>MetaData</name> <recordContainer>jDito</recordContainer> + <children> + <entityParameter> + <name>EntityName_param</name> + <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>3b2c9421-5ff0-49a3-99f0-6790f17bd76c</name> @@ -40,42 +46,36 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>EntityName_param</name> - <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/metadata/children/entityname_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>PermissionOverviews</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>PermissionOverview_entity</entityName> - <fieldName>PermissionOverviews</fieldName> - </dependency> <children> <entityParameter> <name>EntityTitle_param</name> <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissionoverviews/children/entitytitle_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionOverview_entity</entityName> + <fieldName>PermissionOverviews</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>PermissionDetails</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>PermissionDetail_entity</entityName> - <fieldName>Permissions</fieldName> - </dependency> <children> <entityParameter> <name>EntityTitle_param</name> <valueProcess>%aditoprj%/entity/PermissionMetaData_entity/entityfields/permissiondetails/children/entitytitle_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>PermissionDetail_entity</entityName> + <fieldName>Permissions</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>EntityName_param</name> 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 c66ce949329c5b9e71486cb5802b41b0b2244ddf..ccb951171b001f5b1ed08cf8daa5368ae64d7990 100644 --- a/entity/Person_entity/Person_entity.aod +++ b/entity/Person_entity/Person_entity.aod @@ -62,6 +62,7 @@ <title>Salutation</title> <consumer>Salutations</consumer> <mandatory v="true" /> + <displayValueProcess>%aditoprj%/entity/Person_entity/entityfields/salutation/displayValueProcess.js</displayValueProcess> </entityField> <entityField> <name>TITLE</name> @@ -89,11 +90,6 @@ </entityFieldGroup> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -108,6 +104,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/activities/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACTID</name> @@ -118,14 +119,6 @@ <name>OrganisationRelated</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/organisationrelated/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>41952879-c2f0-411f-8ca1-36c38914a629</name> - <entityName>Organisation_entity</entityName> - <fieldName>Contact</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -144,6 +137,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>41952879-c2f0-411f-8ca1-36c38914a629</name> + <entityName>Organisation_entity</entityName> + <fieldName>Contact</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>PERSON_ID</name> @@ -161,11 +162,6 @@ </entityField> <entityConsumer> <name>PersAddresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>ContactAddresses</fieldName> - </dependency> <children> <entityParameter> <name>DefaultAddressId_param</name> @@ -185,14 +181,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/persaddresses/children/replacestandardaddress_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Communications</name> <dependency> <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>AllCommunications</fieldName> + <entityName>Address_entity</entityName> + <fieldName>ContactAddresses</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Communications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -210,29 +206,29 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/communications/children/contactsmaincountry_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>AllCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Organisations</name> <selectionMode>SINGLE</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>WithPersonIdFilter</fieldName> - </dependency> <children> <entityParameter> <name>ExcludeOrganisationsByPersonId</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/organisations/children/excludeorganisationsbypersonid/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contracts</name> <dependency> <name>dependency</name> - <entityName>Contract_entity</entityName> - <fieldName>Contracts</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>WithPersonIdFilter</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contracts</name> <children> <entityParameter> <name>ContactId_param</name> @@ -241,16 +237,16 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contract_entity</entityName> + <fieldName>Contracts</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Pricelists</name> <state>AUTO</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/pricelists/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -259,6 +255,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Genders</name> @@ -313,11 +314,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -332,6 +328,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -356,14 +357,6 @@ <name>Contact</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contact/documentation.adoc</documentation> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> - <entityName>Lead_entity</entityName> - <fieldName>ContactId</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>OrgId_param</name> @@ -391,16 +384,19 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>f925c8e6-b096-4093-bd39-c9cd30a6a71a</name> + <entityName>Lead_entity</entityName> + <fieldName>ContactId</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>OrgAddresses</name> <state>READONLY</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAddressesByContact</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -412,6 +408,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orgaddresses/children/defaultaddressid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAddressesByContact</fieldName> + </dependency> </entityConsumer> <entityField> <name>STANDARD_EMAIL_COMMUNICATION</name> @@ -428,11 +429,6 @@ <entityConsumer> <name>PhoneCommunications</name> <description>Used for standard communication</description> - <dependency> - <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>PhoneCommunications</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -442,15 +438,15 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>EmailCommunications</name> - <description>Used for standard communication</description> <dependency> <name>dependency</name> <entityName>Communication_entity</entityName> - <fieldName>EmailCommunications</fieldName> + <fieldName>PhoneCommunications</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>EmailCommunications</name> + <description>Used for standard communication</description> <children> <entityParameter> <name>ContactId_param</name> @@ -460,6 +456,11 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact or creating a new entry that is related to a contact.</description> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>EmailCommunications</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ID</name> @@ -471,11 +472,6 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -483,6 +479,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -494,40 +495,35 @@ </entityConsumer> <entityConsumer> <name>Offers</name> - <dependency> - <name>dependency</name> - <entityName>Offer_entity</entityName> - <fieldName>ContactOffers</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/offers/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Salutations</name> <dependency> <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>ContactOffers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Salutations</name> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <onValidation>%aditoprj%/entity/Person_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -542,14 +538,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributes/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalutationTitles</name> <dependency> <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalutationTitles</name> <children> <entityParameter> <name>Salutation_param</name> @@ -560,15 +556,15 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/salutationtitles/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Tasks</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -583,14 +579,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/tasks/children/presetlinks_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ObjectTrees</name> <dependency> <name>dependency</name> - <entityName>ObjectTree_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ObjectTrees</name> <children> <entityParameter> <name>ObjectIds_param</name> @@ -601,6 +597,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/objecttrees/children/objecttypes_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectTree_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>STATUS</name> @@ -612,25 +613,20 @@ </entityField> <entityConsumer> <name>KeywordContactStates</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/keywordcontactstates/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ContactAndOrganisationAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>OrganisationAndContactAddresses</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ContactAndOrganisationAddresses</name> <children> <entityParameter> <name>ContactId_param</name> @@ -641,6 +637,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/contactandorganisationaddresses/children/organisationid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>OrganisationAndContactAddresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>DEPARTMENT</name> @@ -663,11 +664,6 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> @@ -676,14 +672,14 @@ <mandatory v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>OtherContacts</name> <dependency> <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonsContactsExceptOwn</fieldName> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>OtherContacts</name> <children> <entityParameter> <name>OwnContactId_param</name> @@ -694,6 +690,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/othercontacts/children/languagekey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonsContactsExceptOwn</fieldName> + </dependency> </entityConsumer> <entityField> <name>ORGANISATION_NAME</name> @@ -706,20 +707,6 @@ <entityProvider> <name>Contacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/contacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> - <entityName>VisitPlanEmployeeWeek_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - <entityDependency> - <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Persons</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -746,14 +733,23 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>c98da62f-d6b2-4ddb-9101-92e9a60abdfb</name> + <entityName>VisitPlanEmployeeWeek_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + <entityDependency> + <name>f56b1378-138d-4f88-b9df-274adce9f90c</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Persons</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>360DegreeObjects</name> - <dependency> - <name>dependency</name> - <entityName>360Degree_entity</entityName> - <fieldName>PersonObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -764,14 +760,14 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/360degreeobjects/children/objectstatus_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> <dependency> <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <entityName>360Degree_entity</entityName> + <fieldName>PersonObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -786,6 +782,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/attributetree/children/showdsgvomessage_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -845,46 +846,50 @@ </entityParameter> <entityConsumer> <name>CommRestrictions</name> - <dependency> - <name>dependency</name> - <entityName>CommRestriction_Entity</entityName> - <fieldName>CommRestrictions</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/commrestrictions/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>CommRestriction_Entity</entityName> + <fieldName>CommRestrictions</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>DSGVOEntries</name> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>DSGVO_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/dsgvoentries/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Appointments</name> <dependency> <name>dependency</name> - <entityName>Appointment_entity</entityName> - <fieldName>LinkedAppointments</fieldName> + <entityName>DSGVO_entity</entityName> + <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Appointments</name> <children> <entityParameter> <name>LinkedObjectId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/linkedobjectid_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>ErrorOnPermissionDenied</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js</valueProcess> + </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Appointment_entity</entityName> + <fieldName>LinkedAppointments</fieldName> + </dependency> </entityConsumer> <entityField> <name>OpenTasks</name> @@ -921,11 +926,6 @@ </entityField> <entityConsumer> <name>SelfDuplicatesUncached</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>SelfDuplicates</fieldName> - </dependency> <children> <entityParameter> <name>DuplicateActionsControl_param</name> @@ -944,6 +944,11 @@ <valueProcess>%aditoprj%/entity/Person_entity/entityfields/selfduplicatesuncached/children/excludedcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>SelfDuplicates</fieldName> + </dependency> </entityConsumer> <entityField> <name>LEAD_LEADID</name> @@ -974,14 +979,6 @@ <name>QuickEntryContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/quickentrycontacts/documentation.adoc</documentation> <titlePlural>Additional Contacts</titlePlural> - <dependencies> - <entityDependency> - <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1004,6 +1001,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>6d137850-63ba-4be0-9ca5-1464e71d4f77</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityActionField> <name>openEditDefaultsView</name> @@ -1099,9 +1104,10 @@ </entityActionField> <entityActionField> <name>startMarketingWorkflows</name> - <title>Marketing Workflow</title> + <title>Start marketing mailing</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js</onActionProcess> <isObjectAction v="false" /> + <iconId>VAADIN:ENVELOPES</iconId> </entityActionField> </children> </entityActionGroup> @@ -1115,6 +1121,8 @@ <name>IntegrateSelectedIntoCurrentAction</name> <title>Integrate selected into current contact</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:IMPORT</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/stateProcess.js</stateProcess> @@ -1123,6 +1131,8 @@ <name>IntegrateCurrentIntoSelectedAction</name> <title>Integrate current into selected contact</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>NEON:EXPORT</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/integratecurrentintoselectedaction/stateProcess.js</stateProcess> @@ -1131,6 +1141,8 @@ <name>IgnoreDuplicate</name> <title>Ignore Duplicate</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/onActionProcess.js</onActionProcess> + <isMenuAction v="true" /> + <isObjectAction v="false" /> <isSelectionAction v="true" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignoreduplicate/stateProcess.js</stateProcess> @@ -1139,6 +1151,7 @@ <name>IgnoreWholeCluster</name> <title>Ignore whole cluster</title> <onActionProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/onActionProcess.js</onActionProcess> + <isObjectAction v="false" /> <iconId>VAADIN:CLOSE</iconId> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/duplicateactions/children/ignorewholecluster/stateProcess.js</stateProcess> </entityActionField> @@ -1249,14 +1262,6 @@ <entityProvider> <name>IdFilteredActiveContacts</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/idfilteredactivecontacts/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> - <entityName>Member_entity</entityName> - <fieldName>Contacts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -1291,6 +1296,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>511f3e4c-7493-4a31-a136-0ba80ba2ec85</name> + <entityName>Member_entity</entityName> + <fieldName>Contacts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>COUNT</name> @@ -1325,29 +1338,21 @@ <name>Districts</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districts/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>District_entity</entityName> - <fieldName>ResponsibleDistricts</fieldName> - </dependency> <children> <entityParameter> <name>DistrictsByContactId_param</name> <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districts/children/districtsbycontactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>District_entity</entityName> + <fieldName>ResponsibleDistricts</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>NonselfDuplicates</name> <documentation>%aditoprj%/entity/Person_entity/entityfields/nonselfduplicates/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> - <entityName>Duplicates_entity</entityName> - <fieldName>DuplicatePersonsConsumer</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ContactId_param</name> @@ -1370,22 +1375,45 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3a4352e2-9686-4c52-9d01-dbfad8c68ea7</name> + <entityName>Duplicates_entity</entityName> + <fieldName>DuplicatePersonsConsumer</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>DistrictResponsibles</name> <state>INVISIBLE</state> <stateProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/stateProcess.js</stateProcess> + <children> + <entityParameter> + <name>OrgUid_param</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>DistrictResponsible_entity</entityName> <fieldName>OrganisationResponsibles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Orders</name> + <documentation>%aditoprj%/entity/Person_entity/entityfields/orders/documentation.adoc</documentation> <children> <entityParameter> - <name>OrgUid_param</name> - <valueProcess>%aditoprj%/entity/Person_entity/entityfields/districtresponsibles/children/orguid_param/valueProcess.js</valueProcess> + <name>ContactId_param</name> + <valueProcess>%aditoprj%/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Order_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> </entityFields> <recordContainers> @@ -1688,6 +1716,8 @@ <filterFieldsProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtension> diff --git a/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..15b1f8d0322593145f40d707c61dfdfd9babf0fe --- /dev/null +++ b/entity/Person_entity/entityfields/appointments/children/erroronpermissiondenied/valueProcess.js @@ -0,0 +1,3 @@ +import("system.result"); + +result.string("false"); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js index 2930a65370d53abee83d106cae30b08daf67146d..6a9f2ac39a7238d7dd5fbaec53e41c57eabec241 100644 --- a/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js +++ b/entity/Person_entity/entityfields/duplicateactions/children/integrateselectedintocurrentaction/onActionProcess.js @@ -26,7 +26,8 @@ if(mergeSuccess) if(currentContactId == null) currentContactId = ""; DuplicateScannerUtils.createMergeSuccessActivity(sourceContactId, targetContactId, currentContactId, "Person"); -// openContext due to the fact, that openContext will lead to an error 'due'cause it's trying to load the already opened preview -// of the duplicateContact which just got deleted = nullpointException - neon.openContext("Person", null, [targetContactId], neon.OPERATINGSTATE_VIEW, null, null); + //neon.refresh() with no fields will refresh the current image (and all sub images) but NOT the preview. neon.refreshAll() would refresh both, + //why it would lead to an error because it's trying to load the already opened preview of the duplicateContact which just got deleted + //and does not exist any more which results in an exception + neon.refresh(); } \ No newline at end of file diff --git a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js index 3e462ab4498eb4215bac2daa8457aee59ae8cd2a..2b04867cc90fd72a300747605800b32664d4b5b4 100644 --- a/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js +++ b/entity/Person_entity/entityfields/filterviewactiongroup/children/startmarketingworkflows/onActionProcess.js @@ -4,5 +4,6 @@ import("system.neon"); neon.openContext("MarketingWorkflowLauncher", "MarketingWorkflowLauncherEdit_view", null, neon.OPERATINGSTATE_VIEW, { "ObjectIds_param": JSON.stringify(vars.get("$sys.selection")), + "ObjectFilter_param": JSON.stringify(vars.get("$sys.filter")), "ObjectType_param": ContextUtils.getCurrentContextId() }); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7b6137b4d105e9ba592cf8ef6e796fb838a32b09 --- /dev/null +++ b/entity/Person_entity/entityfields/orders/children/contactid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.CONTACTID")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/orders/documentation.adoc b/entity/Person_entity/entityfields/orders/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..cadb57b42a557960231861bfd0aa547cd54677f4 --- /dev/null +++ b/entity/Person_entity/entityfields/orders/documentation.adoc @@ -0,0 +1 @@ +Consumer for loading a contacts related Orders. This is for example used to verify if the Person-row can be deleted. \ No newline at end of file diff --git a/entity/Person_entity/entityfields/salutation/displayValueProcess.js b/entity/Person_entity/entityfields/salutation/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..275e5fb9a51310d5d2b8e0d427aec3415a2b6c73 --- /dev/null +++ b/entity/Person_entity/entityfields/salutation/displayValueProcess.js @@ -0,0 +1,5 @@ +import("system.vars"); +import("system.result"); + +if(vars.get("$field.SALUTATION")) + result.string(vars.get("$field.SALUTATION")); \ No newline at end of file diff --git a/entity/Person_entity/entityfields/title/displayValueProcess.js b/entity/Person_entity/entityfields/title/displayValueProcess.js index 3682b56b29c28eb54083e5d08025f851591aed2c..9023d1aa7e54c97980047d0aed8f9fdc50e1b157 100644 --- a/entity/Person_entity/entityfields/title/displayValueProcess.js +++ b/entity/Person_entity/entityfields/title/displayValueProcess.js @@ -1,9 +1,5 @@ import("system.result"); -import("system.neon"); import("system.vars"); -if((vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) -{ - if (!vars.get("$field.TITLE")) - result.string("") -} \ No newline at end of file +if (vars.get("$field.TITLE")) + result.string(vars.get("$field.TITLE")); diff --git a/entity/Person_entity/grantDeleteProcess.js b/entity/Person_entity/grantDeleteProcess.js index 876b00bdb6a168033f3c0e5bfc587b8fff02a973..36866c88c8b760c3a8e009714d49ebfb2c9674f3 100644 --- a/entity/Person_entity/grantDeleteProcess.js +++ b/entity/Person_entity/grantDeleteProcess.js @@ -29,7 +29,7 @@ if(personCount == 1) .andNoEntityRows("Contract_entity", "Contracts", {ContactId_param : contactId}) //Contracts .andNoEntityRows("ObjectTree_entity", "TreeProvider", {ObjectIds_param : JSON.stringify([contactId, vars.get("$field.PERSON_ID")]), ObjectTypes_param : JSON.stringify([currentContext, "PrivatePerson"])}) .andNoEntityRows("CampaignParticipant_entity", "CampaignParticipantsProvider", {ContactId_param : contactId}) - .andNoEntityRows("Order_entity", "OrderProvider", {ContactId_param : contactId}) + .andNoEntityRows("Order_entity", "#PROVIDER", {ContactId_param : contactId}) .validate(); } else if (personCount == 0) //special case in QuickEntry where it should be possible to remove a new Person that is not saved in the db yet diff --git a/entity/Person_entity/initFilterProcess.js b/entity/Person_entity/initFilterProcess.js index c30d06ea24f7a12f1a5dfdec27fcf47948a78dc9..f64ef8977cc3f20a910f104d6196bfe90c43fc34 100644 --- a/entity/Person_entity/initFilterProcess.js +++ b/entity/Person_entity/initFilterProcess.js @@ -1,3 +1,4 @@ +import("system.entities"); import("Keyword_lib"); import("KeywordRegistry_basic"); import("system.result"); diff --git a/entity/Person_entity/recordcontainers/db/conditionProcess.js b/entity/Person_entity/recordcontainers/db/conditionProcess.js index 04f984cbc56a2705edaf17cc7f00819a4d4526e9..338811158360900835c45a56b055904518f65ed6 100644 --- a/entity/Person_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Person_entity/recordcontainers/db/conditionProcess.js @@ -41,5 +41,4 @@ if (vars.exists("$param.OnlyOwnSupervised_param") && vars.get("$param.OnlyOwnSup ); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cd1075a6aca75cc0b77eb7be5f7f83886c9eeb85 --- /dev/null +++ b/entity/Person_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("PERSON \n\ + join CONTACT on (CONTACT.PERSON_ID = PERSON.PERSONID) \n\ + join ORGANISATION on (ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID) \n\ + left join ADDRESS on (ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID)"); +result.string(sqlCond); \ No newline at end of file diff --git a/entity/Person_entity/recordcontainers/index/query.js b/entity/Person_entity/recordcontainers/index/query.js index 57faf589990bf78e08b17cdc4ad1b49b4f03c1af..e5c704e81ad9981791035100cf08dade778bc713 100644 --- a/entity/Person_entity/recordcontainers/index/query.js +++ b/entity/Person_entity/recordcontainers/index/query.js @@ -18,12 +18,12 @@ var commMediumPhoneIds = CommUtil.getMediumIdsByCategory("PHONE"); sqlHelper = new SqlMaskingUtils(); var querySelect = newSelect([ "CONTACT.CONTACTID", //#UID - sqlHelper.concat(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]), //#TITLE - sqlHelper.concat([ - sqlHelper.concat(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'", + sqlHelper.concatWithSeparator(["PERSON.SALUTATION", "PERSON.FIRSTNAME", "PERSON.LASTNAME", "'|'", "ORGANISATION.NAME"]), //#TITLE + sqlHelper.concatWithSeparator([ + sqlHelper.concatWithSeparator(["defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO", "'-'", "defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY"]), - sqlHelper.concat(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), - sqlHelper.concat(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) + sqlHelper.concatWithSeparator(["'" + translate.text("Phone") + ":'", "(" + CommUtil.getStandardSubSqlPhone() + ")"]), + sqlHelper.concatWithSeparator(["'" + translate.text("Email") + ":'", "(" + CommUtil.getStandardSubSqlMail() + ")"]) ], " | "), //#DESCRIPTION //additional indexed fields "CONTACT.CONTACTID", diff --git a/entity/PrivatePerson_entity/PrivatePerson_entity.aod b/entity/PrivatePerson_entity/PrivatePerson_entity.aod index e3cc784be65ee3ec69e37b8921bdc7fa2076e089..4739b80b0fe7a898f97a61866813f11d8241ff37 100644 --- a/entity/PrivatePerson_entity/PrivatePerson_entity.aod +++ b/entity/PrivatePerson_entity/PrivatePerson_entity.aod @@ -60,11 +60,6 @@ </entityParameter> <entityConsumer> <name>Persons</name> - <dependency> - <name>dependency</name> - <entityName>Contact_entity</entityName> - <fieldName>PersonRelated</fieldName> - </dependency> <children> <entityParameter> <name>PersonId_param</name> @@ -75,6 +70,11 @@ <valueProcess>%aditoprj%/entity/PrivatePerson_entity/entityfields/persons/children/readonly_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Contact_entity</entityName> + <fieldName>PersonRelated</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js index d7230024504ab503e79b5b4c306b41c2a4c3d35e..69206e0479d58423e19c04113145f595ada8bd87 100644 --- a/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js +++ b/entity/PrivatePerson_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ if (vars.get("$param.ExcludedPersonIds_param")) cond.andIfSet("PERSON.PERSONID", excludedPersons, SqlBuilder.NOT_IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Prod2prod_entity/Prod2prod_entity.aod b/entity/Prod2prod_entity/Prod2prod_entity.aod index 824ac6d55edafc5cacd1bee2233dc435a517f290..06bfbd33787ea979611fd6b76f525c744a211290 100644 --- a/entity/Prod2prod_entity/Prod2prod_entity.aod +++ b/entity/Prod2prod_entity/Prod2prod_entity.aod @@ -64,14 +64,6 @@ <name>ProductLinks</name> <targetContextField>targetContext</targetContextField> <targetIdField>SOURCE_ID</targetIdField> - <dependencies> - <entityDependency> - <name>4bd06e3b-17a0-483e-a61c-818ff7e86be3</name> - <entityName>Product_entity</entityName> - <fieldName>ProductLinks</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ProductId_param</name> @@ -82,6 +74,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>4bd06e3b-17a0-483e-a61c-818ff7e86be3</name> + <entityName>Product_entity</entityName> + <fieldName>ProductLinks</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityField> <name>PRODUCTCODE</name> @@ -104,11 +104,6 @@ </entityActionGroup> <entityConsumer> <name>Products</name> - <dependency> - <name>dependency</name> - <entityName>Product_entity</entityName> - <fieldName>Products</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedProducts_param</name> @@ -116,6 +111,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Product_entity</entityName> + <fieldName>Products</fieldName> + </dependency> </entityConsumer> <entityField> <name>PRODUCTID</name> diff --git a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js index bbca20492052f0f34e6997a999c968dca4ab821e..ca417dc781a55e926604703a6d21915be43e0af3 100644 --- a/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js +++ b/entity/Prod2prod_entity/entityfields/products/children/excludedproducts_param/valueProcess.js @@ -31,7 +31,6 @@ else result.object(excludeIDs); -// TODO: remove code duplication, better param naming and using SqlBuilder function _getParentID(pID, pIDs) { //Ermitteln welche Produkte ausgeschlossen werden müssen. diff --git a/entity/Product_entity/Product_entity.aod b/entity/Product_entity/Product_entity.aod index 2a6662b6f7d6e80914a53eddd2bdf2b74607ffa4..f9026b60de2e8f36a316601aa9135b5db131e0ce 100644 --- a/entity/Product_entity/Product_entity.aod +++ b/entity/Product_entity/Product_entity.aod @@ -9,11 +9,11 @@ </siblings> <grantDeleteProcess>%aditoprj%/entity/Product_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Product_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Product_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Product_entity/afterUiInit.js</afterUiInit> <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> @@ -89,46 +89,46 @@ </entityField> <entityConsumer> <name>Organisations</name> - <dependency> - <name>dependency</name> - <entityName>Organisation_entity</entityName> - <fieldName>Organisations</fieldName> - </dependency> <children> <entityParameter> <name>OrganisationType_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/organisations/children/organisationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Productprices</name> <dependency> <name>dependency</name> - <entityName>Productprice_entity</entityName> - <fieldName>Productprices</fieldName> + <entityName>Organisation_entity</entityName> + <fieldName>Organisations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Productprices</name> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/productprices/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Productprice_entity</entityName> + <fieldName>Productprices</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Stocks</name> <selectionMode>SINGLE</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Stock_entity</entityName> - <fieldName>Stocks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/stocks/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Stock_entity</entityName> + <fieldName>Stocks</fieldName> + </dependency> </entityConsumer> <entityField> <name>PICTURE</name> @@ -137,17 +137,17 @@ <entityConsumer> <name>StockCounts</name> <state>READONLY</state> - <dependency> - <name>dependency</name> - <entityName>Stock_entity</entityName> - <fieldName>Stocks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/stockcounts/children/productid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Stock_entity</entityName> + <fieldName>Stocks</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER</name> @@ -181,11 +181,6 @@ </entityProvider> <entityConsumer> <name>ProductLinks</name> - <dependency> - <name>dependency</name> - <entityName>Prod2prod_entity</entityName> - <fieldName>ProductLinks</fieldName> - </dependency> <children> <entityParameter> <name>ProductId_param</name> @@ -194,6 +189,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Prod2prod_entity</entityName> + <fieldName>ProductLinks</fieldName> + </dependency> </entityConsumer> <entityField> <name>CONTACT_ID</name> @@ -211,11 +211,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -226,15 +221,15 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -245,14 +240,14 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordProductGroupcodes</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordProductGroupcodes</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -260,14 +255,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordQuantityUnits</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordQuantityUnits</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -275,14 +270,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>ObjectId_param</name> @@ -293,6 +288,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -306,11 +306,6 @@ <name>Attributes</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Product_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -323,6 +318,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ExcludedProducts_param</name> @@ -331,6 +331,12 @@ </entityParameter> <entityProvider> <name>Products</name> + <children> + <entityParameter> + <name>ExcludedProducts_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>1b12e8ef-74ba-4294-bd2b-9d4afa80798c</name> @@ -345,12 +351,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludedProducts_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -361,11 +361,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -376,15 +371,15 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>AttributeTree</name> <stateProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -395,6 +390,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/attributetree/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>USER_NEW</name> @@ -418,17 +418,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Product_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ProductText_param</name> @@ -436,11 +436,6 @@ </entityParameter> <entityConsumer> <name>DescriptionTranslations</name> - <dependency> - <name>dependency</name> - <entityName>DescriptionTranslation_entity</entityName> - <fieldName>DescriptionTranslations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -451,6 +446,11 @@ <valueProcess>%aditoprj%/entity/Product_entity/entityfields/descriptiontranslations/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DescriptionTranslation_entity</entityName> + <fieldName>DescriptionTranslations</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>openAdminView</name> diff --git a/entity/Product_entity/contentDescriptionProcess.js b/entity/Product_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b --- /dev/null +++ b/entity/Product_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js index 660715572aed4cf5db65f233b769c2c9ffa2bdf4..d29e2e1026670cc941752ee8c806c0fa4d730465 100644 --- a/entity/Product_entity/entityfields/contact_id/displayValueProcess.js +++ b/entity/Product_entity/entityfields/contact_id/displayValueProcess.js @@ -3,4 +3,4 @@ import("system.vars"); import("system.result"); import("Context_lib"); -result.string(db.cell(ContextUtils.getNameSql("Organisation", vars.get("$field.CONTACT_ID")))); \ No newline at end of file +result.string(ContextUtils.getTitleByContext("Organisation", vars.get("$field.CONTACT_ID"))); \ No newline at end of file diff --git a/entity/Product_entity/recordcontainers/db/conditionProcess.js b/entity/Product_entity/recordcontainers/db/conditionProcess.js index 3602fca8eb08a457b21fdd77bfd58ab4f43be1d3..d2f79f17d279ce0c07f88dab88f93455d1ffe5bb 100644 --- a/entity/Product_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Product_entity/recordcontainers/db/conditionProcess.js @@ -11,5 +11,4 @@ if (vars.exists("$param.ExcludedProducts_param") && vars.get("$param.ExcludedPro productCond.andIfSet("PRODUCT.PRODUCTID", excludedIds, SqlBuilder.NOT_IN()); } -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(productCond.toString()); \ No newline at end of file diff --git a/entity/Product_entity/recordcontainers/db/onDBUpdate.js b/entity/Product_entity/recordcontainers/db/onDBUpdate.js index 01a6d02f7e5b6172f857181ce2b51be666d4cf8c..2e53f3cad9a9edf21cc5bbc6fdecc00c5001dfee 100644 --- a/entity/Product_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Product_entity/recordcontainers/db/onDBUpdate.js @@ -1,14 +1,3 @@ import("Workflow_lib"); -import("system.vars"); -import("Product_lib"); -import("Entity_lib"); - -// TODO: this is a workaround for missing possibility to react on changes of fields not connected to record Contqainer #1030023 -FieldChanges.assimilateChangeAndDispose("$field.IMAGE", function(state, value){ - if (state == FieldChanges.STATE_CHANGED()) - ProductUtils.setImage(vars.get("$local.uid"), value); - else - ProductUtils.removeImage(vars.get("$local.uid")); -}); WorkflowSignalSender.updated(); \ No newline at end of file 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/Product_entity/recordcontainers/index/query.js b/entity/Product_entity/recordcontainers/index/query.js index e06093cbebec627842468acb868e1e5c0dd57403..b1d7ae47756f3a528ab7279735c4cfdc2b224a6f 100644 --- a/entity/Product_entity/recordcontainers/index/query.js +++ b/entity/Product_entity/recordcontainers/index/query.js @@ -7,7 +7,7 @@ import("KeywordRegistry_basic"); var sqlHelper = new SqlMaskingUtils(); var sqlQuery = newSelect([ "PRODUCTID", //#UID - sqlHelper.concat(["PRODUCTCODE", "PRODUCTNAME"], " | "), //#TITLE + sqlHelper.concatWithSeparator(["PRODUCTCODE", "PRODUCTNAME"], " | "), //#TITLE KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "GROUPCODEID"), //#DESCRIPTION "PRODUCTCODE" ]) diff --git a/entity/Productprice_entity/Productprice_entity.aod b/entity/Productprice_entity/Productprice_entity.aod index 61bf5454ab35395bca8b5fb61db8ee6d5996cfba..26dbe5048b3b016ef6199d2c569b6ab67c3a81c9 100644 --- a/entity/Productprice_entity/Productprice_entity.aod +++ b/entity/Productprice_entity/Productprice_entity.aod @@ -143,6 +143,16 @@ <name>Productprices</name> <titlePluralProcess>%aditoprj%/entity/Productprice_entity/entityfields/productprices/titlePluralProcess.js</titlePluralProcess> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ProductId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>d5f4c7c4-cd21-4075-bd56-c479672dc09a</name> @@ -163,24 +173,9 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ProductId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>KeywordCurrencies</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -188,14 +183,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordPricelists</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordPricelists</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -203,6 +198,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>DELIVERYTERM</name> diff --git a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js index a68cf9891b46dc2d7e584e8f64da30aa40bf8543..869e14a88e9e1d32ca76dc75de6262413477ccb5 100644 --- a/entity/Productprice_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Productprice_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ var cond = newWhere() .andIfSet("PRODUCTPRICE.PRODUCT_ID", "$param.ProductId_param") .andIfSet("PRODUCTPRICE.CONTACT_ID", "$param.ContactId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js index 9d2ad815005cb83931979b4390e103fbdb198533..cd8dcbf86f1142e272d7b70bc2b01aa1c3c3c592 100644 --- a/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js +++ b/entity/Productprice_entity/recordcontainers/db/recordfieldmappings/fromquantity.displayvalue/expression.js @@ -7,7 +7,7 @@ import("Sql_lib"); var helper = new SqlMaskingUtils(); -var res = newSelect(helper.concat([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|")) +var res = newSelect(helper.concatWithSeparator([helper.cast("PRODUCTPRICE.FROMQUANTITY", SQLTYPES.CHAR, 36), "' '", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.quantityUnit(), "PRODUCT.UNIT")], "|")) .from("PRODUCT") .where("PRODUCT.PRODUCTID = PRODUCTPRICE.PRODUCT_ID") .toString() diff --git a/entity/QuickEntry_entity/QuickEntry_entity.aod b/entity/QuickEntry_entity/QuickEntry_entity.aod index fe83641faf97bfc9c0ccc2d595d9105d5ff1b3d2..8f84148e24fc98d4526789179082ecc244fe9b9e 100644 --- a/entity/QuickEntry_entity/QuickEntry_entity.aod +++ b/entity/QuickEntry_entity/QuickEntry_entity.aod @@ -22,11 +22,6 @@ </entityField> <entityConsumer> <name>Adresses</name> - <dependency> - <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>QuickEntryAdresses</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -37,14 +32,14 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/adresses/children/contacttype_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Communications</name> <dependency> <name>dependency</name> - <entityName>Communication_entity</entityName> - <fieldName>QuickEntryCommunications</fieldName> + <entityName>Address_entity</entityName> + <fieldName>QuickEntryAdresses</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Communications</name> <children> <entityParameter> <name>ContactId_param</name> @@ -55,6 +50,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/communications/children/additionalcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Communication_entity</entityName> + <fieldName>QuickEntryCommunications</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Languages</name> @@ -94,25 +94,20 @@ </entityField> <entityConsumer> <name>Salutations</name> - <dependency> - <name>dependency</name> - <entityName>SalutationDistinct_entity</entityName> - <fieldName>Salutations</fieldName> - </dependency> <children> <entityParameter> <name>Language_param</name> <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salutations/children/language_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalutationTitles</name> <dependency> <name>dependency</name> - <entityName>SalutationTitleDistinct_entity</entityName> - <fieldName>SalutationTitles</fieldName> + <entityName>SalutationDistinct_entity</entityName> + <fieldName>Salutations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalutationTitles</name> <children> <entityParameter> <name>Language_param</name> @@ -123,20 +118,25 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salutationtitles/children/salutation_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Contacts</name> <dependency> <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>QuickEntryContacts</fieldName> + <entityName>SalutationTitleDistinct_entity</entityName> + <fieldName>SalutationTitles</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Contacts</name> <children> <entityParameter> <name>OrgId_param</name> <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/contacts/children/orgid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>QuickEntryContacts</fieldName> + </dependency> </entityConsumer> <entityField> <name>ISOLANGUAGE</name> @@ -147,11 +147,6 @@ </entityField> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>Direction_param</name> @@ -170,6 +165,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityField> <name>DATE_NEW</name> @@ -185,11 +185,6 @@ </entityField> <entityConsumer> <name>Salesprojects</name> - <dependency> - <name>dependency</name> - <entityName>Salesproject_entity</entityName> - <fieldName>QuickEntrySalesprojects</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -200,14 +195,14 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/salesprojects/children/presettitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>OrgAddresses</name> <dependency> <name>dependency</name> - <entityName>Address_entity</entityName> - <fieldName>QuickEntryAdresses</fieldName> + <entityName>Salesproject_entity</entityName> + <fieldName>QuickEntrySalesprojects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>OrgAddresses</name> <children> <entityParameter> <name>ContactId_param</name> @@ -218,6 +213,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/orgaddresses/children/contacttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Address_entity</entityName> + <fieldName>QuickEntryAdresses</fieldName> + </dependency> </entityConsumer> <entityField> <name>leadQuickAcquisition</name> @@ -228,11 +228,6 @@ </entityField> <entityConsumer> <name>OrgAndPersDuplicates</name> - <dependency> - <name>dependency</name> - <entityName>AnyContact_entity</entityName> - <fieldName>ContactsByIds</fieldName> - </dependency> <children> <entityParameter> <name>ContactIds_param</name> @@ -243,6 +238,11 @@ <valueProcess>%aditoprj%/entity/QuickEntry_entity/entityfields/organdpersduplicates/children/withprivatepersons_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AnyContact_entity</entityName> + <fieldName>ContactsByIds</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js index a76ad51dc5d86201281871b40f73bcd967bf8c44..9a225fe5bc38edbdec6a301f5a51f87e68e2a7dc 100644 --- a/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/RoleChildren_entity/recordcontainers/jdito/contentProcess.js @@ -4,6 +4,8 @@ import("system.db"); import("system.vars"); import("system.result"); import("system.util"); +import("Permission_lib"); +import("system.logging"); var alias = SqlUtils.getSystemAlias(); var selectedRoleName = vars.exists("$param.RoleId_param") && vars.get("$param.RoleId_param"); @@ -17,10 +19,7 @@ if (selectedRoleType == "" && selectedRoleName != "") { // roles can only be assigned to CUSTOM roles -> selected role has to be a viable CUSTOM role if (selectedRoleName && selectedRoleType == "CUSTOM") { - var childRoles = newSelect("ID, CHILD_ROLE", alias) - .from("ASYS_ROLES_CHILDREN") - .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", selectedRoleName) - .table(); + var childRoles = PermissionUtil.getChildRoles(selectedRoleName); for each (let childRole in childRoles) { children.push([childRole[0], childRole[1], selectedRoleName]); diff --git a/entity/Role_entity/Role_entity.aod b/entity/Role_entity/Role_entity.aod index b1e75e67c1de2cb4e7b72f7307b74a81a6e6f0cf..cb7d090b6506b259734f2a52ee4e40639f896c31 100644 --- a/entity/Role_entity/Role_entity.aod +++ b/entity/Role_entity/Role_entity.aod @@ -41,34 +41,41 @@ </entityField> <entityConsumer> <name>TheirPermissions</name> + <children> + <entityParameter> + <name>RoleTitle_param</name> + <valueProcess>%aditoprj%/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependency> <name>dependency</name> <entityName>PermissionDetail_entity</entityName> <fieldName>Permissions</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>PermissionOverviews</name> <children> <entityParameter> <name>RoleTitle_param</name> + <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>PermissionOverviews</name> <dependency> <name>dependency</name> <entityName>PermissionOverview_entity</entityName> <fieldName>PermissionOverviews</fieldName> </dependency> - <children> - <entityParameter> - <name>RoleTitle_param</name> - <valueProcess>%aditoprj%/entity/Role_entity/entityfields/permissionoverviews/children/roletitle_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityConsumer> <entityProvider> <name>Roles</name> <recordContainer>jDito</recordContainer> + <children> + <entityParameter> + <name>ExcludeRoles_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>64d800d0-4db5-4b95-ab6a-9197b83cc09c</name> @@ -89,12 +96,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ExcludeRoles_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>ExcludeRoles_param</name> @@ -132,11 +133,6 @@ <entityConsumer> <name>RoleChildrens</name> <onValidation>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>RoleChildren_entity</entityName> - <fieldName>RoleChildrens</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> @@ -147,6 +143,11 @@ <valueProcess>%aditoprj%/entity/Role_entity/entityfields/rolechildrens/children/roletype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleChildren_entity</entityName> + <fieldName>RoleChildrens</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>deleteEverythingLinkedToRole</name> @@ -157,22 +158,26 @@ </entityActionField> <entityConsumer> <name>RoleParents</name> - <dependency> - <name>dependency</name> - <entityName>RoleParent_entity</entityName> - <fieldName>RoleParents</fieldName> - </dependency> <children> <entityParameter> <name>RoleId_param</name> <valueProcess>%aditoprj%/entity/Role_entity/entityfields/roleparents/children/roleid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>RoleParent_entity</entityName> + <fieldName>RoleParents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> <useAggregates v="true" /> </entityProvider> + <entityProvider> + <name>FilterRolesWithoutPermission</name> + <usePermissions v="false" /> + </entityProvider> </entityFields> <recordContainers> <jDitoRecordContainer> diff --git a/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js b/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..7b3054d1905ef4ec956c69802f6cc103966b4d08 --- /dev/null +++ b/entity/Role_entity/entityfields/theirpermissions/children/roletitle_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.ROLENAME")); \ No newline at end of file diff --git a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod index 5b2898641b5f0cf0d33f29c1dd3c81bd07806201..3c35c7cf03086585c3973d2112236a060fc1d1c7 100644 --- a/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod +++ b/entity/SalesprojectAnalyses_entity/SalesprojectAnalyses_entity.aod @@ -3,7 +3,7 @@ <name>SalesprojectAnalyses_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/entity/SalesprojectAnalyses_entity/documentation.adoc</documentation> - <title>Salesproject Analyses</title> + <title>Sales Project Analyses</title> <iconId>VAADIN:PIE_CHART</iconId> <recordContainer>jdito</recordContainer> <entityFields> @@ -41,14 +41,14 @@ </entityField> <entityField> <name>SENT_OFFERS</name> - <title>Sent offers</title> + <title>Sent Offers</title> <contentType>NUMBER</contentType> <state>READONLY</state> <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/sent_offers/valueProcess.js</valueProcess> </entityField> <entityField> <name>OPEN_SALESPROJECTS</name> - <title>Open salesprojects</title> + <title>Open Salesprojects</title> <contentType>NUMBER</contentType> <state>READONLY</state> <valueProcess>%aditoprj%/entity/SalesprojectAnalyses_entity/entityfields/open_salesprojects/valueProcess.js</valueProcess> diff --git a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod index e7474ae27a84b2eb23c98236397328ac396df494..2432f8fbbf75729f20244a387f7868c528ab3265 100644 --- a/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod +++ b/entity/SalesprojectConversionRate_entity/SalesprojectConversionRate_entity.aod @@ -18,7 +18,7 @@ <entityField> <name>AB_KEYWORD_ENTRYID_TITLE</name> <title>Phase</title> - <displayValueProcess>%aditoprj%/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js</displayValueProcess> + <groupable v="false" /> </entityField> <entityActionField> <name>openSalesprojects</name> @@ -76,6 +76,11 @@ <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/entityfields/ab_keyword_entryid_title/displayValueProcess.js b/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js deleted file mode 100644 index dc763b0c6156aa6fa4a2e293886ff75fc6cd7e20..0000000000000000000000000000000000000000 --- a/entity/SalesprojectConversionRate_entity/entityfields/ab_keyword_entryid_title/displayValueProcess.js +++ /dev/null @@ -1,8 +0,0 @@ -import("Keyword_lib"); -import("KeywordRegistry_basic"); -import("system.vars"); -import("system.translate"); -import("system.result"); - -// It's important to translate twice, because there are Phase with an extra translation. -result.string(KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.AB_KEYWORD_ENTRYID_TITLE"))); \ No newline at end of file diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js index 95781d32513a9442d468d93568947555bfcdef3d..32a839f38d92337f1f7acd8cf64fc5ba961cd529 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/contentProcess.js @@ -1,65 +1,49 @@ -import("JditoFilter_lib"); -import("Salesproject_lib"); -import("system.datetime"); -import("system.translate"); import("system.result"); -import("system.vars"); +import("JditoFilter_lib"); import("Sql_lib"); import("KeywordRegistry_basic"); -import("system.neon"); +import("Salesproject_lib"); +import("system.vars"); -let sqlHelper = new SqlMaskingUtils(); let filter = vars.get("$local.filters"); -let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START"); -let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START"); -let isFirstPhase = true; -let data = []; +let gruppingFields = SalesprojectConversionRate.groupMapping(false); +var filterPhasenIDs = []; - -let gruppingFields = { - "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], - "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], - "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth] -}; +var phasenManager = new SalesprojectConversionRate(); -let sql = new SqlBuilder() +var sql = new SqlBuilder() .from("AB_KEYWORD_ENTRY") .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL()); if (filter != null) { - if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1) + if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped")) { - let phasenFilter = filter.childs.filter(function (child) { + var phasenFilter = filter.childs.filter(function (child) { return (child.childs.filter(function (child) { return child.name == "AB_KEYWORD_ENTRYID_KEYID"; })).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() - if (pre != "") { - let temp = JSON.parse(JSON.stringify(phasenFilter.childs[0])); - temp.value = temp.key = pre; - phasenFilter.childs.push(temp); - isFirstPhase = false; - } + }); + + phasenFilter.forEach(function (pFilter) { + filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;})); + pFilter.childs = []; + }); } + else + filterPhasenIDs = null; let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null)); sql.andIfSet(filterCondition); } - - if (vars.exists("$local.grouped")) { let groupedfield = vars.get("$local.grouped"); sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID")) // COUNT, ID, TITLE - .select(["COUNT(*)", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1]]) - .groupBy(["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.SORTING", gruppingFields[groupedfield][0], gruppingFields[groupedfield][1], gruppingFields[groupedfield][2]]) - .orderBy([gruppingFields[groupedfield][2], "AB_KEYWORD_ENTRY.SORTING"]); + .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]); if (filter != null) { @@ -67,60 +51,11 @@ if (vars.exists("$local.grouped")) sql.andIfSet(filterCondition); } - let sqlData = sql.table(); - let row = { - "id": "", - "title": "", - "sumRate": 0.0, - "sumCount": 0, - "count" : 0, - "getTitle": function (pGroupedField) { - if (pGroupedField == "#EXTENSION.Month.Month#NUMBER" ) - { - // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded. - let monthDate = new Date(2020, parseInt(this.title)-1); - return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC")); - } - return translate.text(translate.text(this.title)); - } - }; - let pre = -1; - - for (let i = 0; i <= sqlData.length; i++){ - if (i == sqlData.length || sqlData[i][1] != row.id) - { - if (row.id != "") - data.push([row.sumCount + "", row.id, row.getTitle(groupedfield), row.sumRate / row.count]); - - if (i == sqlData.length) - break; - - row.id = sqlData[i][1]; - row.title = sqlData[i][2]; - row.sumRate = 0; - row.sumCount = 0; - row.count = 0; - - if (groupedfield != "AB_KEYWORD_ENTRYID_KEYID") { - pre = -1; - } - } - - if (pre != -1) - row.sumRate += (parseFloat(sqlData[i][0]) / pre); - - if (isFirstPhase || pre != -1) - { - row.count++; - row.sumCount += parseInt(sqlData[i][0]); - } - - - pre = parseFloat(sqlData[i][0]); - - - } - result.object(data); + sql.table().forEach(function (row) { + phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield + }); + + result.object(phasenManager.getConversionRates(filterPhasenIDs)); } else { diff --git a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js index 8615399a3833200e8f55e5e176fd493458a417ab..f30b4775d6c3f4356b76028e7faa2a488a3a2d66 100644 --- a/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js +++ b/entity/SalesprojectConversionRate_entity/recordcontainers/jdito/rowCountProcess.js @@ -1,32 +1,65 @@ -import("KeywordRegistry_basic"); -import("system.vars"); import("system.result"); -import("Sql_lib"); import("JditoFilter_lib"); +import("Sql_lib"); +import("KeywordRegistry_basic"); import("Salesproject_lib"); +import("system.vars"); -var groupMapping = SalesprojectConversionRate.groupMapping(true); -var phases = new SqlBuilder().select(["COUNT(*)"]).from("AB_KEYWORD_ENTRY") -.join("SALESPROJECT_MILESTONE", "AB_KEYWORD_ENTRY.KEYID = SALESPROJECT_MILESTONE.MILESTONEVALUE") +let filter = vars.get("$local.filters"); +let gruppingFields = SalesprojectConversionRate.groupMapping(false); +var filterPhasenIDs = []; + +var phasenManager = new SalesprojectConversionRate(); + +var sql = new SqlBuilder() +.from("AB_KEYWORD_ENTRY") .where("AB_KEYWORD_ENTRY.CONTAINER", $KeywordRegistry.salesprojectPhase()) .and("AB_KEYWORD_ENTRY.KEYID", $KeywordRegistry.salesprojectPhase$nego(), SqlBuilder.NOT_EQUAL()); -var filter = vars.get("$local.filters"); - if (filter != null) { - var filterCondition = JditoFilterUtils.getSqlCondition(vars.get("$local.filters"), "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", true)); - phases.andIfSet(filterCondition); + if (JSON.stringify(filter).indexOf("AB_KEYWORD_ENTRYID_KEYID") > -1 && vars.exists("$local.grouped")) + { + var phasenFilter = filter.childs.filter(function (child) { + return (child.childs.filter(function (child) { + return child.name == "AB_KEYWORD_ENTRYID_KEYID"; + })).length > 0 + }); + + phasenFilter.forEach(function (pFilter) { + filterPhasenIDs = filterPhasenIDs.concat(pFilter.childs.map(function (child) { return child.key;})); + pFilter.childs = []; + }); + } + else + filterPhasenIDs = null; + + let filterCondition = JditoFilterUtils.getSqlCondition(filter, "AB_KEYWORD_ENTRY", null, SalesprojectConversionRate.filterMapping(null)); + sql.andIfSet(filterCondition); } if (vars.exists("$local.grouped")) { - var groupedfield = vars.get("$local.grouped") - phases.groupBy([groupMapping[groupedfield]]); + let groupedfield = vars.get("$local.grouped"); + sql.join("SALESPROJECT_MILESTONE", newWhere("SALESPROJECT_MILESTONE.MILESTONEVALUE = AB_KEYWORD_ENTRY.KEYID")) + // COUNT, ID, TITLE + .select(["SALESPROJECT_MILESTONE.SALESPROJECT_ID", "SALESPROJECT_MILESTONE.MILESTONEVALUE", gruppingFields[groupedfield][0]]); + + if (filter != null) + { + filterCondition = JditoFilterUtils.getSqlCondition(filter, "SALESPROJECT_MILESTONE", null, SalesprojectConversionRate.filterMapping("SALESPROJECT_MILESTONE.DATE_START", false, "SALESPROJECT_MILESTONE")); + sql.andIfSet(filterCondition); + } + + sql.table().forEach(function (row) { + phasenManager.insertMilestone(row[0], row[1],groupedfield == "AB_KEYWORD_ENTRYID_KEYID" ? null :row[2] ); // TODO: Gruppingfield + }); + + result.object(phasenManager.getConversionRates(filterPhasenIDs).length); } else { - phases.groupBy(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"]); -} - -result.string(phases.arrayColumn().length); \ No newline at end of file + sql.select(["AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID", "AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE"]) + .orderBy("AB_KEYWORD_ENTRY.SORTING"); + result.object(sql.table().length); +} \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod index b1183b77d06223b47e856ca9f4a9c8b62fd65808..8da44d6020598d2c9a5d4a108f7e9d5017a85e11 100644 --- a/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod +++ b/entity/SalesprojectMilestone_entity/SalesprojectMilestone_entity.aod @@ -60,10 +60,6 @@ <name>SalesprojectMilestones</name> <recordContainer>db</recordContainer> <children> - <entityParameter> - <name>SalesprojectId_param</name> - <expose v="true" /> - </entityParameter> <entityParameter> <name>Kind_param</name> <expose v="false" /> @@ -77,17 +73,17 @@ </entityField> <entityConsumer> <name>Keywords</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Kind_param</name> @@ -96,6 +92,12 @@ </entityParameter> <entityProvider> <name>StateMilestones</name> + <children> + <entityParameter> + <name>Kind_param</name> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/kind_param/valueProcess.js</valueProcess> + </entityParameter> + </children> <dependencies> <entityDependency> <name>f705534d-dcf3-4049-a1ea-3f75e93aa2f0</name> @@ -104,15 +106,15 @@ <isConsumer v="false" /> </entityDependency> </dependencies> + </entityProvider> + <entityProvider> + <name>PhaseMilestones</name> <children> <entityParameter> <name>Kind_param</name> - <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/statemilestones/children/kind_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/kind_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityProvider> - <entityProvider> - <name>PhaseMilestones</name> <dependencies> <entityDependency> <name>b132527b-990c-416a-b2d6-ddbe6f4397e2</name> @@ -121,12 +123,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Kind_param</name> - <valueProcess>%aditoprj%/entity/SalesprojectMilestone_entity/entityfields/phasemilestones/children/kind_param/valueProcess.js</valueProcess> - </entityParameter> - </children> </entityProvider> <entityConsumer> <name>SalesProjectPhases</name> diff --git a/entity/SalesprojectMilestone_entity/contentTitleProcess.js b/entity/SalesprojectMilestone_entity/contentTitleProcess.js index 474d304708cb9ee5be375f81044a2529c335641a..27695c3f691e8b1c5ac7e41181b80737355fc514 100644 --- a/entity/SalesprojectMilestone_entity/contentTitleProcess.js +++ b/entity/SalesprojectMilestone_entity/contentTitleProcess.js @@ -2,9 +2,9 @@ import("system.vars"); import("system.translate"); import("system.result"); -if (vars.exists("$field.TYPE") && vars.get("$field.TYPE")) +if (vars.get("$field.KIND")) { - result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.TYPE"))); + result.string(translate.text("Milestones") + " " + translate.text(vars.get("$field.KIND"))); } else result.string(translate.text("Milestones")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js index 1b532aec63043fba84acf422369129fb9706bc12..ff40ad745a0a2d0676d08287e93bad6602a0b35b 100644 --- a/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js +++ b/entity/SalesprojectMilestone_entity/entityfields/keywords/children/containername_param/valueProcess.js @@ -1,4 +1,4 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.TYPE")); \ No newline at end of file +result.string(vars.get("$field.KIND")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js index f02879713e48f2970f9de7b2e423bb1b329e40cd..38663022e20ea6ef8cbaedf0f49a27f94d93faaf 100644 --- a/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js +++ b/entity/SalesprojectMilestone_entity/entityfields/milestonevalue/titleProcess.js @@ -2,9 +2,9 @@ import("system.vars"); import("system.translate"); import("system.result"); -if (vars.exists("$field.TYPE") && vars.get("$field.TYPE")) +if (vars.get("$field.KIND")) { - result.string(translate.text(vars.get("$field.TYPE"))); + result.string(translate.text(vars.get("$field.KIND"))); } else result.string(translate.text("Milestones")); \ No newline at end of file diff --git a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js index 9a21e39ea75ecfa1a1d8989379141d381f361144..06315b6b320bd3388370dccb3c501946043083c7 100644 --- a/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SalesprojectMilestone_entity/recordcontainers/db/conditionProcess.js @@ -5,5 +5,4 @@ var cond = newWhere() .andIfSet("SALESPROJECT_MILESTONE.SALESPROJECT_ID", "$param.SalesprojectId_param") .andIfSet("SALESPROJECT_MILESTONE.KIND", "$param.Kind_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod index 21cf70bfb8d0e24b533bbc970d3f2ef96d272d1a..4effdbc2ceaff937a8ea9eb6a86b1f419c17a587 100644 --- a/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod +++ b/entity/SalesprojectSource_entity/SalesprojectSource_entity.aod @@ -22,12 +22,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>SalesprojectId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>SalesprojectId_param</name> @@ -61,11 +55,6 @@ </entityField> <entityConsumer> <name>KeywordSources</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -73,6 +62,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>INFO</name> diff --git a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js index bad867525a17aebb0ecc286db4afeadc7f846b7f..ab13b330a620c500e29ccd63c8c4fad58ba3fcfe 100644 --- a/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SalesprojectSource_entity/recordcontainers/db/conditionProcess.js @@ -4,5 +4,4 @@ import("Sql_lib"); var cond = newWhereIfSet("SALESPROJECT_TOUCHPOINT.SALESPROJECT_ID", "$param.SalesprojectId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/Salesproject_entity.aod b/entity/Salesproject_entity/Salesproject_entity.aod index f33a33912223de0d1e2047b7f1de11979c36c939..59562dd82e0b190e77e3cefd9f1b87e6124bf55a 100644 --- a/entity/Salesproject_entity/Salesproject_entity.aod +++ b/entity/Salesproject_entity/Salesproject_entity.aod @@ -6,15 +6,19 @@ <title>Sales Project</title> <siblings> <element>SalesprojectMilestone_entity</element> + <element>Member_entity</element> + <element>MSTTeam_entity</element> + <element>MSTTeamLink_entity</element> </siblings> <grantDeleteProcess>%aditoprj%/entity/Salesproject_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Salesproject_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Salesproject_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Salesproject_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Salesproject_entity/onValidation.js</onValidation> <useFavorites v="true" /> <iconId>VAADIN:BOOK_DOLLAR</iconId> <imageProcess>%aditoprj%/entity/Salesproject_entity/imageProcess.js</imageProcess> - <titlePlural>Sales Projects</titlePlural> + <titlePlural>Salesprojects</titlePlural> <recordContainer>db</recordContainer> <entityFields> <entityProvider> @@ -143,39 +147,34 @@ </entityField> <entityConsumer> <name>SalesprojectSources</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectSource_entity</entityName> - <fieldName>SalesprojectSouces</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectsources/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseMilestones</name> <dependency> <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>PhaseMilestones</fieldName> + <entityName>SalesprojectSource_entity</entityName> + <fieldName>SalesprojectSouces</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseMilestones</name> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Forecasts</name> <dependency> <name>dependency</name> - <entityName>Forecast_entity</entityName> - <fieldName>Links</fieldName> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>PhaseMilestones</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Forecasts</name> <children> <entityParameter> <name>ObjectType_param</name> @@ -188,15 +187,15 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Competitions</name> - <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> - <entityName>Competition_entity</entityName> + <entityName>Forecast_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Competitions</name> + <selectionMode>MULTI</selectionMode> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -209,14 +208,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Offers</name> <dependency> <name>dependency</name> - <entityName>Offer_entity</entityName> + <entityName>Competition_entity</entityName> <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Offers</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -229,14 +228,14 @@ <expose v="true" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Activities</name> <dependency> <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> + <entityName>Offer_entity</entityName> + <fieldName>Links</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Activities</name> <children> <entityParameter> <name>PresetLinks_param</name> @@ -251,14 +250,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/activities/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Members</name> <dependency> <name>dependency</name> - <entityName>Member_entity</entityName> - <fieldName>WithDistrictResponsibles</fieldName> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Members</name> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -270,7 +269,24 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/objecttype_param/valueProcess.js</valueProcess> <expose v="true" /> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>EnableMSTeams_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js</valueProcess> + </entityParameter> + <entityParameter> + <name>SalesprojectCode_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js</valueProcess> + </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Member_entity</entityName> + <fieldName>WithDistrictResponsibles</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -283,11 +299,6 @@ <entityConsumer> <name>Timetrackings</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Timetracking_entity</entityName> - <fieldName>Timetrackings</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -298,6 +309,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/timetrackings/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Timetracking_entity</entityName> + <fieldName>Timetrackings</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -321,11 +337,6 @@ <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -335,16 +346,20 @@ <name>AssignmentTable_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> + <entityParameter> + <name>MSTTeamId_param</name> + <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js</valueProcess> + </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>MainDocuments</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>MainDocuments</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/stateProcess.js</stateProcess> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -355,6 +370,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>MainDocuments</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newTimetracking</name> @@ -365,11 +385,6 @@ </entityActionField> <entityConsumer> <name>KeywordProbabilties</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -378,14 +393,14 @@ <expose v="false" /> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -393,6 +408,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newActivity</name> @@ -412,17 +432,17 @@ <entityConsumer> <name>KeywordWonLost</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/keywordwonlost/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>REASONS</name> @@ -439,6 +459,17 @@ </entityField> <entityProvider> <name>Salesprojects</name> + <children> + <entityParameter> + <name>ContactId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>PresetTitle_param</name> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0925d17f-a26a-4641-aaf4-0f74796fefa7</name> @@ -459,17 +490,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ContactId_param</name> - <expose v="true" /> - <mandatory v="true" /> - </entityParameter> - <entityParameter> - <name>PresetTitle_param</name> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityActionField> <name>newTask</name> @@ -480,11 +500,6 @@ <entityConsumer> <name>Tasks</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Task_entity</entityName> - <fieldName>Tasks</fieldName> - </dependency> <children> <entityParameter> <name>RowId_param</name> @@ -499,17 +514,14 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/tasks/children/objectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Task_entity</entityName> + <fieldName>Tasks</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>OpenSalesprojects</name> - <dependencies> - <entityDependency> - <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> - <entityName>Offer_entity</entityName> - <fieldName>Salesprojects</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>Status_param</name> @@ -520,6 +532,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>631f55f9-fb0f-4205-bdb8-6e3476268ab4</name> + <entityName>Offer_entity</entityName> + <fieldName>Salesprojects</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Status_param</name> @@ -528,27 +548,22 @@ </entityParameter> <entityConsumer> <name>SalesprojectStateMilestones</name> - <dependency> - <name>dependency</name> - <entityName>SalesprojectMilestone_entity</entityName> - <fieldName>StateMilestones</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectstatemilestones/children/salesprojectid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectMilestone_entity</entityName> + <fieldName>StateMilestones</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> @@ -559,15 +574,15 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributes/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>AttributeTree</name> - <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <dependency> <name>dependency</name> <entityName>AttributeRelation_entity</entityName> - <fieldName>TreeProvider</fieldName> + <fieldName>AttributeRelations</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>AttributeTree</name> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/stateProcess.js</stateProcess> <children> <entityParameter> <name>ObjectType_param</name> @@ -578,29 +593,29 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/attributetree/children/objectrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>AttributeRelation_entity</entityName> + <fieldName>TreeProvider</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Classifications</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Classification_entity</entityName> - <fieldName>Classifications</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowid_param</name> @@ -615,6 +630,11 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/classifications/children/classificationtype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Classification_entity</entityName> + <fieldName>Classifications</fieldName> + </dependency> </entityConsumer> <entityField> <name>RemainingTime</name> @@ -628,11 +648,6 @@ </entityField> <entityConsumer> <name>SalesprojectForecastCharts</name> - <dependency> - <name>dependency</name> - <entityName>Turnover_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> <children> <entityParameter> <name>SalesprojectId_param</name> @@ -651,20 +666,25 @@ <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectforecastcharts/children/yearcounttoshow_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>SalesprojectPhaseStepper</name> <dependency> <name>dependency</name> - <entityName>SalesprojectPhase_entity</entityName> - <fieldName>Phases</fieldName> + <entityName>Turnover_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>SalesprojectPhaseStepper</name> <children> <entityParameter> <name>CurrentPhase_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesprojectphasestepper/children/currentphase_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>SalesprojectPhase_entity</entityName> + <fieldName>Phases</fieldName> + </dependency> </entityConsumer> <entityField> <name>PHASEINFO</name> @@ -687,17 +707,17 @@ </entityField> <entityConsumer> <name>ProjectTypeAttribute</name> - <dependency> - <name>dependency</name> - <entityName>Attribute_entity</entityName> - <fieldName>SpecificAttribute</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/projecttypeattribute/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Attribute_entity</entityName> + <fieldName>SpecificAttribute</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>QuickEntrySalesprojects</name> @@ -732,6 +752,14 @@ <name>SALESPROJECT_OBJECTTYPE</name> <valueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/salesproject_objecttype/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>MST_TEAM_ID</name> + <title>Team</title> + <linkedContext>MSTTeam</linkedContext> + <state>INVISIBLE</state> + <stateProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js</stateProcess> + <displayValueProcess>%aditoprj%/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js</displayValueProcess> + </entityField> <entityField> <name>COUNT</name> <title>Count</title> @@ -751,6 +779,12 @@ <title>Classification</title> <groupable v="true" /> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -791,6 +825,13 @@ <isUIDTable v="false" /> <readonly v="true" /> </linkInformation> + <linkInformation> + <name>44fba381-e477-4a92-ba82-fc22c3d98c23</name> + <tableName>MST_TEAM</tableName> + <primaryKey>MST_TEAMID</primaryKey> + <isUIDTable v="false" /> + <readonly v="true" /> + </linkInformation> </linkInformation> <recordFieldMappings> <dbRecordFieldMapping> @@ -892,6 +933,10 @@ <isFilterable v="true" /> <isLookupFilter v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.value</name> + <recordfield>MST_TEAM.MST_TEAMID</recordfield> + </dbRecordFieldMapping> <aggregateFieldDbMapping> <name>COUNT_aggregate.value</name> <recordfield>SALESPROJECT.SALESPROJECTID</recordfield> @@ -902,6 +947,18 @@ <recordfield>CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE</recordfield> <isFilterable v="true" /> </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>MST_TEAM_ID.displayValue</name> + <recordfield>MST_TEAM.TEAMNAME</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>SALESPROJECT.STARTDATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtensionSet> @@ -909,6 +966,8 @@ <filterFieldsProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterFieldsProcess.js</filterFieldsProcess> <filterValuesProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterValuesProcess.js</filterValuesProcess> <filterConditionProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/filterConditionProcess.js</filterConditionProcess> + <isGroupable v="true" /> + <groupQueryProcess>%aditoprj%/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js</groupQueryProcess> <filtertype>BASIC</filtertype> </filterExtensionSet> <filterExtensionSet> @@ -952,6 +1011,7 @@ <indexRecordContainer> <name>index</name> <configMode>INDEXGROUP_DEFINITION</configMode> + <searchIndexGroups /> <indexRecordAlias>Data_alias</indexRecordAlias> <query>%aditoprj%/entity/Salesproject_entity/recordcontainers/index/query.js</query> <affectedTables> diff --git a/entity/Salesproject_entity/contentDescriptionProcess.js b/entity/Salesproject_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..3e00d9c6738bf8df48a424143dcf200df3fece54 --- /dev/null +++ b/entity/Salesproject_entity/contentDescriptionProcess.js @@ -0,0 +1,14 @@ +import("Keyword_lib"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +import("KeywordRegistry_basic"); + +var res = [translate.text("Phase") + ": " + KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(), vars.get("$field.PHASE")), + translate.text("Classification: ") + vars.get("$field.CLASSIFICATIONVALUE"), + translate.text("Volume") + ": " + vars.get("$field.VOLUME.displayValue"), + translate.text("Probability") + ": " + vars.get("$field.PROBABILITY.displayValue"), + translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Salesproject_entity/contentTitleProcess.js b/entity/Salesproject_entity/contentTitleProcess.js index 5465ff4efe7615371cc39ef88551a10e36412f4c..dd3706b77cb1d6e5b485855656abd40eff8a5133 100644 --- a/entity/Salesproject_entity/contentTitleProcess.js +++ b/entity/Salesproject_entity/contentTitleProcess.js @@ -1,4 +1,6 @@ import("system.vars"); import("system.result"); -result.string(vars.get("$field.PROJECTTITLE")); \ No newline at end of file +var res = [vars.get("$field.PROJECTCODE"), vars.get("$field.PROJECTTITLE"), vars.get("$field.STATUS.displayValue")]; + +result.string(res.join(" | ")); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8be21737ac0e517ee8a34c4aa62b253ffb0bada9 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/documents/children/mstteamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.MST_TEAM_ID")); \ No newline at end of file diff --git a/entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js similarity index 100% rename from entity/WorkflowStartConfig_entity/entityfields/contexts/children/getallcontexts_param/valueProcess.js rename to entity/Salesproject_entity/entityfields/members/children/enablemsteams_param/valueProcess.js diff --git a/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..8be21737ac0e517ee8a34c4aa62b253ffb0bada9 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/members/children/mstteamid_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.vars"); +import("system.result"); + +result.string(vars.get("$field.MST_TEAM_ID")); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..598d579e335bcff49a488b488728055a608e6da4 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/members/children/salesprojectcode_param/valueProcess.js @@ -0,0 +1,4 @@ +import("system.result"); +import("system.vars"); + +result.string(vars.get("$field.PROJECTCODE")); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..14271e0911152fe467c4283f2b8a6245288c0bc7 --- /dev/null +++ b/entity/Salesproject_entity/entityfields/mst_team_id/displayValueProcess.js @@ -0,0 +1,15 @@ +import("MSTeams_lib"); +import("system.result"); +import("Sql_lib"); + +var res; + +if (MSTeamsUtils.isTeamsEnabled()) + res = newSelect("TEAMNAME") + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") + .cell(true); +else + res = ""; + +result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..0a84b37c599e80e8b1295c2cd50f2aa0c548041b --- /dev/null +++ b/entity/Salesproject_entity/entityfields/mst_team_id/stateProcess.js @@ -0,0 +1,11 @@ +import("MSTeams_lib"); +import("system.result"); +import("system.vars"); +import("system.neon"); + +var res = neon.COMPONENTSTATE_INVISIBLE; +var recordState = vars.get("$sys.recordstate"); +if (MSTeamsUtils.isTeamsEnabled() && recordState != neon.OPERATINGSTATE_NEW && recordState != neon.OPERATINGSTATE_EDIT) + res = neon.COMPONENTSTATE_READONLY; + +result.string(res); \ No newline at end of file diff --git a/entity/Salesproject_entity/onValidation.js b/entity/Salesproject_entity/onValidation.js index c9618796815b4f0e83c28c43a12320cd981a3ed9..ffe29cce81f26b649d2866fd163f7600df045eb9 100644 --- a/entity/Salesproject_entity/onValidation.js +++ b/entity/Salesproject_entity/onValidation.js @@ -9,4 +9,4 @@ var endDate = vars.get("$field.ENDDATE"); if (!DateUtils.validateBeginnBeforeEnd(startDate, endDate)) result.string(DateUtils.getValidationFailString()); else if(!vars.get("$field.PROJECTTITLE") && vars.get("$field.PROJECTTYPE") && vars.exists("$param.PresetTitle_param")) - result.string(translate.text("The Sales Project can only be filled when a company has been specified")); \ No newline at end of file + result.string(translate.text("The Salesproject can only be filled when a company has been specified")); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js index 507cd54e83ac2facada8bc80dae5fd6d8cbc9237..94792e060541b80096169073281f4bde6e365f2b 100644 --- a/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/conditionProcess.js @@ -3,7 +3,6 @@ import("system.result"); import("system.vars"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("SALESPROJECT.CONTACT_ID", "$param.ContactId_param") .andIfSet("SALESPROJECT.STATUS", "$param.Status_param") .toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..2db6219c71582c8d5d3fd91e4a8c1196fe87470b --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/attribute_filter/groupQueryProcess.js @@ -0,0 +1,10 @@ +import("system.result"); +import("AttributeFilter_lib"); + +var sqlCond = AttributeFilterExtensionMaker.makeFilterGroupQuery("SALESPROJECT \n\ + left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ + left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\ + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\ + left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\ + left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)"); +result.string(sqlCond); \ No newline at end of file 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/phase_filterextention/groupQueryProcess.js b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js index 341994efdf214b16a3c8dc9ba3e222c61f1323f8..308e821efaad27ef7cc947f8fcd0710229304998 100644 --- a/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/filterextensions/phase_filterextention/groupQueryProcess.js @@ -25,7 +25,7 @@ else { stmt.select([groupedList , KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(),"AB_KEYWORD_ENTRY.KEYID"), "count(*)", "count(*)"]) if (order != null) - stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " +order); + stmt.orderBy("AB_KEYWORD_ENTRY.SORTING, " + order); } result.string(stmt.toString()); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js index 435ef5659c496dabc83c5ec578c05a94d5b4ed6a..5532af0f5da27e0cb1351373a063ca94cf02f786 100644 --- a/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js +++ b/entity/Salesproject_entity/recordcontainers/db/fromClauseProcess.js @@ -6,4 +6,6 @@ import("KeywordRegistry_basic"); result.string("SALESPROJECT \n\ left join CONTACT on (SALESPROJECT.CONTACT_ID = CONTACT.CONTACTID) \n\ left join ORGANISATION on (CONTACT.ORGANISATION_ID = ORGANISATION.ORGANISATIONID)\n\ - left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)"); \ No newline at end of file + left join CLASSIFICATIONSTORAGE on (CLASSIFICATIONSTORAGE.OBJECT_ROWID = SALESPROJECT.SALESPROJECTID)\n\ + left join MST_TEAMLINK on (SALESPROJECT.SALESPROJECTID = MST_TEAMLINK.OBJECT_ROWID and MST_TEAMLINK.OBJECT_TYPE = 'Salesproject')\n\ + left join MST_TEAM on (MST_TEAM.MST_TEAMID = MST_TEAMLINK.MST_TEAM_ID)"); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js index 38fe9698031dd654c3a8a1e3a37aa506cbb72a8e..ac292d8633e479eb892884d9d62652463b34c980 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBInsert.js @@ -1,4 +1,3 @@ -import("Classification_lib"); import("Workflow_lib"); import("Context_lib"); import("Attribute_lib"); @@ -17,11 +16,6 @@ if (vars.get("$field.PROJECTTYPE")) .insertAttribute(vars.get("$field.PROJECTTYPE"), true); } -var salesprojectId = vars.get("$field.SALESPROJECTID"); -var contextname = vars.get("$sys.currentcontextname"); - -ClassificationUtils.insertEmptyClassification(salesprojectId, contextname); - //start the execution in afterOperatingState, because here the dataset is not yet inserted vars.set("$context.workflowQueue", {}); WorkflowSignalSender.inserted(); \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js index e08b7fd3e83a3071c963aaf2bca074bd9bfaf3f7..b81c1dd9c2cada650eca9c3555eb0c6cb51416aa 100644 --- a/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/Salesproject_entity/recordcontainers/db/onDBUpdate.js @@ -9,6 +9,7 @@ import("system.db"); import("system.question"); import("KeywordRegistry_basic"); import("Keyword_lib"); +import("system.teams"); var needToUpdateForecast = null; var rowdata = vars.get("$local.rowdata"); @@ -97,20 +98,26 @@ vars.get("$local.changed").forEach(function(fieldName) { } }); +var [serviceUrl, channelId] = newSelect(["SERVICE_URL", "GENERAL_CHANNELID"]) + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", "$field.MST_TEAM_ID") + .arrayRow(); + +if (serviceUrl) + teams.sendNotification(serviceUrl, channelId, "Etwas hat sich im Projekt "+ vars.get("$field.PROJECTTITLE") +" geaendert"); + if (needToUpdateForecast) Salesproject.notifyToUpdateForecast(); WorkflowSignalSender.updated(); -neon.refreshAll(); - function _updateReasons() { var reasons = rowdata["SALESPROJECT.REASONS"]; if(reasons) { - newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid")) - .updateData(true, "SALESPROJECT", ["REASONS"], null, [reasons]); + newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid") + .updateFields({"REASONS": reasons}); } } @@ -118,7 +125,7 @@ function _clearReasons(pReallyClear) { if (pReallyClear) { - newWhere("SALESPROJECT.SALESPROJECTID", vars.getString("$local.uid")) - .updateData(true, "SALESPROJECT", ["REASONS"], null, [""]); + newWhere("SALESPROJECT.SALESPROJECTID", "$local.uid") + .updateFields({"REASONS": ""}); } } \ No newline at end of file diff --git a/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..d91a07968d0c061d1891c1479802d377dc7f2167 --- /dev/null +++ b/entity/Salesproject_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,6 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "SALESPROJECT.STATUS")); \ 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/Salesproject_entity/recordcontainers/index/query.js b/entity/Salesproject_entity/recordcontainers/index/query.js index 000f54e04cea1de1398266fc8b5bba9f267a5026..ca558d146bc636a845f5660561b9eb2e8533a225 100644 --- a/entity/Salesproject_entity/recordcontainers/index/query.js +++ b/entity/Salesproject_entity/recordcontainers/index/query.js @@ -10,7 +10,7 @@ var sqlHelper = new SqlMaskingUtils(); var sqlQuery = newSelect([ "SALESPROJECTID", //#UID "PROJECTTITLE", //#TITLE - sqlHelper.concat([ + sqlHelper.concatWithSeparator([ "'" + translate.text("Status") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectState(), "STATUS"), "'| " + translate.text("Phase") + ":'", KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.salesprojectPhase(), "PHASE") ]), //#DESCRIPTION diff --git a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod index bacd4cd101bf6204fbe070899602d47442afcd16..8109ebac747af0d39e0af423ecde388fb52b335b 100644 --- a/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod +++ b/entity/SalutationDistinct_entity/SalutationDistinct_entity.aod @@ -14,6 +14,12 @@ </entityField> <entityProvider> <name>Salutations</name> + <children> + <entityParameter> + <name>Language_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>2f56ee5c-0f54-4d26-a4d8-a598c136967b</name> @@ -22,12 +28,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>Language_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>Language_param</name> diff --git a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod index e23ed314f9c293c89abced5dd2aad800d5deddd9..1919f07f0a8d78ae58435d8e94b06c058b231ba5 100644 --- a/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod +++ b/entity/SalutationTitleDistinct_entity/SalutationTitleDistinct_entity.aod @@ -19,14 +19,6 @@ </entityParameter> <entityProvider> <name>SalutationTitles</name> - <dependencies> - <entityDependency> - <name>3514c1fb-09f5-485f-884b-2e21e4e85490</name> - <entityName>QuickEntry_entity</entityName> - <fieldName>SalutationTitles</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>Language_param</name> @@ -37,6 +29,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3514c1fb-09f5-485f-884b-2e21e4e85490</name> + <entityName>QuickEntry_entity</entityName> + <fieldName>SalutationTitles</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>Language_param</name> diff --git a/entity/Salutation_entity/Salutation_entity.aod b/entity/Salutation_entity/Salutation_entity.aod index 48def7ff858d71be38bba90a5da0a11ae0c556a1..0d2090d77402c252fd43813978bdf505a60b810b 100644 --- a/entity/Salutation_entity/Salutation_entity.aod +++ b/entity/Salutation_entity/Salutation_entity.aod @@ -59,17 +59,17 @@ </entityField> <entityConsumer> <name>KeywordGenders</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Salutation_entity/entityfields/keywordgenders/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>KeywordLanguages</name> diff --git a/entity/SerialLetter_entity/SerialLetter_entity.aod b/entity/SerialLetter_entity/SerialLetter_entity.aod index 315503bad3d29396d5daeabbf8bff267ab8147d1..558eb8a4b6c36a7640a05b1253e977aa9e22941a 100644 --- a/entity/SerialLetter_entity/SerialLetter_entity.aod +++ b/entity/SerialLetter_entity/SerialLetter_entity.aod @@ -39,17 +39,17 @@ </entityField> <entityConsumer> <name>Recipients</name> - <dependency> - <name>dependency</name> - <entityName>LetterRecipient_entity</entityName> - <fieldName>SerialLetterRecipients</fieldName> - </dependency> <children> <entityParameter> <name>SerialLetterId_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/recipients/children/serialletterid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LetterRecipient_entity</entityName> + <fieldName>SerialLetterRecipients</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -59,11 +59,6 @@ </entityField> <entityConsumer> <name>Templates</name> - <dependency> - <name>dependency</name> - <entityName>DocumentTemplate_entity</entityName> - <fieldName>DocumentTemplateProvider</fieldName> - </dependency> <children> <entityParameter> <name>DocumentTemplateType_param</name> @@ -74,6 +69,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/templates/children/documenttemplatetypeclassification_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>DocumentTemplate_entity</entityName> + <fieldName>DocumentTemplateProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>TITLE</name> @@ -88,17 +88,17 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>bindata</name> @@ -114,26 +114,21 @@ </entityField> <entityConsumer> <name>StatusKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/statuskeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Activities</name> <state>INVISIBLE</state> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectId_param</name> @@ -144,6 +139,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/activities/children/rowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>downloadLetter</name> @@ -174,11 +174,6 @@ <entityConsumer> <name>Documents</name> <refreshParent v="true" /> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>SingleDocument</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -197,6 +192,11 @@ <valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/documents/children/disallowcreate_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>SingleDocument</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>generateLetter</name> diff --git a/entity/SerialLetter_entity/onValidation.js b/entity/SerialLetter_entity/onValidation.js index d0d694d8f85e0251a0d1ee7ebfd767e45e529ac3..f2f4506feaf95743c3ecd8e90f1e051043e7ed56 100644 --- a/entity/SerialLetter_entity/onValidation.js +++ b/entity/SerialLetter_entity/onValidation.js @@ -2,7 +2,15 @@ import("system.neon"); import("system.result"); import("system.vars"); import("DocumentTemplate_lib"); +import("Document_lib"); -[content, type] = DocumentTemplateUtils.getTemplateContent(vars.get("$field.DOCUMENTTEMPLATE_ID"), new FileUpload(vars.get("$field.bindata"))); -if (type != DocumentTemplate.types.ODT && (vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW || vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)) +var templateId = vars.get("$field.DOCUMENTTEMPLATE_ID"); +var upload = new FileUpload(vars.get("$field.bindata")); +var template; +if (upload.isFilled()) + template = DocumentTemplate.fromUpload(upload); +else if (templateId) + template = DocumentTemplateUtils.getTemplate(templateId); + +if (template && template.type != DocumentTemplate.types.ODT) result.string(DocumentTemplate.getSerialLetterODTOnlyMessage()); \ No newline at end of file diff --git a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js index 9b94cb43201f9ff942608adfb3f3a694a5a555b6..20c7fc0a0ddd70bb3075f0f5c90bd95d19e01233 100644 --- a/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js +++ b/entity/SerialLetter_entity/recordcontainers/db/onDBUpdate.js @@ -18,8 +18,6 @@ var template = DocumentTemplate.fromUpload(bindata); if (template.content) { SingleBinaryUtils.set("SERIALLETTER", "DOCUMENT", letterId, template.content, template.filename, ""); - - neon.refresh(["$field.content"]); } WorkflowSignalSender.updated(); \ No newline at end of file diff --git a/entity/SingleObject_entity/SingleObject_entity.aod b/entity/SingleObject_entity/SingleObject_entity.aod new file mode 100644 index 0000000000000000000000000000000000000000..b2d528450e42e8451f323774cd5f1cbc16495f97 --- /dev/null +++ b/entity/SingleObject_entity/SingleObject_entity.aod @@ -0,0 +1,46 @@ +<?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>SingleObject_entity</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <recordContainer>jdito</recordContainer> + <entityFields> + <entityProvider> + <name>#PROVIDER</name> + </entityProvider> + <entityField> + <name>TARGET_CONTEXT</name> + </entityField> + <entityField> + <name>UID</name> + </entityField> + <entityParameter> + <name>TargetContext_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityParameter> + <name>TargetId_param</name> + <expose v="true" /> + <mandatory v="true" /> + </entityParameter> + <entityProvider> + <name>OneObject</name> + <targetContextField>TARGET_CONTEXT</targetContextField> + <targetIdField>UID</targetIdField> + </entityProvider> + <entityProvider> + <name>#PROVIDER_AGGREGATES</name> + <useAggregates v="true" /> + </entityProvider> + </entityFields> + <recordContainers> + <jDitoRecordContainer> + <name>jdito</name> + <recordFieldMappings> + <jDitoRecordFieldMapping> + <name>UID.value</name> + </jDitoRecordFieldMapping> + </recordFieldMappings> + </jDitoRecordContainer> + </recordContainers> +</entity> diff --git a/entity/Stock_entity/Stock_entity.aod b/entity/Stock_entity/Stock_entity.aod index 79a929f5a6b9403a98d9b9d03c1d6c07c7401b98..b77312e1cbbab6ba451690e9148c7d54e1ff5c67 100644 --- a/entity/Stock_entity/Stock_entity.aod +++ b/entity/Stock_entity/Stock_entity.aod @@ -53,6 +53,12 @@ <entityProvider> <name>Stocks</name> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>ProductId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>aa9264c8-2c96-4a7a-94c7-e38bc0ae7df3</name> @@ -67,12 +73,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>ProductId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>IMAGE</name> @@ -95,11 +95,6 @@ </entityProvider> <entityConsumer> <name>KeywordWarehouses</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -107,6 +102,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/Stock_entity/recordcontainers/db/conditionProcess.js b/entity/Stock_entity/recordcontainers/db/conditionProcess.js index eb881a660fe9112a6d7756fe734491ad20d45165..b0ca1d729b574c54f13543090012d62a9d8ca288 100644 --- a/entity/Stock_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Stock_entity/recordcontainers/db/conditionProcess.js @@ -1,6 +1,5 @@ import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("STOCK.PRODUCT_ID", "$param.ProductId_param") .toString()); \ No newline at end of file diff --git a/entity/SupportTicket_entity/SupportTicket_entity.aod b/entity/SupportTicket_entity/SupportTicket_entity.aod index a289e1083cc46db17d59d4a393a87e5537cb64f2..4b3790f99674dd10365dab4146a709f622f5e355 100644 --- a/entity/SupportTicket_entity/SupportTicket_entity.aod +++ b/entity/SupportTicket_entity/SupportTicket_entity.aod @@ -5,6 +5,7 @@ <documentation>%aditoprj%/entity/SupportTicket_entity/documentation.adoc</documentation> <title>Support Ticket</title> <contentTitleProcess>%aditoprj%/entity/SupportTicket_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/SupportTicket_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/SupportTicket_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/SupportTicket_entity/onValidation.js</onValidation> <useFavorites v="true" /> @@ -127,27 +128,22 @@ </entityParameter> <entityConsumer> <name>Links</name> - <dependency> - <name>dependency</name> - <entityName>TaskLink_entity</entityName> - <fieldName>Link</fieldName> - </dependency> <children> <entityParameter> <name>TaskId_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/links/children/taskid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TaskLink_entity</entityName> + <fieldName>Link</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Attributes</name> <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/stateProcess.js</stateProcess> <onValidation>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/onValidation.js</onValidation> - <dependency> - <name>dependency</name> - <entityName>AttributeRelation_entity</entityName> - <fieldName>AttributeRelations</fieldName> - </dependency> <children> <entityParameter> <name>ObjectRowId_param</name> @@ -170,15 +166,15 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/attributes/children/displaysimplename_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>AttributeRelation_entity</entityName> + <fieldName>AttributeRelations</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/maindocuments/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>MainDocuments</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -189,15 +185,15 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>Documents</name> - <selectionMode>MULTI</selectionMode> <dependency> <name>dependency</name> <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> + <fieldName>MainDocuments</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>Documents</name> + <selectionMode>MULTI</selectionMode> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -208,20 +204,25 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>LogHistories</name> <dependency> <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>LogHistories</name> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityField> <name>TASK_PROGRESS</name> @@ -233,17 +234,17 @@ </entityField> <entityConsumer> <name>KeywordProgress</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordprogress/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>TICKETTYPE</name> @@ -273,25 +274,20 @@ </entityField> <entityConsumer> <name>KeywordTickettype</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtickettype/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordTaskState</name> <dependency> <name>dependency</name> <entityName>KeywordEntry_entity</entityName> <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordTaskState</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -302,6 +298,11 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtaskstate/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>TicketType_param</name> @@ -310,17 +311,17 @@ </entityParameter> <entityConsumer> <name>KeywordTaskPriority</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/keywordtaskpriority/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>ContactEditors</name> @@ -353,11 +354,6 @@ </entityActionField> <entityConsumer> <name>ModuleTrees</name> - <dependency> - <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> - </dependency> <children> <entityParameter> <name>ContextName_param</name> @@ -368,6 +364,11 @@ <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/moduletrees/children/id_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityField> <name>TASK_PARENT_ID</name> @@ -459,6 +460,12 @@ <name>TASK_ICON_COLOR</name> <valueProcess>%aditoprj%/entity/SupportTicket_entity/entityfields/task_icon_color/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> + <entityField> + <name>ACTIVE</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> @@ -597,6 +604,14 @@ <recordfield>TICKET.TICKETID</recordfield> <aggregateType>COUNT</aggregateType> </aggregateFieldDbMapping> + <dbRecordFieldMapping> + <name>DATE_NEW.value</name> + <recordfield>TASK.START_DATE</recordfield> + </dbRecordFieldMapping> + <dbRecordFieldMapping> + <name>ACTIVE.value</name> + <expression>%aditoprj%/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression> + </dbRecordFieldMapping> </recordFieldMappings> <filterExtensions> <filterExtension> diff --git a/entity/SupportTicket_entity/contentDescriptionProcess.js b/entity/SupportTicket_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..1d91623c4ae8f611109db99446b52adabd903dfd --- /dev/null +++ b/entity/SupportTicket_entity/contentDescriptionProcess.js @@ -0,0 +1,18 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); + +var res = []; + +if(vars.get("$field.TASK_EDITOR_CONTACT_ID")) + res = [translate.text("{$TICKET_EDITOR}") + ": " + vars.get("$field.TASK_EDITOR_CONTACT_ID.displayValue")]; + + res.push(translate.text("Maturity") + ": " + datetime.toDate(vars.get("$field.TASK_MATURITY_DATE"), translate.text("dd.MM.yyyy"))); + res.push(translate.text("Progress") + ": " + KeywordUtils.getViewValue($KeywordRegistry.taskProgress(), vars.get("$field.TASK_PROGRESS"))); + res.push(translate.text("Creation date") + ": " + datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); + +result.string(res.join(" | ")); + \ No newline at end of file diff --git a/entity/SupportTicket_entity/contentTitleProcess.js b/entity/SupportTicket_entity/contentTitleProcess.js index aae1064b78ee311afec427a24872f4136046df42..626ec76cac0a3020000f229da4e128040bd21cd7 100644 --- a/entity/SupportTicket_entity/contentTitleProcess.js +++ b/entity/SupportTicket_entity/contentTitleProcess.js @@ -1,4 +1,9 @@ +import("KeywordRegistry_basic"); +import("Keyword_lib"); import("system.vars"); import("system.result"); -result.string(vars.get("$field.TASK_SUBJECT")) \ No newline at end of file + +var res = [vars.get("$field.TASK_SUBJECT"), vars.get("$field.TASK_STATUS.displayValue")]; + +result.string(res.join(" | ")) \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js index 1cc6eb48ac1da6603edbdb729d16af958c269aa5..058d0ec06940cfc36ccf27bfc13ed7dc8b315518 100644 --- a/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js +++ b/entity/SupportTicket_entity/recordcontainers/db/conditionProcess.js @@ -31,5 +31,4 @@ if (vars.get("$param.RowId_param") && vars.get("$param.ObjectId_param")) cond.andIfSet("TASK.PARENT_ID", "$param.ParentId_param"); cond.andIfSet("TASK.PARENT_CONTEXT", "$param.ParentContext_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js new file mode 100644 index 0000000000000000000000000000000000000000..26673fbc448c10ccc7ef9e1e6bc5fc11d1fed04d --- /dev/null +++ b/entity/SupportTicket_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js @@ -0,0 +1,7 @@ +import("Context_lib"); +import("system.result"); +import("KeywordRegistry_basic"); + +var activArr = [$KeywordRegistry.taskStatus$new(), $KeywordRegistry.taskStatus$unassigned(), $KeywordRegistry.taskStatus$assigned(), +$KeywordRegistry.taskStatus$inProgress(), $KeywordRegistry.taskStatus$waiting(), $KeywordRegistry.taskStatus$customerChecks()]; +result.string(ContextUtils.buildActiveCaseWhen(activArr, "TASK.STATUS")); \ No newline at end of file diff --git a/entity/TaskLink_entity/TaskLink_entity.aod b/entity/TaskLink_entity/TaskLink_entity.aod index 759282daf39bbcbd59b7a37223e1c9d4873dfaca..90fc5bd337839eda64e940dc36f318a771e74a2b 100644 --- a/entity/TaskLink_entity/TaskLink_entity.aod +++ b/entity/TaskLink_entity/TaskLink_entity.aod @@ -39,6 +39,12 @@ <targetIdField>OBJECT_ROWID</targetIdField> <documentation>%aditoprj%/entity/TaskLink_entity/entityfields/link/documentation.adoc</documentation> <recordContainer>db</recordContainer> + <children> + <entityParameter> + <name>TaskId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>40cc8bcd-c178-4a77-a968-642e1d8e1f70</name> @@ -53,12 +59,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>TaskId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>TaskId_param</name> @@ -75,17 +75,17 @@ </entityConsumer> <entityConsumer> <name>Objects</name> - <dependency> - <name>dependency</name> - <entityName>Object_entity</entityName> - <fieldName>AllObjects</fieldName> - </dependency> <children> <entityParameter> <name>ObjectType_param</name> <valueProcess>%aditoprj%/entity/TaskLink_entity/entityfields/objects/children/objecttype_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Object_entity</entityName> + <fieldName>AllObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js index c87f4789fa9fd244ebff4881a6a8e59bffe58040..23f715a5e9d43ac6b18f2b7d009a7742eef77d34 100644 --- a/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js +++ b/entity/TaskLink_entity/entityfields/object_rowid/displayValueProcess.js @@ -6,5 +6,5 @@ import("Context_lib"); if(vars.get("$field.OBJECT_ROWID") && vars.get("$field.OBJECT_TYPE")) { - result.string(db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")))); + result.string(ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))); } \ No newline at end of file diff --git a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js index 1b4535c9556a37f6e69084f7570ea2fde14e7e6d..2b98b257ac0a7f777b4ccfab082c730b8681128e 100644 --- a/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js +++ b/entity/TaskLink_entity/recordcontainers/db/conditionProcess.js @@ -3,5 +3,4 @@ import("Sql_lib"); var cond = newWhereIfSet("TASKLINK.TASK_ID", "$param.TaskId_param"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); \ No newline at end of file diff --git a/entity/Task_entity/Task_entity.aod b/entity/Task_entity/Task_entity.aod index 0ed30f9267ac826ee8fa702c136cbdb52ddb1502..45f3ee0f0cf0c4079ae2e8cbc05a6560bf58e0a7 100644 --- a/entity/Task_entity/Task_entity.aod +++ b/entity/Task_entity/Task_entity.aod @@ -6,6 +6,7 @@ <title>Task</title> <grantDeleteProcess>%aditoprj%/entity/Task_entity/grantDeleteProcess.js</grantDeleteProcess> <contentTitleProcess>%aditoprj%/entity/Task_entity/contentTitleProcess.js</contentTitleProcess> + <contentDescriptionProcess>%aditoprj%/entity/Task_entity/contentDescriptionProcess.js</contentDescriptionProcess> <afterUiInit>%aditoprj%/entity/Task_entity/afterUiInit.js</afterUiInit> <onValidation>%aditoprj%/entity/Task_entity/onValidation.js</onValidation> <initFilterProcess>%aditoprj%/entity/Task_entity/initFilterProcess.js</initFilterProcess> @@ -96,10 +97,10 @@ </entityField> <entityField> <name>PROTECTIONLEVEL</name> - <title>Protected</title> <contentType>BOOLEAN</contentType> <contentTypeProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/contentTypeProcess.js</contentTypeProcess> <dropDownProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/dropDownProcess.js</dropDownProcess> + <titleProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/titleProcess.js</titleProcess> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/protectionlevel/valueProcess.js</valueProcess> </entityField> <entityField> @@ -127,11 +128,6 @@ <entityConsumer> <name>MainDocuments</name> <stateProcess>%aditoprj%/entity/Task_entity/entityfields/maindocuments/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -142,14 +138,14 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/maindocuments/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>KeywordStates</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Document_entity</entityName> + <fieldName>#PROVIDER</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>KeywordStates</name> <children> <entityParameter> <name>ContainerName_param</name> @@ -161,14 +157,14 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordstates/children/whitelistids_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>ModuleTrees</name> <dependency> <name>dependency</name> - <entityName>ModuleTree_entity</entityName> - <fieldName>TreeProviders</fieldName> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>ModuleTrees</name> <children> <entityParameter> <name>ID_param</name> @@ -183,6 +179,11 @@ <mandatory v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ModuleTree_entity</entityName> + <fieldName>TreeProviders</fieldName> + </dependency> </entityConsumer> <entityField> <name>PARENT_CONTEXT</name> @@ -229,11 +230,6 @@ </entityParameter> <entityConsumer> <name>KeywordPriorities</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -241,6 +237,11 @@ <expose v="false" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityActionField> <name>newOffer</name> @@ -259,36 +260,58 @@ </entityField> <entityConsumer> <name>KeywordProgress</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/keywordprogress/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Links</name> <state>EDITABLE</state> - <dependency> - <name>dependency</name> - <entityName>TaskLink_entity</entityName> - <fieldName>Link</fieldName> - </dependency> <children> <entityParameter> <name>TaskId_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/links/children/taskid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TaskLink_entity</entityName> + <fieldName>Link</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>Tasks</name> <documentation>%aditoprj%/entity/Task_entity/entityfields/tasks/documentation.adoc</documentation> + <children> + <entityParameter> + <name>RowId_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>PresetLinks_param</name> + <expose v="true" /> + </entityParameter> + <entityParameter> + <name>ParentId_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ParentContext_param</name> + <expose v="false" /> + </entityParameter> + <entityParameter> + <name>ObjectId_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>dd79df43-264c-494b-9c92-cadf19e61db6</name> @@ -357,28 +380,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>RowId_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>PresetLinks_param</name> - <expose v="true" /> - </entityParameter> - <entityParameter> - <name>ParentId_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ParentContext_param</name> - <expose v="false" /> - </entityParameter> - <entityParameter> - <name>ObjectId_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>PresetLinks_param</name> @@ -407,26 +408,21 @@ </entityField> <entityConsumer> <name>LogHistories</name> - <dependency> - <name>dependency</name> - <entityName>LogHistory_entity</entityName> - <fieldName>LogHistoryProvider</fieldName> - </dependency> <children> <entityParameter> <name>tablenames_param</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/loghistories/children/tablenames_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>LogHistory_entity</entityName> + <fieldName>LogHistoryProvider</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>Documents</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentRowId_param</name> @@ -437,6 +433,11 @@ <valueProcess>%aditoprj%/entity/Task_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityField> <name>TYPE</name> @@ -503,6 +504,9 @@ <name>ICON_COLOR</name> <valueProcess>%aditoprj%/entity/Task_entity/entityfields/icon_color/valueProcess.js</valueProcess> </entityField> + <entityField> + <name>DATE_NEW</name> + </entityField> </entityFields> <recordContainers> <dbRecordContainer> diff --git a/entity/Task_entity/contentDescriptionProcess.js b/entity/Task_entity/contentDescriptionProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..b07a72fe7cc543e3bedc5d5604f12f28769ffb6b --- /dev/null +++ b/entity/Task_entity/contentDescriptionProcess.js @@ -0,0 +1,5 @@ +import("system.translate"); +import("system.datetime"); +import("system.vars"); +import("system.result"); +result.string(datetime.toDate(vars.get("$field.DATE_NEW"), translate.text("dd.MM.yyyy"))); \ No newline at end of file diff --git a/entity/Task_entity/entityfields/priority/valueProcess.js b/entity/Task_entity/entityfields/priority/valueProcess.js index 0639e8287e8797db0bd0a19c31781facd3409367..ee23436dbb536eaf7196891941f62bb15384741c 100644 --- a/entity/Task_entity/entityfields/priority/valueProcess.js +++ b/entity/Task_entity/entityfields/priority/valueProcess.js @@ -4,5 +4,7 @@ import("system.neon"); import("system.vars"); import("KeywordRegistry_basic"); -if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW) +if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW && vars.get("$this.value") == null) +{ result.string($KeywordRegistry.taskPriority$low()); +} \ No newline at end of file diff --git a/entity/Task_entity/entityfields/protectionlevel/titleProcess.js b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..c2997149287a6b22c3e22a5d4bc48d145b314f25 --- /dev/null +++ b/entity/Task_entity/entityfields/protectionlevel/titleProcess.js @@ -0,0 +1,8 @@ +import("system.result"); +import("system.translate"); + +//We already changed this title serveral times +//This will be the last time and it's called "Private". Period. +//The reason why this is in a titleProcess and not in the title property is just to write this comment you're reading. +//Note: Whithin a porject feel free to change the title +result.string(translate.text("Private")); \ No newline at end of file diff --git a/entity/Task_entity/recordcontainers/db/conditionProcess.js b/entity/Task_entity/recordcontainers/db/conditionProcess.js index d8acb4d11fe9b9f26e89c697f74bf887f928b04c..c74072623eb5c8a5bed06b76d70c73084a0815bd 100644 --- a/entity/Task_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Task_entity/recordcontainers/db/conditionProcess.js @@ -48,6 +48,5 @@ else } cond.and(protectionLevelCondition); - //TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(cond.toString()); } \ No newline at end of file diff --git a/entity/Timetracking_entity/Timetracking_entity.aod b/entity/Timetracking_entity/Timetracking_entity.aod index fc202492285ba2545d3502221077c49200a9f2cf..f4b7bc526823c1c31110183136f7e949a2f5e8ce 100644 --- a/entity/Timetracking_entity/Timetracking_entity.aod +++ b/entity/Timetracking_entity/Timetracking_entity.aod @@ -75,14 +75,6 @@ <entityProvider> <name>Timetrackings</name> <recordContainer>db</recordContainer> - <dependencies> - <entityDependency> - <name>3636c414-fbc9-4144-a8b1-8e4ca0a146b2</name> - <entityName>Salesproject_entity</entityName> - <fieldName>Timetrackings</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>ObjectId_param</name> @@ -93,6 +85,14 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>3636c414-fbc9-4144-a8b1-8e4ca0a146b2</name> + <entityName>Salesproject_entity</entityName> + <fieldName>Timetrackings</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Employees</name> diff --git a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js index 958be5716236ef7cd77321a1cd61ca0e15d31be5..9b3b9ce651860d82a5e85c54ee239ed3b615d424 100644 --- a/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js +++ b/entity/Timetracking_entity/recordcontainers/db/conditionProcess.js @@ -3,7 +3,6 @@ import("system.db"); import("system.result"); import("Sql_lib"); -//TODO: use a preparedCondition (.build instead of .toString) when available #1030812 #1034026 result.string(newWhereIfSet("TIMETRACKING.OBJECT_ID", "$param.ObjectId_param") .andIfSet("TIMETRACKING.ROW_ID", "$param.RowId_param") .toString()); diff --git a/entity/TurnoverTree_entity/TurnoverTree_entity.aod b/entity/TurnoverTree_entity/TurnoverTree_entity.aod index d275ce95c96dde9bf3a79215960a2701d79a014d..d8624334458293fd8c90bf4b4dedf67e728e894e 100644 --- a/entity/TurnoverTree_entity/TurnoverTree_entity.aod +++ b/entity/TurnoverTree_entity/TurnoverTree_entity.aod @@ -57,6 +57,12 @@ <entityProvider> <name>FilteredTurnovers</name> <documentation>%aditoprj%/entity/TurnoverTree_entity/entityfields/filteredturnovers/documentation.adoc</documentation> + <children> + <entityParameter> + <name>YearCountToShow_param</name> + <expose v="true" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>0ea4ad47-985b-4a9c-81d8-946be324ae04</name> @@ -65,12 +71,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>YearCountToShow_param</name> - <expose v="true" /> - </entityParameter> - </children> </entityProvider> <entityField> <name>PARENT</name> diff --git a/entity/Turnover_entity/Turnover_entity.aod b/entity/Turnover_entity/Turnover_entity.aod index 0737e151be2ff946ccf52770b97fc832bbae30ea..81fdfb8dd00879d70df1b70c4d3ccdf8b770b99f 100644 --- a/entity/Turnover_entity/Turnover_entity.aod +++ b/entity/Turnover_entity/Turnover_entity.aod @@ -54,14 +54,6 @@ <entityProvider> <name>FilteredTurnovers</name> <documentation>%aditoprj%/entity/Turnover_entity/entityfields/filteredturnovers/documentation.adoc</documentation> - <dependencies> - <entityDependency> - <name>51106aba-bd82-4ac5-8de6-fc56d53c6117</name> - <entityName>Salesproject_entity</entityName> - <fieldName>SalesprojectForecastCharts</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> <children> <entityParameter> <name>MaxYear_param</name> @@ -72,14 +64,17 @@ <expose v="true" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>51106aba-bd82-4ac5-8de6-fc56d53c6117</name> + <entityName>Salesproject_entity</entityName> + <fieldName>SalesprojectForecastCharts</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityConsumer> <name>Turnover_tree</name> - <dependency> - <name>dependency</name> - <entityName>TurnoverTree_entity</entityName> - <fieldName>FilteredTurnovers</fieldName> - </dependency> <children> <entityParameter> <name>MaxYear_param</name> @@ -98,6 +93,11 @@ <valueProcess>%aditoprj%/entity/Turnover_entity/entityfields/turnover_tree/children/showturnover_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>TurnoverTree_entity</entityName> + <fieldName>FilteredTurnovers</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>SalesprojectId_param</name> diff --git a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js index bd20eceda69bc4ed288c1090ba77ee4918831b57..fd0e3bd7a6f2c7518d54d02f9351a842f3d25d9b 100644 --- a/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js @@ -27,8 +27,8 @@ import("system.translate"); */ -var turnoverCategory = translate.text('Turnover'); -var forecastCategory = translate.text('Forecast'); +var turnoverCategory = translate.text("Turnover"); +var forecastCategory = translate.text("Forecast"); var maxYear = parseInt(vars.get("$param.MaxYear_param")); var yearCountToShow = parseInt(vars.get("$param.YearCountToShow_param")); diff --git a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod index 1abb59ffc8bc30f70492cbe64475651d62da62a8..57fdcb96a603fd37d3f7cf3566b93109223ad307 100644 --- a/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod +++ b/entity/UniversalFileProcessor_entity/UniversalFileProcessor_entity.aod @@ -24,17 +24,17 @@ </entityParameter> <entityConsumer> <name>Activities</name> - <dependency> - <name>dependency</name> - <entityName>Activity_entity</entityName> - <fieldName>LinkedObjects</fieldName> - </dependency> <children> <entityParameter> <name>ActivityIDs_param</name> <valueProcess>%aditoprj%/entity/UniversalFileProcessor_entity/entityfields/activities/children/activityids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Activity_entity</entityName> + <fieldName>LinkedObjects</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod index 42eb73a718ae614066df3597d25cc982dc96b69b..29ba9b689d57567d2aadb708693d3217d916ec15 100644 --- a/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod +++ b/entity/UnlinkedMailMappingWrapper_entity/UnlinkedMailMappingWrapper_entity.aod @@ -49,17 +49,17 @@ <entityConsumer> <name>UnlinkedMailMappingLinks</name> <documentation>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>UnlinkedMailMappingLink_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>MailAsText_param</name> <valueProcess>%aditoprj%/entity/UnlinkedMailMappingWrapper_entity/entityfields/unlinkedmailmappinglinks/children/mailastext_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>UnlinkedMailMappingLink_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UserhelpResources/UserhelpResources.aod b/entity/UserhelpResources_entity/UserhelpResources_entity.aod similarity index 70% rename from entity/UserhelpResources/UserhelpResources.aod rename to entity/UserhelpResources_entity/UserhelpResources_entity.aod index 7775d3fd5a4ba8d43ec112062c7772b437bd68c9..32f253d41162e3e5c8b4e33f1bcba45bdc803965 100644 --- a/entity/UserhelpResources/UserhelpResources.aod +++ b/entity/UserhelpResources_entity/UserhelpResources_entity.aod @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17"> - <name>UserhelpResources</name> + <name>UserhelpResources_entity</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <documentation>%aditoprj%/entity/UserhelpResources/documentation.adoc</documentation> + <documentation>%aditoprj%/entity/UserhelpResources_entity/documentation.adoc</documentation> <entityFields> <entityProvider> <name>#PROVIDER</name> @@ -12,21 +12,21 @@ </entityField> <entityConsumer> <name>Documents</name> - <dependency> - <name>dependency</name> - <entityName>Document_entity</entityName> - <fieldName>Documents</fieldName> - </dependency> <children> <entityParameter> <name>AssignmentTable_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js</valueProcess> </entityParameter> <entityParameter> <name>AssignmentRowId_param</name> - <valueProcess>%aditoprj%/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> + <valueProcess>%aditoprj%/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Document_entity</entityName> + <fieldName>Documents</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/UserhelpResources/documentation.adoc b/entity/UserhelpResources_entity/documentation.adoc similarity index 100% rename from entity/UserhelpResources/documentation.adoc rename to entity/UserhelpResources_entity/documentation.adoc diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmentrowid_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmentrowid_param/valueProcess.js diff --git a/entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js b/entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js similarity index 100% rename from entity/UserhelpResources/entityfields/documents/children/assignmenttable_param/valueProcess.js rename to entity/UserhelpResources_entity/entityfields/documents/children/assignmenttable_param/valueProcess.js diff --git a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod index 63130c5f63deebc3bc36702245a2755785fe4a50..d7e664a23695770a983a66ae5599360454629498 100644 --- a/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod +++ b/entity/VisitPlanEmployeeWeek_entity/VisitPlanEmployeeWeek_entity.aod @@ -82,11 +82,6 @@ </entityConsumer> <entityConsumer> <name>Entries</name> - <dependency> - <name>dependency</name> - <entityName>VisitPlanEntry_entity</entityName> - <fieldName>Entries</fieldName> - </dependency> <children> <entityParameter> <name>Entries_param</name> @@ -94,6 +89,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>VisitPlanEntry_entity</entityName> + <fieldName>Entries</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> @@ -136,10 +136,6 @@ <name>CONTACT_ID.value</name> <recordfield>VISITPLANEMPLOYEEWEEK.CONTACT_ID</recordfield> </dbRecordFieldMapping> - <dbRecordFieldMapping> - <name>CONTACT_ID.displayValue</name> - <expression>%aditoprj%/entity/VisitPlanEmployeeWeek_entity/recordcontainers/db/recordfieldmappings/person_id.displayvalue/expression.js</expression> - </dbRecordFieldMapping> </recordFieldMappings> </dbRecordContainer> </recordContainers> diff --git a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod index f059c7a9862bda4da4b6708cac9b114e81fd9423..bdb4144e03c7d3d3c6c658e28403f3bc6eb03818 100644 --- a/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod +++ b/entity/VisitPlanEntry_entity/VisitPlanEntry_entity.aod @@ -119,11 +119,6 @@ <entityConsumer> <name>KeywordVisitPlanEntryStatus</name> <documentation>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/keywordvisitplanentrystatus/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -131,6 +126,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Entries_param</name> @@ -186,11 +186,6 @@ </entityField> <entityConsumer> <name>Persons</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>Contacts</fieldName> - </dependency> <children> <entityParameter> <name>ExcludedContactIds_param</name> @@ -201,6 +196,11 @@ <valueProcess>%aditoprj%/entity/VisitPlanEntry_entity/entityfields/persons/children/onlyshowcontactids_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>Contacts</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> 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 6010af8787908086fb34aeabc91e2b53396345e4..bccac7cc31663c0452590bb08c4720db354a761b 100644 --- a/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod +++ b/entity/VisitRecommendation_entity/VisitRecommendation_entity.aod @@ -89,11 +89,6 @@ <entityConsumer> <name>KeywordVisitRecommendationPriority</name> <documentation>%aditoprj%/entity/VisitRecommendation_entity/entityfields/keywordvisitrecommendationpriority/documentation.adoc</documentation> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> @@ -101,6 +96,11 @@ <expose v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityConsumer> <name>OrganisationConsumer</name> @@ -112,11 +112,6 @@ </entityConsumer> <entityConsumer> <name>PersonConsumer</name> - <dependency> - <name>dependency</name> - <entityName>Person_entity</entityName> - <fieldName>#PROVIDER</fieldName> - </dependency> <children> <entityParameter> <name>ContactId_param</name> @@ -124,6 +119,11 @@ <mandatory v="true" /> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>Person_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ContactId_param</name> @@ -164,17 +164,17 @@ </entityProvider> <entityConsumer> <name>KeywordVisitRecommendationSource</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/VisitRecommendation_entity/entityfields/keywordvisitrecommendationsource/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityField> <name>ADDRESS_ZIP</name> diff --git a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js index 7effd511c0a20b96a072e8df4ba4e7650ede81c9..42fecc4e3d198603e333edf0c71beed523ff615a 100644 --- a/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js +++ b/entity/VisitRecommendation_entity/recordcontainers/jdito/contentProcess.js @@ -271,7 +271,7 @@ 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() diff --git a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod index ab10357478fbae31e30b3f5762444275d68cb28d..b523e8b8d09e3810d231cab32aa37701e5ec5046 100644 --- a/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod +++ b/entity/WorkflowDefinition_entity/WorkflowDefinition_entity.aod @@ -77,17 +77,17 @@ <entityConsumer> <name>Instances</name> <selectionMode>MULTI</selectionMode> - <dependency> - <name>dependency</name> - <entityName>WorkflowInstance_entity</entityName> - <fieldName>InstancesOfWorkflow</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowDefinitionKey_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/instances/children/workflowdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowInstance_entity</entityName> + <fieldName>InstancesOfWorkflow</fieldName> + </dependency> </entityConsumer> <entityField> <name>KEY</name> @@ -135,11 +135,6 @@ </entityParameter> <entityConsumer> <name>OtherVersions</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowDefinition_entity</entityName> - <fieldName>WorkflowVersions</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionKey_param</name> @@ -150,9 +145,15 @@ <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/otherversions/children/currentversion_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>WorkflowVersions</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>WorkflowVersions</name> + <documentation>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc</documentation> <titlePlural>Other versions</titlePlural> <children> <entityParameter> @@ -171,17 +172,17 @@ </entityField> <entityConsumer> <name>StartConfigs</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowStartConfig_entity</entityName> - <fieldName>StartConfig</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionKey_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/startconfigs/children/processdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowStartConfig_entity</entityName> + <fieldName>StartConfig</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Context_param</name> @@ -195,11 +196,6 @@ </entityActionField> <entityConsumer> <name>Signals</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowSignal_entity</entityName> - <fieldName>ProcessDefinitionSignals</fieldName> - </dependency> <children> <entityParameter> <name>ProcessDefinitionId_param</name> @@ -210,6 +206,11 @@ <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/signals/children/processdefinitionkey_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowSignal_entity</entityName> + <fieldName>ProcessDefinitionSignals</fieldName> + </dependency> </entityConsumer> <entityField> <name>VERSION_TITLE</name> @@ -231,17 +232,17 @@ </entityField> <entityConsumer> <name>CategoryKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowDefinition_entity/entityfields/categorykeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..3ea3eb5f375dd862f274e73030cd1c6a8124f24b --- /dev/null +++ b/entity/WorkflowDefinition_entity/entityfields/workflowversions/documentation.adoc @@ -0,0 +1,4 @@ += WorkflowVersions + +Loads all other versions of a workflow definition to show the version history. For that, the process key (ProcessDefinitionKey_param) is required and +the CurrentVersion_param can be used for excluding the currently opened version from the list. \ No newline at end of file diff --git a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod index 8c35ddbe8c30a3772342c03d9a04d3f9c1b60dd4..4b33d427532d30ddafb627ea0089fbae66a6bd11 100644 --- a/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod +++ b/entity/WorkflowInstanceHistory_entity/WorkflowInstanceHistory_entity.aod @@ -51,6 +51,7 @@ <name>HistoryForWorkflowInstance</name> <targetContextField>TARGET_CONTEXT</targetContextField> <targetIdField>TASK_ID</targetIdField> + <documentation>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc</documentation> <titlePlural>History</titlePlural> <dependencies> <entityDependency> @@ -77,17 +78,17 @@ </entityField> <entityConsumer> <name>ActivityTypeKeyword</name> - <dependency> - <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> - </dependency> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstanceHistory_entity/entityfields/activitytypekeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..8e0c3662b7605dd70bfacb74cf74d55afa61d099 --- /dev/null +++ b/entity/WorkflowInstanceHistory_entity/entityfields/historyforworkflowinstance/documentation.adoc @@ -0,0 +1,3 @@ += HistoryForWorkflowInstance + +Provides a history of the given workflow instance. This includes all the finished activities and tasks of that workflow. \ No newline at end of file diff --git a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod index 566506952d10531e4a485461d611e30d6eea4e6a..baf0056902e1eada308214db5fdd0f30d9c05c91 100644 --- a/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod +++ b/entity/WorkflowInstance_entity/WorkflowInstance_entity.aod @@ -18,6 +18,7 @@ </entityField> <entityProvider> <name>InstancesOfWorkflow</name> + <documentation>%aditoprj%/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc</documentation> <dependencies> <entityDependency> <name>96f047cf-7f3b-417e-ac08-9dc231c5d0ac</name> @@ -79,31 +80,31 @@ </entityField> <entityConsumer> <name>Tasks</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowTask_entity</entityName> - <fieldName>InstanceTasks</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/tasks/children/workflowinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>WorkflowDefinitions</name> <dependency> <name>dependency</name> - <entityName>WorkflowDefinition_entity</entityName> - <fieldName>#PROVIDER</fieldName> + <entityName>WorkflowTask_entity</entityName> + <fieldName>InstanceTasks</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>WorkflowDefinitions</name> <children> <entityParameter> <name>Context_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/workflowdefinitions/children/context_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>ProcessVariables_param</name> @@ -131,11 +132,6 @@ </entityActionField> <entityConsumer> <name>FinishedTasks</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowTask_entity</entityName> - <fieldName>FinishedInstanceTasks</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> @@ -146,6 +142,11 @@ <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/finishedtasks/children/includeservicetasks_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowTask_entity</entityName> + <fieldName>FinishedInstanceTasks</fieldName> + </dependency> </entityConsumer> <entityField> <name>ICON</name> @@ -153,17 +154,17 @@ </entityField> <entityConsumer> <name>History</name> - <dependency> - <name>dependency</name> - <entityName>WorkflowInstanceHistory_entity</entityName> - <fieldName>HistoryForWorkflowInstance</fieldName> - </dependency> <children> <entityParameter> <name>ProcessInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/history/children/processinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowInstanceHistory_entity</entityName> + <fieldName>HistoryForWorkflowInstance</fieldName> + </dependency> </entityConsumer> <entityField> <name>ISFINISHED</name> @@ -174,17 +175,17 @@ <entityConsumer> <name>Variables</name> <stateProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/variables/stateProcess.js</stateProcess> - <dependency> - <name>dependency</name> - <entityName>WorkflowVariableValue_entity</entityName> - <fieldName>VariablesOfInstance</fieldName> - </dependency> <children> <entityParameter> <name>WorkflowInstanceId_param</name> <valueProcess>%aditoprj%/entity/WorkflowInstance_entity/entityfields/variables/children/workflowinstanceid_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>WorkflowVariableValue_entity</entityName> + <fieldName>VariablesOfInstance</fieldName> + </dependency> </entityConsumer> <entityField> <name>DIAGRAM</name> diff --git a/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..41f9fecfaece367623551c7bfbb8e010271017c8 --- /dev/null +++ b/entity/WorkflowInstance_entity/entityfields/instancesofworkflow/documentation.adoc @@ -0,0 +1,3 @@ += InstancesOfWorkflow + +Provider for all workflow instances started from a specific workflow definition \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod index f1640dc1aacfcbb6ebd9de2ce5afb3d6ca8b92c9..cb1c24289be4239a3071a00dcf8f9193b8038421 100644 --- a/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod +++ b/entity/WorkflowLauncher_entity/WorkflowLauncher_entity.aod @@ -2,6 +2,7 @@ <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> + <documentation>%aditoprj%/entity/WorkflowLauncher_entity/documentation.adoc</documentation> <recordContainer>dataLess</recordContainer> <entityFields> <entityProvider> @@ -61,17 +62,17 @@ </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> + <dependency> + <name>dependency</name> + <entityName>WorkflowDefinition_entity</entityName> + <fieldName>#PROVIDER</fieldName> + </dependency> </entityConsumer> <entityParameter> <name>Validationerrors_param</name> @@ -88,6 +89,7 @@ <recordContainers> <datalessRecordContainer> <name>dataLess</name> + <alias>Data_alias</alias> </datalessRecordContainer> </recordContainers> </entity> diff --git a/entity/WorkflowLauncher_entity/documentation.adoc b/entity/WorkflowLauncher_entity/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..2b9731f8a4e9eb04904c5ee2bd479878bdbd39b4 --- /dev/null +++ b/entity/WorkflowLauncher_entity/documentation.adoc @@ -0,0 +1,3 @@ += WorkflowLauncher_entity + +An entity with dataless recordcontainer to create a dialog that starts workflow instances. \ No newline at end of file diff --git a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js index 7e0756271a92383e5130ad6aeb18ef79a715b0af..71d4a69dc83979fcc497fddddee58f56273c8f59 100644 --- a/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js +++ b/entity/WorkflowLauncher_entity/entityfields/launchworkflows/onActionProcess.js @@ -17,10 +17,9 @@ if (!Utils.isNullOrEmpty(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 = {}; + Object.assign(processVariables, variables); processVariables[WorkflowVariables.TARGET_ID()] = targetId; processVariables[WorkflowVariables.TARGET_CONTEXT()] = targetContext || context; diff --git a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod index 0482a952cde7ed445aa8048cbb38c08eaee58570..1e857118e9c07f4b1ac03110221c77f1c07688be 100644 --- a/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod +++ b/entity/WorkflowSignal_entity/WorkflowSignal_entity.aod @@ -47,11 +47,6 @@ </entityField> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -62,23 +57,29 @@ <valueProcess>%aditoprj%/entity/WorkflowSignal_entity/entityfields/contexts/children/invertblacklist_param/valueProcess.js</valueProcess> </entityParameter> </children> - </entityConsumer> - <entityConsumer> - <name>TriggerKeyword</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TriggerKeyword</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowSignal_entity/entityfields/triggerkeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>ProcessDefinitionSignals</name> + <documentation>%aditoprj%/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc</documentation> <dependencies> <entityDependency> <name>f08ff63c-296a-4b1f-8264-b6b1e6c1d748</name> diff --git a/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..7d279f26c91439041be487d34adf21ab2f4d322a --- /dev/null +++ b/entity/WorkflowSignal_entity/entityfields/processdefinitionsignals/documentation.adoc @@ -0,0 +1,3 @@ += ProcessDefinitionSignals + +Provides all signals defined in the given workflow definition. \ No newline at end of file diff --git a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod index beafceffdfe067862b2781e806816b8aaf9ef50d..2d30eb85c0a2d04e62f73c1d8b354bb72d86d52f 100644 --- a/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod +++ b/entity/WorkflowStartConfig_entity/WorkflowStartConfig_entity.aod @@ -49,11 +49,6 @@ </entityProvider> <entityConsumer> <name>Contexts</name> - <dependency> - <name>dependency</name> - <entityName>Context_entity</entityName> - <fieldName>Exclusive</fieldName> - </dependency> <children> <entityParameter> <name>Blacklist_param</name> @@ -63,25 +58,26 @@ <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> - <name>TriggerKeyword</name> <dependency> <name>dependency</name> - <entityName>KeywordEntry_entity</entityName> - <fieldName>SpecificContainerKeywords</fieldName> + <entityName>Context_entity</entityName> + <fieldName>Exclusive</fieldName> </dependency> + </entityConsumer> + <entityConsumer> + <name>TriggerKeyword</name> <children> <entityParameter> <name>ContainerName_param</name> <valueProcess>%aditoprj%/entity/WorkflowStartConfig_entity/entityfields/triggerkeyword/children/containername_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>KeywordEntry_entity</entityName> + <fieldName>SpecificContainerKeywords</fieldName> + </dependency> </entityConsumer> <entityProvider> <name>#PROVIDER_AGGREGATES</name> diff --git a/entity/WorkflowTask_entity/WorkflowTask_entity.aod b/entity/WorkflowTask_entity/WorkflowTask_entity.aod index 96272fe5f1d9bb562efd850639fc9254cccf61e6..5a9cabd4bea5789fa4b4cc7f5c4e3ebddde6571d 100644 --- a/entity/WorkflowTask_entity/WorkflowTask_entity.aod +++ b/entity/WorkflowTask_entity/WorkflowTask_entity.aod @@ -76,14 +76,7 @@ </entityField> <entityProvider> <name>InstanceTasks</name> - <dependencies> - <entityDependency> - <name>5913327f-1bb4-48b8-846e-639274290cee</name> - <entityName>WorkflowInstance_entity</entityName> - <fieldName>Tasks</fieldName> - <isConsumer v="false" /> - </entityDependency> - </dependencies> + <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc</documentation> <children> <entityParameter> <name>OnlyFinishedTasks_param</name> @@ -94,6 +87,14 @@ <expose v="false" /> </entityParameter> </children> + <dependencies> + <entityDependency> + <name>5913327f-1bb4-48b8-846e-639274290cee</name> + <entityName>WorkflowInstance_entity</entityName> + <fieldName>Tasks</fieldName> + <isConsumer v="false" /> + </entityDependency> + </dependencies> </entityProvider> <entityParameter> <name>WorkflowInstanceId_param</name> @@ -183,6 +184,14 @@ </entityParameter> <entityProvider> <name>FinishedInstanceTasks</name> + <documentation>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc</documentation> + <children> + <entityParameter> + <name>OnlyFinishedTasks_param</name> + <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/children/onlyfinishedtasks_param/valueProcess.js</valueProcess> + <expose v="false" /> + </entityParameter> + </children> <dependencies> <entityDependency> <name>d5d39281-0183-42fa-960a-01347cddc85a</name> @@ -191,13 +200,6 @@ <isConsumer v="false" /> </entityDependency> </dependencies> - <children> - <entityParameter> - <name>OnlyFinishedTasks_param</name> - <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/children/onlyfinishedtasks_param/valueProcess.js</valueProcess> - <expose v="false" /> - </entityParameter> - </children> </entityProvider> <entityParameter> <name>IncludeServiceTasks_param</name> @@ -205,17 +207,17 @@ </entityParameter> <entityConsumer> <name>LinkedObject</name> - <dependency> - <name>dependency</name> - <entityName>ObjectProxy_entity</entityName> - <fieldName>FilteredObjects</fieldName> - </dependency> <children> <entityParameter> <name>Entity_param</name> <valueProcess>%aditoprj%/entity/WorkflowTask_entity/entityfields/linkedobject/children/entity_param/valueProcess.js</valueProcess> </entityParameter> </children> + <dependency> + <name>dependency</name> + <entityName>ObjectProxy_entity</entityName> + <fieldName>FilteredObjects</fieldName> + </dependency> </entityConsumer> <entityActionGroup> <name>tableActions</name> diff --git a/entity/WorkflowTask_entity/afterSave.js b/entity/WorkflowTask_entity/afterSave.js index 68fae8b0d2432769e1c21ae7d594d02fd20cdb87..61b54c53434b45f42ffd7184e88c153966cfac5c 100644 --- a/entity/WorkflowTask_entity/afterSave.js +++ b/entity/WorkflowTask_entity/afterSave.js @@ -30,9 +30,9 @@ if (entityData["FORMRESULT"]) else { var params = { - "TaskTitle_param" : rowData["NAME.value"] + "TaskTitle_param": entityData["NAME"] }; //if you try to open the task now, it will display "Task done" - neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [rowData["UID.value"]], neon.OPERATINGSTATE_VIEW, params); + neon.openContext("WorkflowTask", "WorkflowTaskPreview_view", [entityData["UID"]], neon.OPERATINGSTATE_VIEW, params); } } \ No newline at end of file diff --git a/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..9c6e27a4c533764cf77525c919d49975460d37a4 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/finishedinstancetasks/documentation.adoc @@ -0,0 +1,3 @@ += FinishedInstanceTasks + +Provides all finished tasks for one process instance. \ No newline at end of file diff --git a/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..1d64bc1c9b05d07e6da7b2687f01784fceed7a69 --- /dev/null +++ b/entity/WorkflowTask_entity/entityfields/instancetasks/documentation.adoc @@ -0,0 +1,3 @@ += InstanceTasks + +Provides all active tasks for one workflow instance. \ No newline at end of file diff --git a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod index df6d2af4a4fbaaefe03d95087d1f7062bfbb4ff3..21b68b882b86779e038b545bdde94320daa33713 100644 --- a/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod +++ b/entity/WorkflowVariableValue_entity/WorkflowVariableValue_entity.aod @@ -31,6 +31,7 @@ </entityParameter> <entityProvider> <name>VariablesOfInstance</name> + <documentation>%aditoprj%/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc</documentation> <dependencies> <entityDependency> <name>b10924d7-0ba4-4268-8b2f-383e7cf6045c</name> diff --git a/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc new file mode 100644 index 0000000000000000000000000000000000000000..a65691e2574d4bcb759568834d2154665042a0a9 --- /dev/null +++ b/entity/WorkflowVariableValue_entity/entityfields/variablesofinstance/documentation.adoc @@ -0,0 +1,3 @@ += VariablesOfInstance + +Provides all variables contained in a specific workflow instance. \ No newline at end of file diff --git a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod index bee7fd6513ec22226a7dec19b5ee03fd0a3c2cdf..375e6f269678c8240a93bfc520ffd0c42045ac97 100644 --- a/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod +++ b/language/_____LANGUAGE_EXTRA/_____LANGUAGE_EXTRA.aod @@ -61,7 +61,7 @@ <key>Female</key> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> </entry> <entry> <key>Office address</key> @@ -646,7 +646,7 @@ <key>Orderitems</key> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> </entry> <entry> <key>Copy receipt</key> @@ -664,7 +664,7 @@ <key>Turnover</key> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> </entry> <entry> <key>Show all activities</key> @@ -733,7 +733,7 @@ <key>Show all salesprojects</key> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> </entry> <entry> <key>July</key> @@ -2374,7 +2374,7 @@ <key>{$ADDRESS_IDENTIFIER}</key> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> </entry> <entry> <key>Add to Campaign</key> @@ -2392,7 +2392,7 @@ <key>Add participants to Campaign</key> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> </entry> <entry> <key>Delete all usage</key> @@ -4105,7 +4105,7 @@ <key>Show my campaigns</key> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> </entry> <entry> <key>Add to Bulkmail</key> @@ -4297,7 +4297,7 @@ <key>Unknown incoming call from %0 to %1</key> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> </entry> <entry> <key>hour</key> @@ -4309,7 +4309,7 @@ <key>Incoming call from %0 (%1) to %2</key> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> </entry> <entry> <key>Unknown accepted call from %0 to %1, duration: %2</key> @@ -4546,7 +4546,7 @@ <key>Campaign management</key> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> </entry> <entry> <key>Shows all campaigns</key> @@ -4777,7 +4777,7 @@ <key>Credit</key> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> </entry> <entry> <key>Replacement name</key> @@ -4933,13 +4933,13 @@ <key>Show my contacts</key> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> </entry> <entry> <key>Show my organisations</key> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> </entry> <entry> <key>Custom template</key> @@ -4971,18 +4971,12 @@ <entry> <key>Has sales approved this step?</key> </entry> - <entry> - <key>"</key> - </entry> <entry> <key>Import Date</key> </entry> <entry> <key>Import Data</key> </entry> - <entry> - <key>;</key> - </entry> <entry> <key>Standard mail</key> </entry> @@ -5333,9 +5327,6 @@ <entry> <key>Mobility, Transport and Logistics</key> </entry> - <entry> - <key>Sales Project</key> - </entry> <entry> <key>Load data</key> </entry> @@ -5688,7 +5679,7 @@ <key>No letters</key> </entry> <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> </entry> <entry> <key>My workflow tasks</key> @@ -6066,7 +6057,7 @@ <key>Workflow management</key> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> </entry> <entry> <key>Update offer</key> @@ -6290,9 +6281,6 @@ <entry> <key>Lead Import</key> </entry> - <entry> - <key>Contact Management</key> - </entry> <entry> <key>Campaign Planning</key> </entry> @@ -6521,9 +6509,6 @@ <entry> <key>Full details</key> </entry> - <entry> - <key>Sales Projects</key> - </entry> <entry> <key>set Read</key> </entry> @@ -6705,7 +6690,7 @@ <key>{SENT_MAIL}</key> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> </entry> <entry> <key>The workflow could not be deployed</key> @@ -7293,6 +7278,315 @@ <entry> <key>Standard Zip</key> </entry> + <entry> + <key>Outstanding Amount</key> + </entry> + <entry> + <key>Start marketing mailing</key> + </entry> + <entry> + <key>Email address</key> + </entry> + <entry> + <key>#rememberme</key> + </entry> + <entry> + <key>#login</key> + </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> + <entry> + <key>Add app</key> + </entry> + <entry> + <key>Open Teams</key> + </entry> + <entry> + <key>Choose Team</key> + </entry> + <entry> + <key>Delete Team</key> + </entry> + <entry> + <key>Restore Team</key> + </entry> + <entry> + <key>Create Team</key> + </entry> + <entry> + <key>Team role</key> + </entry> + <entry> + <key>Edit Team</key> + </entry> + <entry> + <key>Sales Project</key> + </entry> + <entry> + <key>Channels</key> + </entry> + <entry> + <key>Private</key> + </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> + <entry> + <key>The max participants count can not be equal or less then 0</key> + </entry> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + </entry> + <entry> + <key>My campaigns</key> + </entry> + <entry> + <key>Subcategory</key> + </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</key> + </entry> + <entry> + <key>The team must have at least one owner</key> + </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> <sqlModels> diff --git a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod index b3d003710b7d14ec99d63e66bbfcee469231a149..9efeb9f1343cec8f101ffd7f4549154d2659e3f7 100644 --- a/language/_____LANGUAGE_de/_____LANGUAGE_de.aod +++ b/language/_____LANGUAGE_de/_____LANGUAGE_de.aod @@ -6,10 +6,46 @@ <country></country> <variant></variant> <keyValueMap> + <entry> + <key>The max participants count can not be equal or less then 0</key> + <value>Die maximale Teilnehmerzahl muss größer 0 sein!</value> + </entry> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + <value>Übergebener Operator ungültig in Funktion "buildFilterObj"</value> + </entry> <entry> <key>Probability AI</key> <value>Wahrscheinlichkeit KI</value> </entry> + <entry> + <key>Delete Team</key> + <value>Team löschen</value> + </entry> + <entry> + <key>Open Teams</key> + <value>Teams öffnen</value> + </entry> + <entry> + <key>Restore Team</key> + <value>Team wiederherstellen</value> + </entry> + <entry> + <key>Choose Team</key> + <value>Team auswählen</value> + </entry> + <entry> + <key>Private</key> + <value>Privat</value> + </entry> + <entry> + <key>Add app</key> + <value>App hinzufügen</value> + </entry> + <entry> + <key>Edit Team</key> + <value>Team bearbeiten</value> + </entry> <entry> <key>The start date has to be before the end date.</key> <value>Das Startdatum muss vor dem Enddatum sein.</value> @@ -38,10 +74,18 @@ <key>Favoritegroup</key> <value>Favoritengruppe</value> </entry> + <entry> + <key>The team must have at least one owner</key> + <value>Das Team muss mindestens einen Besitzer haben</value> + </entry> <entry> <key>Data imported. Contact not found.</key> <value>Daten importiert. Keine weiteren Personendaten gefunden.</value> </entry> + <entry> + <key>Last change</key> + <value>Letzte Änderung</value> + </entry> <entry> <key>Variables</key> <value>Variablen</value> @@ -50,6 +94,10 @@ <key>Finished</key> <value>Fertig</value> </entry> + <entry> + <key>Knowledge Management</key> + <value>Wissensmanagement</value> + </entry> <entry> <key>Show my organisations</key> <value>Meine Firmen anzeigen</value> @@ -58,6 +106,10 @@ <key>Radius Search</key> <value>Umkreissuche</value> </entry> + <entry> + <key>Discussion</key> + <value>Diskussion</value> + </entry> <entry> <key>${FILTER_DYNAMIC_VALUE_ME}</key> <value>Ich</value> @@ -83,7 +135,7 @@ <value>Keine E-Mails</value> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> <value>Meine Firmen</value> </entry> <entry> @@ -259,7 +311,7 @@ <value>Eigenschaftsgruppen können nicht verwendet werden</value> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> <value>Meine Kontakte</value> </entry> <entry> @@ -407,7 +459,7 @@ <value>Priorität</value> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> <value>Vertriebsprojektphasen</value> </entry> <entry> @@ -914,6 +966,10 @@ <key>Contacts</key> <value>Kontakte</value> </entry> + <entry> + <key>Channels</key> + <value>Kanäle</value> + </entry> <entry> <key>Address</key> <value>Adresse</value> @@ -1028,7 +1084,7 @@ <value>Teilnehmer/innen</value> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> <value>Kontaktmanagement</value> </entry> <entry> @@ -1371,6 +1427,10 @@ <key>IN</key> <value>EIN</value> </entry> + <entry> + <key>Knowledge</key> + <value>Wissen</value> + </entry> <entry> <key>OUT</key> <value>AUS</value> @@ -1435,6 +1495,10 @@ <key>Order</key> <value>Bestellung</value> </entry> + <entry> + <key>Team role</key> + <value>Teamrolle</value> + </entry> <entry> <key>Postponed</key> <value>Vertagt</value> @@ -1686,6 +1750,10 @@ <key>Role</key> <value>Rolle</value> </entry> + <entry> + <key>Closed</key> + <value>Geschlossen</value> + </entry> <entry> <key>End date</key> <value>Enddatum</value> @@ -1763,7 +1831,7 @@ <value>Niedrigpreisstrategie</value> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> <value>Versendete Angebote</value> </entry> <entry> @@ -1787,7 +1855,7 @@ <value>Vertriebsprojekte</value> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> <value>Offene Vertriebsprojekte</value> </entry> <entry> @@ -2016,7 +2084,7 @@ <value>Belegposten</value> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> <value>Versendete Belege</value> </entry> <entry> @@ -2200,7 +2268,7 @@ <value>Vertriebsdashboard</value> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> <value>Kennzahlen</value> </entry> <entry> @@ -2795,6 +2863,10 @@ <key>new</key> <value>neu</value> </entry> + <entry> + <key>Start marketing mailing</key> + <value>Marketing Mailing starten</value> + </entry> <entry> <key>Adviser</key> <value>Berater</value> @@ -2983,6 +3055,10 @@ <key>Georgia</key> <value>Georgia</value> </entry> + <entry> + <key>Publishing level</key> + <value>Veröffentlichung</value> + </entry> <entry> <key>Saint Kitts and Nevis</key> <value>St. Kitts und Nevis</value> @@ -3067,6 +3143,10 @@ <key>Kgs</key> <value>Kg</value> </entry> + <entry> + <key>Email address</key> + <value>E-Mail Adresse</value> + </entry> <entry> <key>Australia</key> <value>Australien</value> @@ -3163,6 +3243,10 @@ <key>Project manager</key> <value>Projektmanager</value> </entry> + <entry> + <key>List news articles</key> + <value>News-Artikel auflisten</value> + </entry> <entry> <key>Singapore</key> <value>Singapur</value> @@ -4435,6 +4519,10 @@ <key>Relation Title</key> <value>Beziehungstitel</value> </entry> + <entry> + <key>Knowledge entries</key> + <value>Wissenseinträge</value> + </entry> <entry> <key>%0 \"%1\"</key> </entry> @@ -4446,10 +4534,18 @@ <key>Data executed</key> <value>Daten ausgeführt</value> </entry> + <entry> + <key>Export HTML</key> + <value>HTML exportieren</value> + </entry> <entry> <key>Indexsearch</key> <value>Indexsuche</value> </entry> + <entry> + <key>Edited on</key> + <value>Bearbeitet am</value> + </entry> <entry> <key>Appointment link Id</key> <value>Terminverknüpfungs Id</value> @@ -4474,6 +4570,10 @@ <key>Int value</key> <value>Zahlenwert</value> </entry> + <entry> + <key>Text content</key> + <value>Textinhalt</value> + </entry> <entry> <key>Object 2 row Id</key> <value>Objekt 2 Row Id</value> @@ -4614,9 +4714,13 @@ <key>Address addition</key> <value>Adresszusatz</value> </entry> + <entry> + <key>Shows complete news articles</key> + <value>Zeigt News-Artikel vollständig an</value> + </entry> <entry> <key>the \"%0\" table is configured to get logged but this is the logging-stoarge itself and cannot be monitored</key> - <value>Die "% 0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value> + <value>Die "%0" -Tabelle ist so konfiguriert, dass sie protokolliert wird. Dies ist jedoch der Protokollierspeicher selbst und kann nicht überwacht werden</value> </entry> <entry> <key>Attribute usage Id</key> @@ -5286,6 +5390,10 @@ <key>Minimal count must be a positive whole number</key> <value>Minimale Anzahl muss eine positive, ganze Zahl sein</value> </entry> + <entry> + <key>All Knowledge Entries</key> + <value>Alle Wissenseinträge</value> + </entry> <entry> <key>Maximal count must be one or higher</key> <value>Maximale Anzahl muss eins oder höher sein</value> @@ -5330,6 +5438,10 @@ <key>Privacy agreement</key> <value>Datenschutzabkommen</value> </entry> + <entry> + <key>Newsfeed (Preview)</key> + <value>Newsfeed (Vorschau)</value> + </entry> <entry> <key>Commodity group A</key> <value>Warengruppe A</value> @@ -6142,7 +6254,7 @@ <value>Keine Kontakte ausgewählt</value> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> <value>Meine Kampagnen</value> </entry> <entry> @@ -6235,7 +6347,7 @@ <value>eine Datei ignoriert</value> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> <value>Alle unverknüpften E-Mails</value> </entry> <entry> @@ -6251,7 +6363,7 @@ <value>Eingehender Anruf von %0 (%1) nach %2</value> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> <value>E-Mails importieren</value> </entry> <entry> @@ -6455,7 +6567,7 @@ <value>Kampagnenmanagement</value> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> <value>Kampagnenkosten</value> </entry> <entry> @@ -6548,7 +6660,7 @@ </entry> <entry> <key>Order number</key> - <value>Belegsnummer</value> + <value>Belegnummer</value> </entry> <entry> <key>Permission Action</key> @@ -6568,7 +6680,7 @@ </entry> <entry> <key>Print reminder</key> - <value>Mahnung drucken</value> + <value>Mahnung anzeigen</value> </entry> <entry> <key>Rech.-Betrag</key> @@ -6576,7 +6688,7 @@ </entry> <entry> <key>Order date</key> - <value>Belegsdatum</value> + <value>Belegdatum</value> </entry> <entry> <key>Due date</key> @@ -6628,7 +6740,7 @@ </entry> <entry> <key>This error should never appear - contact administrator (PermissionDetail_entity.PermissionAction.onValidation).</key> - <value>Dieser Fehler sollte nie erscheinen - kontaktieren sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> + <value>Dieser Fehler sollte nie erscheinen - kontaktieren Sie einen Administrator (PermissionDetail_entity.PermissionAction.onValidation).</value> </entry> <entry> <key>Empty actions are invalid!</key> @@ -6730,7 +6842,7 @@ </entry> <entry> <key>Only .odt files are supported for bulkletters.</key> - <value>Für Serienbriefe werden nur.odt Dateien unterstützt</value> + <value>Für Serienbriefe werden nur .odt Dateien unterstützt</value> </entry> <entry> <key>Show tickets where I am the editor</key> @@ -6745,7 +6857,7 @@ <value>Vorlagen-Anhänge verwenden</value> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> <value>Meine Tickets</value> </entry> <entry> @@ -6873,6 +6985,10 @@ <key>Faroe Islands</key> <value>Färöer</value> </entry> + <entry> + <key>Discussions</key> + <value>Diskussionen</value> + </entry> <entry> <key>${CONTRACT_STATUS}</key> <value>Vertragsstatus</value> @@ -6956,10 +7072,6 @@ <entry> <key>yyyyMMdd</key> </entry> - <entry> - <key>Sales Project</key> - <value>Vertriebsprojekt</value> - </entry> <entry> <key>closed</key> <value>geschlossen</value> @@ -7112,6 +7224,10 @@ <key>Column 7</key> <value>Spalte 7</value> </entry> + <entry> + <key>Reply</key> + <value>Antworten</value> + </entry> <entry> <key>Column 6</key> <value>Spalte 6</value> @@ -7180,6 +7296,10 @@ <key>Lead</key> <value>Lead </value> </entry> + <entry> + <key>Toggle status</key> + <value>Status ändern</value> + </entry> <entry> <key>Company name</key> <value>Firmenname</value> @@ -7408,6 +7528,10 @@ <key>Nein</key> <value>Nein</value> </entry> + <entry> + <key>Create Team</key> + <value>Team erstellen</value> + </entry> <entry> <key>Use for duplicate search</key> <value>Für Duplettensuche benutzen</value> @@ -7786,13 +7910,7 @@ Bitte Datumseingabe prüfen</value> <value>Nur Eigene anzeigen</value> </entry> <entry> - <key>"</key> - </entry> - <entry> - <key>;</key> - </entry> - <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> <value>Meine Workflow Aufgaben</value> </entry> <entry> @@ -7861,6 +7979,10 @@ Bitte Datumseingabe prüfen</value> <key>${CANCELLED}</key> <value>Abgebrochen</value> </entry> + <entry> + <key>Newsfeed (Full)</key> + <value>Newsfeed (Vollständig)</value> + </entry> <entry> <key>Workflow signal</key> <value>Workflow Signal</value> @@ -8001,6 +8123,10 @@ Bitte Datumseingabe prüfen</value> <key>Senderphone</key> <value>Sendertelefonnummer</value> </entry> + <entry> + <key>Sales Project</key> + <value>Vertriebsprojekt</value> + </entry> <entry> <key>Sendername</key> <value>Sendername</value> @@ -8210,7 +8336,7 @@ Bitte Datumseingabe prüfen</value> <value>Workflow management</value> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> <value>Meine Besuchsplanung</value> </entry> <entry> @@ -8253,6 +8379,9 @@ Bitte Datumseingabe prüfen</value> <key>The radius has to be %0 or lesser.</key> <value>Der Radius muss %0 km oder weniger betragen.</value> </entry> + <entry> + <key>Subcategory</key> + </entry> <entry> <key>The radius has to be at least %0.</key> <value>Der Radius muss mindestens %0 km betragen.</value> @@ -8545,10 +8674,6 @@ Bitte Datumseingabe prüfen</value> <key>Lead Import</key> <value>Leadimport</value> </entry> - <entry> - <key>Contact Management</key> - <value>Kontaktmanagement</value> - </entry> <entry> <key>Campaign Planning</key> <value>Kampagnenplanung</value> @@ -8557,6 +8682,10 @@ Bitte Datumseingabe prüfen</value> <key>Bulk Mail</key> <value>Serienmail</value> </entry> + <entry> + <key>Knowledge Role</key> + <value>Wissensrolle</value> + </entry> <entry> <key>Workflow Definition</key> <value>Workflowdefinition</value> @@ -8717,6 +8846,10 @@ Bitte Datumseingabe prüfen</value> <key>Read and Write Permission</key> <value>Volle Lese- und Schreibberechtigung</value> </entry> + <entry> + <key>Created on</key> + <value>Erstellt am</value> + </entry> <entry> <key>Synchronize calendar permissions from Exchange to ADITO</key> <value>Synchronisiere Kalenderberechtigungen von Exchange nach ADITO</value> @@ -8745,10 +8878,6 @@ Bitte Datumseingabe prüfen</value> <key>Not created yet</key> <value>Noch nicht erstellt</value> </entry> - <entry> - <key>Sales Projects</key> - <value>Vertriebsprojekte</value> - </entry> <entry> <key>set Read</key> <value>Gelesen setzen</value> @@ -9265,7 +9394,7 @@ Bitte Datumseingabe prüfen</value> <value>Punkte</value> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> <value>vertriebsprojekt darf nur gefüllt sein wenn eine Firma festgelegt wurde.</value> </entry> <entry> @@ -9430,16 +9559,16 @@ Bitte Datumseingabe prüfen</value> </value> </entry> <entry> - <key>LinkedIn (Person)</key> - <value>LinkedIn (Person)</value> + <key>Linked in (Person)</key> + <value>Linked In (Person)</value> </entry> <entry> <key>Mobile number (Organisation)</key> <value>Handynummer (Organisation)</value> </entry> <entry> - <key>LinkedIn (Organisation)</key> - <value>LinkedIn (Organisation)</value> + <key>Linked in (Organisation)</key> + <value>Linked In (Organisation)</value> </entry> <entry> <key>Xing (Organisation)</key> @@ -9644,7 +9773,7 @@ Bitte Datumseingabe prüfen</value> </entry> <entry> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> - <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren sie einen Administrator.</value> + <value>Mailbridge fehlgeschlagen: Benutzer '%0' ist unbekannt, kontaktieren Sie einen Administrator.</value> </entry> <entry> <key>Count Chart</key> @@ -9674,6 +9803,10 @@ Bitte Datumseingabe prüfen</value> <key>Standard Zip</key> <value>Standart Plz</value> </entry> + <entry> + <key>Outstanding Amount</key> + <value>Offener Betrag</value> + </entry> <entry> <key>#rememberme</key> <value>Angemeldet bleiben</value> @@ -9682,6 +9815,196 @@ Bitte Datumseingabe prüfen</value> <key>#login</key> <value>Login Token</value> </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + <value>Workflows starten</value> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> + <entry> + <key>My campaigns</key> + </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</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 5cdb447d6f2e8ede8872d869542c99486b40818c..e27607261acb9a472b6febcf29b79d1b6aebb970 100644 --- a/language/_____LANGUAGE_en/_____LANGUAGE_en.aod +++ b/language/_____LANGUAGE_en/_____LANGUAGE_en.aod @@ -86,7 +86,7 @@ <key>Female</key> </entry> <entry> - <key>Contactmanagement</key> + <key>Contact Management</key> </entry> <entry> <key>Office address</key> @@ -679,7 +679,7 @@ <key>Orderitems</key> </entry> <entry> - <key>Sent receipts</key> + <key>Sent Receipts</key> </entry> <entry> <key>Copy receipt</key> @@ -697,7 +697,7 @@ <key>Turnover</key> </entry> <entry> - <key>Sent offers</key> + <key>Sent Offers</key> </entry> <entry> <key>Show all activities</key> @@ -766,7 +766,7 @@ <key>Show all salesprojects</key> </entry> <entry> - <key>Open salesprojects</key> + <key>Open Salesprojects</key> </entry> <entry> <key>July</key> @@ -2426,7 +2426,7 @@ <value>Identifier</value> </entry> <entry> - <key>Salesproject phases</key> + <key>Salesproject Phases</key> </entry> <entry> <key>Add to Campaign</key> @@ -2444,7 +2444,7 @@ <key>Add participants to Campaign</key> </entry> <entry> - <key>Key figures</key> + <key>Key Figures</key> </entry> <entry> <key>Hierarchy</key> @@ -4215,7 +4215,7 @@ <key>Show my campaigns</key> </entry> <entry> - <key>My campaigns</key> + <key>My Campaigns</key> </entry> <entry> <key>Add to Bulkmail</key> @@ -4374,7 +4374,7 @@ <key>Unknown incoming call from %0 to %1</key> </entry> <entry> - <key>All unlinked mails</key> + <key>All Unlinked Mails</key> </entry> <entry> <key>hour</key> @@ -4386,7 +4386,7 @@ <key>Incoming call from %0 (%1) to %2</key> </entry> <entry> - <key>import mails</key> + <key>Import Mails</key> </entry> <entry> <key>Unknown accepted call from %0 to %1, duration: %2</key> @@ -4623,7 +4623,7 @@ <key>Add the selection to a serial letter</key> </entry> <entry> - <key>Campaign costs</key> + <key>Campaign Costs</key> </entry> <entry> <key>Shows all campaigns</key> @@ -4869,7 +4869,7 @@ <key>Use template attachments</key> </entry> <entry> - <key>My tickets</key> + <key>My Tickets</key> </entry> <entry> <key>HTML template - Only for .html</key> @@ -5010,13 +5010,13 @@ <key>Show my contacts</key> </entry> <entry> - <key>My contacts</key> + <key>My Contacts</key> </entry> <entry> <key>Show my organisations</key> </entry> <entry> - <key>My organisations</key> + <key>My Organisations</key> </entry> <entry> <key>Custom template</key> @@ -5048,18 +5048,12 @@ <entry> <key>Has sales approved this step?</key> </entry> - <entry> - <key>"</key> - </entry> <entry> <key>Import Date</key> </entry> <entry> <key>Import Data</key> </entry> - <entry> - <key>;</key> - </entry> <entry> <key>Standard mail</key> </entry> @@ -5410,9 +5404,6 @@ <entry> <key>Mobility, Transport and Logistics</key> </entry> - <entry> - <key>Sales Project</key> - </entry> <entry> <key>Load data</key> </entry> @@ -5765,7 +5756,7 @@ <key>No letters</key> </entry> <entry> - <key>Own workflow tasks</key> + <key>My Workflow Tasks</key> </entry> <entry> <key>My workflow tasks</key> @@ -6134,7 +6125,7 @@ <key>Workflow management</key> </entry> <entry> - <key>my visit planning</key> + <key>My Visit Planning</key> </entry> <entry> <key>Update offer</key> @@ -6363,9 +6354,6 @@ <entry> <key>Lead Import</key> </entry> - <entry> - <key>Contact Management</key> - </entry> <entry> <key>Campaign Planning</key> </entry> @@ -6606,9 +6594,6 @@ <entry> <key>Invalid file type; only .html, .eml and .txt are allowed</key> </entry> - <entry> - <key>Sales Projects</key> - </entry> <entry> <key>set Read</key> </entry> @@ -6788,7 +6773,7 @@ <key>Workflow Model</key> </entry> <entry> - <key>The Sales Project can only be filled when a company has been specified</key> + <key>The Salesproject can only be filled when a company has been specified</key> </entry> <entry> <key>{SEND_MAIL}</key> @@ -7374,13 +7359,314 @@ <entry> <key>Standard Zip</key> </entry> + <entry> + <key>Outstanding Amount</key> + </entry> + <entry> + <key>Start marketing mailing</key> + </entry> + <entry> + <key>Email address</key> + </entry> <entry> <key>#rememberme</key> - <value>Stay logged in</value> </entry> <entry> <key>#login</key> - <value>Login token</value> + </entry> + <entry> + <key>Last change</key> + </entry> + <entry> + <key>Knowledge entries</key> + </entry> + <entry> + <key>Newsfeed (Preview)</key> + </entry> + <entry> + <key>Edited on</key> + </entry> + <entry> + <key>Created on</key> + </entry> + <entry> + <key>Discussion</key> + </entry> + <entry> + <key>Newsfeed (Full)</key> + </entry> + <entry> + <key>Closed</key> + </entry> + <entry> + <key>Text content</key> + </entry> + <entry> + <key>Reply</key> + </entry> + <entry> + <key>All Knowledge Entries</key> + </entry> + <entry> + <key>Export HTML</key> + </entry> + <entry> + <key>Publishing level</key> + </entry> + <entry> + <key>Discussions</key> + </entry> + <entry> + <key>Knowledge Management</key> + </entry> + <entry> + <key>List news articles</key> + </entry> + <entry> + <key>Knowledge Role</key> + </entry> + <entry> + <key>Shows complete news articles</key> + </entry> + <entry> + <key>Knowledge</key> + </entry> + <entry> + <key>Toggle status</key> + </entry> + <entry> + <key>Add app</key> + </entry> + <entry> + <key>Open Teams</key> + </entry> + <entry> + <key>Choose Team</key> + </entry> + <entry> + <key>Delete Team</key> + </entry> + <entry> + <key>Restore Team</key> + </entry> + <entry> + <key>Create Team</key> + </entry> + <entry> + <key>Team role</key> + </entry> + <entry> + <key>Edit Team</key> + </entry> + <entry> + <key>Sales Project</key> + </entry> + <entry> + <key>Channels</key> + </entry> + <entry> + <key>Private</key> + </entry> + <entry> + <key>Rechnungsbetrag</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlMaskingUtils</key> + </entry> + <entry> + <key>Knowledgebase</key> + </entry> + <entry> + <key>Marketing workflow</key> + </entry> + <entry> + <key>Token</key> + </entry> + <entry> + <key>Edited by</key> + </entry> + <entry> + <key>Sales Project Analyses</key> + </entry> + <entry> + <key>Sales Project Id</key> + </entry> + <entry> + <key>Sales Project Convertion Rates</key> + </entry> + <entry> + <key>Set Campaign Step</key> + </entry> + <entry> + <key>Member</key> + </entry> + <entry> + <key>Tags</key> + </entry> + <entry> + <key>[TEST] Sql_lib - SqlBuilder</key> + </entry> + <entry> + <key>Feed</key> + </entry> + <entry> + <key>[TEST] KeywordAttribute_lib</key> + </entry> + <entry> + <key>Messages</key> + </entry> + <entry> + <key>Channel Name</key> + </entry> + <entry> + <key>Sales Project Phases</key> + </entry> + <entry> + <key>Start workflows</key> + </entry> + <entry> + <key>edited</key> + </entry> + <entry> + <key>Channel</key> + </entry> + <entry> + <key>Import from Teams</key> + </entry> + <entry> + <key>Invitation</key> + </entry> + <entry> + <key>send as mail</key> + </entry> + <entry> + <key>User token</key> + </entry> + <entry> + <key>Team name</key> + </entry> + <entry> + <key>Knowledge Roles</key> + </entry> + <entry> + <key>Valid</key> + </entry> + <entry> + <key>Audit Logs</key> + </entry> + <entry> + <key>Editorial</key> + </entry> + <entry> + <key>KnowledgeRoles</key> + </entry> + <entry> + <key>Remove from Campaign</key> + </entry> + <entry> + <key>Message</key> + </entry> + <entry> + <key>Add members</key> + </entry> + <entry> + <key>[TEST] .All</key> + </entry> + <entry> + <key>Newsfeed (Complete Article)</key> + </entry> + <entry> + <key>Notification</key> + </entry> + <entry> + <key>Load older messages</key> + </entry> + <entry> + <key>Newsletter</key> + </entry> + <entry> + <key>Adds an answer to the selected discussion</key> + </entry> + <entry> + <key>LinkedIn (Person)</key> + </entry> + <entry> + <key>Newsfeed Timeline</key> + </entry> + <entry> + <key>MS Teams</key> + </entry> + <entry> + <key>User tokens</key> + </entry> + <entry> + <key>[TEST] Keyword_lib</key> + </entry> + <entry> + <key>News</key> + </entry> + <entry> + <key>Sales Projects</key> + </entry> + <entry> + <key>Team</key> + </entry> + <entry> + <key>Created by</key> + </entry> + <entry> + <key>Employee count</key> + </entry> + <entry> + <key>Toggles the status of selected discussion between open and closed</key> + </entry> + <entry> + <key>Synchronize documents</key> + </entry> + <entry> + <key>AuditLogs</key> + </entry> + <entry> + <key>Audit Log</key> + </entry> + <entry> + <key>Admin</key> + </entry> + <entry> + <key>Show all audits</key> + </entry> + <entry> + <key>Sales Project milestone Id</key> + </entry> + <entry> + <key>LinkedIn (Organisation)</key> + </entry> + <entry> + <key>[TEST] UnitTest_lib</key> + </entry> + <entry> + <key>Exports the knowledge entry as a html file</key> + </entry> + <entry> + <key>The max participants count can not be equal or less then 0</key> + </entry> + <entry> + <key>Illegal Parent Operator in buildFilterObj-Function:</key> + </entry> + <entry> + <key>My campaigns</key> + </entry> + <entry> + <key>Subcategory</key> + </entry> + <entry> + <key>Campaign costs</key> + </entry> + <entry> + <key>Verantwortlicher</key> + </entry> + <entry> + <key>The team must have at least one owner</key> </entry> </keyValueMap> <font name="Dialog" style="0" size="11" /> diff --git a/neonContext/CampaignParticipant/CampaignParticipant.aod b/neonContext/CampaignParticipant/CampaignParticipant.aod index 503b93a8e3b3e870f039f08335ed0dc5832ddd77..80eda39dc4dbe253de00d07452e67dcbd28658f1 100644 --- a/neonContext/CampaignParticipant/CampaignParticipant.aod +++ b/neonContext/CampaignParticipant/CampaignParticipant.aod @@ -4,7 +4,6 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>CampaignParticipantFilter_view</filterView> <editView>CampaignParticipantEdit_view</editView> - <previewView>CampaignParticipantPreview_view</previewView> <entity>CampaignParticipant_entity</entity> <references> <neonViewReference> diff --git a/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod b/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod new file mode 100644 index 0000000000000000000000000000000000000000..4c1a61df497a69008899a8952069e9e0e7e9b92c --- /dev/null +++ b/neonContext/KnowledgeDiscussion/KnowledgeDiscussion.aod @@ -0,0 +1,24 @@ +<?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>KnowledgeDiscussion</name> + <title>Discussion</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>KnowledgeDiscussionTree_view</filterView> + <editView>KnowledgeDiscussionEdit_view</editView> + <previewView>KnowledgeDiscussionPreview_view</previewView> + <entity>KnowledgeDiscussion_entity</entity> + <references> + <neonViewReference> + <name>a400341e-5b6b-4952-a0fe-1f88c3e55027</name> + <view>KnowledgeDiscussionTree_view</view> + </neonViewReference> + <neonViewReference> + <name>fbb4d64f-5167-4d8f-b9ac-4cdb4f1ceb59</name> + <view>KnowledgeDiscussionPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>05aa5ff8-7204-4949-b19c-f6fd15dc24fd</name> + <view>KnowledgeDiscussionEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeLink/KnowledgeLink.aod b/neonContext/KnowledgeLink/KnowledgeLink.aod new file mode 100644 index 0000000000000000000000000000000000000000..e7b3b4c531d925a137257cdecadb254aec2dfe0a --- /dev/null +++ b/neonContext/KnowledgeLink/KnowledgeLink.aod @@ -0,0 +1,27 @@ +<?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>KnowledgeLink</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>KnowledgeLinkLookup_view</filterView> + <editView>KnowledgeLinkEdit_view</editView> + <lookupView>KnowledgeLinkLookup_view</lookupView> + <entity>KnowledgeLink_entity</entity> + <references> + <neonViewReference> + <name>04a5480c-7327-46e8-8835-db77de3c6994</name> + <view>KnowledgeLinkLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>7c4b7964-6668-4cfb-a2b3-9ca63dc10741</name> + <view>KnowledgeLinkActionList_view</view> + </neonViewReference> + <neonViewReference> + <name>51436b95-a74b-406a-8029-ab5113eedfa3</name> + <view>KnowledgeLinkEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>051675e5-f526-4588-9b5c-72d9b4de00ab</name> + <view>KnowledgeLinkMultiEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeManagement/KnowledgeManagement.aod b/neonContext/KnowledgeManagement/KnowledgeManagement.aod new file mode 100644 index 0000000000000000000000000000000000000000..392aeb6cef2557a829bdbf58b76fe76597e5061f --- /dev/null +++ b/neonContext/KnowledgeManagement/KnowledgeManagement.aod @@ -0,0 +1,52 @@ +<?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>KnowledgeManagement</name> + <title>Knowledge Management</title> + <description><null value></description> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ACADEMY_CAP</icon> + <mainView>KnowledgeManagementMain_view</mainView> + <filterView>KnowledgeManagementFilter_view</filterView> + <editView>KnowledgeManagementEdit_view</editView> + <previewView>KnowledgeManagementPreview_view</previewView> + <lookupView>KnowledgeManagementLookup_view</lookupView> + <entity>KnowledgeManagement_entity</entity> + <references> + <neonViewReference> + <name>37f60641-26b3-4fbd-b2fa-b69169de0cfe</name> + <view>KnowledgeManagementMain_view</view> + </neonViewReference> + <neonViewReference> + <name>aa5aab07-8093-4c3f-802e-3c5e2f15a307</name> + <view>KnowledgeManagementFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>1c97f522-d463-42ce-ae31-2973b48f9be4</name> + <view>KnowledgeManagementPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>3977743f-ab3a-472e-bb80-cea475f48aaa</name> + <view>KnowledgeManagementEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>d6960882-2d57-40e1-b5bf-bf317e0ca9f4</name> + <view>KnowledgeManagementDetails_view</view> + </neonViewReference> + <neonViewReference> + <name>d94d09f3-b02c-4b8d-849e-c15d3fcbb393</name> + <view>KnowledgeManagementLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>d94d09f3-b02c-4b8d-849e-c15d3fcbb394</name> + <view>KnowledgeManagementTimeline_view</view> + </neonViewReference> + <neonViewReference> + <name>4e903d37-f2ac-4368-99aa-aee2492a03dc</name> + <view>KnowledgeManagementRole_view</view> + </neonViewReference> + <neonViewReference> + <name>be95c2fc-b29b-4d46-a8fc-0d79c09f67b6</name> + <view>KnowledgeManagementContent_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod b/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod new file mode 100644 index 0000000000000000000000000000000000000000..979843a0d36ef659b596db11b4c04db6a524268e --- /dev/null +++ b/neonContext/KnowledgeManagementTagList/KnowledgeManagementTagList.aod @@ -0,0 +1,6 @@ +<?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>KnowledgeManagementTagList</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeManagementTagList_entity</entity> +</neonContext> diff --git a/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod b/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod new file mode 100644 index 0000000000000000000000000000000000000000..038ba14e3878092dbc7720df38e3a45229b70518 --- /dev/null +++ b/neonContext/KnowledgeManagementTags/KnowledgeManagementTags.aod @@ -0,0 +1,16 @@ +<?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>KnowledgeManagementTags</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeManagementTags_entity</entity> + <references> + <neonViewReference> + <name>019050b1-db8f-4900-9ad1-d412cc9ec5b5</name> + <view>KnowledgeTagList_view</view> + </neonViewReference> + <neonViewReference> + <name>82e1dc21-123d-41f1-b9b7-cdd0a3c3d4c9</name> + <view>KnowledgeTagList_GenMult_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod new file mode 100644 index 0000000000000000000000000000000000000000..f9bc4fdec879bae657a1d1d6613c07276dd8475d --- /dev/null +++ b/neonContext/KnowledgeNewsFeed/KnowledgeNewsFeed.aod @@ -0,0 +1,14 @@ +<?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>KnowledgeNewsFeed</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <mainView>KnowledgeNewsFeed_view</mainView> + <filterView>KnowledgeNewsFeed_view</filterView> + <entity>KnowledgeNewsFeed_entity</entity> + <references> + <neonViewReference> + <name>a6965156-ab52-4520-a3be-1351eacd863d</name> + <view>KnowledgeNewsFeed_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/KnowledgeRole/KnowledgeRole.aod b/neonContext/KnowledgeRole/KnowledgeRole.aod new file mode 100644 index 0000000000000000000000000000000000000000..a41da5ae918b712afae42092d543094a77a81188 --- /dev/null +++ b/neonContext/KnowledgeRole/KnowledgeRole.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>KnowledgeRole</name> + <title>Knowledge Role</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>KnowledgeRole_entity</entity> + <references> + <neonViewReference> + <name>d36e2044-65ed-4055-89ad-e8488f43123d</name> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeam/MSTTeam.aod b/neonContext/MSTTeam/MSTTeam.aod new file mode 100644 index 0000000000000000000000000000000000000000..7f715ccd447d45dbce5deed363aebf485646fab9 --- /dev/null +++ b/neonContext/MSTTeam/MSTTeam.aod @@ -0,0 +1,22 @@ +<?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>MSTTeam</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamEdit_view</editView> + <previewView>MSTTeamPreview_view</previewView> + <entity>MSTTeam_entity</entity> + <references> + <neonViewReference> + <name>357c290b-bf6a-4628-a6d9-f81a97ea843e</name> + <view>MSTTeamEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>c13c234d-ee98-4a26-b7b1-8ee3a3829284</name> + <view>MSTTeamPreview_view</view> + </neonViewReference> + <neonViewReference> + <name>b1e14c73-f48f-43a7-a459-2aa0172d015b</name> + <view>MSTTeamEditMembers_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamLink/MSTTeamLink.aod b/neonContext/MSTTeamLink/MSTTeamLink.aod new file mode 100644 index 0000000000000000000000000000000000000000..d0d6d646fe31690e5c9d26697ec9adf9f471f40c --- /dev/null +++ b/neonContext/MSTTeamLink/MSTTeamLink.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>MSTTeamLink</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTTeamLinkEdit_view</editView> + <entity>MSTTeamLink_entity</entity> + <references> + <neonViewReference> + <name>a165469f-eea5-4427-b5ba-4477fe7e04e6</name> + <view>MSTTeamLinkEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTTeamMember/MSTTeamMember.aod b/neonContext/MSTTeamMember/MSTTeamMember.aod new file mode 100644 index 0000000000000000000000000000000000000000..bfb06f7c7f593614d9e07e748111ba5c42b7a708 --- /dev/null +++ b/neonContext/MSTTeamMember/MSTTeamMember.aod @@ -0,0 +1,16 @@ +<?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>MSTTeamMember</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>MSTTeamMember_entity</entity> + <references> + <neonViewReference> + <name>61588d12-3c0d-4181-93ae-90d7ad50ed6b</name> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>b740066a-2d33-4bc4-ba5f-3e4a68418575</name> + <view>MSTTeamMemberList_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.aod new file mode 100644 index 0000000000000000000000000000000000000000..847aef4a0cd215fb0ebb2cb68a0783a137481b6b --- /dev/null +++ b/neonContext/MSTeamsActivityImport/MSTeamsActivityImport.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>MSTeamsActivityImport</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTeamsActivityImportEdit_view</editView> + <entity>MSTeamsActivityImport_entity</entity> + <references> + <neonViewReference> + <name>05e9f542-dd4f-4895-9d0d-d38d57c62735</name> + <view>MSTeamsActivityImportEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTeamsChannel/MSTeamsChannel.aod b/neonContext/MSTeamsChannel/MSTeamsChannel.aod new file mode 100644 index 0000000000000000000000000000000000000000..f8986b6e98648117b4b4b1539e4fe498331e11f4 --- /dev/null +++ b/neonContext/MSTeamsChannel/MSTeamsChannel.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>MSTeamsChannel</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <entity>MSTeamsChannel_entity</entity> + <references> + <neonViewReference> + <name>01e5e126-8d14-4dec-a468-0de13b920900</name> + <view>MSTeamsChannelList_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTeamsDocument/MSTeamsDocument.aod b/neonContext/MSTeamsDocument/MSTeamsDocument.aod new file mode 100644 index 0000000000000000000000000000000000000000..a7125b105f4e8b6a8fd0cc3288d6a87a674773b7 --- /dev/null +++ b/neonContext/MSTeamsDocument/MSTeamsDocument.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>MSTeamsDocument</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <editView>MSTeamsDocumentEdit_view</editView> + <entity>MSTeamsDocument_entity</entity> + <references> + <neonViewReference> + <name>167cee11-55bd-4988-838b-d9c784da01e2</name> + <view>MSTeamsDocumentEdit_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MSTeamsMessage/MSTeamsMessage.aod b/neonContext/MSTeamsMessage/MSTeamsMessage.aod new file mode 100644 index 0000000000000000000000000000000000000000..ecf21a7e76897a9415073d8108020d36522d2d4d --- /dev/null +++ b/neonContext/MSTeamsMessage/MSTeamsMessage.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>MSTeamsMessage</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterView>MSTeamsMessageFilter_view</filterView> + <entity>MSTeamsMessage_entity</entity> + <references> + <neonViewReference> + <name>db5e4380-458f-438a-8945-b8b8463e81d4</name> + <view>MSTeamsMessageFilter_view</view> + </neonViewReference> + </references> +</neonContext> diff --git a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod index bad0c03850983d94a74b3d3af4896308fb1e2086..e200a8a70f878ecb8c691752d3585cf3880e5bef 100644 --- a/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod +++ b/neonContext/MarketingWorkflowLauncher/MarketingWorkflowLauncher.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.1"> <name>MarketingWorkflowLauncher</name> - <title>f</title> + <title>Marketing workflow</title> <majorModelMode>DISTRIBUTED</majorModelMode> <entity>MarketingWorkflowLauncher_entity</entity> <references> diff --git a/neonContext/Member/Member.aod b/neonContext/Member/Member.aod index 35fc63e30202d49291cc8baac99a5bf003189f3d..a2915648a320f4a2b4443eeb27f203f329d7cbfd 100644 --- a/neonContext/Member/Member.aod +++ b/neonContext/Member/Member.aod @@ -4,6 +4,7 @@ <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>MemberFilter_view</filterView> <editView>MemberEdit_view</editView> + <lookupView>MemberLookup_view</lookupView> <entity>Member_entity</entity> <references> <neonViewReference> @@ -18,6 +19,10 @@ <name>61eb4778-61aa-4419-8c8b-5ad69d86a4bb</name> <view>MemberDrawer_view</view> </neonViewReference> + <neonViewReference> + <name>9a36b4d9-5861-442b-84f3-8662e8069740</name> + <view>MemberLookup_view</view> + </neonViewReference> </references> <viewmodeProvider> <staticContentEntry> diff --git a/neonContext/Offer/Offer.aod b/neonContext/Offer/Offer.aod index e8a6d8d34e56933b89b40bd124432ff6e1a89d0c..271bdfa9b499295cc511d6c1a464eb8afb50a3fd 100644 --- a/neonContext/Offer/Offer.aod +++ b/neonContext/Offer/Offer.aod @@ -44,5 +44,8 @@ <name>136dceaa-0eca-452a-9757-132fd54e8c55</name> <view>OfferPreviewMultiple_view</view> </neonViewReference> + <webserviceReference> + <name>277d4493-9a49-4e68-b00c-29d3d0e0b9d2</name> + </webserviceReference> </references> </neonContext> diff --git a/neonContext/SupportTicket/SupportTicket.aod b/neonContext/SupportTicket/SupportTicket.aod index 5115f0e09bb42d0a96db18a81d8e858ec4705c14..b0233b40612590203cef68266f2313ff595f7974 100644 --- a/neonContext/SupportTicket/SupportTicket.aod +++ b/neonContext/SupportTicket/SupportTicket.aod @@ -4,6 +4,7 @@ <title>Support Ticket</title> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonContext/SupportTicket/documentation.adoc</documentation> + <icon>VAADIN:CHAT</icon> <mainView>SupportTicketMain_view</mainView> <filterView>SupportTicketFilter_view</filterView> <editView>SupportTicketEdit_view</editView> diff --git a/neonContext/Userhelp/Userhelp.aod b/neonContext/Userhelp/Userhelp.aod index 435de68c2c1e230ca426a074593bb1004a7ebf6d..057b38dda494f9366cb2e2f617314104f8fd2dd3 100644 --- a/neonContext/Userhelp/Userhelp.aod +++ b/neonContext/Userhelp/Userhelp.aod @@ -3,7 +3,7 @@ <name>Userhelp</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterView>Userhelp_FilterView</filterView> - <entity>UserhelpResources</entity> + <entity>UserhelpResources_entity</entity> <references> <neonViewReference> <name>2a1dd62b-0f30-442b-aa1d-969b46312d2a</name> diff --git a/neonDashboard/Home/Home.aod b/neonDashboard/Home/Home.aod index 1c0ccc5e306c4f553765da6e33024c3e674d6899..dc01fbf1ec3b9201eac0bc318ee53f98e8c0a568 100644 --- a/neonDashboard/Home/Home.aod +++ b/neonDashboard/Home/Home.aod @@ -8,7 +8,7 @@ <editRoles /> <defaultDashlets> <neonDashlet> - <name>Dashlet2</name> + <name>AllContactsDashlet</name> <viewName>PersonFilter_view</viewName> <configName>AllContactsDashlet</configName> <uiConfiguration> @@ -20,7 +20,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet3</name> + <name>AditoTwitterDashlet</name> <viewName>TwitterTimeline_view</viewName> <configName>AditoTwitterDashlet</configName> <uiConfiguration> @@ -32,7 +32,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet</name> + <name>MytasksDashlet</name> <viewName>TaskFilter_view</viewName> <configName>mytasks</configName> <uiConfiguration> @@ -44,7 +44,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet4</name> + <name>InformationDashlet</name> <viewName>MyDashboardScoreCard_view</viewName> <configName>Information</configName> <uiConfiguration> @@ -56,7 +56,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet5</name> + <name>NotificationDashlet</name> <viewName>NotificationFilter_view</viewName> <configName>NotificationDashletConfiguration</configName> <uiConfiguration> diff --git a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod index 870d8ef2f23bf7f719d7a43c0dc70deec2075f06..b6750436bad8af3a5e84c77d972166a4c2977519 100644 --- a/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod +++ b/neonDashboard/Vertriebsdashboard/Vertriebsdashboard.aod @@ -11,7 +11,7 @@ </editRoles> <defaultDashlets> <neonDashlet> - <name>Dashlet</name> + <name>KeyFiguresDashlet</name> <viewName>SalesprojectScoreCard_view</viewName> <configName>KeyFigures</configName> <uiConfiguration> @@ -23,7 +23,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet4</name> + <name>AllOrgsDashlet</name> <viewName>OrganisationFilter_view</viewName> <configName>AllOrgsDashlet</configName> <uiConfiguration> @@ -35,7 +35,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet2</name> + <name>OpenSalesprojectsDashlet</name> <viewName>SalesprojectFilter_view</viewName> <configName>OpenSalesprojectsDashlet</configName> <uiConfiguration> @@ -47,7 +47,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet3</name> + <name>SalesprojectPhasesDashlet</name> <viewName>SalesprojectAnalyses_view</viewName> <configName>SalesprojectPhases</configName> <uiConfiguration> @@ -59,7 +59,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet6</name> + <name>ConvertionRatesDashlet</name> <viewName>SalesprojectConversionRate_view</viewName> <configName>ConvertionRates</configName> <uiConfiguration> @@ -71,7 +71,7 @@ </uiConfiguration> </neonDashlet> <neonDashlet> - <name>Dashlet7</name> + <name>AnalysesChartDashlet</name> <viewName>ActivityAnalyses_view</viewName> <configName>analysesChart</configName> <uiConfiguration> diff --git a/neonNotificationType/News/News.aod b/neonNotificationType/News/News.aod new file mode 100644 index 0000000000000000000000000000000000000000..239ea9b1feb37d6ba9407cd6ff015dd715abaa08 --- /dev/null +++ b/neonNotificationType/News/News.aod @@ -0,0 +1,7 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonNotificationType xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonNotificationType/1.1.0"> + <name>News</name> + <title>News</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:NEWSPAPER</icon> +</neonNotificationType> diff --git a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod index fcb25887036ae11c5a7be2a6c77d2efe26ad5056..5bc07ac524def8c194dcbfd82a0293952b194784 100644 --- a/neonView/360DegreeFilter_view/360DegreeFilter_view.aod +++ b/neonView/360DegreeFilter_view/360DegreeFilter_view.aod @@ -1,8 +1,8 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>360DegreeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="false" /> + <filterable v="true" /> <layout> <groupLayout> <name>layout</name> @@ -10,22 +10,24 @@ </layout> <children> <treeViewTemplate> - <name>Treetable</name> + <name>Tree</name> <favoriteActionGroup2>newModule</favoriteActionGroup2> <titleField>TITLE</titleField> - <descriptionField>DATE</descriptionField> + <descriptionField>DESCRIPTION</descriptionField> <iconField>ICON</iconField> + <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> <defaultGroupFields> - <element>ENTITY_NAME</element> + <element>GROUP</element> </defaultGroupFields> + <fixedFilterFields /> </treeViewTemplate> <timelineViewTemplate> <name>Timeline</name> <favoriteActionGroup2>newModule</favoriteActionGroup2> - <dateField>DATE</dateField> + <dateField>DATE_NEW</dateField> <titleField>TITLE</titleField> - <descriptionField>ENTITY_NAME</descriptionField> + <descriptionField>GROUP</descriptionField> <iconIdField>ICON</iconIdField> <hideContentSearch v="false" /> <entityField>#ENTITY</entityField> diff --git a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod index 606d13134ae41b3962b0b2c53d81c3d7c9e4a9ca..cb982f79c428d8fb7ba3162078ae95e24850197f 100644 --- a/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod +++ b/neonView/ActivityAnalyses_view/ActivityAnalyses_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ActivityDetail_view/ActivityDetail_view.aod b/neonView/ActivityDetail_view/ActivityDetail_view.aod index 870b77975c3fde5e3c371ff98ac417bc4d57b598..559c6a6620b642c48d34a44656ea06a6961c05d8 100644 --- a/neonView/ActivityDetail_view/ActivityDetail_view.aod +++ b/neonView/ActivityDetail_view/ActivityDetail_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityDetail_view</name> <title>Description</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod index b7d3bb7f8fcfb8ebfd38e4c4af6004b8f00ca7d3..eeacf167c5eed8c60fe59b20ac9c6705763c9e62 100644 --- a/neonView/ActivityDrawer_view/ActivityDrawer_view.aod +++ b/neonView/ActivityDrawer_view/ActivityDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityEdit_view/ActivityEdit_view.aod b/neonView/ActivityEdit_view/ActivityEdit_view.aod index 955128744e3c02f1cc7e83bef1f2ea5537d11db4..2c8b44325c1533b44c0a6eb4d28b1137725a912f 100644 --- a/neonView/ActivityEdit_view/ActivityEdit_view.aod +++ b/neonView/ActivityEdit_view/ActivityEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityEdit_view</name> <title>Activity</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityFilter_view/ActivityFilter_view.aod b/neonView/ActivityFilter_view/ActivityFilter_view.aod index a94234cc3f8111fcfbd178556efd0d9f5b4be5a6..35d2314683c8416e27e7e3ff1b4ef45d442f662c 100644 --- a/neonView/ActivityFilter_view/ActivityFilter_view.aod +++ b/neonView/ActivityFilter_view/ActivityFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -16,7 +16,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> @@ -31,7 +31,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> @@ -50,6 +50,7 @@ <children> <timelineViewTemplate> <name>ActivitiesTimeline</name> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <dateField>entryDateDateFormat</dateField> <titleField>SUBJECT_DETAILS</titleField> <descriptionField>INFO</descriptionField> @@ -59,6 +60,7 @@ </timelineViewTemplate> <tableViewTemplate> <name>ActivitiesTable</name> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <iconField>#IMAGE</iconField> <titleField>SUBJECT</titleField> <subtitleField>ENTRYDATE</subtitleField> @@ -92,6 +94,7 @@ </tableViewTemplate> <treeTableViewTemplate> <name>ActivitiesTreeTable</name> + <favoriteActionGroup2>MSTeamsActions</favoriteActionGroup2> <entityField>#ENTITY</entityField> <columns> <neonTreeTableColumn> diff --git a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod index b5fff0f4acee7b41242f8fa1e6a29f92e971fb03..cd41eab6d6697bdcecbda5672f7be9b89f9945e2 100644 --- a/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod +++ b/neonView/ActivityLinkFilter_view/ActivityLinkFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkFilter_view</name> <title>Connections</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod index e19f1da0f82985fe301ad938c70cd9df35f5b7cf..519a822a81ea71a2e352c8dc883bb6e00decd177 100644 --- a/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod +++ b/neonView/ActivityLinkMultiEdit_view/ActivityLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod index dab9bccb0a84bf22f2cda551e76107d1dce31107..a34c9e28d9fce5933352e59ba23dce3384e3e896 100644 --- a/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod +++ b/neonView/ActivityLinkPreviewList_view/ActivityLinkPreviewList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkPreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod index 5327f5fd86e2440636c94a44cf3c3a557c94b8a2..ecea997484bf7fa0c1e38f56f5325ba030cc92be 100644 --- a/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod +++ b/neonView/ActivityLinkPreview_view/ActivityLinkPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityLinkPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityMain_view/ActivityMain_view.aod b/neonView/ActivityMain_view/ActivityMain_view.aod index 8dd7d3f4f2f73d4fdab425fab12e4150eb2250fe..39972c2097c29e5324346dea1a57b55de993088f 100644 --- a/neonView/ActivityMain_view/ActivityMain_view.aod +++ b/neonView/ActivityMain_view/ActivityMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod index 6d74561374a3574953ba099fef208111f2cc9a2a..d9b91e1b27b2dc1721c68ff721f654a61ee434eb 100644 --- a/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod +++ b/neonView/ActivityMultiEdit_view/ActivityMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityPreview_view/ActivityPreview_view.aod b/neonView/ActivityPreview_view/ActivityPreview_view.aod index 7b82a42582a8444dbfbc726077467d458358ae33..b02a9a3bed585dc7b0bcf844da5735baf701a741 100644 --- a/neonView/ActivityPreview_view/ActivityPreview_view.aod +++ b/neonView/ActivityPreview_view/ActivityPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod index eaec7e7ddba0db1de1262c4b98c9c9bb7202877e..3b8adc8d670298ed7d6780ea1b2f44c5aea102bf 100644 --- a/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod +++ b/neonView/ActivityUniversalFileProcessorFilter_view/ActivityUniversalFileProcessorFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ActivityUniversalFileProcessorFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/AddressList_view/AddressList_view.aod b/neonView/AddressList_view/AddressList_view.aod index bd5826a7da483c1146e31ec6f855bb07bf3458cc..409bae01d2f23a34db9c07163fa223978bc452e6 100644 --- a/neonView/AddressList_view/AddressList_view.aod +++ b/neonView/AddressList_view/AddressList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressList_view</name> <description>Org addresses</description> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -62,10 +62,6 @@ <name>aafc58cf-7dbb-42cb-b04c-d0869e58d09a</name> <entityField>STATE</entityField> </neonTitledListTableColumn> - <neonTitledListTableColumn> - <name>29dbb3f5-6f80-4100-aed3-334ac0b9cc48</name> - <entityField>REGION</entityField> - </neonTitledListTableColumn> <neonTitledListTableColumn> <name>6e369a01-965f-41d9-9b0a-6128a3827e47</name> <entityField>ADDRESSADDITION</entityField> diff --git a/neonView/AddressLookup_view/AddressLookup_view.aod b/neonView/AddressLookup_view/AddressLookup_view.aod index 904f60c6b30424011bcd655ffff8642be2ee6f4e..42904c5f4c1d46ae54104732a610fa9e2d68e53a 100644 --- a/neonView/AddressLookup_view/AddressLookup_view.aod +++ b/neonView/AddressLookup_view/AddressLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod index dd7ee5507e2bd5b56d4987b657bd9069fdf4ca56..faa7531a91085f2022c567441aaa0c9a089d8507 100644 --- a/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod +++ b/neonView/AddressOrgMultiEdit_view/AddressOrgMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressOrgMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod index 7372c60c7af018c61811155bd1f4ad7eb39c7725..c785e09dc8d920c3d053df91cb460f4767f637ff 100644 --- a/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod +++ b/neonView/AddressValidationLookup_view/AddressValidationLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AddressValidationLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AdminViewRow_view/AdminViewRow_view.aod b/neonView/AdminViewRow_view/AdminViewRow_view.aod index ddb44338654f0ae8150274622336ec6b45bba50e..77687eeb449caccd5a06c77147bd6a7cb9b39241 100644 --- a/neonView/AdminViewRow_view/AdminViewRow_view.aod +++ b/neonView/AdminViewRow_view/AdminViewRow_view.aod @@ -1,24 +1,18 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AdminViewRow_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> - <titledListViewTemplate> - <name>TitledList</name> + <actionListViewTemplate> + <name>ActionList</name> <titleField>TITLE</titleField> - <fixedDrawer v="true" /> - <entityField>#ENTITY</entityField> - <columns> - <neonTitledListTableColumn> - <name>d42ddaa4-1996-41b3-be19-2f3c721f9536</name> - <entityField>VALUE</entityField> - </neonTitledListTableColumn> - </columns> - </titledListViewTemplate> + <descriptionField>VALUE</descriptionField> + <entryAction>copyValueToClipboard</entryAction> + </actionListViewTemplate> </children> </neonView> diff --git a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod index b4612adcf1a8e53a8a8019260f542eb8d0d76905..72a12761582aceb0ca1b492f8c2f91fab00c0f1d 100644 --- a/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod +++ b/neonView/AdressMultiEdit_view/AdressMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AdressMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod index ff719ed37110b4efdcbba745efc705ea856e2e85..a4d400cb1bbad50cb2927efa6e19b04cff113387 100644 --- a/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod +++ b/neonView/AnyContactDuplicates_view/AnyContactDuplicates_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AnyContactDuplicates_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod index 4a06e39e312f5786ac5fc224eafa3a45d7bbabc4..f7d62ecfdeb75651e1422b92e00aa3ab1f15260f 100644 --- a/neonView/AnyContactLookup_view/AnyContactLookup_view.aod +++ b/neonView/AnyContactLookup_view/AnyContactLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AnyContactLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod index 2f0e9199d4d5ce506786750e9240645d9517f6d3..2f0d24434258b16044f8fdc29140eebe92826d47 100644 --- a/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod +++ b/neonView/AppointmentCheckUp_view/AppointmentCheckUp_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentCheckUp_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod index 5b5def3ba12aa516e0da7c4a8a60cdbe653b690b..6a2413b69536c3aba9a3aeb49a639b66ffe12c27 100644 --- a/neonView/AppointmentEdit_view/AppointmentEdit_view.aod +++ b/neonView/AppointmentEdit_view/AppointmentEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/AppointmentEdit_view/documentation.adoc</documentation> diff --git a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod index e0d50c9bd43ba9ecdde48c9a59c5cfcf6e5b94aa..216efdb870d880a44a1b1eacf3a291780a934001 100644 --- a/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod +++ b/neonView/AppointmentFilterDashlet_view/AppointmentFilterDashlet_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentFilterDashlet_view</name> <title>Linked Appointments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod index 75dfc0953f85dd44c26ce48b4acf531aba9fc5e2..b21399ee35fb4f60d3c0bdbcbb32f33681b19f6d 100644 --- a/neonView/AppointmentFilter_view/AppointmentFilter_view.aod +++ b/neonView/AppointmentFilter_view/AppointmentFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentFilter_view</name> <title>Linked Appointments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod index 1d1f735b094af28a500960cc3e6b870a138549e1..58da5f40fd75a4a096016e09943143685ce1606e 100644 --- a/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod +++ b/neonView/AppointmentLinkEdit_view/AppointmentLinkEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentLinkEdit_view</name> <title>relations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod index 7ecded1820ef9fb269701f406730349b3042e922..993d5d1ea5fe1fdca1a894199dfcab87f0f5b696 100644 --- a/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod +++ b/neonView/AppointmentLinkFilter_view/AppointmentLinkFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentLinkFilter_view</name> <title>relations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod index 727a644d89918b72ba8e573978d45cf9f7118157..ccd565c6be34430650ef372a40ab483f3e631ea0 100644 --- a/neonView/AppointmentPreview_view/AppointmentPreview_view.aod +++ b/neonView/AppointmentPreview_view/AppointmentPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AppointmentPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/AppointmentPreview_view/documentation.adoc</documentation> diff --git a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod index ce86ba2afd585215bb100fec728104b427bdfd4c..0dbf0677ac4c6abd92ea9311253263ad5621255b 100644 --- a/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod +++ b/neonView/AroundLocationHeader_view/AroundLocationHeader_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundLocationHeader_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod index 74bac1d84439489938b5751fe465909d5128e69d..72811993d340e51288512b2d4313511206a334cc 100644 --- a/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod +++ b/neonView/AroundOrganisationFooter_view/AroundOrganisationFooter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundOrganisationFooter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod index 6ee6f9459fd4bc34294cfec67617be540463888a..7fa9102fcc0309b2ee211c02104f57fe737431ce 100644 --- a/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod +++ b/neonView/AroundOrganisationLocation_view/AroundOrganisationLocation_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AroundOrganisationLocation_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/AttributeEdit_view/AttributeEdit_view.aod b/neonView/AttributeEdit_view/AttributeEdit_view.aod index f0540f0420d82a95401fb023d144ebba72f28923..310d74e958e46165116b54c31513c5a2e8981c6e 100644 --- a/neonView/AttributeEdit_view/AttributeEdit_view.aod +++ b/neonView/AttributeEdit_view/AttributeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/AttributeFilter_view/AttributeFilter_view.aod b/neonView/AttributeFilter_view/AttributeFilter_view.aod index 573f26dd7d27579936a03fb6c149dd3318390280..7b18cb006369111f800f4074ef01c108c27bdac4 100644 --- a/neonView/AttributeFilter_view/AttributeFilter_view.aod +++ b/neonView/AttributeFilter_view/AttributeFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeFilter_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AttributeList_view/AttributeList_view.aod b/neonView/AttributeList_view/AttributeList_view.aod index 167cf43d52b6481ab3ad36f745aa899f2e53cc3f..71c6f4b999eb1b236ec46fbbf47bfbef4a687404 100644 --- a/neonView/AttributeList_view/AttributeList_view.aod +++ b/neonView/AttributeList_view/AttributeList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeLookup_view/AttributeLookup_view.aod b/neonView/AttributeLookup_view/AttributeLookup_view.aod index d1c1580870ec1c39e6eb8bddc18661e5d17f3d67..0abd15c3e222b22856bf2739b43e74c3df745ce4 100644 --- a/neonView/AttributeLookup_view/AttributeLookup_view.aod +++ b/neonView/AttributeLookup_view/AttributeLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod index 21e86a1d4deaeeb08225ddcb0e05d793de0d5381..ce138e8b5931ab5063dfad9d296ae76ba693093d 100644 --- a/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod +++ b/neonView/AttributeMultiEdit_view/AttributeMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributePreview_view/AttributePreview_view.aod b/neonView/AttributePreview_view/AttributePreview_view.aod index f7164ab6941bd0255686fb2ac2d85837af4371c1..6677b9e8eca6962141fecf6285803a687474150e 100644 --- a/neonView/AttributePreview_view/AttributePreview_view.aod +++ b/neonView/AttributePreview_view/AttributePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod index fab8b8d5f075e070364a482acd84c0fb8cb0b914..4996c55d00b9223ac199753962c4f84c6580062a 100644 --- a/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod +++ b/neonView/AttributeRelationMultiEdit_view/AttributeRelationMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod index 3ecddbf8b499e01439f931aece466f54b8294985..4fd119eb2a4756d7b56e037eb05b1acc80adfa75 100644 --- a/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod +++ b/neonView/AttributeRelationPreviewList/AttributeRelationPreviewList.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationPreviewList</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> @@ -18,6 +18,10 @@ <name>ec5ceac7-a2d4-4912-b04b-adc83d3e9589</name> <entityField>VALUE</entityField> </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>2ec9274b-a800-4a38-8139-418543161be2</name> + <entityField>VALUE_LOOKUP</entityField> + </neonTitledListTableColumn> </columns> </titledListViewTemplate> </children> diff --git a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod index 872e755c6588e156d1cf6abc8fcb4373f453bb13..0a721f3a75692ec7537302096fa8986c77497c92 100644 --- a/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod +++ b/neonView/AttributeRelationTreeDrawer_view/AttributeRelationTreeDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTreeDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod index bcc1303d8a36c78c9f778bd192efafa8e184bf9a..11f0be4ad61e05a80a9778f4d4f7ecba84700008 100644 --- a/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod +++ b/neonView/AttributeRelationTreeEdit_view/AttributeRelationTreeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod index f0161b804b5aa9a8a7856e36eb5e3b557878e0c0..de545b59667e67ac2df0c71fe272f22c93b987fa 100644 --- a/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod +++ b/neonView/AttributeRelationTree_view/AttributeRelationTree_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeRelationTree_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/AttributeTree_view/AttributeTree_view.aod b/neonView/AttributeTree_view/AttributeTree_view.aod index aa5ab7c094358f33387e21a89713b033915237e5..4485456b82f897c0def869129ff57d4745d00833 100644 --- a/neonView/AttributeTree_view/AttributeTree_view.aod +++ b/neonView/AttributeTree_view/AttributeTree_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod index 35e765c64583145f4ad366088348df56d2ba814a..856a329d1ef536aadb3ec8961168ee06bc63a381 100644 --- a/neonView/AttributeUsageList_view/AttributeUsageList_view.aod +++ b/neonView/AttributeUsageList_view/AttributeUsageList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeUsageList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod index 96ed51fb9564dbf9e11fffd6819e173a3b4c5973..5bb2bc37b0d7aa7aab449cf02625ab90e588b9c7 100644 --- a/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod +++ b/neonView/AttributeUsageMultiEdit_view/AttributeUsageMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AttributeUsageMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod index 87d730da51efd42cef56757ad691f7ab84a21e57..c29afae20f977acca16667a0de832a6496ceccfe 100644 --- a/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod +++ b/neonView/AuditLogHistoryFilter_view/AuditLogHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>AuditLogHistoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod index 3e391de817552197a795d56eae398c21e37f0fdf..2eef718c2b4bf2c5415a4b885ffc5877d801e29c 100644 --- a/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod +++ b/neonView/BulkMailAddRecipientsEdit_view/BulkMailAddRecipientsEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/BulkMailContent_view/BulkMailContent_view.aod b/neonView/BulkMailContent_view/BulkMailContent_view.aod index ba5614086a9060c864343e558d20284f0d70387e..6c3878a60912960b18273a5a0ceef34152cc1993 100644 --- a/neonView/BulkMailContent_view/BulkMailContent_view.aod +++ b/neonView/BulkMailContent_view/BulkMailContent_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailContent_view</name> <title>Content</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod index 48c0705557962ee3317b30ee2f5ff18bb7c52438..6677a955a9bf2d440e06de8270bf4992b5e42bb3 100644 --- a/neonView/BulkMailEdit_view/BulkMailEdit_view.aod +++ b/neonView/BulkMailEdit_view/BulkMailEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod index daa8da26604c40f86011da64ebbabbc35e24bdb8..fafdd0a86a999ba4e641abd7f1762cbe76aabf1f 100644 --- a/neonView/BulkMailFilter_view/BulkMailFilter_view.aod +++ b/neonView/BulkMailFilter_view/BulkMailFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailMain_view/BulkMailMain_view.aod b/neonView/BulkMailMain_view/BulkMailMain_view.aod index 5c3d99ce8a8ab59e419574c23b7bee838b8889ae..91a0c16c22f12b5341e7c0d28018026667aee5ca 100644 --- a/neonView/BulkMailMain_view/BulkMailMain_view.aod +++ b/neonView/BulkMailMain_view/BulkMailMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod index 7e3f5b4804e41dc7046fcb805cb520328e2d6ba6..42fee67eccdd9e73f5f422e67c71af9328ea912a 100644 --- a/neonView/BulkMailPreview_view/BulkMailPreview_view.aod +++ b/neonView/BulkMailPreview_view/BulkMailPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod index 1ad8a7d50ee24f76d4d1f2a0c43c82e2841a28c2..5ea684474bebb516e1c7d4ed97b7c1695fab391a 100644 --- a/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod +++ b/neonView/BulkMailRecipientEdit_view/BulkMailRecipientEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod index 5f4bc454fb6344b87ddf7931df64a3643da870ea..5a52f85478b83025dc9063d798f92c0c5de2022a 100644 --- a/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod +++ b/neonView/BulkMailRecipientFilter_view/BulkMailRecipientFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailRecipientFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod index ca3081b8e4008fbf8490f4b9f6f162fb9bb4abe7..17be87967675725ddc46ee71bd989a498454c4e2 100644 --- a/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod +++ b/neonView/BulkMailStatusChart_view/BulkMailStatusChart_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailStatusChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod index d3a8fa5c4e91d33df9a3b0e52819cd55bb5810de..2fda589cb414b4c3d63f6da34ecc882fdca5f9cd 100644 --- a/neonView/BulkMailTesting_view/BulkMailTesting_view.aod +++ b/neonView/BulkMailTesting_view/BulkMailTesting_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>BulkMailTesting_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod index c5448b2e2f2a2ff8b9012a77e0ebae80c3056c21..c4d7749e7fa28515b77617fc62dc2bfc7c680337 100644 --- a/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod +++ b/neonView/CampaignAddParticipantsEdit_view/CampaignAddParticipantsEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignAddParticipantsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignCharts_view/CampaignCharts_view.aod b/neonView/CampaignCharts_view/CampaignCharts_view.aod index e17db141336eb902c719c77a685a4a738aa7b0ca..1ca293d2d748851cc6e22a38d0cc93b4bc9be876 100644 --- a/neonView/CampaignCharts_view/CampaignCharts_view.aod +++ b/neonView/CampaignCharts_view/CampaignCharts_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCharts_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod index 8f82f69de82d5daed997666d6fa4684f6f2e15e3..4405b5b2479c44065d0ee0e23104b0ae1771ee47 100644 --- a/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod +++ b/neonView/CampaignCostAnalysis_view/CampaignCostAnalysis_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostAnalysis_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod index 9c8daa4a4eb3d5133e1831909f0c9f0c7b9712f8..7250ffc8f373110a85c77e339b0becab8b491d21 100644 --- a/neonView/CampaignCostChart_view/CampaignCostChart_view.aod +++ b/neonView/CampaignCostChart_view/CampaignCostChart_view.aod @@ -1,11 +1,11 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> <neonDashletConfiguration> <name>CampaignCostsChart</name> - <title>Campaign costs</title> + <title>Campaign Costs</title> <description>Shows campaing costs graphically processed</description> <fragment>Campaign/full</fragment> <singleton v="true" /> diff --git a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod index cb1f3d2f26abe217b3d0c4d8aec538aacee07795..82b672034ded4cf58a884abd7326d3630ebe7516 100644 --- a/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod +++ b/neonView/CampaignCostEdit_view/CampaignCostEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod index 15bdd074a0c4ec70dd41d030bdea0595e3f72cfe..c70e6577f7002cfc7067bd6cdcbd521846aa9ba8 100644 --- a/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod +++ b/neonView/CampaignCostExtendedFilter_view/CampaignCostExtendedFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostExtendedFilter_view</name> <title>Stop costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -13,6 +13,8 @@ <tableViewTemplate> <name>CampaignCost</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>5202d410-fc4d-4109-93b1-8743954a25e2</name> diff --git a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod index 1cfa11b98bd196b97633c48a548cfd3c00abf4a4..61d578cc42cc3ccae4ac3235a1af1c325f67e1ac 100644 --- a/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod +++ b/neonView/CampaignCostFilter_view/CampaignCostFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> @@ -12,6 +12,8 @@ <tableViewTemplate> <name>CampaignCost</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>651c5bd4-8f87-40d4-9d1f-38549b1e5fdf</name> @@ -26,6 +28,9 @@ <treeTableViewTemplate> <name>Treetable</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>9d36a33f-b619-4922-9811-acd73bf67b22</name> diff --git a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod index 4397f42cbf18230de40eb4ebb24f8505ada8c7a8..1576e6582d2caafebc70908b12c23451a0ccafaa 100644 --- a/neonView/CampaignCostFix_view/CampaignCostFix_view.aod +++ b/neonView/CampaignCostFix_view/CampaignCostFix_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostFix_view</name> <title>Fix costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -14,6 +14,8 @@ <tableViewTemplate> <name>CampaignCostFix</name> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>1b2b3ce3-eaff-472b-a873-5e054adac89a</name> diff --git a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod index c29615b901e9d02f3a1e4ec26a3249bdcecaa4d3..babaed199bb42483f9b2aee02481cd8865c43911 100644 --- a/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod +++ b/neonView/CampaignCostVariable_view/CampaignCostVariable_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCostVariable_view</name> <title>Step costs</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -15,9 +15,11 @@ <treeTableViewTemplate> <name>CostTreeTable</name> <entityField>#ENTITY</entityField> + <linkedColumns /> <defaultGroupFields> <element>CAMPAIGNSTEP_ID</element> </defaultGroupFields> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>457caff8-0403-425f-839c-62e5d05fe3a1</name> @@ -26,10 +28,12 @@ <neonTreeTableColumn> <name>2adbd887-f1df-43ff-bde9-12c8273af7a9</name> <entityField>NET</entityField> + <aggregateEntityField>NET_aggregate</aggregateEntityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>f8c6439c-9536-477b-af19-26719902e12e</name> <entityField>netPerParticipant</entityField> + <aggregateEntityField>NETPERPARTICIPANT_aggregate</aggregateEntityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>8239e81b-d69c-4ea9-b55d-83e79d1693cf</name> diff --git a/neonView/CampaignCost_view/CampaignCost_view.aod b/neonView/CampaignCost_view/CampaignCost_view.aod index 03ccab3dbb9ccba29ba81793ec30f82fa684d0b2..1272ec645f226370acb5d1322215e46687483b09 100644 --- a/neonView/CampaignCost_view/CampaignCost_view.aod +++ b/neonView/CampaignCost_view/CampaignCost_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignCost_view</name> <title>Cost</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignEdit_view/CampaignEdit_view.aod b/neonView/CampaignEdit_view/CampaignEdit_view.aod index 4636fbdffb1c079793fdc18ffea90285a8c6a508..a7271844b7a7c6b676be570c1d16eaf3acd4af0a 100644 --- a/neonView/CampaignEdit_view/CampaignEdit_view.aod +++ b/neonView/CampaignEdit_view/CampaignEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignEdit_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignFilter_view/CampaignFilter_view.aod b/neonView/CampaignFilter_view/CampaignFilter_view.aod index 0dcb198305db9a4021ace200c99df40b0018904d..251fae2fce511b41454347cd8e36810d33a77f71 100644 --- a/neonView/CampaignFilter_view/CampaignFilter_view.aod +++ b/neonView/CampaignFilter_view/CampaignFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignFilter_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -8,7 +8,7 @@ <dashletConfigurations> <neonDashletConfiguration> <name>CurrentUsersOwnedCampaigns</name> - <title>My campaigns</title> + <title>My Campaigns</title> <description>Show my campaigns</description> <fragment>Campaign/filter</fragment> <singleton v="true" /> diff --git a/neonView/CampaignMain_view/CampaignMain_view.aod b/neonView/CampaignMain_view/CampaignMain_view.aod index 789dbfbf94383dc63337e0c41af2e4bfe7c662f5..9c190085b1289d13e896abcf2315afc8a7052d36 100644 --- a/neonView/CampaignMain_view/CampaignMain_view.aod +++ b/neonView/CampaignMain_view/CampaignMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignMain_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -46,11 +46,6 @@ <entityField>Activities</entityField> <view>ActivityFilter_view</view> </neonViewReference> - <neonViewReference> - <name>e28e5598-9366-4f5a-be8f-70dd3cc0399a</name> - <entityField>Tasks</entityField> - <view>TaskFilter_view</view> - </neonViewReference> <neonViewReference> <name>3b87a113-aa39-4d20-8902-ad2a9f6aba5f</name> <entityField>Documents</entityField> diff --git a/neonView/CampaignOverview_view/CampaignOverview_view.aod b/neonView/CampaignOverview_view/CampaignOverview_view.aod index b3d627a88d497a6b3b88396476540d40ce9f4609..d0855732e6dbbaca022b1c820cedfedb1018fd7b 100644 --- a/neonView/CampaignOverview_view/CampaignOverview_view.aod +++ b/neonView/CampaignOverview_view/CampaignOverview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignOverview_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod index ca3630fb2bd2f59c71daef9ad7c94bca5c9535e2..33766f0cf1bf4193794f4f8e66d5849dfc492762 100644 --- a/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod +++ b/neonView/CampaignParticipantChart_view/CampaignParticipantChart_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantChart_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod index 6539d7a4d36249efc9252b43feb7ab58483090cf..3c1d934a73af10746e84e1b78b137249a85dcef7 100644 --- a/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod +++ b/neonView/CampaignParticipantEdit_view/CampaignParticipantEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantEdit_view</name> <title>Add participant to Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> @@ -14,6 +14,7 @@ <children> <scoreCardViewTemplate> <name>CampaignStepInfos_Score</name> + <fieldActions /> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> @@ -41,9 +42,13 @@ <entityField>CAMPAIGNSTEP_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>94aa9a4d-e2e5-4a1b-b6f8-4d5aed87fe53</name> + <name>65fd8c83-7990-4109-8a08-5c0c56cb3426</name> <entityField>CONTACT_ID</entityField> </entityFieldLink> + <entityFieldLink> + <name>572ffba6-15c8-4d82-8f78-7e03ca1215ce</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> </fields> </genericViewTemplate> </children> diff --git a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod index 0f7b7272655670436b4f21df4c6f9c78f65cb426..c37810db65a190013ac7672d37a925b258774bec 100644 --- a/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod +++ b/neonView/CampaignParticipantFilter_view/CampaignParticipantFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantFilter_view</name> <title></title> <description></description> @@ -15,6 +15,8 @@ <name>ParticipantsTable</name> <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <isCreatable v="true" /> <isEditable v="true" /> <columns> @@ -24,12 +26,20 @@ </neonTableColumn> <neonTableColumn> <name>0b6dd644-a692-4c1a-9ab7-c38608e63eac</name> - <entityField>CONTACT_ID</entityField> + <entityField>PERSON_CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>74ef2d05-72d0-4406-915d-0c0facd351c2</name> + <entityField>ORGANISATION_CONTACT_ID</entityField> </neonTableColumn> <neonTableColumn> <name>1649e2e9-e3b3-4a41-960d-39002cb6b2d8</name> <entityField>CAMPAIGNSTEP_ID</entityField> </neonTableColumn> + <neonTableColumn> + <name>19da14e0-31c5-4a2a-9291-d0b5b4bd0fc4</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>20c9aed5-cf30-484b-a68b-c1f6ca0459db</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> @@ -44,6 +54,9 @@ <name>Treetable</name> <favoriteActionGroup1>FilterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> + <linkedColumns /> + <defaultGroupFields /> + <fixedFilterFields /> <columns> <neonTreeTableColumn> <name>9ded1920-58ef-4fc1-ac92-07522c7c06d4</name> @@ -51,12 +64,20 @@ </neonTreeTableColumn> <neonTreeTableColumn> <name>f406134b-b1c3-4fae-9f6d-771827d0fb01</name> - <entityField>CONTACT_ID</entityField> + <entityField>PERSON_CONTACT_ID</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>4c485b2e-bf95-4205-8e01-bcf4edbc5a03</name> + <entityField>ORGANISATION_CONTACT_ID</entityField> </neonTreeTableColumn> <neonTreeTableColumn> <name>c7831772-15e4-49bb-ba84-647136c3002e</name> <entityField>CAMPAIGNSTEP_ID</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>8c5c3311-0127-4977-af27-8ab582d08733</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>664cb6d0-48f9-48bf-9934-2fdb40501771</name> <entityField>STANDARD_EMAIL_COMMUNICATION</entityField> diff --git a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod index 0fe2fda33811029c2e330ce8bb88ef64c4d97e4d..6a33444d49977194c61460ba92cb8f6cf0a5bb63 100644 --- a/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod +++ b/neonView/CampaignParticipantPreview_view/CampaignParticipantPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignParticipantPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod index ac3d466a4be4d31181dbd6d6dede592366f663e4..3a6df29eef7cad1a1e0de0e479314247d4a6495f 100644 --- a/neonView/CampaignPlanning_view/CampaignPlanning_view.aod +++ b/neonView/CampaignPlanning_view/CampaignPlanning_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignPlanning_view</name> <title>Campaign planning</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignPreview_view/CampaignPreview_view.aod b/neonView/CampaignPreview_view/CampaignPreview_view.aod index 6cbe20bbb71cbf84ade1963352435ae8982265bd..0433154d474e0d4ed5091ea98468fba6a54c6ec6 100644 --- a/neonView/CampaignPreview_view/CampaignPreview_view.aod +++ b/neonView/CampaignPreview_view/CampaignPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignPreview_view</name> <title>Campaign</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod index 975475f46305254376b82932f589d15c80d3f7c1..245fb496dc22e1e771f27f4f30abf58f1057dc2d 100644 --- a/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod +++ b/neonView/CampaignStepAddParticipants_view/CampaignStepAddParticipants_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepAddParticipants_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod index 138d00449398c5432ae4fbda57e1cbf11b8a303b..0404e066350dfa13fae736238af9060fcf7068cf 100644 --- a/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod +++ b/neonView/CampaignStepAnalysis_view/CampaignStepAnalysis_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepAnalysis_view</name> <title>Evaluation</title> <description>Charts als Übersicht der Kosten des Kampagnenschrittes</description> diff --git a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod index 930baab2cbd6a0b9e3c993bfb014837b126262dc..af0403664b91272e1fca35e46255dca705b400b4 100644 --- a/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod +++ b/neonView/CampaignStepEdit_view/CampaignStepEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepEdit_view</name> <title>New campaign step</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod index dc45eb0e658ba1ae7eba7072fac749bc7051813d..98348e6043ac3b302394c2f486bc72bb0ab7b46a 100644 --- a/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod +++ b/neonView/CampaignStepFilter_view/CampaignStepFilter_view.aod @@ -1,10 +1,10 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepFilter_view</name> <title>Campaign steps </title> <description></description> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="false" /> + <filterable v="true" /> <layout> <groupLayout> <name>layout</name> @@ -13,7 +13,6 @@ <children> <tableViewTemplate> <name>StepsTable</name> - <inlineEdit v="true" /> <entityField>#ENTITY</entityField> <isEditable v="true" /> <autoNewRow v="true" /> @@ -30,6 +29,10 @@ <name>d9ca59de-1441-494a-91f0-1cff91c575de</name> <entityField>NAME</entityField> </neonTableColumn> + <neonTableColumn> + <name>166b2a17-1142-4c1d-b403-362afb227469</name> + <entityField>PREDECESSORSTEP_ID</entityField> + </neonTableColumn> <neonTableColumn> <name>75d15a06-1591-4f5c-9be6-df98e32e3834</name> <entityField>EMPLOYEE_CONTACT_ID</entityField> diff --git a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod index 9f87ec7120123809f585d39d02f75e538b2765f0..85ad77be17803e737e71d50126ae5460489ccfeb 100644 --- a/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod +++ b/neonView/CampaignStepLookup_view/CampaignStepLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepLookup_view</name> <title>Caimpaignsteps</title> <description></description> diff --git a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod index 7bf5acbf61bde94ec6922b7cb22739d71992177c..461ae82601ef81afc8cbe003078b613d26173309 100644 --- a/neonView/CampaignStepMain_view/CampaignStepMain_view.aod +++ b/neonView/CampaignStepMain_view/CampaignStepMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..716e6056c13245d50742cfbd4ff3af2e575a7329 --- /dev/null +++ b/neonView/CampaignStepMembers_view/CampaignStepMembers_view.aod @@ -0,0 +1,10 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>CampaignStepMembers_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> +</neonView> diff --git a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod index cee2045769f117ae07f14d1b8ebef69d3e1e792d..7b1fbeae783c482a6acb628d28cb691a584dac3f 100644 --- a/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod +++ b/neonView/CampaignStepParticipnatsPerStep_view/CampaignStepParticipnatsPerStep_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepParticipnatsPerStep_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod index 51d4713e5249fc70b65903eaa490f618d7a9031a..d171410b977d6f6c4ae4e094d6680713d03973a1 100644 --- a/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod +++ b/neonView/CampaignStepPreview_view/CampaignStepPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> @@ -50,19 +50,12 @@ <name>f7ddecfb-60bc-4a94-8905-7da729b32acd</name> <entityField>STEPMEDIUM</entityField> </entityFieldLink> - </fields> - </genericViewTemplate> - <genericViewTemplate> - <name>CampaignId</name> - <editMode v="false" /> - <entityField>#ENTITY</entityField> - <fields> <entityFieldLink> - <name>cee78c4b-bbac-458a-ab1c-53734ea8c7f0</name> + <name>4056e92a-6c5c-4a24-b0f6-dc2a5aa798d4</name> <entityField>CAMPAIGN_ID</entityField> </entityFieldLink> <entityFieldLink> - <name>0bffa6f8-cb18-47f8-a8f4-08cf9d718114</name> + <name>32c55d58-72c7-4af0-9236-a019149656d4</name> <entityField>CampaignStatus</entityField> </entityFieldLink> </fields> diff --git a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod index bc3590f6e3babfe2dd017f6c1ba1b5f2af7f224f..3219f78a4aa76843ad6a8e0f1c6bddfac9f35e9d 100644 --- a/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod +++ b/neonView/CampaignStepsGantt_view/CampaignStepsGantt_view.aod @@ -1,8 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CampaignStepsGantt_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <filterable v="true" /> <layout> <noneLayout> <name>layout</name> @@ -19,13 +18,13 @@ <predecessorIdField>PREDECESSORSTEP_ID</predecessorIdField> <entityField>#ENTITY</entityField> <isDeletable v="true" /> - <isEditable v="true" /> <title></title> <devices> <element>TABLET</element> <element>DESKTOP</element> </devices> <isCreatable v="true" /> + <isEditable v="true" /> <columns> <neonTableColumn> <name>9469e2f2-35ac-4f87-a4a7-959b47a5e7bb</name> diff --git a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod index 43fd31c31ab964d4bd4d7d0ef08b179b70d9c9e0..b3c80308e0208093dbb468c21c5f2a227db7c5ac 100644 --- a/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod +++ b/neonView/ClassificationAdminEdit_view/ClassificationAdminEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationAdminEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod index 616066188353b8e65c14944886f0d9e36692ef62..66bc95107a363eda4d20e2da950fd06c3a332987 100644 --- a/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod +++ b/neonView/ClassificationAdminFilter_view/ClassificationAdminFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationAdminFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod index 6ba9ff49effd10c4f9e1292bf94f92e3070303d7..2a66faca02e59683ff6ea9d27365ea4c6b92cffd 100644 --- a/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod +++ b/neonView/ClassificationGradingMultipleEdit_view/ClassificationGradingMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationGradingMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod index ac701fd79bb19e0d3b9afcee91964fda6b03c8d7..07009fa6f7cadc75d53362d8c339f7fa798dc4c0 100644 --- a/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod +++ b/neonView/ClassificationGroupPreview_view/ClassificationGroupPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationGroupPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod index 8c55fe145f75d6653dc2ba4968b158c6dcf796ed..099382a2e2dccd5a9ec78daef6edf2a29b74b84d 100644 --- a/neonView/ClassificationPreview_view/ClassificationPreview_view.aod +++ b/neonView/ClassificationPreview_view/ClassificationPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <isOverlay v="false" /> diff --git a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod index add9fa38736033c557315fd3b6920b080be9e10f..20524c3da830f14a171723be27f487813ccf31f4 100644 --- a/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod +++ b/neonView/ClassificationScoreMultipleEdit_view/ClassificationScoreMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationScoreMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationTree_view/ClassificationTree_view.aod b/neonView/ClassificationTree_view/ClassificationTree_view.aod index ca36f8fd5fa5bb784aa2111d11e4981e1bf01081..7c7200def91c52a3759349f831010d700606509f 100644 --- a/neonView/ClassificationTree_view/ClassificationTree_view.aod +++ b/neonView/ClassificationTree_view/ClassificationTree_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationTree_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod index 9b7072fc51941a61d42ed0f8044da5e86732ddc1..e9a3e74a76cb8ed1dfd9e3524065853bf9910330 100644 --- a/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod +++ b/neonView/ClassificationTypePreview_View/ClassificationTypePreview_View.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ClassificationTypePreview_View</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod index e764fb225134a5ce61892cd2d44d4bfbd8a19c34..62e73d65f64768e597fb8feaefb5ea1289dc5e3f 100644 --- a/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod +++ b/neonView/CommRestrictionDrawer_view/CommRestrictionDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod index 8a4ff768fa40e083af9a83ea9d76df586d9e6df3..118d5059636491300e732fb203a1077f93f3bcba 100644 --- a/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod +++ b/neonView/CommRestrictionFilter_view/CommRestrictionFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionFilter_view</name> <title>Restrictions</title> <description>Restrictions</description> diff --git a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod index 58f971c0f6bce48c1ae298834eb5af6774088a51..e740f6b2c740a4fad9e8135fe09e43d7aed32d67 100644 --- a/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod +++ b/neonView/CommRestrictionPreview_view/CommRestrictionPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod index fc757ef341327759a27d89928ef0fd23ffbd64a3..03d88f6cc6c6592cc60f944ab9fdabbe29b133dd 100644 --- a/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod +++ b/neonView/CommRestrictionSmallEdit_view/CommRestrictionSmallEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommRestrictionSmallEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod index 051e7e5fcbee5bc3d1e929138cd04f41d374e057..3fa9900fd7e5a5f7c8223e3cf6ed9e107337644a 100644 --- a/neonView/CommunicationEdit_view/CommunicationEdit_view.aod +++ b/neonView/CommunicationEdit_view/CommunicationEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod index 18c53dad65ec9f0029c712c2fd48522d8c07db53..a0ae2fccad5d7d8534c666ceaf6b65c15b5979ff 100644 --- a/neonView/CommunicationFilter_view/CommunicationFilter_view.aod +++ b/neonView/CommunicationFilter_view/CommunicationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/CommunicationList_view/CommunicationList_view.aod b/neonView/CommunicationList_view/CommunicationList_view.aod index cf84440573f272b268eda67ae367dcf697586a1a..e646c71d4f7c30721587a8b4153b896e7bb89305 100644 --- a/neonView/CommunicationList_view/CommunicationList_view.aod +++ b/neonView/CommunicationList_view/CommunicationList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod index ab9ecb3265622ccc290a266d456fa092032f831b..8022b2d402ace5343316e5fa9121ffe9fd15c99d 100644 --- a/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod +++ b/neonView/CommunicationMultiEdit_view/CommunicationMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CommunicationMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod index de151174dc88a3a19c66fbfe5cd0902f86066b28..469f6a0b536f202e16fda72914d7687a4032b757 100644 --- a/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod +++ b/neonView/CompetitionDrawer_view/CompetitionDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod index 2dc804c8fa5e5cc62683314a6c0c390457b807f1..c752afc16e26e416dd3680aad681e865b73d90ab 100644 --- a/neonView/CompetitionEdit_view/CompetitionEdit_view.aod +++ b/neonView/CompetitionEdit_view/CompetitionEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod index cc9122ea36d33e6cc79642c9fa3fd7ae08a91eae..9dd7bb664440f6dea9a6baad7e3d19c4cd04910c 100644 --- a/neonView/CompetitionFilter_view/CompetitionFilter_view.aod +++ b/neonView/CompetitionFilter_view/CompetitionFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod index 789733a343d48eed24863c61762bba34334101a6..9c39a12fda86ea82b8ecaee889307845c46af1a9 100644 --- a/neonView/CompetitionPreview_view/CompetitionPreview_view.aod +++ b/neonView/CompetitionPreview_view/CompetitionPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CompetitionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactEdit_view/ContactEdit_view.aod b/neonView/ContactEdit_view/ContactEdit_view.aod index 1ba399ccaff87cb177e8025ad93c7fd3e0740864..b085859245f16128047e90264baf3f8329ccd2ce 100644 --- a/neonView/ContactEdit_view/ContactEdit_view.aod +++ b/neonView/ContactEdit_view/ContactEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactList_view/ContactList_view.aod b/neonView/ContactList_view/ContactList_view.aod index 182533d0196cee3df21b5a2b72ce151a5e1a66dd..f9394214646cb91de251b078ce31118135cbed0c 100644 --- a/neonView/ContactList_view/ContactList_view.aod +++ b/neonView/ContactList_view/ContactList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContactTitledList_view/ContactTitledList_view.aod b/neonView/ContactTitledList_view/ContactTitledList_view.aod index 9e0050c6a15d4a1eca4753578d1a79bf491a935a..c980c83ab37d6e0c68640936144f73c7ca1a1386 100644 --- a/neonView/ContactTitledList_view/ContactTitledList_view.aod +++ b/neonView/ContactTitledList_view/ContactTitledList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContactTitledList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractEdit_view/ContractEdit_view.aod b/neonView/ContractEdit_view/ContractEdit_view.aod index 1721da28721b123e7b62d35b18e6d7920d45cbfe..67d330efcd5a3898f54f2c3842c6d1a16b0ed550 100644 --- a/neonView/ContractEdit_view/ContractEdit_view.aod +++ b/neonView/ContractEdit_view/ContractEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractFilter_view/ContractFilter_view.aod b/neonView/ContractFilter_view/ContractFilter_view.aod index b43c2f7fa56d7f2d30204d9369376914532022b8..08b326cef29975aa6983fe5b92098df727bd4dfb 100644 --- a/neonView/ContractFilter_view/ContractFilter_view.aod +++ b/neonView/ContractFilter_view/ContractFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ContractMain_view/ContractMain_view.aod b/neonView/ContractMain_view/ContractMain_view.aod index cc12eb8162421398d1d8010c9539ce9e01f634c7..ccf52a59c9a3d142fad573919cee3f521341562c 100644 --- a/neonView/ContractMain_view/ContractMain_view.aod +++ b/neonView/ContractMain_view/ContractMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ContractPreview_view/ContractPreview_view.aod b/neonView/ContractPreview_view/ContractPreview_view.aod index d825a03fee18e23e58567ec90ac565079048fae9..f7fad6eb7055a66d1e3fe19c3bf45c181e9e2ba1 100644 --- a/neonView/ContractPreview_view/ContractPreview_view.aod +++ b/neonView/ContractPreview_view/ContractPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ContractPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CountriesPreview_view/CountriesPreview_view.aod b/neonView/CountriesPreview_view/CountriesPreview_view.aod index 7b61d0e9d937d18afaecd2be4a88ecaf1826a34f..e7c4eb2ccb925fa6b3388e50b9dd6306fd3a39b4 100644 --- a/neonView/CountriesPreview_view/CountriesPreview_view.aod +++ b/neonView/CountriesPreview_view/CountriesPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CountriesPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/CountriesTable_view/CountriesTable_view.aod b/neonView/CountriesTable_view/CountriesTable_view.aod index be33402167b8d87c7baceacfe49e93927cd7eba4..15bdadcf67b83575947e09b6a02d018d5857794c 100644 --- a/neonView/CountriesTable_view/CountriesTable_view.aod +++ b/neonView/CountriesTable_view/CountriesTable_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>CountriesTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod index 867b93a2dd963ad62f2d3bae5e734f7c7ed29dca..ae0732836008d38205b457067263edf3fe54ae87 100644 --- a/neonView/DSGVODrawer_view/DSGVODrawer_view.aod +++ b/neonView/DSGVODrawer_view/DSGVODrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVODrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod index b10ce1465adaebeadf62b7a025c6c08c50e0961c..7a2e36dcd0dd930f931f5bd831d0099cf3d24b02 100644 --- a/neonView/DSGVOEdit_view/DSGVOEdit_view.aod +++ b/neonView/DSGVOEdit_view/DSGVOEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod index 0be528e00a0be5d48a8357a58e729bad5f6475db..3129f4f17bea114ba27ff6c2d4875dbcf51883cd 100644 --- a/neonView/DSGVOFilter_view/DSGVOFilter_view.aod +++ b/neonView/DSGVOFilter_view/DSGVOFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOFilter_view</name> <title>Data Privacy</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod index 322834185a83b93efde46f10ee93dcc1f9c66f96..5adffc8c9c2fc00f0938be8e3cc3c1fd28d2b988 100644 --- a/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod +++ b/neonView/DSGVOInfoEdit_view/DSGVOInfoEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOInfoEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod index 16b162e36e1f40868b649f8033af7cd7ef25bf23..658b57846745083a3af5e8b89d7285c35e158b15 100644 --- a/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod +++ b/neonView/DSGVOPreviewAnonym_view/DSGVOPreviewAnonym_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOPreviewAnonym_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod index 89ff9d67426a5603c64b734f7a6e53d70efdb10b..f39f20c924ef610992540387af4d45b4e2136697 100644 --- a/neonView/DSGVOPreview_view/DSGVOPreview_view.aod +++ b/neonView/DSGVOPreview_view/DSGVOPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DSGVOReport_view/DSGVOReport_view.aod b/neonView/DSGVOReport_view/DSGVOReport_view.aod index 3835fcb15b87bf51c774399be84dcfd926d76757..08abe1b52b49e8bf9e1c84658dd0b9dcdbf8c50c 100644 --- a/neonView/DSGVOReport_view/DSGVOReport_view.aod +++ b/neonView/DSGVOReport_view/DSGVOReport_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DSGVOReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod index dbd985c9477eb4df3b09527182866eddc41f9fb9..e44c460bd85f33274c34ba128bf81c9e4e26f184 100644 --- a/neonView/DefaultAdminView_view/DefaultAdminView_view.aod +++ b/neonView/DefaultAdminView_view/DefaultAdminView_view.aod @@ -1,15 +1,25 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DefaultAdminView_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> <overlayOrientation>PORTRAIT</overlayOrientation> <layout> - <noneLayout> + <boxLayout> <name>layout</name> - </noneLayout> + </boxLayout> </layout> <children> + <genericViewTemplate> + <name>EntityInfo</name> + <isEditable v="false" /> + <fields> + <entityFieldLink> + <name>09fb02da-699a-431b-8a5c-a22396ddf5b5</name> + <entityField>ENTITY</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> <neonViewReference> <name>80206d15-7132-45c1-9cf5-e2236d0f2fdb</name> <entityField>Rows</entityField> diff --git a/neonView/DefaultLookup_view/DefaultLookup_view.aod b/neonView/DefaultLookup_view/DefaultLookup_view.aod index 13bbd8a0990a47a6af2f62af96ad0e4a85ba800f..70e53f68709139a84f5eec212d760c9d9baab990 100644 --- a/neonView/DefaultLookup_view/DefaultLookup_view.aod +++ b/neonView/DefaultLookup_view/DefaultLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DefaultLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod index 88a2787707419ee251f0cca03aaf2c71c4e68e11..9c24230a7351177dc053a9e2be598667c9d0d927 100644 --- a/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod +++ b/neonView/DescriptionTranslationEdit_view/DescriptionTranslationEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod index 4d86b266dc54aa4f1a2a8439b5740339593201e3..004c88356e0483968d15fd1b5929d6fe57a99472 100644 --- a/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod +++ b/neonView/DescriptionTranslationFilter_view/DescriptionTranslationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod index 1e491d1379d406b41850f3f08303c0c441e89730..11b5fc210b212cbb9d0d58609909e89a860f1e54 100644 --- a/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod +++ b/neonView/DescriptionTranslationPreview_view/DescriptionTranslationPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DescriptionTranslationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictEdit_view/DistrictEdit_view.aod b/neonView/DistrictEdit_view/DistrictEdit_view.aod index ef598ae5665601c0ec565416dd283b994c2c4db6..ba7b2fa93c09ebe118b6ebd7f16b732bd335f919 100644 --- a/neonView/DistrictEdit_view/DistrictEdit_view.aod +++ b/neonView/DistrictEdit_view/DistrictEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictEdit_view</name> <title>Responsible Districts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictFilter_view/DistrictFilter_view.aod b/neonView/DistrictFilter_view/DistrictFilter_view.aod index 0ae033d2346776a6bb816ef83e21f016045031e5..d60e76db2624cc64e91b5d37cc50042ccbab2324 100644 --- a/neonView/DistrictFilter_view/DistrictFilter_view.aod +++ b/neonView/DistrictFilter_view/DistrictFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictList_view/DistrictList_view.aod b/neonView/DistrictList_view/DistrictList_view.aod index 161c81303a534d682d1517acae5abfef351e9904..45225faadb9410677d433a529a1d287105aa26a2 100644 --- a/neonView/DistrictList_view/DistrictList_view.aod +++ b/neonView/DistrictList_view/DistrictList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictList_view</name> <title>Responsible Districts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictMain_view/DistrictMain_view.aod b/neonView/DistrictMain_view/DistrictMain_view.aod index 2babd2f4b0b697301ad2cc98105a9779c53e8da9..f6d39a27cd5aefdf998581597e296bdcfca4301a 100644 --- a/neonView/DistrictMain_view/DistrictMain_view.aod +++ b/neonView/DistrictMain_view/DistrictMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DistrictPreview_view/DistrictPreview_view.aod b/neonView/DistrictPreview_view/DistrictPreview_view.aod index 4f778e75402704706fecfd07dcc094377db9573c..8b7243f1f4ea2d428510b3c729c45e92093e6b80 100644 --- a/neonView/DistrictPreview_view/DistrictPreview_view.aod +++ b/neonView/DistrictPreview_view/DistrictPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod index cab52b315c31f6310d25a10e0194a3df1d0f478b..fc2f1135c999d224c788a81c63c2c75a68554030 100644 --- a/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod +++ b/neonView/DistrictResponsibleList_view/DistrictResponsibleList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsibleList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod index 9e04ed897b7285c86d4739354d426155106d40dc..a6f18a1dfd082e7a2fd60a501b1f7bbb6b03f582 100644 --- a/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod +++ b/neonView/DistrictResponsibleMultiEdit_view/DistrictResponsibleMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsibleMultiEdit_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod index c1deba893d69a31f4656fc0959d7510422c5171a..d7166fc927682f5413acbf372e987ff311f79eb8 100644 --- a/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod +++ b/neonView/DistrictResponsiblePreviewList_view/DistrictResponsiblePreviewList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DistrictResponsiblePreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod index 330a76e993c45739cc8f63f3b4e3e31bb3978b10..95a6fb06859233c46fc7356e42183dbafee6984e 100644 --- a/neonView/DocumentDrawer_view/DocumentDrawer_view.aod +++ b/neonView/DocumentDrawer_view/DocumentDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentEdit_view/DocumentEdit_view.aod b/neonView/DocumentEdit_view/DocumentEdit_view.aod index 987ec495b6dacc5a0a19666e7985ebcdee26acee..b6d671776a6e9161b70bde8589354629ad3a25b7 100644 --- a/neonView/DocumentEdit_view/DocumentEdit_view.aod +++ b/neonView/DocumentEdit_view/DocumentEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/DocumentFilter_view/DocumentFilter_view.aod b/neonView/DocumentFilter_view/DocumentFilter_view.aod index 76cd35ba1dd74738a81b81d788111977d4922aea..c3418d0bcfe730773886b07b72d05300eca2aa97 100644 --- a/neonView/DocumentFilter_view/DocumentFilter_view.aod +++ b/neonView/DocumentFilter_view/DocumentFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> @@ -24,6 +24,7 @@ <tableViewTemplate> <name>Documents</name> <favoriteActionGroup1>Document_actions</favoriteActionGroup1> + <favoriteActionGroup2>MSTeam</favoriteActionGroup2> <iconField>PREVIEW_IMAGE</iconField> <titleField>NAME</titleField> <subtitleField>TYPE</subtitleField> diff --git a/neonView/DocumentList_view/DocumentList_view.aod b/neonView/DocumentList_view/DocumentList_view.aod index 01bb0076767b1ddfcf62e8091024e42adedc1635..b3f9d671bc13590e2845b15a3edfcaa4d409fecd 100644 --- a/neonView/DocumentList_view/DocumentList_view.aod +++ b/neonView/DocumentList_view/DocumentList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentList_view</name> <title>Errorlogs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod index f7e201e275a6c8f3fbbad0a3506a24138646e58e..150915177eceace53489926f2a4ad6a6c58ba299 100644 --- a/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod +++ b/neonView/DocumentMultipleEdit_view/DocumentMultipleEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentMultipleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentPreview_view/DocumentPreview_view.aod b/neonView/DocumentPreview_view/DocumentPreview_view.aod index d0d0b9825940d3ed6e9b00d63e85b111e7bfd5f9..a6a451190e3680ad6565ffa69689ca30e9ba753d 100644 --- a/neonView/DocumentPreview_view/DocumentPreview_view.aod +++ b/neonView/DocumentPreview_view/DocumentPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod index c21e2204ae06b424af7e208eca0e948088608de8..9f8b7600fd030bd7890e496b940203e0f639d361 100644 --- a/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod +++ b/neonView/DocumentTemplateEdit_view/DocumentTemplateEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateEdit_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod index fae9c9be8a773334223fe011c34141db1c3700cc..c72049158c8d2071b59212eef5b1e04be27dcc24 100644 --- a/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod +++ b/neonView/DocumentTemplateFilterSmall_view/DocumentTemplateFilterSmall_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateFilterSmall_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod index 7eadad0864f0131a237c2304c05dd0e4c5de519b..06232462d05b6b76da1f7c954166044b37ca3721 100644 --- a/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod +++ b/neonView/DocumentTemplateFilter_view/DocumentTemplateFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateFilter_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod index 3358d6c6e41e5473359d11b5a6088ef684e73862..7838782e1468d30388241c734c40c3816d369ff1 100644 --- a/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod +++ b/neonView/DocumentTemplateLinkList_view/DocumentTemplateLinkList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateLinkList_view</name> <title>Attachments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod index 58a2713ae97f46313edbf39f9f3c47c765bac855..daa83967839260c2881ab118da3b7417bf07ec8e 100644 --- a/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod +++ b/neonView/DocumentTemplateLinkMultiEdit_view/DocumentTemplateLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateLinkMultiEdit_view</name> <title>Attachments</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod index 1ed442ea7033795d86100aecf6ee2be72dc91e4c..0dd0dd675f19953d60002fdd086a84da0ebe6cac 100644 --- a/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseList_view/DocumentTemplatePlaceOfUseList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod index 63f2c9dd13712b349690318fe2b5d8dde8dae0db..9e422e2b62ee00cc4b0b04df0df5c3a1200926d9 100644 --- a/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseMultiEdit_view/DocumentTemplatePlaceOfUseMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseMultiEdit_view</name> <title>Documenttemplate Place Of Use</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod index c625c14dd3cf49d68af90686c21d80f9cd1849c6..bf02efdec2454e084c6b072d8810cdf326f9e74f 100644 --- a/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod +++ b/neonView/DocumentTemplatePlaceOfUseTitledList_view/DocumentTemplatePlaceOfUseTitledList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePlaceOfUseTitledList_view</name> <title>Documenttemplate Place Of Use</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod index 5c4100bd63747c9cbadff7297a9429ef795eb354..7ce305ce1818da026a0bbce34ee9085e4b1edb02 100644 --- a/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod +++ b/neonView/DocumentTemplatePreview_view/DocumentTemplatePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplatePreview_view</name> <title>Document Template</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod index 8cd2d326b934eeaef7f180c4ea90f8daff30d3ff..8412c83ab2b78866d4bc6689be057e27f67fdaa7 100644 --- a/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod +++ b/neonView/DocumentTemplateTypeCategoryFilter_view/DocumentTemplateTypeCategoryFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentTemplateTypeCategoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod index 3cafd27757d6dac8dd51c5ceb17fc1219e7bc3a0..8021657957e712f16dedf8d093e6ef858d64a8aa 100644 --- a/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod +++ b/neonView/DocumentWithIdFilter_view/DocumentWithIdFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DocumentWithIdFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod index 684c65d5dc6ece746f72a21d0c72a255d3a84a08..a47a045257ebee14b3c49d5eaf809500a0906bd4 100644 --- a/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod +++ b/neonView/DuplicateScannerEdit_view/DuplicateScannerEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod index e70f21cbb44614edea2bbb1dec7a060ff47f0450..922b7beb129d83791c4e1985161128cf899df1bd 100644 --- a/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod +++ b/neonView/DuplicateScannerFilter_view/DuplicateScannerFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod index a14a89ccf1bc4bf3f0e094c557b068445931d87b..e1d655cdbf312b757cef568457cc8bc785cb7d87 100644 --- a/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod +++ b/neonView/DuplicateScannerPreview_view/DuplicateScannerPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod index 576c3d38332567589e6d9bd6c4084ba8114e8ee6..1689d8f9fc314b41ce48850a859bf6de2f482bf0 100644 --- a/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod +++ b/neonView/DuplicateScannerResultFieldConfigEdit_view/DuplicateScannerResultFieldConfigEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicateScannerResultFieldConfigEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod index c019d199c2141122933552eb068b217994355a2a..0f2a6ce1c5fd46294fb6c4a17e6ea7fff6c74904 100644 --- a/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod +++ b/neonView/DuplicatesOverview_view/DuplicatesOverview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesOverview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod index f0ead2ebdc80aecda0abac4c7c0b92f49fcee8f3..fd2c40f8a36476ae6f4c574930fbe84cb1b556ac 100644 --- a/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod +++ b/neonView/DuplicatesUnrelatedCluster_view/DuplicatesUnrelatedCluster_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedCluster_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod index 9a595daa534c8876f4c20b7b578bc0a1d3d4c61f..d7fafa1ae896abd3eea28a53fa9fcbb8b7058c87 100644 --- a/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod +++ b/neonView/DuplicatesUnrelatedOrganisationFilter_view/DuplicatesUnrelatedOrganisationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedOrganisationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod index 4ba98a70931bba60aeab6a46a6c5c2e9ae2be801..3e9a45ecbbbfff22110b739d518816b835bbf750 100644 --- a/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod +++ b/neonView/DuplicatesUnrelatedPersonFilter_view/DuplicatesUnrelatedPersonFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>DuplicatesUnrelatedPersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmailEdit_view/EmailEdit_view.aod b/neonView/EmailEdit_view/EmailEdit_view.aod index 0606c5788a5daf17f8e709d6cf7311fc0628a307..4d54a0c3938ec04693ac0a9284652d198448e9fa 100644 --- a/neonView/EmailEdit_view/EmailEdit_view.aod +++ b/neonView/EmailEdit_view/EmailEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod index 8ddd860527f7492638d46cd5d4144cec197630ea..1042e95db5c0ac321b4814de446693dab8d33432 100644 --- a/neonView/EmployeeEdit_view/EmployeeEdit_view.aod +++ b/neonView/EmployeeEdit_view/EmployeeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod index 7cb12f6d37d22a149b3a90ccb9c7ea1aceea89ba..e26d5d132deb990922398f0ffa3a499a089eceee 100644 --- a/neonView/EmployeeFilter_view/EmployeeFilter_view.aod +++ b/neonView/EmployeeFilter_view/EmployeeFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod index a213204aaa00a839ea88781d343c6b88b01d0cb8..3e33d83a90b9259be4fc451c19e6c69dcd3efd57 100644 --- a/neonView/EmployeeLookup_view/EmployeeLookup_view.aod +++ b/neonView/EmployeeLookup_view/EmployeeLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeMain_view/EmployeeMain_view.aod b/neonView/EmployeeMain_view/EmployeeMain_view.aod index 94d73c9fd2ed4bcec0c7792bdfd856e732d35ea0..b997a79e7c272d496acecb6938631a1dcf7f1730 100644 --- a/neonView/EmployeeMain_view/EmployeeMain_view.aod +++ b/neonView/EmployeeMain_view/EmployeeMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeePassword_view/EmployeePassword_view.aod b/neonView/EmployeePassword_view/EmployeePassword_view.aod index 9309f0b748f33a80f026f36212d45d6dfadcb3fe..24cd4cab6c10517554778da33328f4ebb2739b61 100644 --- a/neonView/EmployeePassword_view/EmployeePassword_view.aod +++ b/neonView/EmployeePassword_view/EmployeePassword_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePassword_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeePermission_view/EmployeePermission_view.aod b/neonView/EmployeePermission_view/EmployeePermission_view.aod index 6bfd87a53c7531a89f16009ef3b4696142301ae8..a25dbbf2be76a77e69f44f9720661d770b59d5ac 100644 --- a/neonView/EmployeePermission_view/EmployeePermission_view.aod +++ b/neonView/EmployeePermission_view/EmployeePermission_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePermission_view</name> <title>Permission</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/EmployeePreview_view/EmployeePreview_view.aod b/neonView/EmployeePreview_view/EmployeePreview_view.aod index 576e510759eb4062d5692c752cee3607986eed20..0e0ae8dfbaa7b4fcbc716433003a6a83fc324b99 100644 --- a/neonView/EmployeePreview_view/EmployeePreview_view.aod +++ b/neonView/EmployeePreview_view/EmployeePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod index a7b67bdd57e314e3bf08e166dab14883974cb666..f50141d69c271df57f36c9bb15e6dd8a2ae94f52 100644 --- a/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod +++ b/neonView/EmployeeRoleEdit_view/EmployeeRoleEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod index 92618fbb9cb53540380f007f2f59a5cc92903a57..9fdfc39524c508bd19aaf0bba2b6df0d580f1e3e 100644 --- a/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod +++ b/neonView/EmployeeRoleFilter_view/EmployeeRoleFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod index 28e2345dee0299e75b7ad8b9a69c7625554c7edb..675bac8f95f58995035bfa418955980782a3bd0a 100644 --- a/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod +++ b/neonView/EmployeeRoleGenericEdit_view/EmployeeRoleGenericEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeRoleGenericEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod index 9a0bad8cead47190e646443b59d950cd3120f835..284bcdb7387a72e86f487d020615aa096d9e9f10 100644 --- a/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod +++ b/neonView/EmployeeTokenEdit_view/EmployeeTokenEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeTokenEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod index 852a0eed7cce66f29cb3aeebab709d526a7898a7..166cc2ab1e6cb8dc75097a5f131d48efab6192f2 100644 --- a/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod +++ b/neonView/EmployeeTokenFilter_view/EmployeeTokenFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>EmployeeTokenFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod index eae6477e9a3e0d2881e9df8426ca6740508534af..1738cd09ed80663b5c93d9ca074a058ece9456fa 100644 --- a/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod +++ b/neonView/ExportTemplateEdit_view/ExportTemplateEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod index c76b3911ada32f3151a5bbe762c0f71609619c60..fe3355e3394b2e52c75d930924cd72997a59cdfc 100644 --- a/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod +++ b/neonView/ExportTemplateFieldList_view/ExportTemplateFieldList_view.aod @@ -1,13 +1,13 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFieldList_view</name> <title>Field and Position</title> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <titledListViewTemplate> diff --git a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod index 32fe782b9baef53197521cc23aa5602e4f0460db..985ff2fd25859f802c8c90da0a0a96dfe24045f1 100644 --- a/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod +++ b/neonView/ExportTemplateFieldMultiEdit_view/ExportTemplateFieldMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFieldMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod index 8291821119db91fcd12efa43e385320d1f3f7cc1..71913d29b932f2eab5d76675f19e212225deec36 100644 --- a/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod +++ b/neonView/ExportTemplateFilter_view/ExportTemplateFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod index 45306dbb7234ea9b481ded9d1608679fed3d7cac..71cfd8f47117bbf3c98617d26f0f179a2a566a48 100644 --- a/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod +++ b/neonView/ExportTemplatePlaceOfUseList_view/ExportTemplatePlaceOfUseList_view.aod @@ -1,16 +1,17 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePlaceOfUseList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> - <boxLayout> + <noneLayout> <name>layout</name> - </boxLayout> + </noneLayout> </layout> <children> <titledListViewTemplate> <name>titledList</name> <titleField>PLACEOFUSE</titleField> + <titleFieldFullWidth v="true" /> <entityField>#ENTITY</entityField> </titledListViewTemplate> </children> diff --git a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod index 3bb9efc85f45fd404c7e51c946b5fd4516a9e292..23b08531c9141f6002b38c5a019efacecb008792 100644 --- a/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod +++ b/neonView/ExportTemplatePlaceOfUseMultiEdit_view/ExportTemplatePlaceOfUseMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePlaceOfUseMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod index 06bcfe9edfd98a79a7c86135b7977b02f32da4d3..79cb37d665fd21b99c77dbc73d26d6d466e6eee4 100644 --- a/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod +++ b/neonView/ExportTemplatePreview_view/ExportTemplatePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplatePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> @@ -24,6 +24,8 @@ </favoriteViewTemplate> <genericViewTemplate> <name>generic</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> <entityField>#ENTITY</entityField> <fields> <entityFieldLink> diff --git a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod index 3886dffb7b0ba7f28718efe0bd922ab036e71352..439c760013d28b5266efd85987147ec4b5917f32 100644 --- a/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod +++ b/neonView/ExportTemplateSelectionEdit_view/ExportTemplateSelectionEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ExportTemplateSelectionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod index c9270765ff02fd1ea409d4cdc47c43162cd7169d..63c8a443c7d9df1867467e8f6096974016f8d624 100644 --- a/neonView/FacebookTimeline_view/FacebookTimeline_view.aod +++ b/neonView/FacebookTimeline_view/FacebookTimeline_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FacebookTimeline_view</name> <title>Facebook</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod index 61070f4ce2ce005795b193ab22e3432174b1d8db..9e9c42e217c913758cc81b9467a8f1bc32187497 100644 --- a/neonView/FavoriteFilter_view/FavoriteFilter_view.aod +++ b/neonView/FavoriteFilter_view/FavoriteFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FavoriteFilter_view</name> <title>FavoriteFilter_view</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/FavoritePreview_view/FavoritePreview_view.aod b/neonView/FavoritePreview_view/FavoritePreview_view.aod index 25f98d8ef427973cf9b81bb09087a39d1da92522..c022ed08740c37e07db57fe0dc74d7f3c80c0c1e 100644 --- a/neonView/FavoritePreview_view/FavoritePreview_view.aod +++ b/neonView/FavoritePreview_view/FavoritePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>FavoritePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod index ef5388b84258b92686f7fddba1707facd1c94af6..552f0439fb70b646d8b67b4735de20d383ff46bd 100644 --- a/neonView/ForecastDrawer_view/ForecastDrawer_view.aod +++ b/neonView/ForecastDrawer_view/ForecastDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ForecastEdit_view/ForecastEdit_view.aod b/neonView/ForecastEdit_view/ForecastEdit_view.aod index 28debe56d0facef0164efd638b4d84b4c099a437..9934ef36ef5f52a8512cf278151602d2ab4bdf60 100644 --- a/neonView/ForecastEdit_view/ForecastEdit_view.aod +++ b/neonView/ForecastEdit_view/ForecastEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ForecastFilter_view/ForecastFilter_view.aod b/neonView/ForecastFilter_view/ForecastFilter_view.aod index ffa08904f6bad6d9c86b4f0b7c64718d0bae3851..b048b1260ed99e1cb67af7886a751e95a29ed936 100644 --- a/neonView/ForecastFilter_view/ForecastFilter_view.aod +++ b/neonView/ForecastFilter_view/ForecastFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ForecastPreview_view/ForecastPreview_view.aod b/neonView/ForecastPreview_view/ForecastPreview_view.aod index f13e83a74c95a132bdef8323d23003ff102363f4..229641c2b8319890b54282f40cabf49644687cc8 100644 --- a/neonView/ForecastPreview_view/ForecastPreview_view.aod +++ b/neonView/ForecastPreview_view/ForecastPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ForecastPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod index 4bcc0eda9db13670681a509f2a80c3314cf743b9..fcf56cc9a05ed9c6cc4c5d5145a7d0b3bd430c41 100644 --- a/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod +++ b/neonView/ImportFieldEdit_view/ImportFieldEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod index 29a4e8be88bff2ea8e3aa2288698aa80d504f755..b9d17d1d3cd003da3f1995392aa089745358cd46 100644 --- a/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod +++ b/neonView/ImportFieldFilterMapping_view/ImportFieldFilterMapping_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldFilterMapping_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod index ee18157579207f465825d5d80ba93a4958f77494..2528d1aea75e41755dcfa4e7f0e96edee41a0685 100644 --- a/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod +++ b/neonView/ImportFieldFilter_view/ImportFieldFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ImportFieldFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/IndexSearchView/IndexSearchView.aod b/neonView/IndexSearchView/IndexSearchView.aod index c1a8c71fd037cd07a80b1aea8be782bbf7f2a17a..e1b5c1f412830766e168675952817d5f9cf0c6fd 100644 --- a/neonView/IndexSearchView/IndexSearchView.aod +++ b/neonView/IndexSearchView/IndexSearchView.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>IndexSearchView</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod index 1e906c4ad4030738fcf891530a0ac48e06760f73..f273fb416fe5206b652bfdfd90276a5a87b42689 100644 --- a/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod +++ b/neonView/KeywordAttributeEdit_view/KeywordAttributeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod index 9072b6df51f606f4caae6ec016e30d5ad94ab6be..fdbdca90e0e0d5db3929d7a244eb036b4cfc8435 100644 --- a/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod +++ b/neonView/KeywordAttributeFilter_view/KeywordAttributeFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod index 3c349095ff8191de19bfb4e469b95a4815efff2f..b6ce5f6117a861aa955edc8c917857ad6994661a 100644 --- a/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod +++ b/neonView/KeywordAttributeRelationRows_view/KeywordAttributeRelationRows_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttributeRelationRows_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod index 35a025815b8d51cd1b65304a528de14ec8f5e51d..7d6ae096e0e1cf2ef9693ff3983cde057471b068 100644 --- a/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod +++ b/neonView/KeywordAttriubteRelationTitled_view/KeywordAttriubteRelationTitled_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordAttriubteRelationTitled_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod index d759384a7067f6e2324dd206641fda2bf2ace168..d272c79418943825c6b5dab7eab3821960cf3957 100644 --- a/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod +++ b/neonView/KeywordEntryEdit_view/KeywordEntryEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod index 874bbf3c62f6c5150f3e208f50c825539a94715a..8f78ef984bbdc413eaaabec6059d2888654ed04e 100644 --- a/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod +++ b/neonView/KeywordEntryFilter_view/KeywordEntryFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod index 75d472d2485aee715ee438b4a1df85e96cc5ced4..e73858d8214b91d818d2db42bb5a5d62fc2035dd 100644 --- a/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod +++ b/neonView/KeywordEntryPreview_view/KeywordEntryPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>KeywordEntryPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..9e22618d2ed86833d4fde2df6c28d39c0ce27934 --- /dev/null +++ b/neonView/KnowledgeDiscussionEdit_view/KnowledgeDiscussionEdit_view.aod @@ -0,0 +1,27 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeDiscussionEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Generic</name> + <editMode v="true" /> + <drawerCaption>Discussion</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>c87217ce-184e-4436-9b58-0d20b218c864</name> + <entityField>DISCUSSIONTEXT</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..a63d8a4035d9ff408c139a82080490701cb732a5 --- /dev/null +++ b/neonView/KnowledgeDiscussionPreview_view/KnowledgeDiscussionPreview_view.aod @@ -0,0 +1,37 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeDiscussionPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Text</name> + <editMode v="false" /> + <drawerCaption>Discussion</drawerCaption> + <fixedDrawer v="true" /> + <hideLabels v="true" /> + <entityField>#ENTITY</entityField> + <title>Discussion</title> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + <fields> + <entityFieldLink> + <name>672eae9f-abfb-4256-879b-6ceb945bff4d</name> + <entityField>discussionTitle</entityField> + </entityFieldLink> + <entityFieldLink> + <name>c0ff5819-7bb6-4e7b-b051-bb4d74fe10c1</name> + <entityField>DISCUSSIONTEXT</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..4a2b372258ad84e1f3092e0ca087b7816fb52a30 --- /dev/null +++ b/neonView/KnowledgeDiscussionTree_view/KnowledgeDiscussionTree_view.aod @@ -0,0 +1,34 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeDiscussionTree_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <treeTableViewTemplate> + <name>Treetable</name> + <parentField>PARENTENTRY</parentField> + <favoriteActionGroup1>Edit_ActionGroup</favoriteActionGroup1> + <entityField>#ENTITY</entityField> + <title>Discussions</title> + <columns> + <neonTreeTableColumn> + <name>0462213d-ce08-44e8-9a78-8fd761ca13ce</name> + <entityField>#ICON</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>be38dc3a-7295-407b-afa3-a409348985c8</name> + <entityField>DISCUSSIONTEXT</entityField> + </neonTreeTableColumn> + <neonTreeTableColumn> + <name>924ee584-22b6-4fa8-9b7d-a22b45e05c10</name> + <entityField>discussionTitle</entityField> + </neonTreeTableColumn> + </columns> + </treeTableViewTemplate> + </children> +</neonView> diff --git a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod similarity index 52% rename from neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod rename to neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod index 83a01661633e785d759e782e99804b36ca9f26c1..a54f0dfcf89c265ca7b58ecec40bb77fd73ad3d2 100644 --- a/neonView/AnyObjectRelationTree_view0/AnyObjectRelationTree_view0.aod +++ b/neonView/KnowledgeLinkActionList_view/KnowledgeLinkActionList_view.aod @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> - <name>AnyObjectRelationTree_view0</name> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeLinkActionList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <boxLayout> @@ -8,12 +8,12 @@ </boxLayout> </layout> <children> - <treeViewTemplate> - <name>AnyObjectRelations</name> - <parentField>AnyObjectType</parentField> - <titleField>AnyObjectRowid</titleField> + <actionListViewTemplate> + <name>ActionList</name> + <titleField>ROW_ID</titleField> + <descriptionField>OBJECT_TYPE</descriptionField> + <iconField>#ICON</iconField> <entityField>#ENTITY</entityField> - <title></title> - </treeViewTemplate> + </actionListViewTemplate> </children> </neonView> diff --git a/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..7f554eb698f59c2f647bd6db202de5caf9dcafd4 --- /dev/null +++ b/neonView/KnowledgeLinkEdit_view/KnowledgeLinkEdit_view.aod @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeLinkEdit_view</name> + <title>Links</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Edit</name> + <editMode v="true" /> + <drawerCaption>Link</drawerCaption> + <hideEmptyFields v="false" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>4dce246e-8ac8-491f-bc77-fc2d6ef9f62d</name> + <entityField>OBJECT_TYPE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>7fedd111-a1d3-4159-b206-11d11d80c769</name> + <entityField>ROW_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..2750e5349551a00f08938f96b2f01dd6afde5ae4 --- /dev/null +++ b/neonView/KnowledgeLinkLookup_view/KnowledgeLinkLookup_view.aod @@ -0,0 +1,27 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeLinkLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>TableLooukup</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5e32fe5d-6932-4c68-b5fd-2c995ba8fbd2</name> + <entityField>OBJECT_TYPE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>a180c48b-1e09-4e84-ad4d-92aeeb4b6542</name> + <entityField>ROW_ID</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..10006b4dc77078fdccc2f2ed356ea73057fe9f7a --- /dev/null +++ b/neonView/KnowledgeLinkMultiEdit_view/KnowledgeLinkMultiEdit_view.aod @@ -0,0 +1,29 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeLinkMultiEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>MultiEdit</name> + <entityField>#ENTITY</entityField> + <title>Links</title> + <columns> + <neonGenericMultipleTableColumn> + <name>eb1bc3cb-3cf0-479c-901f-906a7ddde485</name> + <entityField>OBJECT_TYPE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>331a348d-efdd-4a1b-a140-2c0b2adc27f0</name> + <entityField>ROW_ID</entityField> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..243f07da31771f3a4bc59d55b0bd445911a56cb2 --- /dev/null +++ b/neonView/KnowledgeManagementContent_view/KnowledgeManagementContent_view.aod @@ -0,0 +1,17 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementContent_view</name> + <title>Content</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <webContentViewTemplate> + <name>htmlContent</name> + <entityField>htmlView</entityField> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..0cd4bf137430b421db8c12326956979a1ae433bf --- /dev/null +++ b/neonView/KnowledgeManagementDetails_view/KnowledgeManagementDetails_view.aod @@ -0,0 +1,61 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementDetails_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>KnowledgeDetails</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>KnowledgeDetails</name> + <iconField>#ICON</iconField> + <titleField>TITLE</titleField> + <subtitleField>LastChange</subtitleField> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + </cardViewTemplate> + <favoriteViewTemplate> + <name>favorites</name> + <objectType>KNOWLEDGEMANAGEMENT_OBJECTTYPE</objectType> + <rowId>#UID</rowId> + <entityField>#ENTITY</entityField> + <title>Favorites</title> + </favoriteViewTemplate> + <genericViewTemplate> + <name>Details</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>2ed87edf-4aed-42cd-9ebe-f206810c86a7</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>e9d5fe54-9261-4ca4-9c20-c839c8d26395</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>1248f0fc-e370-42e5-8d64-6d89da366580</name> + <entityField>DATE_NEW</entityField> + </entityFieldLink> + <entityFieldLink> + <name>59c020ac-3b20-45b4-83ce-d0e7bb9372ad</name> + <entityField>DATE_EDIT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>6252c147-e35f-4c54-8e9c-f65eee2d5283</name> + <entityField>PUBLISH</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>9322369a-d82b-402e-aaff-dedac00d1971</name> + <entityField>TagsByKnowledgeId</entityField> + <view>KnowledgeTagList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..59ba4694d9e5f78eb08a32cd8e786c84bb700f1b --- /dev/null +++ b/neonView/KnowledgeManagementEdit_view/KnowledgeManagementEdit_view.aod @@ -0,0 +1,86 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementEdit_view</name> + <title>Knowledge</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <icon>VAADIN:ACADEMY_CAP</icon> + <size>NORMAL</size> + <quickEntry v="6" /> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Details</name> + <editMode v="true" /> + <drawerCaption></drawerCaption> + <entityField>#ENTITY</entityField> + <title></title> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + <fields> + <entityFieldLink> + <name>7be58130-991a-47e3-89d7-d01fc531ddd6</name> + <entityField>TITLE</entityField> + </entityFieldLink> + <entityFieldLink> + <name>59c18990-a0e2-4cbd-b728-f156a421081f</name> + <entityField>CONTENT</entityField> + </entityFieldLink> + <entityFieldLink> + <name>781765cb-93a4-431e-bc92-9bef2a17e39f</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>776ee39f-b666-4168-a758-0c17a3ed41a5</name> + <entityField>RESPONSIBLE_CONTACT_ID</entityField> + </entityFieldLink> + <entityFieldLink> + <name>bfa39723-52e1-45e5-945c-cc1db1c81b81</name> + <entityField>PUBLISH</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>a62e4251-76b5-427c-b758-ae57bcdf5956</name> + <entityField>TagsByKnowledgeId</entityField> + <view>KnowledgeTagList_GenMult_view</view> + </neonViewReference> + <neonViewReference> + <name>6ac6f960-eaf3-4196-acc8-f516184215f1</name> + <entityField>LinksByKnowledgeId</entityField> + <view>KnowledgeLinkMultiEdit_view</view> + </neonViewReference> + <genericViewTemplate> + <name>genericc</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>a753ed28-28fa-402e-a98f-5fa0301158b2</name> + <entityField>isNewsMark</entityField> + </entityFieldLink> + <entityFieldLink> + <name>54f5adf2-800e-4dae-a4a0-7a9fb16ed083</name> + <entityField>notificationMark</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>2649f436-3025-4f0b-bbd4-580e5dcf2cba</name> + <entityField>KnowledgeRoles</entityField> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + <neonViewReference> + <name>ed706714-6290-4d6b-9e59-7e8833e8936f</name> + <entityField>LinkedDocuments</entityField> + <view>DocumentMultipleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..1a3e3cc6271239aa99187fb13a71b60c626ba071 --- /dev/null +++ b/neonView/KnowledgeManagementFilter_view/KnowledgeManagementFilter_view.aod @@ -0,0 +1,57 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <dashletConfigurations> + <neonDashletConfiguration> + <name>Knowledge</name> + <title>Knowledge</title> + <description>All Knowledge Entries</description> + <fragment>KnowledgeManagement/filter</fragment> + <icon>VAADIN:ACADEMY_CAP</icon> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <groupLayout> + <name>layout</name> + </groupLayout> + </layout> + <children> + <tableViewTemplate> + <name>FilterTable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>6536f7bc-b655-4011-b8ce-20b27fb0f656</name> + <entityField>#ICON</entityField> + </neonTableColumn> + <neonTableColumn> + <name>6a5fd77d-537b-4f27-a372-93838a76ff2e</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>69905c5d-27c4-49aa-a10c-589fee93b67b</name> + <entityField>AUTHOR_CONTACT_ID</entityField> + </neonTableColumn> + <neonTableColumn> + <name>6f9daef0-872f-486c-8d1b-19fbde27efff</name> + <entityField>LastChange</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + <timelineViewTemplate> + <name>Timeline</name> + <dateField>LastChange</dateField> + <titleField>TITLE</titleField> + <descriptionField>CONTENT</descriptionField> + <subdescriptionField>AUTHOR_CONTACT_ID</subdescriptionField> + </timelineViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..5c6be963d83b75afffdc663d7598c8b19babb87e --- /dev/null +++ b/neonView/KnowledgeManagementLookup_view/KnowledgeManagementLookup_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>LookupTable</name> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5a7ab4ba-48a5-47bf-95e9-5631938af5b2</name> + <entityField>#IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>4176e200-836f-475c-bc35-ae9c27bf1ed9</name> + <entityField>TITLE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>0afc1762-3889-4eb5-bef9-4c14cd648eb6</name> + <entityField>CONTENTDECODED</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..ce38d5f1f8603393001360efd7cb312d6c2ae900 --- /dev/null +++ b/neonView/KnowledgeManagementMain_view/KnowledgeManagementMain_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementMain_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <masterSlaveLayout> + <name>layout</name> + <master>88686b9f-0333-4f8b-a24d-c1018bcf394b</master> + </masterSlaveLayout> + </layout> + <children> + <neonViewReference> + <name>88686b9f-0333-4f8b-a24d-c1018bcf394b</name> + <entityField>#ENTITY</entityField> + <view>KnowledgeManagementDetails_view</view> + </neonViewReference> + <neonViewReference> + <name>0c32cd6f-82a6-466a-9a71-16eeeb9c6890</name> + <entityField>#ENTITY</entityField> + <view>KnowledgeManagementContent_view</view> + </neonViewReference> + <neonViewReference> + <name>79fcef8e-c0ba-4463-a239-6faf332b6bc9</name> + <entityField>DiscussionsByKnowledgeId</entityField> + <view>KnowledgeDiscussionTree_view</view> + </neonViewReference> + <neonViewReference> + <name>914652b1-891f-4d79-a9e8-766a792da539</name> + <entityField>LinkedDocuments</entityField> + <view>DocumentFilter_view</view> + </neonViewReference> + <neonViewReference> + <name>b03ac69f-ed82-4a90-87b0-89d1822c749a</name> + <entityField>LinksByKnowledgeId</entityField> + <view>KnowledgeLinkLookup_view</view> + </neonViewReference> + <neonViewReference> + <name>40b21927-4fb9-46f3-8e99-682b1a114d19</name> + <entityField>LogHistories</entityField> + <view>LogHistoryFilter_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..f7f259faa3660933793d78943ffa7e2ac9142b41 --- /dev/null +++ b/neonView/KnowledgeManagementPreview_view/KnowledgeManagementPreview_view.aod @@ -0,0 +1,17 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + </headerFooterLayout> + </layout> + <children> + <webContentViewTemplate> + <name>PreviewHTML</name> + <height v="6000" /> + <entityField>htmlView</entityField> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..d4f7b37a1a2952ff8042e87966bb066201ae40e9 --- /dev/null +++ b/neonView/KnowledgeManagementRole_view/KnowledgeManagementRole_view.aod @@ -0,0 +1,33 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementRole_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Roles</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>f339bf74-1d3e-4584-8961-eebb730221dd</name> + <entityField>isNewsMark</entityField> + </entityFieldLink> + <entityFieldLink> + <name>6c6c1ee1-421c-4102-9ed4-a2770f8cc58c</name> + <entityField>notificationMark</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>15f19382-186c-4ca7-b3f6-e7efa11a7edb</name> + <entityField>KnowledgeRoles</entityField> + <view>KnowledgeRoleEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..adf88a24fbe440fb6a89c003b1612ebd50bb5225 --- /dev/null +++ b/neonView/KnowledgeManagementTimeline_view/KnowledgeManagementTimeline_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeManagementTimeline_view</name> + <title>Newsfeed (Preview)</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <filterable v="true" /> + <dashletConfigurations> + <neonDashletConfiguration> + <name>timelineDashletConfig</name> + <title>Newsfeed (Preview)</title> + <fragment>KnowledgeManagement/filter</fragment> + <icon>NEON:TIMELINE</icon> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + <parameters> + <neonDashletParameter> + <name>isDashlet_param</name> + <value>true</value> + </neonDashletParameter> + </parameters> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <timelineViewTemplate> + <name>time</name> + <dateField>LastChange</dateField> + <titleField>TITLE</titleField> + <descriptionField>CONTENT</descriptionField> + <subdescriptionField>AUTHOR_CONTACT_ID</subdescriptionField> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <title>Newsfeed Timeline</title> + <isCreatable v="false" /> + </timelineViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..75fc94ad122f62b35fc670aba4699d3762a29f03 --- /dev/null +++ b/neonView/KnowledgeNewsFeed_view/KnowledgeNewsFeed_view.aod @@ -0,0 +1,37 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeNewsFeed_view</name> + <title>Newsfeed (Complete Article)</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <dashletConfigurations> + <neonDashletConfiguration> + <name>knowledgeNewsFeed_dashletConfig</name> + <title>Newsfeed (Full)</title> + <description>Shows complete news articles</description> + <fragment>KnowledgeNewsFeed/filter</fragment> + <icon>VAADIN:NEWSPAPER</icon> + <categories> + <neonDashletCategory> + <name>knowledge</name> + <title>Knowledge</title> + </neonDashletCategory> + </categories> + </neonDashletConfiguration> + </dashletConfigurations> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <webContentViewTemplate> + <name>WebContent</name> + <entityField>HTMLContent</entityField> + <devices> + <element>MOBILE</element> + <element>TABLET</element> + <element>DESKTOP</element> + </devices> + </webContentViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..a73902b995791516df67c02df9dc437cbb7bb41d --- /dev/null +++ b/neonView/KnowledgeRoleEdit_view/KnowledgeRoleEdit_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeRoleEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <entityField>#ENTITY</entityField> + <title>Roles</title> + <columns> + <neonGenericMultipleTableColumn> + <name>8fc4c848-f071-4c9d-b764-8d03e750937a</name> + <entityField>ROLES</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>23bbcd15-8d81-4d82-82c8-890a0091ccff</name> + <entityField>KNOWLEDGEMANAGMENT_ID</entityField> + <fullWidth v="false" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..da077b8269e8934bf550aa8f58d0a86fff88677e --- /dev/null +++ b/neonView/KnowledgeTagList_GenMult_view/KnowledgeTagList_GenMult_view.aod @@ -0,0 +1,27 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeTagList_GenMult_view</name> + <title>Tags</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + <autoHeight v="true" /> + </boxLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>TagList</name> + <entityField>#ENTITY</entityField> + <title>Tags</title> + <columns> + <neonGenericMultipleTableColumn> + <name>7a59bcdd-e807-44db-9b5e-7b389ab10db8</name> + <entityField>TAG</entityField> + <fullWidth v="true" /> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..101604a2f8fa8190a17ed99d3708afa4493756ce --- /dev/null +++ b/neonView/KnowledgeTagList_view/KnowledgeTagList_view.aod @@ -0,0 +1,25 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>KnowledgeTagList_view</name> + <title>Tags</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <titledListViewTemplate> + <name>TagList</name> + <entityField>#ENTITY</entityField> + <title>Tags</title> + <columns> + <neonTitledListTableColumn> + <name>03ec809f-d410-4247-98a8-50022222c785</name> + <entityField>TAG</entityField> + <fullWidth v="true" /> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/LeadFilter_view/LeadFilter_view.aod b/neonView/LeadFilter_view/LeadFilter_view.aod index 75dc1286e761b80a2542f345752bc68373da2343..bf7495c315c6ac60494154f069f32f8cf8040f6e 100644 --- a/neonView/LeadFilter_view/LeadFilter_view.aod +++ b/neonView/LeadFilter_view/LeadFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod index 1463636384ef61e9a23e5af4775d6e344d902b33..db90a45194aa8fe489bf299e0eb5eda68c8b6709 100644 --- a/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod +++ b/neonView/LeadLogFilterDrawer_view/LeadLogFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod index 7faeebe7aacecb268bf2574b6a5cb577026418dc..b20013103d1378bdbe3e7b0135556c4ab2208df1 100644 --- a/neonView/LeadLogFilter_view/LeadLogFilter_view.aod +++ b/neonView/LeadLogFilter_view/LeadLogFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod index 1db69ba776878b4ac1aeaeb4d18d9bda2dee0ad9..60042c599721fb140d2628f25adeb8b94ed998eb 100644 --- a/neonView/LeadLogPreview_view/LeadLogPreview_view.aod +++ b/neonView/LeadLogPreview_view/LeadLogPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadLogPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadPreview_view/LeadPreview_view.aod b/neonView/LeadPreview_view/LeadPreview_view.aod index dcd3b2353828fb0da8b71e3b42b3bcd4658be49a..1398c08aa47d910f750f11adc69085eb6eb39379 100644 --- a/neonView/LeadPreview_view/LeadPreview_view.aod +++ b/neonView/LeadPreview_view/LeadPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadPreview_view</name> <title>Lead preview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod index 8b51e246b49096fc00023045ca8855480f10c4c9..942e0084fb6b0327e98b6236d8021489a448bb5e 100644 --- a/neonView/LeadTempFilter_view/LeadTempFilter_view.aod +++ b/neonView/LeadTempFilter_view/LeadTempFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadTempFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod index 32007efecfefdc5c8a42ac23ccfa18e73b30d8c9..f586b8f0c945b5c66e7bd701bb84195e70a875a2 100644 --- a/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod +++ b/neonView/LeadimportDocEdit_view/LeadimportDocEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportDocEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod index 317814aa5adab84fd8ba7cbcc93bac9046d35a67..349c644cebfa472d11c72813ff520fb9026f14d1 100644 --- a/neonView/LeadimportEdit_view/LeadimportEdit_view.aod +++ b/neonView/LeadimportEdit_view/LeadimportEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod index 111d9ee2c1cdce3a3c7b90663c78d668a22e4538..3593bf9b43010284d5638031b2f739dfad5b394d 100644 --- a/neonView/LeadimportFilter_view/LeadimportFilter_view.aod +++ b/neonView/LeadimportFilter_view/LeadimportFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod index 5d7859d4cc1718a63c414706f9a2348d1f51d310..3712b09ea7a03ce83b57c5fe8acf2133e547560b 100644 --- a/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod +++ b/neonView/LeadimportLeadFilter_view/LeadimportLeadFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLeadFilter_view</name> <title>Transfer data</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod index 6ec6b4bb48e5c1e8656ee8b9726dcf7454385642..43ffd5910d65d23a079c695b398ffe7f1382a3eb 100644 --- a/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod +++ b/neonView/LeadimportLeadTempFilter_view/LeadimportLeadTempFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLeadTempFilter_view</name> <title>Import Daten</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportLog_view/LeadimportLog_view.aod b/neonView/LeadimportLog_view/LeadimportLog_view.aod index 950120edca9d3838192fb9df1c7ad2447fb4c5c0..f86a57699c0648cb464c5da951f7db54a55701ad 100644 --- a/neonView/LeadimportLog_view/LeadimportLog_view.aod +++ b/neonView/LeadimportLog_view/LeadimportLog_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportLog_view</name> <title>Logs</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LeadimportMain_view/LeadimportMain_view.aod b/neonView/LeadimportMain_view/LeadimportMain_view.aod index 3cbee3d28bfd15e87892add5f422caf6f7d3116e..e544314e6eec0d0c13516e4fc76a17e2c6643b57 100644 --- a/neonView/LeadimportMain_view/LeadimportMain_view.aod +++ b/neonView/LeadimportMain_view/LeadimportMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod index 0a32f33679c773b9301205153d56d3e8daf8c631..631a0af57666a7bf3cf19b2d37a15893127d89ae 100644 --- a/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod +++ b/neonView/LeadimportMappingAssistantFilter_view/LeadimportMappingAssistantFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportMappingAssistantFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod index 4e376d9f72a06e405dcbb8f176b68e93d5ecc93e..51dde1c3ce2a2c8ba0adbe0ebb354419b8853239 100644 --- a/neonView/LeadimportPreview_view/LeadimportPreview_view.aod +++ b/neonView/LeadimportPreview_view/LeadimportPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LeadimportPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/LetterEdit_view/LetterEdit_view.aod b/neonView/LetterEdit_view/LetterEdit_view.aod index 5f77590bb269118a0a01ecfdee2b6b0f8f969432..dedcb0a85823ad0a1a902650cdd4a0f699002ae6 100644 --- a/neonView/LetterEdit_view/LetterEdit_view.aod +++ b/neonView/LetterEdit_view/LetterEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod index 6bb0a1766a827bc1c3aca1b73ee207cc58d96acf..9e7b7028a13688738d9421e9649c24eb46d79b19 100644 --- a/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod +++ b/neonView/LetterRecipientEdit_view/LetterRecipientEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterRecipientEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod index 2527705649e2aacea831bb62b2f8c4f1d4618b92..2f84db092a8a44cac4cf2d957ccb398f37897c20 100644 --- a/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod +++ b/neonView/LetterRecipientFilter_view/LetterRecipientFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LetterRecipientFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod index 0c329f2bd4dbfc96cf6f22562fbada815a3a91b3..bd094e6c4278df0cd9c5891937d635a8f8059ca4 100644 --- a/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod +++ b/neonView/LogHistoryFilterDrawer_view/LogHistoryFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod index 046d2f8787fa44504542c665a131526969cb6c25..94171bdc4e4febf21937bf3a8f87bb443367162e 100644 --- a/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod +++ b/neonView/LogHistoryFilter_view/LogHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryFilter_view</name> <title>Log</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod index 3ea10300b8edfe35b2ce7d5a8691ccf43db2dfb5..3da1a6d76e7468b83076cf7cf19c8bd9958fb3a5 100644 --- a/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod +++ b/neonView/LogHistoryPreview_view/LogHistoryPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>LogHistoryPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..c27de99f55906a641c7d83d2d9f2d6ccd2c87ad4 --- /dev/null +++ b/neonView/MSTTeamChannelEdit_view/MSTTeamChannelEdit_view.aod @@ -0,0 +1,10 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamChannelEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> +</neonView> diff --git a/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..9474c7ad093b9a3e6592715960256f06ef00abcd --- /dev/null +++ b/neonView/MSTTeamEditMembers_view/MSTTeamEditMembers_view.aod @@ -0,0 +1,28 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamEditMembers_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Teamname</name> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>b17446e0-ad87-4098-8bd2-de716a8e12ae</name> + <entityField>TEAMNAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>189bbef9-e646-416a-835f-6348199dbd24</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..9d1ffde69b9be3c4c3413cce830aa9b651457370 --- /dev/null +++ b/neonView/MSTTeamEdit_view/MSTTeamEdit_view.aod @@ -0,0 +1,33 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>Teamname</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>b69c563c-6230-4bb5-b543-236e0fdc791c</name> + <entityField>TEAMNAME</entityField> + </entityFieldLink> + <entityFieldLink> + <name>258beab2-60c4-4639-a343-3ac67c82dd5a</name> + <entityField>DESCRIPTION</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>702fea38-849e-43c3-82e5-06e7c1251c7f</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberMultiEdit_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..7afbe62185e7b41e7c711a01e0222beeae1112fa --- /dev/null +++ b/neonView/MSTTeamLinkEdit_view/MSTTeamLinkEdit_view.aod @@ -0,0 +1,23 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamLinkEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <genericViewTemplate> + <name>TeamSelection</name> + <editMode v="true" /> + <fields> + <entityFieldLink> + <name>1b10e15e-0774-430d-8b76-36307abdff33</name> + <entityField>TEAM_ID_AND_NAME</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..168947cdb474ce3c82ebdfe7a23fd8a6a1b0af30 --- /dev/null +++ b/neonView/MSTTeamMemberList_view/MSTTeamMemberList_view.aod @@ -0,0 +1,29 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamMemberList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>List</name> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <isCreatable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>ea5cdf04-7476-46f0-9df7-41d66e24acad</name> + <entityField>ROLE</entityField> + </neonTitledListTableColumn> + <neonTitledListTableColumn> + <name>20efb592-e94f-4f2c-87b5-fea410c4c28a</name> + <entityField>CONTACT_ID</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..5fe30d6a86a9e4a8e02757f6092a8a3592e4f4ab --- /dev/null +++ b/neonView/MSTTeamMemberMultiEdit_view/MSTTeamMemberMultiEdit_view.aod @@ -0,0 +1,42 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamMemberMultiEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericMultipleViewTemplate> + <name>GenericMultiple</name> + <entityField>#ENTITY</entityField> + <columns> + <neonGenericMultipleTableColumn> + <name>a01d6a4e-1ac4-426c-a891-890bd3e9a4d0</name> + <entityField>CONTACT_ID</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>467ab169-f46a-4036-9e5e-5c480bd947a6</name> + <entityField>ROLE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>b85c25c8-09dd-4f9a-b0b4-31c0b8a8f12c</name> + <entityField>INVITE</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>82cdb323-6c1a-428f-a01e-e29da9f338ec</name> + <entityField>AZUREID</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>3f766fe4-119d-40df-b071-b7a578af2a71</name> + <entityField>AZUREUPN</entityField> + </neonGenericMultipleTableColumn> + <neonGenericMultipleTableColumn> + <name>0b3ac2a1-91ad-4761-9a1d-7231d5b55169</name> + <entityField>ISEXTERN</entityField> + </neonGenericMultipleTableColumn> + </columns> + </genericMultipleViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod b/neonView/MSTTeamPreview_view/MSTTeamPreview_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..fbc295e90e4782a9d183aea6f834ff02e5b5bade --- /dev/null +++ b/neonView/MSTTeamPreview_view/MSTTeamPreview_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTTeamPreview_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <headerFooterLayout> + <name>layout</name> + <header>Card</header> + </headerFooterLayout> + </layout> + <children> + <cardViewTemplate> + <name>Card</name> + <titleField>TEAMNAME</titleField> + <descriptionField>DESCRIPTION</descriptionField> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + </cardViewTemplate> + <genericViewTemplate> + <name>Info</name> + <showDrawer v="true" /> + <drawerCaption>Details</drawerCaption> + <entityField>#ENTITY</entityField> + <isEditable v="false" /> + <fields> + <entityFieldLink> + <name>2a40804f-ea89-4345-b075-a6eef5fe9961</name> + <entityField>ISARCHIVED</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>b8eda051-1e6f-4c8f-8ef2-2b14d95d90c8</name> + <entityField>TeamMembers</entityField> + <view>MSTTeamMemberList_view</view> + </neonViewReference> + <neonViewReference> + <name>500dd7ba-366e-4b01-9d28-ebe4672c7380</name> + <entityField>Channels</entityField> + <view>MSTeamsChannelList_view</view> + </neonViewReference> + </children> +</neonView> diff --git a/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..c089822821e52c011004d916fe196c0d3f2b61f0 --- /dev/null +++ b/neonView/MSTeamsActivityImportEdit_view/MSTeamsActivityImportEdit_view.aod @@ -0,0 +1,37 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTeamsActivityImportEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>NORMAL</size> + <isOverlay v="true" /> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>ChannelSelection</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <fields> + <entityFieldLink> + <name>099e61f6-6cb8-4390-8b79-8943640bce9f</name> + <entityField>CHANNEL_ID</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + <neonViewReference> + <name>e486a1bb-5deb-432a-aa28-c3872f0f88fc</name> + <entityField>Messages</entityField> + <view>MSTeamsMessageFilter_view</view> + </neonViewReference> + <actionsViewTemplate> + <name>Actions</name> + <actions> + <element>loadNextMessages</element> + </actions> + <entityField>#ENTITY</entityField> + </actionsViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..253fe017d8f7b990e4b5f487db407e9ea2814090 --- /dev/null +++ b/neonView/MSTeamsChannelList_view/MSTeamsChannelList_view.aod @@ -0,0 +1,25 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTeamsChannelList_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <titledListViewTemplate> + <name>ChannelList</name> + <entityField>#ENTITY</entityField> + <isDeletable v="false" /> + <isEditable v="false" /> + <isCreatable v="false" /> + <columns> + <neonTitledListTableColumn> + <name>04b88bd4-22f4-4640-a4ff-26d90bc48437</name> + <entityField>CHANNELNAME</entityField> + </neonTitledListTableColumn> + </columns> + </titledListViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..017eb32c7d626d7b970a03ed7ff4ff2e479a56f1 --- /dev/null +++ b/neonView/MSTeamsDocumentEdit_view/MSTeamsDocumentEdit_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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTeamsDocumentEdit_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <size>SMALL</size> + <isOverlay v="false" /> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <genericViewTemplate> + <name>Documents</name> + <editMode v="true" /> + <entityField>#ENTITY</entityField> + <title>Documents</title> + <fields> + <entityFieldLink> + <name>6b122227-6e23-4f25-b66c-05f90e991005</name> + <entityField>CHANNEL</entityField> + </entityFieldLink> + <entityFieldLink> + <name>9a0986dd-68b2-422e-b9b3-27d35640b44b</name> + <entityField>DOCUMENTS</entityField> + </entityFieldLink> + </fields> + </genericViewTemplate> + </children> +</neonView> diff --git a/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..469ba0bec31d6149eecec43077644d0625eb7ecf --- /dev/null +++ b/neonView/MSTeamsMessageFilter_view/MSTeamsMessageFilter_view.aod @@ -0,0 +1,31 @@ +<?xml version="1.0" encoding="UTF-8"?> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MSTeamsMessageFilter_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <noneLayout> + <name>layout</name> + </noneLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <hideActions v="true" /> + <entityField>#ENTITY</entityField> + <columns> + <neonTableColumn> + <name>5db624ad-16d0-4374-be55-1a423fcddefc</name> + <entityField>FROM</entityField> + </neonTableColumn> + <neonTableColumn> + <name>89e753a1-4917-4493-b1c3-3c9d7884b217</name> + <entityField>CREATED_DATE_TIME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>bc343936-a59c-4eb0-b056-c8dc35303385</name> + <entityField>MESSAGE</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod index 8fe83127e05c62b24ba0fc5ec71929cea5e39df0..4f1e6c027e81b174f0d013dd70bf385818c74c61 100644 --- a/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod +++ b/neonView/MarketingWorkflowLauncherEdit_view/MarketingWorkflowLauncherEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MarketingWorkflowLauncherEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MemberDrawer_view/MemberDrawer_view.aod b/neonView/MemberDrawer_view/MemberDrawer_view.aod index cfe7ea4229c7d1b0262ef5d40c9162c3d3e9a2d9..945f0f153b3b0aa745f70ca17d5c84be6a2e613d 100644 --- a/neonView/MemberDrawer_view/MemberDrawer_view.aod +++ b/neonView/MemberDrawer_view/MemberDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/MemberEdit_view/MemberEdit_view.aod b/neonView/MemberEdit_view/MemberEdit_view.aod index d87d067090a65f8cfca284782ffe693ce7d5de51..68fe23e3d3629907ea6899a19697125d98fe018f 100644 --- a/neonView/MemberEdit_view/MemberEdit_view.aod +++ b/neonView/MemberEdit_view/MemberEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/MemberFilter_view/MemberFilter_view.aod b/neonView/MemberFilter_view/MemberFilter_view.aod index 1d4faccbdb00791a08aed0d4aa59df802695a131..8ca569b5ded3b525eeeb0c28f654c0f40ebde595 100644 --- a/neonView/MemberFilter_view/MemberFilter_view.aod +++ b/neonView/MemberFilter_view/MemberFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MemberFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -11,11 +11,15 @@ <children> <tableViewTemplate> <name>Members</name> + <favoriteActionGroup1></favoriteActionGroup1> + <favoriteActionGroup2>MSTeamsActionGroup</favoriteActionGroup2> <iconField>IMAGE</iconField> <titleField>PERSON_FULL_NAME</titleField> <subtitleField>CONTACTROLE</subtitleField> <descriptionField>ORGANISATION_NAME</descriptionField> <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> <columns> <neonTableColumn> <name>8b6b6eeb-6246-414f-95f6-453b71e4a9db</name> @@ -45,6 +49,10 @@ <name>bea82980-0639-405a-ab3f-92e45f97090e</name> <entityField>MEMBERROLE</entityField> </neonTableColumn> + <neonTableColumn> + <name>2a1a3331-5374-4da0-b15d-ede11a691e0a</name> + <entityField>MST_MEMBERROLE</entityField> + </neonTableColumn> </columns> </tableViewTemplate> <treeTableViewTemplate> diff --git a/neonView/MemberLookup_view/MemberLookup_view.aod b/neonView/MemberLookup_view/MemberLookup_view.aod new file mode 100644 index 0000000000000000000000000000000000000000..03833892bc29db34b9975df0977e40cfdaf9edc0 --- /dev/null +++ b/neonView/MemberLookup_view/MemberLookup_view.aod @@ -0,0 +1,32 @@ +<?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.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> + <name>MemberLookup_view</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <layout> + <boxLayout> + <name>layout</name> + </boxLayout> + </layout> + <children> + <tableViewTemplate> + <name>Table</name> + <entityField>#ENTITY</entityField> + <linkedColumns /> + <fixedFilterFields /> + <columns> + <neonTableColumn> + <name>e3a82f5d-2eee-43bc-8140-e995b23481df</name> + <entityField>IMAGE</entityField> + </neonTableColumn> + <neonTableColumn> + <name>1ecfa8b4-05a7-43c8-ac1d-ba4afe8acde0</name> + <entityField>PERSON_FULL_NAME</entityField> + </neonTableColumn> + <neonTableColumn> + <name>5819e0e0-cd6d-4259-b64d-b0ce016f7892</name> + <entityField>ORGANISATION_NAME</entityField> + </neonTableColumn> + </columns> + </tableViewTemplate> + </children> +</neonView> diff --git a/neonView/ModuleTree_view/ModuleTree_view.aod b/neonView/ModuleTree_view/ModuleTree_view.aod index 837a6f7608c0ec636eae13e5d835a763c0c8d283..28e2e351e68e45ac572f5fb3e86f45639a7775a9 100644 --- a/neonView/ModuleTree_view/ModuleTree_view.aod +++ b/neonView/ModuleTree_view/ModuleTree_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ModuleTree_view</name> <title>Tree</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod index 723a24964e2f2b1d78bb42e38728212ea9c257c8..e8375e035d436aabcfbef4615b397f5a1f845527 100644 --- a/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod +++ b/neonView/MyDashboardScoreCard_view/MyDashboardScoreCard_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MyDashboardScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> @@ -13,7 +13,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> diff --git a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod index 7285d5d827657d2b559f8420f5e0156e946f74a5..6aa096872dd77a5ad2b2a1416dc24cf84c5a2ad9 100644 --- a/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod +++ b/neonView/MyTurnoverForecastScoreCard_view/MyTurnoverForecastScoreCard_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>MyTurnoverForecastScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> diff --git a/neonView/NotificationFilter_view/NotificationFilter_view.aod b/neonView/NotificationFilter_view/NotificationFilter_view.aod index 26ee281b76cf7f73fedf86b0c739a12798fa9393..9e1d0f42f38202cf07d20df264743e304c0b779b 100644 --- a/neonView/NotificationFilter_view/NotificationFilter_view.aod +++ b/neonView/NotificationFilter_view/NotificationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>NotificationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -32,7 +32,7 @@ <dateField>CREATEDAY</dateField> <titleField>CAPTION</titleField> <descriptionField>DESCRIPTION</descriptionField> - <subdescriptionField>CREATEDATE</subdescriptionField> + <subdescriptionField>SUBCATEGORY</subdescriptionField> <iconIdField>ICON</iconIdField> <additionalInfoField>STATE</additionalInfoField> <entityField>#ENTITY</entityField> @@ -50,6 +50,7 @@ <entityField>#ENTITY</entityField> <isEditable v="false" /> <isSaveable v="false" /> + <informationField>SUBCATEGORY</informationField> <columns> <neonTableColumn> <name>1cff3be1-523d-4a5a-b7d1-389d7cbb726f</name> @@ -67,6 +68,10 @@ <name>ff33a6c1-7ac6-4acd-a083-e56a36f89977</name> <entityField>DESCRIPTION</entityField> </neonTableColumn> + <neonTableColumn> + <name>0e3756eb-05f6-4ab2-a6e9-984f5215f542</name> + <entityField>SUBCATEGORY</entityField> + </neonTableColumn> <neonTableColumn> <name>5cb09de4-4413-41e5-8a7c-4970a3cf6a62</name> <entityField>STATE</entityField> @@ -95,6 +100,10 @@ <name>446c3d62-efa4-4f1a-85d4-e4f6a45019c7</name> <entityField>DESCRIPTION</entityField> </neonTreeTableColumn> + <neonTreeTableColumn> + <name>6caff937-2e67-4b28-b630-ae1dd5860f3b</name> + <entityField>SUBCATEGORY</entityField> + </neonTreeTableColumn> <neonTreeTableColumn> <name>4c82b79e-4c15-4298-bfbb-186c76fc5189</name> <entityField>STATE</entityField> diff --git a/neonView/NotificationPreview_view/NotificationPreview_view.aod b/neonView/NotificationPreview_view/NotificationPreview_view.aod index e67f2f5699062888c2367683d63acd087f924809..dab06ac7ddc3ac1140edb2d4c92ddc3d1ccd867b 100644 --- a/neonView/NotificationPreview_view/NotificationPreview_view.aod +++ b/neonView/NotificationPreview_view/NotificationPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>NotificationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod index e354b3573f2c0e6a617136a1983c8b456b77cfa6..1d293530d8adbece302fd7d78f19a8cbab02cea0 100644 --- a/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod +++ b/neonView/ObjectRelationTypeEdit_view/ObjectRelationTypeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectRelationTypeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod index 9e6fa80dafd8382e7d758b5a939012c86d664edd..cfec0b8f5146c6f2dc3f23eaaab6c5562666f0f4 100644 --- a/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod +++ b/neonView/ObjectRelationTypeFilter_view/ObjectRelationTypeFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectRelationTypeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod index 922ada4bc69f3589ee407b648469eb3d281f7fb2..70ad4cf406d502a6387199bc1526a14c7fbedf3a 100644 --- a/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod +++ b/neonView/ObjectTreeEdit_view/ObjectTreeEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectTreeEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod index 3497cce9b4d21634068d93c6e65c3f3135056f3c..b846b67b19f115f0ac4c8400e16829cb6b6f4781 100644 --- a/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod +++ b/neonView/ObjectTreeFilter_view/ObjectTreeFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ObjectTreeFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod index 667dadc02c646fcc7a5246c0375ab24cd93235c2..8e3b80d75be7463ddd1b1a807871e9ee218dd2cd 100644 --- a/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod +++ b/neonView/OfferCoverLetter_view/OfferCoverLetter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferCoverLetter_view</name> <title>Cover letter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OfferDrawer_view/OfferDrawer_view.aod b/neonView/OfferDrawer_view/OfferDrawer_view.aod index b6445f06f7144f29b40eb72b946f40352c23901b..ad0f760504de95d61784caacc0ce8f11916d7eee 100644 --- a/neonView/OfferDrawer_view/OfferDrawer_view.aod +++ b/neonView/OfferDrawer_view/OfferDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferEdit_view/OfferEdit_view.aod b/neonView/OfferEdit_view/OfferEdit_view.aod index 5bacbaaaf3210c985a93785da25639a707bac134..3d4de5a7dc5fefa2bd15b025468a6082e10f171d 100644 --- a/neonView/OfferEdit_view/OfferEdit_view.aod +++ b/neonView/OfferEdit_view/OfferEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferEdit_view</name> <title>Offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OfferFilter_view/OfferFilter_view.aod b/neonView/OfferFilter_view/OfferFilter_view.aod index dcfe1e8da8909c739b4d2d7d7cfad05ed4272a66..d53c98d2e7d6a5b995bf8f1f99126b6da7dc7ac6 100644 --- a/neonView/OfferFilter_view/OfferFilter_view.aod +++ b/neonView/OfferFilter_view/OfferFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>SendOffersDashlet</name> - <title>Sent offers</title> + <title>Sent Offers</title> <description>Show all sent offers</description> <fragment>Offer/filter</fragment> <singleton v="true" /> diff --git a/neonView/OfferMain_view/OfferMain_view.aod b/neonView/OfferMain_view/OfferMain_view.aod index 1c956c7b763c8ea4be3abbe0fc903910b3d6da8e..ef774fd7b7ce0ed91956057023266193f30b3f8f 100644 --- a/neonView/OfferMain_view/OfferMain_view.aod +++ b/neonView/OfferMain_view/OfferMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod index 44610fe33c49fdcfb14991a4786f970603a8d240..399345116e27363f14cf691481a5240c6cdec799 100644 --- a/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod +++ b/neonView/OfferPreviewMultiple_view/OfferPreviewMultiple_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferPreviewMultiple_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferPreview_view/OfferPreview_view.aod b/neonView/OfferPreview_view/OfferPreview_view.aod index 7b78909905af090ebc923109ba2ed9bdcb0492dd..5cff758218dd6ff41acd29eef9b95cb8b4a985bf 100644 --- a/neonView/OfferPreview_view/OfferPreview_view.aod +++ b/neonView/OfferPreview_view/OfferPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferReport_view/OfferReport_view.aod b/neonView/OfferReport_view/OfferReport_view.aod index 6ac54d910d1596b8adc0956163c2e779e27efd33..043f3d17d2bb6c8b1798323b2e1741aebc01c485 100644 --- a/neonView/OfferReport_view/OfferReport_view.aod +++ b/neonView/OfferReport_view/OfferReport_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod index b249c4127083a8fe0539db54d714c517a64e5081..d63f165363ed9bd54ee5428ec64eef4672e6bfaa 100644 --- a/neonView/OfferitemEdit_view/OfferitemEdit_view.aod +++ b/neonView/OfferitemEdit_view/OfferitemEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod index cd9156a57cc2dd16a96648a25f31a705d7f0ca8e..d98159492edc13fe8e7a1afd14a512839b14fb4d 100644 --- a/neonView/OfferitemFilter_view/OfferitemFilter_view.aod +++ b/neonView/OfferitemFilter_view/OfferitemFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod index 7e027e2fc7fd8c34af2db43345aa8149874824be..faa26adb3f7b5be1a23b88ad77e308919265913b 100644 --- a/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod +++ b/neonView/OfferitemMultiEdit_view/OfferitemMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod index 3805f9a7120e5a727b9aae12a093697b62eaf9b8..2b977d802eae4d59aecd4bab71e5be3da4d745e9 100644 --- a/neonView/OfferitemPreview_view/OfferitemPreview_view.aod +++ b/neonView/OfferitemPreview_view/OfferitemPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OfferitemPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderDetail_view/OrderDetail_view.aod b/neonView/OrderDetail_view/OrderDetail_view.aod index df64544990c9918c2e4521789a5b07ced99f9587..aadbb8453e7f449e2358def60654727a7f525055 100644 --- a/neonView/OrderDetail_view/OrderDetail_view.aod +++ b/neonView/OrderDetail_view/OrderDetail_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderDetail_view</name> <title>Cover letter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderDunning_view/OrderDunning_view.aod b/neonView/OrderDunning_view/OrderDunning_view.aod index 0a20b0fdb87726636ef6602445cb916027492bb3..4f843d3eba3e55c17e6a6da305cc168428798836 100644 --- a/neonView/OrderDunning_view/OrderDunning_view.aod +++ b/neonView/OrderDunning_view/OrderDunning_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderDunning_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderEdit_view/OrderEdit_view.aod b/neonView/OrderEdit_view/OrderEdit_view.aod index e11f3390c8995c5511064190da120587eeb7c7ea..a19c19a685ef148cf0de02f16532f8db5a1befd6 100644 --- a/neonView/OrderEdit_view/OrderEdit_view.aod +++ b/neonView/OrderEdit_view/OrderEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderEdit_view</name> <title>Receipt</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderFilter_view/OrderFilter_view.aod b/neonView/OrderFilter_view/OrderFilter_view.aod index 31110f64b91a482ce3b2a3122f0c45fd722a81d9..329fad392be076770b345315d413a0bc5777bf07 100644 --- a/neonView/OrderFilter_view/OrderFilter_view.aod +++ b/neonView/OrderFilter_view/OrderFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>SendOrdersDashlet</name> - <title>Sent receipts</title> + <title>Sent Receipts</title> <description>Show all sent receipts</description> <fragment>Order/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJPUkRFUlNUQVRVUyIsIm9wZXJhdG9yIjoiQ09OVEFJTlMiLCJ2YWx1ZSI6IkphIiwia2V5IjoiMSIsImNvbnRlbnR0eXBlIjoiQk9PTEVBTiJ9XX0%3D</fragment> <singleton v="false" /> @@ -102,11 +102,11 @@ </tableViewTemplate> <treeTableViewTemplate> <name>tree</name> - <defaultGroupFields /> <entityField>#ENTITY</entityField> <linkedColumns> <element>SALESORDERCODE</element> </linkedColumns> + <defaultGroupFields /> <fixedFilterFields /> <columns> <neonTreeTableColumn> diff --git a/neonView/OrderLink_view/OrderLink_view.aod b/neonView/OrderLink_view/OrderLink_view.aod index f959375bf36879a1b1b3a4f7553eb962f4ad39d4..8bb4173a323b3f449ad361f27790d0adb694f0ec 100644 --- a/neonView/OrderLink_view/OrderLink_view.aod +++ b/neonView/OrderLink_view/OrderLink_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderLink_view</name> <title>Links</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrderMain_view/OrderMain_view.aod b/neonView/OrderMain_view/OrderMain_view.aod index 428d0c02e07af523318e7f24d35f87230edab64f..a5a11844e394930740a0a69ca77d4b3e3a7c3653 100644 --- a/neonView/OrderMain_view/OrderMain_view.aod +++ b/neonView/OrderMain_view/OrderMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderPaid_view/OrderPaid_view.aod b/neonView/OrderPaid_view/OrderPaid_view.aod index 67d17a1b948fe34f88e3f50b5fdab14d543d8b4a..e40f7e8d39c7000059825f4f7e6ae47636815e2f 100644 --- a/neonView/OrderPaid_view/OrderPaid_view.aod +++ b/neonView/OrderPaid_view/OrderPaid_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderPaid_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderPreview_view/OrderPreview_view.aod b/neonView/OrderPreview_view/OrderPreview_view.aod index 449cb53093e44483cf3aa756620e62102d37d113..65d6f80528d1e6d8634e01378f820dac5cd4b2b8 100644 --- a/neonView/OrderPreview_view/OrderPreview_view.aod +++ b/neonView/OrderPreview_view/OrderPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod index 8c0ed255d69772395ea09018326fa4259b6eb61c..3f14cbe374f95d2b11ac4ab00381148cc597a727 100644 --- a/neonView/OrderReminderReport_view/OrderReminderReport_view.aod +++ b/neonView/OrderReminderReport_view/OrderReminderReport_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderReminderReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderReport_view/OrderReport_view.aod b/neonView/OrderReport_view/OrderReport_view.aod index 0f3487512ac3b724cd6ca4aaba79f0e7c92b5def..19703e6ddebd96c97ff069df76d5ea088e71ab4d 100644 --- a/neonView/OrderReport_view/OrderReport_view.aod +++ b/neonView/OrderReport_view/OrderReport_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod index bcc6e174805d9a3f9f6d9289302c4141db0d380d..c0c38570eadee29252d37ced1eef7dfd4ac9ea2b 100644 --- a/neonView/OrderitemEdit_view/OrderitemEdit_view.aod +++ b/neonView/OrderitemEdit_view/OrderitemEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod index 4c6e8a7eac674bd309fbe4aefe1f9bda7c40bba0..1f043a66f89ee7a6146dccc272855b0e3ea56a94 100644 --- a/neonView/OrderitemFilter_view/OrderitemFilter_view.aod +++ b/neonView/OrderitemFilter_view/OrderitemFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod index fd4c03d14d1b7bd3d8e75c28b0b66b0719acceca..3226af5f67569e45bdfb2df0b3b30201011b4a5e 100644 --- a/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod +++ b/neonView/OrderitemMultiEdit_view/OrderitemMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod index 40a1e0eac488119ca9355c53de89d7ebaf82c856..285683df9678c5cd06c1b8360393d941cacc51f0 100644 --- a/neonView/OrderitemPreview_view/OrderitemPreview_view.aod +++ b/neonView/OrderitemPreview_view/OrderitemPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrderitemPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod index b817d9e5a5762152b634d66afd7be95e41bdcf93..0142bb641ca7347a91c0910c619f6fa4f0402a2a 100644 --- a/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod +++ b/neonView/OrganisationAttributeRestriction_view/OrganisationAttributeRestriction_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationAttributeRestriction_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationClassification/OrganisationClassification.aod b/neonView/OrganisationClassification/OrganisationClassification.aod index 9019bf34d2fc9a1c046f10134326513ba14eef59..e52d32adb6d25b1e3f46521c93f3e5c3b8ed0484 100644 --- a/neonView/OrganisationClassification/OrganisationClassification.aod +++ b/neonView/OrganisationClassification/OrganisationClassification.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClassification</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod index 3f81db3f2e4ff280a021b5b2b8b9271c3ebd5f19..fd336c3f6c11c08086375316f52928aef8c0230d 100644 --- a/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod +++ b/neonView/OrganisationClassificationDrawer_view/OrganisationClassificationDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClassificationDrawer_view</name> <title>Classifications</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod index 22a28e8cd4062a26a185d95e7672eb386af80b47..a4d2c1cc14c96ff3837c9357d80d80eae79bfb04 100644 --- a/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod +++ b/neonView/OrganisationClusterMain_view/OrganisationClusterMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationClusterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod index 73db76aeba54cc11a95504d9e29ea58e7369873f..d8b313f05e71ea55979012b5c4a2580bab76f432 100644 --- a/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod +++ b/neonView/OrganisationConditionPricelist_view/OrganisationConditionPricelist_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationConditionPricelist_view</name> <title>Conditions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod index b17a49016c29dd4507a2ffe907de216bf2dba92c..854ba3f3278ad26ebf9b8af357ae94fd610a8344 100644 --- a/neonView/OrganisationCondition_view/OrganisationCondition_view.aod +++ b/neonView/OrganisationCondition_view/OrganisationCondition_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationCondition_view</name> <title>Conditions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod index dfe48ea0e80130096144fb4c611eb7691a16094e..9ca2b13a95ae2fa9e7d38071f3c72205625443f3 100644 --- a/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod +++ b/neonView/OrganisationDuplicatesFilter_view/OrganisationDuplicatesFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationDuplicatesFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod index 6ca9948b472ab1c99e2a53242a35ae95c902ff81..c6f447f92c419a924c84f78c1b082744439540ff 100644 --- a/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod +++ b/neonView/OrganisationDuplicatesTab_view/OrganisationDuplicatesTab_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationDuplicatesTab_view</name> <title>Organisation duplicates</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod index 70cc47cbd63e649e23277ff71e0c73332b0493fc..84a9507a937c0dc7ec2b5391f6d062b04c74a32a 100644 --- a/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod +++ b/neonView/OrganisationEditDefaults_view/OrganisationEditDefaults_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod index 5a59c451c77ae1572ed36fc92ae2d97c156fa020..c76fe9d45886f48246d9396d33efdd8ee2bd970b 100644 --- a/neonView/OrganisationEdit_view/OrganisationEdit_view.aod +++ b/neonView/OrganisationEdit_view/OrganisationEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationEdit_view</name> <title>Company</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod index 1cbde0c53092405404ec0d317720691ca55d14e3..352cf6a5b00464ee39750c73cf87a69e13911931 100644 --- a/neonView/OrganisationFilter_view/OrganisationFilter_view.aod +++ b/neonView/OrganisationFilter_view/OrganisationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -15,13 +15,13 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> <neonDashletConfiguration> <name>OwnSupervisedOrganisations</name> - <title>My organisations</title> + <title>My Organisations</title> <description>Show my organisations</description> <fragment>Organisation/filter</fragment> <singleton v="false" /> @@ -30,7 +30,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod index 5b29deefbee8b04a8e679b25b99f4ec3e47866df..374a165f329d05571c9838e6bcef86e13fd3f9f4 100644 --- a/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod +++ b/neonView/OrganisationLesserNoiseTable_view/OrganisationLesserNoiseTable_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationLesserNoiseTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod index 0d9e7c9051b8045e5203369c54659ef9dd9c564a..9c93c1e04a657dbc86a7d95e082a0363d5927299 100644 --- a/neonView/OrganisationLookup_view/OrganisationLookup_view.aod +++ b/neonView/OrganisationLookup_view/OrganisationLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationMain_view/OrganisationMain_view.aod b/neonView/OrganisationMain_view/OrganisationMain_view.aod index df9be823dfc7638ea6bb6f126911731ad6b90784..03d6b384c21ee408aa5c686a7c07557fb2ac1516 100644 --- a/neonView/OrganisationMain_view/OrganisationMain_view.aod +++ b/neonView/OrganisationMain_view/OrganisationMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationMain_view</name> <title>Attribute</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod index 2648fff358054098d3c837b50e09de889fb596c7..e77f5e397f23984b2ef9bd2e187ed776a5c62499 100644 --- a/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod +++ b/neonView/OrganisationNoNoiseTable_view/OrganisationNoNoiseTable_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationNoNoiseTable_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod index b3ee90540321ac60fbcac02169f6db1862ecfc9f..f357dbb8e3613828085c984a75cd5f785487e14b 100644 --- a/neonView/OrganisationPreview_view/OrganisationPreview_view.aod +++ b/neonView/OrganisationPreview_view/OrganisationPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationReport_view/OrganisationReport_view.aod b/neonView/OrganisationReport_view/OrganisationReport_view.aod index 0c10fa2a0be68aabbdb477fce16f1adda9c1b55f..7207ac709a06fb112851a1229acfd313304e14a3 100644 --- a/neonView/OrganisationReport_view/OrganisationReport_view.aod +++ b/neonView/OrganisationReport_view/OrganisationReport_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationReport_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod index 9fb952b77a2bad5dc51f3da28bb7353f40994d68..e03f03491883a41e93458fa9f8d9417be34c6f85 100644 --- a/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod +++ b/neonView/OrganisationTaskAppointment_view/OrganisationTaskAppointment_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationTaskAppointment_view</name> <title>ToDo</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod index e8da741d067812b8edb6a0ac8c979cb76fb37051..882d51ed0ac05f2bdc396118e68d2b168552a3e7 100644 --- a/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod +++ b/neonView/OrganisationUnrelatedDuplicates_view/OrganisationUnrelatedDuplicates_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>OrganisationUnrelatedDuplicates_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod index ab4ce87a232c2c483b2c81404cf0d24397da68d4..023dc0ac7bb87b078826fff776b9ccfcac8eaea9 100644 --- a/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod +++ b/neonView/PermissionActionEdit_view/PermissionActionEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod index 38481861ae2a8cc4905adeae38f659cf0c1084a2..b6bacb05021e0f3bd500c3295ca6611db913a017 100644 --- a/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod +++ b/neonView/PermissionActionFilter_view/PermissionActionFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionActionList_view/PermissionActionList_view.aod b/neonView/PermissionActionList_view/PermissionActionList_view.aod index 5019e2d1b3739a17d7c80a9b64da998da4e7d437..653f3fdae87a779a85bbf230fe5096368bd8a50d 100644 --- a/neonView/PermissionActionList_view/PermissionActionList_view.aod +++ b/neonView/PermissionActionList_view/PermissionActionList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionActionList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod index 60c76072d2afc883a3e23ecccea591e5f236dfab..1908377c0268b4d64040d0ea88c08ba1e1313a7d 100644 --- a/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod +++ b/neonView/PermissionCalendarEdit_view/PermissionCalendarEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod index bea5b5d3b4c83c14236e3e3ee1164389370c87fd..1c9bf9635927fc795a5f2a14fffaf695a1acf009 100644 --- a/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod +++ b/neonView/PermissionCalendarFilterDrawer_view/PermissionCalendarFilterDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilterDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod index c70bb0052949f5d742d12db7048ec520710913bf..c283d5663990a70fa5aa899d4edb3c5c95ba6dfa 100644 --- a/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod +++ b/neonView/PermissionCalendarFilterReverse_view/PermissionCalendarFilterReverse_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilterReverse_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/PermissionCalendarFilterReverse_view/documentation.adoc</documentation> diff --git a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod index ffca2d78c9c23630df69eec76e2f882cd943872e..e018328dd3420f4f4847c6b5ec3536efa4cbc808 100644 --- a/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod +++ b/neonView/PermissionCalendarFilter_view/PermissionCalendarFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarFilter_view</name> <title>Their Permissions</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod index 8671d21b95c8bc5d16f7bdcc597f4d6a0924cfb7..8614108694e8ff481877cb77ddc5a9b025969869 100644 --- a/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod +++ b/neonView/PermissionCalendarPreview_view/PermissionCalendarPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionCalendarPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod index b38046275b1de3d27e9720088053b6cac8503ca9..8324836e120a4ed202d674e94c79cf0831ff7c35 100644 --- a/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod +++ b/neonView/PermissionDetailEdit_view/PermissionDetailEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod index 2a069a4c9a5e0e924b01a1cba372741585254201..a82c84b80dd495eab74cecef2215ea4dc517823f 100644 --- a/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod +++ b/neonView/PermissionDetailFilter_view/PermissionDetailFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailFilter_view</name> <title>Permission Detail</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod index 949bb12b7ab6e2ef39917b4b59593a621c981f2f..58b70e10223f062a157149e0e71cca42ec0372d0 100644 --- a/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod +++ b/neonView/PermissionDetailPreview_view/PermissionDetailPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionDetailPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod index 9644e50cf2d1d009ffd09a0981d86df7ac8493e7..b28164f6d9dccb95fbd013c00da4103101c8a0bb 100644 --- a/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod +++ b/neonView/PermissionMetaDataFilter_view/PermissionMetaDataFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod index 53e8f0b956cb34f64e1ee26eb4e70ea50d888a65..e668f8fe5ef9e110ccd4c83aefcd1d7a0d90e93b 100644 --- a/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod +++ b/neonView/PermissionMetaDataMain_view/PermissionMetaDataMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod index 1f323f20aab7cc59e0d8266ecddfcb8e6db74a8a..a734740b8e8e13106763e284c2f460463465cf3e 100644 --- a/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod +++ b/neonView/PermissionMetaDataPreview_view/PermissionMetaDataPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionMetaDataPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod index 7e1ea7f0faabad4a01b7a16f121d93a8de2ff4eb..54950c54a2d7b9aa72a0c2baebf7d90d96bc00de 100644 --- a/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod +++ b/neonView/PermissionOverviewFilter_view/PermissionOverviewFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PermissionOverviewFilter_view</name> <title>Permission Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod index 11f7b639939fc66ab3721c8f217d2c248246be36..0954af14d6b3bfcf30f9f6efbb231eb216f439f1 100644 --- a/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod +++ b/neonView/PersonAttributeRestriction_view/PersonAttributeRestriction_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonAttributeRestriction_view</name> <title>Attributes</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod index 7ed8cea878e5c243e36fe87981e8d0b3240a7339..026835113050c6ad2e78420b38c13d0b88e98804 100644 --- a/neonView/PersonClusterMain_view/PersonClusterMain_view.aod +++ b/neonView/PersonClusterMain_view/PersonClusterMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonClusterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod index 7465d9548b1552e7720bf332414658905f588dbf..8751b422c1507d1fd3988d1a11b50314e08163b2 100644 --- a/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod +++ b/neonView/PersonClusterPreview_view/PersonClusterPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonClusterPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonDetail_view/PersonDetail_view.aod b/neonView/PersonDetail_view/PersonDetail_view.aod index bf877ec44c102df4803f41d11075dacecf76123c..52653526a4c50a578452aa2ee6c1a6f96584c923 100644 --- a/neonView/PersonDetail_view/PersonDetail_view.aod +++ b/neonView/PersonDetail_view/PersonDetail_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDetail_view</name> <title>Details</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod index 2099e5c6ee57a9a7fbef13bfbf16b15f8298c108..eba26d6001879a4e335aa662e47348ff2caabeaa 100644 --- a/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod +++ b/neonView/PersonDublicatesTab_view/PersonDublicatesTab_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDublicatesTab_view</name> <title>Person duplicates</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod index 23c70461d00820365c981737e76d5a410961cc4d..476077463fccae17b7899bd4e9672051e2637b08 100644 --- a/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod +++ b/neonView/PersonDuplicateEditview_view/PersonDuplicateEditview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDuplicateEditview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod index 94e88b257d1b94e481ef9fc6350931d736155286..867d991080fbfffa62fafe77c220f81520c6c3c3 100644 --- a/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod +++ b/neonView/PersonDuplicatesFilter_view/PersonDuplicatesFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonDuplicatesFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod index 4be76fd469771d104f909dba2d23f4379c4e8218..2c5a319e4dcf1d40bb2f09bf1c3ba851b978584f 100644 --- a/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod +++ b/neonView/PersonEditDefaults_view/PersonEditDefaults_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonEditDefaults_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/PersonEdit_view/PersonEdit_view.aod b/neonView/PersonEdit_view/PersonEdit_view.aod index c31dd51b7ff66255b6c949a7082332d5e5196728..68a42fbd3c07c2a996e944274166e17599c4e5bb 100644 --- a/neonView/PersonEdit_view/PersonEdit_view.aod +++ b/neonView/PersonEdit_view/PersonEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonEdit_view</name> <title>Contact</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PersonFilter_view/PersonFilter_view.aod b/neonView/PersonFilter_view/PersonFilter_view.aod index 721f83815ee9106aa481022db138b8fcf77e11cb..e4483a7e82c92994013c98bd07d87f12d6f485b2 100644 --- a/neonView/PersonFilter_view/PersonFilter_view.aod +++ b/neonView/PersonFilter_view/PersonFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -15,13 +15,13 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> </neonDashletConfiguration> <neonDashletConfiguration> <name>OwnSupervisedContacts</name> - <title>My contacts</title> + <title>My Contacts</title> <description>Show my contacts</description> <fragment>Person/filter</fragment> <singleton v="false" /> @@ -30,7 +30,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/PersonLookup_view/PersonLookup_view.aod b/neonView/PersonLookup_view/PersonLookup_view.aod index 5877a1ee07ad8d0e4968e57e21c196804d0f67f0..8189598556fa8ca040015c925a825370e7085599 100644 --- a/neonView/PersonLookup_view/PersonLookup_view.aod +++ b/neonView/PersonLookup_view/PersonLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMain_view/PersonMain_view.aod b/neonView/PersonMain_view/PersonMain_view.aod index 7e88568ac761047866b5e5bfc6167662e731a85b..8ec9c55885ac9df41ea0ee360e7ebd0e64ddaf02 100644 --- a/neonView/PersonMain_view/PersonMain_view.aod +++ b/neonView/PersonMain_view/PersonMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod index 5b15646ad0ca10ce8dcbdfdc9b3dbf1b240aafc0..725d0fe4e9e4b5dcc7548fb6848869810224a648 100644 --- a/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod +++ b/neonView/PersonMultiEditQuickEntry_view/PersonMultiEditQuickEntry_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMultiEditQuickEntry_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod index 511bdae7953a5858e68ec0d570820e2499ac494e..b6cc77de5ba37f1265d55b03eb8f0a6aade1bb22 100644 --- a/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod +++ b/neonView/PersonMultiEdit_view/PersonMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonPreview_view/PersonPreview_view.aod b/neonView/PersonPreview_view/PersonPreview_view.aod index c0ecb2926bd1a2d73e4b9c1e9fe738a39265244e..bcbe4a50630ba341e2be3502d4b98a5717ddb07b 100644 --- a/neonView/PersonPreview_view/PersonPreview_view.aod +++ b/neonView/PersonPreview_view/PersonPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod index 2f1efab373407d466ee9246b6bd8f3321e996c04..0407e8cccc2832026d26d3165dd50b138f109fd5 100644 --- a/neonView/PersonSimpleList_view/PersonSimpleList_view.aod +++ b/neonView/PersonSimpleList_view/PersonSimpleList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonSimpleList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -17,7 +17,10 @@ <subtitleField>LANGUAGE</subtitleField> <descriptionField>DEPARTMENT</descriptionField> <entityField>#ENTITY</entityField> - <linkedColumns /> + <linkedColumns> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </linkedColumns> <fixedFilterFields /> <columns> <neonTableColumn> @@ -66,7 +69,10 @@ <name>tree</name> <favoriteActionGroup1>filterViewActionGroup</favoriteActionGroup1> <entityField>#ENTITY</entityField> - <linkedColumns /> + <linkedColumns> + <element>FIRSTNAME</element> + <element>LASTNAME</element> + </linkedColumns> <defaultGroupFields /> <fixedFilterFields /> <columns> diff --git a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod index d23833c4c20d8838144196a95c81cd8ec57fa29f..655e857c6ede9c4a5f55865ab81729fb8f7b786e 100644 --- a/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod +++ b/neonView/PersonTaskAppointment_view/PersonTaskAppointment_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PersonTaskAppointment_view</name> <title>ToDo</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod index 3e106ebb254d6d7ae3657a443f0d6ca9241484f3..e794fe6574244ec5acbcee07cbf4b77a557b56ea 100644 --- a/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod +++ b/neonView/PrivatePersonFilter_view/PrivatePersonFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PrivatePersonFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod index 13f2b9fd014f79514b2417b247f8e079b5cee39a..51fe925b724839743ded63ea77cd62a24630ac3e 100644 --- a/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod +++ b/neonView/PrivatePersonPreview_view/PrivatePersonPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>PrivatePersonPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod index 6048f3f0bdfefff3c4b9228280e9fbd8580946eb..e6bb87875619a9f4abdb677bb4fc2b1c7d55f96c 100644 --- a/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod +++ b/neonView/Prod2ProdEdit_view/Prod2ProdEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Prod2ProdEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod index e5bac593a143711913ac4408d3e13e45be910ef5..ff851bb55876efbd21049f0a5fdbc25231515877 100644 --- a/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod +++ b/neonView/Prod2prodFilter_view/Prod2prodFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Prod2prodFilter_view</name> <title>Parts list</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ProductEdit_view/ProductEdit_view.aod b/neonView/ProductEdit_view/ProductEdit_view.aod index 768f479d12d49821655426ff6908c69d9824cc27..9b3843d6625e17015dc6ca0bbcbf2ce3b71ec258 100644 --- a/neonView/ProductEdit_view/ProductEdit_view.aod +++ b/neonView/ProductEdit_view/ProductEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductFilter_view/ProductFilter_view.aod b/neonView/ProductFilter_view/ProductFilter_view.aod index 87133854a0bf04645764e64768e6037d069b48b9..326ff54ed32004e8b87f9624e9d530a63f6d2daf 100644 --- a/neonView/ProductFilter_view/ProductFilter_view.aod +++ b/neonView/ProductFilter_view/ProductFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductLookup_view/ProductLookup_view.aod b/neonView/ProductLookup_view/ProductLookup_view.aod index e038ed3765c689f36212619cc246abf2196bd6f9..36f27e8de47cda7be24e5b9cec345ac9314ad878 100644 --- a/neonView/ProductLookup_view/ProductLookup_view.aod +++ b/neonView/ProductLookup_view/ProductLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/neonView/ProductLookup_view/documentation.adoc</documentation> diff --git a/neonView/ProductMain_view/ProductMain_view.aod b/neonView/ProductMain_view/ProductMain_view.aod index e284252e8f4b346b4d4a2269780e427e3fb13911..485f0f3903371e3a299f061354b64a4ca5aa99cc 100644 --- a/neonView/ProductMain_view/ProductMain_view.aod +++ b/neonView/ProductMain_view/ProductMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductPreview_view/ProductPreview_view.aod b/neonView/ProductPreview_view/ProductPreview_view.aod index 61b9a8f77cd8b031702ff6bd1345c5950d7a79f2..f54cbe7485233114ad92b6bb0e3f25a605b5be67 100644 --- a/neonView/ProductPreview_view/ProductPreview_view.aod +++ b/neonView/ProductPreview_view/ProductPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod index f2c6e8dac43e719b5612feb930cdb341f50861df..9e99957324c3dc14566e94bcbf85eaacc6324759 100644 --- a/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod +++ b/neonView/ProductpriceEdit_view/ProductpriceEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceEdit_view</name> <title>Price list</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod index f19f9c4d30be0d8b0db3961e302d3af219e437cb..13e9c8af8f143a58c18df8f906b2ec74f92a5a7b 100644 --- a/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod +++ b/neonView/ProductpriceFilter_view/ProductpriceFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod index 181e22f1cc5e9073ca8db6c1dfaafa913c95a38c..7bc95e10fa1a928b95dcf05bf834a9cdf8309b62 100644 --- a/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod +++ b/neonView/ProductpriceForProductFilter_view/ProductpriceForProductFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceForProductFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod index bb516112119a7134549491a865cba256ce618926..3a26703ba701303d135ea2e88634e3c7eeb0c3ab 100644 --- a/neonView/ProductpricePreview_view/ProductpricePreview_view.aod +++ b/neonView/ProductpricePreview_view/ProductpricePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpricePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod index 9d054a7e57691b5b48be9092463cbc2dc7cbf86a..fa3d850171314d13ecb551fd4763a5d89cba15ac 100644 --- a/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod +++ b/neonView/ProductpriceRelation_view/ProductpriceRelation_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>ProductpriceRelation_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod index 9598c3420b1a7b9b9a6128c50848a370f9f61a62..5947deaa524c6d7df96960848e32206aa11fbdb5 100644 --- a/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod +++ b/neonView/QuickEntryEdit_view/QuickEntryEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>QuickEntryEdit_view</name> <title>Quick Entry</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod index 8dd7cd21a6314df94d3d7ef2882f6ec6f442e9d9..4ba793b4c4ab7586cc8f827015b8c23d057311de 100644 --- a/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod +++ b/neonView/RoleChildrenEdit_view/RoleChildrenEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleChildrenEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod index ada141eeefbfbf0e0e287e56ad32182a097eabaa..149c223100cad88892c6fb383da176b690ca0a30 100644 --- a/neonView/RoleChildrenList_view/RoleChildrenList_view.aod +++ b/neonView/RoleChildrenList_view/RoleChildrenList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleChildrenList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleEdit_view/RoleEdit_view.aod b/neonView/RoleEdit_view/RoleEdit_view.aod index 55cdf1755635363d6cf92304033ea876a309e5a5..48efe4546a64c0e146d9c6bcb5464612aae6047c 100644 --- a/neonView/RoleEdit_view/RoleEdit_view.aod +++ b/neonView/RoleEdit_view/RoleEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleFilter_view/RoleFilter_view.aod b/neonView/RoleFilter_view/RoleFilter_view.aod index 612096e53f13856ffecdd786ed760b697a96d532..41cdd7eb8720909b3d33774e577d596082afe6f6 100644 --- a/neonView/RoleFilter_view/RoleFilter_view.aod +++ b/neonView/RoleFilter_view/RoleFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/RoleMain_view/RoleMain_view.aod b/neonView/RoleMain_view/RoleMain_view.aod index f63cba1a93f91c381f83b8027fad0e5de2c79602..435f4e497dc2c38cbce0befdb5b78646e2e2d94f 100644 --- a/neonView/RoleMain_view/RoleMain_view.aod +++ b/neonView/RoleMain_view/RoleMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RoleParentList_view/RoleParentList_view.aod b/neonView/RoleParentList_view/RoleParentList_view.aod index 2a2073e31961aeda39ace51d84243065d475c40b..357f92e53732c38b1de3f682ce6dff5fe3cab63d 100644 --- a/neonView/RoleParentList_view/RoleParentList_view.aod +++ b/neonView/RoleParentList_view/RoleParentList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RoleParentList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/RolePreview_view/RolePreview_view.aod b/neonView/RolePreview_view/RolePreview_view.aod index 5f62a43c2caaa2c4fd4bdd68748bc809f3efe66c..1c58e0710e0bdc8b9a1ec2c7b7b5ef2c6ebaf53a 100644 --- a/neonView/RolePreview_view/RolePreview_view.aod +++ b/neonView/RolePreview_view/RolePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>RolePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod index 86524aca75abcc6f73c19fd30aee8cc986ead6b1..585ee4502b9063d4bed17224a54eb0de6691353a 100644 --- a/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod +++ b/neonView/SalesprojectAnalysesPhases_view/SalesprojectAnalysesPhases_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectAnalysesPhases_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod index 1228d3cc49bdac80030aec42937bcdb4fc9c643a..31cd51c26b8a97b080e8c01fafaf48c5457215b7 100644 --- a/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod +++ b/neonView/SalesprojectAnalyses_view/SalesprojectAnalyses_view.aod @@ -1,14 +1,14 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>SalesprojectPhases</name> - <title>Salesproject phases</title> + <title>Sales Project 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/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod index dfb2ef2e310f8697d97db79098d64d03f61f8b7f..23306b3f473e21cf166464ba3c879b7b70eea253 100644 --- a/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod +++ b/neonView/SalesprojectConversionRate_view/SalesprojectConversionRate_view.aod @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectConversionRate_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>ConvertionRates</name> - <title>Salesproject Convertion Rates</title> + <title>Sales Project Convertion Rates</title> <description>Shows the different conversion rates of the sales project phases</description> <fragment>SalesprojectConversionRate/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiIjRVhURU5TSU9OLkRBVEVfU1RBUlQuREFURV9TVEFSVCNEQVRFIiwib3BlcmF0b3IiOiJUSU1FRlJBTUVfRVFVQUwiLCJ2YWx1ZSI6IkRpZXNlcyBKYWhyIiwia2V5IjoiUkVMPUFESlVTVEVEO1VOSVQ9WUVBUiIsImNvbnRlbnR0eXBlIjoiREFURSJ9XX0%3D&axes=conversionRate&grouping=AB_KEYWORD_ENTRYID_KEYID%2C%23EXTENSION.Month.Month%23NUMBER</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod index afcbeee47f90b46c036d3b0a22e5a903640b6dd7..4481932076af4ee1851c16be69a4c154f4455e83 100644 --- a/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod +++ b/neonView/SalesprojectEdit_view/SalesprojectEdit_view.aod @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectEdit_view</name> - <title>Salesproject</title> + <title>Sales Project</title> <majorModelMode>DISTRIBUTED</majorModelMode> <icon>VAADIN:FILTER</icon> <quickEntry v="6" /> diff --git a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod index c055908d5269a0ba8e895e831523b86782eda5a0..6a613d6f1d48c3c725635e204ddbdf21dbcdce35 100644 --- a/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod +++ b/neonView/SalesprojectFilter_view/SalesprojectFilter_view.aod @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>AllSalesprojectDashlet</name> - <title>Salesprojects</title> + <title>Sales Projects</title> <description>Show all salesprojects</description> <fragment>Salesproject/filter</fragment> <singleton v="true" /> @@ -25,7 +25,7 @@ </neonDashletConfiguration> <neonDashletConfiguration> <name>OpenSalesprojectsDashlet</name> - <title>Open salesprojects</title> + <title>Open Salesprojects</title> <description>Show open salesprojects</description> <fragment>Salesproject/filter?search=eyJ0eXBlIjoiZ3JvdXAiLCJvcGVyYXRvciI6IkFORCIsImNoaWxkcyI6W3sidHlwZSI6InJvdyIsIm5hbWUiOiJTVEFUVVMiLCJvcGVyYXRvciI6IkVRVUFMIiwidmFsdWUiOiJPZmZlbiIsImtleSI6IlNBTFBST0pTVEFUT1BFTiAgICAgICAgICAgICAgICAgICAgICIsImNvbnRlbnR0eXBlIjoiVEVYVCJ9XX0%253D</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod index 734f3f44872a286e5ef96bd6b0ca0cb6e4ce2a72..ef00bdc11ab18400b4c337c04b8282e0af7b4075 100644 --- a/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod +++ b/neonView/SalesprojectForecastDrawer_view/SalesprojectForecastDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectForecastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod index d222b3f65922dbbc72d07b5fbd006edaf3b70049..eb51c7978c5b83cf2c135d4f5b32258314100817 100644 --- a/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod +++ b/neonView/SalesprojectFurtherInfo_view/SalesprojectFurtherInfo_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectFurtherInfo_view</name> <title>Further informations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod index 9098e124f358def2d86451abbac946a00b6cd0aa..aa59a86526931e5d4dd148565544cbf8abb1da59 100644 --- a/neonView/SalesprojectMain_view/SalesprojectMain_view.aod +++ b/neonView/SalesprojectMain_view/SalesprojectMain_view.aod @@ -1,19 +1,14 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> <masterSlaveLayout> <name>layout</name> - <master>04b5a305-b2a6-481a-83a5-1d94bee08143</master> + <master>eaee3a77-a3d8-4f0c-969a-da232b0c9537</master> </masterSlaveLayout> </layout> <children> - <neonViewReference> - <name>04b5a305-b2a6-481a-83a5-1d94bee08143</name> - <entityField>#ENTITY</entityField> - <view>SalesprojectPreview_view</view> - </neonViewReference> <neonViewReference> <name>673a34c7-5781-4c72-b0c8-944f1e5de9c6</name> <entityField>#ENTITY</entityField> @@ -69,5 +64,10 @@ <entityField>LogHistories</entityField> <view>LogHistoryFilter_view</view> </neonViewReference> + <neonViewReference> + <name>eaee3a77-a3d8-4f0c-969a-da232b0c9537</name> + <entityField>#ENTITY</entityField> + <view>SalesprojectPreview_view</view> + </neonViewReference> </children> </neonView> diff --git a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod b/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod index 98ba3483820636c06b23c3d811f64035ae0143c3..f66c853a872bfe29fb2773fc4ab8b65afc62faaa 100644 --- a/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod +++ b/neonView/SalesprojectMemberActivity_view/SalesprojectMemberActivity_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMemberActivity_view</name> <title>Project</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod index 2d7a4e08733c7f80c86a9ccc230bf382dfd1f231..8902d3ad1159832dc955e0d0bcb6026ac5fbb30e 100644 --- a/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod +++ b/neonView/SalesprojectMilestoneChartPhase_view/SalesprojectMilestoneChartPhase_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneChartPhase_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod index 504c39d8affce88311959a90641cb9caf6572156..6509031c9d4a4679a223793017b98a8738421f3a 100644 --- a/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod +++ b/neonView/SalesprojectMilestoneChartState_view/SalesprojectMilestoneChartState_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneChartState_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod index 178eb3816ff68e66731ce8faa605c31de9295f53..ab5a53fc87ece63bfae6f35cfdfcd5feab9e09e8 100644 --- a/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod +++ b/neonView/SalesprojectMilestoneInfo_view/SalesprojectMilestoneInfo_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneInfo_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod index 91f395b0f3c43bdd0ebfe9286f8716dbbba1b49e..0d8d9846cb0a1f542382e7b0a12d167343614d80 100644 --- a/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod +++ b/neonView/SalesprojectMilestoneSource_view/SalesprojectMilestoneSource_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestoneSource_view</name> <title>Occurrences</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod index 990d8b1506642f35cb21cbf2d441417a1fdefcc9..94e96382d7df7b9abe57c38ede0122cdf84eb4cb 100644 --- a/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod +++ b/neonView/SalesprojectMilestone_view/SalesprojectMilestone_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMilestone_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod index 898af789d603f74dcafa0f8fa4937dc8ceeafb2f..4e60e5354ec052d79548231412552b16666b172b 100644 --- a/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod +++ b/neonView/SalesprojectMultiEdit_view/SalesprojectMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod index 3423f5ee4f8b7bf6a08760be462a70e5d493c36b..80f3892c0d5b0f8d80ecbb03c6a68a36ad0c70bb 100644 --- a/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod +++ b/neonView/SalesprojectOfferForecastChart_view/SalesprojectOfferForecastChart_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOfferForecastChart_view</name> <title>Forecast</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod index 2136aaa7a4b41cb8fe1dba81d552181f68c34498..417bad86b86fd87bc15e89b4b188cfef01dba944 100644 --- a/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod +++ b/neonView/SalesprojectOfferForecast_view/SalesprojectOfferForecast_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOfferForecast_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod index 9a84bbb876ca23e4febca4440f2caaddaf6c263b..0485dce3b2893fefcff1a71c4e844df640faafef 100644 --- a/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod +++ b/neonView/SalesprojectOverview_view/SalesprojectOverview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectOverview_view</name> <title>Overview</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod index 4d42cd968e9def7411f919c6ffd7bf9ef8412832..eef84fe84ee45c0c49d1525652b53d27a72e3acb 100644 --- a/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod +++ b/neonView/SalesprojectPhaseStep_view/SalesprojectPhaseStep_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPhaseStep_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod index 108a0a83781c41cb6fb918c83c504547cd29f3ed..b00f3193429bf48db4d1b872bac8f9fe3dfeb0f3 100644 --- a/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod +++ b/neonView/SalesprojectPhase_view/SalesprojectPhase_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPhase_view</name> <title>Phase</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod index fcabc60c03fecf7634d1b6317d0fba64e5e7b11c..18e8b14dc7b017b2c4fdfb3652ec0a04ff46993c 100644 --- a/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod +++ b/neonView/SalesprojectPreview_view/SalesprojectPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> @@ -73,6 +73,10 @@ <name>bf7ecf7a-3d7f-4ec8-867a-c10ced346343</name> <entityField>TIMETRACKINGSUM</entityField> </entityFieldLink> + <entityFieldLink> + <name>9379bf8c-32a3-4255-92db-5336e9b2c948</name> + <entityField>MST_TEAM_ID</entityField> + </entityFieldLink> </fields> </genericViewTemplate> <genericViewTemplate> diff --git a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod index d56d4278c12fe6fee75cb02baca95041ecd617f9..b67ff0f9c15d416e4218167b42334e028067034d 100644 --- a/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod +++ b/neonView/SalesprojectScoreCard_view/SalesprojectScoreCard_view.aod @@ -1,11 +1,11 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectScoreCard_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> <neonDashletConfiguration> <name>KeyFigures</name> - <title>Key figures</title> + <title>Key Figures</title> <description>Most important salse key figures</description> <fragment>SalesprojectAnalyses/full</fragment> <singleton v="true" /> diff --git a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod index 7bdd751a12baaa39512875c500cbaf49e5247b50..abcf6c15c2cf73f3b534325404064d78cda80142 100644 --- a/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod +++ b/neonView/SalesprojectSourceDrawer_view/SalesprojectSourceDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod index 056fcc4af211527fda469af4fa6ae96e8a8abdd9..8eae1eea4db9a8177d89abd1d09ff435440f5dd2 100644 --- a/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod +++ b/neonView/SalesprojectSourceEdit_view/SalesprojectSourceEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod index ca41ad24d87b50d8d5ab56b98bc517506176fc93..1573062e0f5267f09a2ea942104d50214b42b571 100644 --- a/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod +++ b/neonView/SalesprojectSourceFilter_view/SalesprojectSourceFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod index b71758441e628d82806f8c5df2622c71f7d3fbbf..e95fd39683b473ea306e83bf882772047304de6d 100644 --- a/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod +++ b/neonView/SalesprojectSourcePreview_view/SalesprojectSourcePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalesprojectSourcePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SalutationEdit_view/SalutationEdit_view.aod b/neonView/SalutationEdit_view/SalutationEdit_view.aod index 3179d62093fcc07b1f389b13d5cb250ba2706d28..3b05b5cf8a19bc82bfc88167e24b5e83c9f39754 100644 --- a/neonView/SalutationEdit_view/SalutationEdit_view.aod +++ b/neonView/SalutationEdit_view/SalutationEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalutationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SalutationFilter_view/SalutationFilter_view.aod b/neonView/SalutationFilter_view/SalutationFilter_view.aod index d424e3369026a46a995b7a418cbf838ac36568c2..97206dab2459f0e9c92a37ddd5543dd8da87d729 100644 --- a/neonView/SalutationFilter_view/SalutationFilter_view.aod +++ b/neonView/SalutationFilter_view/SalutationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SalutationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod index cc896e3f349b75903b76419669dc8a6114b1dbd8..7e51a80a470e653c2f6c30c8dd65ea8870f92643 100644 --- a/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod +++ b/neonView/SerialLetterAddRecipientsEdit_view/SerialLetterAddRecipientsEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterAddRecipientsEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod index f5d1223b1ab523e83dc460aa673a453ea907aeed..4ffcf6004ca765546cbbf164895c9977e6f29323 100644 --- a/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod +++ b/neonView/SerialLetterEdit_view/SerialLetterEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod index b95fda0d5aa82fbe89860b1c2df7197bdfa39a30..45ba687a677384da11a8a7434ae28991ecd293c9 100644 --- a/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod +++ b/neonView/SerialLetterFilter_view/SerialLetterFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod index 1c9cdf0b094bc41c4fc264dd198c2ac56591c065..2c7a25adb74fd3598f77d1590f572caf8739702e 100644 --- a/neonView/SerialLetterMain_view/SerialLetterMain_view.aod +++ b/neonView/SerialLetterMain_view/SerialLetterMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod index 14abcef6de4adcdc3e866f711d2b2df2d6d9a7af..38949d8ec56ee5dcb6c082d3897784297e63820a 100644 --- a/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod +++ b/neonView/SerialLetterPreview_view/SerialLetterPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SerialLetterPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockCount_view/StockCount_view.aod b/neonView/StockCount_view/StockCount_view.aod index 20dd00eaeeb153506498a266e54d8e63495a4c0c..ace71cf33101c853f465866cc8df870d33056852 100644 --- a/neonView/StockCount_view/StockCount_view.aod +++ b/neonView/StockCount_view/StockCount_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockCount_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockEdit_view/StockEdit_view.aod b/neonView/StockEdit_view/StockEdit_view.aod index d82707019442985242b16ff9a393312e2b45493f..227ab14331f8f89ab39b2ebdf5c5cfc7d77268f0 100644 --- a/neonView/StockEdit_view/StockEdit_view.aod +++ b/neonView/StockEdit_view/StockEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/StockFilter_view/StockFilter_view.aod b/neonView/StockFilter_view/StockFilter_view.aod index cad57413e4d53e58c0299304425d869b393aaa75..f5c09966799986e6fcc8262addf213c9675e6274 100644 --- a/neonView/StockFilter_view/StockFilter_view.aod +++ b/neonView/StockFilter_view/StockFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>StockFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod index aa9a3396de0262e9f69752d5a73aded63596ce0f..b78c65c1ded5d7eff3dd736a8699d3df1006e274 100644 --- a/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod +++ b/neonView/SupportTicketEdit_view/SupportTicketEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod index 6dc1c376ae6f99ba2a9c57624194e4b709e1365a..97892017ec83aa58850ddf21f0eee546f860d714 100644 --- a/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod +++ b/neonView/SupportTicketFilter_view/SupportTicketFilter_view.aod @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>mytickets</name> - <title>My tickets</title> + <title>My Tickets</title> <description>Show tickets where I am the editor</description> <fragment>SupportTicket/filter</fragment> <singleton v="true" /> diff --git a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod index 529d000dc9df0098eb2e4ade7ef43fb483b06d04..8950edb1d40a24bda53be12a73d2b0091e7204aa 100644 --- a/neonView/SupportTicketMain_view/SupportTicketMain_view.aod +++ b/neonView/SupportTicketMain_view/SupportTicketMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod index 48b48a2a48f8e708592ca947d409de64ffa6243f..2495b76bd10974dd0de7b545a412cb688445c65a 100644 --- a/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod +++ b/neonView/SupportTicketPreview_view/SupportTicketPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>SupportTicketPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskEdit_view/TaskEdit_view.aod b/neonView/TaskEdit_view/TaskEdit_view.aod index c71ca1b6b43b2522f704cd4bacf0e368e715fa34..c5c8e8e10919f377c08d3def4936a5f43df4b7bd 100644 --- a/neonView/TaskEdit_view/TaskEdit_view.aod +++ b/neonView/TaskEdit_view/TaskEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskFilter_view/TaskFilter_view.aod b/neonView/TaskFilter_view/TaskFilter_view.aod index e42baf0ab3dbc846a09889295e65fd2bf9e2df07..51c579c8f6067b0201dd1a6a38aa1dbae5def381 100644 --- a/neonView/TaskFilter_view/TaskFilter_view.aod +++ b/neonView/TaskFilter_view/TaskFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> @@ -16,7 +16,7 @@ <categories> <neonDashletCategory> <name>contactmanagement</name> - <title>Contactmanagement</title> + <title>Contact Management</title> </neonDashletCategory> </categories> <parameters> diff --git a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod index f9e1e3aa8a206dd68d46341407e4d7091065f3e3..aff539498effc88b6aa7e7df2c6d06ff9fa79c3d 100644 --- a/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod +++ b/neonView/TaskLinkFilter_view/TaskLinkFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod index 04ab701524e9f56f8011af05f37ed687724ae34d..01b6cf513e96b3833d133cc74e9a11518c6ae97c 100644 --- a/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod +++ b/neonView/TaskLinkMultiEdit_view/TaskLinkMultiEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkMultiEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod index 4427da0dd67d159beda9dabc88707711ad649aea..2cdff7d706296f0c3b6693743e684be1540d51b2 100644 --- a/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod +++ b/neonView/TaskLinkPreviewList_view/TaskLinkPreviewList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkPreviewList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod index 14b9249b2862a6f1e2b60d7f229a4b7ae5003e8c..843b7a8efa97cb8796d0079499631f77132e47f4 100644 --- a/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod +++ b/neonView/TaskLinkPreview_view/TaskLinkPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskLinkPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskMain_view/TaskMain_view.aod b/neonView/TaskMain_view/TaskMain_view.aod index ad38b461f3fc3cf9f54cacc711137d64e6c816f7..a2521203f37e786f6ea4daf6947729759df6debf 100644 --- a/neonView/TaskMain_view/TaskMain_view.aod +++ b/neonView/TaskMain_view/TaskMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TaskPreview_view/TaskPreview_view.aod b/neonView/TaskPreview_view/TaskPreview_view.aod index 82ac185b0f1e9de45ce3d8e6fcd7ce38489c488e..57ad1bd7618b2e123264c4ddd9f5a04678709078 100644 --- a/neonView/TaskPreview_view/TaskPreview_view.aod +++ b/neonView/TaskPreview_view/TaskPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod index 17633107ed9899637cc94a15779f8aecdf3f2a43..fe8b4ddcb0bd914b31d1191913d0733a9b58ef60 100644 --- a/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod +++ b/neonView/TimetrackingAnalysesDrawer_view/TimetrackingAnalysesDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingAnalysesDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod index 2ea1d75c892375e2370252cfd070543b4f9386c9..eeddd0f26c96522a0632d0632a7b611ba1d2f966 100644 --- a/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod +++ b/neonView/TimetrackingAnalyses_view/TimetrackingAnalyses_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingAnalyses_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod index 228cf5d6e7ed661a7bdf84fb2f01f6b1c6088ea9..b6bead1d562ef3518abab668271b3c238fcf9042 100644 --- a/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod +++ b/neonView/TimetrackingDrawer_view/TimetrackingDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod index 231020b4962ac1c21622fe25641624037f7c1caa..fda8ae851dbd856d8437517806b3eabd2a84fe46 100644 --- a/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod +++ b/neonView/TimetrackingEdit_view/TimetrackingEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod index c0befff541865182bae70f41c7ab2914b5fc9982..6339c82f7e9e566f2080ca52ae1199e61496f597 100644 --- a/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod +++ b/neonView/TimetrackingFilterAnalyses/TimetrackingFilterAnalyses.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingFilterAnalyses</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod index c05c5db874a747d5fb6c8e5803fafd6a5aea9c8a..6957ae22e8325b2bcd5e28c08088821c02793e0a 100644 --- a/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod +++ b/neonView/TimetrackingFilter_view/TimetrackingFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingFilter_view</name> <title>Timetracking</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod index 1a76cbc61d1c1efc7b2d69f8775969944940d270..42f42a0e537aab4f104f9873c76bb7b69f7de2a1 100644 --- a/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod +++ b/neonView/TimetrackingPreview_view/TimetrackingPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod index 1efd3641c31f865130d06335522cd7f0c1c24e7b..c372f639c0327d404c9e839f4e9ea08e4e1634f3 100644 --- a/neonView/TimetrackingScore_view/TimetrackingScore_view.aod +++ b/neonView/TimetrackingScore_view/TimetrackingScore_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TimetrackingScore_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod index 602bf1fed837fbcd4c6261374cc0e939e716664c..7a404cd983357c2f88c453198178df2ee7e3fb9d 100644 --- a/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod +++ b/neonView/TurnoverChartForcastDrawer_view/TurnoverChartForcastDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChartForcastDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod index 962a05e05a00d3a8e3b14c9c13155b0e291e4191..87500b99d683f8d0001384ba295d1a366e199ad3 100644 --- a/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod +++ b/neonView/TurnoverChartForecast_view/TurnoverChartForecast_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChartForecast_view</name> <title>Forecast</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TurnoverChart_view/TurnoverChart_view.aod b/neonView/TurnoverChart_view/TurnoverChart_view.aod index 09c915ae244fe4d5a1f755ef287ef850ef2cd3c4..cbee81a152bb6881933cb9e535b541d9591ca5be 100644 --- a/neonView/TurnoverChart_view/TurnoverChart_view.aod +++ b/neonView/TurnoverChart_view/TurnoverChart_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverChart_view</name> <title></title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TurnoverTree_view/TurnoverTree_view.aod b/neonView/TurnoverTree_view/TurnoverTree_view.aod index b8e357571efbdf7dba180bb5021456caba0582d7..baa0832aab033a184b4618ca2531c6fb85187447 100644 --- a/neonView/TurnoverTree_view/TurnoverTree_view.aod +++ b/neonView/TurnoverTree_view/TurnoverTree_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TurnoverTree_view</name> <title>Tree</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod index 167eb2982e309c2928a18e105d42ba7f84a93c40..7addad6331caf5831e8c6f491b1ff5e968c1faf5 100644 --- a/neonView/TwitterTimeline_view/TwitterTimeline_view.aod +++ b/neonView/TwitterTimeline_view/TwitterTimeline_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>TwitterTimeline_view</name> <title>Twitter</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod index 8072435ed1e7c2dd82d0177d949b9d1fea218418..8c66fbfacdd6d28d6d0ff3a1c92f57018f1a8f99 100644 --- a/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod +++ b/neonView/UniversalFileProcessorDropzone_view/UniversalFileProcessorDropzone_view.aod @@ -1,11 +1,11 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UniversalFileProcessorDropzone_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> <neonDashletConfiguration> <name>MailDropzone</name> - <title>import mails</title> + <title>Import Mails</title> <description>Drop area for creating activities from mails</description> <fragment>UniversalFileProcessor/dropzone</fragment> <preview></preview> diff --git a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod index 6b4b8b73154e60819b752b795acd9e93de7f23b5..819837d79cba717b39de586398655aa11e5719ee 100644 --- a/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod +++ b/neonView/UnlinkedMailFilter_view/UnlinkedMailFilter_view.aod @@ -1,11 +1,11 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <dashletConfigurations> <neonDashletConfiguration> <name>allUnlinkedMailsDashlet</name> - <title>All unlinked mails</title> + <title>All Unlinked Mails</title> <description>All mails that could not automatically linked are displayed here</description> <fragment>UnlinkedMail/filter</fragment> <icon>VAADIN:AT</icon> diff --git a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod index 6be9cc5af6fe0afb70008e328e9c1c371239ac21..e6af4ffd56dae488afc4aa61c46401ab8c0d9e18 100644 --- a/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod +++ b/neonView/UnlinkedMailMappingLinkList_view/UnlinkedMailMappingLinkList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailMappingLinkList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod index dec9ecc2091d723dd1c8cc91780346fe776c9b53..c7ba9b2d1e72175cbaa81845e87210e0f0925f7b 100644 --- a/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod +++ b/neonView/UnlinkedMailMappingWrapperMapping_view/UnlinkedMailMappingWrapperMapping_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UnlinkedMailMappingWrapperMapping_view</name> <title>Link e-mail addresses to contacts</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod index 88b815cc8abf6bce8158d4c51a19641f4f8dfb38..f49695009f37880d39cc452bc751d2f4d8e8093a 100644 --- a/neonView/Userhelp_FilterView/Userhelp_FilterView.aod +++ b/neonView/Userhelp_FilterView/Userhelp_FilterView.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>Userhelp_FilterView</name> <title>Userhelp Ressources</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod index 4a500fdf7246e1762edf965f7bb31092bfd8dd13..acf9e28696c70df383af74e953dbacfcc380e5be 100644 --- a/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod +++ b/neonView/UsersettingsEdit_view/UsersettingsEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>UsersettingsEdit_view</name> <title>Settings</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod index f4bb8a7d21fd3c6fb354e0a481161cc9ea5b7d59..f03e6f119f02094a0d9da7001fbd23b2fe6bb52d 100644 --- a/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod +++ b/neonView/VisitPlanEmployeeWeekEdit_view/VisitPlanEmployeeWeekEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod index 6de254467a3bcc67474914322890efc32e456afb..bcbed30d9f5fe37b6f0a77b8831fd8d3a854f9dc 100644 --- a/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod +++ b/neonView/VisitPlanEmployeeWeekFilter_view/VisitPlanEmployeeWeekFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> diff --git a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod index 6bd22ba2b15c5b858651e3df4a95f1b69100c5d1..efed26c73422fb753624709735744f7d9e9d9fd9 100644 --- a/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod +++ b/neonView/VisitPlanEmployeeWeekMain_view/VisitPlanEmployeeWeekMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod index ec7824e9dea6a39448816cd25514e31cd7b79504..4ecd6b51c19d3f68d1408be97dbdfbb9dd3e308b 100644 --- a/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod +++ b/neonView/VisitPlanEmployeeWeekPreview_view/VisitPlanEmployeeWeekPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEmployeeWeekPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod index 4a216530f8c322ab9d408cf5e305e0423d473f33..4538a67ca213ef3211f832ad3d82c9471c1f3b19 100644 --- a/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod +++ b/neonView/VisitPlanEntryEdit_view/VisitPlanEntryEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEntryEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod index 4233a41959165dbc19972cf740ef8fab1fdbece6..b514c136189ee96998f977ad5b170060dee690b0 100644 --- a/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod +++ b/neonView/VisitPlanEntryFilter_view/VisitPlanEntryFilter_view.aod @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitPlanEntryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="false" /> <dashletConfigurations> <neonDashletConfiguration> <name>currentWeek</name> - <title>my visit planning</title> + <title>My Visit Planning</title> <description>show visit planning of the week</description> <fragment>VisitPlanEntry/filter</fragment> <singleton v="true" /> diff --git a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod index d58550498e10e16ee96233d559788ae0c579063b..1c9a8ce3e804c6a74cf5734705451f6e1b4de277 100644 --- a/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod +++ b/neonView/VisitRecommendationEdit_view/VisitRecommendationEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitRecommendationEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod index c841039215a5b2ef2c4b23d68650e385f56a3bcf..73cb8599d027fdde37a5abd28a12b7baef17c8d1 100644 --- a/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod +++ b/neonView/VisitRecommendationFilter_view/VisitRecommendationFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>VisitRecommendationFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod index 2cc729ddd7c65cdf2f1965a277e0c690b856fd7a..397400ecf304340d32603fa3a7097fdd2b3a904c 100644 --- a/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod +++ b/neonView/WorkflowDefinitionDiagram_view/WorkflowDefinitionDiagram_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionDiagram_view</name> <title>Diagram</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod index d0aaeebbaa361abc7c40f805605710e08afe8167..aaaeeeef4d9a1dbf72aa1cf6da8d3ce28c7b59e8 100644 --- a/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod +++ b/neonView/WorkflowDefinitionEdit_view/WorkflowDefinitionEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod index 41ffef96290756599469bfd2da5878612c27a6d2..1dbcd14a3d241b0d3e04f5a75c7afc4fc452398b 100644 --- a/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod +++ b/neonView/WorkflowDefinitionFilter_view/WorkflowDefinitionFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod index 29de742a06ef3ab1002a499e8505752240873397..dcb755770f402a7c1f797babaa533c6cc1abdfb1 100644 --- a/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod +++ b/neonView/WorkflowDefinitionMain_view/WorkflowDefinitionMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod index 7f955c5616034ee3bc71ca328f071c2c5857c6cb..1a6d0acf0cfaace809129ad4cac82ca4386769b8 100644 --- a/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod +++ b/neonView/WorkflowDefinitionPreview_view/WorkflowDefinitionPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowDefinitionPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod index 98f6b6921707a9308b2a03fe386a4d951cf77197..3098a8033b510c3a4f8eb898338adfe5794742f8 100644 --- a/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod +++ b/neonView/WorkflowInstanceDiagram_view/WorkflowInstanceDiagram_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceDiagram_view</name> <title>Diagram</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod index 0d3e0c89b95fed64001f0f0b1f4314bb85eae42e..0f8aee6fc8c9f922bd2e48f634267fe81ccccb8d 100644 --- a/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod +++ b/neonView/WorkflowInstanceEdit_view/WorkflowInstanceEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod index 4a851422779112622824df0992f1cea32e752166..fb3eb00201464f3daea0036102070b5f728583a1 100644 --- a/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod +++ b/neonView/WorkflowInstanceFilter_view/WorkflowInstanceFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod index ff969c13fd5106db0abe14c18565a1da7b8d87d6..b823e3040909d66c3acb0bfa839c6f27769c359e 100644 --- a/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod +++ b/neonView/WorkflowInstanceHistoryFilter_view/WorkflowInstanceHistoryFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceHistoryFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod index 0511dbbb5dc37a9eea053915860b5ae314943c86..238558d5d61b83adcc93562fe393831ce39e43af 100644 --- a/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod +++ b/neonView/WorkflowInstanceMain_view/WorkflowInstanceMain_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceMain_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod index 6e02ae567d135a0da41e10c0d71ccdd96ccf1278..dfe0c117d85e19b1e34051c9df4150b8cfce9e67 100644 --- a/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod +++ b/neonView/WorkflowInstancePreview_view/WorkflowInstancePreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstancePreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod index 9755c12f76bf1d83ae8a510e83787ce387973138..29da6b3f7d6512f35153cdcfe3eab89dd672d20c 100644 --- a/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod +++ b/neonView/WorkflowInstanceTasks_view/WorkflowInstanceTasks_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowInstanceTasks_view</name> <title>Tasks</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod index 8445a151ff66a24ce57c908ad7f86bdd1d3094dd..db773e993fdb156c48c225f17ecff726183f917e 100644 --- a/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod +++ b/neonView/WorkflowLauncherEdit_view/WorkflowLauncherEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowLauncherEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod index b03c3813ded7ad328d49edd4da3f22ecd3656dac..9d0b6b9271e3504cc03625c27710f4e45d8672fe 100644 --- a/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod +++ b/neonView/WorkflowModelEdit_view/WorkflowModelEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowModelEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod index 051bb98fe84d47bcf0d18813b114e93eedf42076..cabc52d8e4857047e0f6a5fd8a71af4f31776e54 100644 --- a/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod +++ b/neonView/WorkflowModelLookup_view/WorkflowModelLookup_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowModelLookup_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod index 43ae59380522779a39c44e344ba411241ee7fe88..443eeb0d5e4cadadac035b615a124d7790133bcc 100644 --- a/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod +++ b/neonView/WorkflowSignalEdit_view/WorkflowSignalEdit_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalEdit_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod index 3bfbce1fac88a64f8fb7643d021bd282331e970a..e0fe81e1c7622739a80d38d105f284b76a39fc49 100644 --- a/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod +++ b/neonView/WorkflowSignalFilter_view/WorkflowSignalFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod index fa81d16b1e25cdab434ad9aa1bd942e5fad4792c..1ab2d17c6529a917608707c3ee5623542d3e5231 100644 --- a/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod +++ b/neonView/WorkflowSignalPreview_view/WorkflowSignalPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowSignalPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod index cdac1faccf7f16acf27044fd57f434dea9502e3c..6bfaae55e6cc43112696ed07c5bdff43f7e9ef10 100644 --- a/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod +++ b/neonView/WorkflowStartConfigFilter_view/WorkflowStartConfigFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowStartConfigFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod index 7d975c492d0c8cc63d1e3bf227bc9d7897f0c539..5f2d8f1a150b19668684fa27ba246f08a2b945cd 100644 --- a/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod +++ b/neonView/WorkflowTaskDrawer_view/WorkflowTaskDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod index e767b57ecab4a5860104fa431687defd3a610220..2165a6d4beccefa789150e0f90f1892512098b57 100644 --- a/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod +++ b/neonView/WorkflowTaskFilter_view/WorkflowTaskFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> diff --git a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod index f2147948b2e3f2231d986577e6c79958260698bc..f14afb6e132c8dd3e14539e63182acf9c1e2ec0a 100644 --- a/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod +++ b/neonView/WorkflowTaskFinishedDrawer_view/WorkflowTaskFinishedDrawer_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFinishedDrawer_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod index 7cb5d6287d7c38fab8267ab2c47449d60d2af24b..babb19cdf098d15cf67560f94e2e79d7f325365e 100644 --- a/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod +++ b/neonView/WorkflowTaskFinishedList_view/WorkflowTaskFinishedList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskFinishedList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod index e25ada40292a5745c12a15e959f0f61700355c2b..956ea0c55e698c71f45e9942bc3f96692b455037 100644 --- a/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod +++ b/neonView/WorkflowTaskForm_view/WorkflowTaskForm_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskForm_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod index f58afc252c8715a699ecaa2adc131548ab18fc21..3f84a4ee80022dafeaf33196618b5ab328183672 100644 --- a/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod +++ b/neonView/WorkflowTaskList_view/WorkflowTaskList_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskList_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod index 9e0e3392f9574849928895ee78ac1cdea5d68aa7..1c914a6a6fe83cf0a129f61943fa53b5620ac678 100644 --- a/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod +++ b/neonView/WorkflowTaskOwn_view/WorkflowTaskOwn_view.aod @@ -1,12 +1,12 @@ <?xml version="1.0" encoding="UTF-8"?> -<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskOwn_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <filterable v="true" /> <dashletConfigurations> <neonDashletConfiguration> <name>OwnWorkflowTasks</name> - <title>Own workflow tasks</title> + <title>My Workflow Tasks</title> <description>My workflow tasks</description> <fragment>WorkflowTask/filter</fragment> <icon>VAADIN:CHECK_SQUARE_O</icon> diff --git a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod index bf61df8ebf51aed671e004a5ee13daa2663b5512..d6e7dc40366d63d5097d3335b64559b9c9afb87e 100644 --- a/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod +++ b/neonView/WorkflowTaskPreview_view/WorkflowTaskPreview_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowTaskPreview_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <size>SMALL</size> diff --git a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod index 6de8d6e623ef5a4ee8afe8d150bf74c01b486bcd..be4b8f4662f32ef8902873427a8573176c1001eb 100644 --- a/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod +++ b/neonView/WorkflowVariableValueFilter_view/WorkflowVariableValueFilter_view.aod @@ -1,5 +1,5 @@ <?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"> +<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.7"> <name>WorkflowVariableValueFilter_view</name> <majorModelMode>DISTRIBUTED</majorModelMode> <layout> diff --git a/others/genJsdoc.bat b/others/genJsdoc.bat deleted file mode 100644 index db0775bbbb307e47f3b77efabb48da3851945d61..0000000000000000000000000000000000000000 --- a/others/genJsdoc.bat +++ /dev/null @@ -1,3 +0,0 @@ -SET mypath=%~dp0 - -jsdoc -r %mypath:~0,-1%\..\process -d %mypath:~0,-1%\jsdocOut \ No newline at end of file diff --git a/others/guide/CodingGuidelines.adoc b/others/guide/CodingGuidelines.adoc deleted file mode 100644 index 7fbd1bf92c5ecca6d93d8ffe076b933618cb861b..0000000000000000000000000000000000000000 --- a/others/guide/CodingGuidelines.adoc +++ /dev/null @@ -1,8 +0,0 @@ -= Sample Document -Doc Writer <doc.writer@asciidoc.org>; John Smith <john.smith@asciidoc.org> -v1.0, 2013-05-20: First draft -:title: Sample Document -:tags: [document, example] - - -Preamble... diff --git a/others/guide/CreateJsDoc.adoc b/others/guide/CreateJsDoc.adoc deleted file mode 100644 index d428b85c65aabfc70a1247a8a3a2e443811d571d..0000000000000000000000000000000000000000 --- a/others/guide/CreateJsDoc.adoc +++ /dev/null @@ -1,40 +0,0 @@ -How to build js-doc out of the lib-comments -=========================================== -:toc2: left -:numbered: - -== installation == -1. Nodejs: -https://nodejs.org/en/ -LTS-version (aktuell 10.15.0) - -download and install - -2. install jsdoc - -open CMD -[source] ----- -npm install -g jsdoc ----- - -== generate jsdoc == - -=== manually === -1. open CMD -2. navigate into the project-folder. e.g. -[source] ----- -C: -cd C:\Users\M.Mustermann\Documents\AditoProjects\xRM-Basic5.1 ----- -3. run command -[source] ----- -jsdoc -r process -d others\jsdocOut ----- -4. Open others\jsdocOut\index.html with a webbrowser - -=== with script in designer (Windows) === -1. In the Designer right click on others\genJsdoc.bat -> "Open in System" -2. Right click on others\jsdocOut\index.html -> "View" \ No newline at end of file diff --git a/others/guide/Loghistory.adoc b/others/guide/Loghistory.adoc deleted file mode 100644 index 6a2f284bf89acfae821ba92a33e572343952c9f3..0000000000000000000000000000000000000000 --- a/others/guide/Loghistory.adoc +++ /dev/null @@ -1,87 +0,0 @@ -configure Loghistory -==================== -:DATA_ALIAS: Data_alias -:EDITOR_ALIAS_DEFINITION: AliasDefinition-Editor - -== the concept == -//TODO: extend the concept description -Stoarge: Database-table: `AB_LOGHISTORY` - -Collecting Data: ----- -Audit -> process_audit -> Loghistory_lib: LogHistoryExecutor ----- - -Data is collected and pre-translated. Therefor only one Language can be applied for logging. -Because the loghistory is written via the auditing, only changes that are done with the proper Jdito-Methods will be logged. - -== prerequisites == - -Auditing has to be activated for all tables you want to log. - -.prerequisites of enabling Audit in general -* Auditing has to be enabled in your Server -* Auditing has to be enabled for your alias (default: +{DATA_ALIAS}+) -* Tables that shall be logged need some configs in the _{EDITOR_ALIAS_DEFINITION}_ -** property `idColumn` has to be set (a primary key is needed therefore) -** `auditMode` has to be set -Standard, -CLOB, or -BLOB (chosse the one you really need) - - -== activate writing into loghistory == - -Assuming that the - -* required database-tables exist -* JDito-processes already exist -* audit has been activated in general - -you are ready to configure _which_ column shall be logged and _how_. - -=== configure columns for logging === - -There are several properties (custom and pre-exisiting) that can be set for configuring the logging: - -.configuration options per column -[options="header"] -|======= -|property |purpose |property-type -|+title+ |text that is used to display which column has been modified|pre-exisiting -|+log+ |defines whether a column needs to be logged or not; not exisisting equals `false` |custom: Booelan -|+tableRef+ |references table for automatically grouping data. This is usefull for ForeignKeys, e.g. a +OFFERITEM.OFFER_ID+ column could have a +tableRef+ "OFFER"|custom: String -|+primaryKey+ |this is not only used to enable auditing generally, but it's used to resolve +tableRef+ values correctly|pre-exisiting -|+keyword+ |defines a keyword contianer that should be used to transform a +KEYID+ into a display value|custom: String -|+autoMapTrueFalse4Log+ |if `true` the loghistory-executor tries to automatically translate a value into a "yes"/"no"-display value|custom: Booelan -|+translate4Log+ |defines a process to transform a technical value into a display value |custom: JDito -|======= - -+translate4Log+ is a mighty possibility to translate a ID-value into a displayvalue. However, you should keep several important things in mind: - -* translate text if necessary via the locale-parameter -* the process is called each time a change to that column is applied - keep it fast and simple - -.translate4Log example (skip imports for better readability) -[source,javascript] ----- -var params = Translate4LogParams.load();// <1> -var countryName = CountryUtils.getLatinNameByIso2(params.value, params.locale); // <2> -result.string(countryName);// <3> ----- -<1> load the parameters in a easy and fail-proof way -<2> locale is passed to the resolving function and in that function a translation is applied -<3> always return a string - -=== configure a consumer for retrieving the loghistory === - -.Exampel for the +tablenames_param+ process ----- -import("system.vars"); -import("system.result"); -import("Context_lib"); - -var res = []; -res.push({id: vars.get("$field.CONTACTID"), tableNames: ["CONTACT", "COMMUNICATION", "ADDRESS", "AB_ATTRIBUTERELATION"]}); -res.push({id: vars.get("$field.PERSONID"), tableNames: ["PERSON"]}); - -res = JSON.stringify(res);//currently only strings can be passed as param -result.object(res); ----- \ No newline at end of file diff --git a/others/guide/PersonOrganisationContact.adoc b/others/guide/PersonOrganisationContact.adoc deleted file mode 100644 index 7d7a1b33f971b107ef28b8f4a6a5885a9e10a3f5..0000000000000000000000000000000000000000 --- a/others/guide/PersonOrganisationContact.adoc +++ /dev/null @@ -1,39 +0,0 @@ -Person, Organisation, Contact -============================= -:toc2: left -:numbered: - -== Differences to old Adito == - -The old Adito basic had: - -- Pers -- Org -- Relation - -They are not gone, just renamed: - -- Pers = Person -- Org = Organisation -- Relation = Contact - -TODO: doku erweitern -erson, Organisation, Contact -=========================================== -:toc2: left -:numbered: - -== Differences to old Adito == - -The old Adito basic had: - -- Pers -- Org -- Relation - -They are not gone, just renamed: - -- Pers = Person -- Org = Organisation -- Relation = Contact - diff --git a/others/guide/ProviderConsumerParameter.adoc b/others/guide/ProviderConsumerParameter.adoc deleted file mode 100644 index ee9ff59bc7d051dc069cd0ba1a409887036f8f8c..0000000000000000000000000000000000000000 --- a/others/guide/ProviderConsumerParameter.adoc +++ /dev/null @@ -1,92 +0,0 @@ -Provider - Consumer -=================== -:toc2: left -:numbered: - -=== Provider === -Is the old dfi. - -==== Purpose ==== -The provider provides access to an entity. -You can get data of another entity by connecting a consumer to a provider. - -==== Naming ==== -The names should provide information about *what the provider provides*. - -For example: -Communication_entity has 3 providers: - -- *AllCommunications* -- *EmailCommunications* -- *PhoneCommunications* - -If you connect to *AllCommunications* you get *all* communication types of a contact. -If you connect to *EmailCommunications* you get *only the Email* communication type of a contact. -If you connect to *PhoneCommunications* you get *only the Phone* communication type of a contact. - -*Important:* -*Do not always create a new provider when connecting a new entity. Maybe you can use an already existing provider.* -*Try to reuse providers if you need similar data for two dependencies* - -=== Consumer === -Is the old dfo. - -=== Purpose === -The Consumer *consumes* the data a provider provides. -It can be connected to a provider and fill the parameters of the provider. - -=== Naming === -Most of the time you get a list of "something" so you should call it the plural of what you get. - -Example: -Persons -Organisations - -If you have two Consumer to the same Entity, you should use speaking names. - -Example: -Documents (e.g. for all documents of a person) -MainDocuments (e.g. for only the main documents of a person) - -If you know you get only one row, you can use the singular. - -Example: -Person - -=== Parameter === -Parameters provide a way to tell a provider *what exactly you need*. - -==== Properties ==== -The most important properties are -code, exposed, triggerRecalculation and mandatory - -Parameters work with a fallback mechanism. -This means that if you set the code on the parameter directly then this is executed *only if you did not* provide the code on the parameter at the *provider* and/or *consumer*. -Likewise if you set the code on a parameter at the provider it will only be executed if a *consumer* which connects to this provider *has no code set* at the parameter. - -Here some examples for the *code* property: - -[options="header"] -|======================================================================================================================================================================================================================================================== -| Parameter | Provider | Consumer | Result | Notes -| default | default | default | Nothing executed | -| default | default | code set | Code from consumer executed | This is the mostly used scenario. -| default | code set | default | Code from provider executed | This is used if you need a default value for a parameter which is different on each provider. e.g. used by the Document_entity to determine if it should show main documents or not. -| code set | default | default | Code from parameter executed | -|======================================================================================================================================================================================================================================================== - -The checkbox-parameters can have *three* states: default, checked, unchecked. Default means the property is *gray* and the value from the previous instance is used. Checked and unchecked overwrite always the previous instance. - -The exposed property is a way to decide if a parameter should be visible by the next instance -Here some examples for the *exposed* property: - -[options="header"] -|======================================================================================================================================================== -| Parameter | Provider | Result | Notes -| default | default | NOT Exposed | because the default for exposed is: NOT exposed. -> the parameter won't be visible on the provider and consumer! -| set | set | Exposed | This means that the parameter can be set by the consumer. -| set | UNset | NOT Exposed | This will disable the parameter for one specific provider. -| set | default | Exposed | -|======================================================================================================================================================== - -*Note that there are currently (13.02.2019) some bugs and the handling of parameters with the default #PROVIDER may change.* \ No newline at end of file diff --git a/others/guide/TargetContext.adoc b/others/guide/TargetContext.adoc deleted file mode 100644 index 1d466a0da9c53953491cf301711f745d6d8478e4..0000000000000000000000000000000000000000 --- a/others/guide/TargetContext.adoc +++ /dev/null @@ -1,19 +0,0 @@ -Target Context -============== - -toc2: left -:numbered: - -== What? == -The target context is for forwarding the preview and the klick-action to another context. - -== Why? == -For example the ObjectRelation entity uses this feature to open the linked object directly. - -== Where? == -It is configured by two properties of the providers. - -* targetContextField -* targetIdField - -You can provide an entity-field for each of them which contains the contextId (currently the contextName 13.02.2019) and the rowId (UID) which should be used to open the preview or main view. \ No newline at end of file diff --git a/others/guide/how to write JDito code.adoc b/others/guide/how to write JDito code.adoc deleted file mode 100644 index 9dbbdb19d290d4cffad377c7a19ea1354a52d536..0000000000000000000000000000000000000000 --- a/others/guide/how to write JDito code.adoc +++ /dev/null @@ -1,261 +0,0 @@ -How to wirte JDito code -======================= -:toc2: left -:numbered: - -== basics == -* Keep everything english. Every title, caption, messages, comments, etc. should be english. Add german translation to the languages if necessary. -* in JavaScript-Strings use `"` instead of `'` - even if its only 1 character. `'` is for SQL (within JS-Strings) -* Parameters should start with p. - -== code structure == -=== vars and others (var, let) === -* avoid `let` as much as possible because you cannot debug these variables - -=== brackets === -* `{` are placed on a new line - -Example: -[source,javascript] ----- -for (i = 0, i < dataLen; i++) -{ - //code here -} - -myArray.forEach(function(pItem) -{ - // Do something -}); ----- - -=== loops === -nested loops should be defined with replicated indexer variables. -Therefore it's easy to see in which level of the counter you are. -Even better would be a good and describing name. - -Example: -[source,javascript] ----- -for (i = 0, i < dataLen; i++) -{ - for (ii = 0, ii < dataLen[i].length; ii++) - { - //code... - } -} - -for (row = 0, row < dataLen; row++) -{ - for (col = 0, col < dataLen[row].length; col++) - { - //code... - } -} ----- - - -== Functions - overview of different "types" == -This sections covers how to define different "types" of functions in libraries. - -=== by using static methods === -This will be mostly utility functions where there is no need to instantiate an object. You'll need this probably the most time. - --> Static object with static functions. - - -Definition: -[source,javascript] ----- -/** - * provides static methods for validation of communication data - * do not create an instance of this - * @static - * @class - */ -function CommValidationUtil(){}<1> - -/** - * returns a blueprint for validation extensions; these extensions are needed for validating comm data and can be passed to other functions - * @return {object} a object with properties that have a specific default value; normally you want to overwrite that value - */ -CommValidationUtil.getExtensionsBlueprint = function() <2> -{ - return { - countryCode: null - }; -} ----- -<1> the function-object that keeps everything together - this function should never be actually called (no direct call, no indirect call) -<2> an actual function that can be called - -And how to use it: -[source,javascript] ----- -import("Comm_lib"); - -var additionals = CommValidationUtil.getExtensionsBlueprint(); ----- - -=== by creating an object with functions === - -You may want to hold data and create objects where methods share that data. - -Here is an example for an object that can be created: -[source,javascript] ----- -/** - * object that provides featrues for a single keyword attribute; initalizes itself on creation with a specific keyword-attribute - * - * @param {String} pContainerName specifies the type of the keyword and therefore the list elements; - * e.g. "COUNTRY"; use an entry of the $KeywordRegistry here - * @param {String} pAttributeName the name of the keyword attribute that shall be initalized - * @param {String} [pDefault=undefined] the default value -> Does not throw an error, if default value exists. - * - * @class - */ -function KeywordAttribute(pContainerName, pAttributeName, pDefault) -{ - this.container = pContainerName; - this.attribute = pAttributeName; - this.defaultValue = pDefault; - - var keywordAttrData = newSelect("AB_KEYWORD_ATTRIBUTE.AB_KEYWORD_ATTRIBUTEID, AB_KEYWORD_ATTRIBUTE.KIND") - .from("AB_KEYWORD_ATTRIBUTE") - .where("AB_KEYWORD_ATTRIBUTE.CONTAINER", pContainerName) - .and("AB_KEYWORD_ATTRIBUTE.NAME", pAttributeName) - .arrayRow(); - - if (keywordAttrData.length > 0) - { - this.id = keywordAttrData[0]; - this.type = keywordAttrData[1]; - this.dbField = this.type.trim(); - } - else if(pDefault == undefined) - { - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); - } -} - -/** - * get the value for a specific keyId. - * Error if the keyword container does not have the attribute at all (you can check this with .exists()) - * Error if the attribute does not exist at the provided keyId and you have not specified a default - * - * @param {String} pKeyId the keyId - * - * @return {String} the loaded value (or the default) - */ -KeywordAttribute.prototype.getValue = function(pKeyId) -{ - if (this.exists()) - { - var attrValue = newSelect(this.dbField) - .from("AB_KEYWORD_ENTRY") - .join("AB_KEYWORD_ATTRIBUTERELATION", "AB_KEYWORD_ENTRY.AB_KEYWORD_ENTRYID = AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .where("AB_KEYWORD_ENTRY.CONTAINER", this.container) - .and("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ATTRIBUTE_ID", this.id) - .and("AB_KEYWORD_ENTRY.KEYID", pKeyId) - .cell(); - - if (attrValue) - return attrValue; - - if (this.defaultValue) - return this.defaultValue; - - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword \"%1\" from container \"%2\"", [this.attribute, pKeyId, this.container])); - } - else if (this.defaultValue == undefined) - throw new Error(translate.withArguments("no keyword attribute \"%0\" found in keyword container \"%1\"", [this.attribute, this.container])); - else - return this.defaultValue; -} - -/** - * get a SqlBuilder object for this keyword attribute. You can easily add additional conditions to it. - * - * @return {SqlBuilder} a SqlBuilder which contains a select for the entry-id's, joins to entry and attribute - * and conditions for the container and the attribute-name. - */ -KeywordAttribute.prototype.getSqlBuilderSelect = function() -{ - return newSelect("AB_KEYWORD_ATTRIBUTERELATION.AB_KEYWORD_ENTRY_ID") - .from("AB_KEYWORD_ATTRIBUTERELATION") - .join("AB_KEYWORD_ENTRY", "AB_KEYWORD_ENTRYID = AB_KEYWORD_ENTRY_ID", "attrEntry") - .join("AB_KEYWORD_ATTRIBUTE", "AB_KEYWORD_ATTRIBUTEID = AB_KEYWORD_ATTRIBUTE_ID") - .where(["AB_KEYWORD_ENTRY", "CONTAINER", "attrEntry"], this.container) - .and("AB_KEYWORD_ATTRIBUTE.NAME", this.attribute) -} - -/** - * check if the Container can have the attribute. - * @return {Boolean} true if it exists, false if not - */ -KeywordAttribute.prototype.exists = function() -{ - return this.id != undefined && this.type != undefined && this.dbField != undefined; -} - ----- - -=== private functions === - - -Private functions would be possible but make everything much more complicate. -So just start your functions / methods name with a _ if you need private methods. - ---> do not use functions which start with a _ outside of the class! - -Add @ignore to the comment of those functions to prevent showing them in the generated jsdoc. - -== JS-Doc == - -<1> JS-Doc comment: http://usejsdoc.org/ -<2> jsdoc-blocks have to start with /** otherwise JSDoc cannot generate a documentation -<3> use the correct form for optional/required parameters: http://usejsdoc.org/tags-param.html -Optional parameter: [alias=the current alias] -Required parameter: alias -Classes: @class -[source,javascript] ----- -/** - * Description... - * ... - * - * @param {String} [pAlias=the current alias] the database alias where the condition shall be executed later (important for column types of preparedStatements) - * @example Here is an example - * @class - */ -function SqlCondition(pAlias) -{ -... -} ----- -<4> examples are useful on more complex functions -<5> constructor function; init properties (do not set functions ("methods") here!) -<6> add functions ("methods") to the prototype, they are available through the prototype chain - -And how to use it (normally you'd want to use preparedStatements but for the sake of an easy example it's a bit shorter here) -See also HowToSqlConditionLib.adoc for a full documentation. -[source,javascript] ----- -import("system.vars"); -import("system.result"); -import("Sql_lib"); -import("Comm_lib"); - -var cond = new SqlCondition(); - -var mediumIds = CommExtensions.getContextualMediumIds(); -if (mediumIds.length > 0) - cond.and("COMM.MEDIUM_ID in (" + mediumIds.join(", ") + ")"); - -var idVal = vars.get("$local.idvalue"); -if (uids.length > 0) - cond.and("COMM.COMMID = '" + idVal + "' "); - -result.string(cond.toString("COMM.OPTIONAL = 't'")); ----- - diff --git a/others/guide/instanceableLibExample.adoc b/others/guide/instanceableLibExample.adoc deleted file mode 100644 index 66dfc0a312e467be87afcf97921691c4e8f61090..0000000000000000000000000000000000000000 --- a/others/guide/instanceableLibExample.adoc +++ /dev/null @@ -1,62 +0,0 @@ -= Example for a instanceable Lib = -:toc2: left -:numbered: - -Remember to always change the comments to fit your class! + -Use speaking names for ALL variables, classes and functions! - -[source,javascript] ----- -import("..."); - -/** - * instanceable example Utility class; - * - * @param {String} pParam1 is for ... - * - * @example var myUtil = new UtilClass("-"); - * @class - */ -function UtilClass(pParam1) -{ - // here is the constructor. - // create class variables like this: - this.myVariable = pParam1; -} - -/** - * a public function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * - * @example var myResult = myUtil.myFunction("p1", "p2"); - * - * @return {String} a result - */ -UtilClass.prototype.myFunction = function(pParam1, pParam2) -{ - return this._privateStaticFunction1(pParam1, pParam2, this.myVariable); -} - -/** - * a private function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * @param {String} pParam3 is for ... - * - * @return {String} a result - * @ignore - */ -UtilClass.prototype._myPrivateFunction = function(pParam1, pParam2, pParam3) -{ - if(pParam1 && pParam2 && pParam3) - { - ... - return pParam1 + pParam3 + pParam2; - } - - return ""; -} ----- \ No newline at end of file diff --git a/others/guide/staticLibExample.adoc b/others/guide/staticLibExample.adoc deleted file mode 100644 index d48e2eba91fc0a15fd515826424dbf631ede54e4..0000000000000000000000000000000000000000 --- a/others/guide/staticLibExample.adoc +++ /dev/null @@ -1,57 +0,0 @@ -= Example for a static Lib = -:toc2: left -:numbered: - -Remember to always change the comments to fit your class! + -Use speaking names for ALL variables, classes and functions! - -[source,javascript] ----- -import("..."); - -/** - * a static Example Utility class - * - * Do not create an instance of this! - * @class - */ -function ExampleUtils() {} // leave this function empty! A constructor is not needed for static functions. - -/** - * a public static function - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * - * @example var myResult = ExampleUtils.staticFunction1("p1", "p2"); - * - * @return {String} a result - */ -ExampleUtils.staticFunction1 = function(pParam1, pParam2) -{ - return this._privateStaticFunction1(pParam1, pParam2, "-") -} - -/** - * a private static function - * - * Do not use outside of ExampleUtils! - * - * @param {String} pParam1 is for ... - * @param {String} pParam2 is for ... - * @param {String} pParam3 is for ... - * - * @return {String} a result - * @ignore - */ -ExampleUtils._privateStaticFunction1 = function(pParam1, pParam2, pParam3) -{ - if(pParam1 && pParam2 && pParam3) - { - ... - return pParam1 + pParam3 + pParam2; - } - - return ""; -} ----- \ No newline at end of file diff --git a/others/guide/whichDatatype.adoc b/others/guide/whichDatatype.adoc deleted file mode 100644 index 092ae1bf6ae5c02d56ced4bf133b5e956a8f23e2..0000000000000000000000000000000000000000 --- a/others/guide/whichDatatype.adoc +++ /dev/null @@ -1,105 +0,0 @@ -Overview over datatypes -======================= -:toc2: left -:numbered: - -This is a simple overview about when to to use which datatype. - -== Boolean == -=== Datatype === ----- -TINYINT ----- -=== Usage === -0 => false -1 => true - -Add nullable="false" constraint, because for boolean null makes no sense and complicates searches and validations. - -== Text == -Text should be saved as Unicode. For this prefix the datatype with a 'N' (there are some exceptions like the UUID) - -=== Big text === -For informations, descriptions, ... ----- -NCLOB ----- - -=== Small / Normal text === -For Names, ... - -You have to define the maximum length. ----- -NVARCHAR(50) ----- - -=== Fixed size text === -If you are sure that the length is always fixed and will not change. - -You have to define the length. ----- -NCHAR(5) ----- - -=== UUID's, standardized codes === -For them unicode is mostly not needed. Only use unicode here if you are sure, it is needed. - -For UUID's, standardized codes (language codes), ... - -You have to define the length. ----- -CHAR(5) ----- - -UUID needs length 36: ----- -CHAR(36) ----- - -=== Decimal numbers === -If precision and fixed decimals (Nachkommastellen) are needed, use DECIMAL. -For prices, ... ----- -NUMERIC(10, 2) ----- - -Else you can use double. ----- -DOUBLE ----- - -=== Integer numbers === -In normal cases just use INTEGER - -If you know that very big integers or only very small Integers are needed, you can also use - -Byte count may not be the same on all databases. - -8 Byte - ----- -BIGINT ----- - -4 Byte - ----- -INTEGER ----- - -2 Byte - ----- -SMALLINT ----- - -1 Byte - ----- -TINYINT ----- - -=== Binary data === ----- -BLOB ----- \ No newline at end of file diff --git a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod index 3e9db3204aca942b5356a3023b17716a739754cf..602795eafd86b0cb8892febafb6c1a9d7de3624d 100644 --- a/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod +++ b/preferences/_____PREFERENCES_PROJECT/_____PREFERENCES_PROJECT.aod @@ -30,7 +30,7 @@ <recordContainerCachingAlias>RecordContainerCache</recordContainerCachingAlias> <clientSearchOptimizedForSpeed v="true" /> <clientSearchExcludeForIgnorecase v="true" /> - <neonClientPermissionsEnabled v="false" /> + <neonClientPermissionsEnabled v="true" /> <clientFeedbackMailaddress /> <blobHandlingMethod>DATABASE</blobHandlingMethod> <databaseAuditGetOldValueLobs v="false" /> @@ -41,6 +41,7 @@ <indexsearchIncrementingIndexerEnabled v="true" /> <indexsearchIncrementingIndexerInterval v="1000" /> <indexsearchIncrementingIndexerBunchSize v="250" /> + <userdirectoryAlias>_____SYSTEMALIAS</userdirectoryAlias> <mailBridgeMailserver> <mailbridgeMailserver> <name>abfa63d1-a47e-41f6-a87d-138bf04adc1e</name> diff --git a/process/AISalesproject_lib/AISalesproject_lib.aod b/process/AISalesproject_lib/AISalesproject_lib.aod index 13b8a275db57d71b190f905695f39072a7756756..a6f99a40249dc800e535938f99bcf7dff042bbf1 100644 --- a/process/AISalesproject_lib/AISalesproject_lib.aod +++ b/process/AISalesproject_lib/AISalesproject_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AISalesproject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AISalesproject_lib/process.js</process> diff --git a/process/AI_lib/AI_lib.aod b/process/AI_lib/AI_lib.aod index 153e8fc6b66bfd5d8016c8a0a22521c04ad0e209..7ae40f7d1ad20b3763a454857962bf66ec77e35f 100644 --- a/process/AI_lib/AI_lib.aod +++ b/process/AI_lib/AI_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AI_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AI_lib/process.js</process> diff --git a/process/ActivityTask_lib/ActivityTask_lib.aod b/process/ActivityTask_lib/ActivityTask_lib.aod index 141c9c3f9344db9b60ff2be3992885545ebcb96a..75bb8811f6e3483be857978d6ee10456e7e79d25 100644 --- a/process/ActivityTask_lib/ActivityTask_lib.aod +++ b/process/ActivityTask_lib/ActivityTask_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ActivityTask_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ActivityTask_lib/process.js</process> diff --git a/process/AddressEntity_lib/AddressEntity_lib.aod b/process/AddressEntity_lib/AddressEntity_lib.aod index 4ecf49e2e70d3882be5ed8a66b3ec91a4d509593..432deaa1e5b6a1e7a0e8e82e339e76cb9e0b83a5 100644 --- a/process/AddressEntity_lib/AddressEntity_lib.aod +++ b/process/AddressEntity_lib/AddressEntity_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AddressEntity_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AddressEntity_lib/process.js</process> diff --git a/process/Address_lib/Address_lib.aod b/process/Address_lib/Address_lib.aod index dc170bb2e025b240f859db1cdca75dd3eb7d972c..8b4c8d490fcd065fdca889e0daa3282dddcc239b 100644 --- a/process/Address_lib/Address_lib.aod +++ b/process/Address_lib/Address_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Address_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Address_lib/documentation.adoc</documentation> diff --git a/process/Appointment_lib/Appointment_lib.aod b/process/Appointment_lib/Appointment_lib.aod index 5b832c601af4bab0a69bff58acf1c2427be6911c..048b24bb7449670791195d1c9710d5fa9f858ec9 100644 --- a/process/Appointment_lib/Appointment_lib.aod +++ b/process/Appointment_lib/Appointment_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Appointment_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Appointment_lib/process.js</process> diff --git a/process/AttributeFilter_lib/AttributeFilter_lib.aod b/process/AttributeFilter_lib/AttributeFilter_lib.aod index 57e3edcba2b142a37bc925f7db45a4cbf4006464..0e96ad73bb494c36ab2a394571a7a27946ccccb6 100644 --- a/process/AttributeFilter_lib/AttributeFilter_lib.aod +++ b/process/AttributeFilter_lib/AttributeFilter_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AttributeFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AttributeFilter_lib/process.js</process> diff --git a/process/AttributeFilter_lib/process.js b/process/AttributeFilter_lib/process.js index d64df9664bf2c4ac8519540ede2e36266b2d5323..0e9a44920eed7e6875ee71fec0b1f268187ee71d 100644 --- a/process/AttributeFilter_lib/process.js +++ b/process/AttributeFilter_lib/process.js @@ -87,21 +87,33 @@ function AttributeFilterExtensionMaker() {} AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) { var res = []; + var sqlMask = new SqlMaskingUtils(); var loadingConfig = entities.createConfigForLoadingRows().entity("Attribute_entity") .provider("SpecificFilterAttributes") - .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE"]) + .fields(["UID", "FULL_ATTRIBUTE_NAME", "ATTRIBUTE_TYPE", "DROPDOWNDEFINITION"]) .addParameter("ObjectType_param", pObjectType); var attributeRows = entities.getRows(loadingConfig); attributeRows.forEach(function(row){ - var attributeType = row["ATTRIBUTE_TYPE"]; + var attributeType = row["ATTRIBUTE_TYPE"].trim(); var contentType = AttributeTypeUtil.getContentType(attributeType); + var groupedRecordField = AttributeTypeUtil.getDatabaseField(attributeType); + var getTitleRecordFieldFn = AttributeTypeUtil.getDisplayValueSqlFn(attributeType); + var titleRecordField = getTitleRecordFieldFn({ + attributeId: row["UID"], + dropDownDefinition: row["DROPDOWNDEFINITION"] + }); - if (attributeType.trim() == AttributeTypes.VOID()) + if (attributeType == AttributeTypes.VOID()) { contentType = "BOOLEAN"; + groupedRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString("1").toString(); + titleRecordField = SqlBuilder.caseWhen("AB_ATTRIBUTE_ID is not null").thenString(translate.text("Yes")).toString(); } + + if (titleRecordField == "INT_VALUE" || titleRecordField == "NUMBER_VALUE") + titleRecordField = sqlMask.cast(titleRecordField, SQLTYPES.VARCHAR, 50); if (contentType) { @@ -111,7 +123,10 @@ AttributeFilterExtensionMaker.getFilterFields = function(pObjectType) title: row["FULL_ATTRIBUTE_NAME"], //workaround since we do not have a "UNKNOWN"-contentType in the filter-definition contentType: contentType == "UNKNOWN" ? "TEXT" : contentType, - hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN" ? true : false//TODO: determine this somehow else + hasDropDownValues: contentType == "UNKNOWN" || contentType == "BOOLEAN",//TODO: determine this somehow else + isGroupable: true, + groupedRecordField: groupedRecordField,//groupedRecordField + titleRecordField: sqlMask.isNull(titleRecordField, "'"+translate.text("unassigned")+"'") }); } }); @@ -258,3 +273,64 @@ AttributeFilterExtensionMaker.makeFilterConditionSql = function() uidInfo.table, uidInfo.column, columnPlaceholder); return res; }; + +/** + * fetches attributes that are groupable and transofms them into Groupings + * + * @param {String} pFrom The Value of the fromClauseProcess (if not used, then the "Main" Table) + * + * @see AttributeFilterExtensionMaker.getFilterGroupQuery for more details + */ +AttributeFilterExtensionMaker.makeFilterGroupQuery = function(pFrom) +{ + var attributeName = vars.get("$local.name"); + var condition = vars.get("$local.condition").trim(); //can have multiple space characters + var groupColumnList = vars.get("$local.columnlist"); + var order = vars.get("$local.order"); + var count = vars.get("$local.count"); + var uidInfo = vars.get("$sys.uidcolumn"); + var res = AttributeFilterExtensionMaker.getFilterGroupQuery(attributeName, condition, groupColumnList, order, count, uidInfo, pFrom); + return res; +}; + + +/** + * + * @param {String} pAttributeName The Attribute-name contains various data of the attribute as a encoded string + * @param {String} pCondition Contains the local Condition + * @param {String} pColumnList Contains various Columns for the group Select + * @param {String} pOrder In which order the results should be displayed + * @param {String} pCount Indicates if u need to count or not, TRUE and FALSE + * @param {String} pUidColumn The Column that is linked with AB_ATTRIBUTERELATION.OBJECT_ROWID + * @param {String} pFrom The From part is needed to use the Condition right in every way + * + * @return {String} <p/> SQL-Statemente for grouping + * It returns the count or the Group Values + * @static + */ +AttributeFilterExtensionMaker.getFilterGroupQuery = function(pAttributeName, pCondition, pColumnList, pOrder, pCount, pUidColumn, pFrom) +{ + + var name = AttributeSearchNameCoder.decode(pAttributeName); + + var attributeId = name.id; + var attrType = name.type; + var valuefield = AttributeTypeUtil.getDatabaseField(attrType); + + if (attrType == AttributeTypes.VOID()) + valuefield = "AB_ATTRIBUTE_ID"; + + + var stmt = newSelect(pCount ? "1" : pColumnList).from(pFrom) + .leftJoin("AB_ATTRIBUTERELATION", newWhere("AB_ATTRIBUTERELATION.OBJECT_ROWID = "+pUidColumn).and("AB_ATTRIBUTERELATION.AB_ATTRIBUTE_ID", attributeId)); + + if(pCondition) + stmt.where(pCondition); + + stmt.groupBy(valuefield); + + if(pOrder) + stmt.orderBy(pOrder); + + return stmt.toString(); +}; \ No newline at end of file diff --git a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod index d4917ea14ea0bb20d46d5ca2680e75daa034ce5c..3ed840c1e53f66ed4c7fa01b61bdd16433537664 100644 --- a/process/AttributeRegistry_basic/AttributeRegistry_basic.aod +++ b/process/AttributeRegistry_basic/AttributeRegistry_basic.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>AttributeRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/AttributeRegistry_basic/process.js</process> diff --git a/process/Attribute_lib/Attribute_lib.aod b/process/Attribute_lib/Attribute_lib.aod index 7d9936e818274c5e11dd7fec0c27953f2d32d4e9..0d46a6a7dc9b186e465727e6fa1806abfad13f58 100644 --- a/process/Attribute_lib/Attribute_lib.aod +++ b/process/Attribute_lib/Attribute_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Attribute_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Attribute_lib/process.js</process> diff --git a/process/Attribute_lib/process.js b/process/Attribute_lib/process.js index 938efc90998d5f52bcbc92c00ff68697d17137d6..a5a3d2b7a68cb7a398fdc24b771f9a9fe500931b 100644 --- a/process/Attribute_lib/process.js +++ b/process/Attribute_lib/process.js @@ -859,10 +859,16 @@ Object.assign(AttributeTypes.BOOLEAN, { contentType: "BOOLEAN", databaseField: "INT_VALUE", singleSelection: true, + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + return SqlBuilder.caseWhen(valueField, "1").thenString(translate.text("Yes")) + .when(valueField, "0").thenString(translate.text("No")); + }, getViewValue: function (pValue) - { - return pValue == "1" ? translate.text("Yes") : translate.text("No"); - } + { + return Utils.toBoolean(pValue) ? translate.text("Yes") : translate.text("No"); + } }); Object.assign(AttributeTypes.COMBO, { toString: function () {return this();}, @@ -870,15 +876,30 @@ Object.assign(AttributeTypes.COMBO, { databaseField: "ID_VALUE", possibleChildren: [AttributeTypes.COMBOVALUE()], //in most cases the view value of this attribute type is loaded via a direct sql join for less queries and better performance - getViewValue: function (pValue) + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + var values = newSelect(["AB_ATTRIBUTEID", "ATTRIBUTE_NAME"]) + .from("AB_ATTRIBUTE") + .where("AB_ATTRIBUTE.ATTRIBUTE_PARENT_ID", pAttributeData.attributeId) + .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) + .table(); + var sql = SqlBuilder.caseStatement(values, valueField); + values.forEach(function ([key, value]) { - var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME") - .from("AB_ATTRIBUTE") - .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue) - .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) - .cell(); - return viewValue ? translate.text(viewValue) : viewValue; - } + sql.when(valueField, key).thenString(translate.text(value)); + }); + return sql.toString(); + }, + getViewValue: function (pValue) + { + var viewValue = newSelect("AB_ATTRIBUTE.ATTRIBUTE_NAME") + .from("AB_ATTRIBUTE") + .where("AB_ATTRIBUTE.AB_ATTRIBUTEID", pValue) + .and("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.COMBOVALUE()) + .cell(); + return viewValue ? translate.text(viewValue) : viewValue; + } }); Object.assign(AttributeTypes.COMBOVALUE, { toString: function () {return this();}, @@ -907,18 +928,23 @@ Object.assign(AttributeTypes.KEYWORD, { toString: function () {return this();}, contentType: "UNKNOWN", databaseField: "ID_VALUE", + getDisplayValueSql: function (pAttributeData) + { + var valueField = "AB_ATTRIBUTERELATION." + this.databaseField; + return KeywordUtils.getResolvedTitleSqlPart(pAttributeData.dropDownDefinition, valueField); + }, getViewValue: function (pValue, pKeyword) - { - return KeywordUtils.getViewValue(pKeyword, pValue); - }, + { + return KeywordUtils.getViewValue(pKeyword, pValue); + }, dropDownDefinitionTitle: "Keyword", getDropDownDefinitions: function () + { + return KeywordUtils.getContainerNames().map(function (e) { - return KeywordUtils.getContainerNames().map(function (e) - { - return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers - }); - } + return [e, e];//currently the first column is ID, second view value - which is the same because there is no ID for keyword-containers + }); + } }); Object.assign(AttributeTypes.VOID, { toString: function () {return this();}, @@ -1096,6 +1122,22 @@ AttributeTypeUtil.getDropDownDefinitionTitle = function (pAttributeType) return AttributeTypeUtil._getProperty(pAttributeType, "dropDownDefinitionTitle", ""); } +AttributeTypeUtil.getDisplayValueSqlFn = function (pAttributeType) +{ + if (!pAttributeType) + return null; + + pAttributeType = pAttributeType.trim(); + var attributeType = AttributeTypes[pAttributeType]; + if (!attributeType) + return null; + var displayValueSqlFn = attributeType.getDisplayValueSql || function () + { + return this.databaseField; + }; + return displayValueSqlFn.bind(attributeType); +} + /** * Compare the given pAttributeType with the attribute type string * "OBJECTSELECTION". @@ -1459,8 +1501,6 @@ function AttributeRelationQuery (pObjectRowId, pAttributeId, pObjectType) this._attributeTypes = null; this._includeFullAttributeName = false; this._includeDisplayValue = false; - - return this; } /** @@ -1669,6 +1709,41 @@ AttributeRelationQuery.prototype.getAttributeCount = function () .cell() || 0); } +AttributeRelationQuery.prototype.getMaxCount = function () +{ + if (!this._objectType || !this._rowId) + throw new Error("AttributeRelationQuery: Object type and row id are required"); + if (!this._attributeIds || this._attributeIds.length !== 1) + throw new Error("AttributeRelationQuery: You have to specify a single attribute id"); + + var attributeId = this._attributeIds[0]; + + var maxCount = newSelect("MAX_COUNT") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) + .cell(); + if (maxCount) + return Number(maxCount) || null; + return null; +} + +AttributeRelationQuery.prototype.getMinCount = function () +{ + if (!this._objectType || !this._rowId) + throw new Error("AttributeRelationQuery: Object type and row id are required"); + if (!this._attributeIds || this._attributeIds.length !== 1) + throw new Error("AttributeRelationQuery: You have to specify a single attribute id"); + + var attributeId = this._attributeIds[0]; + + return Number(newSelect("MIN_COUNT") + .from("AB_ATTRIBUTEUSAGE") + .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) + .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) + .cell()); +} + /** * Inserts a new attribute relation. * @@ -1692,17 +1767,8 @@ AttributeRelationQuery.prototype.insertAttribute = function (pValue, pOmitValida if (!pOmitValidation) { - var maxCount = newSelect("MAX_COUNT") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", attributeId) - .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this._objectType) - .arrayColumn(); - - if (maxCount.length == 0) - return false; - - maxCount = maxCount[0]; - if (maxCount && maxCount != 0) + var maxCount = this.getMaxCount(); + if (maxCount) { let timesUsed = this.getAttributeCount(); if (timesUsed >= maxCount) @@ -1805,15 +1871,12 @@ AttributeRelation.prototype.deleteAttribute = function (pOmitValidation) { if (!pOmitValidation) { - var minCount = newSelect("MIN_COUNT") - .from("AB_ATTRIBUTEUSAGE") - .where("AB_ATTRIBUTEUSAGE.AB_ATTRIBUTE_ID", this.attributeId) - .and("AB_ATTRIBUTEUSAGE.OBJECT_TYPE", this.objectType) - .cell(); - - if (minCount && minCount != 0) + var attributeQuery = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType); + var minCount = attributeQuery.getMinCount(); + + if (minCount) { - let timesUsed = new AttributeRelationQuery(this.objectRowId, this.attributeId, this.objectType).getAttributeCount(); + let timesUsed = attributeQuery.getAttributeCount(); if (timesUsed <= minCount) return false; } diff --git a/process/Binary_lib/Binary_lib.aod b/process/Binary_lib/Binary_lib.aod index 39de483b5c216084257d95a007b355a11c1d53c0..338211a33b61dfeed03e065d60e6eabb1f67ed0c 100644 --- a/process/Binary_lib/Binary_lib.aod +++ b/process/Binary_lib/Binary_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Binary_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Binary_lib/process.js</process> diff --git a/process/Bulkmail_lib/Bulkmail_lib.aod b/process/Bulkmail_lib/Bulkmail_lib.aod index 0befb2a734840466905596858a7e558a4052f232..6bc2e64de1b4da7172b3984b996837925bf07c10 100644 --- a/process/Bulkmail_lib/Bulkmail_lib.aod +++ b/process/Bulkmail_lib/Bulkmail_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Bulkmail_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Bulkmail_lib/process.js</process> diff --git a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod index 07b3e2150f48a91844aeada49cb40dfbb5d04cf1..7257f6acb059c410783b52c8e68da1637a4d111f 100644 --- a/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod +++ b/process/CachedRecordContainer_lib/CachedRecordContainer_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CachedRecordContainer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CachedRecordContainer_lib/process.js</process> diff --git a/process/CachedRecordContainer_lib/process.js b/process/CachedRecordContainer_lib/process.js index e44f4dfa90c436f711c74ec22c5c4ad01d9942f2..f7d4ea84563fcc60f9606e7ad2efbd8de6cc27c4 100644 --- a/process/CachedRecordContainer_lib/process.js +++ b/process/CachedRecordContainer_lib/process.js @@ -161,7 +161,14 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) { varsToCheck.forEach(function (varToCheck){ if (vars.exists(varToCheck)) { - var value = vars.getString(varToCheck); + var value = vars.get(varToCheck); + if (value && Utils.isObject(value)) + { + if (varToCheck === "$local.filters" && _isEmptyFilter(value)) + value = null; + else + value = JSON.stringify(value); + } if (value != null) key.push(value); else @@ -174,4 +181,10 @@ CachedRecordContainerUtils.getKey = function(pVariable1, pVariableN) { }); return key.join("."); + + function _isEmptyFilter (pFilter) + { + var childs = pFilter.childs; + return Utils.isNullOrEmpty(childs) || (childs.length === 1 && childs[0].operator === "CONTAINS" && !childs[0].key); + } }; \ No newline at end of file diff --git a/process/Calendar_lib/Calendar_lib.aod b/process/Calendar_lib/Calendar_lib.aod index ba466c5bf5fc50d099a4c5de79e3808744b53b56..657f6034dea6a1ee813d796025e4c9861432d484 100644 --- a/process/Calendar_lib/Calendar_lib.aod +++ b/process/Calendar_lib/Calendar_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Calendar_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Calendar_lib/process.js</process> diff --git a/process/Calendar_lib/process.js b/process/Calendar_lib/process.js index 0a9a4b99e7c0c1abbe9d41af4f6ca2b2a734cab1..e9f96a4a9089f1ff65bb69dfb21ff41063f90ab8 100644 --- a/process/Calendar_lib/process.js +++ b/process/Calendar_lib/process.js @@ -538,4 +538,113 @@ CalendarUtil.getCalendarSystemType = function(pScope) // Everything is none return calendars.BACKEND_NONE; +} + +CalendarUtil.buildEntriesFromUids = function(appointmentUids) +{ + var entryArray = new Array(appointmentUids.length); + + for(var i = 0; i < appointmentUids.length; i++) + { + var hasPermission = true; + + if(vars.get("$param.ErrorOnPermissionDenied") == "false" || vars.getString("$param.LinkedAppointmentsFromDashlet_param")) + hasPermission = hasUserPermissionForReadingEntry(getEntryOwnerCn(appointmentUids[i])); + + if(hasPermission) + entryArray[i] = CalendarUtil.buildEntry(calendars.getEntry(appointmentUids[i], null, null), null); + } + + //filter out all null + var filteredEntryArray = entryArray.filter(function (el) { + return el != null; + }); + + return filteredEntryArray; +} + + +CalendarUtil.countEntriesFromUids = function(appointmentUids) +{ + return CalendarUtil.buildEntriesFromUids(appointmentUids).length; +} + +CalendarUtil.buildEntry = function (pEntry, pMasterentry) +{ + var uid = pEntry[calendars.ID]; + var summary = pEntry[calendars.SUMMARY]; + var attendees = pEntry[calendars.AFFECTEDUSERS]; + var startdate = pEntry[calendars.DTSTART]; + var enddate = pEntry[calendars.DTEND]; + var links = pEntry[calendars.LINKS]; + var description = pEntry[calendars.DESCRIPTION]; + if(pEntry[calendars.ORGANIZER2] != undefined) + var organizer = pEntry[calendars.ORGANIZER2]["paramvalue"]; + if(pEntry[calendars.USER2] != undefined) + var owner = JSON.stringify(pEntry[calendars.USER2]); + var status = pEntry[calendars.STATUS]; + var location = pEntry[calendars.LOCATION]; + var reminder = pEntry[calendars.REMINDER_DURATION]; + var remindercheck = pEntry[calendars.HASREMINDER] + var classification = pEntry[calendars.CLASSIFICATION]; + var transparency = pEntry[calendars.TRANSPARENCY]; + var categories = pEntry[calendars.CATEGORIES]; + var isAllDay = pEntry["X-ADITO-ISALLDAYEVENT"] != null ? pEntry["X-ADITO-ISALLDAYEVENT"] : "FALSE"; + + var masterBegin = pMasterentry != null ? pMasterentry[calendars.DTSTART] : null + var masterEnd = pMasterentry != null ? pMasterentry[calendars.DTEND] : null + + // Recurrence + var recurrenceID = pEntry[calendars.RECURRENCEID]; + var rrule = null; + if (pMasterentry != null) { // Entry is a recurrence exception, therefore get rrule from master + rrule = pMasterentry[calendars.RRULE] != null ? pMasterentry[calendars.RRULE][0] : null; + } else { + rrule = pEntry[calendars.RRULE] != null ? pEntry[calendars.RRULE][0] : null; + } + + return [ + uid, + attendees.length, + startdate, + enddate, + summary, + organizer, + owner, + attendees, + status, + description, + location, + '', + isAllDay, + classification, + transparency, + categories, + reminder, + remindercheck, + rrule, + recurrenceID, + null, + masterBegin, + masterEnd, + null + ]; +} + + +function hasUserPermissionForReadingEntry(calUserCn) +{ + return calendars.hasPermission(calUserCn, calendars.VEVENT, "READ"); +} + +function getEntryOwnerCn(appointmentUid) +{ + + var owner = newSelect("ASYS_CALENDARBACKEND.OWNER", "_____SYSTEMALIAS") + .from("ASYS_CALENDARBACKEND") + .whereIfSet("ASYS_CALENDARBACKEND.ELEMENTUID", appointmentUid) + .cell(true); + + var ownerArr = text.decodeMS(owner); + return ownerArr[1].split(":")[1]; } \ No newline at end of file diff --git a/process/Campaign_lib/Campaign_lib.aod b/process/Campaign_lib/Campaign_lib.aod index 6cff8443c7403caa3bbdc859ee356e248dc54018..1018469206a67ad0b29b351669b2b1882538d96a 100644 --- a/process/Campaign_lib/Campaign_lib.aod +++ b/process/Campaign_lib/Campaign_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Campaign_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Campaign_lib/process.js</process> diff --git a/process/Campaign_lib/process.js b/process/Campaign_lib/process.js index 7c893948d7f1a576518e469721ae1dbec4a50ec2..f3934b933660f8cb2ba2fe7b756d1b0094b87e7f 100644 --- a/process/Campaign_lib/process.js +++ b/process/Campaign_lib/process.js @@ -170,12 +170,16 @@ CampaignUtils.getCampaignStatusByCampaignId = function(pCampaignId) */ CampaignUtils.createLogEntry = function(pCampaignId, pCampaignStepId, pCampaignParticipantId, pPreviousCampaignStepId) { - let colsCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumnNames(); + var rowCount = new SqlBuilder().insertFields({ + "CAMPAIGN_ID": pCampaignId, + "CAMPAIGNSTEP_ID": pCampaignStepId, + "CAMPAIGNPARTICIPANT_ID": pCampaignParticipantId, + "USER_NEW": vars.get("$sys.user"), + "DATE_NEW": vars.get("$sys.date"), + "PREVIOUS_CAMPAIGNSTEP_ID": pPreviousCampaignStepId + }, "CAMPAIGNPARTICIPANTLOG", "CAMPAIGNPARTICIPANTLOGID"); - let valsCampaignParticipantLog = new Array(util.getNewUUID(), pCampaignId, pCampaignStepId, pCampaignParticipantId, vars.get("$sys.user"), vars.get("$sys.date"), pPreviousCampaignStepId); - - let rows = db.insertData("CAMPAIGNPARTICIPANTLOG", colsCampaignParticipantLog, null, valsCampaignParticipantLog); - return (rows == 1); + return rowCount > 0; } /** @@ -204,12 +208,11 @@ CampaignUtils.getParticipantLogInsertColumnNames = function() CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampaignId, pCampaignStepId) { var params = { - "campaignParticipantsRowIds_param":pParticipantIds, - "currentCampaignId_param":pCampaignId, - "currentCampaignStepId_param":pCampaignStepId, - "isUpdate_param":true + "campaignParticipantsRowIds_param": pParticipantIds, + "currentCampaignId_param": pCampaignId, + "currentCampaignStepId_param": pCampaignStepId, + "isUpdate_param": true }; - neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } @@ -226,12 +229,12 @@ CampaignUtils.openSetCampaignStepViewByRowIds = function(pParticipantIds, pCampa */ CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaignId, pCampaignStepId) { - var params = {}; - params["campaignParticipantsCondition_param"] = pCondition; - params["currentCampaignId_param"] = pCampaignId; - params["currentCampaignStepId_param"] = pCampaignStepId; - params["isUpdate_param"] = true; - + var params = { + "campaignParticipantsCondition_param": pCondition, + "currentCampaignId_param": pCampaignId, + "currentCampaignStepId_param": pCampaignStepId, + "isUpdate_param": true + }; neon.openContext("CampaignAddParticipants", "CampaignAddParticipantsEdit_view", null, neon.OPERATINGSTATE_VIEW, params); } @@ -244,11 +247,10 @@ CampaignUtils.openSetCampaignStepViewByCondition = function(pCondition, pCampaig */ CampaignUtils.openNewCampaignStepView = function(pCampaignId) { - var params = {}; - - params["campaignId_param"] = pCampaignId; - params["campaignSelectionVisible_param"] = true; - + var params = { + "campaignId_param": pCampaignId, + "campaignSelectionVisible_param": true + }; neon.openContext("CampaignStep", "CampaignStepEdit_view", null, neon.OPERATINGSTATE_NEW, params); } @@ -258,9 +260,7 @@ CampaignUtils.openNewCampaignStepView = function(pCampaignId) */ CampaignUtils.openNewCampaignView = function() { - var params = {}; - - neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, params); + neon.openContext("Campaign", "CampaignEdit_view", null, neon.OPERATINGSTATE_NEW, {}); } /** @@ -343,19 +343,19 @@ CampaignUtils.getMaxParticipantsValidationMessage = function() */ CampaignUtils.deleteCampaignStepData = function(pCampaignStepId) { - if(pCampaignStepId == null || pCampaignStepId == "") + if (!pCampaignStepId) return; - - let queries = []; newWhere("CAMPAIGNSTEP.PREDECESSORSTEP_ID", pCampaignStepId) - .updateData(true, ["PREDECESSORSTEP_ID"], null, [""]); + .updateFields({"PREDECESSORSTEP_ID": ""}); - queries.push(new Array("CAMPAIGNPARTICIPANTLOG", newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNPARTICIPANT", newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).build())); - queries.push(new Array("CAMPAIGNSTEP", newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).build())); - db.deletes(queries) + var deleteStatements = [ + newWhere("CAMPAIGNPARTICIPANTLOG.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNCOST.CAMPAIGNSTEP_ID", pCampaignStepId).buildDeleteStatement(), + newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId).buildDeleteStatement() + ]; + db.deletes(deleteStatements); } /** @@ -372,24 +372,22 @@ CampaignUtils.deleteCampaignStepData = function(pCampaignStepId) */ CampaignUtils.deleteCampaignData = function(pCampaignId) { - if(pCampaignId == null || pCampaignId == "") + if (!pCampaignId) return; - let campaignStepIds = newSelect("CAMPAIGNSTEPID") + var campaignStepIds = newSelect("CAMPAIGNSTEPID") .from("CAMPAIGNSTEP") .where("CAMPAIGNSTEP.CAMPAIGN_ID", pCampaignId) .arrayColumn(); - campaignStepIds.forEach(function (campaignStepId) - { - CampaignUtils.deleteCampaignStepData(campaignStepId) - }); + campaignStepIds.forEach(CampaignUtils.deleteCampaignStepData); - let campaignRelated = []; - campaignRelated.push(new Array("CAMPAIGNCOST", newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).build())); - campaignRelated.push(new Array("CAMPAIGN", newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).build())); + var campaignRelated = [ + newWhere("CAMPAIGNCOST.CAMPAIGN_ID", pCampaignId).buildDeleteStatement(), + newWhere("CAMPAIGN.CAMPAIGNID", pCampaignId).buildDeleteStatement() + ]; - db.deletes(campaignRelated) + db.deletes(campaignRelated); } /** @@ -404,14 +402,14 @@ CampaignUtils.deleteCampaignData = function(pCampaignId) */ CampaignUtils.updateCampaignStep = function(pCampaignStepId, pDateStart, pDateEnd) { - if(pCampaignStepId == null || pCampaignStepId == "") + if (!pCampaignStepId) return; - let columnsToUpdate = ["DATE_START", "DATE_END"]; - let newValues = [pDateStart, pDateEnd]; - let campaignStepIdCondition = newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId); - - campaignStepIdCondition.updateData(true, "CAMPAIGNSTEP", columnsToUpdate, null, newValues); + newWhere("CAMPAIGNSTEP.CAMPAIGNSTEPID", pCampaignStepId) + .updateFields({ + "DATE_START": pDateStart, + "DATE_END": pDateEnd + }); } /** @@ -629,13 +627,20 @@ CampaignUtils.GetContactCountByCondition = function(pCondition, pLookInCampaignO */ CampaignUtils.copyCampaign = function(pCampaignid, pDescription, pEmplContactId, pName, pState) { - var params = { - "originalCampaignIdCopy_param" : pCampaignid, - "description_param" : pDescription, - "emplContactId_param" : pEmplContactId, - "name_param" : pName || "", - "state_param" : pState || "" - }; + var fieldValues = {} + var preSetValues = {} + var params = {} + + preSetValues["$field.DESCRIPTION"] = pDescription + preSetValues["$field.EMPLOYEE_CONTACT_ID"] = pEmplContactId + preSetValues["$field.NAME"] = pName + preSetValues["$field.STATUS"] = pState + + fieldValues["FIELDS"] = preSetValues + fieldValues["CAMPAIGNID"] = pCampaignid + params["Copy_param"] = JSON.stringify(fieldValues) + + neon.openContext("Campaign", null, null, neon.OPERATINGSTATE_NEW, params); } diff --git a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod index 9b182044a8785df3037df931f0df656d095ae109..705efe2d6620d1a37bc4b723a9615acc23895e35 100644 --- a/process/ClassificationFilter_lib/ClassificationFilter_lib.aod +++ b/process/ClassificationFilter_lib/ClassificationFilter_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ClassificationFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ClassificationFilter_lib/process.js</process> diff --git a/process/ClassificationFilter_lib/process.js b/process/ClassificationFilter_lib/process.js index e2200e6e6e8ad55b95fa5fbfdf8cf38c71884677..bf593e707733064fa47d17aa6fb2534d5785eec1 100644 --- a/process/ClassificationFilter_lib/process.js +++ b/process/ClassificationFilter_lib/process.js @@ -239,8 +239,15 @@ ClassificationGroupFilterUtils.getFilterFields = function(pObjectType) classificationGroups.forEach(function(classificationGroup, idx){ var classificationGroupId = classificationGroup["CLASSIFICATIONGROUPID"]; var classificationGroupTitle = classificationGroup["#CONTENTTITLE"]; - - var representingSqlExpression = sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1); + + //"case when" needed since we want to group both the ones that have no classification for said classificationgroup ("-") + //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) together + // since both don't have an classification for that group + var representingSqlExpression = SqlBuilder.caseWhen(newWhere("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE is null")) + .thenString("-") + .elseValue(sqlHelper.substring("CLASSIFICATIONVALUE", idx+1, 1)) + .toString(); + var name = ClassificationGroupFilterNameCoder.encode(classificationGroupId, representingSqlExpression); res.push({ name: name, @@ -318,7 +325,12 @@ ClassificationGroupFilterUtils.getFilterCondition = function(pObjectType, pFilte { var decodedFilterName = ClassificationGroupFilterNameCoder.decode(pFilterName); var condition = StringUtils.replaceAll(pCondition, pColumnPlaceholder, decodedFilterName.representingSqlExpression); - + + //"case when" needed since we want to filter both the ones that have no classification for said classificationgroup ("-") + //and the ones that have null as the value (since not all datasets have a CLASSIFICATIONSTORAGE dataset) the same way + // since both don't have an classification for that group + if(pOperatorName == "IS NULL") + condition += " OR " + decodedFilterName.representingSqlExpression +"='-'"; return condition; }; diff --git a/process/Classification_lib/Classification_lib.aod b/process/Classification_lib/Classification_lib.aod index 659223c9d3b507cfadcd0a8e6a6d0b71f1efe0e5..5b4114c59eaaabf71c169a9f4cd0582cfa6ab60b 100644 --- a/process/Classification_lib/Classification_lib.aod +++ b/process/Classification_lib/Classification_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Classification_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Classification_lib/process.js</process> diff --git a/process/Classification_lib/process.js b/process/Classification_lib/process.js index 756e30fa5384e32bccb6c7e32ebe001c6987c9eb..b0a5a6830003d7b1ec3ffc91cccd9c6897221938 100644 --- a/process/Classification_lib/process.js +++ b/process/Classification_lib/process.js @@ -369,7 +369,6 @@ ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType) "OBJECT_ROWID", "OBJECT_TYPE" ]; - var types = db.getColumnTypes("CLASSIFICATIONSTORAGE", columns);//load once for better performance var inserts = []; var values; for (var i = 0; i < pUids.length; i++) @@ -378,7 +377,7 @@ ClassificationUtils.insertEmptyClassification = function(pUids, pObjectType) classificationvalue, pUids[i], pObjectType]; - inserts.push(["CLASSIFICATIONSTORAGE", columns, types, values]); + inserts.push(["CLASSIFICATIONSTORAGE", columns, null, values]); } db.inserts(inserts); } diff --git a/process/Communication_lib/Communication_lib.aod b/process/Communication_lib/Communication_lib.aod index a69299aa2aa56c2a3a2b1a4321e8779ff438187b..1bc1f16ef819bc6d5e27a7223595440cbc1e0d54 100644 --- a/process/Communication_lib/Communication_lib.aod +++ b/process/Communication_lib/Communication_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Communication_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Communication_lib/process.js</process> diff --git a/process/Contact_lib/Contact_lib.aod b/process/Contact_lib/Contact_lib.aod index ea8e5020017153333df78eddfd6bfd9c415e7208..3f85ffbdb21af8da880c9506eb12cdb42083f393 100644 --- a/process/Contact_lib/Contact_lib.aod +++ b/process/Contact_lib/Contact_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Contact_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Contact_lib/process.js</process> diff --git a/process/Contact_lib/process.js b/process/Contact_lib/process.js index 627ec11b149a9b0ef93163901dda95b23f7f98b9..7bbafdc693adac2eb70bf75da3d35f24790c6560 100644 --- a/process/Contact_lib/process.js +++ b/process/Contact_lib/process.js @@ -434,6 +434,26 @@ ContactUtils.getFullContactString = function() + " left join ADDRESS on ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"; } +/** + * Returns a SqlBuilder for selecting a contact with organisation, person and address. + * + * @param {String|Array|SqlBuilder} [pSelectFields] The select-part to set for the query, if it is omitted, no select will be set. + * @return {SqlBuilder} + */ +ContactUtils.getFullContactSqlBuilder = function (pSelectFields) +{ + var sql = new SqlBuilder() + .from("CONTACT") + .join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") + .leftJoin("PERSON", "PERSON.PERSONID = CONTACT.PERSON_ID") + .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID"); + + if (pSelectFields) + sql.select(pSelectFields); + + return sql; +} + /** * get the addressid of the default address * @@ -528,11 +548,41 @@ 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"); }) - return sqlMasking.concat(parts, " ", false); + return sqlMasking.concatWithSeparator(parts, " ", false); +} + +/** + * returns a sql subselect which counts all Commrestrictions from a Person and his Organisation. + * The select needs the CONTACT.CONTACTID column. + * + * @return {String} the resulting subselect + */ +ContactUtils.getCommRestrictionCount = function(pMedium, pStartDate) +{ + if (!pStartDate && pStartDate !== 0) + pStartDate = datetime.date(); + var firstLevel = new SqlBuilder() + .select("count(*)") + .from("COMMRESTRICTION") + .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium) + .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL()) + .and("COMMRESTRICTION.CONTACT_ID = CONTACT.CONTACTID"); + + var secondLevel = new SqlBuilder() + .select("count(*)") + .from("COMMRESTRICTION") + .whereIfSet("COMMRESTRICTION.MEDIUM", pMedium) + .and("COMMRESTRICTION.STARTDATE", pStartDate, SqlBuilder.LESS_OR_EQUAL()) + .and("COMMRESTRICTION.CONTACT_ID", newSelect("c1.CONTACTID").from("CONTACT", "c1") + .join("CONTACT", "c2.ORGANISATION_ID = c1.ORGANISATION_ID and c1.PERSON_ID is null", "c2") + .where("c2.CONTACTID = CONTACT.CONTACTID") + , SqlBuilder.IN()); + + return firstLevel.toString() +") + ("+secondLevel.toString(); } /** @@ -659,12 +709,12 @@ function ContactTitleRenderer(pContact, pOptions) //function that renders the contact into a sql expression (e.g. for a subselect) this._asSqlFn = function(){ var maskingUtil = new SqlMaskingUtils(); - var res = maskingUtil.concat([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ + var res = maskingUtil.concatWithSeparator([this.contact.salutation, this.contact.title, this.contact.firstname, this.contact.middlename, this.contact.lastname].filter(function (e){ return e != ""; - }), " "); + }), " ", false); //binary AND check for possibility to check serveral options if (this._options & ContactTitleRenderer.OPTIONS.IncludeOrganisation && this.contact.organisationName) - res = maskingUtil.concat([res, this.contact.organisationName], " | "); + res = maskingUtil.concatWithSeparator([res, this.contact.organisationName], " | "); return res; }; diff --git a/process/Context_lib/Context_lib.aod b/process/Context_lib/Context_lib.aod index 88f0211eacad5423f96a78a8ceaa903a1bf72cdb..85bdd8cc4de7cbecc8feed39e346e5769e89a853 100644 --- a/process/Context_lib/Context_lib.aod +++ b/process/Context_lib/Context_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Context_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Context_lib/process.js</process> diff --git a/process/Context_lib/process.js b/process/Context_lib/process.js index 31d608284325922fc657f5e9388ee3782d68e8eb..a938c5d286655fc03057e7d612d9727b01f34294 100644 --- a/process/Context_lib/process.js +++ b/process/Context_lib/process.js @@ -1,3 +1,5 @@ +import("system.logging"); +import("Util_lib"); import("system.entities"); import("system.tools"); import("system.neon"); @@ -28,7 +30,7 @@ function ContextUtils() {} */ ContextUtils.getCurrentContextId = function() { - return vars.getString("$sys.currentcontextname"); + return vars.getString("$sys.currentcontextname"); } /** @@ -85,6 +87,27 @@ ContextUtils.getEntity = function (pContextId) return project.getContextStructure(pContextId).entity; } +/** + * Returns the context associated with the entity + * + * @param {String} pEntity the name of the Entity + * @return {String} the context + */ +ContextUtils.getContextId = function (pEntity) +{ + if (!pEntity) + return null; + + let contexte = ContextUtils.getContexts(false, [], false); + + for (let i = 0; i < contexte.length; i++) { + if (ContextUtils.getEntity(contexte[i][0]) == pEntity) + return contexte[i][0]; + } + return null; + +} + /** * Returns the title of the entity associated with the context * @@ -144,7 +167,7 @@ ContextUtils.getContextConsumer = function(pContextId) case ContextUtils.getContextName("PrivatePerson"): return "PrivatePersons"; case ContextUtils.getContextName("Leadimport"): - return "Leadimport"; + return "Leadimports"; case ContextUtils.getContextName("Task"): return "Tasks"; case ContextUtils.getContextName("SupportTicket"): @@ -170,9 +193,9 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider) return ""; var conf = entities.createConfigForLoadingRows() - .entity(pEntity) - .uid(pUid) - .fields(["#CONTENTTITLE"]); + .entity(pEntity) + .uid(pUid) + .fields(["#CONTENTTITLE"]); if (pProvider) conf.provider(pProvider); @@ -181,35 +204,107 @@ ContextUtils.loadContentTitle = function(pEntity, pUid, pProvider) return rows.length === 1 ? rows[0]["#CONTENTTITLE"] : ""; } + +/** + * loads the contentdescription by using entities.getRow + * @param {String} pEntity The entity name you want to load the title for + * @param {String} pUid the uid for which to load the title + * @param {String} [pProvider] providername when instead of the default provider another provider shall be used + * + * @return the #CONTENTDESCRIPTION or "" + */ +ContextUtils.loadContentDescription = function(pEntity, pUid, pProvider) +{ + if (!pUid) + return ""; + + var conf = entities.createConfigForLoadingRows() + .entity(pEntity) + .uid(pUid) + .fields(["#CONTENTDESCRIPTION"]); + + if (pProvider) + conf.provider(pProvider); + + var rows = entities.getRows(conf); + return rows.length === 1 ? rows[0]["#CONTENTDESCRIPTION"] : ""; +} + +/** + * loads specified Fields for one Row by using entities.getRow + * @param {String} pEntity The entity name you want to load the title for + * @param {String[]} [pUid] the uids for which to load the content + * @param {String[]} [pFields] fields you want as result + * @param {String[]} [pExcludeIDs] uids you want to exclude from the list + * @param {String} pProvider providername when instead of the default provider another provider shall be used + * + * @return the Values of the Fields + */ +ContextUtils.loadContent = function(pEntity, pUid, pFields, pExcludeIDs, pProvider) +{ + if (!pEntity) + return []; + + var conf = entities.createConfigForLoadingRows() + .entity(pEntity) + .uids(pUid) + .fields(pFields); + + if (pProvider) + conf.provider(pProvider); + + if (pExcludeIDs) + { + var childsArray = [{ + "type":"row", + "name":"#UID", + "operator":"NOT_IN", + "value": JSON.stringify(pExcludeIDs), + "key": JSON.stringify(pExcludeIDs), + "contenttype":"TEXT" + }]; + + + var pFilterParent = { + "type":"group", + "operator":"OR", + "childs": childsArray + }; + + conf.filter(JSON.stringify(pFilterParent)); + } + + var rows = entities.getRows(conf); + return rows && rows.length > 0 ? rows : []; +} + + /** * - * @param {Boolean} [pFilter=false] filter only for contexts which have a mapping in ContextUtils.getSelectMap - * @param {String[]} [pBlacklist] contextIds that shall not be included (so this is a additional filter to the pFilter param) + * @param {String[]} [pBlacklist] contextIds that shall not be included * @param {Boolean} [pInvertBlacklist=false] decides whether the items in pBlacklist are excluded (false) or * everything that is NOT in pBlacklist is excluded (true) * (-> if it is a whitelist or blacklist) * * @return {String[][]} the contexts [[contextId, contextName, contextTitle], [... ], ...] */ -ContextUtils.getContexts = function(pFilter, pBlacklist, pInvertBlacklist) +ContextUtils.getContexts = function(pBlacklist, pInvertBlacklist) { - if (pFilter == undefined) - pFilter = false; if (pInvertBlacklist == undefined) pInvertBlacklist = false; + var contexts = project.getDataModels(project.DATAMODEL_KIND_CONTEXT); + var contextsStandardList = ["Organisation", "Person", "PrivatePerson", "Activity", "Salesproject", "Contract", "Offer", "Order", "Product", "Task", + "Campaign", "CampaignStep", "SupportTicket", "Leadimport"]; - if (pFilter) - { - contexts = contexts.filter(function(pContext) { - if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist) - return false; - // filter only contexts which have defined mappings in Context_lib - return ContextUtils.getSelectMap ()[pContext[0]] != undefined; - }); - } - else if (pBlacklist) + contexts = contexts.filter(function(pContext) { + if (contextsStandardList.indexOf(pContext[0]) > -1) + return true; + return false; + }); + + if (pBlacklist) { contexts = contexts.filter(function(pContext) { if (pBlacklist && pBlacklist.indexOf(pContext[0]) > -1 != pInvertBlacklist) @@ -219,16 +314,16 @@ ContextUtils.getContexts = function(pFilter, pBlacklist, pInvertBlacklist) } return contexts.map(ContextUtils._contextDataMapping).sort(function(pContext1, pContext2) - { - // sort after ContextTitle - if (pContext1[2] > pContext2[2]) - return 1; + { + // sort after ContextTitle + if (pContext1[2] > pContext2[2]) + return 1; - if (pContext1[2] < pContext2[2]) - return -1; + if (pContext1[2] < pContext2[2]) + return -1; - return 0; - }); + return 0; + }); } /** @@ -258,483 +353,136 @@ ContextUtils._contextDataMapping = function(pContext) return [pContext[0], contextName, (pContext[1] ? pContext[1] : contextName)]; } + /** - * represents a single context selection for one context - * this is usefull for objectlinks and 360° definition - * most properties are read only and can only be written with a setter + * gets the Title for a specific Context * - * @param {String} [pTableName] presets the matching property of the object - * @param {String} [pIdField] presets the matching property of the object - * @param {String} [pTitleExpression] presets the matching property of the object + * @param {String} pContextId the name of the context + * @param {String} pRowId Uid of certain Context * - * TODO: mostly temporary function until you can get fields from another Entity - * - * @class + * @return {String} The #CONTENTTITLE */ -function ContextSelector(pTableName, pIdField, pTitleExpression) +ContextUtils.getTitleByContext = function(pContextId, pRowId) { - //the >>this.propertyX = null;<< is for autocomplete in the designer - - /** - * title-definition; db-column or another sql-expression (like concating fields) as long as it returns one field - * read-only property; set it with a matching setter - * @property titleExpression - */ - this.titleExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "titleExpression"); - this.setTitleExpression(pTitleExpression); - - /** - * name of the database-table - * read-only property; set it with a matching setter - * @property tableName - */ - this.tableName = null; ProtoPropertyUtils.makeSemiReadOnly(this, "tableName"); - this.setTableName(pTableName); - - /** - * db-field for the ID of one record (UID of matching context) - * read-only property; set it with a matching setter - * @property idField - */ - this.idField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "idField"); - this.setIdField(pIdField); - - /** - * expression for additional joins to be made (addotopmaö pt table-name) - * read-only property; set it with a matching setter - * @property joinExpression - */ - this.joinExpression = null; ProtoPropertyUtils.makeSemiReadOnly(this, "joinExpression"); - /** - * db-field for the ID of the relation to a CONTACT-record - * read-only property; set it with a matching setter - * @property contactIdField - */ - this.contactIdField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "contactIdField"); - /** - * db-field that represents the date of creation - * read-only property; set it with a matching setter - * @property creationDateField - */ - this.creationDateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "creationDateField"); - /** - * db-field where the STATE-information (active/inactive) is stored (see the activeStates-property) - * read-only property; set it with a matching setter - * @property stateField - */ - this.stateField = null; ProtoPropertyUtils.makeSemiReadOnly(this, "stateField"); - /** - * array that contains IDs of states that represent an "active"-state - * read-only property; set it with a matching setter - * @property activeStates - */ - this.activeStates = null; ProtoPropertyUtils.makeSemiReadOnly(this, "activeStates"); - this.condition = null; ProtoPropertyUtils.makeSemiReadOnly(this, "condition"); - /** - * db-field that will be used as groubBy - * read-only property; set it with a matching setter - * @property groupBy - */ - this.groupBy = null; ProtoPropertyUtils.makeSemiReadOnly(this, "groupBy"); - /** - * an object which contains the subcontexts and the prepared select to get the contactIds of them. - * - * { V-- SqlBuilder with all conditions needed V-IdCollumn name (with Tablename!) V-the contexts to show for this subcontext - * "Person": "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]], - * - * "Offer" ... // you can add as many subcontexts as you wish - * } - * read-only property; set it with a matching setter - * @property subContexts - */ - this.subContexts = null; ProtoPropertyUtils.makeSemiReadOnly(this, "subContexts"); + return ContextUtils.loadContentTitle(ContextUtils.getEntity(pContextId), pRowId); } + + /** - * creates a new instance of a ContextSelector and returns it - * if given it also sets some properties (property names with matching function-parameters) - * @static - */ -ContextSelector.create = function(pTableName, pIdField, pTitleExpression) -{ - return new ContextSelector(pTableName, pIdField, pTitleExpression); -}; -/** - * @param {String} pField the fieldname that shall be returned as full string - * @return {String} full field containing tablename and the column; if the column itself is already a full qualified field that field is returned - */ -ContextSelector.prototype.getFullField = function(pField) -{ - //always keep undefined (and null) just undefined since it's never a fullQualifier and tablename.undefined is useless - if (pField == undefined) - return undefined; - if (SqlUtils.isFullFieldQualifier(pField)) - return pField; - else - return this.tableName + "." + pField; -}; -/** - * @return {String} full id field containing tablename and column; if the column itself is already a full qualified field that field is returned - */ -ContextSelector.prototype.getFullIdField = function() -{ - return this.getFullField(this.idField); -}; -/** - * @return {String} full from-expression with tablename and join-part - */ -ContextSelector.prototype.getFullFromClause = function() -{ - if (this.joinExpression) - return " " + this.tableName + " " + this.joinExpression + " "; - else - return this.tableName; - -}; -/** - * @return {Object} in the following format: - * { - * "{contactid1}": [SqlBuilder, ContextArray], - * ... - * ... - * } + * gets Data from a specific Context with entities. Functions + * + * @param {String} pContextId the title of the context + * @param {String[]} [pContextConfig] Config defined in the Provider Parameter + * @param {Object} [pFilterObj] prepeared Filter Object + * @param {String[]} [pContactId] Array of all the Contactids you want to search through + * + * @return {String[][]} An Array of Fields (["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", CONNECTIONFIELD, "DATE_NEW"]) for a certain Context */ -ContextSelector.prototype.getSubContexts = function(pParentRowId) -{ - if (this.subContexts) +ContextUtils.getContextDataViaReadEntity = function(pContextId, pContextConfig, pFilterObj, pContactId) +{ + + var connectionField = "CONTACT_ID"; + if(pContextConfig.connectionField) + connectionField = pContextConfig.connectionField; + + if(pContextConfig.childField && pContextConfig.parentField && pContextConfig.contactIdField && pContextConfig.subContext) { - var sqls = {}; - for (let contextId in this.subContexts) - { - // Copy the builder to prevent modifying the builder in this.subContexts - var select = this.subContexts[contextId][0].copy(); - - // add id-condition - if (select.whereWasCalled()) - { - select.and(this.subContexts[contextId][1], pParentRowId); - } - else - { - select.where(this.subContexts[contextId][1], pParentRowId); - } - - sqls[contextId] = [select, this.subContexts[contextId][2]]; - } + var prefilter = Utils.buildFilterObj({}, pContextConfig.contactIdField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "OR"); + var resObj = []; + + var subConf = entities.createConfigForLoadingRows() + .entity(ContextUtils.getEntity(pContextConfig.subContext)) + .fields([pContextConfig.childField]) + .filter(JSON.stringify(prefilter.filter)) - return sqls; + var subRes = entities.getRows(subConf); + for(var id in subRes) + resObj.push(subRes[id][pContextConfig.childField]); + + pFilterObj = Utils.buildFilterObj(pFilterObj, pContextConfig.parentField, "IN", "TEXT", JSON.stringify(resObj), JSON.stringify(resObj), "AND"); } else - return {}; - -}; -//setters which to nothing special; no need to document them -ContextSelector.prototype.setTitleExpression = function(pValue) -{ - this._titleExpression = pValue; - return this; -}; -ContextSelector.prototype.setTableName = function(pValue) -{ - this._tableName = pValue; - return this; -}; -ContextSelector.prototype.setIdField = function(pValue) -{ - this._idField = pValue; - return this; -}; -ContextSelector.prototype.setJoinExpression = function(pValue) -{ - this._joinExpression = pValue; - return this; -}; -ContextSelector.prototype.setContactIdField = function(pValue) -{ - this._contactIdField = pValue; - return this; -}; -ContextSelector.prototype.setCreationDateField = function(pValue) -{ - this._creationDateField = pValue; - return this; -}; -ContextSelector.prototype.setStateField = function(pValue) -{ - this._stateField = pValue; - return this; -}; -ContextSelector.prototype.setActiveStates = function(pValue) -{ - this._activeStates = pValue; - return this; -}; -/** - * sets the condition property of a ContextSelector-object - * @param {SqlBuilder} pSqlBuilder condition as SqlBuilder-object - */ -ContextSelector.prototype.setCondition = function(pSqlBuilder) -{ - this._condition = pSqlBuilder; - return this; -}; -ContextSelector.prototype.setSubContexts = function(pContexts) -{ - this._subContexts = pContexts; - return this; -}; -ContextSelector.prototype.setGroupBy = function(pValue) -{ - this._groupBy = pValue; - return this; -}; - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getSelectMap = function() -{ - var maskingUtils = new SqlMaskingUtils(); - 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'")) - .setSubContexts({ - "Person": [newSelect("CONTACTID").from("CONTACT").where("PERSON_ID is not null"), "CONTACT.ORGANISATION_ID", ["Offer", "Order", "Contract", "SupportTicket"]] - }) - ,"Person": ContextSelector.create("CONTACT", "CONTACTID") - .setTitleExpression(maskingUtils.concat([ - new ContactTitleRenderer(Contact.createWithColumnPreset()).asSql() - ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc - ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" - ,"' - '" - ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY" - ]," ")) - .setJoinExpression("join PERSON on PERSON.PERSONID = CONTACT.PERSON_ID " - + " join ORGANISATION on ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID " - + " left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID") - ,"PrivatePerson": ContextSelector.create("PERSON", "PERSONID") - .setTitleExpression(maskingUtils.concat([ - new ContactTitleRenderer(Contact.createWithColumnPresetForPrivatePerson()).asSql() - ,"' - '"//looks pretty bad; TODO: workaround till Lookups can be loaded over a link-entity; then use displayProc - ,"defaultAddress.ADDRESS", "defaultAddress.BUILDINGNO" - ,"' - '" - ,"defaultAddress.COUNTRY", "defaultAddress.ZIP", "defaultAddress.CITY" - ]," ")) - .setJoinExpression("left join CONTACT on PERSON.PERSONID = CONTACT.PERSON_ID and CONTACT.ORGANISATION_ID = '0' left join ADDRESS defaultAddress on defaultAddress.ADDRESSID = CONTACT.ADDRESS_ID") - .setContactIdField("CONTACT.CONTACTID") - ,"Activity": ContextSelector.create("ACTIVITY", "ACTIVITYID", "SUBJECT") - ,"Salesproject": ContextSelector.create("SALESPROJECT", "SALESPROJECTID") - .setTitleExpression(maskingUtils.concat([ - "'" + translate.text("Salesproject") + "'", - "' '", - maskingUtils.cast("PROJECTCODE", SQLTYPES.VARCHAR, 10), - "' | '", - "PROJECTTITLE" - ], "", false)) - .setContactIdField("CONTACT_ID") - .setCreationDateField("STARTDATE") - .setStateField("STATUS") - .setActiveStates([$KeywordRegistry.salesprojectState$open(), $KeywordRegistry.salesprojectState$postponed()]) - ,"Contract": ContextSelector.create("CONTRACT", "CONTRACTID") - .setTitleExpression(maskingUtils.concat([ - KeywordUtils.getResolvedTitleSqlPart("ContractType", "CONTRACTTYPE"), - maskingUtils.cast("CONTRACTCODE", SQLTYPES.VARCHAR, 10) - ], " ")) - .setContactIdField("CONTACT_ID") - .setCreationDateField("CONTRACTSTART") - .setStateField("CONTRACTSTATUS") - .setActiveStates([$KeywordRegistry.contractState$validLimited(), $KeywordRegistry.contractState$validUnlimited(), $KeywordRegistry.contractState$notSigned()]) - ,"Offer": ContextSelector.create("OFFER", "OFFERID") - .setTitleExpression(maskingUtils.concat([ - "'" + translate.text("Offer") + "'", - "' '", - maskingUtils.cast("OFFERCODE", SQLTYPES.VARCHAR, 10), - "'-'", - maskingUtils.cast("VERSNR", SQLTYPES.VARCHAR, 10) - ], "", false)) - .setContactIdField("CONTACT_ID") - .setCreationDateField("OFFERDATE") - .setStateField("STATUS") - .setActiveStates([$KeywordRegistry.offerStatus$open(), $KeywordRegistry.offerStatus$checked(), $KeywordRegistry.offerStatus$sent()]) - ,"Order": ContextSelector.create("SALESORDER", "SALESORDERID") - .setTitleExpression(maskingUtils.concat([ - KeywordUtils.getResolvedTitleSqlPart("OrderType", "ORDERTYPE"), - maskingUtils.cast("SALESORDERCODE", SQLTYPES.VARCHAR, 10) - ], " ")) - .setContactIdField("CONTACT_ID") - .setCreationDateField("SALESORDERDATE") - .setStateField("ORDERSTATUS") - .setActiveStates([0, 1]) - ,"Product": ContextSelector.create("PRODUCT", "PRODUCTID") - .setTitleExpression(maskingUtils.concat([ - "PRODUCTCODE", - "' | '", - "PRODUCTNAME" - ], "", false)) - ,"Task": ContextSelector.create("TASK", "TASKID", "SUBJECT") - ,"Campaign": ContextSelector.create("CAMPAIGN", "CAMPAIGNID") - .setTitleExpression(maskingUtils.concat(["CAMPAIGN.NAME", "CAMPAIGNSTEP.NAME"], " - ", false)) - .setContactIdField("CAMPAIGNPARTICIPANT.CONTACT_ID") - .setJoinExpression("left join CAMPAIGNPARTICIPANT on CAMPAIGNPARTICIPANT.CAMPAIGN_ID = CAMPAIGN.CAMPAIGNID " + - "left join CAMPAIGNSTEP on CAMPAIGNSTEP.CAMPAIGNSTEPID = CAMPAIGNPARTICIPANT.CAMPAIGNSTEP_ID") - .setCreationDateField("CAMPAIGNSTEP.DATE_START") - .setStateField("CAMPAIGN.STATUS") - .setActiveStates([$KeywordRegistry.campaignState$planning(), $KeywordRegistry.campaignState$approved()]) - ,"CampaignStep" : ContextSelector.create("CAMPAIGNSTEP", "CAMPAIGNSTEPID", "NAME") - ,"SupportTicket": ContextSelector.create("TICKET", "TICKETID", "TASK.SUBJECT") - .setJoinExpression("left join TASK on TASK.TASKID = TICKET.TASK_ID left join TASKLINK on TASKLINK.TASK_ID = TASK.TASKID") - .setCondition(newWhere("TICKET.TICKETTYPE", $KeywordRegistry.ticketType$supportTicket())) - .setContactIdField("TASKLINK.OBJECT_ROWID") - .setStateField("TASK.STATUS") - .setActiveStates([ - $KeywordRegistry.taskStatus$new(), - $KeywordRegistry.taskStatus$unassigned(), - $KeywordRegistry.taskStatus$assigned(), - $KeywordRegistry.taskStatus$inProgress(), - $KeywordRegistry.taskStatus$waiting(), - $KeywordRegistry.taskStatus$customerChecks(), - ]) - .setCreationDateField("TASK.START_DATE") - ,"BulkMail" : ContextSelector.create("BULKMAIL", "BULKMAILID", "NAME") - ,"SerialLetter" : ContextSelector.create("SERIALLETTER", "SERIALLETTERID", "TITLE") - ,"Leadimport": ContextSelector.create("LEADIMPORT", "LEADIMPORTID") - .setTitleExpression("LEADIMPORT.NAME") + { + pFilterObj = Utils.buildFilterObj(pFilterObj, connectionField, "IN", "TEXT", JSON.stringify(pContactId), JSON.stringify(pContactId), "AND"); } -} - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getNameSubselectSql = function(pContextIdDbField, pRowIdDbField) -{ - // TODO: prepared? - var select = "(case " + pContextIdDbField + " "; - - var selectMap = ContextUtils.getSelectMap () - for (let contextId in selectMap) + var fields = ["#UID", "#TITLE", "#MAPPING", "#CONTENTDESCRIPTION", "#CONTENTTITLE", connectionField, "DATE_NEW", "ACTIVE"]; + if(pContextConfig.setGroupBy) + fields.push(pContextConfig.setGroupBy); + + + var conf = entities.createConfigForLoadingRows() + .entity(ContextUtils.getEntity(pContextId)) + .fields(fields) + + if(pFilterObj) + conf.filter(JSON.stringify(pFilterObj.filter)) + + var res = []; + try//if Permissions prevent the user to read data from this context, entites.getRows throws an error. But we still wanna see the other Contexts { - select += "when '" + contextId + "' then (select " + selectMap[contextId].titleExpression + " from " + selectMap[contextId].getFullFromClause() + (pRowIdDbField ? " where " + selectMap[contextId].getFullIdField() + " = " + pRowIdDbField : " ") + ") "; + res = entities.getRows(conf); } - - select += "else 'Not defined in ContextUtils.getNameSql()!'"; - select += "end)"; - - return select; -} - -/** - * TODO: !!!temporary function until you can get fields from another Entity!!! - */ -ContextUtils.getNameSql = function(pContextId, pRowId) -{ - var selectMap = ContextUtils.getSelectMap () - if (selectMap[pContextId] != undefined) + catch(ex) { - return newSelect(selectMap[pContextId].titleExpression) - .from(selectMap[pContextId].getFullFromClause()) - .whereIfSet(selectMap[pContextId].getFullIdField(), pRowId) - .build(SqlBuilder.NORESULT_CONDITION()); + logging.log(ex) } - else - return "select 1 from person where 1=2"; + if(res.length > 0) + { + if(pContextConfig.subContext) + { + if(res[0]["#UID"] == undefined || res[0]["#TITLE"] == undefined || res[0]["#MAPPING"] == undefined || res[0]["#CONTENTDESCRIPTION"] == undefined + || res[0]["#CONTENTTITLE"] == undefined || res[0]["DATE_NEW"] == undefined || res[0]["ACTIVE"] == undefined) + throw new Error(translate.text("Some prereserved EntityFields which are necessary fot 360° are not available. Context: "+pContextId + +" Data: "+JSON.stringify(res))); + } + else if(res[0][connectionField] == undefined) + throw new Error(translate.text(connectionField+" is not defined! Context: "+pContextId)); + } + return res; } /** - * TODO: !!!temporary function until you can get fields from another Entity!!! + * gets the ContactId by using ContextUtils.loadContent() + * @param {String} pContextId The Context name + * @param {String} pRowId the uid for which to get the Contactid + * + * @return the Contactid of certain Context and Uid */ ContextUtils.getContactId = function(pContextId, pRowId) { - var selectMap = ContextUtils.getSelectMap() - if (selectMap[pContextId] != undefined && selectMap[pContextId].contactIdField) - { - return newSelect(selectMap[pContextId].contactIdField) - .from(selectMap[pContextId].tableName) - .where(selectMap[pContextId].getFullIdField(), pRowId) - .cell(); - } - else - return ""; + var res = ContextUtils.loadContent(ContextUtils.getEntity(pContextId), [pRowId], ["CONTACT_ID"])[0]["CONTACT_ID"]; + return res; } + /** - * TODO: !!!temporary function until you can get fields from another Entity!!! - * nur 360 + * gets the Count of Connections by Contactid + * @param {String} pContextId The Context name + * @param {String} pContactId The Contactid * + * @return count of datasets for that specific Context */ -ContextUtils.getContextDataSql = function(pContextId, pContactId, pWithDate, pActive, pWithState, pWithGroupBy, pUidsForFiltering, pExcludeIds) +ContextUtils.getCountByContactId = function(pContextId, pContactId) { - var selectMap = ContextUtils.getSelectMap(); - var ownContextSelector = selectMap[pContextId]; - var columns = [ownContextSelector.getFullIdField(), ownContextSelector.titleExpression]; - - if (pWithDate === true) - columns.push(ownContextSelector.getFullField(ownContextSelector.creationDateField) || "''"); - - if (pWithState === true) - { - if (ownContextSelector.stateField) - columns.push(ownContextSelector.getFullField(ownContextSelector.stateField) || "''"); - else - columns.push("''"); - } - - if (pWithGroupBy === true) - { - if (ownContextSelector.groupBy) - columns.push(ownContextSelector.getFullField(ownContextSelector.groupBy) || "''"); - else - columns.push("''"); - } - - 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(), pExcludeIds, SqlBuilder.NOT_IN()); - - if (pActive != undefined) - { - var activeStates = ownContextSelector.activeStates; - if(activeStates != null && activeStates.length > 0) - { - var condSub = newWhere(); - activeStates.forEach(function (state) - { - if (ownContextSelector.stateField) - { - if(pActive) - condSub.or(ownContextSelector.getFullField(ownContextSelector.stateField), state) - else - condSub.and(ownContextSelector.getFullField(ownContextSelector.stateField), state, SqlBuilder.NOT_EQUAL()) - } - - }); - contextDataSelect.andIfSet(condSub); - } - } - contextDataSelect.andIfSet(ownContextSelector.condition); - return contextDataSelect.build(); + return ContextUtils.getContextDataViaReadEntity(pContextId, pContactId).length; } /** - * TODO: !!!temporary function until you can get fields from another Entity!!! + * decides if a record is activ or not + * @param {String[]} pActiveStates, 1-dimensional Array of Active States + * @param {String} pDBFieldName, a DBField for comparison + * + * @return a case when that resolves the active states to true and everything else to false in that Column */ -ContextUtils.getCountByContactId = function(pContextId, pContactId) +ContextUtils.buildActiveCaseWhen = function(pActiveStates, pDBFieldName) { - var contextObject = ContextUtils.getSelectMap()[pContextId]; - var tableName = contextObject.tableName; - var contactField = contextObject.getFullField(contextObject.contactIdField) - var join = contextObject.joinExpression; - if (tableName && contactField) - { - return newSelect("count(*)") - .from(tableName + (join ? join : "")) - .where(contactField, pContactId) - .cell(true, "0"); - return count; - } - return 0; + var extendedStates = []; + for(var i = 0; i < pActiveStates.length; i++) + extendedStates.push([pActiveStates[i], 'true']); + + //As default value we choose false, so we only have true or false and therefore we can filter more easily + return SqlUtils.translateStatementWithQuotes(SqlUtils.getResolvingCaseWhen(extendedStates, pDBFieldName, false)).replace("else '' end", "else 'false' end"); } function AdminViewUtils () {} @@ -748,31 +496,45 @@ function AdminViewUtils () {} */ AdminViewUtils.open = function (pUidField, pFields) { + if (!AdminViewUtils.userHasAdminRole) + return; var uid = vars.get("$sys.uid"); if (!pUidField) pUidField = "UID"; else pUidField += " (UID)"; var rows = [ - [pUidField, pUidField, uid, "TEXT"] + [pUidField, pUidField, uid, "TEXT"] ]; if (pFields) { pFields.forEach(function (field) { - rows.push([field[0], field[0], field[1], field[2] || "TEXT"]); + if (Utils.isString(field)) + { + var fieldVar = field.startsWith("$") ? field : "$field." + field; + rows.push([field, field, vars.get(fieldVar), "TEXT"]); + } + else + rows.push([field[0], field[0], field[1], field[2] || "TEXT"]); }); } var params = { - "Uid_param" : uid, - "Rows_param" : JSON.stringify(rows) + "Uid_param": uid, + "Rows_param": JSON.stringify(rows), + "Entity_param": vars.get("$sys.currententityname") }; neon.openContext("DefaultAdminView", "DefaultAdminView_view", [uid], neon.OPERATINGSTATE_VIEW, params); } AdminViewUtils.getActionState = function () { - if (tools.currentUserHasRole("INTERNAL_ADMINISTRATOR")) + if (AdminViewUtils.userHasAdminRole()) return neon.COMPONENTSTATE_EDITABLE; return neon.COMPONENTSTATE_INVISIBLE; +} + +AdminViewUtils.userHasAdminRole = function () +{ + return tools.currentUserHasRole("INTERNAL_ADMINISTRATOR"); } \ No newline at end of file diff --git a/process/Contract_lib/Contract_lib.aod b/process/Contract_lib/Contract_lib.aod index f7e066be340112fbe6298f410624cc9ba6284dad..080920179a585c383923d1e2176a995de2bb6c7a 100644 --- a/process/Contract_lib/Contract_lib.aod +++ b/process/Contract_lib/Contract_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Contract_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Contract_lib/process.js</process> diff --git a/process/CountryInfoData_lib/CountryInfoData_lib.aod b/process/CountryInfoData_lib/CountryInfoData_lib.aod index d1612a9f77a923a06489237005292a2055f0cd74..ecc2eedbcd9ecf42c4b0af0be9586e5f1181c9e7 100644 --- a/process/CountryInfoData_lib/CountryInfoData_lib.aod +++ b/process/CountryInfoData_lib/CountryInfoData_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CountryInfoData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CountryInfoData_lib/process.js</process> diff --git a/process/CountryInfo_lib/CountryInfo_lib.aod b/process/CountryInfo_lib/CountryInfo_lib.aod index d078970229a859484e2ed6c577f386f33d404ae5..69b0a804f393c38451118b8bb66a7dcb8544aa82 100644 --- a/process/CountryInfo_lib/CountryInfo_lib.aod +++ b/process/CountryInfo_lib/CountryInfo_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CountryInfo_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CountryInfo_lib/process.js</process> diff --git a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod index 0241a4b95bb97c496d2b06b83887d46045fa7058..d58e85470416d18524f0b384981b5fb1e19eea60 100644 --- a/process/CreateActivity_workflowService/CreateActivity_workflowService.aod +++ b/process/CreateActivity_workflowService/CreateActivity_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateActivity_workflowService</name> <title>Create activity</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod index e6455f2cd5a5798b87d51712a6bc525e434c0a78..d2630a2a5638fa17a1526a519952b9c564f3c3e4 100644 --- a/process/CreateNotification_workflowService/CreateNotification_workflowService.aod +++ b/process/CreateNotification_workflowService/CreateNotification_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateNotification_workflowService</name> <title>Create notification</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateNotification_workflowService/process.js b/process/CreateNotification_workflowService/process.js index 458f665d71468ee51ec06ffda4a690cbcd472a4e..3aa7508f4b63e62ec47537b94837d14d29ef296a 100644 --- a/process/CreateNotification_workflowService/process.js +++ b/process/CreateNotification_workflowService/process.js @@ -6,7 +6,6 @@ var variables = JSON.parse(vars.get("$local.value")); var config = notification.createConfig() .notificationType("WorkflowNotification") .addUsersWithIds([variables.notificationUser || variables.USER_ID]) - .initialState(notification.STATE_UNSEEN) .caption(variables.notificationCaption || "") .description(variables.notificationDescription || ""); diff --git a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod index df1d296af52649bba991103fa19f6839afd86f3a..6e44f166f6448deeff7b7dea82ab256e34aa16c3 100644 --- a/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod +++ b/process/CreateSalesprojectTouchpoint_workflowService/CreateSalesprojectTouchpoint_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateSalesprojectTouchpoint_workflowService</name> <title>Create salesproject touchpoint</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod index 8b41b437136f9d92113d9f4cb310c3c127239e78..fa5f2a849d62b5144be2eb954f8460569e2c05ab 100644 --- a/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod +++ b/process/CreateSalesproject_workflowService/CreateSalesproject_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CreateSalesproject_workflowService</name> <title>Create salesproject</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod index 8e915687a2ad2cdd2fcdcc75bb67e37635191fdc..1a6e6266888b8ffbfd7e375eb395198a87f6b30f 100644 --- a/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod +++ b/process/CustomPlaceholder_lib/CustomPlaceholder_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>CustomPlaceholder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/CustomPlaceholder_lib/process.js</process> diff --git a/process/DataCaching_lib/DataCaching_lib.aod b/process/DataCaching_lib/DataCaching_lib.aod index 732c9784be4434a3a4776c4865536eaeb260e280..06e4baffd563073f815edf70cc7164ad632a7e5e 100644 --- a/process/DataCaching_lib/DataCaching_lib.aod +++ b/process/DataCaching_lib/DataCaching_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DataCaching_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DataCaching_lib/process.js</process> diff --git a/process/DataPrivacy_lib/DataPrivacy_lib.aod b/process/DataPrivacy_lib/DataPrivacy_lib.aod index 87e4a73a1b3e1111ba777f8296eda926464c7777..229eb4f89658803f65a7b693a026cfb3709db9a0 100644 --- a/process/DataPrivacy_lib/DataPrivacy_lib.aod +++ b/process/DataPrivacy_lib/DataPrivacy_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DataPrivacy_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DataPrivacy_lib/process.js</process> diff --git a/process/DataPrivacy_lib/process.js b/process/DataPrivacy_lib/process.js index da986784dd28531ee4e18bfb071b17937fc31e4f..009bd8c7c52fb1a6d1363219791c80756df4528f 100644 --- a/process/DataPrivacy_lib/process.js +++ b/process/DataPrivacy_lib/process.js @@ -200,7 +200,7 @@ DataPrivacyType.get = function(pKey) // TODO: update and fix Address_lib and use it (and remove format-functions in PostalAddress_lib) var entityConfig = entities.createConfigForLoadingRows() .entity("Address_entity") - .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "REGION", "PROVINCE"]); + .fields(["ADDRESSID", "ADDRESS", "ADDRESSADDITION", "ADDRIDENTIFIER", "BUILDINGNO", "ZIP", "CITY", "COUNTRY", "DISTRICT", "PROVINCE"]); if (pAddressId) { diff --git a/process/Data_lib/Data_lib.aod b/process/Data_lib/Data_lib.aod index 7e6dc0e007d710b42680bd618e2e6e4889e0296d..316134e4f970129928126e6cc33547d76b580e79 100644 --- a/process/Data_lib/Data_lib.aod +++ b/process/Data_lib/Data_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Data_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Data_lib/process.js</process> diff --git a/process/Date_lib/Date_lib.aod b/process/Date_lib/Date_lib.aod index 9833cb86c53bc720131800ef98c93138e6b61db2..4442988df03042c92262a00d87308c4785e62828 100644 --- a/process/Date_lib/Date_lib.aod +++ b/process/Date_lib/Date_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Date_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Date_lib/process.js</process> diff --git a/process/Dependency_lib/Dependency_lib.aod b/process/Dependency_lib/Dependency_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..be3eec18d19dfe0ecd4abba618560bb14d59a086 --- /dev/null +++ b/process/Dependency_lib/Dependency_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>Dependency_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Dependency_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/Dependency_lib/process.js b/process/Dependency_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..1f4e1267a8ed2a749d255f6560ec704e5fec1d28 --- /dev/null +++ b/process/Dependency_lib/process.js @@ -0,0 +1,103 @@ + +function Dependency(){} + +/** + * This function is the template for the getUIDsfn-Function in the Dependency.mapping + */ +Dependency.templateFunction = function (pTableField) { + return function (pRowData, pChangedData) { + let res = []; + if (pRowData[pTableField]) + res.push(pRowData[pTableField]) + if (pChangedData[pTableField] && pChangedData[pTableField] != pRowData[pTableField]) + res.push(pChangedData[pTableField]) + return res; + } +} + +/** + * Returns the Mapping of the Dependencies. + * + * The mapping is structured as follows: <br> + * + * @example { "Entity_entity" : { "Dependency_entity": { "getUIDsfn" : fucntion (pRowData, pChangedData) {return //the IDs of the EntityField } } } } + * + * @return {Object} + */ +Dependency.mapping = function () +{ + return { + "Address_entity": { + "Organisation_entity" : { + "options" : { + "isObservable" : true + }, + "getUIDsfn" : function (pRowData, pChangedData) { + var tableField = "ADDRESS.CONTACT_ID"; + var res = []; + if (pRowData[tableField]) + res.push(pRowData[tableField]) + if (pChangedData[tableField] && pChangedData[tableField] != pRowData[tableField]) + res.push(pChangedData[tableField]) + return res; + } + } + } + }; +}; + +/** + * Returns the dependencies on the entity + * + * @param {String} [pEntity] the name of the entity + * @param {Object} [pOptionFilter] the Object must be handed over in the format: { "option" : true/false } + * + * @example + * Dependency.getDependency("Organisation_entity", {"isObservable" : true }); + * @example + * Dependency.getDependency("Organisation_entity", {})); + * @example + * Dependency.getDependency("Organisation_entity")); + * + * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array + */ +Dependency.getDependency = function (pEntity, pOptionFilter) { + if (Dependency.mapping()[pEntity]) + { + return Object.keys(Dependency.mapping()[pEntity]).filter(function (key) { + return (!pOptionFilter || Object.keys(pOptionFilter).every(function (pOption) { + let option = Dependency.mapping()[pEntity][key]["options"][pOption] + return option && pOptionFilter[pOption] == option; + })); + }); + } + + + return []; +}; + +/** + * Returns the dependencies that this entity has on others + * + * @param {String} [pEntity] the name of the entity + * @param {Object} [pOptionFilter] the Object must be handed over in the format: { "option" : true/false } + * + * @example + * Dependency.getReverseDependency("Organisation_entity", {"isObservable" : true }); + * @example + * Dependency.getReverseDependency("Organisation_entity", {})); + * @example + * Dependency.getReverseDependency("Organisation_entity")); + * + * @return {String[]} the founded Dependencies. If no one is found, you get an empty Array + */ +Dependency.getReverseDependency = function (pEntity, pOptionFilter) { + return Object.keys(Dependency.mapping()).filter(function (key) { + return Dependency.mapping()[key][pEntity] && (!pOptionFilter || Object.keys(pOptionFilter).every(function (pOption){ + let option = Dependency.mapping()[key][pEntity]["options"][pOption] + return option && pOptionFilter[pOption] == option; + })); + }); +} + + diff --git a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod index f7dede09487b8661444e1673ef88ecca8b415c21..65a45cc2df2f4d6e372ede48d756207df60b06fd 100644 --- a/process/DocumentTemplate_lib/DocumentTemplate_lib.aod +++ b/process/DocumentTemplate_lib/DocumentTemplate_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DocumentTemplate_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/DocumentTemplate_lib/documentation.adoc</documentation> diff --git a/process/DocumentTemplate_lib/process.js b/process/DocumentTemplate_lib/process.js index 68621c5eef9d557f3fe3168e8f131f3c8cd69adf..2f1507904e3a4016dab89bd39b365c77ef59b0b7 100644 --- a/process/DocumentTemplate_lib/process.js +++ b/process/DocumentTemplate_lib/process.js @@ -745,10 +745,10 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData var bodybegin = contentXml.indexOf("<office:body>"); var bodyend = contentXml.indexOf("</office:body>") + 14; - var bodyTemplate = contentXml.substring(bodybegin, bodyend); + var bodyTemplate = contentXml.slice(bodybegin, bodyend); var fullBody = ""; //body that contains all pages (required when the replacing is done for several contacts) - var beforeBody = contentXml.substring(0, bodybegin); - var afterBody = contentXml.substr(bodyend); + var beforeBody = contentXml.slice(0, bodybegin); + var afterBody = contentXml.slice(bodyend); for (let i = 0, l = pReplacements.length; i < l; i++) { @@ -767,27 +767,30 @@ DocumentTemplate.prototype._getReplacedODT = function (pReplacements, pTableData let tables = pTableData[i] || []; - let fromIndex = 0; + let tableEnd = 0; for (let tblIndex = 0; tblIndex < tables.length; tblIndex++) //iterate over all tables in the document { let tableData = tables[tblIndex]; if (tableData && tableData.length > 0) { - fromIndex = currentBody.indexOf("</table:table>", fromIndex) + 14; - if (fromIndex === -1) //stop if there is no table + tableEnd = currentBody.indexOf("</table:table>", tableEnd) + 14; + if (tableEnd === -1) //stop if there is no table break; - let rowBegin = currentBody.lastIndexOf("<table:table-row", fromIndex); + let rowBegin = currentBody.slice(0, tableEnd).lastIndexOf("<table:table-row"); let rowEnd = currentBody.indexOf("</table:table-row>", rowBegin) + 18; - let afterTable = currentBody.substr(rowEnd); - let tableRow = currentBody.substring(rowBegin, rowEnd); - currentBody = currentBody.substring(0, rowBegin); + let afterTable = currentBody.slice(rowEnd); + let tableRow = currentBody.slice(rowBegin, rowEnd); + tableEnd -= tableRow.length; + currentBody = currentBody.slice(0, rowBegin); for (let rowIndex = 0; rowIndex < tableData.length; rowIndex++) { let tableRowData = tableData[rowIndex]; - currentBody += that._replaceText(tableRow, tableRowData); + let replacedRow = that._replaceText(tableRow, tableRowData); + currentBody += replacedRow; + tableEnd += replacedRow.length; } currentBody += afterTable; } diff --git a/process/Document_lib/Document_lib.aod b/process/Document_lib/Document_lib.aod index 9f2ede3e40f379602f2d598e9027e4605ab4044c..cc120d3f86f8378ebbaeb9f71e07b807bcc2b1b8 100644 --- a/process/Document_lib/Document_lib.aod +++ b/process/Document_lib/Document_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Document_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Document_lib/process.js</process> diff --git a/process/DocxTemplater_lib/DocxTemplater_lib.aod b/process/DocxTemplater_lib/DocxTemplater_lib.aod index 3c96ec6b8264873a8317f644ec78bb7e59cd268b..8dfbdd5ebc9fd32efaff4ea00e28b127598ba762 100644 --- a/process/DocxTemplater_lib/DocxTemplater_lib.aod +++ b/process/DocxTemplater_lib/DocxTemplater_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DocxTemplater_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DocxTemplater_lib/process.js</process> diff --git a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod index 17d38fd00ac39e96737a745e8e7ce109efd1e8ad..6b45659f204354af0a6d1a39a810a6f008eda16c 100644 --- a/process/DuplicateScanner_lib/DuplicateScanner_lib.aod +++ b/process/DuplicateScanner_lib/DuplicateScanner_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>DuplicateScanner_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/DuplicateScanner_lib/process.js</process> diff --git a/process/EmailUtil_lib/EmailUtil_lib.aod b/process/EmailUtil_lib/EmailUtil_lib.aod index 04b24ec7e102599577d29f2cea0cc85e7c4f048d..694639f440cc39e293d9a1960e890fdeb056aedb 100644 --- a/process/EmailUtil_lib/EmailUtil_lib.aod +++ b/process/EmailUtil_lib/EmailUtil_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>EmailUtil_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/EmailUtil_lib/process.js</process> diff --git a/process/Email_lib/Email_lib.aod b/process/Email_lib/Email_lib.aod index 6022256dea0248db39f796a2a79b0e55178d4044..d1b4a5a2f481c273f871c407b1018c4dbbae2a98 100644 --- a/process/Email_lib/Email_lib.aod +++ b/process/Email_lib/Email_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Email_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Email_lib/process.js</process> diff --git a/process/Employee_lib/Employee_lib.aod b/process/Employee_lib/Employee_lib.aod index 1a08f91b6ef81042668340de79dfea0687a520e6..bf491daa912ecb65c240d820ce73baac879246c8 100644 --- a/process/Employee_lib/Employee_lib.aod +++ b/process/Employee_lib/Employee_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Employee_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Employee_lib/process.js</process> diff --git a/process/Employee_lib/process.js b/process/Employee_lib/process.js index 34e15d5760485d03481f9a69ca15c32428554da5..40db215e8d07d55f15352bf242cb9140f5ffa5ca 100644 --- a/process/Employee_lib/process.js +++ b/process/Employee_lib/process.js @@ -146,8 +146,14 @@ EmployeeUtils.hasRelations = function (pContactId) */ EmployeeUtils.isUser = function (pContactId) { - var user = tools.getUserByAttribute(tools.CONTACTID, pContactId); - return user != null; + return EmployeeUtils.getUserByContactId(pContactId) != null; +} + +EmployeeUtils.getUserByContactId = function (pContactId) +{ + if (!pContactId) + return null; + return tools.getUserByAttribute(tools.CONTACTID, pContactId); } /** diff --git a/process/Entity_lib/Entity_lib.aod b/process/Entity_lib/Entity_lib.aod index d106b77a163c3a6f9266ffd622878cd794b9699a..81c2102218a1279f39ab1d8cb6516a0de085512f 100644 --- a/process/Entity_lib/Entity_lib.aod +++ b/process/Entity_lib/Entity_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Entity_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Entity_lib/process.js</process> diff --git a/process/EwsClient_lib/EwsClient_lib.aod b/process/EwsClient_lib/EwsClient_lib.aod index 6343b20344c5462d4d714e1bb7cc697669244611..988c9f615a2ca71f5859f8ec0253be800cdf9b83 100644 --- a/process/EwsClient_lib/EwsClient_lib.aod +++ b/process/EwsClient_lib/EwsClient_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>EwsClient_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/EwsClient_lib/process.js</process> diff --git a/process/ExportTemplate_lib/ExportTemplate_lib.aod b/process/ExportTemplate_lib/ExportTemplate_lib.aod index 7caa047e49c2fef06484706319038c76196b7408..347c2bddef076b805409a78895a51a36914f6f32 100644 --- a/process/ExportTemplate_lib/ExportTemplate_lib.aod +++ b/process/ExportTemplate_lib/ExportTemplate_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ExportTemplate_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ExportTemplate_lib/process.js</process> diff --git a/process/Favorites_lib/Favorites_lib.aod b/process/Favorites_lib/Favorites_lib.aod index cae0fb68babcc9bc0d63f870308e1571808c527b..1512c3b435da8286670c2c886d709582b7b5e4c7 100644 --- a/process/Favorites_lib/Favorites_lib.aod +++ b/process/Favorites_lib/Favorites_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Favorites_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Favorites_lib/process.js</process> diff --git a/process/FilterCondition_lib/FilterCondition_lib.aod b/process/FilterCondition_lib/FilterCondition_lib.aod index 501b03729ea169b526cad1548517b937c6dfab68..a69dbb1ec7562964c049d98c602b3e2fc523d214 100644 --- a/process/FilterCondition_lib/FilterCondition_lib.aod +++ b/process/FilterCondition_lib/FilterCondition_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>FilterCondition_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/FilterCondition_lib/process.js</process> diff --git a/process/FilterViewAction_lib/FilterViewAction_lib.aod b/process/FilterViewAction_lib/FilterViewAction_lib.aod index 48c19eee90b9f6d0af7eef5c7d56053ce1cbb706..83be35832aac8118a4ea6c6f5303da92279e165d 100644 --- a/process/FilterViewAction_lib/FilterViewAction_lib.aod +++ b/process/FilterViewAction_lib/FilterViewAction_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>FilterViewAction_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/FilterViewAction_lib/process.js</process> diff --git a/process/FilterViewAction_lib/process.js b/process/FilterViewAction_lib/process.js index b0fa04291d03107498b6eaf03adbe5aa17326186..afd89d4d6d45e7afbd01146356a20eadd053896f 100644 --- a/process/FilterViewAction_lib/process.js +++ b/process/FilterViewAction_lib/process.js @@ -40,7 +40,7 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) { return new SqlBuilder() .selectDistinct("CONTACT.CONTACTID") - .from("PERSON") + .from("ORGANISATION") .join("CONTACT", newWhere("ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID").and("CONTACT.PERSON_ID is null")) .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .leftJoin("CLASSIFICATIONSTORAGE", "CLASSIFICATIONSTORAGE.OBJECT_ROWID = CONTACT.CONTACTID") @@ -52,7 +52,10 @@ FilterViewActionUtils.getUidsByEntityFilter = function (pContext, pFilter) var loadRowsConfig = entities.createConfigForLoadingRows() .entity(ContextUtils.getEntity(pContext)) .fields(["#UID"]) - .filter(JSON.stringify(pFilter.filter || pFilter)); + if (pFilter.filter) + loadRowsConfig.filter(JSON.stringify(pFilter.filter)); + else if (pFilter) + loadRowsConfig.filter(JSON.stringify(pFilter)); return entities.getRows(loadRowsConfig).map(function (row) { diff --git a/process/Html_lib/Html_lib.aod b/process/Html_lib/Html_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..52d9fb2676cc9bd5c6830314d4ea3dc03f5c77bb --- /dev/null +++ b/process/Html_lib/Html_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>Html_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/Html_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/Html_lib/process.js b/process/Html_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..b12525e1ad245069dc619c664cc4621471a7c961 --- /dev/null +++ b/process/Html_lib/process.js @@ -0,0 +1,149 @@ +function SimpleHtmlObject(pHtmlString, pUpdateFunc, pUpdateId) +{ + this.htmlObj = {head:{headers:"",style:""}, body:{content:""}}; + this.updateFunc = pUpdateFunc || null; + this.updateId = pUpdateId || null; + + if(pHtmlString && typeof pHtmlString === "string") + this.readHTML(pHtmlString); +} + +SimpleHtmlObject.getInstance = function(pHtmlString, pUpdateFunc, pUpdateId) +{ + return new SimpleHtmlObject(pHtmlString, pUpdateFunc, pUpdateId); +} + +SimpleHtmlObject.prototype.style = function(pCss) +{ + this.htmlObj.head.style = (pCss) ? pCss : ""; + return this; +} + +SimpleHtmlObject.prototype.body = function(pContent) +{ + this.htmlObj.body.content = (pContent) ? pContent : ""; + return this; +} + +SimpleHtmlObject.prototype.headers = function(pHeaders) +{ + this.htmlObj.head.headers = (pHeaders) ? pHeaders : ""; + return this; +} + +SimpleHtmlObject.prototype.readTagContent = function (pIn, pTag) +{ + var ret = null; + var openTag = new RegExp("<" + pTag + ">","i"); + var closeTag = new RegExp("<\\/" + pTag + ">","i"); + //If for some reason + if(pIn.search(new RegExp("<" + pTag + ".*\\/>","i")) > 0) + ret = ""; + else + { + var start = pIn.search(openTag); + var end = pIn.search(closeTag); + if(start > -1 && end > -1) + ret = pIn.substring(start+(pTag.length+2), end); + } + + return ret; +} + +SimpleHtmlObject.prototype.accumulateStyleTags = function(pIn) +{ + var htmlString = pIn; + var matches = htmlString.match(/<STYLE.*>.*<\/STYLE>/gi); + + var styles = ""; + + for(let i = 0; matches && i < matches.length; i++) + { + styles += this.readTagContent(matches[i], "STYLE") + "\n"; + } + + return styles; +} + +SimpleHtmlObject.prototype.readHTML = function(pInput) +{ + var htmlString = pInput; + //if no HTML opening Tag is present, assume its pure body content + try + { + if(htmlString.search(/<HTML>/gi) < 0) + this.body(htmlString); + else + { + this.htmlObj.body.content = this.readTagContent(htmlString, "BODY"); + //Getting Headers without style info, because we store them seperately + this.htmlObj.head.headers = this.readTagContent(htmlString, "HEAD").replace(/<STYLE.*>.*<\/STYLE>/gi,""); + this.htmlObj.head.style = this.accumulateStyleTags(htmlString); + } + + return + } + catch(ex) + { + var fixedHTML = HtmlFixer.getInstance(pInput).fixHtml(); + if(this.updateFunc && typeof this.updateFunc == "function" && this.updateId) + this.updateFunc(fixedHTML, this.updateId); + + this.readHTML(fixedHTML); + return + } +} + +SimpleHtmlObject.prototype.toString = function() +{ + return "<HTML>\n" + + "<HEAD>\n" + + this.htmlObj.head.headers + (this.htmlObj.head.headers.length > 0 ? "\n" : "") + + "<STYLE type='text/css'>" + this.htmlObj.head.style + "</STYLE>" + "\n" + + "</HEAD>\n" + + "<BODY>\n" + + this.htmlObj.body.content + "\n" + + "</BODY>\n" + +"</HTML>"; +} + +SimpleHtmlObject.prototype.getBody = function() +{ + return this.htmlObj.body.content.slice(0); +} + +SimpleHtmlObject.prototype.getStyle = function() +{ + return this.htmlObj.head.style.slice(0); +} + + +function HtmlFixer(pIn) +{ + this.htmlString = pIn || ""; +} + +HtmlFixer.getInstance = function(pIn) +{ + return new HtmlFixer(pIn); +} + +HtmlFixer.prototype.fixHtml = function() +{ + var htmlObj = SimpleHtmlObject.getInstance(); + var readTag = htmlObj.readTagContent; //borrow a function from another Object, so i don't have to code the same thing twice + + //get a copy of the HTML, so we can modify it without chainging the original + var toFix = this.htmlString.slice(0); + + var style = readTag(toFix,"STYLE"); + var head = readTag(toFix,"HEAD"); + var body = readTag(toFix,"BODY"); + + if(!body) + { + body = toFix.replace(/<HEAD>.*<\/HEAD>/gi,"").replace(/(<HTML>|<\/HTML>)/gi,""); + } + + return htmlObj.headers(head).style(style).body(body).toString(); +} \ No newline at end of file diff --git a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod index bda7727edbe38bf67567ed6bf614368f276cacc6..e5e687932c1f9a7c032b98a697d4cce04b62c23e 100644 --- a/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod +++ b/process/ImporterCustomMappingFunctions_lib/ImporterCustomMappingFunctions_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterCustomMappingFunctions_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/ImporterCustomMappingFunctions_lib/documentation.adoc</documentation> diff --git a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod index 8a5c80a490d63a3c52aecaa1f3c2fd22e206c0e0..9c1fdace0d76d26c686e2696f82367c4b9520898 100644 --- a/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod +++ b/process/ImporterMappingFunctions_lib/ImporterMappingFunctions_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterMappingFunctions_lib</name> <comment></comment> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/ImporterMappingFunctions_lib/process.js b/process/ImporterMappingFunctions_lib/process.js index 1598b0c0d197065131f90b301d060411762ecb49..f85d4a3f1b1f45c8e8079a2efe776a0208d07e1c 100644 --- a/process/ImporterMappingFunctions_lib/process.js +++ b/process/ImporterMappingFunctions_lib/process.js @@ -142,7 +142,7 @@ function iAttribute(pObject) if (i == 0) { - var parent = "NULL"; + var parent = null; // select ab_attributeid from AB_ATTRIBUTE where ATTRIBUTE_NAME = 'Subordinate campaign of' and attribute_parent_id is null id = newSelect(ab_attributeId, alias).from(ab_attribute).where(attribute_name, attributes[i]) .and(attribute_parent_id + " is null").cell(); @@ -158,10 +158,18 @@ function iAttribute(pObject) { id = util.getNewUUID(); if (attributes.length == i+1) type = attributeType; + //TODO: add insertNoWait to instantly add AB_ATTRIBUTE records; //this ensures that nothing is in the funcBuffer that does not exist in the database //TODO: check: are COMOB-values added automatically? var values = [id, parent, attributes[i], type, "1"]; + + if(parent == null) + { + values = [id, attributes[i], type, "1"]; + columns = [ab_attributeId, attribute_name, attribute_type, attribute_active]; + } + this.insertData(ab_attribute, columns, null, values, alias); } pathToFollow["childs"][attributes[i]]["id"] = id; diff --git a/process/ImporterTest_lib/ImporterTest_lib.aod b/process/ImporterTest_lib/ImporterTest_lib.aod index e1204321106696757a47000f28e10cc890d73182..18c823d8efb53c2729837bed17354bcc5d518145 100644 --- a/process/ImporterTest_lib/ImporterTest_lib.aod +++ b/process/ImporterTest_lib/ImporterTest_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ImporterTest_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ImporterTest_lib/process.js</process> diff --git a/process/Importer_lib/Importer_lib.aod b/process/Importer_lib/Importer_lib.aod index 157f0d47a73b0864183bb16bdd52a1df8aa60151..1d6a37d39b4020a34413b08f937d71f1b2aa6434 100644 --- a/process/Importer_lib/Importer_lib.aod +++ b/process/Importer_lib/Importer_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Importer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Importer_lib/documentation.adoc</documentation> diff --git a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod index 9d36946fdfeba69161bdfea00b2fb36fff5e9703..6659a5fab6a825cf1ac27042fa364121ef42d443 100644 --- a/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod +++ b/process/IncomingCallExecutor_lib/IncomingCallExecutor_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IncomingCallExecutor_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IncomingCallExecutor_lib/process.js</process> diff --git a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod index 1dbef1a882583c24721c0d35583dfdc1506ef5f4..5d940a9124d30b9cfdbfa030b459f3802d9e8139 100644 --- a/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod +++ b/process/IncomingEmailExecutor_lib/IncomingEmailExecutor_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IncomingEmailExecutor_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IncomingEmailExecutor_lib/process.js</process> diff --git a/process/IncomingEmailExecutor_lib/process.js b/process/IncomingEmailExecutor_lib/process.js index 555f4f161b3e60e782158c1a1aa1a632a5733c50..18756c30f4dfb3005f0f0d06f5ea3ab27797acde 100644 --- a/process/IncomingEmailExecutor_lib/process.js +++ b/process/IncomingEmailExecutor_lib/process.js @@ -266,7 +266,23 @@ IncomingEmailExecutor.prototype._getProcessingFunction = function (pIsSender, pT } else { - var link = [(contactPersonId == "" ? "Organisation" : "Person"), contactId]; + var context = contactPersonId == "" ? "Organisation" : "Person" + + if(context == "Person")//add Organisation to the Activity as Link + { + var orgData = newSelect(["CONTACT.CONTACTID", "CONTACT.STATUS"], this._alias) + .from("CONTACT") + .join("CONTACT", "anyContact.ORGANISATION_ID = CONTACT.ORGANISATION_ID and CONTACT.PERSON_ID is null", "anyContact") + .whereIfSet(["CONTACT", "CONTACTID", "anyContact"], contactId) + .arrayRow() + + if (orgData[1] == $KeywordRegistry.contactStatus$active()) + pTargetArray["prefered"].push(["Organisation", orgData[0]]); + else + pTargetArray["failback"].push(["Organisation", orgData[0]]); + } + + var link = [context, contactId]; if (isContactActive) pTargetArray["prefered"].push(link); else diff --git a/process/IndexSearch_lib/IndexSearch_lib.aod b/process/IndexSearch_lib/IndexSearch_lib.aod index bfc314526ea673c93e94af2e8fae2d019e835386..b5a2aacd8c33062115f137291582acd7c0d8a36b 100644 --- a/process/IndexSearch_lib/IndexSearch_lib.aod +++ b/process/IndexSearch_lib/IndexSearch_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>IndexSearch_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/IndexSearch_lib/process.js</process> diff --git a/process/JditoFilter_lib/JditoFilter_lib.aod b/process/JditoFilter_lib/JditoFilter_lib.aod index e6721ea4e24d19d56ce2a3054d799e994536ed7c..1276959dc464987cf335240fa6c934a9261a328c 100644 --- a/process/JditoFilter_lib/JditoFilter_lib.aod +++ b/process/JditoFilter_lib/JditoFilter_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>JditoFilter_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/JditoFilter_lib/documentation.adoc</documentation> diff --git a/process/JditoFilter_lib/process.js b/process/JditoFilter_lib/process.js index 8480664cc40d733bd5b2630cdabfee9efb17de21..e6e2ec67865fb6d45cc71b1a70860547c96540f8 100644 --- a/process/JditoFilter_lib/process.js +++ b/process/JditoFilter_lib/process.js @@ -6,6 +6,110 @@ import("system.datetime"); //@TODO: add support for permissions to the lib +/** + * object representing a filter-condition + * + * @param {Object} pGroup + */ +function FilterConditionGroup (pGroup) +{ + if (pGroup && "filter" in pGroup) + pGroup = pGroup.filter; + + var operator = pGroup ? pGroup.operator : "AND"; + var childs = pGroup ? pGroup.childs : []; + this.type = "group"; + this.operator = operator; + _removeEmptyGroups(childs); + this.childs = childs.map(function (child) + { + if (child.type === "group") + return new FilterConditionGroup(child); + return child; + }); + + function _removeEmptyGroups (pCurrentArray) + { + for (let i = 0; i < pCurrentArray.length; i++) + { + let row = pCurrentArray[i]; + if (row.type == "group") + { + _removeEmptyGroups(row.childs); + if (row.childs.length === 0) + pCurrentArray.splice(i--, 1); + } + } + } +} + +/** + * Calls the given function for every filter row/group and returns the value if the function returns something truthy + * + * @param {Function} pCallbackFn function that tests the values + * @return {Object} the first row/group that meets the conditions + */ +FilterConditionGroup.prototype.find = function (pCallbackFn) +{ + for (let i = 0; l = this.childs.length; i++) + { + let child = this.childs[i]; + if (pCallbackFn(child)) + return child; + if (child.type === "group") + return child.find(pCallbackFn); + } +} + +/** + * Searches the filter for a row with the given name + * + * @param {String} pName the name of the row + * @return {Object} the desired row, if found + */ +FilterConditionGroup.prototype.getRow = function (pName) +{ + return this.find(function (row) + { + return row.type === "row" && row.name == pName; + }); +} + +FilterConditionGroup.prototype.reduce = function (pRowCallbackFn, pAccumulatorGeneratorFn, pMergeFn) +{ + return _reduce(this); + + function _reduce (pRow, pAccumulator, pOperator) + { + if (pRow.type === "group") + { + var accumulator = pAccumulatorGeneratorFn(); + for (let i = 0, l = pRow.childs.length; i < l; i++) + { + accumulator = _reduce(pRow.childs[i], accumulator, pRow.operator); + } + if (pAccumulator === undefined || pAccumulator === null) + return accumulator; + return pMergeFn(pAccumulator, accumulator, pRow.operator); + } + else if (pRow.type === "row") + { + return pRowCallbackFn(pAccumulator, pRow, pOperator); + } + return undefined; + } +} + +/** + * Checks if the filter group is empty + * + * @return {Boolean} true if the filter is empty + */ +FilterConditionGroup.prototype.isEmpty = function () +{ + return this.childs.length === 0; +} + /** * object for filtering records * diff --git a/process/KeywordAttribute_test/KeywordAttribute_test.aod b/process/KeywordAttribute_test/KeywordAttribute_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..d22a7e77434dce92542facb54aabfd1a93d5a438 --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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/KeywordData_lib/KeywordData_lib.aod b/process/KeywordData_lib/KeywordData_lib.aod index a4aab38ec5e70adb742a4c84ca34d1428449465f..6955ec39f1f168d9c31fb731c2d6aa16fd02b00c 100644 --- a/process/KeywordData_lib/KeywordData_lib.aod +++ b/process/KeywordData_lib/KeywordData_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KeywordData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KeywordData_lib/process.js</process> diff --git a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod index f16c2160c96dbf655bd3d9e8c09fa6cdf23fe58f..3e8c6225484280a86952143b84f07255692204c7 100644 --- a/process/KeywordRegistry_basic/KeywordRegistry_basic.aod +++ b/process/KeywordRegistry_basic/KeywordRegistry_basic.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>KeywordRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/KeywordRegistry_basic/process.js</process> diff --git a/process/KeywordRegistry_basic/process.js b/process/KeywordRegistry_basic/process.js index aa1c2042a6007f78f2d2311d85b15f3e3e7db3c2..eaa206920ca8d3e012f686c6830db4b63d9942fd 100644 --- a/process/KeywordRegistry_basic/process.js +++ b/process/KeywordRegistry_basic/process.js @@ -296,3 +296,16 @@ $KeywordRegistry.workflowCategory = function(){return "WorkflowCategory";}; $KeywordRegistry.notificationState = function(){ return "NotificationState";}; $KeywordRegistry.notificationState$unseen = function(){return "UNSEEN";}; $KeywordRegistry.notificationState$seen = function(){return "SEEN";}; + +$KeywordRegistry.discussionStatus = function(){return "DiscussionStatus";} +$KeywordRegistry.discussionStatus$acitve = function(){return "ACTIVE";} +$KeywordRegistry.discussionStatus$closed = function(){return "CLOSED";} + +$KeywordRegistry.knowledgeType = function(){return "KnowledgeType";} +$KeywordRegistry.knowledgeType$knowledgeBase = function(){return "KNOWLEDGEBASE";} +$KeywordRegistry.knowledgeType$editorial = function(){return "EDITORIAL";} + +$KeywordRegistry.knowledgePublishLevel = function(){return "KnowledgePublishLevel";} +$KeywordRegistry.knowledgePublishLevel$internal = function(){return "INTERNAL";} +$KeywordRegistry.knowledgePublishLevel$partner = function(){return "PARTNER";} +$KeywordRegistry.knowledgePublishLevel$public = function(){return "PUBLIC";} \ No newline at end of file diff --git a/process/Keyword_lib/Keyword_lib.aod b/process/Keyword_lib/Keyword_lib.aod index 2dd2a647ff95df46a7e1b5d118e021129d1d30d7..641f19343bb3f869b69ebb3c2b0bfd8464c32229 100644 --- a/process/Keyword_lib/Keyword_lib.aod +++ b/process/Keyword_lib/Keyword_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Keyword_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Keyword_lib/process.js</process> diff --git a/process/Keyword_lib/process.js b/process/Keyword_lib/process.js index ea1736e5c13412a67527ebff0a4ab5d4bdae0293..994fd55c07d07fda603f24db728838663dd844f2 100644 --- a/process/Keyword_lib/process.js +++ b/process/Keyword_lib/process.js @@ -107,6 +107,7 @@ KeywordUtils.getContainerNames = function() //do not cache this list since // a) the list can easly change when a new container is created // b) where this is called it's not relevant in terms of performance + //!SqlBuilder var list = db.array(db.COLUMN, "select distinct AB_KEYWORD_ENTRY.CONTAINER from AB_KEYWORD_ENTRY order by AB_KEYWORD_ENTRY.CONTAINER asc"); return list; }; diff --git a/process/Keyword_test/Keyword_test.aod b/process/Keyword_test/Keyword_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..fa9513b2863452c919eb7342a1f1fd5b0d3cfd27 --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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/KnowledgeManagement_lib/KnowledgeManagement_lib.aod b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..38b9d6a998f6bef55bf0a50b487a124f62e6de18 --- /dev/null +++ b/process/KnowledgeManagement_lib/KnowledgeManagement_lib.aod @@ -0,0 +1,10 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>KnowledgeManagement_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/KnowledgeManagement_lib/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/KnowledgeManagement_lib/process.js b/process/KnowledgeManagement_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..6abec985abdfb8fa7a47a556f2a19baeeb5f74c6 --- /dev/null +++ b/process/KnowledgeManagement_lib/process.js @@ -0,0 +1,1179 @@ +import("system.project"); +import("system.fileIO"); +import("system.translate"); +import("system.tools"); +import("system.util"); +import("system.datetime"); +import("system.vars"); +import("system.db"); +import("system.logging"); +import("Html_lib"); +import("Sql_lib"); +import("Attribute_lib"); +import("AttributeRegistry_basic"); +import("Keyword_lib"); +import("KeywordRegistry_basic"); +import("Util_lib"); +import("system.tools"); +import("system.neon"); +import("system.text"); + +/** + * Object that contains function for displying the knowledge entries + * @param {String} pHtml HTML Script as string. + * @param {String} pKnowledgeId Id of the knowledge entry, that's represented by this object + */ +function KnowledgeManagementModel(pHtml, pKnowledgeId) +{ + this.knowledgeId = pKnowledgeId || null; + + var updFunc = function(pContent, pId) + { + newWhere("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", pId) + .updateFields({ + "CONTENT": pContent, + "CONTENTDECODED": text.html2text(pContent) + }); + } + + //this turns a HTML String into an instance of SimpleHtmlObject for further processing + //or if an instance of SimpleHtmlObject is given in pHtml it uses the given Object + this.html = (typeof pHtml === "string") + ? SimpleHtmlObject.getInstance(pHtml, updFunc, this.knowledgeId) + : ( + (pHtml instanceof SimpleHtmlObject) + ? pHtml + : null + ); + //provides the knowledge entry with it's tags + this.knowledgeTagModel = KnowledgeManagementTagsModel.getInstance(this.knowledgeId); +} +/** + * Factory function of KnowledgeManagementModel + * @param {String} pHtml HTML Script as string. + * @param {String} pId Id of the knowledge entry, that's represented by this object + * + * @return {KnowledgeManagementModel} + */ +KnowledgeManagementModel.getInstance = function(pHtml, pId) +{ + return new KnowledgeManagementModel(pHtml, pId); +} + +/** + * Function for setting a CSS Stylesheet for the knowledge entry + * @param pStyle {String|function} This parameter takes either a string or a function + * the function has to return a CSS Stylesheet as String + * @param pArgs {Array} This parameter takes the arguments for calling a style function, Required if pStyle is of type function + * + * @return {this} return the instance of KnowledgeManagementModel to enable function chaining + */ +KnowledgeManagementModel.prototype.style = function(pStyle, pArgs) +{ + switch(typeof pStyle) + { + case "function": + let args = (pArgs && pArgs.length)? pArgs : []; + this.html.style(pStyle.apply(pStyle, args)); + break; + case "string": + this.html.style(pStyle); + break; + } + + return this; +} + +KnowledgeManagementModel.prototype.headers = function(pHeaders) +{ + this.html.headers(pHeaders); + + return this; +} + +/** + * Function for setting the content of the HTML Body for the knowledge entry + * @param pContent {String|function} This parameter takes either a string or a function + * the function has to return the content of the HTML Body as String + * @param pArgs {Array} This parameter takes the arguments for calling a function, Required if pStyle is of type function + * + * @return {this} return the instance of KnowledgeManagementModel to enable function chaining + */ +KnowledgeManagementModel.prototype.content = function(pContent, pArgs) +{ + switch(typeof pContent) + { + case "function": + let args = (pArgs && pArgs.length)? pArgs : []; + this.html.body(pContent.apply(pContent, args)); + break; + case "string": + this.html.body(pContent); + break; + } + + return this; +} +/** + * Wrapper for SimpleHtmlObject.prototype.toString, which is overridden so it provides a HTML Script + * containing the content and style set by the respective functions + * + * @return {String} HTML Script + */ +KnowledgeManagementModel.prototype.buildHTML = function() +{ + return this.html.toString(); +} +/** + * Returns the content of the HTML Body + * @return {String} + */ +KnowledgeManagementModel.prototype.getContent = function() +{ + return this.html.getBody(); +} +/** + * Returns the contents of the set Style Tag + * @return {String} + */ +KnowledgeManagementModel.prototype.getStyle = function() +{ + return this.html.getStyle(); +} + +KnowledgeManagementModel.getFrameMapping = function(pFrame) +{ + switch(pFrame.toUpperCase()) + { + case "KNOWLEDGEMANAGEMENT": + return "KnowledgeManagement"; + break; + default: + return null; + } +} +/** + * Function for replacing the http://adito/ and http://aditoknowledge links with links to the neon client + * @return {this} + */ +KnowledgeManagementModel.prototype.replaceAditoLinks = function() +{ + var clientUrl = project.getInstanceConfigValue("custom.aditoLink.clientUrl", ""); + var content = this.getContent(); + //RegExp for finding regular ADITO Links + var regExAditoLink = /href\s*=\s*["']http:\/\/adito\/(\w+)\/([\w-]{0,36})["']/gi; + //RegExp for finding aditoknowledge links + var regExEditorialLink = /href\s*=\s*["']http:\/\/aditoknowledge\/(.+?\.adoc)["']/gi; + + var match, frame, uid, gitPath; + + function _getNeonLink(pContext, pUid) + { + if(pContext) + return "href = '" + clientUrl + "client/" + pContext + "/full?id=" + pUid + "' target='_parent'"; + else + return "CONTEXT NOT MAPPED"; + } + + while ((match = regExAditoLink.exec(content)) !== null) + { + [match, frame, uid] = match; + content = content.replace(match, _getNeonLink(KnowledgeManagementModel.getFrameMapping(frame), uid)); + } + + var idSql; + + + while ((match = regExEditorialLink.exec(content)) !== null) + { + [match, gitPath] = match; + idSql = new SqlBuilder().select("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID") + .from("KNOWLEDGEMANAGEMENT") + .where("KNOWLEDGEMANAGEMENT.GITPATH", gitPath).cell(); + + content = content.replace( + match + , _getNeonLink("KnowledgeManagement" + , (idSql) ? idSql : "DOCUMENT-NOT-EXISTING" + ) + ); + } + + this.content(content); + + return this; +} +/** + * Object for gathering the tags of a knowledge entry + * @param {String} pKnowledgemanagementId Id of the knowledge entry for which the tags should be collected + */ +function KnowledgeManagementTagsModel(pKnowledgemanagementId) +{ + this.data = []; + this.existingTags = { + array:[], + ByIdMap:{}, + ByNameMap:{} + }; + this.knowledgeId = pKnowledgemanagementId || null; +} + +/** + * Factory function of KnowledgeManagementTagsModel + * @return {KnowledgeManagementTagsModel} + */ +KnowledgeManagementTagsModel.getInstance = function(pId) +{ + return new KnowledgeManagementTagsModel(pId); +} +/** + * Function for getting the list of already existing tags + * @param {String} pLocalUid If the id is given only one entry is loaded + * @return {Object} returns an object containing three keys: array, ByIdMap, ByNameMap + * the latter two are maps for quick lookup of TagIDs by Name or Name by Id + */ +KnowledgeManagementTagsModel.prototype.getPossibleTags = function(pLocalUid) +{ + this.existingTags.array = new SqlBuilder() + .select("KNOWLEDGETAGID, TAG") + .from("KNOWLEDGETAG") + .table(); + + for(let i in this.existingTags.array) + { + this.existingTags.ByIdMap[this.existingTags.array[i][0]] = this.existingTags.array[i][1]; + this.existingTags.ByNameMap[this.existingTags.array[i][1].toUpperCase()] = this.existingTags.array[i][0]; + //if a single id is requested, return only that specific dataset + if(pLocalUid && pLocalUid == this.existingTags.array[i][0]) + { + let singleReturn = { + array:[], + ByIdMap:{}, + ByNameMap:{} + }; + singleReturn.array = [this.existingTags.array[i]]; + singleReturn.ByIdMap[this.existingTags.array[i][0]] = this.existingTags.array[i][1]; + singleReturn.ByNameMap[this.existingTags.array[i][1].toUpperCase()] = this.existingTags.array[i][0] + + return singleReturn; + } + } + + return this.existingTags; +} +/** + * Function to collect the set tags of a knowledge entry + * If no Id is present in either the function parameter or the object itself, it returns an empty dataset + * + * @param {String} pKnowledgeId Id of the knowledge entry to gather the tags for. + * @param {Array} pIdValue If we get one id from the system, we only need to load this one dataset + * + * @return {this} + */ +KnowledgeManagementTagsModel.prototype.collectTags = function(pKnowledgeId, pIdValue) +{ + //if no ID is given either by pKnowledgeId or by the property of the this object + //it sets an empty dataset and returns this. + if(!pKnowledgeId && !this.knowledgeId) + { + this.data = db.createEmptyTable(3); + return this; + } + + if(!this.knowledgeId) + this.knowledgeId = pKnowledgeId.slice(0); + + var sqlString = new SqlBuilder() + .select("KNOWLEDGETAGLINKID, KNOWLEDGETAG_ID, TAG") + .from("KNOWLEDGETAGLINK") + .join("KNOWLEDGETAG on KNOWLEDGETAGID = KNOWLEDGETAG_ID") + .where("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId) + + if(pIdValue) + sqlString.and("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue, SqlBuilder.IN()); + + this.data = sqlString.table(); + + return this; +} +/** + * Object for handling tags. + * I.e. adding, editing and deleting tags of an knowledge entry + * + * @param {String} pKnowledgeId + * @param {KnowledgeManagementTagsModel} pTagsModel If you already have an instance of the Tags Model, you can give it to the function + * instead of creating a new instance + */ +function KnowledgeManagementTagsController(pKnowledgeId, pTagsModel) +{ + this.model = (pTagsModel instanceof KnowledgeManagementTagsModel) + ? pTagsModel + : KnowledgeManagementTagsModel.getInstance(pKnowledgeId); + + this.knowledgeId = pKnowledgeId || null; +} +/** + * Factory fucntion for KnowledgeManagementTagsController + * @return {KnowledgeManagementTagsController} + */ +KnowledgeManagementTagsController.getInstance = function(pId, pModel) +{ + return new KnowledgeManagementTagsController(pId, pModel); +} +/** + * This function is used to add a new tag to a knowledge entry + * If the tag is already used on the given entry, it does nothing + * If a completely new tag is entered, it gets created in the Tags Attribute and then it gets added to the knowledge entry + * + * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata + * @param {Boolean} pFromUpdate + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.addTag = function(pIdValue, pRowData, pFromUpdate) +{ + if(!pRowData["TAG.value"] || !pRowData["TAG.value"].trim() || !pIdValue) + return this; + pRowData["TAG.value"] = pRowData["TAG.value"].trim(); + //if we get an UUID, an existing tag was chosen and can be added directly + if(IdUtils.isUUID(pRowData["TAG.value"])) + _add.apply(this,[pIdValue, pRowData]); + else //else if get a new string, we have to create the tag in the attribute first + { + this.createNewTag(pIdValue, pRowData); + } + /** + * private function for adding the tag to the knowledge entry + * @param {String} pId, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pData, data of the new tag, typically read from $local.rowdata + */ + function _add(pId, pData) + { + //get all possible tags, to make sure the new tag is already registered + var existingTags = this.model.getPossibleTags(); + + + var countSql = newSelect("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pData["TAG.value"]) + .and("KNOWLEDGETAGLINK.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId) + .cell(); + + // if the tag is registered and isn't already used on this knowledge entry, add a attribute relation + if(existingTags.ByIdMap[pData["TAG.value"]] && Number(countSql) === 0 && !pFromUpdate) + { + var fields = ["KNOWLEDGETAGLINKID","KNOWLEDGEMANAGEMENT_ID","KNOWLEDGETAG_ID","USER_NEW","DATE_NEW"];//["AB_ATTRIBUTERELATIONID", "AB_ATTRIBUTE_ID", "OBJECT_ROWID", "OBJECT_TYPE", "ID_VALUE", "USER_NEW", "DATE_NEW"]; + var values = [pId, this.knowledgeId, pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; + + db.insertData("KNOWLEDGETAGLINK", fields, null, values); + } + } + + return this; +} +/** + * Function for updating/editing an existing tag + * @param {String} pIdValue, id of the new AttributeRelation typically read from $local.idvalue + * @param {Array} pRowData, data of the new tag, typically read from $local.rowdata + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.editTag = function(pIdValue, pRowData) +{ + if(!pRowData["TAG.value"] || !pIdValue) + return this; + + var existingTags = this.model.getPossibleTags(); + //if we get an UUID and it is in the existing IDs Map, we can just update the database field + if(IdUtils.isUUID(data["TAG.value"]) && existingTags.ByIdMap[data["TAG.value"]]) + { + _update.apply(this,[pIdValue, pRowData]); + } + else // if we get text, we have to get the old tags id, create the new tag and then check if the old tag is used somewhere else + { // if it's not used anymore, it gets deleted from the attribute + var oldTag = new SqlBuilder() + .select("KNOWLEDGETAG_ID") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue) + .cell(); + + var newTag = this.createNewTag(pIdValue, pRowData, true); + pRowData["TAG.value"] = newTag; + + _clear.apply(this,[oldTag]); + _update.apply(this, [pIdValue, pRowData]); + } + /** + * private function for updating an AttributeRelation with the new tag + */ + function _update(pId, pData) + { + var fields = ["KNOWLEDGETAG_ID", "USER_EDIT", "DATE_EDIT"]; + var values = [pData["TAG.value"], vars.get("$sys.user"), datetime.date()]; + var cond = newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pId).toString(); + + db.updateData("KNOWLEDGETAGLINK", fields, null, values, cond); + } + /** + * private function for checking, if an old tag is used anywhere else. If it's not used anymore, it gets deleted + */ + function _clear(pOldValue) + { + var count = new SqlBuilder() + .select("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pOldValue) + .cell(); + if(count == 0) + { + db.deleteData("KNOWLEDGETAG", newWhere("KNOWLEDGETAG.KNOWLEDGETAGID", pOldValue).toString()); + } + } + + return this; +} +/** + * Function for deleting a tag from a knowledge entry + * If a tag isn't used anywhere else, it gets deleted from the list of existing tags + * + * @param {String} pIdValue Value of $local.idvalue in onDelete Process + * @param {[][]} pData Value of $local.rowdata in onDelete Process + * + * @return {this} + */ +KnowledgeManagementTagsController.prototype.deleteTag = function(pIdValue, pData) +{ + if(!pIdValue || !pData["TAG.value"]) + return this; + + db.deleteData("KNOWLEDGETAGLINK", newWhere("KNOWLEDGETAGLINK.KNOWLEDGETAGLINKID", pIdValue).toString()); + + var count = new SqlBuilder() + .select("count(*)") + .from("KNOWLEDGETAGLINK") + .where("KNOWLEDGETAGLINK.KNOWLEDGETAG_ID", pData["TAG.value"]) + .cell(); + + if(count == 0) + { + db.deleteData("KNOWLEDGETAG", newWhere("KNOWLEDGETAG.KNOWLEDGETAGID", pData["TAG.value"]).toString()); + } + + return this; +} +/** + * Function to clear all tags from an entry + * Used in the Git Interface, to get rid of all tags and then newly create them + * + * @return {KnowledgeManagementTagsController} Returns this for chaining + */ +KnowledgeManagementTagsController.prototype.clearTags = function() +{ + this.model.collectTags(this.knowledgeId).data.forEach( + function(item) + { + let rowData = {}; + rowData["TAG.value"] = item[1]; + + this.deleteTag(item[0], rowData); + } + ,this); + + return this; +} +/** + * Fucntion for adding a new tag to the list of existing tags + * It adds it also to the table KNOWLEDGEMANAGEMENTTAGMODERATION where all new tags are stored for further moderation + * + * @param {String} pIdValue typically the $local.idvalue of the onInsert process, it is being used, if for some reason the entered tag is already existing. + * then a new AttributeRelation is created instead of the tag. + * @param {[][]} pData typically the $local.rowdata of the onInsert or onUpdate process + * @param {Boolean} pFromUpdate + * + * @return {String|null} returns the id of the new tag attribute or null, if it couldn't be created + */ +KnowledgeManagementTagsController.prototype.createNewTag = function(pIdValue, pData, pFromUpdate) +{ + if(!pData["TAG.value"] || !pIdValue) + throw "no Tag was passed or no pIdValue was passed"; + + var existingTags = this.model.getPossibleTags(); + var tagFields = ["KNOWLEDGETAGID" + ,"TAG" + ,"DATE_NEW" + ,"USER_NEW"]; + var newAttrId; + var tagValues; + + //If the user entered text without choosing a list entry, do a lookup on the existing tags by upper case and add tag by id, if it already exists + if(existingTags.ByNameMap[pData["TAG.value"].toUpperCase()]) + { + pData["TAG.value"] = existingTags.ByNameMap[pData["TAG.value"].toUpperCase()]; + this.addTag(pIdValue, pData); + } + else + { + newAttrId = util.getNewUUID(); + tagValues = [newAttrId, pData["TAG.value"], datetime.date(), vars.get("$sys.user")]; + + db.insertData("KNOWLEDGETAG", tagFields, null, tagValues); + + pData["TAG.value"] = newAttrId; + + this.addTag(pIdValue, pData, pFromUpdate); + + return newAttrId; + } + + return null; +} +/** + * Object for handling the discussions + */ +function KnowledgeDiscussion(pKnowledgeId) +{ + this.knowledgeId = pKnowledgeId; + this.data = []; +} +/** + * Factory function of KnwoledgeDiscussion + * @param {String|null} pKnowledgeId UUID if only the discussion on on specific knowledge entry are needed, null if all discussions of all knowledge entries should be loaded. + */ +KnowledgeDiscussion.getInstance = function(pKnowledgeId) +{ + return new KnowledgeDiscussion(pKnowledgeId); +} +/** + * Function for getting the row count, uses less complex SQL and doesn't have the tree generation. + * It's used in the rowCountProcess of the RecordContainer of the KnowledgeDiscussion entity, to improve performance + * + * @param {SqlBuilder} pCondition sql condition + * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view + * + * @return {int} Total number of Datasets to load + */ +KnowledgeDiscussion.prototype.getDatasetCount = function(pCondition, pIdValues) +{ + var knowledgeSql = newSelect("count(*)").from("KNOWLEDGEMANAGEMENT").join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID").where(); + + var knowledgeData = 0; + + var discussionSql = newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where(); + + if(pCondition) + { + discussionSql.andIfSet(pCondition); + knowledgeSql.andIfSet(pCondition); + } + + if(pIdValues) + { + knowledgeSql.and("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", pIdValues, SqlBuilder.IN()); + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pIdValues, SqlBuilder.IN()); + } + + //if we have a specific knowledge, we don't need all knowledge entries. Otherwise load all knowledge entries that have discussions + if(this.knowledgeId) + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId); + else + knowledgeData = knowledgeSql.table() + + + var discussionData = discussionSql.table() + + var sum = ((Number(knowledgeData) > 0) ? Number(knowledgeData) + Number(discussionData) : Number(discussionData)); + + return sum; +} + +/** + * Complex function to build the DiscussionTree. + * Loads the data depending on this.knowledgeId, pMode and pIdValues and builds the tree out of the data + * The tree always gets sorted by the date of the most recent action. Either a new answer to an discussion or an edit of an discussion + * Data is retireved by reading the data property of your instance of KnowledgeDiscussion after running buildCompleteTree + * + * @param {SqlBuilder} pCondition sql condition + * @param {Array} pIdValues Takes an array of ids, typically one id with single selection, to only load the selected discusssion for the preview view + * @param {Boolean} pGetAll Switch, which determines if all discussions on all knowledge entries should be loaded or only the discussion for one specific knowledge. + * + * @return {this} returns the now filled instance of the object. + */ +KnowledgeDiscussion.prototype.buildCompleteTree = function(pCondition, pIdValues, pGetAll) +{ + var knowledgeSql = newSelect("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID, KNOWLEDGEMANAGEMENT.TITLE").from("KNOWLEDGEMANAGEMENT") + .join("KNOWLEDGEDISCUSSION", "KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID = KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID") + .where() + + var knowledgeData = null; + + var discussionSql = newSelect("KNOWLEDGEDISCUSSIONID,PARENTENTRY,KNOWLEDGEMANAGEMENT_ID ,AUTHOR,DISCUSSIONTEXT,STATUS,'InsertKEyowrdSubselecthere' ,DATE_NEW,DATE_EDIT,USER_NEW,USER_EDIT") + .from("KNOWLEDGEDISCUSSION").where() + + var iconMap = { + TOP:"VAADIN:PIN" + , + ANSWER:"VAADIN:COMMENT_O" + , + KNOWLEDGE:"VAADIN:ACADEMY_CAP" + , + TOP_CLOSED:"VAADIN:LOCK" + }; + + if(pCondition && !(pIdValues && pIdValues.length == 1)) + { + discussionSql.andIfSet(pCondition); + knowledgeSql.andIfSet(pCondition); + } + + if(pIdValues) + { + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pIdValues, SqlBuilder.IN()); + } + + //if we have a specific knowledge, we don't need all knowledge entries. Otherwise load all knowledge entries that have discussions + if(pGetAll) + knowledgeData = knowledgeSql.table() + else if(this.knowledgeId) + discussionSql.and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId); + + var discussionData = discussionSql.table(); + + //remove all parent-ids that can't be found in the array, otherwise these would not be included in the tree + //(if these entries were not included, the result from the rowCountProcess would be incorrect) + if (Utils.isNullOrEmpty(pIdValues)) + { + var allDiscussionIds = new Set(); + discussionData.forEach(function ([discussionId]) + { + allDiscussionIds.add(discussionId); + }); + discussionData.forEach(function (row) + { + if (!allDiscussionIds.has(row[1])) + row[1] = ""; + }); + } + + var user, userTitle, discussionTitle; + + //adding firstname and lastname from employee as author displayvalue and add icon + for(var i = 0; i < discussionData.length; i++) + { + discussionData[i][4] = discussionData[i][4].trim(); + user = tools.getUser(discussionData[i][3]); + userTitle = _getNamefromUser(user); + //old icon code: KeywordUtils.getAttributeRelation(discussionData[i][5], "DiscussionStatus", "knowledgeDiscussionIcon") + discussionData[i].push(userTitle); + discussionData[i].push(_getIcon("D", discussionData[i][1].trim(), discussionData[i][5].trim())); + discussionData[i].push("D"); //Node type for discussions + + discussionTitle = userTitle; + if(discussionData[i][7]) + discussionTitle += " "+ translate.text("added on") +": " + datetime.toDate(discussionData[i][7], "dd.MM.yyyy"); + + + if(discussionData[i][8]) + { + if(discussionData[i][10] && discussionData[i][3] != discussionData[i][10]) + { + user = tools.getUser(discussionData[i][10]); + userTitle = _getNamefromUser(user); + } + discussionTitle += ", " + userTitle + " " + translate.text("edited on") +": " + datetime.toDate(discussionData[i][8], "dd.MM.yyyy"); + } + + discussionData[i].push(discussionTitle); + } + + //if something gets selected in the tree, only return those datasets + if(pIdValues && !this.knowledgeId && !discussionData.length) + { + this.data = knowledgeData; + return this; + } + else if(pIdValues && discussionData.length) + { + this.data = discussionData; + return this; + } + + var tempTree = []; + //if a specific knowledge is given, then use the empty tree to fill with top parents + //, otherwise insert knowledge entries into the tree first via _fillKnowledge() and then add top parents to those + tempTree = _fillTopParents(((this.knowledgeId) + ? tempTree + : _fillKnowledge(tempTree, knowledgeData)) + , discussionData + , this.knowledgeId); + //if we have a specific knowledgeId, we recursively add all children for each top parent. + if(this.knowledgeId) + { + for(let i = 0; i < tempTree.length; i++) + { + _fillInChildren(tempTree[i], discussionData, tempTree[i].id); + tempTree[i].date = _propagateMostRecentDate(tempTree[i]); + } + tempTree.sort(_sortByDateDesc); + } + else + { + for(let i = 0; i < tempTree.length; i++) // loop over knowledge + { + for(let ii = 0; ii < tempTree[i].children.length; ii++) // loop over opening threads + { + _fillInChildren(tempTree[i].children[ii], discussionData, tempTree[i].children[ii].id); //add children recursively to opening threads + tempTree[i].children[ii].date = _propagateMostRecentDate(tempTree[i].children[ii]); + } + tempTree[i].children.sort(_sortByDateDesc); + tempTree[i].date = tempTree[i].children[0].date; + } + tempTree.sort(_sortByDateDesc); + } + + this.data = _buildArrayFromTree.apply(this, [tempTree]); + + return this; + + function _getIcon(pNodeType, pParentId, pStatus) + { + if(pNodeType == "K") + return iconMap.KNOWLEDGE; + if(pNodeType == "D" && pStatus == $KeywordRegistry.discussionStatus$closed()) + return iconMap.TOP_CLOSED; + if(pNodeType == "D" && pParentId == "") + return iconMap.TOP; + if(pNodeType == "D" && pParentId != "") + return iconMap.ANSWER; + + return ""; + } + + function _getNamefromUser(pUser) + { + return ((pUser && pUser[tools.PARAMS]) ? pUser[tools.PARAMS][tools.FIRSTNAME] + " " + pUser[tools.PARAMS][tools.LASTNAME] : null); + } + + function _buildArrayFromTree(pTree) + { + var dataArray = []; + + function __runLayers(pBranch) + { + dataArray.push(pBranch.data); + + for(let i = 0; i < pBranch.children.length; i++) + { + __runLayers(pBranch.children[i]); + } + } + + for(let i = 0; i < pTree.length; i++) + { + __runLayers.apply(this, [pTree[i]]); + } + + return dataArray; + } + + function _sortByDateDesc(a,b) + { + return b.date - a.date; + } + + function _fillKnowledge(pTree, pData) + { + for(let i = 0; i < pData.length; i++) + { + pTree.push({ + id:pData[i][0] + , + parent:null + , + data:[ + pData[i][0] + ,null + ,null + ,null + ,pData[i][2] + ,null + ,null + ,null + ,null + ,null + ,null + ,null + ,"" + ,"K"] + , + children:[] + }); + pData.splice(i--,1); + } + + return pTree; + } + + function _fillTopParents(pTree, pData, pHasSpecificKnowledge) + { + function __addNode(pTree, pNodeData, pNodeIndex, pSetAsParentId) + { + if(!pNodeIndex && !pSetAsParentId) + { + pTree.push({ + id:pNodeData[0] + , + parent:null + , + data:pNodeData + , + nodeType:pNodeData[13] + , + children:[] + }); + } + else + { + pNodeData[1] = pSetAsParentId; + pTree[pNodeIndex].children.push({ + id:pNodeData[0] + , + parent:pSetAsParentId + , + data:pNodeData + , + nodeType:pNodeData[13] + , + children:[] + }); + } + } + + if(pHasSpecificKnowledge) + { + for(let i = 0; i < pData.length; i++) + { + if(!pData[i][1]) + { + __addNode(pTree, pData.splice(i--,1)[0]); + } + } + } + else + { + for(let i = 0; i < pTree.length; i++) + for(let ii = 0; ii < pData.length; ii++) + { + if(!pData[ii][1] && pData[ii][2] == pTree[i].id) + { + __addNode(pTree, pData.splice(ii--,1)[0], i, pTree[i].id); + } + } + } + + return pTree; + } + + function _fillInChildren(pNode, pData, pParentId) + { + var tempNodes = []; + for(let i = 0; i < pData.length; i++) + { + let tempData = null; + if(pData[i][1] == pParentId) + { + tempData = pData.splice(i--,1)[0]; + tempNodes.push({ + id:tempData[0] + , + parent:tempData[1] + , + data:tempData + , + children:[] + , + nodeType:tempData[13] + }); + } + } + + for(let i = 0; i < tempNodes.length; i++) + { + _fillInChildren(tempNodes[i], pData, tempNodes[i].id); + pNode.children.push(tempNodes[i]); + } + } + + function _propagateMostRecentDate(pNode) + { + //this funcion takes n arguments, sorts them numerically descending + //, so the biggest and therefore most recent timestamp is on the first index + //, which then gets returned + function __getMostRecentDate() + { + return [].slice.call(arguments).sort(function(a, b){ + return b - a; + })[0]; + } + + var propagatedDate = null; + //if we are on the last child, only get the most recent date of this child + if(!pNode.children.length) + propagatedDate = __getMostRecentDate(pNode.data[7], pNode.data[8]); + else + { + propagatedDate = [] + //if we have children, we need to get the most recent date from the children and our current node. + for(let i = 0; i < pNode.children.length; i++) + { + propagatedDate.push(__getMostRecentDate(_propagateMostRecentDate(pNode.children[i]), pNode.data[7], pNode.data[8])); + } + + propagatedDate = __getMostRecentDate.apply(null,propagatedDate); + } + //return the most recent date, which got propagated all the way through the tree branch + return propagatedDate; + } +} +/** + * Function for adding a new Discussion. + * Used in the onInsert process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onInsert process + * @param {Array} pRowData $local.rowdata of the onInsert process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.addDiscussion = function(pDiscussionId, pRowData) +{ + if(!pRowData["DISCUSSIONTEXT.value"]) + return this; + + if(!pDiscussionId) + pDiscussionId = ""; + + var fields = ["KNOWLEDGEDISCUSSIONID","PARENTENTRY" + ,"KNOWLEDGEMANAGEMENT_ID","DISCUSSIONTEXT" + ,"STATUS","AUTHOR" + ,"DATE_NEW","USER_NEW"]; + + var values = [ + pRowData["UID.value"] + ,pDiscussionId.trim() + ,this.knowledgeId.trim() + ,pRowData["DISCUSSIONTEXT.value"] + ,pRowData["STATUS.value"] + ,pRowData["AUTHOR.value"].trim() + ,datetime.date() + ,vars.get("$sys.user").trim() + ]; + + db.insertData("KNOWLEDGEDISCUSSION", fields, null, values); + + return this; +} +/** + * Function for editing an existing Discussion. + * Used in the onUpdate process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onUpdate process + * @param {Array} pRowData $local.rowdata of the onUpdate process + * @param {Array} pChanged $local.changed of the onUpdate process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.editDiscussion = function(pDiscussionId, pRowData, pChanged) +{ + if(!pDiscussionId) + return this; + + var i; + var fields = []; + var values = []; + + for(i = 0; i < pChanged.length; i++) + { + let field = pChanged[i]; + values.push(pRowData[field]); + fields.push(field.split(".")[0]); + } + + + db.updateData("KNOWLEDGEDISCUSSION" + , fields + , null + , values + , newWhere("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pDiscussionId) + .and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId).toString()); + + return this; +} +/** + * Function for deleting an existing Discussion. + * Used in the onUpdate process of the RecordContainer of the KnowledgeDiscussion entity + * + * @param {String} pDiscussionId $local.idvalue of the onUpdate process + * + * @return {this} + */ +KnowledgeDiscussion.prototype.deleteDiscussion = function(pDiscussionId) +{ + if(!pDiscussionId) + return this; + + db.deleteData("KNOWLEDGEDISCUSSION" + , newWhere("KNOWLEDGEDISCUSSION.KNOWLEDGEDISCUSSIONID", pDiscussionId) + .and("KNOWLEDGEDISCUSSION.KNOWLEDGEMANAGEMENT_ID", this.knowledgeId).toString()); + + return this; +} +/** + * Static function for checking if a discussion has children below itself + * + * @param {String} pId Id of the discussion to check + * + * @return {Boolean} true if number of children is greater than 0 + */ +KnowledgeDiscussion.hasChildren = function(pId) +{ + return newSelect("count(*)").from("KNOWLEDGEDISCUSSION").where("KNOWLEDGEDISCUSSION.PARENTENTRY", pId).cell() > 0 +} + +/** + * Function for setting the status of a discussion AND its children + * @param {String} pDiscussionId The id of the discussion + * @param {String} pStatus $KeywordRegistry.discussionStatus$acitve() or $KeywordRegistry.discussionStatus$closed() + * + * @return {this} + */ +KnowledgeDiscussion.prototype.setDiscussionStatus = function(pDiscussionId, pStatus) +{ + + if(!pDiscussionId || (pStatus !== $KeywordRegistry.discussionStatus$acitve() && pStatus !== $KeywordRegistry.discussionStatus$closed())) + return this; + + let table = "KNOWLEDGEDISCUSSION"; + let cols = ["STATUS"]; + let updates = []; + let updateTemplate = [table, cols, null, [pStatus]]; + + _addChildrenToUpdates(pDiscussionId, pStatus); + let parentUpdate = [].slice.call(updateTemplate,0); + parentUpdate.push(table+"ID = '" + pDiscussionId + "'"); + updates.push(parentUpdate); + + db.updates(updates); + + function _addChildrenToUpdates(pId, pStatus) + { + var data = newSelect(["KNOWLEDGEDISCUSSIONID", "PARENTENTRY"]) + .from("KNOWLEDGEDISCUSSION") + .where("KNOWLEDGEDISCUSSION.PARENTENTRY", pId) + .table(); + if(!data.length) + return; + + for(var i = 0; i < data.length; i++) + { + let upd = [].slice.call(updateTemplate,0); + upd.push(table+"ID = '" + data[i][0] + "'"); + updates.push(upd); + //db.updateData(table, cols, colTypes, [pStatus], table+"ID = '" + data[i][0] + "'"); + _addChildrenToUpdates(data[i][0], pStatus); + } + } + + return this; +} + +function KnowledgeIndexHelper(pKnowledgeId, pData) +{ + this.knowledgeId = pKnowledgeId || null; + this.data = pData || null; +} + +KnowledgeIndexHelper.getInstance = function(pId, pData) +{ + return new KnowledgeIndexHelper(pId, pData); +} + +KnowledgeIndexHelper.prototype.getDocumentsFromContent = function() +{ + var tempArray = []; + var content = newSelect("CONTENT") + .from("KNOWLEDGEMANAGEMENT") + .where("KNOWLEDGEMANAGEMENT.KNOWLEDGEMANAGEMENTID", this.knowledgeId) + .cell(); + var invalidLink = false; + // the question mark quantifier is in (.*?) to make sure, that more than one file link can be present in one line! + var matches = content.match( new RegExp("<a href=\"file(.*?)((htm(l?))|(pdf)|(doc(x?)))\"", "gi") ); + var i = 0; + + if(matches) + matches.forEach( + function(match) + { + var data = null; + match = match.replace(/^(<a href="file:(\/*))/gi,"").replace(/"$/gi,""); + + if(vars.get("$sys.serveros").indexOf("windows") != -1) + { + match = match.replace(/[/\\]+FILER[/\\]publicshare\$/, "//filer/publicshare$", "gi").replace("S:", "//filer/publicshare$").replace(/\\/g, "/"); + } + else + { + match = match.replace(/[/\\]+FILER[/\\]publicshare\$/, "/mnt/filer_publicshare", "gi").replace("S:", "/mnt/filer_publicshare").replace(/\\/g, "/"); + } + + var decodedMatch = decodeURIComponent(match); + + if(fileIO.exists(decodedMatch)) + { + //only get data, if it's not a directory. getData on a directory fails with an exception + if(!fileIO.isDirectory(decodedMatch)) + { + data = fileIO.getData(decodeURIComponent(decodedMatch), util.DATA_BINARY); + } + } + else + { + invalidLink = true; + } + + if(data != null) + { + tempArray.push(data); + } + } + ,this); + + this.data[8] = tempArray; + + return this; +} + +function KnowledgeUtils(){} + +KnowledgeUtils.getLocalIdValue = function() +{ + var id = vars.exists("$local.idvalues") && vars.get("$local.idvalues"); + id = ( id && (typeof id == "object") && id.length == 1 ) ? id[0] : id; + + return id; +} + +KnowledgeUtils.isAcademy = function(pUser) +{ + let roles = tools.getRoles(pUser); + + for(let i = 0; i < roles.length; i++) + if(roles[i] == "PROJECT_Abt_Akademie") + return true; + + return false; +} + +KnowledgeUtils.trimAndUp = function(pIn) +{ + return pIn.trim().toUpperCase(); +} \ No newline at end of file diff --git a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod index dd1aecc728e349ceced88023f48b3c214a33ca1b..2ac6bab47ac32ade4753eae8e051fe6d1e55b9f4 100644 --- a/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod +++ b/process/LeadQuickAcquisition_lib/LeadQuickAcquisition_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>LeadQuickAcquisition_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/LeadQuickAcquisition_lib/process.js</process> diff --git a/process/Leadimport_lib/Leadimport_lib.aod b/process/Leadimport_lib/Leadimport_lib.aod index 2b0a6ccc76164c013c73ed247fdd212d3e8defb0..6426e09650258a2fbb87212c736d911eda3b40e4 100644 --- a/process/Leadimport_lib/Leadimport_lib.aod +++ b/process/Leadimport_lib/Leadimport_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Leadimport_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Leadimport_lib/process.js</process> diff --git a/process/Leadimport_lib/process.js b/process/Leadimport_lib/process.js index ea0f5c14c0b084b0ecca76fceee7841a1b247a04..de9d13b2c7bb525960c5503b3e20eb28d9f2190d 100644 --- a/process/Leadimport_lib/process.js +++ b/process/Leadimport_lib/process.js @@ -794,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() }; } diff --git a/process/Liquibase_lib/Liquibase_lib.aod b/process/Liquibase_lib/Liquibase_lib.aod index 5fc68808e15f30333eeb59291fa318d56e028ac1..31fe997666b305a5ae1f926f766e79a14160fae0 100644 --- a/process/Liquibase_lib/Liquibase_lib.aod +++ b/process/Liquibase_lib/Liquibase_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Liquibase_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Liquibase_lib/process.js</process> diff --git a/process/Liquibase_lib/process.js b/process/Liquibase_lib/process.js index 65cfed3485bd752f8321603ffde1ad9b411c99ac..e673139131bf77a542021c1aa60cf1a96aadd06a 100644 --- a/process/Liquibase_lib/process.js +++ b/process/Liquibase_lib/process.js @@ -148,7 +148,7 @@ LiquiUtils._getDataXml = function(pAuthor, pLobPath, pTableName, pColumns, pCond var changesetId; if (pGenerateChangeSetIdFromArguments) { - changesetId = Array.prototype.slice.call(arguments);//todo: use Array.from instead when supported (>= rhino 1.7.11) (#1038664) + changesetId = Array.from(arguments); changesetId = changesetId.reduce(function (accumulator, currentValue){ return (currentValue !== null && currentValue !== undefined ? accumulator + JSON.stringify(currentValue) : accumulator); }, ""); diff --git a/process/Location_lib/Location_lib.aod b/process/Location_lib/Location_lib.aod index 1a9a229f653f16af767f0c6193958ec831ea120c..812115767215451b35b717b2f7f88a8ff712ece7 100644 --- a/process/Location_lib/Location_lib.aod +++ b/process/Location_lib/Location_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Location_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Location_lib/process.js</process> diff --git a/process/Loghistory_lib/Loghistory_lib.aod b/process/Loghistory_lib/Loghistory_lib.aod index 454f37cd2f2f3108e77c6eb547d95229067e1eca..bcbd876cc0fc2aa81d819bc2f8903ce6210b7eb2 100644 --- a/process/Loghistory_lib/Loghistory_lib.aod +++ b/process/Loghistory_lib/Loghistory_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Loghistory_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Loghistory_lib/process.js</process> diff --git a/process/Loghistory_lib/process.js b/process/Loghistory_lib/process.js index 00ee5d28afd329d981a2d69ae461414c16e55134..c3cc279cd0ce02be2e2a65f83d13c5f9a7445c05 100644 --- a/process/Loghistory_lib/process.js +++ b/process/Loghistory_lib/process.js @@ -252,11 +252,10 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena statements: [] ,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, util.getNewUUID()]; - this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); + this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, null, vals]); }; /* diff --git a/process/SqlLib_tests/SqlLib_tests.aod b/process/MSTeams_lib/MSTeams_lib.aod similarity index 64% rename from process/SqlLib_tests/SqlLib_tests.aod rename to process/MSTeams_lib/MSTeams_lib.aod index 9f2866f8f91251c708400d6998ee92c248385334..8572851b599c49dd3565445c8acb5f2a5e7bc7b9 100644 --- a/process/SqlLib_tests/SqlLib_tests.aod +++ b/process/MSTeams_lib/MSTeams_lib.aod @@ -1,8 +1,8 @@ <?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> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>MSTeams_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> - <process>%aditoprj%/process/SqlLib_tests/process.js</process> + <process>%aditoprj%/process/MSTeams_lib/process.js</process> <alias>Data_alias</alias> <variants> <element>LIBRARY</element> diff --git a/process/MSTeams_lib/process.js b/process/MSTeams_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..98728cf49abc577ec16ae328b5fe1aec3c980ef2 --- /dev/null +++ b/process/MSTeams_lib/process.js @@ -0,0 +1,339 @@ +import("system.logging"); +import("system.neon"); +import("Util_lib"); +import("Communication_lib"); +import("system.translate"); +import("system.tools"); +import("Sql_lib"); +import("system.teams"); +import("system.project"); + +/** + * Provides static functions for working with the MS-Teams integration + */ +function MSTeamsUtils () {} + +/** + * Checks if the MS Teams integration is enabled in the instance config + * + * @return {Boolean} if Teams is enabled + */ +MSTeamsUtils.isTeamsEnabled = function () +{ + return Utils.toBoolean(project.getInstanceConfigValue("teamsEnabled", "false")); +} + +MSTeamsUtils.getImpersoAzureId = function () +{ + return project.getInstanceConfigValue("teamsImpersoAzureId", ""); +} + +/** + * Contains the configuration for the possible contexts that can be used for teamLinks. + * + * @return {Object} object with the context-names as keys and configuration-objects as values + */ +MSTeamsUtils.getTeamLinkContexts = function () +{ + return { + "Salesproject": {singleLinkPerObject: true} + }; +} + +/** + * Opens a context for changing the linked team of the given object. This function also checks the configuration from + * MSTeamsUtils.getTeamLinkContexts to make sure the created teamLink is allowed + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + */ +MSTeamsUtils.changeTeamsLink = function (pRowId, pObjectType) +{ + var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + if (!linkConfig) + return; + + var existingTeamLinks = newSelect("MST_TEAMLINKID") + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) + .and("MST_TEAMLINK.OBJECT_TYPE", pObjectType) + .arrayColumn(); + var params = { + "ObjectRowId_param": pRowId, + "ObjectType_param": pObjectType + }; + if (existingTeamLinks.length === 0 || !linkConfig.singleLinkPerObject) + neon.openContext("MSTTeamLink", null, null, neon.OPERATINGSTATE_NEW, params); + else + neon.openContext("MSTTeamLink", null, [existingTeamLinks[0]], neon.OPERATINGSTATE_EDIT, params); +} + +/** + * Removes all teamLinks of the given object that are invalid. + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @param {String} [pTeamLinkIdToKeep] Only applies to contexts with 'singleLinkPerObject: true', if there are more than one teamLink, every + * teamLink except one will be deleted. This param controls which one shouldn't be deleted. + */ +MSTeamsUtils.purgeCorruptTeamLinks = function (pRowId, pObjectType, pTeamLinkIdToKeep) +{ + var teamLinks = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType).map(function (row) + { + return row.teamLinkId; + }); + var linkConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + var removeLinks = []; + if (!linkConfig) + removeLinks = teamLinks; + else if (linkConfig.singleLinkPerObject && pTeamLinkIdToKeep) + removeLinks = teamLinks.filter(function (id) {return id != pTeamLinkIdToKeep;}); + else if (linkConfig.singleLinkPerObject) + removeLinks = teamLinks.slice(1); + + if (removeLinks.length === 0) + return 0; + return newWhere("MST_TEAMLINK.MST_TEAMLINKID", removeLinks, SqlBuilder.IN()).deleteData(); +} + +/** + * Saves the given team in the database if it is not already present. + * + * @param {Object} pTeam An object containing the data of the team. Required properties: + * <ul> + * <li>teamId</li> + * <li>teamName</li> + * </ul> + * Optional properties (will be loaded automatically if not given): + * <ul> + * <li>generalChannelId</li> + * <li>webUrl</li> + * </ul> + * @return {Boolean} true if the team was inserted, false if it already exists + */ +MSTeamsUtils.insertTeamIfMissing = function (pTeam) +{ + var existsTeam = newSelect("count(*)") + .from("MST_TEAM") + .where("MST_TEAM.MST_TEAMID", pTeam.teamId) + .cell() > 0; + if (existsTeam) + return false; + + new SqlBuilder().insertFields({ + "MST_TEAMID": pTeam.teamId, + "TEAMNAME": pTeam.teamName, + "GENERAL_CHANNELID": pTeam.generalChannelId || teams.getGeneralChannelId(pTeam.teamId), + "IS_ARCHIVED": 0, + "WEB_URL": pTeam.webUrl || teams.getWebUrl(pTeam.teamId) + }, "MST_TEAM"); + + return true; +} + +/** + * Creates a new teamLink. + * + * @param {String} pTeamId id of the team + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + */ +MSTeamsUtils.createTeamLink = function (pTeamId, pRowId, pObjectType) +{ + var currentTeamLink; + var contextConfig = MSTeamsUtils.getTeamLinkContexts()[pObjectType]; + if (!contextConfig) + return; + + //if singleLinkPerObject is true, only one team link can be created for the given objectRowId + if (contextConfig.singleLinkPerObject) + { + currentTeamLink = MSTeamsUtils.getLinkedTeam(pRowId, pObjectType); + } + if (currentTeamLink) + { + newWhere("MST_TEAMLINK.MST_TEAMLINKID", currentTeamLink.teamLinkId).updateFields({ + "MST_TEAM_ID": pTeamId + }); + } + else + { + new SqlBuilder().insertFields({ + "MST_TEAM_ID": pTeamId, + "OBJECT_ROWID": pRowId, + "OBJECT_TYPE": pObjectType + }, "MST_TEAMLINK", "MST_TEAMLINKID"); + } +} + +/** + * Gets all linked teams of an object + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @return {Object[]} array of {teamLinkId, teamId} + */ +MSTeamsUtils.getLinkedTeams = function (pRowId, pObjectType) +{ + return newSelect(["MST_TEAMLINKID", "MST_TEAM_ID"]) + .from("MST_TEAMLINK") + .where("MST_TEAMLINK.OBJECT_ROWID", pRowId) + .andIfSet("MST_TEAMLINK.OBJECT_TYPE", pObjectType) + .orderBy("MST_TEAMLINKID") + .table() + .map(function ([linkId, teamId]) + { + return { + teamLinkId: linkId, + teamId: teamId + }; + }); + +} + +/** + * Gets the linked team of an object + * + * @param {String} pRowId uid of the linked object + * @param {String} pObjectType context of the linked object + * @return {String} id of the linked team, or null if ther is none + */ +MSTeamsUtils.getLinkedTeam = function (pRowId, pObjectType) +{ + var linkedTeams = MSTeamsUtils.getLinkedTeams(pRowId, pObjectType); + if (linkedTeams.length === 0) + return null; + return linkedTeams[0].teamId; +} + +/** + * Loads the contactIds associated with the given azureIds + * + * @param {String[]} pAzureIds azureIds of the users + * @return {Object} object with the azureIds as keys and the corresponding contactIds as values + */ +MSTeamsUtils.getContactIdsByAzureIds = function (pAzureIds) +{ + if (pAzureIds.length === 0) + return {}; + + var teamsUsers = tools.getUsersByAttribute(tools.TEAMS_AZUREID, pAzureIds); + var contactIdMap = {}; + teamsUsers.forEach(function (user) + { + var azureId = user[tools.PARAMS][tools.TEAMS_AZUREID]; + contactIdMap[azureId] = user[tools.PARAMS][tools.CONTACTID]; + }); + return contactIdMap; +} + +/** + * Generates a sql expression to resolve the roles in a team for the contacts + * + * @param {String} pTeamId id of the team + * @param {String} pContactIdField sql field that contains the contactId that is used for selecting the role + * @return {String} sql expression + */ +MSTeamsUtils.getTeamRoleSubSql = function (pTeamId, pContactIdField) +{ + if (!pTeamId) + return "''"; + + try { + var ownerIds = Object.keys(teams.getAllOwners(pTeamId)); + var ownerContactIds = MSTeamsUtils.getContactIdsByAzureIds(ownerIds); + ownerContactIds = Utils.objectValues(ownerContactIds); + + var members = teams.getAllMembers(pTeamId); + var memberIds = Object.keys(members); + var memberContactIds = MSTeamsUtils.getContactIdsByAzureIds(memberIds); + memberContactIds = Utils.objectValues(memberContactIds); + } + catch (err) + { + logging.log(err, logging.ERROR); + return "''"; + } + + if (ownerContactIds.length === 0 && memberContactIds.length === 0) + return "''"; + + var caseWhen = SqlBuilder.caseStatement(); + if (ownerContactIds.length !== 0) + caseWhen.when(pContactIdField, ownerContactIds, SqlBuilder.IN()).thenString(translate.text("Owner")); + if (memberContactIds.length !== 0) + caseWhen.when(pContactIdField, memberContactIds, SqlBuilder.IN()).thenString(translate.text("Member")); + + //the SqlBuilder.IN() can't be used here because of the sub-sql string for the email + caseWhen.when("(" + CommUtil.getStandardSubSqlMail() + ") in ('" + Utils.objectValues(members).join("', '") + "')") + .thenString(translate.text("Guest")); + + return caseWhen.elseString("").toString(); +} + +/** + * Checks if the user is an owner of the team + * + * @param {String} pTeamId the id of the team + * @param {String} [pUserId=current user] the userId of the user + * @return {Boolean} true if the user is an owner + */ +MSTeamsUtils.isUserTeamOwner = function (pTeamId, pUserId) +{ + var user; + if (!pUserId) + user = tools.getCurrentUser(); + else + user = tools.getUserByAttribute(tools.NAME, pUserId); + + var azureId = user ? user[tools.PARAMS][tools.TEAMS_AZUREID] : null; + if (!azureId) + return false; + return azureId in teams.getAllOwners(pTeamId); +} + +/** + * Loads the properties of the team from the database. + * + * @param {String} pTeamId the id of the team + * @return {Object} Object with these properties: + * <ul> + * <li>teamName</li> + * <li>webUrl</li> + * <li>serviceUrl</li> + * <li>isArchived</li> + * <li>generalChannelId</li> + * </ul> + * If the team was not found, null is returned. + */ +MSTeamsUtils.getTeamInfo = function (pTeamId) +{ + var teamInfo = new SqlBuilder("Data_alias") + .select(["TEAMNAME", "WEB_URL", "SERVICE_URL", "IS_ARCHIVED", "GENERAL_CHANNELID"]) + .from("MST_TEAM") + .whereIfSet("MST_TEAM.MST_TEAMID", pTeamId) + .arrayRow(true); + + if (teamInfo.length === 0) + return null; + + return { + teamName: teamInfo[0], + webUrl: teamInfo[1], + serviceUrl: teamInfo[2], + isArchived: Utils.toBoolean(teamInfo[3]), + generalChannelId: teamInfo[4] + }; +} + +/** + * Checks if the team is active + * + * @param {String} pTeamId the id of the team + * @return {Boolean} true, if the team exists and is not archived + */ +MSTeamsUtils.isTeamActive = function (pTeamId) +{ + var teamInfo = MSTeamsUtils.getTeamInfo(pTeamId); + return teamInfo != null && !teamInfo.isArchived; +} \ No newline at end of file diff --git a/process/MimeType_lib/MimeType_lib.aod b/process/MimeType_lib/MimeType_lib.aod index 01ad226f611bd45cacf2aca4b7ad0649a439afea..dbc01a017d0133e40fe7301c12108f02e232ccf2 100644 --- a/process/MimeType_lib/MimeType_lib.aod +++ b/process/MimeType_lib/MimeType_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>MimeType_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/MimeType_lib/process.js</process> diff --git a/process/Money_lib/Money_lib.aod b/process/Money_lib/Money_lib.aod index 9c27e1c6debbf49bc099056bddd3fe16f4243480..5232420c51a99d8a74ec92dfb5667b5f564993dc 100644 --- a/process/Money_lib/Money_lib.aod +++ b/process/Money_lib/Money_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Money_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Money_lib/process.js</process> diff --git a/process/Neon_lib/Neon_lib.aod b/process/Neon_lib/Neon_lib.aod index ace4a1e8ec19c194c1d9e00326013f3656cd35b4..0a51cffca155b7298f9f83a18d71bfca25884031 100644 --- a/process/Neon_lib/Neon_lib.aod +++ b/process/Neon_lib/Neon_lib.aod @@ -1,7 +1,8 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Neon_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/Neon_lib/documentation.adoc</documentation> <process>%aditoprj%/process/Neon_lib/process.js</process> <variants> <element>LIBRARY</element> diff --git a/others/guide/how to copy objects with subitems.adoc b/process/Neon_lib/documentation.adoc similarity index 100% rename from others/guide/how to copy objects with subitems.adoc rename to process/Neon_lib/documentation.adoc diff --git a/process/Neon_lib/process.js b/process/Neon_lib/process.js index b758e7db586995f24a7a3051427e610e5e053b7f..4d7d910d5d98598a85aec882756dd42d87cc0693 100644 --- a/process/Neon_lib/process.js +++ b/process/Neon_lib/process.js @@ -177,12 +177,11 @@ CopyModuleUtils.copyModule = function(pInputMapping) var ModuleColumnsStructure = AliasDefinitionStructure.tables[pModule].columns; var cols = Object.keys(ModuleColumnsStructure); - - var condition = "1=1"; + var dataQuery = newSelect(cols).from(pModule); if(pCondition != undefined) - condition = pCondition; + dataQuery.where(pCondition) - var dbData = newSelect(cols).from(pModule).where(condition).table(); + var dbData = dataQuery.table(); //map 2d-Array to Object { $rowNumber$: { $columnName$: { value: "valueInDB" } } } var DataObj = {}; @@ -304,23 +303,15 @@ CopyModuleUtils.copyModule = function(pInputMapping) } break; case "OFFERLINK": - { - - } default: { - } - - + } } return ModuleRowMapping; } - - - function _columnMapping(pNewValue, pOldValue, pDestinationColumn) { return { @@ -329,7 +320,6 @@ CopyModuleUtils.copyModule = function(pInputMapping) destinationColumn: pDestinationColumn }; } - } /** @@ -356,33 +346,26 @@ CopyModuleUtils.copyModule = function(pInputMapping) for(var subModule in pMapping.SubModules) { - for(var row in pMapping.SubModules[subModule].DataRows) { statements.push(_statement(pMapping.SubModules[subModule].DataRows[row])); } - _subordinatedStatements(pMapping.SubModules[subModule]); } - } function _statement(pRowMapping) { - var cols = []; - var vals = []; + var fieldValues = new Map(); var destTable = pRowMapping.ModuleMapping.destinationModuleName; var colMapping = pRowMapping.ColumnMapping; - for(var col in colMapping) + for (let col in colMapping) { - cols.push(colMapping[col].destinationColumn); - vals.push(colMapping[col].newValue.toString()); + fieldValues.set(colMapping[col].destinationColumn, colMapping[col].newValue) } - var colTypes = db.getColumnTypes(destTable, cols)//load once for better performance - - return [destTable, cols, colTypes, vals]; + return new SqlBuilder().buildInsertStatement(fieldValues, destTable); } } } diff --git a/process/NewsSystem_lib/NewsSystem_lib.aod b/process/NewsSystem_lib/NewsSystem_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..8c226c330e0ee283d37c6ea4421bc4e6a12d0b02 --- /dev/null +++ b/process/NewsSystem_lib/NewsSystem_lib.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>NewsSystem_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/NewsSystem_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> diff --git a/process/NewsSystem_lib/process.js b/process/NewsSystem_lib/process.js new file mode 100644 index 0000000000000000000000000000000000000000..08af9ed2029b68510491acd2341584bd452e5703 --- /dev/null +++ b/process/NewsSystem_lib/process.js @@ -0,0 +1,91 @@ +import("Sql_lib"); +import("system.vars"); +import("system.util"); +import("KnowledgeManagement_lib"); +import("system.entities"); +import("system.text"); +import("system.notification"); +import("system.tools"); + +function NewsSystem() {} + +/* + * Returns the selected users with the given role/s. + * + * @param {Array} roleArray req roles, that need to are selected. + * + * @return {Array} User internal name of user model. + */ +NewsSystem.getUsersWithRoles = function(roleArray) +{ + var users = tools.getUsers(tools.getUsersWithAnyRole(roleArray), tools.PROFILE_FULL); + var arr = []; + + for(var i = 0; i < users.length; i++) + { + arr.push(users[i][tools.NAME]); + } + + return arr; +} + +/* + * Creates a news notification for the selected users. + * + * @param {String} description req The description of the news. + * @param {String} caption req The title of the news. + * @param {Array} users req Selected users. + * @param {String} id req KnowledgemanagementID to connect the notification. + * + * @return {void} + */ +NewsSystem.createNewsNotification = function(description, caption, users, id) +{ + var config = notification.createConfig() + .notificationType("News") + .description(description) + .caption(caption) + .linkInfo(text.encodeMS(["KnowledgeManagement", id])) + .initialState(notification.STATE_UNSEEN) + .addUsersWithIds(users); + + notification.addNotificationWith(config); +} + +/* + * Returns a sub-sql for the translated Roles. + * + * @return {String} Returns a sub-sql for the translated Roles. + */ +NewsSystem.getDisplayValue = function() +{ + var resultSet = SqlBuilder.caseStatement(); + var allRolesObject = tools.getAllRoles(); + + for (let role in allRolesObject) + { + let currentRoleObject = allRolesObject[role]; + resultSet.when("KNOWLEDGEROLES.ROLENAME", currentRoleObject[3]).thenString(currentRoleObject[0]); + } + + return resultSet.toString(); +} + +NewsSystem.setAsNews = function(pKnowledgeID, pNotification, pIsNews) +{ + if(pNotification) //check if the field "mark" is ticked + { + vars.set("$context.setNotificationMark", true); //set context variable true to trigger the afterOperatingState process + } + + if(pIsNews) //check if the field "isNewsMark" is ticked + { + var knowledgeId = pKnowledgeID; + var data = {}; + data["TAG.value"] = "News"; + + KnowledgeManagementTagsController + .getInstance(knowledgeId) + .addTag(util.getNewUUID(), data); //set the "news"-tag to the current data set + } +} diff --git a/process/Notification_lib/Notification_lib.aod b/process/Notification_lib/Notification_lib.aod index 41cd1071d9d966bb2f65b117d6604310ee061511..28beacbb0d89e042930c765435f9356d30159cd6 100644 --- a/process/Notification_lib/Notification_lib.aod +++ b/process/Notification_lib/Notification_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Notification_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Notification_lib/process.js</process> diff --git a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod index fe86c4d1f97ec9f9611d761f65c14d51c27e3f02..65ad5b0b0b220dad46352ae8b2c3e5abb8f2a7f7 100644 --- a/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod +++ b/process/ObjectRelationTypeRegistry_basic/ObjectRelationTypeRegistry_basic.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ObjectRelationTypeRegistry_basic</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ObjectRelationTypeRegistry_basic/process.js</process> diff --git a/process/ObjectRelation_lib/ObjectRelation_lib.aod b/process/ObjectRelation_lib/ObjectRelation_lib.aod index e5a4d95eb356b4bf2900d50e7b7a62ed22355697..b48e1daede58b2cf8d4d1abee0a5bc749e4088a8 100644 --- a/process/ObjectRelation_lib/ObjectRelation_lib.aod +++ b/process/ObjectRelation_lib/ObjectRelation_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ObjectRelation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ObjectRelation_lib/process.js</process> 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/OfferOrder_lib/OfferOrder_lib.aod b/process/OfferOrder_lib/OfferOrder_lib.aod index 0df9d9a624d014c6b4583935732acbdea2b2b99e..353cb8ca017b884d62b217dec8fb764c6d08b6f5 100644 --- a/process/OfferOrder_lib/OfferOrder_lib.aod +++ b/process/OfferOrder_lib/OfferOrder_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>OfferOrder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/OfferOrder_lib/process.js</process> diff --git a/process/Offer_lib/Offer_lib.aod b/process/Offer_lib/Offer_lib.aod index 41247d62423c487255eb9fe234106031fd8a1b6f..d1f79adeeb65335a2c2652db92555530fb3e2403 100644 --- a/process/Offer_lib/Offer_lib.aod +++ b/process/Offer_lib/Offer_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Offer_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Offer_lib/process.js</process> diff --git a/process/Offer_lib/process.js b/process/Offer_lib/process.js index 7c9504fa26da75fa05ae7753f287070f922dd250..78ea329bfc0de71f18965d80cc03b82397687b0e 100644 --- a/process/Offer_lib/process.js +++ b/process/Offer_lib/process.js @@ -319,29 +319,24 @@ OfferUtils.openOfferReport = function (pOfferID) * opens an offer in NEW mode with values from an offer * * @param {String} pOfferId of the offer - * @param {String} pContactId - * @param {String} pLanguage - * @param {String} [pCurrency=""] - * @param {String} [pHeader=""] - * @param {String} [pFooter=""] - * @param {String} [pDeliveryTerm=""] - * @param {String} [pPaymentTerm=""] - * @param {String} [pObjectType=""] - * @param {String} [pRowId=""] + * @param {Object} [pOfferData={}] additional offer properties: + * contactId, language, currency, header, footer, deliveryTerm, paymentTerm, objectType, objectRowId */ -OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHeader, pFooter, pDeliveryTerm, pPaymentTerm, pObjectType, pRowId) +OfferUtils.copyOffer = function (pOfferId, pOfferData) { + if (!pOfferData) + pOfferData = {}; var params = { - "ContactId_param" : pContactId, - "OfferLanguage_param" : pLanguage, - "OfferOriginal_Id_param" : pOfferId, - "OfferCurrency_param" : pCurrency || "", - "OfferHeader_param" : pHeader || "", - "OfferFooter_param" : pFooter || "", - "OfferDeliveryTerm_param" : pDeliveryTerm || "", - "OfferPaymentTerm_param" : pPaymentTerm || "", - "ObjectType_param" : pObjectType || "", - "ObjectRowId_param" : pRowId || "" + "OfferOriginal_Id_param": pOfferId, + "ContactId_param": pOfferData.contactId, + "OfferLanguage_param": pOfferData.language, + "OfferCurrency_param": pOfferData.currency || "", + "OfferHeader_param": pOfferData.header || "", + "OfferFooter_param": pOfferData.footer || "", + "OfferDeliveryTerm_param": pOfferData.deliveryTerm || "", + "OfferPaymentTerm_param": pOfferData.paymentTerm || "", + "ObjectType_param": pOfferData.objectType || "", + "ObjectRowId_param": pOfferData.objectRowId || "" }; neon.openContext("Offer", null, null, neon.OPERATINGSTATE_NEW, params); } @@ -354,24 +349,26 @@ OfferUtils.copyOffer = function (pOfferId, pContactId, pLanguage, pCurrency, pHe */ OfferUtils.copyOfferItems = function (pSourceOfferId, pTargetOfferId) { - var InputMapping = { + var inputMapping = { "OFFERITEM": { - condition: newWhereIfSet("OFFERITEM.OFFER_ID", pSourceOfferId).orderBy("ITEMSORT").toString(SqlBuilder.NORESULT_CONDITION(), true), + condition: newWhere("OFFERITEM.OFFER_ID", pSourceOfferId), ValueMapping: { - "OFFER_ID" : pTargetOfferId + "OFFER_ID": pTargetOfferId } } }; - CopyModuleUtils.copyModule(InputMapping); + CopyModuleUtils.copyModule(inputMapping); var oiUtils = new OfferItemUtils(pTargetOfferId); //update order price - cols = ["NET", "VAT"]; - var vals = oiUtils.getNetAndVat(); + var [netPrice, vat] = oiUtils.getNetAndVat(); newWhere("OFFER.OFFERID", pTargetOfferId) - .updateData(true, "OFFER", cols, null, vals); + .updateFields({ + "NET": netPrice, + "VAT": vat + }); } /** @@ -502,7 +499,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/Order_lib/Order_lib.aod b/process/Order_lib/Order_lib.aod index 3e225851b15f65e8d77e15182de060a04aee4878..5f4e4c315b81d7aad9b321298486d9d4591e66ac 100644 --- a/process/Order_lib/Order_lib.aod +++ b/process/Order_lib/Order_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Order_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Order_lib/process.js</process> diff --git a/process/Order_lib/process.js b/process/Order_lib/process.js index d6938458c59687ef679f1d437661ec456e01f2e8..74651b5982c20b9ef43762491a29380d7dea1902 100644 --- a/process/Order_lib/process.js +++ b/process/Order_lib/process.js @@ -97,32 +97,42 @@ OrderUtils.createNewOrder = function(pContextId, pRowId, pRelationId) neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } -OrderUtils.copyOrder = function (pSourceOfferId, pContactId, pOrderType, pLanguage, pCurrency, pHeader, pFooter, pDeliveryTerm, pPaymentTerm, pPaymentAddress, pDeliveryAddress, pObjectType, pRowId, pDunningDate, pDunningLevel, pCancellation, pOrderStatus) +/** + * Opens a new Order copy + * + * @param {String} pSourceOrderId id of the source order + * @param {Object} [pOrderData] the field values to preset, possible properties: contactId, orderType, language, offerId, currency, + * header, footer, deliveryTerm, paymentTerm, paymentAddress, deliveryAddress, objectType, objectRowId, + * dunningDate, dunningLevel, cancellation, orderStatus + */ +OrderUtils.copyOrder = function (pSourceOrderId, pOrderData) { - + if (!pOrderData) + pOrderData = {}; var fieldparams = { - "$field.CONTACT_ID" : pContactId, - "$field.ORDERTYPE" : pOrderType, - "$field.ISOLANGUAGE" : pLanguage, - "$field.OFFER_ID" : pSourceOfferId, - "$field.CURRENCY" : pCurrency || "", - "$field.HEADER" : pHeader || "", - "$field.FOOTER" : pFooter || "", - "$field.DELIVERYTERMS" : pDeliveryTerm || "", - "$field.PAYMENTTERMS" : pPaymentTerm || "", - "$field.PAYMENTADDRESS" : pPaymentAddress || "", - "$field.DELIVERYADDRESS" : pDeliveryAddress || "", - "$field.OBJECT_TYPE" : pObjectType || "", - "$field.OBJECT_ROWID" : pRowId || "", - "$field.DUNNINGDATE" : pDunningDate || "", - "$field.DUNNINGLEVEL" : pDunningLevel || "", - "$field.CANCELLATION" : pCancellation || "", - "$field.ORDERSTATUS" : pOrderStatus || "" + "$field.CONTACT_ID": pOrderData.contactId, + "$field.ORDERTYPE": pOrderData.orderType, + "$field.ISOLANGUAGE": pOrderData.language, + "$field.OFFER_ID": pOrderData.offerId, + "$field.CURRENCY": pOrderData.currency || "", + "$field.HEADER": pOrderData.header || "", + "$field.FOOTER": pOrderData.footer || "", + "$field.DELIVERYTERMS": pOrderData.deliveryTerm || "", + "$field.PAYMENTTERMS": pOrderData.paymentTerm || "", + "$field.PAYMENTADDRESS": pOrderData.paymentAddress || "", + "$field.DELIVERYADDRESS": pOrderData.deliveryAddress || "", + "$field.OBJECT_TYPE": pOrderData.objectType || "", + "$field.OBJECT_ROWID": pOrderData.objectRowId || "", + "$field.DUNNINGDATE": pOrderData.dunningDate || "", + "$field.DUNNINGLEVEL": pOrderData.dunningLevel || "", + "$field.CANCELLATION": pOrderData.cancellation || "", + "$field.ORDERSTATUS": pOrderData.orderStatus || "" }; - var params = {}; - params["Copy_param"] = JSON.stringify(fieldparams); - params["OfferId_param"] = pSourceOfferId; + var params = { + "Copy_param": JSON.stringify(fieldparams), + "SourceOrderId_param": pSourceOrderId + }; neon.openContext("Order", null, null, neon.OPERATINGSTATE_NEW, params); } @@ -174,6 +184,36 @@ OrderUtils.copyOfferItemsToOrder = function (pSourceOfferId, pOrderId) .updateData(true, "SALESORDER", cols, null, vals); } +/** + * copies all orderItems and creates orderItems for an order + * + * @param {String} pSourceOrderId the order to get the items from + * @param {String} pTargetOrderId the order to create the items for + */ +OrderUtils.copyOrderItems = function (pSourceOrderId, pTargetOrderId) +{ + var inputMapping = { + "SALESORDERITEM": { + condition: newWhere("SALESORDERITEM.SALESORDER_ID", pSourceOrderId), + ValueMapping: { + "SALESORDER_ID": pTargetOrderId + } + } + }; + CopyModuleUtils.copyModule(inputMapping); + + var oiUtils = new OrderItemUtils(pTargetOrderId); + + //update order price + var [netValue, vat] = oiUtils.getNetAndVat(); + + newWhere("SALESORDER.SALESORDERID", pTargetOrderId) + .updateFields({ + "NET": netValue, + "VAT": vat + }); +} + /** * Will build the order report for the given order. * @@ -343,7 +383,7 @@ OrderUtils.buildOrderReport = function (pOrderID) "SUMITEMSUM" : sumItemSum, "TOTAL" : text.formatDouble(total, "#,##0.00", true), "printDiscount" : printDiscount ? "1" : "0", - "Person" : db.cell(ContextUtils.getNameSql(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID"))) + "Person" : ContextUtils.getTitleByContext(vars.get("$field.OBJECT_TYPE"), vars.get("$field.OBJECT_ROWID")) }; @@ -545,7 +585,8 @@ OrderUtils.buildReminderReport = function (pOrderID) "Ordernumber": translate.text("Order number",language), "Orderdate": translate.text("Order date",language), "Orderamount": translate.text("Order amount",language), - "Dunninglevel": translate.text("Dunning level",language) + "Dunninglevel": translate.text("Dunning level",language), + "OutstandingAmount": translate.text("Outstanding Amount",language) }; diff --git a/process/Organisation_lib/Organisation_lib.aod b/process/Organisation_lib/Organisation_lib.aod index 47bca652458c91d875f43aa22721999afeb471e7..1f0d01aabbddda8eb361bc70f337f423e640d513 100644 --- a/process/Organisation_lib/Organisation_lib.aod +++ b/process/Organisation_lib/Organisation_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Organisation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Organisation_lib/process.js</process> diff --git a/process/Organisation_lib/process.js b/process/Organisation_lib/process.js index 5532a6817dbac7d0f8a0e0a70dd26c7237f9725d..6a5b4e22bf0a04f89b6eb8b302a09ae76ec1b04f 100644 --- a/process/Organisation_lib/process.js +++ b/process/Organisation_lib/process.js @@ -236,3 +236,18 @@ OrgUtils.openOrgReport = function(pContactId) { neon.openContext("Organisation", "OrganisationReport_view", [pContactId], neon.OPERATINGSTATE_VIEW, null); } + +/** + * creates an subSql for resolving a org into one string of text + * useful for example in an displayValue-expression to resolave a references (which is chosen by Lookups) + * + * @param {String} pRelationIdField fieldname for the CONTACTID-condition as TABLEALIAS.COLUMNALIAS; + * @return {String} a subsql (without bracets) that can be placed within an SQL + */ +OrgUtils.getResolvingDisplaySubSql = function(pRelationIdField) +{ + //TODO: verify if there is a better solution for the usage of this as a displayValueExpression --> automatic use of #TITLE | waiting for implementation + return newSelect("NAME").from("ORGANISATION") + .join("CONTACT", "ORGANISATIONID = ORGANISATION_ID") + .where("PERSON_ID is null").and("CONTACT.CONTACTID = "+ pRelationIdField).toString(); +} diff --git a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod index 8f5c6970ce7e043c67c775b033e685acbb4ac8a8..1b2ab4f46514eb141579af4444ec1bbbcf7bd4f0 100644 --- a/process/PermissionCalendar_lib/PermissionCalendar_lib.aod +++ b/process/PermissionCalendar_lib/PermissionCalendar_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>PermissionCalendar_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/PermissionCalendar_lib/process.js</process> diff --git a/process/Permission_lib/Permission_lib.aod b/process/Permission_lib/Permission_lib.aod index 00dceca975179d33311ba7f807e5800a2f748d98..642b9b00218b040d6b833530810f5439a0effc75 100644 --- a/process/Permission_lib/Permission_lib.aod +++ b/process/Permission_lib/Permission_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Permission_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Permission_lib/process.js</process> diff --git a/process/Permission_lib/process.js b/process/Permission_lib/process.js index fcb7a7086c7058d276aea897d12d898781e1d61f..9a4b05adcacf8a765e7c19149128ec2e34ed7a90 100644 --- a/process/Permission_lib/process.js +++ b/process/Permission_lib/process.js @@ -704,6 +704,21 @@ function PermissionUtil () {} } return false; } + + /** + * Returns all child role ids and names of the given role. + * + * @param {String} pRoleName parent role name, mandatory + * + * @result {String[]} array with ids and names of child roles + */ + PermissionUtil.getChildRoles = function(pRoleName) { + // hierarchies where pRoleName is parent + return newSelect("ID, CHILD_ROLE", alias) + .from("ASYS_ROLES_CHILDREN") + .where("ASYS_ROLES_CHILDREN.PARENT_ROLE", pRoleName) + .table(); + } /** * Delete all links to child roles of pRoleName. diff --git a/process/Person_lib/Person_lib.aod b/process/Person_lib/Person_lib.aod index 04c0795c9a2fcb6fcdd7f580da9ffe3a2be374e9..80e4dc8248fca9713ea9c6419d8e9ff647956527 100644 --- a/process/Person_lib/Person_lib.aod +++ b/process/Person_lib/Person_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Person_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Person_lib/process.js</process> diff --git a/process/Placeholder_lib/Placeholder_lib.aod b/process/Placeholder_lib/Placeholder_lib.aod index 1cc12d42bd4091664def57971f81d140c9dcc0e2..2af9f3a9ab189e4a59216d944a9d9703eb9880f6 100644 --- a/process/Placeholder_lib/Placeholder_lib.aod +++ b/process/Placeholder_lib/Placeholder_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Placeholder_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Placeholder_lib/process.js</process> diff --git a/process/Placeholder_lib/process.js b/process/Placeholder_lib/process.js index 2c1cb9d8214a5b5ca9d0698a3d7dc14d345cdf64..a162fc7ee5d7514746718d5054fa10f7cb73df71 100644 --- a/process/Placeholder_lib/process.js +++ b/process/Placeholder_lib/process.js @@ -53,10 +53,10 @@ PlaceholderUtils.getPlaceholders = function (pLocale, pIsExportTemplateField) _addSqlPart("title", "PERSON.TITLE", null , translate.text("Title", locale)); _addSqlPart("phone", CommUtil.getStandardSubSqlPhone(), null , translate.text("Phone", locale)); _addSqlPart("email", CommUtil.getStandardSubSqlMail(), null , translate.text("Email", locale)); - _addSqlPart("name", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), null , translate.text("Name", locale)); + _addSqlPart("name", sqlUtil.concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), null , translate.text("Name", locale)); _addSqlPart("senderPhone", CommUtil.getStandardSubSqlPhone(), Placeholder.targets.SENDER, null); _addSqlPart("senderEmail", CommUtil.getStandardSubSqlMail(), Placeholder.targets.SENDER, null); - _addSqlPart("senderName", sqlUtil.concat(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), Placeholder.targets.SENDER, null); + _addSqlPart("senderName", sqlUtil.concatWithSeparator(["SALUTATION", "TITLE", "FIRSTNAME", "LASTNAME"]), Placeholder.targets.SENDER, null); _addSqlPart("date", "'" + datetime.toDate(vars.get("sys.date"), translate.text("dd.MM.yyyy")) + "'", Placeholder.targets.SENDER, null); diff --git a/process/PostalAddress_lib/PostalAddress_lib.aod b/process/PostalAddress_lib/PostalAddress_lib.aod index f7af81f2c9b9cb3ab8b20c4faa523894b5df10f7..a07348310e4c97fb5da2bf3bdd9b86e56994aaed 100644 --- a/process/PostalAddress_lib/PostalAddress_lib.aod +++ b/process/PostalAddress_lib/PostalAddress_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>PostalAddress_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/PostalAddress_lib/process.js</process> diff --git a/process/PostalAddress_lib/process.js b/process/PostalAddress_lib/process.js index b7cf917b59474c3ae70496de43be1554e4b28aea..996991dd07a980a6ba91ed1851171b0d2a8ce9f2 100644 --- a/process/PostalAddress_lib/process.js +++ b/process/PostalAddress_lib/process.js @@ -42,7 +42,7 @@ AddressUtils.formatOnelineSql = function () { //request (and resulting change) was made here to NOT include Country int othe title var maskingHelper = new SqlMaskingUtils(); - var sqlExpression = maskingHelper.concat(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "'-'", "ADDRESS.COUNTRY", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"]); + var sqlExpression = maskingHelper.concatWithSeparator(["ADDRESS.ADDRESS", "ADDRESS.BUILDINGNO", "'-'", "ADDRESS.COUNTRY", "ADDRESS.ZIP", "ADDRESS.CITY", "ADDRESS.ADDRIDENTIFIER"]); return sqlExpression; }; diff --git a/process/Product_lib/Product_lib.aod b/process/Product_lib/Product_lib.aod index 9c72fa0f0cdb72396fc83c73d54fadb87bcfd7ad..a1197452b9288cb8d7c3224f2e669f0d47505649 100644 --- a/process/Product_lib/Product_lib.aod +++ b/process/Product_lib/Product_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Product_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Product_lib/process.js</process> diff --git a/process/Proto_lib/Proto_lib.aod b/process/Proto_lib/Proto_lib.aod index dd8841dc7aba84fa95c02f339956908458bb7307..ce167574ad6d6a97588312e3f6cbc5d0156933ae 100644 --- a/process/Proto_lib/Proto_lib.aod +++ b/process/Proto_lib/Proto_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Proto_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Proto_lib/process.js</process> diff --git a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod index 7d7d887aa097e608434cd4b22d55986a75d7f33b..11432054cc7356358ef25e9d7b657ca5973bba2f 100644 --- a/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod +++ b/process/RebuildAllDuplicateCaches_serverProcess/RebuildAllDuplicateCaches_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>RebuildAllDuplicateCaches_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/RebuildAllDuplicateCaches_serverProcess/process.js</process> diff --git a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod index 21d0559480699c819f719274c88863094991a05d..078550c7200171ccff2e26f2515a616016da481a 100644 --- a/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod +++ b/process/RebuildDuplicatesCache_serverProcess/RebuildDuplicatesCache_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>RebuildDuplicatesCache_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/RebuildDuplicatesCache_serverProcess/process.js</process> diff --git a/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.aod new file mode 100644 index 0000000000000000000000000000000000000000..9a2e06c6e7128e5448ad661af163c5f1ff23986d --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/RemoveFromCampaign_workflowService.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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>RemoveFromCampaign_workflowService</name> + <title>Remove from Campaign</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/RemoveFromCampaign_workflowService/process.js</process> + <alias>Data_alias</alias> + <serviceTaskParameterProcess>%aditoprj%/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess> + <variants> + <element>WORKFLOW</element> + </variants> +</process> diff --git a/process/RemoveFromCampaign_workflowService/process.js b/process/RemoveFromCampaign_workflowService/process.js new file mode 100644 index 0000000000000000000000000000000000000000..c7552ccfed53d9ef5f0f2b5a34540548e0ff4177 --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/process.js @@ -0,0 +1,12 @@ +import("system.util"); +import("Sql_lib"); +import("system.vars"); + +var variables = JSON.parse(vars.get("$local.value")); + +var contactId = variables.contactId || variables.targetId; +var campaignId = variables.campaignId; + +newWhere("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId) + .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId) + .deleteData(); \ No newline at end of file diff --git a/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..cc949e7c1051a706a6f73fd1be401a450e17956c --- /dev/null +++ b/process/RemoveFromCampaign_workflowService/serviceTaskParameterProcess.js @@ -0,0 +1,23 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Workflow_lib"); + +var currentValues = JSON.parse(vars.get("$local.value")); + +var campaigns = newSelect(["CAMPAIGNID", "NAME"]) + .from("CAMPAIGN") + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + +var parameters = [ + new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns) +]; + +result.object(parameters); \ No newline at end of file diff --git a/process/Report_lib/Report_lib.aod b/process/Report_lib/Report_lib.aod index b847e04de6288a50fd822dffef554f45c285423f..a7caa94038945e9aa86704ab525dc5dc21b037e5 100644 --- a/process/Report_lib/Report_lib.aod +++ b/process/Report_lib/Report_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Report_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Report_lib/process.js</process> diff --git a/process/Salesproject_lib/Salesproject_lib.aod b/process/Salesproject_lib/Salesproject_lib.aod index 06956e427082baea872c1f395aca9c5337032e42..32fb545354a53bee2209d60d4cdbf64074e24a55 100644 --- a/process/Salesproject_lib/Salesproject_lib.aod +++ b/process/Salesproject_lib/Salesproject_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Salesproject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Salesproject_lib/process.js</process> diff --git a/process/Salesproject_lib/process.js b/process/Salesproject_lib/process.js index 53974b0854233bf64338f7423e1ac1c2bb6f5e0d..c88cd30a425644445654b840b169eccb24206c30 100644 --- a/process/Salesproject_lib/process.js +++ b/process/Salesproject_lib/process.js @@ -1,3 +1,6 @@ +import("system.datetime"); +import("system.logging"); +import("KeywordData_lib"); import("Sql_lib"); import("system.neon"); import("system.vars"); @@ -156,7 +159,10 @@ Salesproject.updateSalesprojectPhase = function(pSalesprojectId, pPhase) * * @class */ -function SalesprojectConversionRate() {} +function SalesprojectConversionRate() { + this.MILESTONES = {}; + this.isGrouping = null; +} /** * Returns the Mapping of the Fields and FilterExtention for the grouping @@ -177,11 +183,11 @@ SalesprojectConversionRate.groupMapping = function (pRightOneTables) } } - let dateStartYear = sqlHelper.yearFromDate("DATA.DATE_START"); - let dateStartMonth = sqlHelper.monthFromDate("DATA.DATE_START"); + let dateStartYear = sqlHelper.yearFromDate("SALESPROJECT_MILESTONE.DATE_START"); + let dateStartMonth = sqlHelper.monthFromDate("SALESPROJECT_MILESTONE.DATE_START"); return { - "AB_KEYWORD_ENTRYID_KEYID": ["DATA.KEYID", "DATA.TITLE", "DATA.SORTING"], + "AB_KEYWORD_ENTRYID_KEYID": ["AB_KEYWORD_ENTRY.KEYID", "AB_KEYWORD_ENTRY.TITLE", "AB_KEYWORD_ENTRY.SORTING"], "#EXTENSION.Year.Year#NUMBER" : [dateStartYear, dateStartYear, dateStartYear], "#EXTENSION.Month.Month#NUMBER" : [dateStartMonth, dateStartMonth, dateStartMonth] } @@ -249,4 +255,156 @@ SalesprojectConversionRate.filterMapping = function(pField, pIsAll, pTable) } +/** + * Returns the Phases Keywordkeys + * + * @return {Array} Phases Keywordkeys + */ +SalesprojectConversionRate.prototype.PHASE = function () { + return KeywordData.getSimpleData($KeywordRegistry.salesprojectPhase()).map(function (r) { + return r[0]; + }); +} +/** + * Add Milestones to the Phases of the given Grouping. + * The Milestone is adding to the given and overlying Phases. + * + * @param {String} [pSalesprojectID] the ID of the Salesproject + * @param {String} [pPhase] the phase of the milestone + * @param {String} [pGrouping] the grouping Field + */ +SalesprojectConversionRate.prototype.insertMilestone = function (pSalesprojectID, pPhase, pGrouping) { + let logDetail = ["SALESPROJECT_MILESTONEID: " + pSalesprojectID, "PHASE: " + pPhase, "GROUPING: " + pGrouping] + let indexPhase = this.PHASE().indexOf(pPhase) + if (indexPhase > -1) { + let tempPhases; + if (pGrouping) + { + if ((!this.isGrouping) && this.isGrouping != null){ + logging.log(translate.text("The grouping is not active, but there is one given!"), logging.ERROR, logDetail); + return; + } + if (!this.MILESTONES[pGrouping]) + this.MILESTONES[pGrouping] = {}; + this.isGrouping = true; + tempPhases = this.MILESTONES[pGrouping]; + } + else if (this.isGrouping && this.isGrouping != null) + { + logging.log(translate.text("The grouping is active, but there is no one given!"), logging.ERROR, logDetail); + return; + } + else + { + tempPhases = this.MILESTONES; + this.isGrouping = false; + } + + + if (!tempPhases[pPhase]) + { + tempPhases[pPhase] = {}; + tempPhases[pPhase].size = 0; + } + + if (!tempPhases[pPhase][pSalesprojectID]) + { + tempPhases[pPhase][pSalesprojectID] = true; + tempPhases[pPhase].size++; + } + + if (indexPhase - 1 != -1) + this.insertMilestone(pSalesprojectID, this.PHASE()[indexPhase - 1], pGrouping); + } + else + { + logging.log(translate.withArguments("The given Phase \"%0\" can not be found.", [pPhase]), logging.ERROR, logDetail); + } +} + +/** + * Calculates the Conversion Rate for evry grouping field + * + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + * + */ +SalesprojectConversionRate.prototype.getConversionRates = function (pFilter) { + if (this.isGrouping == null) + logging.log(translate.text("You have to use the insertMilestone Function before."), logging.ERROR); + else if (this.isGrouping) + { + let groupingResults = []; + Object.keys(this.MILESTONES).forEach(function (grouping) { + let count = 0; + let sum = 0.0; + let sumMilestones = 0; + this._getConversionRatesofPhases(this.MILESTONES[grouping], pFilter).forEach(function (phase) { + sum += phase[3]; + sumMilestones += phase[0] + count++; + }, this); + if (sumMilestones != 0) + groupingResults.push(["" + sumMilestones, grouping, this._getTitleOfKey(grouping, true), (sum / count)]) + }, this); + return groupingResults + } + else + { + return this._getConversionRatesofPhases(this.MILESTONES, pFilter); + } + return []; +} + +/** + * Calculates the Conversion Rate for the phases + * + * @param {Array} [pPhases] the phases of the current grouping + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + * + */ +SalesprojectConversionRate.prototype._getConversionRatesofPhases = function (pPhases, pFilter) { + let results = []; + this._addToResult(pPhases[this.PHASE()[0]].size, this.PHASE()[0], -1, results, pFilter); + for (let i = 1; i < Object.keys(pPhases).length ;i++) + { + this._addToResult(pPhases[this.PHASE()[i]].size, this.PHASE()[i], pPhases[this.PHASE()[i-1]].size, results, pFilter); + } + return results; +} + +/** + * Adds the Values to the result array + * + * @param {Array} [pCount] the count of the phase + * @param {Array} [pId] the id of the phase + * @param {Array} [pPreCount] the count of the previous phase + * @param {Array} [pResult] the array into which the data will be added + * @param {Array} [pFilter] the ids of the phases, which has to be filtered + */ +SalesprojectConversionRate.prototype._addToResult = function (pCount, pId, pPreCount, pResult, pFilter){ + if ((pFilter && pFilter.indexOf(pId)> -1) || !pFilter) + // COUNT, ID, TITLE, CONVERSION_RATE + pResult.push([this.isGrouping ? pCount : ("" + pCount), pId, this._getTitleOfKey(pId), pPreCount == -1 ? 0 : (pCount /pPreCount)]); +} + +/** + * gets the title of the key + * @param {Array} [pKey] the key, which has to translate + * @param {Array} [pIsGrouping] is this title of a grouping + */ +SalesprojectConversionRate.prototype._getTitleOfKey = function (pKey, pIsGrouping) { + if (pIsGrouping) + { + if (pKey <= 12) + { + // When convert the Number of the Month to the Month name it doesn't matter which Year is used, so here is the Year 2020 hard-coded. + let monthDate = new Date(2020, parseInt(pKey)-1); + return translate.text(datetime.toDate(monthDate.getTime(), "MMMM", "UTC")); + } + } + else + return KeywordUtils.getViewValue($KeywordRegistry.salesprojectPhase(),pKey); + + return pKey; +} diff --git a/process/SendEmail_workflowService/SendEmail_workflowService.aod b/process/SendEmail_workflowService/SendEmail_workflowService.aod index d58abf463370007f75396e6fc71b93827fcfabd3..2dbab69e62effe7618abfdd14335a8de7fdc0c27 100644 --- a/process/SendEmail_workflowService/SendEmail_workflowService.aod +++ b/process/SendEmail_workflowService/SendEmail_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SendEmail_workflowService</name> <title>Send email</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SendEmail_workflowService/process.js b/process/SendEmail_workflowService/process.js index 6ccbfe3e76006ca51544b503453320d416d35951..bdc3aab5db6de1f34a580ef8363a52707ba63617 100644 --- a/process/SendEmail_workflowService/process.js +++ b/process/SendEmail_workflowService/process.js @@ -10,19 +10,22 @@ import("Workflow_lib"); var processInstanceId = vars.get("$local.uid"); var variables = JSON.parse(vars.get("$local.value")); -var recipientContactId = variables.recipientContactId; +var recipientContactId = variables.recipientContactId || variables.targetId; var documentTemplateId = variables.documentTemplateId; var senderName = variables.senderName; var mailSubject = variables.mailSubject; +var aditoUrl = variables.originUrl; var actionParams = Utils.clone(variables); actionParams.processInstanceId = processInstanceId; -var linkPlaceholder = new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () +var additionalPlaceholders = []; +if (aditoUrl) { - return WorkflowLinkActions.getActionLink("https://localhost:8443", actionParams.linkActionType, actionParams.redirectLink, actionParams); -}); + var linkPlaceholder = WorkflowLinkActions.getActionLinkPlaceholder(actionParams.linkActionType, actionParams, actionParams.redirectLink, aditoUrl); + additionalPlaceholders.push(linkPlaceholder); +} -var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, [linkPlaceholder]); +var email = Email.fromTemplate(documentTemplateId, recipientContactId, null, additionalPlaceholders); email.subject = mailSubject; email.toRecipients = [CommUtil.getStandardMail(recipientContactId)]; diff --git a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod index 0816609206a36c0993b7f8a5eff2cfb94344662a..17c234d1ae4af84fa4575854505e42e53b478c81 100644 --- a/process/SetAttribute_workflowService/SetAttribute_workflowService.aod +++ b/process/SetAttribute_workflowService/SetAttribute_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SetAttribute_workflowService</name> <title>Set attribute</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SetAttribute_workflowService/process.js b/process/SetAttribute_workflowService/process.js index c9f17d88c318b1f97b6efb9894f68cd20a161bf0..b79ef56f6446a63ed5ac20979272636f811580ba 100644 --- a/process/SetAttribute_workflowService/process.js +++ b/process/SetAttribute_workflowService/process.js @@ -1,3 +1,4 @@ +import("Util_lib"); import("Sql_lib"); import("Attribute_lib"); import("system.result"); @@ -5,6 +6,7 @@ import("system.vars"); var variables = JSON.parse(vars.get("$local.value")); +var attributeValue = variables.attributeValue; var attributeId; if (variables.attributeName) { @@ -16,4 +18,26 @@ if (variables.attributeName) else attributeId = variables.attributeId; -new AttributeRelationQuery(variables.targetId, attributeId, variables.targetContext).insertAttribute(variables.attributeValue); \ No newline at end of file +//attributeValueVariable -> instance variable to use for the attribute value +if (variables.attributeValueVariable) +{ + var attributeVal = variables[variables.attributeValueVariable]; + if (attributeVal !== null && attributeVal !== undefined && attributeVal !== "") + attributeValue = attributeVal; +} + +var attributeQuery = new AttributeRelationQuery(variables.attributeRowId || variables.targetId, attributeId, + variables.attributeContext || variables.targetContext); + +if (variables.isUpdate) +{ + var currentAttribute = attributeQuery.getSingleAttribute(); + if (!currentAttribute) + attributeQuery.insertAttribute(attributeValue, true); + else + currentAttribute.updateAttribute(attributeValue) +} +else +{ + attributeQuery.insertAttribute(attributeValue); +} \ No newline at end of file diff --git a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js index 118269c0c1e6b7093e9e3923e44df5c9c5c10ac3..0e8f8d8d04235fa52184140ffe4b38ab04dae283 100644 --- a/process/SetAttribute_workflowService/serviceTaskParameterProcess.js +++ b/process/SetAttribute_workflowService/serviceTaskParameterProcess.js @@ -17,12 +17,13 @@ var currentValues = JSON.parse(vars.get("$local.value")); var allAttributes = newSelect("AB_ATTRIBUTEID, ATTRIBUTE_PARENT_ID, ATTRIBUTE_NAME, ATTRIBUTE_TYPE, ATTRIBUTE_ACTIVE") .from("AB_ATTRIBUTE") .where("AB_ATTRIBUTE.ATTRIBUTE_TYPE", AttributeTypes.OBJECTSELECTION(), SqlBuilder.NOT_EQUAL()) //these can't work yet + .orderBy(["ATTRIBUTE_PARENT_ID", "SORTING", "ATTRIBUTE_NAME"]) .table(); -var attributeNameMap = {}; +var attributeNameMap = new Map(); var attributes = []; allAttributes.forEach(function ([attributeId, parentId, attributeName, attributeType, isActive]) { - attributeNameMap[attributeId] = [translate.text(attributeName), parentId]; + attributeNameMap.set(attributeId, [translate.text(attributeName), parentId]); if (isActive == "1" && attributeType != AttributeTypes.GROUP() && attributeType != AttributeTypes.COMBOVALUE()) attributes.push(attributeId); }); @@ -31,19 +32,22 @@ attributes = attributes.map(function (attributeId) var parentId = attributeId; var fullName = ""; //the loop will stop if an id comes up twice, because otherwise that could cause an infinite loop if the data is faulty - var alreadyEncountered = {}; - while (parentId && attributeNameMap[parentId] && !alreadyEncountered[parentId]) + var alreadyEncountered = new Set(); + while (parentId && attributeNameMap.has(parentId) && !alreadyEncountered.has(parentId)) { - var [currentName, currentParent] = attributeNameMap[parentId]; + var [currentName, currentParent] = attributeNameMap.get(parentId); if (!fullName) fullName = currentName; else fullName = currentName + " / " + fullName; - alreadyEncountered[parentId] = true; + alreadyEncountered.add(parentId); parentId = currentParent; } - return {id : attributeId, name : fullName}; + return { + id: attributeId, + name: fullName + }; }); var parameters = [ @@ -74,4 +78,7 @@ if (currentValues.attributeId && currentValues.attributeId.value) parameters.push(new WorkflowServiceTaskParameter("attributeValue", "Value", paramType, enumValues)); } +parameters.push(new WorkflowServiceTaskParameter("attributeValueVariable", "Value variable", WorkflowServiceTaskParameter.STRING())); +parameters.push(new WorkflowServiceTaskParameter("isUpdate", "Overwrite", WorkflowServiceTaskParameter.BOOLEAN())); + result.object(parameters); \ No newline at end of file diff --git a/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.aod new file mode 100644 index 0000000000000000000000000000000000000000..202fd45600846fdcb2781ad3fd2a518f5e73a64c --- /dev/null +++ b/process/SetCampaignStep_workflowService/SetCampaignStep_workflowService.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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>SetCampaignStep_workflowService</name> + <title>Set Campaign Step</title> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/SetCampaignStep_workflowService/process.js</process> + <alias>Data_alias</alias> + <serviceTaskParameterProcess>%aditoprj%/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js</serviceTaskParameterProcess> + <variants> + <element>WORKFLOW</element> + </variants> +</process> diff --git a/process/SetCampaignStep_workflowService/process.js b/process/SetCampaignStep_workflowService/process.js new file mode 100644 index 0000000000000000000000000000000000000000..127041b99578edc870f70ee7a6861405e02f3f39 --- /dev/null +++ b/process/SetCampaignStep_workflowService/process.js @@ -0,0 +1,42 @@ +import("system.util"); +import("Campaign_lib"); +import("Sql_lib"); +import("system.vars"); + +var variables = JSON.parse(vars.get("$local.value")); + +var contactId = variables.contactId || variables.targetId; +var campaignId = variables.campaignId; +var campaignStepId = variables.campaignStepId; + +var campaignStepQuery = newSelect(["CAMPAIGNPARTICIPANTID", "CAMPAIGNSTEP_ID"]) + .from("CAMPAIGNPARTICIPANT") + .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", campaignId) + .and("CAMPAIGNPARTICIPANT.CONTACT_ID", contactId); + +var [participantId, currentCampaignStep] = campaignStepQuery.arrayRow(); + +if (campaignStepId && currentCampaignStep != campaignStepId) +{ + if (!participantId) + { + participantId = util.getNewUUID(); + new SqlBuilder().insertFields({ + "CAMPAIGNPARTICIPANTID": participantId, + "CAMPAIGNSTEP_ID": campaignStepId, + "CAMPAIGN_ID": campaignId, + "CONTACT_ID": contactId, + "DATE_NEW": vars.get("$sys.date"), + "USER_NEW": vars.get("$sys.user") + }, "CAMPAIGNPARTICIPANT"); + } + else + { + campaignStepQuery.updateFields({ + "CAMPAIGNSTEP_ID": campaignStepId, + "DATE_EDIT": vars.get("$sys.date"), + "USER_EDIT": vars.get("$sys.user") + }); + } + CampaignUtils.createLogEntry(campaignId, campaignStepId, participantId, currentCampaignStep); +} \ No newline at end of file diff --git a/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js new file mode 100644 index 0000000000000000000000000000000000000000..5978f70ed26e20dcd576602e0d8e0fc2996517a1 --- /dev/null +++ b/process/SetCampaignStep_workflowService/serviceTaskParameterProcess.js @@ -0,0 +1,40 @@ +import("system.result"); +import("system.vars"); +import("Sql_lib"); +import("Workflow_lib"); + +var currentValues = JSON.parse(vars.get("$local.value")); + +var campaigns = newSelect(["CAMPAIGNID", "NAME"]) + .from("CAMPAIGN") + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + +var parameters = [ + new WorkflowServiceTaskParameter("campaignId", "Campaign", WorkflowServiceTaskParameter.ENUM(), campaigns, true) +]; + +var campaignId = currentValues.campaignId && currentValues.campaignId.value; +if (campaignId) +{ + var campaignSteps = newSelect(["CAMPAIGNSTEPID", "NAME"]) + .from("CAMPAIGNSTEP") + .where("CAMPAIGNSTEP.CAMPAIGN_ID", campaignId) + .table() + .map(function ([id, name]) + { + return { + id: id, + name: name + }; + }); + parameters.push(new WorkflowServiceTaskParameter("campaignStepId", "Campaign Step", WorkflowServiceTaskParameter.ENUM(), campaignSteps)); +} + +result.object(parameters); \ No newline at end of file diff --git a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod index cd9e8f63d12bd4f5af9c1555277c6a54fb82db93..19550d2d6b58731f3730a99daecbaea1041213b7 100644 --- a/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod +++ b/process/SetSalesprojectPhase_workflowService/SetSalesprojectPhase_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>SetSalesprojectPhase_workflowService</name> <title>Set salesproject phase</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/SqlBuilder_test/SqlBuilder_test.aod b/process/SqlBuilder_test/SqlBuilder_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..c8c1620c9e458c45817eb40fc2dde2d643fce18c --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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..e3fbcc2640d62d2800c77178cbedea4a1ad35f93 --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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/Sql_lib.aod b/process/Sql_lib/Sql_lib.aod index 8e786ba49ef55715b8396b364c1339d19c3d829d..9ecdf3e0cef487950e3ce08b11bc7640e3d5b866 100644 --- a/process/Sql_lib/Sql_lib.aod +++ b/process/Sql_lib/Sql_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Sql_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/Sql_lib/documentation.adoc</documentation> 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 35b87999459da0cd88f21f0b11c737c3060ce26e..eecd2a9c83628dd909a5c182d53c53d38963a53b 100644 --- a/process/Sql_lib/process.js +++ b/process/Sql_lib/process.js @@ -801,8 +801,6 @@ function SqlBuilder (pAlias) this._where = {}; this._initWhere(); - - SqlBuilder.defineCanBuildSql(this); } /** @@ -823,6 +821,8 @@ SqlBuilder.checkCanBuildSql = function (pObject) return pObject[SqlBuilder.getCanBuildSqlSymbol()]; } +SqlBuilder.defineCanBuildSql(SqlBuilder.prototype); + /** * Deep copies the SqlBuilder object and returns a new one.<br/> * Use this if you want to add for example add additional parameters without modifying the current builder. @@ -830,25 +830,7 @@ SqlBuilder.checkCanBuildSql = function (pObject) */ SqlBuilder.prototype.copy = function() { - var newBuilder = _deepCopyByJson(this, new SqlBuilder()); - return newBuilder; - - // NOTE: this works only with simple data types. - // Here we only use strings, arrays, booleans and null, so this should work - function _deepCopyByJson(pObject, pNewObject) - { - // deep copy by using json - var deepCopied = JSON.parse(JSON.stringify(pObject)); - - // set the props of the new object to the deepCopied ones. - // without this all functions would be lost - for (let prop in deepCopied) - { - pNewObject[prop] = deepCopied[prop] - } - - return pNewObject; - } + return Utils.clone(this); } // errors which are thrown by the SqlBuilder @@ -1072,7 +1054,7 @@ SqlBuilder.prototype.tableName = function (pTable) */ SqlBuilder.prototype.from = function(pTable, pTableAlias) { - this._from = SqlBuilder._getStatement(pTable, "from", pTableAlias, false, (pTableAlias ? false : true)); + this._from = SqlBuilder._getStatement(pTable, "", pTableAlias, false, (pTableAlias ? false : true)); if (typeof(pTable) === "string") this._tableName = pTable; return this; @@ -2211,10 +2193,7 @@ SqlBuilder.prototype.whereWasCalled = function() { */ SqlBuilder.prototype.isFullSelect = function() { - if (!this._select || !this._from) - return false; - - return true; + return !(!this._select || !this._from); } /** @@ -2393,9 +2372,14 @@ SqlBuilder.prototype.buildCondition = function() SqlBuilder.prototype.build = function(pDefaultConditionIfNone) { var wherePrefix = ""; + var fromObj = this._from; if (this.isFullSelect()) { + fromObj = { + sqlStorage: "from " + this._from.sqlStorage, + preparedValues: this._from.preparedValues + }; if (this._where.sqlStorage) wherePrefix = "where "; } @@ -2408,11 +2392,11 @@ SqlBuilder.prototype.build = function(pDefaultConditionIfNone) var whereObj = { sqlStorage : wherePrefix + whereSql, preparedValues : this._where.preparedValues - } + }; var allParts = [ this._select, - this._from, + fromObj ].concat(this._joins).concat([ whereObj, this._groupBy, @@ -3100,6 +3084,14 @@ SqlBuilder.caseWhen = function (pFieldOrCond, pValue, pCondition, pFieldType) return new SqlBuilder._CaseStatement().when(pFieldOrCond, pValue, pCondition, pFieldType); } +/** + * @return {SqlBuilder._CaseStatement} + */ +SqlBuilder.caseStatement = function () +{ + return new SqlBuilder._CaseStatement(); +} + /** * Represents a case-when statement */ @@ -3109,9 +3101,10 @@ SqlBuilder._CaseStatement = function () this._whenThens = []; this._elseValue = null; this._afterWhenMask = new SqlBuilder._CaseWhen(this); - SqlBuilder.defineCanBuildSql(this); } +SqlBuilder.defineCanBuildSql(SqlBuilder._CaseStatement.prototype); + /** * @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/> @@ -3167,7 +3160,7 @@ SqlBuilder._CaseStatement.prototype.toString = function (pAlias) return db.translateStatement(this.build(), pAlias || db.getCurrentAlias()); } -SqlBuilder._CaseStatement.prototype.build = function () +SqlBuilder._CaseStatement.prototype.build = function (pParameters) { var caseStatement = ["case"]; var preparedValues = []; @@ -3193,6 +3186,18 @@ SqlBuilder._CaseStatement.prototype.build = function () ]; } +/** + * Custom toJSON method that omits the property '_afterWhenMask', because cyclic references can't be stringified + */ +SqlBuilder._CaseStatement.prototype.toJSON = function () +{ + return { + _whenCondition: this._whenCondition, + _whenThens: this._whenThens, + _elseValue: this._elseValue + }; +} + /** * 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'. @@ -3373,6 +3378,8 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt return "char"; case SQLTYPES.VARCHAR: return "char"; + case SQLTYPES.NVARCHAR: + return "nvarchar"; case SQLTYPES.INTEGER: return "int"; case SQLTYPES.DECIMAL: @@ -3388,6 +3395,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case db.DBTYPE_DERBY10: switch(pTargetDatatype) { + case SQLTYPES.NVARCHAR: case SQLTYPES.VARCHAR: // Because of a Derby bug, you can't cast INTEGER into VARCHAR // Therefor first cast to char then to varchar @@ -3412,6 +3420,7 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case db.DBTYPE_MYSQL4: switch(pTargetDatatype) { + case SQLTYPES.NVARCHAR: case SQLTYPES.VARCHAR: case SQLTYPES.CHAR: case SQLTYPES.INTEGER: @@ -3429,6 +3438,9 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case SQLTYPES.VARCHAR: sqlDataType = "varchar2"; break; + case SQLTYPES.NVARCHAR: + sqlDataType = "nvarchar2"; + break; case SQLTYPES.INTEGER: sqlDataType = "number"; pTargetLength = "10" @@ -3448,18 +3460,23 @@ SqlMaskingUtils.prototype.cast = function (pField, pTargetDatatype, pTargetLengt case SQLTYPES.INTEGER: case SQLTYPES.CHAR: case SQLTYPES.VARCHAR: + case SQLTYPES.NVARCHAR: sqlDataType = _mapDefaults(pTargetDatatype); break; } break; case db.DBTYPE_SQLSERVER2000: - case SQLTYPES.DATE: - case SQLTYPES.DECIMAL: - case SQLTYPES.INTEGER: - case SQLTYPES.CHAR: - case SQLTYPES.VARCHAR: - sqlDataType = _mapDefaults(pTargetDatatype); - break; + switch(pTargetDatatype) + { + case SQLTYPES.DATE: + case SQLTYPES.DECIMAL: + case SQLTYPES.INTEGER: + case SQLTYPES.CHAR: + case SQLTYPES.VARCHAR: + case SQLTYPES.NVARCHAR: + sqlDataType = _mapDefaults(pTargetDatatype); + break; + } //TODO: firebird support? } @@ -3565,9 +3582,64 @@ SqlMaskingUtils.prototype.substring = function (pField, pStartPos, pLength) return sqlFnName + "(" + pField + ", " + pStartPos + ", " + pLength + ")"; } +/** +* masks the function concat (without separator) +* +* @param {Array} pFields fields (or expressions) that should be concatenated +* +* @return {String} part of SQL-querey +*/ +SqlMaskingUtils.prototype.concatenate = function (pFields) +{ + if (pFields.length === 0) + return "''"; + + switch (this.dbType) + { + case db.DBTYPE_MYSQL4: + case db.DBTYPE_MARIADB10: + case db.DBTYPE_POSTGRESQL8: + return " concat(" + pFields.join(", ") + ")"; + case db.DBTYPE_ORACLE10_CLUSTER: + case db.DBTYPE_ORACLE10_THIN: + case db.DBTYPE_ORACLE10_OCI: + break; + case db.DBTYPE_SQLSERVER2000: + //MS SQL Server supports "concat_ws" (and ignoring null values) from version SQL Server 2017 and newer: + //https://docs.microsoft.com/de-de/sql/t-sql/functions/concat-ws-transact-sql?view=sql-server-2017 + break; + case db.DBTYPE_DERBY10: + break; + default: + throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concatenate"])); + } + + var fields = []; + + for (let i = 0; i < pFields.length; i++) + { + let field = pFields[i]; + let isLast = i + 1 === pFields.length; + + if (field && field != "''") + { + if (_isFixedValue(field)) + fields.push(field); + else + fields.push(this.isNull(field)); + } + } + + return fields.join(this.getConcatSymbol()) || "''"; + + function _isFixedValue (pSqlField) + { + return pSqlField.startsWith("'") && pSqlField.endsWith("'") && !pSqlField.slice(1, -1).includes("'"); + } +} /** -* masks the function concat +* masks the function concat_ws * if a sql field is empty no separator will be added * note that this function will often create a lot of sql-code * @@ -3577,22 +3649,25 @@ SqlMaskingUtils.prototype.substring = function (pField, pStartPos, pLength) * * @return {String} part of SQL-querey */ -SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimFields) +SqlMaskingUtils.prototype.concatWithSeparator = function (pFields, pSeparator, pAutoTrimFields) { if (pFields.length === 0) return "''"; if (pFields.length === 1) return pFields[0]; + if (pSeparator === "" && pAutoTrimFields == false) + return this.concatenate(pFields); + if (pAutoTrimFields == undefined) pAutoTrimFields = true; if (pSeparator === null || pSeparator === undefined) pSeparator = "' '"; - else if (pSeparator) + else if (pSeparator || pSeparator === "") pSeparator = "'" + db.quote(pSeparator, this.alias) + "'"; - var doEmptyStringCheck = true; + var isEmptyStringNull = false; switch (this.dbType) { @@ -3605,7 +3680,7 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField case db.DBTYPE_ORACLE10_CLUSTER: case db.DBTYPE_ORACLE10_THIN: case db.DBTYPE_ORACLE10_OCI: - doEmptyStringCheck = false; //empty strings are changed to DB-null-values internally in oracle; by specifing JS-null we disable this check + isEmptyStringNull = true; //empty strings are changed to DB-null-values internally in oracle break; case db.DBTYPE_SQLSERVER2000: //MS SQL Server supports "concat_ws" (and ignoring null values) from version SQL Server 2017 and newer: @@ -3614,7 +3689,7 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField case db.DBTYPE_DERBY10: break; default: - throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concat"])); + throw new Error(translate.withArguments("${SQL_LIB_UNSUPPORTED_DBTYPE} function: %0", ["SqlMaskingUtils.prototype.concatWithSeparator"])); } var concatCharacter = this.getConcatSymbol(); @@ -3625,10 +3700,13 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField let field = pFields[i]; let isLast = i + 1 === pFields.length; - if (!_isFixedValue(field)) - concatSql += (pAutoTrimFields ? this.trim(this.isNull(field)) : this.isNull(field)); - else + if (_isFixedValue(field)) concatSql += (pAutoTrimFields ? "'" + field.slice(1, -1).trim() + "'" : field); + else + { + let stringField = isEmptyStringNull ? field : this.isNull(field); + concatSql += (pAutoTrimFields ? this.trim(stringField) : this.isNull(stringField)); + } if (!isLast) { @@ -3641,10 +3719,12 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField } else if (pSeparator) { + let nextNotNullCondition; let nextFieldTrimmed = pAutoTrimFields ? this.trim(nextField) : nextField; - let nextNotNullCondition = nextField + " is not null "; - if (doEmptyStringCheck || pAutoTrimFields) - nextNotNullCondition += " and " + nextFieldTrimmed + " != '' "; + if (isEmptyStringNull) + nextNotNullCondition = nextFieldTrimmed + " is not null"; + else + nextNotNullCondition = nextField + " is not null and " + nextFieldTrimmed + " != ''"; concatSql += "case when " + nextNotNullCondition + " then " + pSeparator + " else '' end " + concatCharacter; } @@ -3659,6 +3739,25 @@ SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimField } } +/** +* masks the function concat +* 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} 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 +* +* @deprecated The function has been renamed to SqlMaskingUtils.prototype.concatWithSeparator to differentiate it from +* SqlMaskingUtils.prototype.concatenate. +*/ +SqlMaskingUtils.prototype.concat = function (pFields, pSeparator, pAutoTrimFields) +{ + return this.concatWithSeparator(pFields, pSeparator, pAutoTrimFields); +} + /** * returns the function for replacing a null value * @@ -3763,6 +3862,33 @@ SqlMaskingUtils.prototype.yearFromDate = function(pField) } } +/** + * returns the first field, that is not null or empty + * masks the behaviour of coalesce with case when + * + * @param pFields {Array} Array of fieldnames. Has to be in the right order. It will be checked from 0 upwards + */ +SqlMaskingUtils.prototype.coalesce = function(pFields) +{ + var retSql = ""; + + if(pFields && typeof pFields == "object" && pFields.length) + { + retSql = "case "; + + for(let i = 0; i < pFields.length; i++) + { + retSql += " when (" + pFields[i] + " is not null or " + pFields[i] + " <> '') then " + pFields[i] + " " + } + + retSql += " else null end"; + } + else + throw {message:"The input to coalesce has to be an Array containing the column names"}; + + return retSql; +} + /** * functions for various Sql-actions * Do not create an instance of this! @@ -4129,10 +4255,11 @@ SqlUtils.getSqlInStatement = function(pFieldname, pData, pQuoteSymbol, pAsPrepar } /** -* resolves key-value pairs (of strings) into a case when expression +* resolves key-value pairs (of strings) into a case when expression; +* This function tries to get the columntype for better type comparison * * @param {String[][]} pKeyValueArray you've to pass a 2D-Array where each element has at pos0 the key and pos1 the value -* @param {String} pDbFieldName name fo the database field where the KEY-value is stored +* @param {String} pDbFieldName name fo the database field where the KEY-value is stored; prefers TABLENAME.COLUMNNAME * @param {String} [pLocale=current client language] specifies the locale for translating the title; can be false if nothing shalle be translated * * @return {String} a SQL-expression (case-when-statement) that resolves the KEYID into the title -> as preparedSatement-elements @@ -4152,9 +4279,15 @@ SqlUtils.getResolvingCaseWhen = function(pKeyValueArray, pDbFieldName, pLocale) else return translate.text(value); }; - + //!SqlBuilder var resSql = "case ", preparedValues = []; - var colTypeKeyId = SQLTYPES.CHAR; + + var colTypeKeyId = SQLTYPES.CHAR; //the standard type is char + var fields = SqlUtils._parseFieldQualifier(pDbFieldName); //validate the DB-field for proper form (CONTACT.CONTACTID) + if (!(fields instanceof TypeError)) + colTypeKeyId = SqlUtils.getSingleColumnType(pDbFieldName, undefined, this.alias); + //some databases dont auto cast on their own so we need the proper type + var colTypeTitle = SQLTYPES.NVARCHAR; for (var i = 0, l = keyData.length; i < l; i++) { diff --git a/process/StandardObject_lib/StandardObject_lib.aod b/process/StandardObject_lib/StandardObject_lib.aod index 94c1fcc045a7d0035211ebd8afb1d46832b39065..c69d626eb8d55e3c7820c9a130c16ff3e790d850 100644 --- a/process/StandardObject_lib/StandardObject_lib.aod +++ b/process/StandardObject_lib/StandardObject_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>StandardObject_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/StandardObject_lib/documentation.adoc</documentation> diff --git a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod index bffee7201afb41060808fc74c155973b7f9a4ca8..3d6e25db86c11f51f4f20f0ab10b249a7166843a 100644 --- a/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod +++ b/process/TempRebuildIndexPerson_serverProcess/TempRebuildIndexPerson_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>TempRebuildIndexPerson_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/TempRebuildIndexPerson_serverProcess/process.js</process> diff --git a/process/Terminal_lib/Terminal_lib.aod b/process/Terminal_lib/Terminal_lib.aod new file mode 100644 index 0000000000000000000000000000000000000000..fee1f093874fd8eaab65e87dbe5c346c66a17860 --- /dev/null +++ b/process/Terminal_lib/Terminal_lib.aod @@ -0,0 +1,10 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>Terminal_lib</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <documentation>%aditoprj%/process/Terminal_lib/documentation.adoc</documentation> + <process>%aditoprj%/process/Terminal_lib/process.js</process> + <variants> + <element>LIBRARY</element> + </variants> +</process> 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/TestIndexSearch/TestIndexSearch.aod b/process/TestIndexSearch/TestIndexSearch.aod index 9dfabc2aa4b1af9a5d9d3f1d1eaac79c2a20c66c..66107b82c6692ba97791ea6e0ef9eb87a8c70372 100644 --- a/process/TestIndexSearch/TestIndexSearch.aod +++ b/process/TestIndexSearch/TestIndexSearch.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>TestIndexSearch</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/TestIndexSearch/process.js</process> diff --git a/process/Ticket_lib/Ticket_lib.aod b/process/Ticket_lib/Ticket_lib.aod index 5ce9c41505cb4df632f5c1d34f0bbaf80f48a171..f8dd6fe8f2e97ce7d9eebbf8e1f725b9eeba4b34 100644 --- a/process/Ticket_lib/Ticket_lib.aod +++ b/process/Ticket_lib/Ticket_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Ticket_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Ticket_lib/process.js</process> diff --git a/process/Timetracking_lib/Timetracking_lib.aod b/process/Timetracking_lib/Timetracking_lib.aod index b514721991f2a2544cf57c10e3bc5d89c0571d7b..140b9a95c1bc4667c5056929735b6e5bd0ac6e75 100644 --- a/process/Timetracking_lib/Timetracking_lib.aod +++ b/process/Timetracking_lib/Timetracking_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Timetracking_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Timetracking_lib/process.js</process> diff --git a/process/Turnover_lib/Turnover_lib.aod b/process/Turnover_lib/Turnover_lib.aod index 28bacd7d8eaa8d0f3bd01ed7f72c229487b2372e..12dbb916887a5ee928249e5e2a08760389bab573 100644 --- a/process/Turnover_lib/Turnover_lib.aod +++ b/process/Turnover_lib/Turnover_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Turnover_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Turnover_lib/process.js</process> diff --git a/process/Turnover_lib/process.js b/process/Turnover_lib/process.js index 14080be4ee9b533ea4a1c88331e3d6f45f64f364..1e69ad37d5f05c94e3779b5fe5c6edb3fe81cbc5 100644 --- a/process/Turnover_lib/process.js +++ b/process/Turnover_lib/process.js @@ -26,24 +26,45 @@ function TurnoverUtil() {} */ TurnoverUtil.getTurnoverData = function (pMaxYear, pYearCount, pSalesprojectId) { - var turnoverCategory = translate.text('Turnover'); - + var turnoverCategory = translate.text("Turnover"); var minYear = pMaxYear - pYearCount + 1; + var sqlMask = new SqlMaskingUtils(); // load data - 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'") - .and("SALESORDER.ORDERSTATUS = 1") - .and("SALESORDER.CANCELLATION <> 1") - .and("SALESORDERITEM.OPTIONAL <> 1") - .and("SALESORDER.SALESORDERDATE", pMaxYear, "year(#) <= ?", SQLTYPES.INTEGER) - .and("SALESORDER.SALESORDERDATE", minYear, "year(#) >= ?", SQLTYPES.INTEGER) - .andIfSet("SALESORDER.SALESPROJECT_ID", pSalesprojectId) - .groupBy("year(SALESORDERDATE), month(SALESORDERDATE), SALESORDERITEM.GROUPCODEID, SALESORDERITEM.DISCOUNT, SALESORDERITEM.VAT, SALESORDERITEM.PRICE") - .orderBy("yearNum, monthNum") - .table(); + + return newSelect([ + "'" + turnoverCategory + "'", + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE"), + "SALESORDERITEM.DISCOUNT", + "SALESORDERITEM.VAT", + "SALESORDERITEM.PRICE", + "sum(SALESORDERITEM.QUANTITY)", + "SALESORDERITEM.GROUPCODEID", + KeywordUtils.getResolvedTitleSqlPart($KeywordRegistry.productGroupcode(), "SALESORDERITEM.GROUPCODEID") + ]) + .from("SALESORDER") + .join("SALESORDERITEM", "SALESORDERITEM.SALESORDER_ID = SALESORDER.SALESORDERID") + .where("SALESORDER.ORDERTYPE", "ORDTYPEINVO") + .and("SALESORDER.ORDERSTATUS", "1") + .and("SALESORDER.CANCELLATION", "1", SqlBuilder.NOT_EQUAL()) + .and("SALESORDERITEM.OPTIONAL", "1", SqlBuilder.NOT_EQUAL()) + .and("SALESORDER.SALESORDERDATE", pMaxYear, sqlMask.yearFromDate("#") + " <= ?", SQLTYPES.INTEGER) + .and("SALESORDER.SALESORDERDATE", minYear, sqlMask.yearFromDate("#") + " >= ?", SQLTYPES.INTEGER) + .andIfSet("SALESORDER.SALESPROJECT_ID", pSalesprojectId) + .groupBy([ + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE"), + "SALESORDERITEM.GROUPCODEID", + "SALESORDERITEM.DISCOUNT", + "SALESORDERITEM.VAT", + "SALESORDERITEM.PRICE" + ]) + .orderBy([ + sqlMask.yearFromDate("SALESORDERDATE"), + sqlMask.monthFromDate("SALESORDERDATE") + ]) + .table(); } /** diff --git a/process/UnitTest_lib/UnitTest_lib.aod b/process/UnitTest_lib/UnitTest_lib.aod index 225ac2303844a684c92ac95b0426318362598cb0..25bd7badb373769aa481fb03fab69956dc8b704f 100644 --- a/process/UnitTest_lib/UnitTest_lib.aod +++ b/process/UnitTest_lib/UnitTest_lib.aod @@ -1,7 +1,8 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <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..853608a4031b47bab007db1dd836433d694f1c2e --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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/UpdateOffer_workflowService/UpdateOffer_workflowService.aod b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod index 6afa7117eb943d416023c4c05c6371266bb01ab7..39149b2c28f79fd5db740299f0ce80a0f29a5311 100644 --- a/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod +++ b/process/UpdateOffer_workflowService/UpdateOffer_workflowService.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UpdateOffer_workflowService</name> <title>Update offer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/UserSettings_lib/UserSettings_lib.aod b/process/UserSettings_lib/UserSettings_lib.aod index 41d85657ed0bcbfa6492589ee6a7238af2859f05..c1470052e9c9fd7d43344513964da783102380d2 100644 --- a/process/UserSettings_lib/UserSettings_lib.aod +++ b/process/UserSettings_lib/UserSettings_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>UserSettings_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/UserSettings_lib/process.js</process> diff --git a/process/Util_lib/Util_lib.aod b/process/Util_lib/Util_lib.aod index 6a28f6ac135dc0e474b2a0c951704dc8635e5591..67bbab87069f4098d62bd0bf30556729eefca16e 100644 --- a/process/Util_lib/Util_lib.aod +++ b/process/Util_lib/Util_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Util_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Util_lib/process.js</process> diff --git a/process/Util_lib/process.js b/process/Util_lib/process.js index 9dc7208091da2758a798b3804912729a0fb6c775..00ddb82a71bc8976508282f740e58b7fc996d5a3 100644 --- a/process/Util_lib/process.js +++ b/process/Util_lib/process.js @@ -53,7 +53,7 @@ Utils.isNullOrEmpty = function (pObject) } /** - * Creates a deep copy of the given object. Also works with arrays. + * Creates a deep copy of the given object. Also works with arrays, maps and sets. * * @param {Object} pObject the object to create a copy of * @return {Object} the cloned object @@ -69,7 +69,7 @@ Utils.isNullOrEmpty = function (pObject) * * logging.log(original.name != copy.name); //true * logging.log(copy instanceof MyObject()); //true, prototypes are set correctly - * logging.log(copy.obj1 === copy.obj2); //true, relative object references are kept + * logging.log(copy.obj1 === copy.obj2); //true, relative object references are preserved */ Utils.clone = function (pObject) { @@ -84,21 +84,48 @@ Utils.clone = function (pObject) 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 + var clonedObject; + if (Array.isArray(pObject)) + clonedObject = []; + else if (pObject instanceof Map) + clonedObject = new Map(); + else if (pObject instanceof Set) + clonedObject = new Set(); + else + clonedObject = 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) + if (pObject instanceof Map) + { + pObject.forEach(function (value, key) + { + clonedObject.set(_clone(key), _clone(value)); + }); + } + else if (pObject instanceof Set) { - var value = pObject[key]; - clonedObject[key] = _clone(value); //Recursively (deep) copy for nested objects, including arrays + pObject.forEach(function (value) + { + clonedObject.add(_clone(value)); + }); + } + else + { + for (let key in pObject) + { + clonedObject[key] = _clone(pObject[key]); //Recursively (deep) copy for nested objects, including arrays + } } + Object.getOwnPropertySymbols(pObject).forEach(function (sym) + { + clonedObject[sym] = _clone(pObject[sym]); + }); + return clonedObject; } } @@ -183,6 +210,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". * @@ -191,7 +251,7 @@ Utils.isNumber = function (pValue) */ Utils.isObject = function (pValue) { - return typeof pValue === "object"; + return typeof pValue === "object" && pValue !== null; } /** @@ -252,6 +312,15 @@ Utils.objectFromMap = function (pMap) return mapObject; } +Utils.toMap = function (pObject) +{ + if (Utils.isMap(pObject)) + return pObject; + if (!Array.isArray(pObject)) + pObject = Utils.objectEntries(pObject); + return new Map(pObject); +} + /** * Parses the given JSON to an object, but ignores empty strings, undefined or null. * @@ -266,6 +335,123 @@ Utils.parseJSON = function (pJSON, pReviver) return null; } +/** + * Returns the enumerable properties of the given object as an array of [key, value] pairs (works like Object.entries()). + * + * @param {Object} pObject + * @return {Array} Object properties as 2d-array: [[key1, value1], [key2, value2], ...] + */ +Utils.objectEntries = function (pObject) +{ + return Object.keys(pObject).map(function (key) + { + return [key, pObject[key]]; + }); +} + +/** + * Returns the values of all enumerable properties of the given object (works like Object.values()). + * + * @param {Object} pObject + * @return {Array} Object values as array + */ +Utils.objectValues = function (pObject) +{ + return Object.keys(pObject).map(function (key) + { + return pObject[key]; + }); +} + + +/** + * builds/extends a filter-Object, can be used for e. g. entity.filter(), neon.setFilter, etc... + * Note: If a filter-Objects gets extended the new Filter will be added before the old one. + * @example + * It will look like this: + { + "filter":{ + "type":"group", -| + "operator":"AND", | + "childs":[ | + { | + "type":"row", |- New Condition + "name":"ACTIVE", | + "operator":"EQUAL", | + "value":"Ja", | + "key":"true", | + "contenttype":"TEXT" -| + }, + { + "type":"group", -| + "operator":"AND", | + "childs":[ | + { | + "type":"row", |- Old condition + "name":"DATE_NEW", | + "operator":"TIMEFRAME_EQUAL", | + "value":"Heute", | + "key":"REL=ADJUSTED;UNIT=DAY", | + "contenttype":"DATE" -| + } + ] + } + ] + } + } + * @param {Object} pFilterObj, the existing Filter-Object, for a new Obj use {} or null + * @param {String} pFieldName, all Fields which are filterable in that certain Entity + * @param {String} pOperator, Filteroperators, (look up "_getCondition"-Function in JditoFilter_lib for all available operator) + * @param {String} pContentType, the Contenttype of the Filter, ("TEXT",... etc) + * @param {String} pValue, this will be used as Value in the Frontend + * @param {String} pKey, this will be used as Value in the Backend + * @param {String} pParentOperator, "OR" or "AND" for the Group Operator, null = AND + * + * @return new/extended Filter-Object + */ +Utils.buildFilterObj = function(pFilterObj, pFieldName, pOperator, pContentType, pValue, pKey, pParentOperator) +{ + + if(pParentOperator && pParentOperator != "AND" && pParentOperator != "OR") + throw new Error(translate.text("Illegal Parent Operator in buildFilterObj-Function: "+pParentOperator)); + + + var subFilterObj = { + "type":"row", + "name":pFieldName, + "operator":pOperator, + "value": pValue, + "key": pKey, + "contenttype":pContentType + }; + + var parentFilter = { + "filter" : { + "type":"group", + "operator":pParentOperator, + "childs": [subFilterObj] + } + }; + + + if(pFilterObj && pFilterObj.filters && pFilterObj.filters.childs.length > 0) + { + + var push = true; + for(var i = 0; i < pFilterObj.filters.childs.length; i++) + { + if(JSON.stringify(pFilterObj.filters.childs[i]) == JSON.stringify(subFilterObj)) + push = false; + } + if(push) + { + parentFilter.filter.childs = parentFilter.filter.childs.concat([pFilterObj.filters]); + } + + } + return parentFilter; +} + /** * Class containing static utility functions for regular expression objects (RegExp) * Do not create an instance of this @@ -372,10 +558,10 @@ StringUtils.replaceAll = function(pPlainInputStr, pPlainSearchStr, pReplacement, */ StringUtils.concat = function(pSeparator, pElements) { - var res = pElements.filter(function(e){ - return e != null && e != ""; - }).join(pSeparator); - return res; + var res = pElements.filter(function(e){ + return e != null && e != ""; + }).join(pSeparator); + return res; }; /** @@ -417,18 +603,58 @@ StringUtils.pad36 = function(pValue) */ StringUtils.unescapeSlashes = function(pValue) { - // add another escaped slash if the string ends with an odd - // number of escaped slashes which will crash JSON.parse - let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\"); - // escape " - parsedStr = parsedStr.replace(/"/, '\\"'); - try { - parsedStr = JSON.parse('"' + parsedStr + '"'); - } catch(e) { - logging.log(e); - return pValue; - } - return parsedStr ; + // add another escaped slash if the string ends with an odd + // number of escaped slashes which will crash JSON.parse + let parsedStr = pValue.replace(/(^|[^\\])(\\\\)*\\$/, "$&\\"); + // escape " + parsedStr = parsedStr.replace(/"/, '\\"'); + try { + parsedStr = JSON.parse('"' + parsedStr + '"'); + } catch(e) { + logging.log(e); + return pValue; + } + return parsedStr ; +} + +/** + * Transforms the given String to lowerCamelCase + * + * @param {String} pString + * @return {String} string in lowerCamelCase + * @example + * + * var name = StringUtils.toLowerCamelCase("Giorno Giovanna"); + * logging.log(name); //output: "giornoGiovanna" + */ +StringUtils.toLowerCamelCase = function (pString) +{ + return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match, index) + { + if (+match === 0) // or if (/\s+/.test(match)) for white spaces + return ""; + return index === 0 ? match.toLowerCase() : match.toUpperCase(); + }); +} + +/** + * Transforms the given String to UpperCamelCase + * + * @param {String} pString + * @return {String} string in UpperCamelCase + * @example + * + * var youFellForIt = StringUtils.toUpperCamelCase("thunder cross split attack"); + * logging.log(youFellForIt); //output: "ThunderCrossSplitAttack" + */ +StringUtils.toUpperCamelCase = function (pString) +{ + return pString.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function (match) + { + if (+match === 0) // or if (/\s+/.test(match)) for white spaces + return ""; + return match.toUpperCase(); + }); } /** @@ -490,7 +716,7 @@ NumberUtils.validateIsBetweenFloat = function(pTitle, pValue, pMin, pMax, pIgnor if(isNaN(discount)) return false; - if (!NumberUtils.isInside(discount, 0, 100, pIgnoreNull)) + if (!NumberUtils.isInside(discount, pMin, pMax, pIgnoreNull)) { return (translate.withArguments("${MIN_MAX_ERROR} field: %0, value: %1, min: %2, max: %3", [translate.text(pTitle), discount, pMin, pMax])); } @@ -921,9 +1147,9 @@ NumberSequencingUtils.validateUniqueNumber = function(pNumber, pColumn, pTable, NumberSequencingUtils.getMaxUniqueNumber = function(pColumn, pTable, pCondition) { return newSelect(new SqlMaskingUtils().max(pColumn)) - .from(pTable) - .whereIfSet(pCondition) - .cell() || "0"; + .from(pTable) + .whereIfSet(pCondition) + .cell() || "0"; } /** @@ -953,7 +1179,9 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex) var rows = {}; var allIds = {}; - pArray.forEach(function (row) {allIds[row[pUidIndex]] = true;}); + pArray.forEach(function (row) { + allIds[row[pUidIndex]] = true; + }); var index = 0; do { @@ -967,7 +1195,7 @@ TreeUtils.sortArrayForTree = function (pArray, pUidIndex, pParentIdIndex) }; }, rows); - /* stop if no new items were added, otherwise incorrect data (for instance + /* stop if no new items were added, otherwise incorrect data (for instance an item that is it's own parent) could cause an infinite loop */ } while (oldIndex != index); var sortedArray = new Array(index); @@ -1021,5 +1249,12 @@ ConsecutiveCodeUtils.setCode = function(pId, pTable, pIdCol, pCodeCol) max = -1; newWhereIfSet(pTable + "." + pIdCol, pId) - .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]); + .updateData(true, pTable, [pCodeCol], null, [parseInt(max)+1]); +} + +function IdUtils() {} + +IdUtils.isUUID = function(pIn) +{ + return /\w{8}-\w{4}-\w{4}-\w{4}-\w{12}/i.test(pIn); } \ No newline at end of file diff --git a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod index 5bb454846588aa47368b0a1b4dcba63e3540fb71..c176378fed5c683a712cb73660d8c09f2329ec9d 100644 --- a/process/ViewTemplateData_lib/ViewTemplateData_lib.aod +++ b/process/ViewTemplateData_lib/ViewTemplateData_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ViewTemplateData_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ViewTemplateData_lib/process.js</process> diff --git a/process/Workflow_lib/Workflow_lib.aod b/process/Workflow_lib/Workflow_lib.aod index 3045e31bec24acabc4d44347f9c8f91fc613e9c6..bff9603a4c8686ef9c379fbd4690b665a7ab6c33 100644 --- a/process/Workflow_lib/Workflow_lib.aod +++ b/process/Workflow_lib/Workflow_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>Workflow_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/Workflow_lib/process.js</process> diff --git a/process/Workflow_lib/process.js b/process/Workflow_lib/process.js index d8705a1e95f0b7475a3e0301ba5ef9fe4fc4283b..b7ec7c17972e53f10f2ce3bf439f0b4dd3790766 100644 --- a/process/Workflow_lib/process.js +++ b/process/Workflow_lib/process.js @@ -1,3 +1,4 @@ +import("Employee_lib"); import("system.process"); import("Util_lib"); import("system.text"); @@ -173,7 +174,19 @@ WorkflowSignalSender.deleted = function (pVariables, pTargetId, pTargetContext) */ WorkflowSignalSender.eventHappened = function (pEvent, pTargetId, pTargetContext, pVariables) { - var variables = WorkflowVariables.getTargetVariables(pTargetId, pTargetContext); + let temp = {}; + temp[ WorkflowVariables.TARGET_CONTEXT()] = pTargetContext; + temp[WorkflowVariables.TARGET_ID()] = pTargetId; + temp[WorkflowVariables.TRIGGER()] = pEvent; + let variables = WorkflowVariables.getAllVariablesValue(temp); + + var processConfig = process.createStartAsyncConfig().setName("workflowExtension_serverProcess") + .setLocalVariables({"variablesWorkflow" : JSON.stringify(variables)}) + .setShowErrorDialog(true) + .setUser(vars.get("sys.user")) + .setThreadPriority(process.THREADPRIORITY_NORM) + .setTimerType(process.TIMERTYPE_SERVER); + process.startAsync(processConfig); var signals = WorkflowSignalSender.getSignalConfig(variables[WorkflowVariables.TARGET_CONTEXT()], pEvent); signals.forEach(function (signal) @@ -278,6 +291,160 @@ WorkflowVariables.TARGET_CONTEXT.getDefaultValue = function () return ContextUtils.getCurrentContextId(); } +/** + * Returns the variable name for the rowdata + */ +WorkflowVariables.ROWDATA = function () +{ + return "rowdata"; +} + +/** + * Returns the default value for the rowdata + */ +WorkflowVariables.ROWDATA.getDefaultValue = function () +{ + return JSON.stringify(vars.get("$local.rowdata")); +} + +/** + * Returns the variable name for the changed rows + */ +WorkflowVariables.CHANGED_ROWS = function () +{ + return "changedRows"; +} + +/** + * Returns the default value for the changed rows + */ +WorkflowVariables.CHANGED_ROWS.getDefaultValue = function () +{ + return JSON.stringify(vars.get("$local.changed")); +} + +/** + * Returns the variable name for the event user + */ +WorkflowVariables.EVENT_USER = function () +{ + return "eventUser"; +} + +/** + * Returns the default value for the event user + */ +WorkflowVariables.EVENT_USER.getDefaultValue = function () +{ + return EmployeeUtils.getCurrentUserId(); +} + +/** + * Returns the variable name for the event time + */ +WorkflowVariables.EVENT_TIME = function () +{ + return "eventTime"; +} + +/** + * Returns the default value for the event time + */ +WorkflowVariables.EVENT_TIME.getDefaultValue = function () +{ + return vars.get("$sys.date"); +} + +/** + * Returns the variable name for the trigger + */ +WorkflowVariables.TRIGGER = function () +{ + return "trigger"; +} + +/** + * Returns the default value for the trigger + */ +WorkflowVariables.TRIGGER.getDefaultValue = function () +{ + return null; +} + +/** + * Returns the variable name for the contenttitle + */ +WorkflowVariables.CONTENTTITLE = function () +{ + return "contenttitle"; +} + +/** + * Returns the default value for the contenttitle + */ +WorkflowVariables.CONTENTTITLE.getDefaultValue = function () +{ + return vars.get("$field.#CONTENTTITLE"); +} + +/** + * Returns an array of the WorkflowVariables + * + * @return {Array} array containing the variables name + */ +WorkflowVariables.getAllVariablesName = function () +{ + return [ + WorkflowVariables.TARGET_CONTEXT(), + WorkflowVariables.TARGET_ID() + ] +} + +/** + * Returns an array of the Variables, which contains the variables name + * + * @return {Array} array containing the variables + */ +WorkflowVariables.getAllVariables = function () +{ + return [ + "CHANGED_ROWS", + "EVENT_TIME", + "EVENT_USER", + "ROWDATA", + "TARGET_CONTEXT", + "TARGET_ID", + "TRIGGER", + "CONTENTTITLE" + ] +} + +/** + * Makes an object containing the variables + * + * @param {Objcet} [pVariables] value for the variables, if not provided, the dafault value is used. + * The Object have to hand over in the following format: + * + * {WorkflowVariable : value} + * + * @return {Object} object containing the variables + */ +WorkflowVariables.getAllVariablesValue = function (pVariables) +{ + if (!pVariables) + pVariables = {}; + + let tempVariables = {}; + WorkflowVariables.getAllVariables().forEach(function (v){ + let tempName = WorkflowVariables[v](); + if (pVariables[tempName]) + tempVariables[tempName] = pVariables[tempName] + else + tempVariables[tempName] = WorkflowVariables[v].getDefaultValue(); + }); + return tempVariables; +} + /** * Makes an object containing the variables "targetId" and "targetContext" * @@ -630,7 +797,7 @@ WorkflowLinkActions.types.RECEIVE_TASK.execute = function (pParameters) { if (!pParameters.processInstanceId) return; - workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null); + workflow.triggerReceiveTask(pParameters.processInstanceId, pParameters.receiveTask || null, pParameters.variables || null); } /** @@ -640,7 +807,7 @@ WorkflowLinkActions.types.SIGNAL.execute = function (pParameters) { if (!pParameters.signal) return; - workflow.signalEventReceived(pParameters.signal); + workflow.signalEventReceived(pParameters.signal, pParameters.variables || null); } /** @@ -650,7 +817,7 @@ WorkflowLinkActions.types.MESSAGE.execute = function (pParameters) { if (!pParameters.processInstanceId || !pParameters.message) return; - workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId); + workflow.messageEventReceived(pParameters.message, pParameters.processInstanceId, pParameters.variables || null); } /** @@ -676,6 +843,8 @@ WorkflowLinkActions.encodeAction = function (pType, pLink, pParams) actionObj.ms = pParams.message; if (pParams.receiveTask) actionObj.re = pParams.receiveTask; + if (pParams.variables) + actionObj.v = pParams.variables; actionObj.ty = pType; actionObj.ln = pLink; @@ -718,6 +887,8 @@ WorkflowLinkActions.parseAction = function (pEncodedAction) actionParams.message = parsedAction.ms; if (parsedAction.re) actionParams.receiveTask = parsedAction.re; + if (parsedAction.v) + actionParams.variables = parsedAction.v; return { type: parsedAction.ty || null, @@ -734,4 +905,15 @@ WorkflowLinkActions.parseAction = function (pEncodedAction) return null; } }; +} + +WorkflowLinkActions.getActionLinkPlaceholder = function (pLinkActionType, pActionParams, pRedirectLink, pBaseUrl) +{ + if (!pBaseUrl) + pBaseUrl = vars.get("$sys.origin"); + + return new Placeholder("workflowActionLink", Placeholder.types.CALLBACKFUNCTION, function () + { + return WorkflowLinkActions.getActionLink(pBaseUrl, pLinkActionType, pRedirectLink, pActionParams); + }); } \ No newline at end of file diff --git a/process/WsValidation_lib/WsValidation_lib.aod b/process/WsValidation_lib/WsValidation_lib.aod index a896dd2fdc17d3ddc9035ac2f5e6370513d0e9a7..fcb5a966b0dcbd779e3a055a9b6a968d42ae8b36 100644 --- a/process/WsValidation_lib/WsValidation_lib.aod +++ b/process/WsValidation_lib/WsValidation_lib.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>WsValidation_lib</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/WsValidation_lib/documentation.adoc</documentation> diff --git a/process/WsValidation_lib/process.js b/process/WsValidation_lib/process.js index 03bccc71e669831494fb55307bacff0ba8b07156..df45171957c8e47dc6766a7273686d0ebbd41772 100644 --- a/process/WsValidation_lib/process.js +++ b/process/WsValidation_lib/process.js @@ -108,8 +108,6 @@ WsValidationType.get = function(pKey) city: city, cityExt: cityext, country: pPlaceData.address.country_code.toUpperCase(), //4 - district: pPlaceData.address.district, - region: pPlaceData.address.state_district, state: pPlaceData.address.state, road: road, //8 buildingNo: pPlaceData.address.house_number, @@ -361,7 +359,6 @@ WsValidationUtils.setAddressFields = function(pJSON) "$field.CITY": data.city, "$field.COUNTRY": data.country, //"$field.DISTRICT": data.district, not needed currently - "$field.REGION": data.region, "$field.STATE": data.state, "$field.ADDRESS": data.road, "$field.BUILDINGNO": data.buildingNo diff --git a/process/_all_test/_all_test.aod b/process/_all_test/_all_test.aod new file mode 100644 index 0000000000000000000000000000000000000000..f65a8c72b0b9ade07fc33a65875810fbe9e3ba16 --- /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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <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_clientProcess/_test_clientProcess.aod b/process/_test_clientProcess/_test_clientProcess.aod index 65d4b5579877f106af3408d202758175db300353..083128043b009ec6417b6ecb0589e04ba2c4eead 100644 --- a/process/_test_clientProcess/_test_clientProcess.aod +++ b/process/_test_clientProcess/_test_clientProcess.aod @@ -1,10 +1,14 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>_test_clientProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/_test_clientProcess/documentation.adoc</documentation> <process>%aditoprj%/process/_test_clientProcess/process.js</process> <publishAsWebservice v="true" /> + <wsdl>%aditoprj%/process/_test_clientProcess/wsdl.wsdl</wsdl> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <alias>Data_alias</alias> <variants> <element>EXECUTABLE</element> diff --git a/process/_test_clientProcess/wsdl.wsdl b/process/_test_clientProcess/wsdl.wsdl new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/process/_test_importer/_test_importer.aod b/process/_test_importer/_test_importer.aod index 609067fbad20084a0ca5eef1fb0dcb1c6030f59d..86b1e22c42fded0be140b3dadad42671f76b3fa6 100644 --- a/process/_test_importer/_test_importer.aod +++ b/process/_test_importer/_test_importer.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>_test_importer</name> <title>Importer</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/autostartNeon/autostartNeon.aod b/process/autostartNeon/autostartNeon.aod index 5cae2b54c4df27afd135f072eb2e42809dfd90c7..53cfbced0376808b3cc01e1a318a0865f39b4d77 100644 --- a/process/autostartNeon/autostartNeon.aod +++ b/process/autostartNeon/autostartNeon.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>autostartNeon</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/autostartNeon/process.js</process> diff --git a/process/blobHandler/blobHandler.aod b/process/blobHandler/blobHandler.aod index ea16fe9164248509d582008e59c1fb8c3b11f554..df5da687878fc7ea5c3aff68e901c195a1883c9b 100644 --- a/process/blobHandler/blobHandler.aod +++ b/process/blobHandler/blobHandler.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>blobHandler</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/blobHandler/process.js</process> diff --git a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod index 5474adbf834c476e62b2ea0402e39d29c1e4ff3a..c5fa5bae70e0432c332962e39305acfe37e3948e 100644 --- a/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod +++ b/process/buildSerialLetter_serverProcess/buildSerialLetter_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>buildSerialLetter_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/buildSerialLetter_serverProcess/documentation.adoc</documentation> diff --git a/process/buildSerialLetter_serverProcess/process.js b/process/buildSerialLetter_serverProcess/process.js index 1d5cff1f39473a26019577b3c2d3c23121b5ced2..b3210e860dba7d2817b4e9465f17600fca2bcb95 100644 --- a/process/buildSerialLetter_serverProcess/process.js +++ b/process/buildSerialLetter_serverProcess/process.js @@ -21,4 +21,4 @@ SingleBinaryUtils.set("SERIALLETTER", "SERIALLETTERFILE", letterId, document.con var message = translate.text("Download ready"); var description = translate.withArguments("Serial letter \"%0\" can now be downloaded", [document.title]); -notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file +notification.addNotification(util.getNewUUID(), text.encodeMS(["SerialLetter", letterId]), null, null, "DownloadReady", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); \ No newline at end of file diff --git a/process/ctiCall/ctiCall.aod b/process/ctiCall/ctiCall.aod index efab080bf759f15b9fc8ae22098447a6d810a32d..6614528e0386b2a7b3fc4b705e1861b64445e33e 100644 --- a/process/ctiCall/ctiCall.aod +++ b/process/ctiCall/ctiCall.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ctiCall</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ctiCall/process.js</process> diff --git a/process/ctiServerEvents/ctiServerEvents.aod b/process/ctiServerEvents/ctiServerEvents.aod index 0b6ce1bf16282c51184affeb49fc8a91106f955b..4f02a720a23094e2ff2425a8f94dc52c0f2d2730 100644 --- a/process/ctiServerEvents/ctiServerEvents.aod +++ b/process/ctiServerEvents/ctiServerEvents.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ctiServerEvents</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/ctiServerEvents/process.js</process> diff --git a/process/emailWrite/emailWrite.aod b/process/emailWrite/emailWrite.aod index 60d3efe9f572e652c49a01965c3cc95514253914..a752349818c0a8632c76c4167a1e9ed84af7cf51 100644 --- a/process/emailWrite/emailWrite.aod +++ b/process/emailWrite/emailWrite.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>emailWrite</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/emailWrite/process.js</process> diff --git a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod index 703deab5221c889c45a77b3a60b6ab4b5f58e31e..353165e368d282145e8820da01ae290c587b5198 100644 --- a/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod +++ b/process/ewsSyncCalendarPermissions_serverProcess/ewsSyncCalendarPermissions_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>ewsSyncCalendarPermissions_serverProcess</name> <title>Synchronize calendar permissions from Exchange to ADITO</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod index 117726612c9ffdc42c5f4e04273f6b9acf1c4094..81c7818957427295a4efcf597330f34df0a8bda2 100644 --- a/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod +++ b/process/exportLiquibaseContent_serverProcess/exportLiquibaseContent_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>exportLiquibaseContent_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/exportLiquibaseContent_serverProcess/documentation.adoc</documentation> diff --git a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod index 9437d3b30537612af789f265de1b2a9375903711..2f46ffd47d194aa90c1d54f61acb1682b485ca48 100644 --- a/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod +++ b/process/exportLiquibaseSystemalias_serverProcess/exportLiquibaseSystemalias_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>exportLiquibaseSystemalias_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/exportLiquibaseSystemalias_serverProcess/process.js</process> diff --git a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod index cb4430fb0bcd05511a4cbdf794dc665aa2e28bc1..fe54f57b76aac1e81d0e497629b7ab0aaa33931c 100644 --- a/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod +++ b/process/getDocxDocument_serverProcess/getDocxDocument_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>getDocxDocument_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/getDocxDocument_serverProcess/documentation.adoc</documentation> diff --git a/process/importLead_serverProcess/importLead_serverProcess.aod b/process/importLead_serverProcess/importLead_serverProcess.aod index 4316e4127172656ebfb03e03a6d853daeb077a20..a73a9e8246f9160d8c50abddfc0bc0d1863dc050 100644 --- a/process/importLead_serverProcess/importLead_serverProcess.aod +++ b/process/importLead_serverProcess/importLead_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>importLead_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/importLead_serverProcess/process.js</process> diff --git a/process/importLead_serverProcess/process.js b/process/importLead_serverProcess/process.js index a24b084a933769d7e6d3ab8b6b1d316828841452..35ac42b2b31f5cd4b801573bd295413747352f42 100644 --- a/process/importLead_serverProcess/process.js +++ b/process/importLead_serverProcess/process.js @@ -192,7 +192,7 @@ if(exeptions != "")//insert error document if (userId)// if there is an user - show a notification to this user when the import is complete { var description = translate.withArguments("%0 leads imported, %1 errors", [rows, errorCount]); - notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); + notification.addNotification(util.getNewUUID(), null, null, null, "LeadImport_Notification", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [userId], importName, description); } diff --git a/process/mailbridge/mailbridge.aod b/process/mailbridge/mailbridge.aod index 254ff35492e5ce5eccb03b1d7a55c4ced626e8a1..079dab4650beb124ce85f9345c4928b87a80fc4c 100644 --- a/process/mailbridge/mailbridge.aod +++ b/process/mailbridge/mailbridge.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>mailbridge</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/mailbridge/documentation.adoc</documentation> diff --git a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod index cfd92c97942fb960b69e71317d82e75f4f013e0f..a6d4fe24cf1fc3a4d501acd6546807ac3bea8180 100644 --- a/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod +++ b/process/mark_cachedrecordcontainers_invalid_serverProcess/mark_cachedrecordcontainers_invalid_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>mark_cachedrecordcontainers_invalid_serverProcess</name> <title>Mark all cached record containers as invalid</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/mstBot_rest/mstBot_rest.aod b/process/mstBot_rest/mstBot_rest.aod new file mode 100644 index 0000000000000000000000000000000000000000..64a88b4452787c65f100f261960f91835763daa3 --- /dev/null +++ b/process/mstBot_rest/mstBot_rest.aod @@ -0,0 +1,15 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>mstBot_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/mstBot_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> + <publishAsClientWebservice v="true" /> + <alias>Data_alias</alias> +</process> diff --git a/process/mstBot_rest/process.js b/process/mstBot_rest/process.js new file mode 100644 index 0000000000000000000000000000000000000000..c93ca1c87aa2e9770cf5510c7b46c8c6f1871878 --- /dev/null +++ b/process/mstBot_rest/process.js @@ -0,0 +1,94 @@ +import("system.datetime"); +import("system.teams"); +import("system.logging"); +import("system.text"); +import("system.util"); +import("Sql_lib"); +import("KeywordRegistry_basic"); +import("Date_lib"); + +function restpost(pRequestAsJson) +{ + //Umformen, dass man den Body des Requests als JsonFormat Base64 decodiert hat + var jsonRequest = JSON.parse(pRequestAsJson); + var body = jsonRequest.body; + var jsonBody = JSON.parse(body); + + + //Nötig, falls dies der InitialRequest ist + var eventType = jsonBody.channelData.eventType; + var teamId = jsonBody.channelData.team.aadGroupId; + var who = jsonBody.recipient.name; + var serviceUrl = jsonBody.serviceUrl; + + //Wenn dies der InitalRequest ist (dieser erfolgt, wenn die APP hinzugefügt wird), speichere die ServiceUrl in die DB + if(eventType == "teamMemberAdded" && who == "ADITO Bot") + { + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"SERVICE_URL" : serviceUrl}); + return pRequestAsJson; + } + //Sollte jemand die APP manuell wieder entfernen, gibt es einen "AbschiedsRequest", lösche die ServiceUrl aus der DB + if(eventType == "teamMemberRemoved" && who == "ADITO Bot") + { + newWhere("MST_TEAM.MST_TEAMID", teamId) + .updateFields({"SERVICE_URL" : ""}); + return pRequestAsJson; + } + + //_____________________________________________________________ + //Hier gelandet: Request ist eine Nachricht + + var type = jsonBody.type; + if(type != "message") //Wenn Request keine Message war dann ignorieren + return pRequestAsJson; + + var message = jsonBody.text; + var from = jsonBody.from.name; + + //Testzwecke (nachträglich entfernen) + logging.log(message); + logging.log(from); + + //Da alle Aufgaben, wie zum Beispiel: Ticket erstellen, Aufgabe erstellen usw. in JDiTO erledigt werden können, + // wird hier keine teams.Funktion benötigt + //Weitere Schritte: text aufsplittet anhand der Syntax und die einzelnen Kommandos umsetzen + + var plainMessage = text.html2text(pHTML); + + var messageParts = plainMessage.split("/"); + if (messageParts.length !== 2) + return pRequestAsJson; + + var command = messageParts[1].split(/\s+?/); + var parameters = {}; + command.slice(1).forEach(function (param) + { + param = param.split("="); + if (param.length !== 2) + return; + parameters[param[0]] = param[1]; + }); + command = command[0]; + + if (command == "addTask" && parameters.editor && parameters.subject) + { + var currentDate = datetime.date(); + var fieldValues = { + "KIND": $KeywordRegistry.taskType$task(), + "START_DATE": currentDate, + "MATURITY_DATE": Duration.ofDays(7).getDateWithDurationAdded(currentDate).getTime(), + "PRIORITY": $KeywordRegistry.taskPriority$low(), + "STATUS": $KeywordRegistry.taskStatus$new(), + "SUBJECT": parameters.subject, + "REQUESTOR_CONTACT_ID": "", + "PROGRESS": $KeywordRegistry.taskProgress$0() + }; + if ("editor" in parameters) + fieldValues["EDITOR_CONTACT_ID"] = ""; //TODO: find out contactid + + new SqlBuilder.insertFields(fieldValues, "TASK", "TASKID"); + } + + return pRequestAsJson; +} \ No newline at end of file diff --git a/process/process_audit/process_audit.aod b/process/process_audit/process_audit.aod index 55b53099a0f6b045a1699cb473417840521a8b09..fb5dcd8da903ba9ffe3172451cd386e094fb0441 100644 --- a/process/process_audit/process_audit.aod +++ b/process/process_audit/process_audit.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>process_audit</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/process_audit/process.js</process> diff --git a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod index 710063184897bbc4ad2e09ff1f8e3cac536b1b68..106c678f9add12e1f3afe67989627720cd6515d2 100644 --- a/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod +++ b/process/rebuildIndex_serverProcess/rebuildIndex_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>rebuildIndex_serverProcess</name> <title>rebuild Index</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/redirect_rest/redirect_rest.aod b/process/redirect_rest/redirect_rest.aod index 3087b0ad4b7fcc1e48a6122ae26fe32120328632..bda233f7990cbcde49e43a759006b8fd964fc26d 100644 --- a/process/redirect_rest/redirect_rest.aod +++ b/process/redirect_rest/redirect_rest.aod @@ -1,11 +1,13 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <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> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <variants> <element>EXECUTABLE</element> </variants> diff --git a/process/removeMSTTeams_serverProcess/process.js b/process/removeMSTTeams_serverProcess/process.js new file mode 100644 index 0000000000000000000000000000000000000000..83b19e678d4965a9f1011c71f14b91bf3bc4fc78 --- /dev/null +++ b/process/removeMSTTeams_serverProcess/process.js @@ -0,0 +1,21 @@ +import("system.teams"); +import("Sql_lib"); + +var archivedTeams = teams.getAllArchivedTeams(null); +var dbArchivedTeams = newSelect("MST_TEAMID") + .from("MST_TEAM") + .where("MST_TEAM.IS_ARCHIVED", "1") + .arrayColumn(); + +var teamIdsToDelete = dbArchivedTeams.filter(function (teamId) +{ + return !(teamId in archivedTeams); +}); + +if (teamIdsToDelete.length > 0) +{ + newWhere("MST_TEAM.MST_TEAMID", teamIdsToDelete, SqlBuilder.IN()) + .deleteData(); + newWhere("SALESPROJECT.MST_TEAM_ID", teamIdsToDelete, SqlBuilder.IN()) + .updateFields({"MST_TEAM_ID": ""}); +} \ No newline at end of file diff --git a/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod new file mode 100644 index 0000000000000000000000000000000000000000..c120e20c39f5b8e0c8348dd823abb61a2890bd85 --- /dev/null +++ b/process/removeMSTTeams_serverProcess/removeMSTTeams_serverProcess.aod @@ -0,0 +1,10 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>removeMSTTeams_serverProcess</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/removeMSTTeams_serverProcess/process.js</process> + <alias>Data_alias</alias> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/sendBulkMail_serverProcess/process.js b/process/sendBulkMail_serverProcess/process.js index 711120feb205e4b00a1fbda8afdea68708681fca..7ed237beffbb5978141a82b08c745385a1f21bee 100644 --- a/process/sendBulkMail_serverProcess/process.js +++ b/process/sendBulkMail_serverProcess/process.js @@ -23,5 +23,5 @@ if (user && !testRecipients) var message = translate.withArguments("Bulk mail \"%0\" was sent!", [mailName]); var description = translate.withArguments("%0 mails sent sucessfully, %1 mails failed. Process took %2 s.", [res.sucessful, res.failed, Math.round((datetime.date() - startTime) / datetime.ONE_SECOND)]); - notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); + notification.addNotification(util.getNewUUID(), null, null, null, "BulkMailSent", null, notification.PRIO_NORMAL, 2, notification.STATE_UNSEEN, [user], message, description); } \ No newline at end of file diff --git a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod index 645ed890444612e3470acf524ef90bc730725fca..8357bb2adf8a19f802111fd90d3c734932f8b2e6 100644 --- a/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod +++ b/process/sendBulkMail_serverProcess/sendBulkMail_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>sendBulkMail_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/sendBulkMail_serverProcess/documentation.adoc</documentation> diff --git a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod index 3752f6718de29b5a4b07e3c29bae7416d6860164..23c67a18a2d9f489e3a183e8f76b1c1d782da02e 100644 --- a/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod +++ b/process/setMissingAddressLocations_serverProcess/setMissingAddressLocations_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>setMissingAddressLocations_serverProcess</name> <title>Set missing address locations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod index 5d5de80f53c69c20e9c3190e3d8eb99775217a65..e1cb70568a30aa232f833f0d1e8559c09a5d219c 100644 --- a/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod +++ b/process/startWorkflowInstances_serverProcess/startWorkflowInstances_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>startWorkflowInstances_serverProcess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/startWorkflowInstances_serverProcess/process.js</process> diff --git a/process/test_iCommRestriction/test_iCommRestriction.aod b/process/test_iCommRestriction/test_iCommRestriction.aod index cc954a462d091f6b3efef2b7797b92a18ae0b2f8..6d894bcf6bee89031b4fa89d68bdef1b77076ec5 100644 --- a/process/test_iCommRestriction/test_iCommRestriction.aod +++ b/process/test_iCommRestriction/test_iCommRestriction.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>test_iCommRestriction</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/test_iCommRestriction/process.js</process> diff --git a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod index 51684eaceb296a2b5f75e7f1c82b373494b4e28e..8d14a4c15d8a8eae358f727c0b758fdf84d0f51a 100644 --- a/process/updateActivities_serverProzess/updateActivities_serverProzess.aod +++ b/process/updateActivities_serverProzess/updateActivities_serverProzess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateActivities_serverProzess</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/updateActivities_serverProzess/process.js</process> diff --git a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod index e0b953cac1c1f40620c0510daec96d89a844955d..3b3864518417181d045df5dd820a80b48f875237 100644 --- a/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod +++ b/process/updateAllAddressLocations_serverProcess/updateAllAddressLocations_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateAllAddressLocations_serverProcess</name> <title>Set all address locations</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/updateClassifications_serverProcess/process.js b/process/updateClassifications_serverProcess/process.js index 22f452a82db5f2ffe695ad1e24a5ca85f01a9c78..5520e0170e221868a9c89a0639890824756d5cad 100644 --- a/process/updateClassifications_serverProcess/process.js +++ b/process/updateClassifications_serverProcess/process.js @@ -111,23 +111,7 @@ for (i = 0; i < objectTypes.length; i++) //update for each object_type } //this is the "upgrade" part of this process: - //first: insert default values into the records that have no entries - idsWithoutStoredClassification = newSelect(currentObjectColumn) - .from(currentObjectTable) - .where(currentObjectColumn, newSelect("CLASSIFICATIONSTORAGE.OBJECT_ROWID").from("CLASSIFICATIONSTORAGE").where("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]), SqlBuilder.NOT_IN()) - - if(isOrganisation) - { - idsWithoutStoredClassification.and("CONTACT.PERSON_ID is null") - .and("CONTACT.ORGANISATION_ID", OrgUtils.getPrivateOrganisationId(), SqlBuilder.NOT_EQUAL()); - } - - idsWithoutStoredClassification = idsWithoutStoredClassification.arrayColumn(); - - if(idsWithoutStoredClassification) - ClassificationUtils.insertEmptyClassification(idsWithoutStoredClassification, objectTypes[i]); - - //second: update all entries with correct classificaiton values + //update all entries with correct classificaiton values //all groups of the objectType in the correct order, needed later to also add the "-" gradings if no classificationType has been set under that group orderedGroups = newSelect("distinct CLASSIFICATIONGROUP.CLASSIFICATIONGROUPID, CLASSIFICATIONGROUP.SORTING") @@ -206,7 +190,14 @@ for (i = 0; i < objectTypes.length; i++) //update for each object_type cond = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id) .and("CLASSIFICATIONSTORAGE.OBJECT_TYPE", objectTypes[i]) .and("CLASSIFICATIONSTORAGE.CLASSIFICATIONVALUE", chainedGrading, SqlBuilder.NOT_EQUAL()); - var count = Number(cond.updateData(true, table, column, null, [chainedGrading])); + if(new RegExp("^-+$").test(chainedGrading) == true || chainedGrading == "-") + { + count = newWhere("CLASSIFICATIONSTORAGE.OBJECT_ROWID", row_Id).deleteData(true, "CLASSIFICATIONSTORAGE"); + } + else + { + count = Number(cond.updateData(true, table, column, null, [chainedGrading])); + } if (count > 0) { outputInformation[objectTypes[i]].updatedElements += count; diff --git a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod index 52e9c03b7cf5d4c0792dd5f4ea13a6676520a729..c3142850326968443c10f656f4ecf7468ebcdee2 100644 --- a/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod +++ b/process/updateClassifications_serverProcess/updateClassifications_serverProcess.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>updateClassifications_serverProcess</name> <title>Update all Classification entries in the system</title> <majorModelMode>DISTRIBUTED</majorModelMode> diff --git a/process/workflowDeploy_rest/workflowDeploy_rest.aod b/process/workflowDeploy_rest/workflowDeploy_rest.aod index 05c891a90280224cd574f42e6347203f67386f3a..ad6fb04bf2304ee5c01e7dd785ff274e146e82f7 100644 --- a/process/workflowDeploy_rest/workflowDeploy_rest.aod +++ b/process/workflowDeploy_rest/workflowDeploy_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowDeploy_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowDeploy_rest/process.js</process> diff --git a/process/workflowExtension_serverProcess/process.js b/process/workflowExtension_serverProcess/process.js new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod new file mode 100644 index 0000000000000000000000000000000000000000..195a4cd633e30d180b82eec95ea16e5be180a292 --- /dev/null +++ b/process/workflowExtension_serverProcess/workflowExtension_serverProcess.aod @@ -0,0 +1,9 @@ +<?xml version="1.0" encoding="UTF-8"?> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>workflowExtension_serverProcess</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowExtension_serverProcess/process.js</process> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod index 9d33ad873277ea65215132f0999519ec2e699e08..c52adefed8b5466a9f677e271f2e094ecfd7070d 100644 --- a/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod +++ b/process/workflowLinkTracking_rest/workflowLinkTracking_rest.aod @@ -1,11 +1,13 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowLinkTracking_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowLinkTracking_rest/process.js</process> <publishAsWebservice v="false" /> <style>REST</style> - <loginTypeId>internal.none</loginTypeId> + <loginTypeId> + <element>internal.none</element> + </loginTypeId> <restrictedRoles /> <alias>Data_alias</alias> <variants> diff --git a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod index 5a75e4758d9beb4122312853a53092986eb8b853..5ea1497835d807d18c23333b742ad6125d3777f0 100644 --- a/process/workflowPrivileges_rest/workflowPrivileges_rest.aod +++ b/process/workflowPrivileges_rest/workflowPrivileges_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowPrivileges_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <process>%aditoprj%/process/workflowPrivileges_rest/process.js</process> diff --git a/process/workflowRoles_rest/workflowRoles_rest.aod b/process/workflowRoles_rest/workflowRoles_rest.aod index 4f15d52de42e555e108da701ae778db1197ada7e..6cfb124a66132d6976ebf4201c34f5854d6abda2 100644 --- a/process/workflowRoles_rest/workflowRoles_rest.aod +++ b/process/workflowRoles_rest/workflowRoles_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowRoles_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowRoles_rest/documentation.adoc</documentation> diff --git a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod index 7922e7f73b3bc4dc4a9beddb7e1c984564411765..24c524d5bbe0a4c81636d114333f22a9f69043e8 100644 --- a/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod +++ b/process/workflowServiceTaskParams_rest/workflowServiceTaskParams_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowServiceTaskParams_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowServiceTaskParams_rest/documentation.adoc</documentation> diff --git a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod index ea3dfbea15a55987d24139a247e60142a9c41790..189d4377abed5818ead11c35ab8892788b3c4974 100644 --- a/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod +++ b/process/workflowServiceTasks_rest/workflowServiceTasks_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowServiceTasks_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowServiceTasks_rest/documentation.adoc</documentation> diff --git a/process/workflowSignal_rest/process.js b/process/workflowSignal_rest/process.js new file mode 100644 index 0000000000000000000000000000000000000000..83fe2b22065777c24df4990abcaecad8fffb2487 --- /dev/null +++ b/process/workflowSignal_rest/process.js @@ -0,0 +1,23 @@ +import("Workflow_lib"); +import("system.workflow"); +import("system.util"); + +function restpost (pRequest) +{ + var request = JSON.parse(pRequest); + + var signalObj = JSON.parse(util.decodeBase64String(request.body)); + if (signalObj && signalObj.signal && WorkflowUtils.engineIsEnabled()) + { + var signal = signalObj.signal; + var processInstanceId = signalObj.processInstanceId || null; + var variables = signalObj.variables || {}; + + workflow.signalEventReceived(signal, variables, processInstanceId); + + request.response.statuscode = 200; + request.response.body = JSON.stringify(signalObj); + } + + return JSON.stringify(request); +} \ No newline at end of file diff --git a/process/workflowSignal_rest/workflowSignal_rest.aod b/process/workflowSignal_rest/workflowSignal_rest.aod new file mode 100644 index 0000000000000000000000000000000000000000..db28e29d522c6089bc2bf21bea4c58d67da5f56f --- /dev/null +++ b/process/workflowSignal_rest/workflowSignal_rest.aod @@ -0,0 +1,13 @@ +<?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.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> + <name>workflowSignal_rest</name> + <majorModelMode>DISTRIBUTED</majorModelMode> + <process>%aditoprj%/process/workflowSignal_rest/process.js</process> + <publishAsWebservice v="true" /> + <style>REST</style> + <restAcceptedMimeType>application/json</restAcceptedMimeType> + <restDeliveredMimeType>application/json</restDeliveredMimeType> + <variants> + <element>EXECUTABLE</element> + </variants> +</process> diff --git a/process/workflowUsers_rest/workflowUsers_rest.aod b/process/workflowUsers_rest/workflowUsers_rest.aod index 6669992f8a6350bc781118d4751bb12f8f679d05..ff6c8aa88c1d43861d49315a697ad537f3419a24 100644 --- a/process/workflowUsers_rest/workflowUsers_rest.aod +++ b/process/workflowUsers_rest/workflowUsers_rest.aod @@ -1,5 +1,5 @@ <?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"> +<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.2.2" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.2.2"> <name>workflowUsers_rest</name> <majorModelMode>DISTRIBUTED</majorModelMode> <documentation>%aditoprj%/process/workflowUsers_rest/documentation.adoc</documentation> diff --git a/readme.md b/readme.md new file mode 100644 index 0000000000000000000000000000000000000000..67a1a52f76abd63922d48d8fa5526f1e470c94a2 --- /dev/null +++ b/readme.md @@ -0,0 +1,8 @@ +# xRM + +## Useful documents to get started + +* [Coding Guidelines](https://neon.adito.de/client/KnowledgeManagement/full?id=dc6e3066-2228-4d04-b9b6-dac792d5bfec) +* [Customizing Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=534c07da-387a-46e2-b5ab-040a5c1b0ab2) +* [Designer Manual](https://neon.adito.de/client/KnowledgeManagement/full?id=56507a00-9c49-4be3-b4d5-9f83cb442ff7) +* [Documentation Overview](https://neon.adito.de/client/KnowledgeManagement/full?id=42a481e3-b27d-446a-8a0b-fe5bffafc2ec) \ No newline at end of file diff --git a/report/Offer_report/Offer_report.aod b/report/Offer_report/Offer_report.aod index 737a6889a7a04378f01339685a85661f15da8849..b273251e794bcddc566cbff154b432b35bae704b 100644 --- a/report/Offer_report/Offer_report.aod +++ b/report/Offer_report/Offer_report.aod @@ -33,14 +33,6 @@ <icon>REPORT_24</icon> <enabled v="true" /> <layoutPosition>POSITION_TOP</layoutPosition> - <customComponents> - <rcCommandButton> - <name>Button</name> - <onClick>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick> - <title>Senden per E-Mail</title> - <imageData>%aditoprj%/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData> - </rcCommandButton> - </customComponents> </ribbonTask> </ribbonTasks> </ribbon> diff --git a/report/Offer_report/reportData.jrxml b/report/Offer_report/reportData.jrxml index f2afe8275137822933e3b91b78f69ef96e2879dd..2f3a25316e09aa7a8a18a74718bb72d930e3e4f5 100644 --- a/report/Offer_report/reportData.jrxml +++ b/report/Offer_report/reportData.jrxml @@ -1,8 +1,8 @@ <?xml version="1.0" encoding="UTF-8"?> <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="report1" 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="1.9487171000000014"/> + <property name="ireport.zoom" value="1.0"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="190"/> + <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Pos" class="java.lang.String"/> <parameter name="Articledescription" class="java.lang.String"/> @@ -24,7 +24,7 @@ <parameter name="OfferDeliveryTerm" class="java.lang.String"/> <parameter name="responsible" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> - <defaultValueExpression><![CDATA["C:\\Entwicklung\\0.0\\project\\basic2\\report\\Offer_report\\"]]></defaultValueExpression> + <defaultValueExpression><![CDATA["C:\\dev\\project\\basic\\report\\Offer_report\\"]]></defaultValueExpression> </parameter> <parameter name="adito.datasource.subdata" class="java.lang.Object"/> <parameter name="SUMITEMSUM" class="java.lang.Double"/> diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png deleted file mode 100644 index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000 Binary files a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png and /dev/null differ diff --git a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js deleted file mode 100644 index 354885d3893c22e85f81c745e62614f8b636523b..0000000000000000000000000000000000000000 --- a/report/Offer_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js +++ /dev/null @@ -1,44 +0,0 @@ -import("system.text"); -import("system.swing"); -import("system.translate"); -import("system.question"); -import("system.vars"); -import("system.db"); - -//@TODO: remove - -var details = vars.get("$global.RptOfferOrderDetails"); -var orgid = db.cell("select ORGANISATION_ID from CONTACT where CONTACTID = '" + details[1] + "'"); -if (orgid.substr(0, 2) == '0 ') // Privatperson -{ - var count = db.cell("select count(*) from COMMUNICATION where medium_id = 3 and ISSTANDARD = 1 and CONTACT_ID = '" + details[1] + "'"); - if (count == "0") question.showMessage(translate.text("no standard email office")); - else - sendAutoMail( translate.text("Offer") + " " + details[0], details[1], "Email_Angebot", details[2], "AGB", [], [["SPNR", details[5]]] ); -} -else // Funktion - Person in Firma -{ - var orgrelid = db.cell("select CONTACTID from CONTACT where ORGANISATION_ID = '" + orgid + "'"); - var relobjid = db.array(db.COLUMN, "select ORGANISATION_ID from OBJECTRELATION join CONTACT on CONTACTID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9"); - contactid = db.array(db.COLUMN, "select CONTACTID from CONTACT left join PERSON on PERSONID = PERSON_ID" - + " where CONTACT.STATUS = 1 and ORGANISATION_ID in ('" + orgid + "', '" + relobjid.join("','") + "')"); - - vars.set("$local.relids", "'" + contactid.join("','") + "'"); - vars.set("$local.cmb_person_to", details[1]); //Empfänger vorbelegen - contactid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERSON_FOREMAIL") - if ( contactid == null ) contactid = ""; //Abbruch geklickt - else - { - var reltoid = contactid["DLG_CHOOSE_PERSON_FOREMAIL.cmb_person_to"]; - - var relccid = text.decodeMS(contactid["DLG_CHOOSE_PERSON_FOREMAIL.tbl_person_cc"]); - if (relccid.length == 0) contactid = ""; // keine Person markiert und OK geklickt - else - relccid = db.array(db.COLUMN, "select ADDR from COMMUNICATION where MEDIUM_ID = 3 and ISSTANDARD = 1 and " - + "CONTACT_ID in ('" + relccid.join("','") + "') and CONTACT_ID <> '" + reltoid + "'"); - - if ( reltoid != "" ) - sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, "Email_" + details[3], details[2], "AGB", relccid, [["SPNR", details[5]]] ); - else question.showMessage(translate.text("Put Reciever Into To")); - } -} \ No newline at end of file diff --git a/report/Reminder_report/reportData.jrxml b/report/Reminder_report/reportData.jrxml index 5e0e92752aff29c9212d7fed72e0a86f5592701e..1347b1ef959b34c58be528e8eecfb4bc139ff51a 100644 --- a/report/Reminder_report/reportData.jrxml +++ b/report/Reminder_report/reportData.jrxml @@ -2,7 +2,7 @@ <jasperReport xmlns="http://jasperreports.sourceforge.net/jasperreports" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://jasperreports.sourceforge.net/jasperreports http://jasperreports.sourceforge.net/xsd/jasperreport.xsd" name="Mahnung" pageWidth="595" pageHeight="842" columnWidth="555" leftMargin="20" rightMargin="20" topMargin="20" bottomMargin="20" uuid="e7a916c8-3f9a-497d-84bb-3909b15271ea"> <property name="ireport.zoom" value="2.1435888100000016"/> <property name="ireport.x" value="0"/> - <property name="ireport.y" value="144"/> + <property name="ireport.y" value="0"/> <parameter name="myAddr" class="java.lang.String"/> <parameter name="Kontenabstimmung" class="java.lang.String"/> <parameter name="Rech.-Nr" class="java.lang.String"/> @@ -22,6 +22,7 @@ <parameter name="Due" class="java.lang.String"/> <parameter name="DUEDATE" class="java.lang.String"/> <parameter name="Dunninglevel" class="java.lang.String"/> + <parameter name="OutstandingAmount" class="java.lang.String"/> <field name="PAYED" class="java.lang.String"/> <field name="RELATION_ID" class="java.lang.String"/> <field name="CURRENCY" class="java.lang.String"/> @@ -41,89 +42,89 @@ <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"/> - <textElement textAlignment="Right"> - <font size="8"/> - </textElement> - <textFieldExpression><![CDATA[$P{Due}]]></textFieldExpression> - </textField> <line> <reportElement x="13" y="33" width="527" height="1" uuid="d5108302-191f-4e27-8920-fcd330d335e8"/> </line> <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"/> + </textElement> + <textFieldExpression><![CDATA[$R{Rechnungsbetrag}]]></textFieldExpression> + </textField> + <textField> + <reportElement x="430" y="0" width="81" height="15" uuid="8eee46c0-f3c3-4563-b1b1-746aeb7e73c6"/> <textElement> - <font size="8"/> + <font size="8"/> </textElement> - <textFieldExpression><![CDATA[$R{Rech.-Betrag}]]></textFieldExpression> + <textFieldExpression><![CDATA[$P{OutstandingAmount}]]></textFieldExpression> </textField> </band> </groupHeader> @@ -140,7 +141,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 +158,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 +197,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> diff --git a/report/Salesorder_report/Salesorder_report.aod b/report/Salesorder_report/Salesorder_report.aod index 51a1a8215cab817858158f3307f3e3180e1b15ff..764967a65bf10f470b6c7b0c6939082935b34483 100644 --- a/report/Salesorder_report/Salesorder_report.aod +++ b/report/Salesorder_report/Salesorder_report.aod @@ -32,14 +32,6 @@ <icon>REPORT_24</icon> <enabled v="true" /> <layoutPosition>POSITION_TOP</layoutPosition> - <customComponents> - <rcCommandButton> - <name>Button</name> - <onClick>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js</onClick> - <title>Senden per E-Mail</title> - <imageData>%aditoprj%/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png</imageData> - </rcCommandButton> - </customComponents> </ribbonTask> </ribbonTasks> </ribbon> diff --git a/report/Salesorder_report/reportData.jrxml b/report/Salesorder_report/reportData.jrxml index 496fcde2e9eb86deb652b4884531c1b77c2a40fb..dddb5cf7b47625ee6351e06257b40734c7dbbf38 100644 --- a/report/Salesorder_report/reportData.jrxml +++ b/report/Salesorder_report/reportData.jrxml @@ -27,7 +27,7 @@ <parameter name="SUMITEMSUM" class="java.lang.Double"/> <parameter name="TOTAL" class="java.lang.String"/> <parameter name="SUBREPORT_DIR" class="java.lang.String" isForPrompting="false"> - <defaultValueExpression><![CDATA["C:\\Entwicklung\\stable2019\\project\\basic\\report\\Salesorder_report\\"]]></defaultValueExpression> + <defaultValueExpression><![CDATA["C:\\dev\\project\\basic\\report\\Salesorder_report\\"]]></defaultValueExpression> </parameter> <parameter name="adito.datasource.subdata" class="java.lang.Object" isForPrompting="false"/> <parameter name="adito.image.myLogo" class="java.lang.String"/> diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png deleted file mode 100644 index 49cda7d673d367ab30051c9aa9dda1dcfad22177..0000000000000000000000000000000000000000 Binary files a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/imageData.png and /dev/null differ diff --git a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js b/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js deleted file mode 100644 index dad46b278aff6020f827b7cc76b00dd4dac82d27..0000000000000000000000000000000000000000 --- a/report/Salesorder_report/ribbon/ribbontasks/task_report/customcomponents/button/onClick.js +++ /dev/null @@ -1,46 +0,0 @@ -import("system.text"); -import("system.question"); -import("system.translate"); -import("system.swing"); -import("system.vars"); -import("system.db"); - -//@TODO: remove - -var details = vars.get("$global.RptOfferOrderDetails"); -var orgid = db.array(db.ROW, "select ORG_ID, LANG from RELATION where RELATIONID = '" + details[1] + "'"); -if (orgid[0].substr(0, 2) == '0 ') // Privatperson -{ - var count = db.cell("select count(*) from COMM where medium_id = 3 and STANDARD = 1 and RELATION_ID = '" + details[1] + "'"); - if (count == "0") question.showMessage(translate.text("No Standard-E-Mail available!")); - else - sendAutoMail( translate.text(details[3]) + " " + details[0], details[1], details[4], details[2], details[5], relccid, [["SPNR", details[6]]], orgid[1] ); -} -else // Funktion - Person in Firma -{ - var orgrelid = db.cell("select RELATIONID from RELATION where ORG_ID = '" + orgid + "'"); - var relobjid = db.array(db.COLUMN, "select ORG_ID from OBJECTRELATION join RELATION on RELATIONID = DEST_ID where SOURCE_ID = '" + orgrelid + "' and RELVALUE = 9"); - relationid = db.array(db.COLUMN, "select RELATIONID from RELATION left join PERS on PERSID = PERS_ID" - + " where RELATION.STATUS = 1 and ORG_ID in ('" + orgid[0] + "', '" + relobjid.join("','") + "')"); - - vars.set("$local.relids", "'" + relationid.join("','") + "'"); - vars.set("$local.cmb_pers_to", details[1]); //Empfänger vorbelegen - - relationid = swing.askUserQuestion("Email", "DLG_CHOOSE_PERS_FOREMAIL") - if ( relationid == null ) relationid = ""; //Abbruch geklickt - else - { - var reltoid = relationid["DLG_CHOOSE_PERS_FOREMAIL.cmb_pers_to"]; - var language = db.cell("select LANG from RELATION where RELATIONID = '" + reltoid + "'") - - var relccid = text.decodeMS(relationid["DLG_CHOOSE_PERS_FOREMAIL.tbl_pers_cc"]); - if (relccid.length == 0) relationid = ""; // keine Person markiert und OK geklickt - else - relccid = db.array(db.COLUMN, "select ADDR from COMM where MEDIUM_ID = 3 and STANDARD = 1 and " - + "RELATION_ID in ('" + relccid.join("','") + "') and RELATION_ID <> '" + reltoid + "'"); - - if ( reltoid != "" ) - sendAutoMail( translate.text(details[3]) + " " + details[0], reltoid, details[4], details[2], details[5], relccid, [["SPNR", details[6]]], language ); - else question.showMessage(translate.text("Please enter Addressee in 'to'")); - } -} \ No newline at end of file