****** I put "//amr" in the front of line added
********* lookupReference method in WorkerSalesResponsible field in salestable form
public Common lookupReference(FormReferenceControl _formReferenceControl)
{
// Commenting existing code
//return HcmWorkerLookup::newOnlyActiveWorkers().lookupWorker(_formReferenceControl);
HcmWorkerLookup hcmWorkerLookup;
hcmWorkerLookup = HcmWorkerLookup::newOnlyActiveWorkers();
// Call the new parm method here
hcmWorkerLookup.parmincludeRepresentatives(true);
return hcmWorkerLookup.lookupWorker(_formReferenceControl);
}
******** ClassDeclaration in HcmWorkerLookup class
class HcmWorkerLookup
{
Query query;
boolean includeEmployees;
boolean includeContractors;
boolean includeActive;
boolean includePending;
boolean includeTerminated;
boolean includeOnlyCurrentLegalEntity;
boolean lockWorkerTypeFilters;
boolean lockWorkerStatusFilters;
boolean lockLegalEntityFilters;
boolean requireUserRelation;
boolean enableVirtualCompany;
boolean includeRepresentatives; //AMR
}
***** new pram method in HcmWorkerLookup class
public boolean parmincludeRepresentatives(boolean _includeRepresentatives = includeRepresentatives)
{
includeRepresentatives = _includeRepresentatives;
return includeRepresentatives;
}
********* modification in updateQuery I put "//amr" in the front of line added
public Query updateQuery(HcmWorkerRecId _workerRecId = 0)
{
QueryBuildRange legalEntityRange;
QueryBuildRange validFromRange;
QueryBuildRange validToRange;
QueryBuildRange workerRange;
QueryBuildRange workertitleRange ; //amr
QueryBuildRange employmentValidFromRange;
QueryBuildRange employmentValidToRange;
QueryBuildRange employmentTypeRange;
QueryBuildDataSource qbdsEmployment;
QueryBuildDataSource qbdsDirPersonUser;
QueryBuildDataSource qbdsActiveEmployments;
QueryBuildDataSource qbdsWorker;
QueryBuildDataSource qbdsWorkertitle; //amr
utcdatetime now = DateTimeUtil::utcNow();
qbdsWorker = query.dataSourceTable(tableNum(HcmWorker));
qbdsEmployment = query.dataSourceName('HcmEmployment');
qbdsActiveEmployments = query.dataSourceName('ActiveEmployments');
qbdsDirPersonUser = query.dataSourceTable(tableNum(DirPersonUser));
qbdsWorkertitle = query.dataSourceTable(tableNum(HcmWorkerTitle)); //amr
validFromRange = qbdsEmployment.findRange(fieldNum(HcmEmployment, ValidFrom));
validToRange = qbdsEmployment.findRange(fieldNum(HcmEmployment, ValidTo));
legalEntityRange = qbdsEmployment.findRange(fieldNum(HcmEmployment, LegalEntity));
employmentTypeRange = qbdsEmployment.findRange(fieldNum(HcmEmployment, EmploymentType));
workerRange = qbdsEmployment.findRange(fieldNum(HcmEmployment, Worker));
workertitleRange = qbdsEmployment.findRange(fieldNum(HcmWorkerTitle, Title)); //amr
employmentValidFromRange = qbdsActiveEmployments.findRange(fieldNum(HcmEmployment, ValidFrom));
employmentValidToRange = qbdsActiveEmployments.findRange(fieldNum(HcmEmployment, ValidTo));
// disable this query data source, and re-enable conditionally when only showing pending/terminated workers
qbdsActiveEmployments.enabled(false);
// disable this query data source, and re-enable conditionally only if user relation required
qbdsDirPersonUser.enabled(false);
if (_workerRecId != 0)
{
// Filter the HcmWorker table on the passed worker rec id
workerRange.value(queryValue(_workerRecId));
}
else
{
// Include all workers
workerRange.value(SysQuery::valueUnlimited());
}
if (includeOnlyCurrentLegalEntity == false
|| (_workerRecId != 0 && lockLegalEntityFilters == false))
{
// Include all companies
legalEntityRange.value(SysQuery::valueUnlimited());
}
else
{
if (enableVirtualCompany && isVirtualCompany())
{
// Set to the virtual company list
legalEntityRange.value(con2StrUnlimited(getVirtualCompanyList()));
}
else
{
// Limit to the current company
legalEntityRange.value(queryValue(CompanyInfo::find().RecId));
}
}
if (includeEmployees && includeContractors
|| (_workerRecId != 0 && lockWorkerTypeFilters == false))
{
// Do not filter by based on employee or contractor employment
employmentTypeRange.value(SysQuery::valueUnlimited());
}
else if (includeEmployees)
{
employmentTypeRange.value(queryValue(HcmEmploymentType::Employee));
}
else if (includeContractors)
{
employmentTypeRange.value(queryValue(HcmEmploymentType::Contractor));
}
else if (includeRepresentatives) //amr
{ //amr
workertitleRange.value("Sales Representative"); //amr
} //amr
if (includeActive && includePending && includeTerminated
|| (_workerRecId != 0 && lockWorkerStatusFilters == false))
{
query.validTimeStateDateTimeRange(DateTimeUtil::minValue(), DateTimeUtil::maxValue());
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQuery::valueUnlimited());
}
else if (includeActive && includePending)
{
query.validTimeStateDateTimeRange(now, DateTimeUtil::maxValue());
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQuery::valueUnlimited());
}
else if (includeTerminated && includeActive)
{
query.validTimeStateDateTimeRange(DateTimeUtil::minValue(), now);
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQuery::valueUnlimited());
}
else if (includeActive)
{
query.validTimeStateDateTimeRange(now, now);
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQuery::valueUnlimited());
}
else if (includeTerminated)
{
query.validTimeStateDateTimeRange(DateTimeUtil::minValue(), DateTimeUtil::utcNow());
validFromRange.value(SysQuery::valueUnlimited());
validToRange.value(SysQueryRangeUtil::lessThanUtcNow());
// don't include active employments
employmentValidFromRange.value(SysQueryRangeUtil::lessThanUtcNow());
employmentValidToRange.value(SysQueryRangeUtil::greaterThanUtcNow());
qbdsActiveEmployments.enabled(true);
}
else if (includePending)
{
query.validTimeStateDateTimeRange(HcmDateTimeUtil::startOfCurrentDay(), DateTimeUtil::maxValue());
validFromRange.value(SysQueryRangeUtil::greaterThanUtcNow());
validToRange.value(SysQuery::valueUnlimited());
// don't include active employments
employmentValidFromRange.value(SysQueryRangeUtil::lessThanUtcNow());
employmentValidToRange.value(SysQueryRangeUtil::greaterThanUtcNow());
qbdsActiveEmployments.enabled(true);
}
if (requireUserRelation)
{
qbdsDirPersonUser.enabled(true);
}
return query;
}