Tuesday, December 26, 2017

Query of Position Hierarchy

Query of Position Hierarchy 


    SELECT DISTINCT
           CONNECT_BY_ROOT (PARENT_POSITION_ID) perant_id,
           HR_GENERAL.DECODE_POSITION_LATEST_NAME (parent_POSITION_ID)
              direct_parent_name,
           SUBORDINATE_POSITION_ID child_id,
           HR_GENERAL.DECODE_POSITION_LATEST_NAME (SUBORDINATE_POSITION_ID)
              child_name,
           ---------------------------------
           SYS_CONNECT_BY_PATH (SUBORDINATE_POSITION_ID, '/') PATH,
           ---------------------------------
           HR_GENERAL.DECODE_POSITION_LATEST_NAME (
              REPLACE (
                 SUBSTR (
                    SYS_CONNECT_BY_PATH (SUBORDINATE_POSITION_ID, '/'),
                    0,
                    INSTR (SYS_CONNECT_BY_PATH (SUBORDINATE_POSITION_ID, '/'),
                           '/',
                           2)),
                 '/',
                 NULL))
              substr_parent_name,
           ---------------------------------
           HR_GENERAL.DECODE_POSITION_LATEST_NAME (
              SUBSTR (SYS_CONNECT_BY_PATH (SUBORDINATE_POSITION_ID, '/'), 2, 4))
              parent_name,
           ---------------------------------
           LEVEL "LVL",
           BUSINESS_GROUP_ID
      FROM PER_POS_STRUCTURE_ELEMENTS ss
     WHERE SUBORDINATE_POSITION_ID = :pchild_id                        -- 4101
--                                               AND LEVEL > (8)-3
CONNECT BY NOCYCLE PRIOR SUBORDINATE_POSITION_ID = parent_POSITION_ID  --PRIOR
START WITH                                                         --LEVEL = 0
           (   SUBORDINATE_POSITION_ID) IS NOT NULL
           AND (PARENT_POSITION_ID) IS NOT NULL
  ORDER BY LEVEL DESC

Delete Person Absence API


Note this when its Submit but if still in AME Cycle Use Wrok Flow to approve then delete it or Reject 
--
The API 
---
DECLARE
   CURSOR get_absence
   IS
      SELECT absence_attendance_id, object_version_number
        FROM per_absence_attendances
       WHERE TRUNC (creation_date) = TRUNC (SYSDATE);
BEGIN
   FOR fetch_absence IN get_absence
   LOOP
      BEGIN
         hr_person_absence_api.delete_person_absence (
            p_validate                => FALSE,
            p_absence_attendance_id   => fetch_absence.absence_attendance_id,
            p_object_version_number   => fetch_absence.object_version_number);
         COMMIT;
         DBMS_OUTPUT.put_line (
               fetch_absence.absence_attendance_id
            || ' has been deleted Successfully !!!');
      EXCEPTION
         WHEN OTHERS
         THEN
            DBMS_OUTPUT.put_line (
                  'Inner Exception: '
               || fetch_absence.absence_attendance_id
               || ' - - '
               || SQLERRM);
      END;
   END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Main Exception: ' || SQLERRM);
END;

Tuesday, August 22, 2017

Position hierarchy Get Parent By Child


-Get The Parent Position Base on Child Position ID
all Related to 
HRMS =>work Stricture => Position => Position hierarchy Form. 


---------------
CREATE OR REPLACE FUNCTION XX_GET_MGR_POS
                                         (PChildPosId    NUMBER,
                                           PBg            NUMBER,
                                          )
   RETURN NUMBER
AS
   v_mgr_pos           NUMBER;
