✏️ Explanatory Question
class ANSARIWHSWorkTableListPageEventHandler
{
/// <summary>
/// Changing the JumpRef for Locked user field
/// </summary>
/// <param name="sender">
/// WHSWorkTable form data source
/// </param>
/// <param name="e">
/// Form data source event args
/// </param>
/// <remarks>
/// May 7, 2019 - Sonata Software Limited - #Bug2227 Work User error
/// </remarks>
[FormDataSourceEventHandler(formDataSourceStr(WHSWorkTableListPage, WHSWorkTable), FormDataSourceEventType::Initialized)]
public static void WHSWorkTable_OnInitialized(FormDataSource sender, FormDataSourceEventArgs e)
{
var overrides = new ANSARIWHSWorkTableUser();
sender.object(fieldNum(WHSWorkTable, LockedUser)).registerOverrideMethod(methodStr(FormDataObject, jumpRef), methodStr(ANSARIWHSWorkTableUser, jumpRefUser) , overrides);
//05/09/2023 - ansari - BUG 208946 - TO and SO work trans type if replenishment will both open the respective TO and SO when click on ALL work form - START
var overrideOrderNumJumpRef = new ANSARIWHSTOSOJumpRef();
sender.object(fieldNum(WHSWorkTable, OrderNum)).registerOverrideMethod(methodStr(FormDataObject, jumpRef), methodStr(ANSARIWHSTOSOJumpRef, jumpRefSOTO) , overrideOrderNumJumpRef);
//05/09/2023 - ansari- BUG 208946 - TO and SO work trans type if replenishment will both open the respective TO and SO when click on ALL work form - START
}
//09/01/2023 - ansari -215509 Performance All work screen when filtering on closed work is extremely slow
/// <summary>
/// To fiter all works for a period of 45 days on enabling closed work
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormControlEventHandler(formControlStr(WHSWorkTableListPage, ShowClosed), FormControlEventType::Modified)]
public static void ShowClosed_OnModified(FormControl sender, FormControlEventArgs e)
{
FormCheckBoxControl showClosed = Sender as FormCheckBoxControl;
FormDataSource formDataSource = Sender.formRun().dataSource(formDataSourceStr(WHSWorkTableListPage,WHSWorkTable)) as FormDataSource;
QueryBuildDataSource qbdWhsWorkTable;
QueryBuildRange qbrWhsWorkTable;
qbdWhsWorkTable = formDataSource.queryBuildDataSource();
qbdWhsWorkTable.clearRanges();
qbrWhsWorkTable = SysQuery::findOrCreateRange(qbdWhsWorkTable ,fieldnum(WHSWorkTable,CreatedDateTime));
if(showClosed.checked())
{
qbrWhsWorkTable.value(SysQueryRangeUtil::greaterThanUtcDate(-45));
}
else
{
qbdWhsWorkTable.clearRange(fieldnum(WHSWorkTable,CreatedDateTime));
}
}
//01/02/2024 - ansari -268797 Performance on All work screen production slownes
/// <summary>
/// To have 90 day fiter on created date and time
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormDataSourceEventHandler(formDataSourceStr(WHSWorkTableListPage, WHSWorkTable), FormDataSourceEventType::QueryExecuting)]
public static void WHSWorkTable_OnQueryExecuting(FormDataSource sender, FormDataSourceEventArgs e)
{
FormDataSource formDataSource = Sender as FormDataSource;
QueryBuildDataSource qbdWhsWorkTable;
QueryBuildRange qbrWhsWorkTable;
//18/04/2025 - ansari -Bug 362380: Don't allow wildcard searches in All Work form - start
QueryBuildRange qbr;
QueryBuildDataSource qbds;
//18/04/2025 -ransari -Bug 362380: Don't allow wildcard searches in All Work form - end
qbdWhsWorkTable = formDataSource.queryBuildDataSource();
qbrWhsWorkTable = SysQuery::findOrCreateRange(qbdWhsWorkTable ,fieldnum(WHSWorkTable,CreatedDateTime));
qbrWhsWorkTable.value(SysQueryRangeUtil::greaterThanUtcDate(-90));
//18/04/2025 - ansari -Bug 362380: Don't allow wildcard searches in All Work form - start
if(sender.queryRun())
{
qbds = sender.queryRun().query().dataSourceTable(tableNum(WHSWorkTable));
ANSARIWHSWorkTableListPageEventHandler::ansariThrowErrorForWildcardSearch(qbds);
}
//18/04/2025 - ansari -Bug 362380: Don't allow wildcard searches in All Work form - end
}
//18/04/2025 -ansari -Bug 362380: Don't allow wildcard searches in All Work form - start
/// <summary>
///
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
[FormDataSourceEventHandler(formDataSourceStr(WHSWorkTableListPage, WHSWorkLine), FormDataSourceEventType::QueryExecuting)]
public static void WHSWorkLine_OnQueryExecuting(FormDataSource sender, FormDataSourceEventArgs e)
{
WHSWorkLine WHSWorkLine = sender.cursor() as WHSWorkLine;
QueryBuildRange qbr;
QueryBuildDataSource qbds;
// Example: Inspect current filters
if(sender.queryRun())
{
qbds = sender.queryRun().query().dataSourceTable(tableNum(WHSWorkLine));
ANSARIWHSWorkTableListPageEventHandler::ansariThrowErrorForWildcardSearch(qbds);
}
}
public static void ansariThrowErrorForWildcardSearch(QueryBuildDataSource qbds)
{
str qStr;
#define.matchStr("LIKE")
if(qbds)
{
qStr = qbds.toString();
int i = match(#matchStr, qStr);
if(i)
{
throw error('@ANSARI:ANSARIFilterNotAllowed');
}
}
}
//18/04/2025 - ansari -Bug 362380: Don't allow wildcard searches in All Work form - end
}