Professional Documents
Culture Documents
*/
private void sendAgreementPushedMessage(Object mailRecipient) {
/* This portion has parts (c) 2009 by Crafty Systems, Inc. All Rights Reserved.
Used by permission */
/* Alert Creator: Send an alert to the specified recipient */
/* Note this uses classes that are not yet exposed to the standard API. */
/* Code should be revisited after an upgrade. However, the classes and methods
referenced */
/* are core common classes and methods. If SAP does not do a complete architectural
change */
/* then these should all continue to work without modification */
/* Refer to standard SAP classes when bypassing API */
import com.frictionless.doccommon.masterdata.AlertHome;
import com.frictionless.common.platform.HomeLocator;
import com.frictionless.common.types.ResourceId;
import com.frictionless.doccommon.doc.AbsHighLevelBizDocHome;
import com.frictionless.common.platform.ClassInfo;
import com.frictionless.doc.BizDocBo;
import com.frictionless.doc.BizDocHome;
import com.frictionless.doc.AbsDocHome;
import com.frictionless.doc.ContainerDocHome;
import com.frictionless.doc.ContainerHome;
import com.frictionless.doc.AlertIfc;
import com.frictionless.common.i18n.ResourceReference;
import com.frictionless.comp.messaging.MailTypeEnum;
sapAlertHome = new AlertHome(session);
sapAlert = sapAlertHome.createTng();
/* This uses the "Master Agreement Penalty Not Met Alert" mail template (70), which
has placeholders for lots of info. */
/* build alert title for workbench, using the localized resource
dolby$alert.contractdocexecuted.subject,
/* injecting three parameters into workbench alert */
sapAlertTitle = new ResourceReference(new ResourceId("dolby",
"alert.contractdocexecuted.subject"));
sapAlertTitle.addModifier(kdocType);
sapAlertTitle.addModifier(doc.getDisplayName());
sapAlertTitle.addModifier(doc.getDocumentOwnerUserReference().getDisplayName());
mailType = new MailTypeEnum(70);
sapContractHome = HomeLocator.lookup(session,
ClassInfo.getClassIdFromName("contracts.Contract"));
targetDocument = sapContractHome.find(doc.getObjectReference());
classNameReference = new ResourceId("cterms", "cterm.contract");
vendorHome = IBeanHomeLocator.lookup(session,
com.frictionless.api.doccommon.masterdata.VendorIBeanHomeIfc.sHOME_NAME);
contactHome = IBeanHomeLocator.lookup(session,
com.frictionless.api.usermgmt.masterdata.ContactIBeanHomeIfc.sHOME_NAME);
/* build alert valid for seven days with a reference to this contract */
endDate = Calendar.getInstance();
endDate.setTime(new Date());
endDate.add(Calendar.DATE, 7);
/* initialize any mail template-specific tokens used in message text */
/* We have LI_NUMBER, LI_PARTNUMBER, THRESHOLD, MA_EXPIRATION_DAYS, LI_DESC,
PENALTY_AMOUNT */
/* plus the regular fields */
/* Need to share Agreement Status (constant), Effective date, agreement
type/name/id, country, licensee name */
/* tech contact names */
docCounterparty = vendorHome.findWhere("OBJECTID=" +
doc.getVendorRef().getObjectId()).get(0);
/*sapAlert.addMailProperty("EXPIRATION_DATE",
doc.getFieldMetadata("EFFECTIVE_DATE").get(doc).toString());*/
sapAlert.addMailProperty("DOCUMENT_TYPE", kdocType);
sapAlert.addMailProperty("LI_PARTNUMBER", docCounterparty.getDisplayName());
/* First build up the header information for the top of the email, stuff it into
AGREEMENT_TITLE variable */
messagebody = " Agreement Type: " + kdocType + " - " + doc.getDisplayName() +
(char)13 + (char)13;
messagebody = messagebody + " Agreement ID: " + doc.getDocumentId() + (char)13 +
(char)13;
messagebody = messagebody + " Agreement Status: Fully Executed" + (char)13 +
(char)13;
messagebody = messagebody + " Effective Date: " +
doc.getFieldMetadata("EFFECTIVE_DATE").get(doc).toString() + (char)13;
sapAlert.addMailProperty("AGREEMENT_TITLE", messagebody);
/* Build the first part of the text, into the AGREEMENT_DOCID variable */
messagebody = "";
if (hasValue(docCounterparty.getCountryObjRef())) {
messagebody = messagebody + " Country: " +
docCounterparty.getCountryObjRef().getDisplayName() + (char)13 + (char)13;
}
if (hasValue(doc.getExtensionField("OPPORTUNITY").get())) {
messagebody = messagebody + " SFDC: https://na5.salesforce.com/" +
doc.getExtensionField("OPPORTUNITY").get() + (char)13 + (char)13;
}
/* Account Owner line: */
if (hasValue(doc.getExtensionField("REQUESTOR").get())) {
messagebody = messagebody + " Account Owner: " +
doc.getExtensionField("REQUESTOR").get().getDisplayName();
} else {
messagebody = messagebody + " Account Owner: Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
/* IP Specialist line: */
messagebody = messagebody + " IP Specialist: " +
doc.getDocumentOwnerUserReference().getDisplayName() + (char)13 + (char)13;
sapAlert.addMailProperty("AGREEMENT_DOCID", messagebody);
messagebody = "";
contact = contactHome.find(doc.getExtensionField("PRIMARY_TECH_IMP").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_02").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_03").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_04").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_05").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_06").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP Contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_07").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_08").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_09").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_10").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_11").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
contact = contactHome.find(doc.getExtensionField("TECH_IMP_12").get());
if (hasValue(contact)) {
messagebody = messagebody + "Tech IMP contact" + (char)13 +
contact.getDisplayName() + (char)13;
if (hasValue(contact.getAddress1())) {
messagebody = messagebody + contact.getAddress1() + (char)13;
if (hasValue(contact.getAddress2())) {
messagebody = messagebody + contact.getAddress2() + (char)13;
}
if (hasValue(contact.getCity())) {
messagebody = messagebody + contact.getCity() + ", ";
}
if (hasValue(contact.getState())) {
messagebody = messagebody + contact.getState() + " ";
}
if (hasValue(contact.getPostalCode())) {
messagebody = messagebody + contact.getPostalCode() + " ";
}
if (hasValue(contact.getCountryObjRef())) {
messagebody = messagebody + (char)13 + "Country Code: " +
contact.getCountryObjRef().getDisplayName();
}
} else {
messagebody = messagebody + "Address Unknown";
}
messagebody = messagebody + (char)13 + (char)13;
}
/* end of processing this contact */
/* Store the IMP contacts into the THRESHOLD variable */
sapAlert.addMailProperty("THRESHOLD", messagebody);
sapAlert.addMailProperty("LI_DESC", messagebody);
/* Main Code */
logMsg = Logger.createLogMessage(session);
logMsg.setLogMessage("**** Publish To ERP: Trying to Publish Contract " +
doc.getDisplayName());
Logger.debug(logMsg);
executedNotifyColln = thisAgreementType.getExtensionCollection("PUSH_NOTIFY");
if (executedNotifyColln.size() > 0) {
groupHome = IBeanHomeLocator.lookup(session,
com.frictionless.api.usermgmt.masterdata.GroupIBeanHomeIfc.sHOME_NAME);
executedNotifyIter = executedNotifyColln.iterator();
while (executedNotifyIter.hasNext()) {
notificationGroup = executedNotifyIter.next();
group = notificationGroup.getExtensionField("GROUP").get();
logMsg.setLogMessage("**** Publish To ERP: Processing group " +
group.getDisplayName() + " ****");
Logger.debug(logMsg);
thisGroup = groupHome.findWhere("DISPLAY_NAME='" + group.getDisplayName() +
"'").get(0);
logMsg.setLogMessage("**** Publish To ERP: Processing thisGroup " +
thisGroup.getDisplayName() + " ****");
Logger.debug(logMsg);
groupMembers = thisGroup.findGroupMembers();
groupMemberIter = groupMembers.iterator();
while (groupMemberIter.hasNext()) {
member = groupMemberIter.next();
sendAgreementPushedMessage(member);
}
}
}
logMsg.setLogMessage("**** Publish To ERP: Finished processing all groups ****");
Logger.debug(logMsg);
}
} else {
logMsg.setLogMessage("**** Publish To ERP: Did not find a fully executed contract
doc. Throwing exception. ");
Logger.debug(logMsg);
throw new ApplicationException(session,
"dolby.publishToERP.needExecutedKDoc.errortext");
}