Wednesday, July 11, 2018

PAY_ELEMENT_LINK_API.delete_element_link

PAY_ELEMENT_LINK_API.delete_element_link
DECLARE
   l_effective_start_date   DATE;
   l_effective_end_date     DATE;
   l_entries_warning        BOOLEAN;

   CURSOR c1
   IS
      SELECT   *
        FROM   hr.pay_element_links_f
       WHERE   ELEMENT_LINK_ID IN (SELECT   ELEMENT_LINK_ID FROM TMP_TABLE);
BEGIN
   FOR r1 IN c1
   LOOP
      PAY_ELEMENT_LINK_API.delete_element_link (
         p_effective_date          => R1.EFFECTIVE_START_DATE,
         p_element_link_id         => r1.ELEMENT_LINK_ID,
         p_datetrack_delete_mode   => 'ZAP',
         p_object_version_number   => R1.object_version_number,
         p_effective_start_date    => l_effective_start_date,
         p_effective_end_date      => l_effective_end_date,
         p_entries_warning         => l_entries_warning
      );

      DBMS_OUTPUT.PUT_LINE ('DELETED');
   END LOOP;

   COMMIT;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.PUT_LINE ('ERROR' || '     ' || SQLERRM);
END;

Thursday, July 5, 2018

hr_sit_api.create_sit

hr_sit_api.create_sit
DECLARE
   err_code                         varchar2 (50);
   err_msg                          varchar2 (1000);
   lv_pea_object_version_number     NUMBER;
   lv_analysis_criteria_id          NUMBER;
   lv_person_analysis_criteria_id   NUMBER;

   CURSOR EMP_DETAIL
   IS
      SELECT   *
        FROM   ---TMP_SIT_TABLE
       WHERE       SIT_NAME = :SIT_NAME
               AND (status <> 'U' OR STATUS IS NULL);
