Skip to content
Snippets Groups Projects
Commit 3029b97c authored by Benjamin Ulrich's avatar Benjamin Ulrich :speech_balloon:
Browse files

Merge branch '2021.0_checklistcontribimpl' into '2021.0'

2021.0 checklistcontribimpl

See merge request xrm/basic!850
parents 16080bd8 507d6cc1
No related branches found
No related tags found
No related merge requests found
Showing
with 106 additions and 38 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="4aa51e9d-499d-42e8-9cfe-dda36abaa5d0">
<addColumn tableName="CHECKLISTENTRYVALUE">
<column name="DONEUSER" type="VARCHAR(63)"/>
</addColumn>
<addColumn tableName="CHECKLISTENTRYVALUE">
<column name="DONEDATE" type="TIMESTAMP"/>
</addColumn>
</changeSet>
</databaseChangeLog>
\ No newline at end of file
......@@ -9,4 +9,5 @@
<include relativeToChangelogFile="true" file="update_ab_attributeusage_salesprojectorigin.xml"/>
<include relativeToChangelogFile="true" file="change_phase_translation.xml"/>
<include relativeToChangelogFile="true" file="alter_salesproject_phase.xml"/>
<include relativeToChangelogFile="true" file="alter_checklistentryvalue.xml"/>
</databaseChangeLog>
\ No newline at end of file
......@@ -2,7 +2,7 @@
<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="d204fc4f-f670-4df6-86ae-8a57a1fce5ae">
<changeSet author="p.neub" id="b7fced70-0fae-4589-8bbf-c7139ebeb783">
<delete tableName="SALESPROJECTPHASEDEFINITION"/>
<delete tableName="CHECKLIST"/>
......@@ -10,7 +10,7 @@
<column name="PHASE" value="SALPROJPHASECONTACT"/>
<column name="CHECKLIST_ID" value="179dcc0d-e6fa-411d-b5ee-cb25b9735dbe"/>
<column name="DATE_EDIT"/>
<column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Contact'."/>
<column name="DESCRIPTION" value="Aufgaben für die Phase: 'Contact'."/>
<column name="USER_EDIT"/>
<column name="USER_NEW" value="Admin"/>
<column name="SALESPROJECTPHASEDEFINITIONID" value="176e43db-1665-49b9-9c35-5c5c0aa135f3"/>
......@@ -28,7 +28,7 @@
<column name="PHASE" value="SALPROJPHASELEAD"/>
<column name="CHECKLIST_ID" value="3d0f1d25-cee8-4b83-a0de-3fded83ff9c4"/>
<column name="DATE_EDIT"/>
<column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Lead'."/>
<column name="DESCRIPTION" value="Aufgaben für die Phase: 'Lead'."/>
<column name="USER_EDIT"/>
<column name="USER_NEW" value="Admin"/>
<column name="SALESPROJECTPHASEDEFINITIONID" value="d29dcde8-24b4-470a-8189-1e2b0d812daa"/>
......@@ -46,7 +46,7 @@
<column name="PHASE" value="SALPROJPHASEPROS"/>
<column name="CHECKLIST_ID" value="ecf50252-e0c2-4e7a-8cc6-078b5978d2c5"/>
<column name="DATE_EDIT"/>
<column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Prospect'."/>
<column name="DESCRIPTION" value="Aufgaben für die Phase: 'Prospect'."/>
<column name="USER_EDIT"/>
<column name="USER_NEW" value="Admin"/>
<column name="SALESPROJECTPHASEDEFINITIONID" value="d9605427-ba6b-42b2-8376-51e4ef654814"/>
......@@ -64,7 +64,7 @@
<column name="PHASE" value="SALPROJPHASEOFFER"/>
<column name="CHECKLIST_ID" value="0f95ce44-3b0d-417b-969f-f84897868558"/>
<column name="DATE_EDIT"/>
<column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Offer'."/>
<column name="DESCRIPTION" value="Aufgaben für die Phase: 'Offer'."/>
<column name="USER_EDIT"/>
<column name="USER_NEW" value="Admin"/>
<column name="SALESPROJECTPHASEDEFINITIONID" value="e8ff463f-692c-40a7-bafa-d168886700fd"/>
......@@ -82,7 +82,7 @@
<column name="PHASE" value="SALPROJPHASENEGO"/>
<column name="CHECKLIST_ID" value="cb0357c9-a222-4d78-b2c5-035fffe3bb51"/>
<column name="DATE_EDIT"/>
<column name="DESCRIPTION" value="Voraussetzungen für die Phase: 'Negotiation'."/>
<column name="DESCRIPTION" value="Aufgaben für die Phase: 'Negotiation'."/>
<column name="USER_EDIT"/>
<column name="USER_NEW" value="Admin"/>
<column name="SALESPROJECTPHASEDEFINITIONID" value="21011181-fe9f-4c6c-910e-344ce10e3fc1"/>
......
......@@ -96,6 +96,16 @@
<title>Automatically</title>
<contentType>BOOLEAN</contentType>
</entityField>
<entityField>
<name>DONEDATE</name>
<title>Done on</title>
<contentType>DATE</contentType>
<resolution>MINUTE</resolution>
</entityField>
<entityField>
<name>DONEUSER</name>
<title>Done by</title>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
......@@ -115,6 +125,12 @@
<jDitoRecordFieldMapping>
<name>CHECKLISTENTRY_ID.displayValue</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>DONEUSER.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>DONEDATE.value</name>
</jDitoRecordFieldMapping>
<jDitoRecordFieldMapping>
<name>IS_FULFILLED.value</name>
</jDitoRecordFieldMapping>
......
......@@ -3,12 +3,18 @@ import("Sql_lib");
import("system.vars");
import("system.neon");
var fulfilledValue = Utils.toBoolean(vars.get("$field.IS_FULFILLED")) ? "0" : "1";
var isFulfilled = Utils.toBoolean(vars.get("$field.IS_FULFILLED"));
var fulfilledValue = isFulfilled ? "0" : "1";
var fulfilledUser = isFulfilled ? "" : vars.get("$sys.user");
var fulfilledDate = isFulfilled ? "" : vars.get("$sys.date");
var cond = newWhere("CHECKLISTENTRYVALUE.CHECKLISTENTRYVALUEID", vars.get("$field.UID")).toString();
if(Utils.toBoolean(newSelect("count(*)").from("CHECKLISTENTRYVALUE").where(cond).cell()))
{
newWhere(cond).updateFields({
DONEUSER: fulfilledUser,
DONEDATE: fulfilledDate,
IS_FULFILLED: fulfilledValue
}, "CHECKLISTENTRYVALUE");
}
......@@ -17,6 +23,8 @@ else
new SqlBuilder().insertFields({
CHECKLISTENTRYVALUEID: vars.get("$field.UID"),
CHECKLISTENTRY_ID: vars.get("$field.CHECKLISTENTRY_ID"),
DONEUSER: fulfilledUser,
DONEDATE: fulfilledDate,
IS_FULFILLED: fulfilledValue,
OBJECT_TYPE: vars.get("$field.OBJECT_TYPE"),
OBJECT_ROWID: vars.get("$field.OBJECT_ROWID"),
......
......@@ -10,6 +10,8 @@ var data = newSelect([
"CHECKLISTENTRY.AUTO",
"CHECKLISTENTRY.CHECKLISTENTRYID",
"CHECKLISTENTRY.TITLE",
"CHECKLISTENTRYVALUE.DONEUSER",
"CHECKLISTENTRYVALUE.DONEDATE",
"CHECKLISTENTRYVALUE.IS_FULFILLED",
"CHECKLISTENTRYVALUE.OBJECT_ROWID",
"CHECKLISTENTRYVALUE.OBJECT_TYPE",
......@@ -29,17 +31,17 @@ var data = newSelect([
for(let i = 0; i < data.length; i++)
{
data[i][0] = data[i][0] || util.getNewUUID();
data[i][4] = data[i][4] || "0";
data[i][5] = data[i][5] || vars.get("$param.ObjectRowId_param");
data[i][6] = data[i][6] || vars.get("$param.ObjectType_param");
data[i][8] = data[i][8] || datetime.date();
data[i][10] = data[i][10] || vars.get("$sys.user");
data[i][6] = data[i][6] || "0";
data[i][7] = data[i][7] || vars.get("$param.ObjectRowId_param");
data[i][8] = data[i][8] || vars.get("$param.ObjectType_param");
data[i][10] = data[i][10] || datetime.date();
data[i][12] = data[i][12] || vars.get("$sys.user");
if(parseInt(data[i][1]))
{
var checklistEntry = $ChecklistEntryRegistry[data[i][3]]();
data[i][3] = checklistEntry.title;
data[i][4] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param")) ? "1" : "0";
data[i][6] = checklistEntry.verifierFn(vars.get("$param.ObjectRowId_param")) ? "1" : "0";
}
}
......
......@@ -2,9 +2,7 @@ import("system.translate");
import("system.result");
import("system.vars");
var auto = vars.get("$field.AUTO");
if(auto == 1)
if(vars.get("$this.value") == 1)
{
result.string(translate.text("Automatically"));
}
......
import("Util_lib");
import("system.result");
import("system.vars");
import("system.translate");
......@@ -6,7 +7,7 @@ import("ChecklistEntryRegistry_basic");
var title = vars.get("$field.TITLE");
if (vars.get("$field.AUTO") == 1)
if (Utils.toBoolean(vars.get("$field.AUTO")))
{
result.string($ChecklistEntryRegistry[title]().title);
}
......
import("system.result");
import("system.vars");
import("system.result");
import("Sql_lib");
var checklistId = vars.get("$param.ChecklistUid_param");
var cond = newWhere();
if (checklistId)
{
cond.and("CHECKLISTENTRY.CHECKLIST_ID", checklistId);
}
else
{
cond.and("1 = 2");
}
result.string(cond.toString());
\ No newline at end of file
result.string(newWhereIfSet("CHECKLISTENTRY.CHECKLIST_ID", vars.get("$param.ChecklistUid_param")));
......@@ -62,6 +62,7 @@
</entityProvider>
<entityConsumer>
<name>ChecklistEntries</name>
<refreshParent v="true" />
<dependency>
<name>dependency</name>
<entityName>ChecklistEntry_entity</entityName>
......
......@@ -11207,6 +11207,34 @@ Bitte Datumseingabe prüfen</value>
<entry>
<key>Starts the serverprocess manually, which will recalculate all classifications from scratch. Only do this after e.g importing data from elsewhere where the outdated flag couldn't been set correctly. Since this can take some time.</key>
</entry>
<entry>
<key>Done by</key>
<value>Erledigt von</value>
</entry>
<entry>
<key>Done on</key>
<value>Erledigt am</value>
</entry>
<entry>
<key>Source / origin of the generation of contacts</key>
<value>Quelle / Herkunft der Kontaktgenerierung</value>
</entry>
<entry>
<key>Prioritization based on segmentation parameters</key>
<value>Priorisierung basierend auf Segmentierungsparametern</value>
</entry>
<entry>
<key>First customer conversation</key>
<value>Erstes Kundengespräch</value>
</entry>
<entry>
<key>Project team</key>
<value>Projektteam</value>
</entry>
<entry>
<key>Further customer meetings</key>
<value>Weitere Kundengespräche</value>
</entry>
<entry>
<key>Code</key>
</entry>
......
......@@ -30,6 +30,14 @@
<name>56a78ef9-dcef-4d1c-b30d-5c89f38611ec</name>
<entityField>CHECKLISTENTRY_ID</entityField>
</neonTableColumn>
<neonTableColumn>
<name>c3cf3919-e3ab-4595-9408-de061dc81883</name>
<entityField>DONEUSER</entityField>
</neonTableColumn>
<neonTableColumn>
<name>ca57e40c-cf83-4c6c-91f9-4395f6eb1141</name>
<entityField>DONEDATE</entityField>
</neonTableColumn>
</columns>
</tableViewTemplate>
</children>
......
......@@ -214,17 +214,21 @@ $ChecklistEntryRegistry.salesprojectRoleIntDist = function(){
return{
title: translate.text("Project team: \"Internal distribution\""),
verifierFn: function(pSalesprojectId){
var spRows = $ChecklistEntryRegistry._getRows(pSalesprojectId, "Salesproject_entity", ["SALESPROJECTID", "MST_TEAM_ID", "PROJECTCODE"], null, "NoPhaseRequirementLoading");
var memberRows = $ChecklistEntryRegistry._getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]], ["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
var memberRows = $ChecklistEntryRegistry._getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]],
["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
var roles = ["MEMROLEINTSALES", "MEMROLEINTRESPONSIBLE"];
for (let i = 0; i < memberRows.length; i++)
{
if(memberRows[i]["MEMBERROLE"] == $KeywordRegistry.memberRoleIntenDistrib())
var role = memberRows[i]["MEMBERROLE"];
var index = roles.indexOf(role);
if (index !== -1)
{
return true;
roles.splice(index, 1);
}
}
return false;
return roles.length == 0;
}
};
}
......@@ -421,6 +425,7 @@ $ChecklistEntryRegistry.salesprojectRoleProjectteam = function(){
var memberRows = $ChecklistEntryRegistry._getRows(null, "Member_entity", ["MEMBERROLE"], [["EnableMSTeams_param", spRows[0]["MST_TEAM_ID"]],
["ObjectRowId_param", spRows[0]["SALESPROJECTID"]]], "WithDistrictResponsibles");
var roles = ["MEMROLEINITIATOR", "MEMROLEDECISIONMAKER", "MEMROLEADVISE", "MEMROLEUSER", "MEMROLEEXSALEMANAG"];
var halfLength = Math.floor(roles.length / 2);
for (let i = 0; i < memberRows.length; i++)
{
......@@ -431,7 +436,7 @@ $ChecklistEntryRegistry.salesprojectRoleProjectteam = function(){
roles.splice(index, 1);
}
}
return roles.length == 0;
return roles.length <= halfLength;
}
};
}
......
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