BPM to Email when a PO needs to be Approved – or has been approved or rejected
Posted in blog

BPM to Email when a PO needs to be Approved – or has been approved or rejected

BPM Type Data
Table POApvMsg
Name EmailApprovalConfirm

 

Usings None
References None

 

Code

// Email PO Approval Person – Confirmation

 

Erp.Tables.UserFile UserFile;

Erp.Tables.PurAgent PurAgent;

Erp.Tables.POHeader POHeader;

 

string emailCC     = string.Empty;

string emailTo     = string.Empty;

string emailFrom   = string.Empty;

string msgFrom     = string.Empty;

string msgTo       = string.Empty;

string fromName    = string.Empty;

string toName      = string.Empty;

string appComments = string.Empty;

 

// ** find current PO Header **

var ttPOApvMsg_xRow = (from ttPOApvMsg_Row in ttPOApvMsg

where ttPOApvMsg_Row.ApproverResponse != “” && ttPOApvMsg_Row.ApproverResponse.Contains(“MANUALLY”) == false

select ttPOApvMsg_Row).FirstOrDefault();

 

if (ttPOApvMsg_xRow != null)

{

// ** Get PO Entry Person

 

POHeader = (from POHeader_Row in Db.POHeader

where string.Compare(POHeader_Row.Company, ttPOApvMsg_xRow.Company, true) == 0

&& POHeader_Row.PONum == ttPOApvMsg_xRow.PONum

select POHeader_Row).FirstOrDefault();

 

if (POHeader != null)

{

 

msgFrom = ttPOApvMsg_xRow.MsgFrom;

msgTo = ttPOApvMsg_xRow.MsgTo;

appComments = ttPOApvMsg_xRow.MsgText;

 

appComments = appComments.Replace(“\r”,”\r\n”);

 

// ** Get The Buyer Full Name For The Approval Requester

 

PurAgent = (from PurAgent_Row in Db.PurAgent

where string.Compare(PurAgent_Row.Company, ttPOApvMsg_xRow.Company, true) == 0

&& PurAgent_Row.BuyerID == msgFrom

select PurAgent_Row).FirstOrDefault();

 

if (PurAgent != null)

{

emailFrom = PurAgent.EMailAddress;

fromName = PurAgent.Name;

 

PurAgent = (from PurAgent_Row in Db.PurAgent

where string.Compare(PurAgent_Row.Company, ttPOApvMsg_xRow.Company, true) == 0

&& PurAgent_Row.BuyerID == msgTo

select PurAgent_Row).FirstOrDefault();

 

if (PurAgent != null)

{

emailTo = PurAgent.EMailAddress;

toName = PurAgent.Name;

 

UserFile = (from UserFile_Row in Db.UserFile

where UserFile_Row.DcdUserID == POHeader.EntryPerson

select UserFile_Row).FirstOrDefault();

 

if (UserFile != null)

{

emailCC = UserFile.EMailAddress;

 

if ((emailTo + emailCC) == “”)

{

throw new BLException(“No email addresses – cannot send email for: ” + ttPOApvMsg_xRow.ApproverResponse) ;

}

 

var mailer = this.GetMailer(async: true);

var message = new Ice.Mail.SmtpMail();

 

var from = “Epicor10Alerts@epicor.com“;  // <<< Change this to an email address on your domain

 

message.SetFrom(from);

 

if (emailTo == “”)

{

emailTo = emailCC ;

emailCC = “” ;

}

 

var to = emailTo;

message.SetTo(to);

var cc = emailCC;

message.SetCC(cc);

var subjectBuilder = new System.Text.StringBuilder();

subjectBuilder.Append(“PO ” + ttPOApvMsg_xRow.PONum + ” has been ” + ttPOApvMsg_xRow.ApproverResponse);

var subject = subjectBuilder.ToString();

message.SetSubject(subject);

var bodyBuilder = new System.Text.StringBuilder();

bodyBuilder.Append(“PO ” + ttPOApvMsg_xRow.PONum + ” has been ” + ttPOApvMsg_xRow.ApproverResponse + ” by: ” + fromName + “.”);

if (ttPOApvMsg_xRow.ApproverResponse == “REJECTED”)

{

bodyBuilder.Append(“\r\n\r\nComments”);

bodyBuilder.Append(“\r\n—————————————————-“);

bodyBuilder.Append(“\r\n\r\n” + appComments);

}

var body = bodyBuilder.ToString();

message.SetBody(body);

mailer.Send(message);

}

}

}

}

}

 

