xmlDocument.setParameter("directory", "var baseDirectory = \"" + strReplaceWith + "/\";\r\n");
xmlDocument.setParameter("language", vars.getLanguage());
xmlDocument.setParameter("theme", vars.getTheme());
EmailDefinition emailDefinition = null;
try {
if (moreThanOneLenguageDefined(reports)) {
emailDefinition = reports.values().iterator().next().getTemplateInfo()
.get_DefaultEmailDefinition();
if (emailDefinition == null) {
throw new OBException("No default lenguage configured");
}
} else {
emailDefinition = reports.values().iterator().next().getEmailDefinition();
}
if (log4j.isDebugEnabled())
log4j.debug("Crm configuration, template subject: " + emailDefinition.getSubject());
if (log4j.isDebugEnabled())
log4j.debug("Crm configuration, template body: " + emailDefinition.getBody());
} catch (final OBException exception) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this, "There is no email configuration configured", vars
.getLanguage()));
on.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
} catch (ReportingException e) {
log4j.error(e);
}
// Get additional document information
String draftDocumentIds = "";
final AttachContent attachedContent = new AttachContent();
final boolean onlyOneAttachedDoc = onlyOneAttachedDocs(reports);
final Map<String, PocData> customerMap = new HashMap<String, PocData>();
final Map<String, PocData> salesRepMap = new HashMap<String, PocData>();
final Vector<Object> cloneVector = new Vector<Object>();
boolean allTheDocsCompleted = true;
for (final PocData documentData : pocData) {
// Map used to count the different users
final String customer = documentData.contactName;
getEnvironentInformation(pocData, checks);
if (checks.get("moreThanOneDoc")) {
if (customer == null || customer.length() == 0) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this,
"There is at least one document with no contact. Doc nÂș ("
+ documentData.ourreference + ")", vars.getLanguage()));
on.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
} else if (documentData.contactEmail == null || documentData.contactEmail.equals("")) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this,
"There is at least one document with no email set (" + customer + ")", vars
.getLanguage()));
on.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
}
}
if (!customerMap.containsKey(customer)) {
customerMap.put(customer, documentData);
}
final String salesRep = documentData.salesrepName;
boolean moreThanOnesalesRep = checks.get("moreThanOnesalesRep").booleanValue();
if (moreThanOnesalesRep) {
if (salesRep == null || salesRep.length() == 0) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this,
"There is at least one document with no sender set", vars.getLanguage()));
on.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
} else if (documentData.salesrepEmail == null || documentData.salesrepEmail.equals("")) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this,
"There is at least one document with no sender Email set (" + salesRep + ")", vars
.getLanguage()));
on.setTitle(Utility.messageBD(this, "Info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
}
}
if (!salesRepMap.containsKey(salesRep)) {
salesRepMap.put(salesRep, documentData);
}
final Report report = reports.get(documentData.documentId);
// All ids of documents in draft are passed to the web client
if (report.isDraft()) {
if (draftDocumentIds.length() > 0)
draftDocumentIds += ",";
draftDocumentIds += report.getDocumentId();
allTheDocsCompleted = false;
}
// Fill the report location
final String reportFilename = report.getContextSubFolder() + report.getFilename();
documentData.reportLocation = request.getContextPath() + "/" + reportFilename
+ "?documentId=" + documentData.documentId;
if (log4j.isDebugEnabled())
log4j.debug(" Filling report location with: " + documentData.reportLocation);
if (onlyOneAttachedDoc) {
attachedContent.setDocName(report.getFilename());
attachedContent.setVisible("checkbox");
cloneVector.add(attachedContent);
}
}
if (!allTheDocsCompleted) {
final OBError on = new OBError();
on.setMessage(Utility.messageBD(this,
"Some Documents were not completed, the email couldnt be send. Please "
+ "confirm first all the seleted documents to complete the process", vars
.getLanguage()));
on.setTitle(Utility.messageBD(this, "info", vars.getLanguage()));
on.setType("info");
final String tabId = vars.getSessionValue("inpTabId");
vars.getStringParameter("tab");
vars.setMessage(tabId, on);
vars.getRequestGlobalVariable("inpTabId", "AttributeSetInstance.tabId");
printPageClosePopUpAndRefreshParent(response, vars);
}
final int numberOfCustomers = customerMap.size();
final int numberOfSalesReps = salesRepMap.size();
if (!onlyOneAttachedDoc && isTheFirstEntry) {
if (numberOfCustomers > 1) {
attachedContent.setDocName(String.valueOf(reports.size() + " Documents to "
+ String.valueOf(numberOfCustomers) + " Customers"));
attachedContent.setVisible("checkbox");
} else {
attachedContent.setDocName(String.valueOf(reports.size() + " Documents"));
attachedContent.setVisible("checkbox");
}
cloneVector.add(attachedContent);
}
final AttachContent[] data = new AttachContent[vector.size()];
final AttachContent[] data2 = new AttachContent[cloneVector.size()];
if (cloneVector.size() >= 1) { // Has more than 1 element
vector.copyInto(data);
cloneVector.copyInto(data2);
xmlDocument.setData("structure2", data2);
xmlDocument.setData("structure1", data);
}
if (pocData.length >= 1) {
xmlDocument.setData("reportEmail", "liststructure", reports.get((pocData[0].documentId))
.getTemplate());
}
if (log4j.isDebugEnabled())
log4j.debug("Documents still in draft: " + draftDocumentIds);
xmlDocument.setParameter("draftDocumentIds", draftDocumentIds);
if (vars.commandIn("ADD") || vars.commandIn("DEL")) {
final String emailSubject = vars.getStringParameter("emailSubject");
final String emailBody = vars.getStringParameter("emailBody");
xmlDocument.setParameter("emailSubject", emailSubject);
xmlDocument.setParameter("emailBody", emailBody);
xmlDocument.setParameter("contactEmail", vars.getStringParameter("contactEmail"));
xmlDocument.setParameter("salesrepEmail", vars.getStringParameter("salesrepEmail"));
} else {
xmlDocument.setParameter("emailSubject", emailDefinition.getSubject());
xmlDocument.setParameter("contactEmail", pocData[0].contactEmail);
xmlDocument.setParameter("salesrepEmail", pocData[0].salesrepEmail);
xmlDocument.setParameter("emailBody", emailDefinition.getBody());
}
xmlDocument.setParameter("inpArchive", vars.getStringParameter("inpArchive"));
xmlDocument.setParameter("contactName", pocData[0].contactName);
xmlDocument.setParameter("salesrepName", pocData[0].salesrepName);