Send Email on Payment Using Workflows

The following Workflow will send an email to the Billing Contact when a Payment is added to the Account.

Sample Email

Dear Bill Smith,

Thank you for your continued business. Your payment has been received.

Our records indicate the following to be outstanding:

Invoice #

Balance

Due Date

44

$525.00

7/10/2009

43

$525.00

7/10/2009

42

$326.00

7/10/2009

If you have any questions regarding your account please do not hesitate to contact us.

Best regards,
LogiSense

Customer Care: 1-519-249-0508
Website: http://www.logisense.com

If there is Still a Balance owning the E-mail will include the Invoices that are still open requiring Payment.

Configuration

Workflow Event
Name: “Payment”
Event Code: Payment.Create

Action Script
Name: “Send e-mail on Payment”
Script: see below

Payment pay = Payment.GetByID(Convert.ToInt32(context["PaymentID"])); User user = User.GetByID(pay.GetUser().ID); ContactTypeQuery ctq = new ContactTypeQuery(); int contactname = 0; ctq.Name = "Billing Contact"; ctq.OwnerIDMin = user.ActingOwnerID; ctq.OwnerIDMax = user.ActingOwnerID; foreach(ContactType ct in ContactType.GetCollection(ref ctq)) { contactname = ct.ID; } Contact contact = Contact.GetByID(user.SearchContactByContactTypeID(contactname)[0].ID); //Logic.Core.Alert.Create(contact.FirstName.ToString(), 1); ViewUserBalanceFuture vubf = ViewUserBalanceFuture.SearchByUserID(user.ID)[0]; ViewUserBalance vub = ViewUserBalance.SearchByUserID(user.ID)[0]; String tableheader = ""; String body2 = ""; String table = ""; String bodybalance = ""; String body = "<img alt="http://www.logisense.com/images/logo_logisense.jpg" /> <span style="font-family: calibri;">Dear " + contact.FirstName.ToString() + " " + contact.LastName.ToString() + ",</span> Thank you for your continued business. Your payment has been received. "; if (vubf.Balance <= 0) { body2 = "<span style="color: #c00000; font-family: calibri;">Your current account balance is </span>" + vubf.Balance.ToString("C") + " "; } else { bodybalance = "<span style="color: red; font-family: calibri;">Our records indicate the following to be outstanding:</span> "; tableheader = " <span style="color: #6666ff; font-family: calibri;">Invoice #</span><span style="color: #6666ff; font-family: calibri;">Balance</span><span style="color: #6666ff; font-family: calibri;">Due Date</span> "; ViewInvoiceQuery viq = new ViewInvoiceQuery(); viq.Paid = false; viq.UserIDMin = user.ID; viq.UserIDMax = user.ID; viq.SortField = "DueDate"; viq.SortOrder = 1; foreach (ViewInvoice inv in ViewInvoice.GetCollection(ref viq)) { table += " <span style="color: #6666ff; font-family: calibri;"><strong>" + inv.ID.ToString() + "</strong></span><span style="color: #6666ff; font-family: calibri;"><strong>" + inv.Balance.ToString("C") + "</strong></span><span style="color: #6666ff; font-family: calibri;"><strong>" + inv.DueDate.ToShortDateString() + "</strong></span> "; } } String footer = "<span style="font-family: calibri;">If you have any questions regarding your account please do not hesitate to contact us.</span> Best regards, LogiSense <strong>Customer Care: </strong>1-519-249-0508 <strong>Website: </strong>http://www.logisense.com"; User rkozub = User.GetByName("rkozub"); Logisense.Boss.Logic.Email.SendToBillingContacts(user,"Thank You For Your Payment",body + body2 + bodybalance + " " + tableheader + table + " " + footer + "", null); Logisense.Boss.Logic.Email.SendToBillingContacts(rkozub, "Thank You For Your Payment", body + body2 + bodybalance + " " + tableheader + table + " " + footer + "", null); return true;