BEGIN
   FOR REC IN EMP_DETAIL
   LOOP
      BEGIN
         hr_sit_api.create_sit (
            p_validate                    => FALSE,
            p_effective_date              => SYSDATE,
            p_person_id                   => rec.PERSON_ID,
            p_pea_object_version_number   => lv_pea_object_version_number,
            p_business_group_id           => ---101,
            p_id_flex_num                 => -----50284,
            p_analysis_criteria_id        => lv_analysis_criteria_id,
            p_person_analysis_id          => lv_person_analysis_criteria_id,
            p_date_from                   => TO_DATE (rec.SEGMENT1,
                                                      'DD-MON-RRRR'),
            p_date_to                     => TO_DATE (rec.SEGMENT2,
                                                      'DD-MON-RRRR'), --=> NULL,
            p_segment1                    => TO_CHAR (rec.SEGMENT1,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment2                    => TO_CHAR (rec.SEGMENT2,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment3                    => rec.segment3,
            p_segment4                    => rec.segment4,
            p_segment5                    => rec.segment5,
            p_segment6                    => TO_CHAR (rec.SEGMENT6,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment7                    => rec.segment7,
            p_segment8                    => rec.segment8,
            p_segment9                    => rec.segment9,
            p_segment10                   => rec.segment10,
            p_segment11                   => rec.segment11,
            p_segment12                   => rec.segment12,
            p_segment13                   => rec.segment13,
            p_segment14                   => rec.segment14,
            p_segment15                   => rec.segment15,
            p_segment16                   => rec.segment16,
            p_segment17                   => rec.segment17,
            p_segment18                   => rec.segment18,
            p_segment19                   => rec.segment19,
            p_segment20                   => rec.segment20,
            p_segment21                   => rec.segment21,
            p_segment22                   => rec.segment22,
            p_segment23                   => rec.segment23,
            p_segment24                   => rec.segment24,
            p_segment25                   => rec.segment25,
            p_segment26                   => rec.segment26,
            p_segment27                   => TO_CHAR (rec.SEGMENT27,
                                                      'YYYY/MM/DD HH24:MI:SS'),
            p_segment28                   => rec.segment28,
            p_segment29                   => rec.segment29,
            p_segment30                   => rec.segment30
         );

         COMMIT;

         UPDATE   ----TMP_SIT_TABLE
            SET   ANALYSIS_CRITERIA_ID = lv_analysis_criteria_id,
                  PERSON_ANALYSIS_ID = lv_person_analysis_criteria_id,
                  status = 'U',
                  ERROR_TEXT = 'No Error'
          WHERE   employee_number = rec.employee_number
                  AND srl_no = rec.srl_no;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;

            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   ----TMP_SIT_TABLE
               SET   status = 'E', ERROR_TEXT = err_code || ':' || err_msg
             WHERE   employee_number = rec.employee_number
                     AND srl_no = rec.srl_no;

            COMMIT;

            DBMS_OUTPUT.put_line (' Error Msg:  ' || SQLERRM);
      END;
   END LOOP;
END;

hr_sit_api.delete_sit

hr_sit_api.delete_sit
DECLARE
   CURSOR c1
   IS
      SELECT   PERSON_ANALYSIS_ID, OBJECT_VERSION_NUMBER
        FROM   PER_PERSON_ANALYSES
       WHERE   TRUNC (CREATION_DATE) = TRUNC (SYSDATE);
BEGIN
   FOR r1 IN c1
   LOOP
      hr_sit_api.delete_sit (
         p_person_analysis_id          => r1.PERSON_ANALYSIS_ID,
         p_pea_object_version_number   => r1.OBJECT_VERSION_NUMBER,
         p_validate                    => FALSE
      );
   END LOOP;

   COMMIT;
END;

Monday, July 2, 2018

Create Person Phone in Oracle apps HRMS

Create Person Phone in Oracle apps HRMS
Create Person Phone in Oracle apps HRMS:

Sample code:


DECLARE

   err_code                  VARCHAR2 (50);
   err_msg                   VARCHAR2 (1000);
   l_phone_id                per_phones.phone_id%TYPE;
   l_object_version_number   per_phones.object_version_number%TYPE;

   CURSOR EMP_PHONE
   IS

      SELECT   PHONE_NUMBER,
               EMPLOYEE_NUMBER,
               PERSON_ID,
               SR
        FROM   --- temporary_phone_table
       WHERE   PERSON_ID IS NOT NULL AND LINE_STATUS <> 'INSERTED' OR LINE_STATUS IS NULL;

BEGIN

   FOR REC IN EMP_PHONE

   LOOP

      BEGIN

         hr_phone_api.create_phone (
            p_date_from               => TRUNC (SYSDATE),
            p_date_to                 => NULL,
            p_phone_type              => 'M',
            p_phone_number            => REC.PHONE_NUMBER,
            p_parent_id               => REC.PERSON_ID,
            p_parent_table            => 'PER_ALL_PEOPLE_F',
            p_validate                => FALSE,
            p_effective_date          => SYSDATE,
            p_object_version_number   => l_object_version_number,
            p_phone_id                => l_phone_id
         );

         UPDATE   ----temporary_phone_table
            SET   PHONE_ID = l_phone_id,
                  LINE_STATUS = 'INSERTED',
                  ERROR_TEXT = ''
          WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND SR = rec.SR;

         COMMIT;

      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;

            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   ----temporary_phone_table
               SET   LINE_STATUS = 'ERROR',
                     ERROR_TEXT = err_code || ':' || err_msg
             WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND SR = rec.SR;

            COMMIT;

            DBMS_OUTPUT.put_line (SQLERRM);

      END;

   END LOOP;

END;

Finding dates against day name in a specific month in Oracle Pl/sql

Finding dates against day name in a specific month in Oracle Pl/sql

  SELECT   A.LEV, MONTH_DATE, DAY_NAME
    FROM   (    SELECT   LEVEL LEV,
                         TO_DATE (
                            TO_CHAR (LEVEL, '09')
                            || (SELECT   TO_CHAR (TO_DATE (:DATE1, 'DD-MON-RRRR'),
                                                  'MM')
                                  FROM   DUAL)
                            || (SELECT   TO_CHAR (TO_DATE (:DATE1, 'DD-MON-RRRR'),
                                                  'RRRR')
                                  FROM   DUAL),
                            'dd.mm.yyyy'
                         )
                            month_date,
                         TRIM(UPPER(TO_CHAR (
                                       TO_DATE (
                                          TO_CHAR (LEVEL, '09')
                                          || (SELECT   TO_CHAR (
                                                          TO_DATE (:DATE1,
                                                                   'DD-MON-RRRR'),
                                                          'MM'
                                                       )
                                                FROM   DUAL)
                                          || (SELECT   TO_CHAR (
                                                          TO_DATE (:DATE1,
                                                                   'DD-MON-RRRR'),
                                                          'RRRR'
                                                       )
                                                FROM   DUAL),
                                          'dd.mm.yyyy'
                                       ),
                                       'DAY'
                                    )))
                            DAY_NAME
                  FROM   DUAL
                 WHERE   ROWNUM <= EXTRACT (DAY FROM LAST_DAY (:DATE1))
            CONNECT BY   LEVEL = ROWNUM) A
   WHERE   A.DAY_NAME = 'SATURDAY'
ORDER BY   1

Sunday, July 1, 2018

Create Person Address (Temporary) in Oracle apps HRMS

Create Person Address (Temporary) in Oracle apps HRMS
Create Person Address (Temporary) in Oracle apps HRMS:


Sample Code:

DECLARE
   err_code                   VARCHAR2 (50);
   err_msg                    VARCHAR2 (1000);
   ln_address_id              PER_ADDRESSES.ADDRESS_ID%TYPE;
   ln_object_version_number   PER_ADDRESSES.OBJECT_VERSION_NUMBER%TYPE;
   V_COUNT                    NUMBER (5);

   CURSOR EMP_ADD
   IS
      SELECT T.ADDRESS_LINE1,
             T.TOWN_OR_CITY,
             T.COUNTRY,
             T.ADDR_ATTRIBUTE1,
             T.ADDR_ATTRIBUTE2,
             T.ADDR_ATTRIBUTE3,
             PERSON_ID,
             EMPLOYEE_NUMBER,
             SR
        FROM temporary_address_table T
       WHERE     PRIMARY_FLAG = 'N'
             AND ADDRESS_ID IS NULL
             AND PERSON_ID IS NOT NULL
             AND (LINE_STATUS NOT IN ('I', 'U') OR LINE_STATUS IS NULL);

BEGIN
   FOR REC IN EMP_ADD
   LOOP
      BEGIN
         SELECT COUNT (*)
           INTO V_COUNT
           FROM PER_ADDRESSES
          WHERE PERSON_ID = rec.person_id AND PRIMARY_FLAG = 'N';

         IF V_COUNT = 0
         THEN
            hr_person_address_api.create_person_address (
               p_effective_date          => TRUNC (SYSDATE),
               --            P_PRADD_OVLAPVAL_OVERRIDE   => FALSE,

               --            P_VALIDATE_COUNTY           => TRUE,

               p_person_id               => rec.person_id,
               p_primary_flag            => 'N',
               p_style                   => 'PK_GLB',
               p_date_from               => TRUNC (SYSDATE),
               p_address_line1           => REC.ADDRESS_LINE1,
               p_addr_attribute1         => REC.ADDRESS_LINE1,
               p_town_or_city            => REC.TOWN_OR_CITY,
               p_addr_attribute2         => REC.TOWN_OR_CITY,
               p_addr_attribute3         => 'Pakistan',
               p_country                 => 'PK',
               p_address_id              => ln_address_id,
               p_object_version_number   => ln_object_version_number);

            COMMIT;

            UPDATE temporary_address_table
               SET ADDRESS_ID = ln_address_id,
                   LINE_STATUS = 'I',
                   ERROR_TEXT = ''
             WHERE EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
         ELSE
            NULL;
         END IF;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;
            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE temporary_address_table
               SET LINE_STATUS = 'E', ERROR_TEXT = err_code || ':' || err_msg
             WHERE EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
            DBMS_OUTPUT.put_line (SQLERRM);
      END;
   END LOOP;
END;

Create Person Address (Permanent) in Oracle apps HRMS

Create Person Address (Permanent) in Oracle apps HRMS
Create Person Address (Permanent) in Oracle apps HRMS:

Sample Code:

DECLARE
   err_code                   VARCHAR2 (50);
   err_msg                    VARCHAR2 (1000);
   ln_address_id              PER_ADDRESSES.ADDRESS_ID%TYPE;
   ln_object_version_number   PER_ADDRESSES.OBJECT_VERSION_NUMBER%TYPE;

   CURSOR EMP_ADD
   IS
      SELECT   T.ADDRESS_LINE1,
               T.TOWN_OR_CITY,
               T.COUNTRY,
               T.ADDR_ATTRIBUTE1,
               T.ADDR_ATTRIBUTE2,
               T.ADDR_ATTRIBUTE3,
               PERSON_ID,
               EMPLOYEE_NUMBER,
               SR
        FROM   temporary_address_table T
       WHERE   LINE_STATUS NOT IN ('I', 'U')
               OR    LINE_STATUS IS NULL
                 AND ADDRESS_ID IS NULL
                 AND PRIMARY_FLAG = 'Y';
BEGIN
   FOR REC IN EMP_ADD
   LOOP
      BEGIN
         hr_person_address_api.create_person_address (
            p_effective_date          => TRUNC (SYSDATE),
            --            P_PRADD_OVLAPVAL_OVERRIDE   => FALSE,
            --            P_VALIDATE_COUNTY           => TRUE,
            p_person_id               => rec.person_id,
            p_primary_flag            => 'Y',
            p_style                   => 'PK_GLB',
            p_date_from               => TRUNC (SYSDATE),
            p_address_line1           => REC.ADDRESS_LINE1,
            p_addr_attribute1         => REC.ADDRESS_LINE1,
            p_town_or_city            => REC.TOWN_OR_CITY,
            p_addr_attribute2         => REC.TOWN_OR_CITY,
            p_addr_attribute3         => 'Pakistan',
            p_country                 => 'PK',
            p_address_id              => ln_address_id,
            p_object_version_number   => ln_object_version_number
         );

         COMMIT;

         UPDATE   temporary_address_table
            SET   ADDRESS_ID = ln_address_id,
                  LINE_STATUS = 'I',
                  ERROR_TEXT = ''
          WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

         COMMIT;
      EXCEPTION
         WHEN OTHERS
         THEN
            ROLLBACK;
            err_code := SQLCODE;
            err_msg := SUBSTR (SQLERRM, 1, 200);

            UPDATE   temporary_address_table
               SET   LINE_STATUS = 'E',
                     ERROR_TEXT = err_code || ':' || err_msg
             WHERE   EMPLOYEE_NUMBER = rec.EMPLOYEE_NUMBER AND sr = rec.sr;

            COMMIT;
            DBMS_OUTPUT.put_line (SQLERRM);
      END;
   END LOOP;
END;