Epicor 10 BPM Email Format

I am doing a data directive BPM to send emails every time a purchase requisition is dispatched. The BPM is on Reqhead table (in-transaction data directive). Not sure what I am doing wrong, the email format doesn’t seem to work when requisition has two lines.

Here is my code

var ttReqHead_xRow = ttReqHead.FirstOrDefault();
var reqNum = Convert.ToInt32(ttReqHead_xRow[“ReqNum”]);
var reqHead_Row = Db.ReqHead.FirstOrDefault(x => x.ReqNum == reqNum);
var userFile = Db.UserFile.FirstOrDefault(y => y.DcdUserID == reqHead_Row.RequestorID);
var superUserFile = Db.UserFile.FirstOrDefault(z => z.DcdUserID == reqHead_Row.CurrDispatcherID);
var userName = userFile.Name;
var userEmail = userFile.EMailAddress;
var superUserName = “”;
var superUserEmail = “”;
if (superUserFile != null)
{
superUserName = superUserFile.Name;
superUserEmail = superUserFile.EMailAddress;
}

var reqPriority = “”;
var EmailTO = superUserEmail;
var EmailCC = userEmail;
var EmailSubject = “”;
var EmailBody = “”;
var EmailCFO = “”;
var EmailPurchasing = “”;
var EmailIT = “[fmushi@mycompany.com](mailto:fmushi@mycompany.com)”;
/* Initial Req Dispatch. Let Purchasing & super know. <em>/
if (reqHead_Row.StatusType == “P” /</em>&& reqHead_Row.ReqActionID != “CC”*/)
{
EmailTO = EmailPurchasing + “;” + superUserEmail;
switch (Convert.ToInt32(reqHead_Row.CostCenter_c))
{
case 1:
reqPriority = “[Low Priority]”;
break;
case 2:
reqPriority = “[Medium Priority]”;
break;
case 3:
reqPriority = “[High Priority]”;
EmailCC += EmailCFO;
break;
case 4:
reqPriority = “[EMERGENCY PURCHASE ORDER]”;
EmailCC += EmailCFO;
EmailBody += “**THIS HAS BEEN MARKED AS AN EMERGENCY PURCHASE ORDER. PLEASE TAKE NECESSARY STEPS TO EXPEDITE PROCESSES.**”;
break;
default:
reqPriority = “[No Priority]”;
break;
}

Click to expand

Copy to clipboard

EmailSubject = userName + " has dispatched requisition: #" + reqNum + " for " + superUserName + " to approve.";


}
/* Status change, let the user know. */
else
{
EmailTO = userEmail;
EmailSubject = “Your Requisition: #” + reqNum + " has just been ";
switch (reqHead_Row.StatusType)
{
case “A”:
EmailCC = EmailPurchasing;
EmailSubject += “APPROVED.”;
EmailBody += “The requisition is now waiting for purchasing to order.

”;
break;
case “O”:
EmailSubject += “ORDERED.”;
break;
case “R”:
EmailSubject += “REJECTED.”;
break;
case “P”:
EmailSubject += “SENT TO PURCHASING.”;
break;
default:
EmailSubject = “Requisition Alert ERROR. Please Notify I.T.”;
break;
}

Click to expand

Copy to clipboard

// New Code
EmailBody += “<font face=“Arial” size=“2”>” + "Req Number: " + reqHead_Row.ReqNum.ToString() + “

” + "Requester: " + userName + “

” + "Submited By: " + reqHead_Row.CreatedBy + “

”;


}

foreach (var reqDetail_Row in Db.ReqDetail.Where(x => x.ReqNum == reqNum))
{
EmailBody += “<font face=“Arial” size=“2”>” + “<table align=“left” border=“1” cellspacing=“2” cellpadding=“1” style=“Font-family:Arial;font-size:10pt;” bordercolor=”#CCCCCC">" + “” + “Line” + “Part” + “Description” + “Class” + “Qty” + “UOM” + “Unit Cost” + “Total” + “Currency”;
EmailBody += “” + “<td align=“left”>” + reqDetail_Row.ReqLine + “” + “<td align=“left”>” + reqDetail_Row.PartNum + “” + “<td align=“left”>” + reqDetail_Row.LineDesc + “” + “<td align=“left”>” + reqDetail_Row.Class + “” + “<td align=“left”>” + reqDetail_Row.XOrderQty.ToString() + “” + “<td align=“left”>” + reqDetail_Row.IUM + “” + “<td align=“left”>” + reqDetail_Row.UnitCost.ToString() + “” + “<td align=“left”>” + (reqDetail_Row.UnitCost * reqDetail_Row.XOrderQty).ToString() + “” + “<td align=“center”>” + reqDetail_Row.CurrencyCode + “” + "<td align=“left”> " + “”;
}

var mailer = this.GetMailer(async: true);
var message = new Ice.Mail.SmtpMail();
message.SetFrom(“[epicor@mycompany.com](mailto:epicor@mycompany.com)”);
message.SetTo(EmailTO);
message.SetCC(EmailCC + “;fmushi@mycompany.com”);
message.SetSubject(EmailSubject);
message.SetBody(EmailBody);
message.IsBodyHtml = true;
mailer.Send(message);