Employee Status change

 3 Replies
 0 Subscribed to this topic
 17 Subscribed to this forum
Sort:
Author
Messages
Chesca
Veteran Member
Posts: 490
Veteran Member
    I am writing custom code to calculate accruals based on the employee's FTE and  annual hours. When employees switch from full time to part-time, I need to know what their FTE was when he/she was full time. I was originally looking in HRHISTORY but I noticed we don't have a record in HRHISTORY for a change in FTE. It only shows the updated FTE value. Any suggestions would be greatly appreciated.
    BarbR
    Veteran Member
    Posts: 306
    Veteran Member
      You have to query the previous FTE value in HRHISTORY
      BarbR
      Veteran Member
      Posts: 306
      Veteran Member
        Here is an example where we are looking for personnel action REHIRE 1 and reporting either the values in the personnel action or if not changed, the preceding value in HRHISTORY for ProcessLevel, Department, and Job.
        *** REHIRE actions with PL, Dept, and Job (which may not be changed by the action).
        *** It returns the action values, if present, or gets the previous value.
        SELECT PAH.EMPLOYEE, PAH.ACTION_CODE, PAH.EFFECT_DATE,
        CASE WHEN (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=14) IS NULL THEN
        (Select HRH.A_VALUE from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and HRH.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE and (hrh.beg_date=(select Max(hrh.beg_date) from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and hrh.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE ELSE (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=14) END as PL,
        CASE WHEN (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=15) IS NULL THEN
        (Select HRH.A_VALUE from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and HRH.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE and (hrh.beg_date=(select Max(hrh.beg_date) from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and hrh.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE ELSE (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=15) END as Dept,
        CASE WHEN (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=19) IS NULL THEN
        (Select HRH.A_VALUE from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and HRH.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE and (hrh.beg_date=(select Max(hrh.beg_date) from prod.hrhistory hrh where HRH.COMPANY=PAH.COMPANY and hrh.EMPLOYEE = PAH.EMPLOYEE
        and hrh.BEG_DATE ELSE (Select HRH.A_VALUE from prod.hrhistory hrh where PAH.COMPANY = HRH.COMPANY and PAH.EMPLOYEE = HRH.EMPLOYEE and
        PAH.OBJ_ID = HRH.ACT_OBJ_ID and HRH.FLD_NBR=19) END as Job
        FROM PROD.PERSACTHST PAH
        WHERE PAH.ACTION_CODE = 'REHIRE 1' AND PAH.EFFECT_DATE BETWEEN '01-JAN-2012' AND '31-DEC-2013'
        jaherb
        Veteran Member
        Posts: 164
        Veteran Member
          It has to come from the HRHISTORY table... You will not find it stored elsewhere. Sorry.... You should have them change the HR10 form to store history for FTE. Once it is stored, you would need to query HRHISTORY for field 56.