Skip to content
Snippets Groups Projects
Commit 1e0a7de0 authored by S.Listl's avatar S.Listl
Browse files

SerialLetterAddParticipants created

parent 9ee5da53
No related branches found
No related tags found
No related merge requests found
Showing
with 173 additions and 29 deletions
......@@ -113,6 +113,7 @@
</entityParameter>
<entityConsumer>
<name>AttributeUsages</name>
<stateProcess>%aditoprj%/entity/Attribute_entity/entityfields/attributeusages/stateProcess.js</stateProcess>
<dependency>
<name>dependency</name>
<entityName>AttributeUsage_entity</entityName>
......
import("system.result");
import("system.neon");
import("system.vars");
import("Attribute_lib");
var state = neon.COMPONENTSTATE_EDITABLE;
if (vars.get("$field.ATTRIBUTE_TYPE").trim() == $AttributeTypes.COMBOVALUE)
state = neon.COMPONENTSTATE_INVISIBLE;
result.string(state);
\ No newline at end of file
import("Bulkmail_lib");
import("KeywordRegistry_basic");
import("system.util");
import("system.db");
import("Sql_lib");
import("system.vars");
var contactIds = JSON.parse(vars.getString("$field.recipientContactIds"));
var bulkMailId = vars.get("$field.BULKMAIL_ID");
var columns = [
"BULKMAILRECIPIENTID",
"BULKMAIL_ID",
"CONTACT_ID",
"STATUS"
];
var inserts = [];
for (let i = 0, l = contactIds.length; i < l; i++)
{
inserts.push(["BULKMAILRECIPIENT", columns, null, [util.getNewUUID(), bulkMailId, contactIds[i], $KeywordRegistry.bulkMailRecipientStatus$pending()]]);
}
db.inserts(inserts);
BulkMailUtils.addRecipients(bulkMailId, contactIds);
import("Contact_lib");
import("system.translate");
import("system.result");
import("system.datetime");
import("KeywordRegistry_basic");
import("Sql_lib");
import("Entity_lib");
import("Bulkmail_lib");
import("system.db");
var query = SqlCondition.begin()
.andPrepare("CONTACT.CONTACTID", ProcessHandlingUtils.getOnValidationValue())
.andSqlCondition(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$mail()))
.buildSql("select count(*) = 0 from CONTACT", "1=2");
var noMails = db.cell(query) != "true";
if (noMails)
if (ContactUtils.hasCommRestriction(ProcessHandlingUtils.getOnValidationValue(), $KeywordRegistry.communicationMediumCampaign$mail()))
result.string(translate.text("The contact has an advertising ban for emails!"));
\ No newline at end of file
......@@ -10,15 +10,18 @@
</entityProvider>
<entityField>
<name>LETTERRECIPIENTID</name>
<searchable v="false" />
</entityField>
<entityField>
<name>CONTACT_ID</name>
<title>Contact</title>
<consumer>Contacts</consumer>
<linkedContextProcess>%aditoprj%/entity/LetterRecipient_entity/entityfields/contact_id/linkedContextProcess.js</linkedContextProcess>
<onValidation>%aditoprj%/entity/LetterRecipient_entity/entityfields/contact_id/onValidation.js</onValidation>
</entityField>
<entityProvider>
<name>SerialLetterRecipients</name>
<lookupIdfield>LETTERRECIPIENTID</lookupIdfield>
<targetContextField>TARGETCONTEXT</targetContextField>
<targetIdField>CONTACT_ID</targetIdField>
<dependencies>
......@@ -37,6 +40,7 @@
</entityParameter>
<entityField>
<name>SERIALLETTER_ID</name>
<searchable v="false" />
<valueProcess>%aditoprj%/entity/LetterRecipient_entity/entityfields/serialletter_id/valueProcess.js</valueProcess>
</entityField>
<entityConsumer>
......@@ -50,19 +54,24 @@
<entityField>
<name>ICON</name>
<contentType>IMAGE</contentType>
<searchable v="false" />
<valueProcess>%aditoprj%/entity/LetterRecipient_entity/entityfields/icon/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>ORGANISATION_ID</name>
<searchable v="false" />
</entityField>
<entityField>
<name>PERSON_ID</name>
<searchable v="false" />
</entityField>
<entityField>
<name>HASCOMMRESTRICTION</name>
<searchable v="false" />
</entityField>
<entityField>
<name>TARGETCONTEXT</name>
<searchable v="false" />
</entityField>
</entityFields>
<recordContainers>
......
import("Contact_lib");
import("system.translate");
import("system.result");
import("KeywordRegistry_basic");
import("Entity_lib");
if (ContactUtils.hasCommRestriction(ProcessHandlingUtils.getOnValidationValue(), $KeywordRegistry.communicationMediumCampaign$letter()))
result.string(translate.text("The contact has an advertising ban for letters!"));
\ No newline at end of file
......@@ -832,6 +832,14 @@ Usually this is used for filtering COMMUNICATION-entries by a specified contact
<onActionProcess>%aditoprj%/entity/Person_entity/entityfields/campaignactiongroup/children/addtobulkmailfromtable/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isSelectionAction v="true" />
<iconId>VAADIN:AT</iconId>
</entityActionField>
<entityActionField>
<name>addToSerialLetter</name>
<title>Add to serial letter</title>
<onActionProcess>%aditoprj%/entity/Person_entity/entityfields/campaignactiongroup/children/addtoserialletter/onActionProcess.js</onActionProcess>
<isObjectAction v="false" />
<isSelectionAction v="true" />
<iconId>VAADIN:ENVELOPES</iconId>
</entityActionField>
</children>
......
import("Bulkmail_lib");
import("system.vars");
import("system.neon");
if (vars.exists("$sys.selection"))
SerialLetterUtils.openAddRecipientView(vars.getString("$sys.selection"));
\ 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.9" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.9">
<name>SerialLetterAddRecipients_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
</entityProvider>
<entityField>
<name>SERIALLETTER_ID</name>
<title>Serial letter</title>
<consumer>SerialLetters</consumer>
</entityField>
<entityField>
<name>UID</name>
</entityField>
<entityField>
<name>recipientContactIds</name>
<valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcontactids/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>recipientCountMessage</name>
<valueProcess>%aditoprj%/entity/SerialLetterAddRecipients_entity/entityfields/recipientcountmessage/valueProcess.js</valueProcess>
</entityField>
<entityParameter>
<name>ContactIds_param</name>
<expose v="true" />
</entityParameter>
<entityConsumer>
<name>SerialLetters</name>
<dependency>
<name>dependency</name>
<entityName>SerialLetter_entity</entityName>
<fieldName>#PROVIDER</fieldName>
</dependency>
</entityConsumer>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<onInsert>%aditoprj%/entity/SerialLetterAddRecipients_entity/recordcontainers/jdito/onInsert.js</onInsert>
<recordFieldMappings>
<jDitoRecordFieldMapping>
<name>UID.value</name>
</jDitoRecordFieldMapping>
</recordFieldMappings>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("Contact_lib");
import("system.result");
import("Bulkmail_lib");
import("KeywordRegistry_basic");
import("system.util");
import("system.db");
import("Sql_lib");
import("system.vars");
var contactIds = JSON.parse(vars.getString("$param.ContactIds_param"));
var letterId = vars.get("$field.SERIALLETTER_ID");
var existsQuery = "not exists(select LETTERRECIPIENTID from LETTERRECIPIENT where LETTERRECIPIENT.CONTACT_ID = CONTACT.CONTACTID and # = ?)";
var query = SqlCondition.begin()
.andIn("CONTACT.CONTACTID", contactIds)
.andPrepare("LETTERRECIPIENT.SERIALLETTER_ID", letterId, existsQuery) //only add contacts that aren't already recipients
.andSqlCondition(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$letter(), true)) //check if there's a commrestriction
.buildSql("select CONTACTID from CONTACT");
contactIds = db.array(db.COLUMN, query);
result.string(JSON.stringify(contactIds));
import("system.translate");
import("system.result");
import("system.vars");
if (vars.get("$field.SERIALLETTER_ID"))
{
var count = JSON.parse(vars.getString("$field.recipientContactIds")).length;
result.string(translate.withArguments("%0 new recipients will be added to the serial letter.", [String(count)]));
}
\ No newline at end of file
import("Bulkmail_lib");
import("system.vars");
var contactIds = JSON.parse(vars.getString("$field.recipientContactIds"));
var letterId = vars.get("$field.SERIALLETTER_ID");
SerialLetterUtils.addRecipients(letterId, contactIds);
......@@ -4,10 +4,19 @@
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>VAADIN:ENVELOPES</icon>
<title>Serial letter</title>
<contentTitleProcess>%aditoprj%/entity/SerialLetter_entity/contentTitleProcess.js</contentTitleProcess>
<recordContainer>db</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
<dependencies>
<entityDependency>
<name>8cb1a355-eb91-414a-8860-0210b18bd1ba</name>
<entityName>SerialLetterAddRecipients_entity</entityName>
<fieldName>SerialLetters</fieldName>
<isConsumer v="false" />
</entityDependency>
</dependencies>
</entityProvider>
<entityActionField>
<name>downloadLetter</name>
......@@ -39,6 +48,8 @@
</entityConsumer>
<entityField>
<name>ICON</name>
<contentType>IMAGE</contentType>
<valueProcess>%aditoprj%/entity/SerialLetter_entity/entityfields/icon/valueProcess.js</valueProcess>
</entityField>
<entityConsumer>
<name>Templates</name>
......
import("system.vars");
import("system.result");
result.string(vars.get("$field.TITLE"));
\ No newline at end of file
import("KeywordRegistry_basic");
import("Contact_lib");
import("Sql_lib");
import("system.db");
import("system.neon");
......@@ -7,7 +9,8 @@ import("DocumentTemplate_lib");
var template = DocumentTemplate.loadTemplate(vars.get("$field.DOCUMENTTEMPLATE_ID"));
var contactIds = db.table(SqlCondition.begin()
.andPrepareVars("LETTERRECIPIENT.SERIALLETTER_ID", "$field.SERIALLETTERID")
.buildSql("select CONTACT_ID from LETTERRECIPIENT", "1=2")
.andSqlCondition(ContactUtils.getCommRestrictionCondition($KeywordRegistry.communicationMediumCampaign$letter(), true))
.buildSql("select CONTACT_ID from LETTERRECIPIENT join CONTACT on LETTERRECIPIENT.CONTACT_ID = CONTACT.CONTACTID", "1=2")
);
var document = template.getSerialLetterByContactIds(contactIds);
if (document)
......
import("system.result");
result.string("VAADIN:ENVELOPE");
\ No newline at end of file
......@@ -4611,6 +4611,9 @@
<entry>
<key>Remove recipients with advertising ban</key>
</entry>
<entry>
<key>Serial letter</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
<sqlModels>
......
......@@ -4660,6 +4660,9 @@
<entry>
<key>Remove recipients with advertising ban</key>
</entry>
<entry>
<key>Serial letter</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
<?xml version="1.0" encoding="UTF-8"?>
<neonContext xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.0" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonContext/1.1.0">
<name>SerialLetterAddRecipients</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<entity>SerialLetterAddRecipients_entity</entity>
<references>
<neonViewReference>
<name>8207d6db-d23e-4704-95e9-97474ed971fd</name>
<view>SerialLetterAddRecipientsEdit_view</view>
</neonViewReference>
</references>
</neonContext>
......@@ -2,6 +2,7 @@
<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.1">
<name>LetterRecipientFilter_view</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<filterable v="true" />
<layout>
<boxLayout>
<name>layout</name>
......
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