Skip to content
Snippets Groups Projects
Commit d4e65b44 authored by Sebastian Listl's avatar Sebastian Listl :speech_balloon:
Browse files

merged origin/2020.2.0 into 2020.2

parents 83fa304f 4c99abbc
No related branches found
No related tags found
No related merge requests found
...@@ -19,10 +19,10 @@ var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumn ...@@ -19,10 +19,10 @@ var colNamesCampaignParticipantLog = CampaignUtils.getParticipantLogInsertColumn
if(participantRowIds != null && participantRowIds.length > 0) if(participantRowIds != null && participantRowIds.length > 0)
{ {
let contactIdsToHandle = participantRowIds; var contactIdsToHandle = participantRowIds;
if(isUpdate == "false") if(isUpdate == "false")
contactIdsToHandle = vars.get("$field.campaignparticipantContactIds"); contactIdsToHandle = JSON.parse(vars.get("$field.campaignparticipantContactIds"));
_handleRowIds(contactIdsToHandle, campaignId); _handleRowIds(contactIdsToHandle, campaignId);
} }
...@@ -37,13 +37,13 @@ if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentC ...@@ -37,13 +37,13 @@ if (!vars.exists("$param.currentCampaignId_param") || !vars.get("$param.currentC
function _handleCondition(pCampaignId, pTargetTableName, pCondition) function _handleCondition(pCampaignId, pTargetTableName, pCondition)
{ {
let contactIdsToHandle = []; var contactIdsToHandle = [];
var contextComingFrom = "Person";
let useRightJoinToGetOrgs = "false";
if(pTargetTableName == "ORGANISATION") if(pTargetTableName == "ORGANISATION")
{ {
useRightJoinToGetOrgs = "true"; pCondition += " and PERSON.PERSONID is NULL";
pCondition += " and PERSON.PERSONID is NULL" contextComingFrom = "Organisation";
} }
/* /*
...@@ -55,10 +55,10 @@ function _handleCondition(pCampaignId, pTargetTableName, pCondition) ...@@ -55,10 +55,10 @@ function _handleCondition(pCampaignId, pTargetTableName, pCondition)
*/ */
if(isUpdate == "true") if(isUpdate == "true")
{ {
contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs) contactIdsToHandle = CampaignUtils.GetContactIdsInCampaignByCondition(pCampaignId, pCondition);
} }
else else
contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, useRightJoinToGetOrgs); contactIdsToHandle = CampaignUtils.GetContactIdsNotInCampaignByCondition(pCampaignId, pCondition, contextComingFrom);
_handleRowIds(contactIdsToHandle, pCampaignId); _handleRowIds(contactIdsToHandle, pCampaignId);
} }
...@@ -75,7 +75,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ...@@ -75,7 +75,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId)
"DATE_EDIT" "DATE_EDIT"
]; ];
let oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID") var oldSteps = newSelect("CAMPAIGNPARTICIPANTID, CAMPAIGNSTEP_ID")
.from("CAMPAIGNPARTICIPANT") .from("CAMPAIGNPARTICIPANT")
.whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN()) .whereIfSet("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds, SqlBuilder.IN())
.and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId)
...@@ -98,28 +98,28 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ...@@ -98,28 +98,28 @@ function _handleRowIds(pParticipantRowIds, pCampaignId)
]; ];
} }
let statementArray = []; var statementArray = [];
let logArray = []; var logArray = [];
for (let participant in pParticipantRowIds) for (var participant in pParticipantRowIds)
{ {
let campaignParticipantLogId = util.getNewUUID(); var campaignParticipantLogId = util.getNewUUID();
var valsCampaignParticipantLog;
if(isUpdate == "true") if(isUpdate == "true")
{ {
let oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || ""; var oldCampaignStepId = oldStepIds[pParticipantRowIds[participant]] || "";
let updatedValues = [ var updatedValues = [
newCampaignStepId, newCampaignStepId,
vars.get("$sys.user"), vars.get("$sys.user"),
vars.get("$sys.date") vars.get("$sys.date")
]; ];
let condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant]) var condition = newWhere("CAMPAIGNPARTICIPANT.CONTACT_ID", pParticipantRowIds[participant])
.and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId) .and("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId)
.or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]); .or("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", pParticipantRowIds[participant]);
let valsCampaignParticipantLog = [ valsCampaignParticipantLog = [
campaignParticipantLogId, campaignParticipantLogId,
campaignId, campaignId,
newCampaignStepId, newCampaignStepId,
...@@ -134,9 +134,9 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ...@@ -134,9 +134,9 @@ function _handleRowIds(pParticipantRowIds, pCampaignId)
} }
else else
{ {
let campaignParticipantId = util.getNewUUID(); var campaignParticipantId = util.getNewUUID();
let valsCampaignParticipant = [ var valsCampaignParticipant = [
campaignParticipantId, campaignParticipantId,
pParticipantRowIds[participant], pParticipantRowIds[participant],
campaignId, campaignId,
...@@ -145,7 +145,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ...@@ -145,7 +145,7 @@ function _handleRowIds(pParticipantRowIds, pCampaignId)
vars.get("$sys.date") vars.get("$sys.date")
]; ];
let valsCampaignParticipantLog = [ valsCampaignParticipantLog = [
campaignParticipantLogId, campaignParticipantLogId,
campaignId, campaignId,
newCampaignStepId, newCampaignStepId,
...@@ -169,6 +169,4 @@ function _handleRowIds(pParticipantRowIds, pCampaignId) ...@@ -169,6 +169,4 @@ function _handleRowIds(pParticipantRowIds, pCampaignId)
if(logArray.length > 0) if(logArray.length > 0)
db.inserts(logArray); db.inserts(logArray);
neon.refreshAll();
} }
\ No newline at end of file
...@@ -5,4 +5,11 @@ import("system.vars"); ...@@ -5,4 +5,11 @@ import("system.vars");
if (vars.get("$sys.validationerrors")) if (vars.get("$sys.validationerrors"))
result.string(neon.COMPONENTSTATE_DISABLED); result.string(neon.COMPONENTSTATE_DISABLED);
else else
result.string(neon.COMPONENTSTATE_EDITABLE); {
\ No newline at end of file var contactCount = JSON.parse(vars.get("$field.campaignparticipantContactIds")).length;
if (contactCount == 0)
result.string(neon.COMPONENTSTATE_DISABLED);
else
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
...@@ -22,15 +22,17 @@ if(vars.get("$field.CAMPAIGN_ID")) ...@@ -22,15 +22,17 @@ if(vars.get("$field.CAMPAIGN_ID"))
else if(comingfrom == "Person") else if(comingfrom == "Person")
filteredContactIds = FilterViewActionUtils.contactIdsFilter(selection) filteredContactIds = FilterViewActionUtils.contactIdsFilter(selection)
contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), selection); contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), selection, comingfrom);
} }
else if(isUpdate) else if(isUpdate)
{ {
if (vars.get("$param.campaignParticipantsCondition_param")) if (vars.get("$param.campaignParticipantsCondition_param"))
{ {
contactIds = CampaignUtils.GetContactIdsInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition, false); var contactFilterCondition = JSON.parse(vars.get("$param.campaignParticipantsCondition_param")).condition;
} else{ contactIds = CampaignUtils.GetContactIdsNotInCampaignByCondition(vars.get("$field.CAMPAIGN_ID"), contactFilterCondition, comingfrom);
}
else
{
contactIds = selection; contactIds = selection;
} }
} }
......
...@@ -1293,13 +1293,17 @@ ...@@ -1293,13 +1293,17 @@
</aggregateFieldDbMapping> </aggregateFieldDbMapping>
<aggregateFieldDbMapping> <aggregateFieldDbMapping>
<name>COUNT_aggregate.value</name> <name>COUNT_aggregate.value</name>
<recordfield>OFFER.OFFER_ID</recordfield> <recordfield>OFFER.OFFERID</recordfield>
<aggregateType>COUNT</aggregateType> <aggregateType>COUNT</aggregateType>
</aggregateFieldDbMapping> </aggregateFieldDbMapping>
<aggregateFieldDbMapping> <aggregateFieldDbMapping>
<name>PROBABILITY_aggregate.value</name> <name>PROBABILITY_aggregate.value</name>
<expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js</expression> <expression>%aditoprj%/entity/Offer_entity/recordcontainers/db/recordfieldmappings/probability_aggregate.value/expression.js</expression>
</aggregateFieldDbMapping> </aggregateFieldDbMapping>
<dbRecordFieldMapping>
<name>OFFER_ID.value</name>
<recordfield>OFFER.OFFER_ID</recordfield>
</dbRecordFieldMapping>
</recordFieldMappings> </recordFieldMappings>
<filterExtensions> <filterExtensions>
<filterExtensionSet> <filterExtensionSet>
......
...@@ -7272,6 +7272,18 @@ ...@@ -7272,6 +7272,18 @@
<entry> <entry>
<key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key>
</entry> </entry>
<entry>
<key>Count Chart</key>
</entry>
<entry>
<key>Sum Chart</key>
</entry>
<entry>
<key>Probability Chart</key>
</entry>
<entry>
<key>Probability in %</key>
</entry>
</keyValueMap> </keyValueMap>
<font name="Dialog" style="0" size="11" /> <font name="Dialog" style="0" size="11" />
<sqlModels> <sqlModels>
......
...@@ -9646,6 +9646,22 @@ Bitte Datumseingabe prüfen</value> ...@@ -9646,6 +9646,22 @@ Bitte Datumseingabe prüfen</value>
<key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> <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>
<entry>
<key>Count Chart</key>
<value>Anzahl Diagramm</value>
</entry>
<entry>
<key>Sum Chart</key>
<value>Summen Diagramm</value>
</entry>
<entry>
<key>Probability Chart</key>
<value>Wahrscheinlichkeit Diagramm</value>
</entry>
<entry>
<key>Probability in %</key>
<value>Wahrscheinlichkeit in %</value>
</entry>
</keyValueMap> </keyValueMap>
<font name="Dialog" style="0" size="11" /> <font name="Dialog" style="0" size="11" />
</language> </language>
...@@ -7353,6 +7353,18 @@ ...@@ -7353,6 +7353,18 @@
<entry> <entry>
<key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key> <key>Mailbridge failed: user '%0' is unknown, contact an administrator.</key>
</entry> </entry>
<entry>
<key>Count Chart</key>
</entry>
<entry>
<key>Sum Chart</key>
</entry>
<entry>
<key>Probability Chart</key>
</entry>
<entry>
<key>Probability in %</key>
</entry>
</keyValueMap> </keyValueMap>
<font name="Dialog" style="0" size="11" /> <font name="Dialog" style="0" size="11" />
</language> </language>
...@@ -140,7 +140,12 @@ ...@@ -140,7 +140,12 @@
<name>DynamicMultiDataChartCount</name> <name>DynamicMultiDataChartCount</name>
<chartType>COLUMN</chartType> <chartType>COLUMN</chartType>
<yAxisLabel>Count</yAxisLabel> <yAxisLabel>Count</yAxisLabel>
<shareParent v="false" />
<entityField>#ENTITY</entityField> <entityField>#ENTITY</entityField>
<defaultGroupFields>
<element>STATUS</element>
</defaultGroupFields>
<title>Count Chart</title>
<columns> <columns>
<neonDynamicMultiDataChartColumn> <neonDynamicMultiDataChartColumn>
<name>4bbc9650-47fd-4a59-8e1e-bb60ceb85795</name> <name>4bbc9650-47fd-4a59-8e1e-bb60ceb85795</name>
...@@ -153,7 +158,12 @@ ...@@ -153,7 +158,12 @@
<name>DynamicMultiDataChartSum</name> <name>DynamicMultiDataChartSum</name>
<chartType>COLUMN</chartType> <chartType>COLUMN</chartType>
<yAxisLabel>Total in euros</yAxisLabel> <yAxisLabel>Total in euros</yAxisLabel>
<shareParent v="false" />
<entityField>#ENTITY</entityField> <entityField>#ENTITY</entityField>
<defaultGroupFields>
<element>STATUS</element>
</defaultGroupFields>
<title>Sum Chart</title>
<columns> <columns>
<neonDynamicMultiDataChartColumn> <neonDynamicMultiDataChartColumn>
<name>e5d14506-5205-43d0-89cb-416bf6debd25</name> <name>e5d14506-5205-43d0-89cb-416bf6debd25</name>
...@@ -162,5 +172,23 @@ ...@@ -162,5 +172,23 @@
</neonDynamicMultiDataChartColumn> </neonDynamicMultiDataChartColumn>
</columns> </columns>
</dynamicMultiDataChartViewTemplate> </dynamicMultiDataChartViewTemplate>
<dynamicMultiDataChartViewTemplate>
<name>DynamicMultiDataChartProb</name>
<chartType>COLUMN</chartType>
<yAxisLabel>Probability in %</yAxisLabel>
<shareParent v="false" />
<entityField>#ENTITY</entityField>
<defaultGroupFields>
<element>STATUS</element>
</defaultGroupFields>
<title>Probability Chart</title>
<columns>
<neonDynamicMultiDataChartColumn>
<name>e5d14506-5205-43d0-89cb-416bf6debd25</name>
<entityField>PROBABILITY</entityField>
<aggregateEntityField>PROBABILITY_aggregate</aggregateEntityField>
</neonDynamicMultiDataChartColumn>
</columns>
</dynamicMultiDataChartViewTemplate>
</children> </children>
</neonView> </neonView>
...@@ -520,37 +520,39 @@ CampaignUtils.GetContactIdsNotInCampaignByRowIds = function(pCampaignId, pPartic ...@@ -520,37 +520,39 @@ CampaignUtils.GetContactIdsNotInCampaignByRowIds = function(pCampaignId, pPartic
* @param {String} pCampaignId <p> * @param {String} pCampaignId <p>
* The id of the campaign.<br> * The id of the campaign.<br>
* @param {String} pCondition (optional) <p> * @param {String} pCondition (optional) <p>
* An condition which could used to<br> * An condition which is used to limit the search contact results.<br>
* limit the search result.<br> * @param {String} [pOrigin=Organisation] <br/>
* @param {Boolean} pRightJoinContacts <p> * id from which context we are coming from, e.g. "Person"
* Case if its true, a prefix will used<br>
* to do a right join.<br>
* @return {String[]} <p> * @return {String[]} <p>
* The contact ids they arent in the campaign.<br> * The contact ids they arent in the campaign.<br>
*/ */
CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts) CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCondition, pOrigin)
{ {
let query = newSelect("CONTACT.CONTACTID").from("PERSON"); var origin = pOrigin || "Organisation";
//subselect for excluding entries that are already in the campaign
var subselect = newSelect("CAMPAIGNPARTICIPANT.CONTACT_ID") var subselect = newSelect("CAMPAIGNPARTICIPANT.CONTACT_ID")
.from("CAMPAIGNPARTICIPANT") .from("CAMPAIGNPARTICIPANT")
.where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId); .where("CAMPAIGNPARTICIPANT.CAMPAIGN_ID", pCampaignId);
if (pRightJoinContacts == "true")
query.rightJoin("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID");
else
query.join("CONTACT", "CONTACT.PERSON_ID = PERSON.PERSONID");
if(pCondition != "")
subselect = newSelect("CAMPAIGNPARTICIPANT.CONTACT_ID")
.from("CAMPAIGNPARTICIPANT")
.where(pCondition);
var query = newSelect("CONTACT.CONTACTID")
.from("CONTACT");
if (origin == "Person")
query.leftJoin("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID");
query.join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID") query.join("ORGANISATION", "ORGANISATION.ORGANISATIONID = CONTACT.ORGANISATION_ID")
.leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID") .leftJoin("ADDRESS", "ADDRESS.ADDRESSID = CONTACT.ADDRESS_ID")
.where("CONTACT.CONTACTID", .where("CONTACT.CONTACTID",
subselect subselect
, SqlBuilder.NOT_IN() , SqlBuilder.NOT_IN()
); );
if (origin == "Organisation")
query.and("CONTACT.PERSON_ID is null");
//pCondition is always a contact related condition string and not a campaignparticipant related condition
if(pCondition != "")
query.and(pCondition);
return query.arrayColumn(); return query.arrayColumn();
} }
...@@ -564,14 +566,11 @@ CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCon ...@@ -564,14 +566,11 @@ CampaignUtils.GetContactIdsNotInCampaignByCondition = function(pCampaignId, pCon
* @param {String} pCondition <p> * @param {String} pCondition <p>
* The condition which shall be used, to<br> * The condition which shall be used, to<br>
* limit the search result.<br> * limit the search result.<br>
* @param {Boolean} [pRightJoinContacts=false] <p>
* Currently not used.<br>
* <p>
* @return {String[]} <p> * @return {String[]} <p>
* The contact ids which are in the given<br> * The contact ids which are in the given<br>
* campaign.<br> * campaign.<br>
*/ */
CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition, pRightJoinContacts) CampaignUtils.GetContactIdsInCampaignByCondition = function(pCampaignId, pCondition)
{ {
let query = newSelect("CONTACT.CONTACTID").from("CONTACT"); let query = newSelect("CONTACT.CONTACTID").from("CONTACT");
......
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