
In the Infor CRM (formerly Saleslogix) web client, under the Contact area you have the ability to schedule a Contact Process via the Processes tab. When you click the + to schedule a Process the following dialog opens:
If you don’t select a Process in the “Process Type” field and click Schedule you get an uncaught error that is not informative:
We can change this fairly easily. The dialog that is launched when you click the + is a custom Contact smart part called ScheduleProcess. This smart part has a separate code file named ScheduleProcess.ascx.cs. Within that code file there is a method cmdSchedule_Click. The code looks like the following:
protected void cmdSchedule_Click(object sender, EventArgs e)
{
if (lueContactToScheduleFor.LookupResultValue == null)
{
throw new ValidationException(GetLocalResourceObject(“error_ScheduleFor.Message”).ToString());
}
try
{
LoadOwner();
if (cboProcessType.DataSource != null)
{
Plugin selectedPlugin = ((IList<Plugin>) cboProcessType.DataSource)[cboProcessType.SelectedIndex];
object[] objarray = new[]
{
lueContactToScheduleFor.LookupResultValue,
selectedPlugin.PluginId,
selectedPlugin.Family,
selectedPlugin.Name,
ownProcessOwner.LookupResultValue
};
Sage.Platform.Orm.DynamicMethodLibraryHelper.Instance.Execute(“Contact.ScheduleProcess”, objarray);
DialogService.CloseEventHappened(sender, e);
IPanelRefreshService refresher = PageWorkItem.Services.Get<IPanelRefreshService>(true);
refresher.RefreshTabWorkspace();
}
else
{
DialogService.ShowMessage(GetLocalResourceObject(“Error_ProcessTypes”).ToString(), “SalesLogix”);
}
}
catch (Exception ex)
{
string sSlxErrorId = null;
var sMsg = ErrorHelper.GetClientErrorHtmlMessage(ex, ref sSlxErrorId);
if (!string.IsNullOrEmpty(sSlxErrorId))
{
log.Error(
ErrorHelper.AppendSlxErrorId(
“The call to SmartParts_Process_ScheduleProcess.cmdSchedule_Click failed”, sSlxErrorId), ex);
}
DialogService.ShowHtmlMessage(sMsg, ErrorHelper.IsDevelopmentContext() ? 600 : -1,
ErrorHelper.IsDevelopmentContext() ? 800 : -1);
}
}
We can add a new line after the initial if statement that is checking for the existence of a contact. Our line will check the Process Type combo box:
if (string.IsNullOrWhiteSpace(cboProcessType.Text)) throw new ValidationException(“No process is specified”); //CFX
So the final code looks like:
protected void cmdSchedule_Click(object sender, EventArgs e)
{
if (lueContactToScheduleFor.LookupResultValue == null)
{
throw new ValidationException(GetLocalResourceObject(“error_ScheduleFor.Message”).ToString());
}if (string.IsNullOrWhiteSpace(cboProcessType.Text)) throw new ValidationException(“No process is specified”); //CFX
try
{
LoadOwner();
if (cboProcessType.DataSource != null)
{
Plugin selectedPlugin = ((IList<Plugin>) cboProcessType.DataSource)[cboProcessType.SelectedIndex];
object[] objarray = new[]
{
lueContactToScheduleFor.LookupResultValue,
selectedPlugin.PluginId,
selectedPlugin.Family,
selectedPlugin.Name,
ownProcessOwner.LookupResultValue
};
Sage.Platform.Orm.DynamicMethodLibraryHelper.Instance.Execute(“Contact.ScheduleProcess”, objarray);
DialogService.CloseEventHappened(sender, e);
IPanelRefreshService refresher = PageWorkItem.Services.Get<IPanelRefreshService>(true);
refresher.RefreshTabWorkspace();
}
else
{
DialogService.ShowMessage(GetLocalResourceObject(“Error_ProcessTypes”).ToString(), “SalesLogix”);
}
}
catch (Exception ex)
{
string sSlxErrorId = null;
var sMsg = ErrorHelper.GetClientErrorHtmlMessage(ex, ref sSlxErrorId);
if (!string.IsNullOrEmpty(sSlxErrorId))
{
log.Error(
ErrorHelper.AppendSlxErrorId(
“The call to SmartParts_Process_ScheduleProcess.cmdSchedule_Click failed”, sSlxErrorId), ex);
}
DialogService.ShowHtmlMessage(sMsg, ErrorHelper.IsDevelopmentContext() ? 600 : -1,
ErrorHelper.IsDevelopmentContext() ? 800 : -1);
}
}
This results in a much nicer message:
Subscribe To Our Newsletter
Join our mailing list to receive the latest Infor CRM (Saleslogix) and Creatio (bpm'online) news and product updates!
You have Successfully Subscribed!