[ExtensionOf(tablestr(HcmWorker))]
final class HcmWorkerTableNetwaysProcrementEnahancement_Extension
{
public static HcmPositionRecId getPrimaryPosition(HcmWorker _hcmWorker, utcdatetime _asOfDate = DateTimeUtil::utcNow())
{
HcmPositionRecId positionRecId = 0;
HcmPositionWorkerAssignment hcmPositionWorkerAssignment;
HcmPositionWorkerAssignmentRecId hcmPositionWorkerAssignmentRecId;
HcmWorkerRecId _workerRecId;
_workerRecId=_hcmWorker.RecId;
hcmPositionWorkerAssignmentRecId = HcmWorker::getPrimaryPositionAssignment(_hcmWorker);
hcmPositionWorkerAssignment = HcmPositionWorkerAssignment::find(hcmPositionWorkerAssignmentRecId);
if (hcmPositionWorkerAssignment)
{
positionRecId = hcmPositionWorkerAssignment.Position;
}
return positionRecId;
}
public static HcmPositionWorkerAssignmentRecId getPrimaryPositionAssignment(HcmWorker _hcmWorker,utcdatetime _asOfDate = DateTimeUtil::utcNow())
{
HcmPositionRecId positionRecId = 0;
HcmPositionWorkerAssignmentRecId positionWorkerAssignmentRecId = 0;
HcmPositionWorkerAssignment hcmPositionWorkerAssignment;
HcmPositionDuration hcmPositionDuration;
boolean isValidPosition = true;
HcmWorkerPrimaryPosition hcmWorkerPrimaryPosition;
HcmWorkerRecId _workerRecId;
_workerRecId=_hcmWorker.RecId;
// check whether the worker has a primary position assignment
select firstonly ValidTimeState(_asOfDate) PositionAssignment from hcmWorkerPrimaryPosition
where hcmWorkerPrimaryPosition.Worker == _workerRecId
exists join hcmPositionWorkerAssignment
where hcmPositionWorkerAssignment.Worker == hcmWorkerPrimaryPosition.Worker
&& hcmPositionWorkerAssignment.RecId == hcmWorkerPrimaryPosition.PositionAssignment
exists join hcmPositionDuration where hcmPositionDuration.Position == hcmPositionWorkerAssignment.Position;
positionWorkerAssignmentRecId = hcmWorkerPrimaryPosition.PositionAssignment;
if (positionWorkerAssignmentRecId == 0)
{
// no valid primary position existed for the worker, so retrieve the position
// assignment for the worker in which the worker has the longest active seniority
select ValidTimeState(_asOfDate) Position, RecId from hcmPositionWorkerAssignment
order by ValidFrom asc
where hcmPositionWorkerAssignment.Worker == _workerRecId
exists join hcmPositionDuration
where hcmPositionDuration.Position == hcmPositionWorkerAssignment.Position;
positionWorkerAssignmentRecId = hcmPositionWorkerAssignment.RecId;
}
return positionWorkerAssignmentRecId;
}
public static OMDepartmentRecId getPrimaryDepartmentRecId(HcmWorker _hcmWorker,utcdatetime _asOfDate = DateTimeUtil::utcNow())
{
HcmPositionRecId positionRecId;
HcmPositionDetail positionDetail;
HcmWorkerRecId _workerRecId;
_workerRecId=_hcmWorker.RecId;
// Determine the primary position of the worker.
positionRecId = HcmWorker::getPrimaryPosition(_hcmWorker);
if (positionRecId)
{
// Retrieve the corresponding position.
positionDetail = HcmPositionDetail::findByPosition(positionRecId, _asOfDate);
}
return positionDetail.Department;
}
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter