Skip to content
Snippets Groups Projects
Commit 349f0ea1 authored by Johannes Goderbauer's avatar Johannes Goderbauer
Browse files

Merge branch '#1065349-SalesprojectPhaseDefinition' into '2021.0.0'

#1065349 salesproject phase definition

See merge request xrm/basic!591
parents 70383709 222cb67c
No related branches found
No related tags found
No related merge requests found
Showing
with 2157 additions and 302 deletions
......@@ -23,4 +23,4 @@
<!--enable this only when you definetly want to overwrite the existing data with demo records:-->
<!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-->
</databaseChangeLog>
</databaseChangeLog>
\ No newline at end of file
This diff is collapsed.
......@@ -336,6 +336,10 @@
<name>District</name>
<kind v="10077" />
</entityNode>
<entityNode>
<name>SalesprojectPhaseDefinition</name>
<kind v="10077" />
</entityNode>
</childNodes>
</entityNode>
</childNodes>
......
<?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>ChecklistEntryValue_entity</name>
<title>Checklist entries</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>NEON:MQL</icon>
<imageProcess>%aditoprj%/entity/ChecklistEntryValue_entity/imageProcess.js</imageProcess>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
<entityField>
<name>CHECKLISTENTRYVALUEID</name>
</entityField>
<entityField>
<name>CHECKLISTENTRY_ID</name>
<title>Checklist entry</title>
<state>READONLY</state>
<displayValueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/checklistentry_id/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>OBJECT_ROWID</name>
</entityField>
<entityField>
<name>OBJECT_TYPE</name>
<valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/object_type/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>IS_FULFILLED</name>
<contentType>BOOLEAN</contentType>
</entityField>
<entityField>
<name>USER_EDIT</name>
</entityField>
<entityField>
<name>USER_NEW</name>
</entityField>
<entityField>
<name>DATE_NEW</name>
</entityField>
<entityField>
<name>DATE_EDIT</name>
</entityField>
<entityParameter>
<name>ObjectRowId_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>ObjectType_param</name>
<expose v="true" />
</entityParameter>
<entityParameter>
<name>ChecklistId_param</name>
<expose v="true" />
</entityParameter>
<entityProvider>
<name>ChecklistEntryValues</name>
<titlePlural>Checklist entries</titlePlural>
<recordContainer>jdito</recordContainer>
<dependencies>
<entityDependency>
<name>7eae9b1e-cea7-4688-898a-754dba82eac7</name>
<entityName>ChecklistEntry_entity</entityName>
<fieldName>ChecklistEntryValues</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>d4bddebc-b38b-46dc-8bb8-5ffa4fbdf627</name>
<entityName>Salesproject_entity</entityName>
<fieldName>ChecklistEntryValues</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityParameter>
<name>Verifier_param</name>
<valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/verifier_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>VerifierFnName_param</name>
</entityParameter>
<entityField>
<name>UID</name>
</entityField>
<entityActionGroup>
<name>setChecklistEntryCompleted</name>
<state>AUTO</state>
<stateProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/stateProcess.js</stateProcess>
<children>
<entityActionField>
<name>setCompleted</name>
<title>Set completed</title>
<onActionProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/setchecklistentrycompleted/children/setcompleted/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isSelectionAction v="true" />
<iconId>NEON:MQL</iconId>
</entityActionField>
</children>
</entityActionGroup>
<entityField>
<name>type</name>
<title>Type</title>
<valueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/type/valueProcess.js</valueProcess>
<displayValueProcess>%aditoprj%/entity/ChecklistEntryValue_entity/entityfields/type/displayValueProcess.js</displayValueProcess>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<contentProcess>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<onUpdate>%aditoprj%/entity/ChecklistEntryValue_entity/recordcontainers/jdito/onUpdate.js</onUpdate>
<recordFieldMappings>
<jDitoRecordFieldMapping>
<name>UID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>CHECKLISTENTRY_ID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>CHECKLISTENTRYVALUEID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>DATE_EDIT.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>DATE_NEW.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>IS_FULFILLED.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>OBJECT_ROWID.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>OBJECT_TYPE.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>USER_EDIT.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>USER_NEW.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.result");
import("system.vars");
import("system.translate");
import("ChecklistEntryRegistry_basic");
import("Util_lib");
import("Sql_lib");
var checklistEntryId = vars.get("$field.CHECKLISTENTRY_ID");
var verfierFnName = newSelect("TITLE", "Data_alias")
.from("CHECKLISTENTRY")
.where("CHECKLISTENTRY.CHECKLISTENTRYID", checklistEntryId)
.cell();
var verifierFn = $ChecklistEntryRegistry[verfierFnName];
var displayValue;
if (Utils.isFunction(verifierFn))
displayValue = verifierFn().title;
else{
displayValue = translate.text(verfierFnName);
}
result.string(displayValue);
import("system.result");
import("system.vars");
result.string(vars.get("$param.ObjectType_param"));
\ No newline at end of file
import("system.vars");
import("system.neon");
import("Sql_lib");
newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID", "$field.CHECKLISTENTRYVALUEID")
.updateFields({"IS_FULFILLED":1});
neon.refreshAll();
\ No newline at end of file
import("system.result");
import("system.vars");
import("system.neon");
import("KeywordRegistry_basic");
if (vars.get("$field.type") == $KeywordRegistry.checklistEntryType$auto())
{
result.string(neon.COMPONENTSTATE_DISABLED);
}
if (vars.get("$field.type") == $KeywordRegistry.checklistEntryType$manual())
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
import("Keyword_lib");
import("system.vars");
import("system.result");
import("KeywordRegistry_basic");
result.string(KeywordUtils.getViewValue($KeywordRegistry.checklistEntryType(), vars.get("$field.type")));
\ No newline at end of file
import("system.result");
import("system.vars");
import("Sql_lib");
var checklistEntryId = vars.get("$field.CHECKLISTENTRY_ID");
if (checklistEntryId)
{
var type = newSelect("TYPE")
.from("CHECKLISTENTRY")
.where("CHECKLISTENTRY.CHECKLISTENTRYID", checklistEntryId)
.cell();
result.string(type);
}
\ No newline at end of file
import("Util_lib");
import("system.result");
import("system.vars");
import("ChecklistEntryRegistry_basic");
var fnName = vars.get("$param.VerifierFnName_param");
var objectRowId = vars.get("$param.ObjectRowId_param");
var isFulfilledFn = $ChecklistEntryRegistry[fnName];
if (Utils.isFunction(isFulfilledFn))
result.string(isFulfilledFn().verifierFn(objectRowId));
import("system.vars");
import("system.result");
var image;
var isFulfilled = vars.get("$field.IS_FULFILLED");
if (isFulfilled == 1)
{
image = "NEON:MQL";
}
result.string(image);
\ No newline at end of file
import("system.result");
import("system.vars");
import("system.util");
import("system.db");
import("KeywordRegistry_basic");
import("Util_lib");
import("Sql_lib");
var newUid;
var isExistent;
var checklistEntryIds = [];
var preparedStatements = [];
var checklistEntryValues = [];
var manualChecklistEntries = [];
var manualChecklistEntryValues = [];
var cols = ["CHECKLISTENTRYVALUEID", "CHECKLISTENTRY_ID", "OBJECT_ROWID", "OBJECT_TYPE",
"IS_FULFILLED", "USER_NEW", "USER_EDIT", "DATE_NEW", "DATE_EDIT"];
var checklistId = vars.get("$param.ChecklistId_param");
var objectRowId = vars.get("$param.ObjectRowId_param");
//var objectType = vars.get("$param.ObjectType_param"); - necessary?
var checklistEntries = [];
if (checklistId)
{
checklistEntries = newSelect("CHECKLISTENTRYID, CHECKLIST_ID, TITLE, TYPE, USER_NEW, USER_EDIT, DATE_NEW, DATE_EDIT")
.from("CHECKLISTENTRY")
.where("CHECKLISTENTRY.CHECKLIST_ID", checklistId)
.table();
checklistEntries.forEach(function(pRow){
if (pRow[0])
{
checklistEntryIds.push(pRow[0]);
}
});
}
for (i = 0; i < checklistEntries.length; i++)
{
for (j = 0; j < checklistEntries[i].length; j++)
{
checklistEntryValues[i] = new Array(10);
if (checklistEntries[i][3] == $KeywordRegistry.checklistEntryType$auto())
{
newUid = util.getNewUUID();
vars.set("$param.VerifierFnName_param", checklistEntries[i][2]);
checklistEntryValues[i] = [newUid, checklistEntries[i][0], newUid, "", vars.get("$sys.date"),
Utils.toBoolean(vars.get("$param.Verifier_param")) ? 1 : 0, objectRowId,
"", "null", vars.get("$sys.user")];
}
else
{
isExistent = newSelect("CHECKLISTENTRYVALUEID, CHECKLISTENTRY_ID, CHECKLISTENTRYVALUEID,\n\
DATE_EDIT, DATE_NEW, IS_FULFILLED, OBJECT_ROWID, OBJECT_TYPE, USER_EDIT, USER_NEW")
.from("CHECKLISTENTRYVALUE")
.where("CHECKLISTENTRYVALUE.CHECKLISTENTRY_ID", checklistEntries[i][0])
.and("CHECKLISTENTRYVALUE.OBJECT_ROWID", objectRowId)
.arrayRow();
if (isExistent.length > 0)
{
checklistEntryValues[i] = isExistent;
}
else
{
newUid = util.getNewUUID();
checklistEntryValues[i] = [newUid, checklistEntries[i][0], newUid, "", vars.get("$sys.date"), "0", objectRowId, "",
"null", vars.get("$sys.user")];
isExistent = preparedStatements.some(function(pPreparedStatement){
return pPreparedStatement[3].includes(checklistEntries[i][0]) && pPreparedStatement[3].includes(objectRowId);
});
if (!isExistent)
{
preparedStatements.push(["CHECKLISTENTRYVALUE",
cols,
db.getColumnTypes("CHECKLISTENTRYVALUE", cols),
[checklistEntryValues[i][0],
checklistEntryValues[i][1],
checklistEntryValues[i][6],
checklistEntryValues[i][7],
checklistEntryValues[i][5].toString(),
checklistEntryValues[i][9],
checklistEntryValues[i][8],
checklistEntryValues[i][4],
checklistEntryValues[i][3]]]);
}
}
}
}
}
db.inserts(preparedStatements, "Data_alias");
result.object(checklistEntryValues);
\ No newline at end of file
import("Sql_lib");
import("system.vars");
var changed = vars.get("$local.changed");
if(changed)
{
newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID", "$field.CHECKLISTENTRYVALUEID")
.updateFields({"IS_FULFILLED" : vars.get("$field.IS_FULFILLED")});
}
\ No newline at end of file
<?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>ChecklistEntry_entity</name>
<title>Checklist entries</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>NEON:MQL</icon>
<recordContainer>db</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
<entityField>
<name>CHECKLISTENTRYID</name>
<displayValueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryid/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>TITLE</name>
<title>Title</title>
<dropDownProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/title/dropDownProcess.js</dropDownProcess>
<displayValueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/title/displayValueProcess.js</displayValueProcess>
</entityField>
<entityField>
<name>TYPE</name>
<title>Type</title>
<dropDownProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/type/dropDownProcess.js</dropDownProcess>
</entityField>
<entityField>
<name>USER_EDIT</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/user_edit/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>USER_NEW</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/user_new/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>DATE_EDIT</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/date_edit/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>DATE_NEW</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/date_new/valueProcess.js</valueProcess>
</entityField>
<entityProvider>
<name>ChecklistEntries</name>
<dependencies>
<entityDependency>
<name>84d5df6b-1aff-4ab2-88a5-fd3b591916ce</name>
<entityName>Checklist_entity</entityName>
<fieldName>ChecklistEntries</fieldName>
<isConsumer v="false" />
</entityDependency>
<entityDependency>
<name>9134e842-dac3-4f09-9e03-f71827b15fcf</name>
<entityName>SalesprojectPhaseDefinition_entity</entityName>
<fieldName>ChecklistEntries</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityField>
<name>CHECKLIST_ID</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklist_id/valueProcess.js</valueProcess>
</entityField>
<entityParameter>
<name>ChecklistUid_param</name>
<expose v="true" />
</entityParameter>
<entityConsumer>
<name>ChecklistEntryValues</name>
<dependency>
<name>dependency</name>
<entityName>ChecklistEntryValue_entity</entityName>
<fieldName>ChecklistEntryValues</fieldName>
</dependency>
<children>
<entityParameter>
<name>ChecklistId_param</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentryuid_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>ChecklistEntryType_param</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/checklistentrytype_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>ObjectRowId_param</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/objectrowid_param/valueProcess.js</valueProcess>
</entityParameter>
<entityParameter>
<name>ObjectType_param</name>
<valueProcess>%aditoprj%/entity/ChecklistEntry_entity/entityfields/checklistentryvalues/children/objecttype_param/valueProcess.js</valueProcess>
</entityParameter>
</children>
</entityConsumer>
</entityFields>
<recordContainers>
<dbRecordContainer>
<name>db</name>
<conditionProcess>%aditoprj%/entity/ChecklistEntry_entity/recordcontainers/db/conditionProcess.js</conditionProcess>
<alias>Data_alias</alias>
<recordFieldMappings>
<dbRecordFieldMapping>
<name>CHECKLISTENTRYID.value</name>
<recordfield>CHECKLISTENTRY.CHECKLISTENTRYID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DATE_EDIT.value</name>
<recordfield>CHECKLISTENTRY.DATE_EDIT</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DATE_NEW.value</name>
<recordfield>CHECKLISTENTRY.DATE_NEW</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>TITLE.value</name>
<recordfield>CHECKLISTENTRY.TITLE</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>TYPE.value</name>
<recordfield>CHECKLISTENTRY.TYPE</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>USER_EDIT.value</name>
<recordfield>CHECKLISTENTRY.USER_EDIT</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>USER_NEW.value</name>
<recordfield>CHECKLISTENTRY.USER_NEW</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>CHECKLIST_ID.value</name>
<recordfield>CHECKLISTENTRY.CHECKLIST_ID</recordfield>
</dbRecordFieldMapping>
</recordFieldMappings>
<linkInformation>
<linkInformation>
<name>65224b99-e70c-49fb-955e-ee5bca837d6c</name>
<tableName>CHECKLISTENTRY</tableName>
<primaryKey>CHECKLISTENTRYID</primaryKey>
<isUIDTable v="true" />
<readonly v="false" />
</linkInformation>
</linkInformation>
</dbRecordContainer>
</recordContainers>
</entity>
import("system.result");
import("system.vars");
result.string(vars.get("$param.ChecklistUid_param"));
\ No newline at end of file
import("system.result");
import("system.vars");
result.string(vars.get("$field.TYPE"));
\ No newline at end of file
import("system.result");
import("system.vars");
result.string(vars.get("$field.CHECKLISTENTRYID"));
\ No newline at end of file
import("system.vars");
import("system.result");
import("system.neon");
if (vars.get("$sys.operatingstate") == neon.OPERATINGSTATE_EDIT)
{
result.string(vars.get("$sys.date"));
}
\ No newline at end of file
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