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

Merge branch 'cm_dt_1079904_serial_letter_mail-360degree' into '2021.1'

Cm dt 1079904 serial letter mail 360degree

See merge request xrm/basic!1049
parents e2bfae12 8f07c713
No related branches found
No related tags found
No related merge requests found
Showing
with 141 additions and 26 deletions
......@@ -28,4 +28,4 @@
<include relativeToChangelogFile="true" file="basic/workflows/changelog.xml" context="workflow"/>
<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>
</databaseChangeLog>
\ No newline at end of file
</databaseChangeLog>
......@@ -18,7 +18,19 @@ var res = {
"parentField":"TASK_TASKID",
"contactIdField":"OBJECT_ROWID"
},
"Advertising": {}
"Advertising": {},
"Bulkmail": {
"subContext":"BulkmailRecipient",
"childField":"BULKMAIL_ID",
"parentField":"BULKMAILID",
"contactIdField":"CONTACT_ID"
},
"SerialLetter": {
"subContext":"LetterRecipient",
"childField":"SERIALLETTER_ID",
"parentField":"SERIALLETTERID",
"contactIdField":"CONTACT_ID"
}
}
result.string(JSON.stringify(res))
\ No newline at end of file
......@@ -28,6 +28,18 @@ var res = {
},
"Advertising": {
"contactIdField":"CONTACT_ID"
},
"Bulkmail": {
"subContext":"BulkmailRecipient",
"childField":"BULKMAIL_ID",
"parentField":"BULKMAILID",
"contactIdField":"CONTACT_ID"
},
"SerialLetter": {
"subContext":"LetterRecipient",
"childField":"SERIALLETTER_ID",
"parentField":"SERIALLETTERID",
"contactIdField":"CONTACT_ID"
}
};
......
import("Util_lib");
import("system.translate");
import("system.result");
import("system.vars");
import("Util_lib");
var validIdCount = (Utils.parseJSON(vars.get("$field.validContactIds")) || []).length;
var message = "";
var validIdCount = (Utils.parseJSON(vars.get("$field.validContactIds")) || []).length;
if (!vars.get("$sys.validationerrors"))
{
if (validIdCount == 0)
......@@ -13,8 +14,18 @@ if (!vars.get("$sys.validationerrors"))
}
else
{
message = translate.withArguments("%0 new recipients will be added to the bulk mail.", [validIdCount]);
var notAdded = vars.get("$field.notAddedCount")
message = translate.withArguments("%0 new recipients will be added to the bulk mail.", [validIdCount]);
if (validIdCount == 1)
{
message = translate.withArguments("%0 recipient will be added to the bulk mail.", [validIdCount]);
}
else
{
message = translate.withArguments("%0 new recipients will be added to the bulk mail.", [validIdCount]);
}
if (notAdded > 0)
{
message += "\n" + translate.withArguments("%0 of the chosen records are already recipients or don't have an e-mail set", [notAdded]);
......
......@@ -4,6 +4,7 @@
<title>Recipient</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/BulkMailRecipient_entity/documentation.adoc</documentation>
<icon>VAADIN:AT</icon>
<siblings>
<element>Communication_entity</element>
</siblings>
......
......@@ -10,7 +10,10 @@ var excludeWithCommunicationRejection = Utils.toBoolean(vars.get("$param.Exclude
var excludedStatus = Utils.parseJSON(vars.get("$param.ExcludedStatus_param"));
var isTestMail = Utils.toBoolean(vars.get("$param.IsTestMail_param"));
var condition = newWhere("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param");
var condition = newWhere()
condition.andIfSet("BULKMAILRECIPIENT.BULKMAIL_ID", "$param.BulkMailId_param");
if (isTestMail)
{
condition.and("BULKMAILRECIPIENT.IS_TEST_RECIPIENT", 1);
......
......@@ -8,6 +8,7 @@
<grantUpdateProcess>%aditoprj%/entity/BulkMail_entity/grantUpdateProcess.js</grantUpdateProcess>
<grantDeleteProcess>%aditoprj%/entity/BulkMail_entity/grantDeleteProcess.js</grantDeleteProcess>
<contentTitleProcess>%aditoprj%/entity/BulkMail_entity/contentTitleProcess.js</contentTitleProcess>
<contentDescriptionProcess>%aditoprj%/entity/BulkMail_entity/contentDescriptionProcess.js</contentDescriptionProcess>
<afterUiInit>%aditoprj%/entity/BulkMail_entity/afterUiInit.js</afterUiInit>
<iconId>VAADIN:AT</iconId>
<titlePlural>Bulk mails</titlePlural>
......@@ -382,6 +383,13 @@
<fieldName>#PROVIDER</fieldName>
</dependency>
</entityConsumer>
<entityField>
<name>ACTIVE</name>
</entityField>
<entityField>
<name>DATE_NEW</name>
<valueProcess>%aditoprj%/entity/BulkMail_entity/entityfields/date_new/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>recipientCount</name>
<title>Recipients</title>
......@@ -587,6 +595,10 @@
<recordfield>BULKMAIL.INTEREST_ID</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>ACTIVE.value</name>
<expression>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>deliveredMailCount.value</name>
<expression>%aditoprj%/entity/BulkMail_entity/recordcontainers/db/recordfieldmappings/deliveredmailcount.value/expression.js</expression>
......
import("Keyword_lib");
import("system.result");
import("system.vars");
result.string(KeywordUtils.getViewValue("BulkMailStatus", vars.get("$field.STATUS")));
\ No newline at end of file
import("system.result");
import("system.vars");
if (vars.get("$this.value") != null)
{
result.string(vars.get("$sys.date"));
}
\ No newline at end of file
import("system.result");
result.string("true");
\ No newline at end of file
......@@ -3,6 +3,7 @@
<name>LetterRecipient_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<documentation>%aditoprj%/entity/LetterRecipient_entity/documentation.adoc</documentation>
<icon>VAADIN:ENVELOPE</icon>
<siblings>
<element>Address_entity</element>
</siblings>
......
......@@ -2,4 +2,7 @@ import("system.vars");
import("system.result");
import("Sql_lib");
result.string(newWhere("LETTERRECIPIENT.SERIALLETTER_ID", "$param.SerialLetterId_param").toString());
\ No newline at end of file
var cond = newWhere();
cond.andIfSet("LETTERRECIPIENT.SERIALLETTER_ID", "$param.SerialLetterId_param")
result.string(cond.toString());
\ No newline at end of file
......@@ -1145,9 +1145,9 @@
<name>addToBulkMailFromTable</name>
<title>Add to Bulkmail</title>
<onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isObjectAction v="true" />
<iconId>VAADIN:AT</iconId>
<state>EDITABLE</state>
<state>DISABLED</state>
<stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/stateProcess.js</stateProcess>
<tooltipProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/tooltipProcess.js</tooltipProcess>
</entityActionField>
......@@ -1155,8 +1155,9 @@
<name>addToSerialLetter</name>
<title>Add to serial letter</title>
<onActionProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtoserialletter/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isObjectAction v="true" />
<iconId>VAADIN:ENVELOPES</iconId>
<state>DISABLED</state>
<stateProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtoserialletter/stateProcess.js</stateProcess>
<tooltipProcess>%aditoprj%/entity/Organisation_entity/entityfields/filterviewactiongroup/children/addtoserialletter/tooltipProcess.js</tooltipProcess>
</entityActionField>
......
import("FilterViewAction_lib");
import("system.neon");
import("system.vars");
import("system.result");
var orgCount = vars.get("$sys.datarowcount");
var contactCount = vars.get("$sys.datarowcount");
var selection = vars.get("$sys.selection");
result.string(FilterViewActionUtils.getComponentStateByRowCount(orgCount));
\ No newline at end of file
if (contactCount > 0 || selection.length > 0)
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
import("FilterViewAction_lib");
import("system.neon");
import("system.vars");
import("system.result");
var contactCount = vars.get("$sys.datarowcount");
var selection = vars.get("$sys.selection");
result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
if (contactCount > 0 || selection.length > 0)
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
\ No newline at end of file
......@@ -1088,8 +1088,9 @@
<name>addToBulkMailFromTable</name>
<title>Add to Bulkmail</title>
<onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isObjectAction v="true" />
<iconId>VAADIN:AT</iconId>
<state>DISABLED</state>
<stateProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/stateProcess.js</stateProcess>
<tooltipProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtobulkmailfromtable/tooltipProcess.js</tooltipProcess>
</entityActionField>
......@@ -1098,8 +1099,9 @@
<title>Add to serial letter</title>
<onActionProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtoserialletter/onActionProcess.js</onActionProcess>
<isMenuAction v="true" />
<isObjectAction v="false" />
<isObjectAction v="true" />
<iconId>VAADIN:ENVELOPES</iconId>
<state>DISABLED</state>
<stateProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtoserialletter/stateProcess.js</stateProcess>
<tooltipProcess>%aditoprj%/entity/Person_entity/entityfields/filterviewactiongroup/children/addtoserialletter/tooltipProcess.js</tooltipProcess>
</entityActionField>
......
import("FilterViewAction_lib");
import("system.neon");
import("system.vars");
import("system.result");
var contactCount = vars.get("$sys.datarowcount");
var selection = vars.get("$sys.selection");
result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
if (contactCount > 0 || selection.length > 0)
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
import("FilterViewAction_lib");
import("system.neon");
import("system.vars");
import("system.result");
var contactCount = vars.get("$sys.datarowcount");
var selection = vars.get("$sys.selection");
result.string(FilterViewActionUtils.getComponentStateByRowCount(contactCount));
\ No newline at end of file
if (contactCount > 0 || selection.length > 0)
{
result.string(neon.COMPONENTSTATE_EDITABLE);
}
......@@ -2,20 +2,34 @@ import("system.translate");
import("system.result");
import("system.vars");
var count = vars.getString("$field.recipientcount")
var res = "";
var resNotAdded = "\n\
";
var resNotAdded = "\n";
var count = vars.getString("$field.recipientcount")
if (count && !vars.get("$sys.validationerrors"))
{
if (count == "0")
{
res = translate.text("No new recipients found that can be added to the serial letter.");
}
else
{
res = translate.withArguments("%0 new recipients will be added to the serial letter.", [count]);
var notAdded = vars.get("$field.notAddedRecipients")
var notAdded = vars.get("$field.notAddedRecipients");
if (count == 1)
{
res = translate.withArguments("%0 recipient will be added to the serial letter.", [count]);
}
else
{
res = translate.withArguments("%0 new recipients will be added to the serial letter.", [count]);
}
if (notAdded > 0)
{
resNotAdded += translate.withArguments("%0 of the chosen records are already recipients.", [notAdded]);
}
}
}
result.string(res + resNotAdded);
\ No newline at end of file
......@@ -7,6 +7,7 @@
<icon>VAADIN:ENVELOPES</icon>
<grantDeleteProcess>%aditoprj%/entity/SerialLetter_entity/grantDeleteProcess.js</grantDeleteProcess>
<contentTitleProcess>%aditoprj%/entity/SerialLetter_entity/contentTitleProcess.js</contentTitleProcess>
<contentDescriptionProcess>%aditoprj%/entity/SerialLetter_entity/contentDescriptionProcess.js</contentDescriptionProcess>
<onValidation>%aditoprj%/entity/SerialLetter_entity/onValidation.js</onValidation>
<iconId>VAADIN:ENVELOPE</iconId>
<titlePlural>Serial letters</titlePlural>
......@@ -195,6 +196,13 @@
<iconId>VAADIN:CURLY_BRACKETS</iconId>
<stateProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/openadminview/stateProcess.js</stateProcess>
</entityActionField>
<entityField>
<name>DATE_NEW</name>
<valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/date_new/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>ACTIVE</name>
</entityField>
</entityFields>
<recordContainers>
<dbRecordContainer>
......@@ -241,6 +249,10 @@
<name>STATUS.displayValue</name>
<expression>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/recordfieldmappings/status.displayvalue/expression.js</expression>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>ACTIVE.value</name>
<expression>%aditoprj%/entity/SerialLetter_entity/recordcontainers/db/recordfieldmappings/active.value/expression.js</expression>
</dbRecordFieldMapping>
</recordFieldMappings>
<linkInformation>
<linkInformation>
......
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