Skip to content
Snippets Groups Projects
Commit 5df4ed48 authored by Sebastian Pongratz's avatar Sebastian Pongratz :ping_pong:
Browse files

Merge branch '2021.0_duplicates' into '2021.0'

2021.0 duplicates

See merge request xrm/basic!640
parents 3a1eeda6 cbe4da1f
No related branches found
No related tags found
No related merge requests found
Showing
with 212 additions and 382 deletions
<?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="p.neub" id="082919b2-ebfd-4864-9839-89e593fb6f2d">
<dropColumn tableName="UNRELATEDDUPLICATES">
<column name="CLUSTERID"/>
</dropColumn>
<addColumn tableName="UNRELATEDDUPLICATES">
<column name="DUPLICATETYPE" type="NVARCHAR(63)"/>
</addColumn>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
<?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="create_hasduplicate.xml"/>
<include relativeToChangelogFile="true" file="drop_duplicateclusters.xml"/>
<include relativeToChangelogFile="true" file="drop_duplicatescannerresultfieldconfig.xml"/>
<include relativeToChangelogFile="true" file="alter_unrelatedduplicates.xml"/>
</databaseChangeLog>
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="p.neub" id="db282e4c-01c2-4b55-aa85-01306f4b1f7a">
<createTable tableName="HASDUPLICATE">
<column name="HASDUPLICATEID" type="CHAR(36)">
<constraints primaryKey="true" primaryKeyName="PK_HASDUPLICATE_HASDUPLICATEID"></constraints>
</column>
<column name="OBJECT_TYPE" type="NVARCHAR(63)"/>
<column name="OBJECT_ROWID" type="CHAR(36)"/>
<column name="DUPLICATECOUNT" type="INTEGER"/>
</createTable>
</changeSet>
</databaseChangeLog>
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="p.neub" id="45db014f-922d-4619-b69f-9bf3a36285f4">
<dropTable tableName="DUPLICATECLUSTERS"/>
</changeSet>
</databaseChangeLog>
<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="p.neub" id="fcf592c4-e07c-4919-bfba-0bf99db161ec">
<dropTable tableName="DUPLICATESCANNERRESULTFIELDCONFIG"/>
</changeSet>
</databaseChangeLog>
......@@ -4,4 +4,5 @@
<include relativeToChangelogFile="true" file="Event/changelog.xml"/>
<include relativeToChangelogFile="true" file="alter_CompetitionExpandReasonSize.xml"/>
<include relativeToChangelogFile="true" file="Checklists/changelog.xml"/>
<include relativeToChangelogFile="true" file="Duplicate/changelog.xml"/>
</databaseChangeLog>
\ No newline at end of file
......@@ -11997,82 +11997,6 @@
</entityFieldDb>
</entityFields>
</entityDb>
<entityDb>
<name>DUPLICATECLUSTERS</name>
<dbName></dbName>
<idColumn>ID</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>DUPLICATEID</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="1" />
<size v="36" />
<scale v="0" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>CLUSTERID</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="1" />
<size v="36" />
<scale v="0" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>ID</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>TARGET_ENTITY</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="200" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
</entityFields>
</entityDb>
<entityDb>
<name>UNRELATEDDUPLICATES</name>
<dbName></dbName>
......@@ -12134,136 +12058,11 @@
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>CLUSTERID</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>DUPLICATESCANNERRESULTFIELDCONFIG</name>
<dbName></dbName>
<idColumn>ID</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>DUPLICATESCANNER_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>
<dependencies>
<entityDependency>
<name>9b123a17-2f41-49f8-9492-f386ece46f7c</name>
<entityName>DUPLICATESCANNER</entityName>
<fieldName>ID</fieldName>
</entityDependency>
</dependencies>
</entityFieldDb>
<entityFieldDb>
<name>DATE_NEW</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="93" />
<size v="29" />
<scale v="9" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>ID</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>USER_NEW</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="50" />
<scale v="0" />
<notNull v="true" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>ENTITY_FIELD_NAME</name>
<name>DUPLICATETYPE</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" />
<size v="63" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
......@@ -18354,6 +18153,82 @@
</entityFieldDb>
</entityFields>
</entityDb>
<entityDb>
<name>HASDUPLICATE</name>
<dbName></dbName>
<idColumn>HASDUPLICATEID</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="false" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>OBJECT_TYPE</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="12" />
<size v="63" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>DUPLICATECOUNT</name>
<dbName></dbName>
<primaryKey v="false" />
<columnType v="4" />
<size v="10" />
<scale v="0" />
<notNull v="false" />
<isUnique v="false" />
<index v="false" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
<entityFieldDb>
<name>HASDUPLICATEID</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>AB_SYNCCONTACT</name>
<dbName></dbName>
......
......@@ -314,11 +314,6 @@
<kind v="10077" />
<title></title>
</entityNode>
<entityNode>
<name>Duplicates</name>
<kind v="10077" />
<title></title>
</entityNode>
<entityNode>
<name>AuditLogHistory</name>
<kind v="10077" />
......
......@@ -5,7 +5,8 @@ import("system.vars");
import("DuplicateScanner_lib");
var contactId = vars.get("$field.CONTACTID");
DuplicateScannerUtils.deleteCachedDuplicate(contactId);
DuplicateScannerUtils.deleteHasDuplicateEntries("Person_entity", [contactId]);
DuplicateScannerUtils.deleteHasDuplicateEntries("Organisation_entity", [contactId]);
new AttributeRelationQuery(contactId, null, "Person")
.deleteAllAttributes();
......
<?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.18" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.18">
<name>DuplicateScannerResultFieldConfig_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainer>recordContainer</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityField>
<name>UID</name>
</entityField>
<entityField>
<name>ENTITY_FIELD_NAME</name>
<title>Entity field name</title>
</entityField>
<entityField>
<name>DATE_EDIT</name>
<valueProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/entityfields/date_edit/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>DATE_NEW</name>
<valueProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/entityfields/date_new/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>USER_NEW</name>
<valueProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/entityfields/user_new/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>USER_EDIT</name>
<valueProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/entityfields/user_edit/valueProcess.js</valueProcess>
</entityField>
<entityParameter>
<name>DuplicateScannerId_param</name>
<expose v="true" />
<mandatory v="true" />
</entityParameter>
<entityProvider>
<name>ScannerResultFieldConfigProvider</name>
<dependencies>
<entityDependency>
<name>119b48a5-ce78-4169-bd31-76e524cece99</name>
<entityName>DuplicateScanner_entity</entityName>
<fieldName>ScannerResultFieldsConfig_Consumer</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityField>
<name>DUPLICATESCANNER_ID</name>
<valueProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/entityfields/duplicatescanner_id/valueProcess.js</valueProcess>
</entityField>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
</entityFields>
<recordContainers>
<dbRecordContainer>
<name>recordContainer</name>
<conditionProcess>%aditoprj%/entity/DuplicateScannerResultFieldConfig_entity/recordcontainers/recordcontainer/conditionProcess.js</conditionProcess>
<alias>Data_alias</alias>
<recordFieldMappings>
<dbRecordFieldMapping>
<name>DATE_EDIT.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.DATE_EDIT</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DATE_NEW.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.DATE_NEW</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>ENTITY_FIELD_NAME.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.ENTITY_FIELD_NAME</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>UID.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.ID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>USER_EDIT.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.USER_EDIT</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>USER_NEW.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.USER_NEW</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DUPLICATESCANNER_ID.value</name>
<recordfield>DUPLICATESCANNERRESULTFIELDCONFIG.DUPLICATESCANNER_ID</recordfield>
</dbRecordFieldMapping>
</recordFieldMappings>
<linkInformation>
<linkInformation>
<name>f7126f94-9e4c-46a0-8dc9-9e52fda1c7c0</name>
<tableName>DUPLICATESCANNERRESULTFIELDCONFIG</tableName>
<primaryKey>ID</primaryKey>
<isUIDTable v="false" />
<readonly v="false" />
</linkInformation>
</linkInformation>
</dbRecordContainer>
</recordContainers>
</entity>
import("system.util");
import("system.result");
import("system.neon");
import("system.vars");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
result.string(vars.get("$sys.date"));
\ No newline at end of file
import("system.util");
import("system.result");
import("system.neon");
import("system.vars");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
result.string(vars.get("$sys.date"));
\ No newline at end of file
import("system.result");
import("system.vars");
if(vars.get("$this.value") == null || vars.get("$this.value") == "")
{
result.string(vars.get("$param.DuplicateScannerId_param"));
}
\ No newline at end of file
import("system.util");
import("system.result");
import("system.neon");
import("system.vars");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_EDIT)
result.string(vars.get("$sys.user"));
\ No newline at end of file
import("system.vars");
import("system.result");
if (vars.get("$param.DuplicateScannerId_param"))
result.string(newWhere("DUPLICATESCANNERRESULTFIELDCONFIG.DUPLICATESCANNER_ID", "$param.DuplicateScannerId_param").toString());
\ No newline at end of file
......@@ -33,16 +33,6 @@
<contentType>BOOLEAN</contentType>
<valueProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/external_service_usage_allowed/valueProcess.js</valueProcess>
</entityField>
<entityActionGroup>
<name>TestActionGroup</name>
<children>
<entityActionField>
<name>TestDuplicateScanner</name>
<title>Test DuplicateSearch</title>
<onActionProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/testactiongroup/children/testduplicatescanner/onActionProcess.js</onActionProcess>
</entityActionField>
</children>
</entityActionGroup>
<entityField>
<name>USER_NEW</name>
<valueProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/user_new/valueProcess.js</valueProcess>
......@@ -71,40 +61,28 @@
<state>AUTO</state>
<stateProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/scan_pattern/stateProcess.js</stateProcess>
</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>
</entityConsumer>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
<entityActionGroup>
<name>RunActionGroup</name>
<documentation>%aditoprj%/entity/DuplicateScanner_entity/entityfields/runactiongroup/documentation.adoc</documentation>
<name>FilterActions</name>
<children>
<entityActionField>
<name>RebuildPersonDuplicatesCache</name>
<title>Rebuild Person duplicates cache</title>
<onActionProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/runactiongroup/children/rebuildpersonduplicatescache/onActionProcess.js</onActionProcess>
<name>rebuild</name>
<title>Rebuild selected entries</title>
<onActionProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/filteractions/children/rebuild/onActionProcess.js</onActionProcess>
</entityActionField>
<entityActionField>
<name>RebuildOrganisationDuplicatesCache</name>
<title>Rebuild Organisation duplicates cache</title>
<onActionProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/runactiongroup/children/rebuildorganisationduplicatescache/onActionProcess.js</onActionProcess>
<name>viewDuplicates</name>
<title>View duplicates</title>
<onActionProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/filteractions/children/viewduplicates/onActionProcess.js</onActionProcess>
<iconId>VAADIN:TABLE</iconId>
<state>READONLY</state>
<stateProcess>%aditoprj%/entity/DuplicateScanner_entity/entityfields/filteractions/children/viewduplicates/stateProcess.js</stateProcess>
</entityActionField>
</children>
</entityActionGroup>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
</entityFields>
<recordContainers>
<dbRecordContainer>
......
import("system.process");
import("system.logging");
import("system.entities");
import("system.vars");
import("DuplicateScanner_lib");
var selectedIds = vars.get("$sys.selection");
var loadConfig = entities.createConfigForLoadingRows()
.entity("DuplicateScanner_entity")
.uids(selectedIds)
.fields(["FILTER_NAME", "ENTITY_TO_SCAN_NAME", "ID_FIELD_NAME", "SCAN_PATTERN"]);
var selectedEntries = entities.getRows(loadConfig);
logging.log("Rebuilding " + selectedEntries.length + " entries");
for(var i = 0; i < selectedEntries.length; i++)
{
var currEntry = selectedEntries[i];
var filterName = currEntry["FILTER_NAME"];
var targetEntity = currEntry["ENTITY_TO_SCAN_NAME"];
var targetIdField = currEntry["ID_FIELD_NAME"];
var filter = JSON.parse(currEntry["SCAN_PATTERN"]);
logging.log("Rebuilding " + filterName);
var startConfig = process.createStartAsyncConfig()
.setName("rebuildDuplicates_serverProcess")
.setShowErrorDialog(true)
.setLocalVariables({
filterName: filterName,
targetEntity: targetEntity,
targetIdField: targetIdField,
filter: JSON.stringify(filter.filter)
});
process.startAsync(startConfig);
}
import("system.vars");
import("system.neon");
import("system.entities");
import("Context_lib");
var config = entities.createConfigForLoadingRows()
.entity("DuplicateScanner_entity")
.uid(vars.get("$sys.selection")[0])
.fields(["ENTITY_TO_SCAN_NAME"]);
var scanner = entities.getRow(config);
var contextId = ContextUtils.getContextName(ContextUtils.getContextId(scanner["ENTITY_TO_SCAN_NAME"]));
neon.openContext(contextId, null, null, neon.OPERATINGSTATE_SEARCH, {
FilterPreSet_param: JSON.stringify({
type: "group",
operator: "AND",
childs: [{
type: "row",
name: "#EXTENSION.Duplicates_filter.Duplicates_filter#NUMBER",
operator: "GREATER",
value: "All Duplicates",
key: "0",
contenttype: "NUMBER"
}]
})
});
import("system.util");
import("system.result");
import("system.neon");
import("system.vars");
import("system.neon");
if(vars.get("$sys.recordstate") == neon.OPERATINGSTATE_NEW)
result.string(vars.get("$sys.user"));
\ No newline at end of file
if(vars.get("$sys.selection").length == 1)
result.string(neon.COMPONENTSTATE_EDITABLE);
else
result.string(neon.COMPONENTSTATE_READONLY);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment