Configuring employee selection for shift trades
Employees requesting a shift swap or giveaway must designate a substitute employee to work their assigned shift.
An employee selection dialog box is shown when the user selects
or to initiate a shift trade in the Self Service Portal. There are two ways to select a substitute employee:- The user can specify an employee in the Select an employee for your shift give away or swap field.
- The user can select an employee from the list in the section.
Select an employee
Select an employee for your shift give away or swap is a DBLookup field called PORTAL_TRADE_SOURCE_EMPLOYEE. The SQL query used to filter employees in this DBLookup can be modified in configuration mode. The query is located under . Specify the query in the Field Parameters field.
For example, you can use this query to select everyone in the organization:
sourceType=SQL source='SELECT EMP_ID, EMP_NAME, EMP_FULLNAME FROM
EMPLOYEE e WHERE EXISTS (SELECT * FROM WORKBRAIN_USER WHERE
WORKBRAIN_USER.EMP_ID = e.EMP_ID AND WORKBRAIN_USER.WBU_ACTIVE = \'Y\')'
sourceKeyField='emp_id' sourceLabelField='emp_fullname' labelFieldStatus=edit
multiChoice='false' all='false' title='LOOKUP_EMPLOYEES' width='10'
The default query that is provided out of the box is shown below. The default query applies these filters:
- Active employees with an associated user account.
- Team: Users must have an effective team assignment that matches the shift's team.
- MVS job: Users must have the job required for the shift, or an associated job of the required job.
- LFSO job: Users must have the exact job required to perform the shift. Job sets are not considered when validating jobs for LFSO shift trades.
- Skill: For MVS shifts only, users must have all mandatory skills, and must meet or exceed the proficiency level that is required for the shift. (Skills are not considered as a qualifying factor when trading LFSO shifts.)
sourceType=SQL
sourceParams='INTEGER==#control.shiftSumId#~|~INTEGER==#control.unit#~|
~DATE==#control.workDate#~|~DATE==#control.workDate#~|~DATE==#control.workDate#~|
~INTEGER==#control.jobId#~|~STRING==#control.shiftType#~|
~STRING==#control.shiftType#~|~INTLIST==#control.skillIds#~|
~INTEGER==#control.empId#~|~INTEGER==#control.skillCount#'
source='SELECT EMP_MAIN.EMP_ID, EMP_MAIN.EMP_FULLNAME FROM
(SELECT EMP.EMP_ID, EMP.EMP_NAME, EMP.EMP_FULLNAME, WBT.WBT_NAME, EMP_SKILL.STSKL_ID
FROM EMPLOYEE_TEAM EMP_TEAM INNER JOIN WORKBRAIN_TEAM WBT
ON EMP_TEAM.WBT_ID = WBT.WBT_ID INNER JOIN EMPLOYEE EMP ON EMP.EMP_ID = EMP_TEAM.EMP_ID
INNER JOIN EMPLOYEE_JOB EMP_JOB ON EMP_JOB.EMP_ID = EMP.EMP_ID INNER JOIN
(SELECT JOB_ID AS JOB_ID, JOB_ID AS JOB_CHILD_ID, \'OTHER\' AS SHFT_TYP,
JOB_START_DATE, JOB_END_DATE FROM JOB UNION ALL SELECT JOB_ID AS JOB_ID, JOB_ID
AS JOB_CHILD_ID, \'MVS\' AS SHFT_TYP, JOB_START_DATE, JOB_END_DATE FROM JOB
UNION ALL SELECT JOB_ASSC.JOB_ID AS JOB_ID, JOB_CHILD_ID AS JOB_CHILD_ID, \'MVS\'
AS SHFT_TYP, JOB_START_DATE, JOB_END_DATE FROM ES_JOB_ASSOCIATION JOB_ASSC INNER JOIN JOB J
ON J.JOB_ID= JOB_ASSC.JOB_CHILD_ID UNION ALL SELECT JOB_CHILD_ID AS JOB_ID, JOB_ASSC.JOB_ID
AS JOB_CHILD_ID, \'MVS\' AS SHFT_TYP, JOB_START_DATE, JOB_END_DATE
FROM ES_JOB_ASSOCIATION JOB_ASSC INNER JOIN JOB J ON J.JOB_ID = JOB_ASSC.JOB_ID)
JOB_ASSOC ON JOB_ASSOC.JOB_ID = EMP_JOB.JOB_ID
OR JOB_ASSOC.JOB_CHILD_ID = EMP_JOB.JOB_ID LEFT JOIN
(SELECT EMPJOB_RATE_INDEX AS SKL_WGT, EMPJOB_RATE_INDEX AS SKL_LVL, JOB_ID AS STSKL_ID,
EMP_SKLL.EMP_ID, \'EMP\' AS SKL_TYP, 0 AS SKLT, EMP_SKLL.EMPJOB_START_DATE AS STRT_DTE,
EMP_SKLL.EMPJOB_END_DATE AS END_DTE FROM EMPLOYEE_JOB EMP_SKLL UNION ALL
SELECT STEMPSKL_WEIGHT AS SKL_WGT, SHIFTSUMSKL_LEVEL AS SKL_LVL, EMP_SKLL.STSKL_ID
AS STSKL_ID, EMP_SKLL.EMP_ID, \'SHIFT\' AS SKL_TYP, EMP_SKLL.STSKL_ID
AS SKLT, EMP_SKLL.STEMPSKL_START_DATE AS STRT_DTE, EMP_SKLL.STEMPSKL_END_DATE
AS END_DTE FROM ST_EMP_SKILL EMP_SKLL INNER JOIN ES_SHIFT_SUMMARY_SKILL ESSS
ON ESSS.STSKL_ID = EMP_SKLL.STSKL_ID WHERE ESSS.SHIFTSUM_ID = ? )
EMP_SKILL ON EMP_SKILL.EMP_ID = EMP.EMP_ID WHERE EMP_TEAM.WBT_ID IN (?)
AND ? BETWEEN EMP_TEAM.EMPT_START_DATE AND
EMP_TEAM.EMPT_END_DATE AND ? BETWEEN EMP_SKILL.STRT_DTE AND EMP_SKILL.END_DTE
AND ? BETWEEN JOB_ASSOC.JOB_START_DATE
AND JOB_ASSOC.JOB_END_DATE AND EXISTS
(SELECT COUNT(*) FROM WORKBRAIN_USER WBU WHERE WBU.WBU_ACTIVE = \'Y\' AND WBU.EMP_ID = EMP.EMP_ID)
AND JOB_ASSOC.JOB_CHILD_ID = ? AND JOB_ASSOC.SHFT_TYP =
(CASE WHEN ? = \'MVS\' THEN \'MVS\' ELSE \'OTHER\' END)
AND EMP_SKILL.SKL_TYP =
(CASE WHEN 0 = (SELECT COUNT(*) FROM (SELECT EMP_SKILL.SKL_TYP) B_SES
WHERE B_SES.SKL_TYP = \'SHIFT\')
OR ? = \'OTHER\' THEN \'EMP\' ELSE \'SHIFT\' END)
AND EMP_SKILL.SKLT IN (?) AND EMP_SKILL.SKL_WGT >= EMP_SKILL.SKL_LVL AND EMP.EMP_ID != ?)
EMP_MAIN GROUP BY EMP_MAIN.EMP_ID, EMP_MAIN.EMP_NAME, EMP_MAIN.EMP_FULLNAME,
EMP_MAIN.WBT_NAME HAVING COUNT(EMP_MAIN.EMP_ID) >= ? ORDER BY EMP_ID ASC'
sourceKeyField='emp_id' sourceLabelField='emp_fullname' labelFieldStatus=edit
multiChoice='false' all='false' title='LOOKUP_EMPLOYEES' width='10'
Eligible teammates
The
section lists employees who belong to the same home team as the user, and who have the job and skill qualifications required by the shift. The parameters for the section cannot be configured.