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

Merge branch '#1054097-ReportDispatchCustomized' into '2020.1.0'

#1054097: Added functionality to add a custom filename to the .eml file

See merge request xrm/basic!246
parents d3382ba3 3ea218f3
No related branches found
No related tags found
No related merge requests found
......@@ -103,6 +103,14 @@
<name>NotificationMsg_param</name>
<expose v="true" />
</entityParameter>
<entityField>
<name>subject</name>
<title>Subject</title>
</entityField>
<entityParameter>
<name>EmailFilename</name>
<expose v="true" />
</entityParameter>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
......
......@@ -12,8 +12,10 @@ import("system.question");
var attachments = JSON.parse(vars.get("$param.Attachments_param"));
var senderContactId = vars.get("$param.ContactId_param");
var bindata = new FileUpload(vars.get("$field.bindata"));
var emailFilename = vars.get("$param.EmailFilename");
var notificationMsg = vars.get("$param.NotificationMsg_param");
var notificationTitle = translate.text("Offer status changed");
var subject = vars.get("$field.subject");
var eml = EmailWritingUtils.openMailTemplate(
vars.get("$field.RECIPIENT"),
......@@ -21,7 +23,9 @@ var eml = EmailWritingUtils.openMailTemplate(
vars.get("$field.DOCUMENT_TEMPLATE"),
senderContactId,
bindata,
attachments
attachments,
subject,
emailFilename
);
......
......@@ -2,6 +2,7 @@ import("system.question");
import("system.translate");
import("system.vars");
import("KeywordRegistry_basic");
import("system.translate");
import("Offer_lib");
import("Email_lib");
import("Sql_lib");
......@@ -11,16 +12,17 @@ var attachmentArray = new Array();
var notificationMsg = translate.text("The status of the offer was changed to \"Sent\".");
var contactId = vars.get("$field.CONTACT_ID");
var arrayReport = OfferUtils.buildOfferReport(vars.get("$field.OFFERID"));
var emailFilename = translate.text("Offerrequest");
if (vars.get("$field.CONTACT_ID") == null || "") contactId = vars.get("$field.CONTACT_ORG_ID");
offerReport.content = arrayReport[1];
offerReport.contentType = "application/pdf";
offerReport.filename = vars.get("$field.#CONTENTTITLE") + ".pdf";
offerReport.filename = translate.text("Offer No.") + vars.get("$field.#CONTENTTITLE") + ".pdf";
attachmentArray[0] = offerReport;
EmailWritingUtils.sendReportAsMail(contactId, attachmentArray, "Offer", notificationMsg);
EmailWritingUtils.sendReportAsMail(contactId, attachmentArray, "Offer", notificationMsg, emailFilename);
newWhere("OFFER.OFFERID", "$field.OFFERID")
.updateData(true, "OFFER", ["STATUS"], null, [$KeywordRegistry.offerStatus$sent()]);
......
......@@ -6761,6 +6761,18 @@
<entry>
<key>set New</key>
</entry>
<entry>
<key>Offer No.</key>
</entry>
<entry>
<key>Version %0</key>
</entry>
<entry>
<key>Offerrequest</key>
</entry>
<entry>
<key>data</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
<sqlModels>
......
......@@ -8667,6 +8667,20 @@ Bitte Datumseingabe prüfen</value>
<key>set New</key>
<value>Neu setzen</value>
</entry>
<entry>
<key>Offer No.</key>
<value>Angebots Nr.</value>
</entry>
<entry>
<key>Version %0</key>
</entry>
<entry>
<key>Offerrequest</key>
<value>Angebotsanfrage</value>
</entry>
<entry>
<key>data</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -6826,6 +6826,18 @@
<entry>
<key>set New</key>
</entry>
<entry>
<key>Offer No.</key>
</entry>
<entry>
<key>Version %0</key>
</entry>
<entry>
<key>Offerrequest</key>
</entry>
<entry>
<key>data</key>
</entry>
</keyValueMap>
<font name="Dialog" style="0" size="11" />
</language>
......@@ -22,6 +22,10 @@
<name>72441756-f00d-42a7-bd3f-a6f7964891bc</name>
<entityField>DOCUMENT_TEMPLATE</entityField>
</entityFieldLink>
<entityFieldLink>
<name>6a72f9a6-f2fd-4a78-b1f9-2aca59cb25a1</name>
<entityField>subject</entityField>
</entityFieldLink>
</fields>
</genericViewTemplate>
<actionsViewTemplate>
......
......@@ -26,9 +26,10 @@ function EmailWritingUtils () {}
* @param {String} [pRecipientContactId] contactId of the recipient, required to fill placeholders
* @param {String} [pBindata] base64 binary data
* @param {Array} [pAttachments] attachments in a array (base64 encoded).
* @param {String} pSubject an optional subject.
* @return {Array} the eml document as array with [filename, base64]
*/
EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments)
EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId, pTemplateId, pRecipientContactId, pBindata, pAttachments, pSubject, pEmailFilename)
{
if (pToRecipients && typeof(pToRecipients) == "string")
pToRecipients = [pToRecipients];
......@@ -59,7 +60,10 @@ EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId,
}
}
return email.downloadEML();
if (pSubject)
email.subject = pSubject;
return email.downloadEML(pEmailFilename);
}
/**
......@@ -70,14 +74,16 @@ EmailWritingUtils.openMailTemplate = function (pToRecipients, pSenderContactId,
* @param {Array} pAttachmentArray array with attachments.
* @param {String} pNotificationMsg message which will be shown after the operation is done.
* @param {String} pComingFrom source from where you started (e.g. "Person", "Organisation" )
* @param {String} pEmailFilename optional file name of the email.
*/
EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComingFrom, pAttachmentArray, pNotificationMsg)
EmailWritingUtils.openNewMail = function (pToContactId, pToEmailAddress, pComingFrom, pAttachmentArray, pNotificationMsg, pEmailFilename)
{
var params = {
"ContactId_param" : pToContactId,
"Attachments_param" : JSON.stringify(pAttachmentArray),
"ComingFrom_param" : pComingFrom,
"NotificationMsg_param" : pNotificationMsg
"NotificationMsg_param" : pNotificationMsg,
"EmailFilename" : pEmailFilename
};
if (pToEmailAddress)
......@@ -99,14 +105,15 @@ EmailWritingUtils.getMailbridgeAddress = function ()
* @param {String} pComingFrom source from where you started (e.g. "Person", "Organisation")
* @param {Array} pReportArray array with reports.
* @param {String} pNotificationMsg message which will be shown after the operation is done.
* @param {String} pEmailFilename optional file name of the email.
* Report have to be a object with these attrs: content (base64 encoded report), contentType (mimeType of the report), filename (complete filename with filending)
*/
EmailWritingUtils.sendReportAsMail = function (pRecipient, pReportArray, pComingFrom, pNotificationMsg)
EmailWritingUtils.sendReportAsMail = function (pRecipient, pReportArray, pComingFrom, pNotificationMsg, pEmailFilename)
{
var pRecpientEmail = newSelect("COMMUNICATION.ADDR").from("COMMUNICATION")
.where("COMMUNICATION.CONTACT_ID", pRecipient).and("COMMUNICATION.MEDIUM_ID", "COMMEMAIL").cell();
EmailWritingUtils.openNewMail(pRecipient, pRecpientEmail, pComingFrom, pReportArray, pNotificationMsg);
EmailWritingUtils.openNewMail(pRecipient, pRecpientEmail, pComingFrom, pReportArray, pNotificationMsg, pEmailFilename);
}
/**
......@@ -321,12 +328,13 @@ Email.prototype.openMail = function ()
/**
* ask for a download of the email
*
* @param {String} [pFilename] the file name.
* @return {Array} array of [filename, EML (base64)]
*/
Email.prototype.downloadEML = function ()
Email.prototype.downloadEML = function (pFilename)
{
var eml = this.getEML();
var filename = (this.subject || translate.text("Email Template")) + ".eml";
var filename = (pFilename || translate.text("Email Template")) + ".eml";
neon.download(eml, filename);
return [filename, eml];
}
......
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