hcmworker

PHOTO EMBED

Sun Jan 21 2024 11:02:22 GMT+0000 (Coordinated Universal Time)

Saved by @MinaTimo

[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;
    }

}
content_copyCOPY