Thursday, 31 January 2019

return Temp Table in AIF service method x++

[
    SysEntryPointAttribute(true),
    AifCollectionTypeAttribute("return",Types::Record,tableStr(FCC_EmpDependentTmp)),
    AifCollectionTypeAttribute("PersonnelNumberId",Types::String,extendedTypeStr(HcmPersonnelNumberId))
]
public FCC_EmpDependentTmp getEmpDependentByEmpId(HcmPersonnelNumberId    _personnelNumberId)
{
    Query                               query = new Query(queryStr (FCC_EmpDependent));
    QueryRun                            qRun;
    QueryBuildRange                     qbr;

    DirPartyRelationships_Parent        parentView;
    HcmPersonPrivateDetails             privateDetails;
    HcmJob                              hcmJob, jobLocal;
    HcmPosition                         hcmPosition;
    HcmWorker                           hcmWorker;
    HcmPositionDetail                   hcmPositionDetail;
    FCC_JobRoleTable                    jobRoleTable;
    HcmPositionWorkerAssignment         workerAssignment;
    DirPartyTable                       dirpartyTable;

    FCC_EmpDependentTmp                 empDependentTmp;

    qbr = query.dataSourceTable( tableNum (HcmWorker)).addRange( fieldNum (HcmWorker, personnelNumber));
    qbr.value(_personnelNumberId);
    qRun = new QueryRun(query);

    while (qRun.next())
    {
        privateDetails      =   qRun.get(tableNum(HcmPersonPrivateDetails));
        parentView          =   qRun.get(tableNum(DirPartyRelationships_Parent));
        dirpartyTable       =   qRun.get(tableNum(DirPartyTable));

        while select hcmPosition
        join hcmPositionDetail
            Where hcmPosition.RecId ==  hcmPositionDetail.Position
                join hcmJob
                    where hcmPositionDetail.Job ==  hcmJob.RecId
                        outer join jobRoleTable
                        where hcmJob.FCC_JobRoleId  ==  jobRoleTable.JobRoleId
                            join workerAssignment
                                where hcmPosition.RecId == workerAssignment.Position
                                    join  hcmWorker
                                        where workerAssignment.Worker == hcmWorker.RecId
                                        && hcmWorker.PersonnelNumber  == privateDetails.FCC_IsRelativeInEPG
        {
            empDependentTmp.RelativeEmpId           =       privateDetails.FCC_IsRelativeInEPG;
            empDependentTmp.RelativeEmpName         =       dirpartyTable.Name;
            empDependentTmp.PositionId              =       hcmPosition.PositionId;
            empDependentTmp.PositionName            =       hcmPositionDetail.Description;
            empDependentTmp.JobRoleId               =       jobRoleTable.JobRoleId;
            empDependentTmp.JobRoleName             =       jobRoleTable.Description;
            empDependentTmp.Relationship            =       parentView.Description;
            empDependentTmp.RefRecId                =       dirpartyTable.RecId;
            empDependentTmp.insert();
        }
    }

    select RelativeEmpId,
           JobRoleName,
           PositionName,
           Relationship,
           RefRecId from empDependentTmp;


    return empDependentTmp;
}

No comments:

Post a Comment