BEGIN
   BEGIN
      SELECT PARENT_POSITION_ID
        INTO V_MGR_POS
        FROM (SELECT HAP.NAME PARENT_NAME,
                     PSE.PARENT_POSITION_ID,
                     -------------------------------------
                     HAS.NAME CHILD_NAME,
                     PSE.SUBORDINATE_POSITION_ID,
                     ------------------------------------
                     ROWNUM LVL
                FROM (SELECT NAME, POSITION_ID
                        FROM HR_ALL_POSITIONS_F_TL
                       WHERE LANGUAGE = USERENV ('LANG')) HAP,
                     (SELECT NAME, POSITION_ID
                        FROM HR_ALL_POSITIONS_F_TL
                       WHERE     LANGUAGE = USERENV ('LANG')
                             AND POSITION_ID = PChildPosId) HAS,
                     PER_POS_STRUCTURE_ELEMENTS PSE,
                     PER_POS_STRUCTURE_VERSIONS PVE,
                     PER_POSITION_STRUCTURES PPS
               WHERE     1 = 1
                     AND PSE.BUSINESS_GROUP_ID = PBg
                     AND PVE.POSITION_STRUCTURE_ID =
                            PPS.POSITION_STRUCTURE_ID
                     AND PSE.POS_STRUCTURE_VERSION_ID =
                            PVE.POS_STRUCTURE_VERSION_ID
                     AND SYSDATE BETWEEN PVE.DATE_FROM
                                     AND NVL (PVE.DATE_TO, SYSDATE)
                     AND HAP.POSITION_ID = PSE.PARENT_POSITION_ID
                     AND HAS.POSITION_ID = PSE.SUBORDINATE_POSITION_ID)
       WHERE UPPER (PARENT_NAME) LIKE '%MANAGER%';
   EXCEPTION
      WHEN NO_DATA_FOUND
      THEN
         -------------------if no position then get the CEO upper the Position From Parameter---------------         BEGIN
            SELECT PARENT_POSITION_ID
              INTO V_MGR_POS
              FROM (SELECT HAP.NAME PARENT_NAME,
                           PSE.PARENT_POSITION_ID,
                           HAS.NAME CHILD_NAME,
                           PSE.SUBORDINATE_POSITION_ID,
                           ROWNUM LVL
                      FROM (SELECT NAME, POSITION_ID
                              FROM HR_ALL_POSITIONS_F_TL
                             WHERE LANGUAGE = USERENV ('LANG')) HAP,
                           (SELECT NAME, POSITION_ID
                              FROM HR_ALL_POSITIONS_F_TL
                             WHERE     LANGUAGE = USERENV ('LANG')
                                   AND POSITION_ID = PChildPosId) HAS,
                           PER_POS_STRUCTURE_ELEMENTS PSE,
                           PER_POS_STRUCTURE_VERSIONS PVE,
                           PER_POSITION_STRUCTURES PPS
                     WHERE     1 = 1
                           AND PSE.BUSINESS_GROUP_ID = PBG
                           AND PVE.POSITION_STRUCTURE_ID =
                                  PPS.POSITION_STRUCTURE_ID
                           AND PSE.POS_STRUCTURE_VERSION_ID =
                                  PVE.POS_STRUCTURE_VERSION_ID
                           AND SYSDATE BETWEEN PVE.DATE_FROM
                                           AND NVL (PVE.DATE_TO, SYSDATE)
                           AND HAP.POSITION_ID = PSE.PARENT_POSITION_ID
                           AND HAS.POSITION_ID = PSE.SUBORDINATE_POSITION_ID)
             WHERE UPPER (PARENT_NAME) LIKE '%CEO%';
         END;
   END;
   RETURN V_MGR_POS;
EXCEPTION
   WHEN OTHERS
   THEN
      RETURN 0;
END;


-----------------------------------------------------------------------
SELECT XX_GET_MGR_POS (6419, 81) FROM DUAL
-----------------------------------------------------------------------

SQL Query to Convert number into Words for Money

SELECT INITCAP ( DECODE ( FLOOR (TO_NUMBER ( :amount)), 0, '', TO_CHAR (TO_DATE...