BPM Type Data
Table POApvMsg
Name FurtherApprovalEmail

 

Code

// Email PO Approval Person – Confirmation

 

 

Func<string, string> getUserMail = (userID) =>

{

var usr = Db.UserFile.Where(u=> u.DcdUserID == userID).FirstOrDefault();

if (usr == null)

return “” ;

return usr.EMailAddress ;

};

 

Func<string, string> getUserName = (userID) =>

{

var usr = Db.UserFile.Where(u=> u.DcdUserID == userID).FirstOrDefault();

if (usr == null)

return “” ;

return usr.Name ;

};

 

 

Erp.Tables.UserFile UserFile;

Erp.Tables.PurAgent PurAgent;

Erp.Tables.POHeader POHeader;

 

string emailCC = string.Empty;

string emailTo = string.Empty;

string emailFrom = string.Empty;

string msgFrom = string.Empty;

string msgTo = string.Empty;

string fromName = string.Empty;

string toName = string.Empty;

string appComments = string.Empty;

 

// ** find current PO Header **

var ttPOApvMsg_xRow = (from ttPOApvMsg_Row in ttPOApvMsg

where ttPOApvMsg_Row.ApproverResponse == “” && ttPOApvMsg_Row.RowMod == “U” && ttPOApvMsg_Row.MsgType == “1”

select ttPOApvMsg_Row).FirstOrDefault();

 

if (ttPOApvMsg_xRow != null)

{

msgFrom = Session.UserID ;

fromName = getUserName( msgFrom ) ;

emailFrom = getUserMail( msgFrom );

msgTo = ttPOApvMsg_xRow.MsgTo;

appComments = ttPOApvMsg_xRow.MsgText.Replace(“\r”,”\r\n”);

 

 

// ** Get PO Entry Person

POHeader = (from POHeader_Row in Db.POHeader

where POHeader_Row.Company == Session.CompanyID

&& POHeader_Row.PONum == ttPOApvMsg_xRow.PONum

select POHeader_Row).FirstOrDefault();

 

if (POHeader != null)

{

// ** Get The Buyer Full Name For The Approval Requester

PurAgent = (from PurAgent_Row in Db.PurAgent

where string.Compare(PurAgent_Row.Company, ttPOApvMsg_xRow.Company, true) == 0

&& PurAgent_Row.BuyerID == msgTo

select PurAgent_Row).FirstOrDefault();

 

if (PurAgent != null)

{

emailTo = PurAgent.EMailAddress;

toName = PurAgent.Name;

 

emailCC = getUserMail(POHeader.EntryPerson) ;

 

if ((emailTo + emailCC) == “”)

{

throw new BLException(“No email addresses – cannot send email for: ” + ttPOApvMsg_xRow.ApproverResponse ) ;

}

 

var mailer = this.GetMailer(async: true);

var message = new Ice.Mail.SmtpMail();

 

var from = “Epicor10Alerts@epicor.com“; // <<< Change this to an email address on your domain

 

message.SetFrom(from);

 

if (emailTo == “”)

{

emailTo = emailCC ;

emailCC = “” ;

}

 

var to = emailTo;

message.SetTo(to);

var cc = emailCC;

message.SetCC(cc);

var subjectBuilder = new System.Text.StringBuilder();

string response = ttPOApvMsg_xRow.ApproverResponse ;

if (response == “”)

response = “sent for approval to ” + toName ;

else

response += ” by ” + fromName ;

subjectBuilder.Append(“PO ” + ttPOApvMsg_xRow.PONum + ” has been ” + response);

var subject = subjectBuilder.ToString();

message.SetSubject(subject);

var bodyBuilder = new System.Text.StringBuilder();

bodyBuilder.Append(“PO ” + ttPOApvMsg_xRow.PONum + ” has been ” + response + “.”);

if (ttPOApvMsg_xRow.ApproverResponse == “REJECTED”)

{

bodyBuilder.Append(“\r\n\r\nComments”);

bodyBuilder.Append(“\r\n—————————————————-“);

bodyBuilder.Append(“\r\n\r\n” + appComments);

}

var body = bodyBuilder.ToString();

message.SetBody(body);

 

mailer.Send(message);

 

}

}

}

 

Happy Coding!

Share this post

Start typing and press Enter to search

Shopping Cart

No products in the basket.