Tuesday, 11 February 2020

Hrms Technical API's Package - (Create Employee, Assignment, SIT, EIT, Elements, Job, Grade, Position....)

***The following Package used to create the New employee with Assignment, Address, SIT(Special Information), EIT(Extra Information),  Element Entries with Values, Jobs, Grades, Positions, Personal Payment Method, Employee Phone Details......Using API's.


Package Specification:
-----------------------------
CREATE OR REPLACE PACKAGE APPS.xxse_emp_master_cre_api
IS
-- =============================================================================
--
--  FILENAME
--    XXSE_EMP_MASTER_CRE_API.pks
--
--  DESCRIPTION
--    BLUE PRINT : EMPLOYEE Creation API
--
-- -----------------------------------------------------------------------------
--
-- CHANGE LIST
-- ===========
--
-- VERSION DATE        AUTHOR                COMMENT
-- -------+-----------+--------------------+------------------------------------
-- 1.0     04-JUN-2019  Subba Reddy       CREATED.
--
-- =============================================================================
--
-- -----------------------------------------------------------------------------
-- -----------------First Create Employee---------------------------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE create_emp (
      errbuf               OUT      VARCHAR2,
      retcode              OUT      VARCHAR2,
      pp_employee_number   IN       VARCHAR2 DEFAULT NULL
   );

--
-- -----------------------------------------------------------------------------
-- -----------------After Create Emp,Create Address-----------------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE create_address (p_person_id NUMBER);

--
-- -----------------------------------------------------------------------------
-- -----------------After Create Emp,Correct Assg Details-----------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE correct_assg_det (p_person_id NUMBER, p_business_group_id NUMBER);

--
--Creation Speceial Information
   PROCEDURE xx_create_sit (p_person_id NUMBER, p_business_group_id NUMBER);

--
--Creation Extra Information
   PROCEDURE xx_create_eit (p_person_id NUMBER);

--
--Creating Employee Element Entry Values
   PROCEDURE xx_emp_element_entry (p_person_id NUMBER);

--
--Creating Employee Jobs
   PROCEDURE xx_emp_jobs (p_person_id NUMBER, p_business_group_id NUMBER);

--
--Creating Employee Grade
   PROCEDURE xx_emp_grade (p_person_id NUMBER, p_business_group_id NUMBER);

--
-- Creating Employee Position
   PROCEDURE xx_emp_position (p_person_id NUMBER, p_business_group_id NUMBER);

--
-- Creating Employee Personal Payment Method
   PROCEDURE xx_emp_per_pay_mtd (
      p_person_id           NUMBER,
      p_business_group_id   NUMBER
   );

--
---- Creating Phone Number at Employee Level(Others-->Phones)
   PROCEDURE xx_emp_phone (p_person_id NUMBER);
END xxse_emp_master_cre_api;
/

---------------------
Package Body:
---------------------
CREATE OR REPLACE PACKAGE BODY APPS.xxse_emp_master_cre_api
IS
-- =============================================================================
--
--  FILENAME
--    XXSE_EMP_MASTER_CRE_API.pkb
--
--  DESCRIPTION
--    BLUE PRINT : EMPLOYEE Creation API
--
-- -----------------------------------------------------------------------------
--
-- CHANGE LIST
-- ===========
--
-- VERSION DATE        AUTHOR                COMMENT
-- -------+-----------+--------------------+------------------------------------
-- 1.0     04-JUN-2019 Subba Reddy           CREATED.
--
-- =============================================================================
   PROCEDURE LOG (p_message IN VARCHAR2)
   IS
   BEGIN
      fnd_file.put_line (fnd_file.LOG, p_message);
      DBMS_OUTPUT.put_line (p_message);
   EXCEPTION
      WHEN OTHERS
      THEN
         fnd_file.put_line (fnd_file.LOG, 'Error at LOG:' || SQLERRM);
         DBMS_OUTPUT.put_line ('Error at LOG:' || SQLERRM);
   END;

--
-- -----------------------------------------------------------------------------
-- -----------------First Create Employee---------------------------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE create_emp (
      errbuf               OUT      VARCHAR2,
      retcode              OUT      VARCHAR2,
      pp_employee_number   IN       VARCHAR2 DEFAULT NULL
   )
   IS
      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1
            AND xxe.employee_number =
                                 NVL (pp_employee_number, xxe.employee_number)
            AND status = 'ACTIVE'
            AND 0 =
                   (SELECT COUNT (*)
                      FROM per_all_people_f
                     WHERE 1 = 1
                       AND employee_number = xxe.employee_number
                       AND SYSDATE BETWEEN effective_start_date
                                       AND effective_end_date)
            AND NVL (interface_status, 'NEW') IN
                                                ('NEW', 'ERROR', 'API ERROR');

      l_person_id                   per_all_people_f.person_id%TYPE;
      l_full_name                   per_all_people_f.full_name%TYPE;
      l_assignment_id               per_all_assignments_f.assignment_id%TYPE;
      l_object_version_number       per_all_assignments_f.object_version_number%TYPE;
      l_asg_object_version_number   NUMBER;
      l_per_effective_start_date    per_all_people_f.effective_start_date%TYPE;
      l_per_effective_end_date      per_all_people_f.effective_end_date%TYPE;
      l_per_comment_id              per_all_people_f.comment_id%TYPE;
      l_assignment_seq              per_all_assignments_f.assignment_sequence%TYPE;
      l_assignment_number           per_all_assignments_f.assignment_number%TYPE;
      l_name_combination_warning    BOOLEAN;
      l_assign_payroll_warning      BOOLEAN;
      l_orig_hire_warning           BOOLEAN;
      p_email_address               VARCHAR2 (500);
      p_blood_type                  VARCHAR2 (100);
      p_date_of_birth               DATE;
      p_country_of_birth            VARCHAR2 (500);
      p_title                       VARCHAR2 (500);
      p_town_of_birth               VARCHAR2 (500);
      p_nationality                 VARCHAR2 (500);
      p_region_of_birth             VARCHAR2 (500);
      p_office_number               VARCHAR2 (500);
      p_hire_date                   DATE;
      p_business_group_id           NUMBER;
      p_last_name                   VARCHAR2 (500);
      p_first_name                  VARCHAR2 (500);
      p_middle_names                VARCHAR2 (500);
      p_sex                         VARCHAR2 (500);
      p_national_identifier         VARCHAR2 (500);
      p_known_as                    VARCHAR2 (500);
      p_employee_number             VARCHAR2 (500);
      l_nationality                 VARCHAR2 (1500);
      l_gender                      VARCHAR2 (1500);
      l_employee_number             VARCHAR2 (1500);
      p_count                       NUMBER;
      --
      l_error_flag                  VARCHAR2 (10);
      l_error_message               VARCHAR2 (10000);
      --
      l_hire_date                   DATE;
      l_marital_status              VARCHAR2 (10);
      l_person_type_id              NUMBER;
      l_business_group_id           NUMBER
                       := fnd_profile.value_specific ('PER_BUSINESS_GROUP_ID');
   BEGIN
      fnd_global.apps_initialize (user_id           => fnd_global.user_id,
                                  resp_id           => fnd_global.resp_id,
                                  resp_appl_id      => fnd_global.resp_appl_id
                                 );

      FOR i IN c1
      LOOP
         BEGIN
            LOG ('##############################################');
            LOG ('Employee Number:' || i.employee_number);
            LOG ('###############################################');
            l_error_flag := 'N';
            l_person_id := NULL;
            l_assignment_id := NULL;
            l_nationality := NULL;
            l_gender := NULL;
            l_hire_date := NULL;
            l_marital_status := NULL;
            l_person_type_id := NULL;

            BEGIN
               SELECT lookup_code
                 INTO l_nationality
                 FROM fnd_lookup_values
                WHERE 1 = 1
                  AND lookup_type = 'AE_NATIONALITY'           --'NATIONALITY'
                  AND UPPER (meaning) = UPPER (i.nationality)
                  AND LANGUAGE = 'US'
                  AND enabled_flag = 'Y';
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_error_flag := 'Y';
                  l_error_message :=
                             l_error_message || ',' || 'Error at Nationality';
            END;

            --Getting Gender code
            BEGIN
               SELECT DECODE (UPPER (i.gender), 'MALE', 'M', 'FEMALE', 'F')
                 INTO l_gender
                 FROM DUAL;
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_error_flag := 'Y';
                  l_error_message :=
                                  l_error_message || ',' || 'Error at Gender';
            END;

            --
            --getting hire date
            BEGIN
               SELECT date_from         --TO_DATE (date_from, 'DD/MM/RRRR') dt
                 INTO l_hire_date
                 FROM per_business_groups
                WHERE 1 = 1 AND business_group_id = l_business_group_id;
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_error_flag := 'Y';
                  l_error_message :=
                       l_error_message || ',' || 'Error at Business Group ID';
            END;

            --getting Marital Status code
            BEGIN
               SELECT lookup_code
                 INTO l_marital_status
                 FROM fnd_lookup_values
                WHERE lookup_type = 'PQP_GB_PENSERVER_MAR_STAT_CODE'
                  AND UPPER (meaning) =
                         DECODE (UPPER (i.marital_status),
                                 'SINGLE', 'SINGLE (NEVER MARRIED)',
                                 'WIDOW(ER)', 'WIDOWED',
                                 UPPER (i.marital_status)
                                )
                  AND LANGUAGE = 'US'
                  AND enabled_flag = 'Y';
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_marital_status := NULL;
            END;

            --Geeting Person Types
            BEGIN
               SELECT person_type_id
                 INTO l_person_type_id
                 FROM per_person_types
                WHERE 1 = 1
                  AND UPPER (user_person_type) =
                         DECODE (UPPER (i.employee_type),
                                 'WORKERS', 'WORKER',
                                 UPPER (i.employee_type)
                                );
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_error_flag := 'Y';
                  l_error_message :=
                           l_error_message || ',' || 'Error at Employee Type';
            END;

            IF l_error_flag = 'Y'
            THEN
               UPDATE xx_employee_master_stg
                  SET interface_status = 'ERROR',
                      error_messgae = l_error_message
                WHERE 1 = 1
--                  AND employee_number = i.employee_number
                      AND ROWID = i.row_id;

               COMMIT;
               LOG ('Error Messages:' || l_error_message);
            ELSE
               LOG (   'Start Processing for the Employee First Name:'
                    || i.first_name
                    || '    '
                    || 'and Last Name:'
                    || i.last_name
                   );

               BEGIN
                  hr_employee_api.create_employee
                     (
                      --INPUT Parameter
                      p_hire_date                      => i.last_hire_date,
                      -- l_hire_date,
                      p_business_group_id              => l_business_group_id,
                      p_last_name                      => i.last_name,
                      p_first_name                     => i.first_name,
                      p_middle_names                   => NULL,
                      p_sex                            => l_gender,
                      p_person_type_id                 => l_person_type_id,
                      p_marital_status                 => l_marital_status,
                      p_national_identifier            => NULL,
                      p_date_of_birth                  => i.birth_date,
                      p_known_as                       => i.first_name,
                      --OUTPUT Parameter
                      p_employee_number                => i.employee_number,
                      p_person_id                      => l_person_id,
                      p_assignment_id                  => l_assignment_id,
                      p_per_object_version_number      => l_object_version_number,
                      p_asg_object_version_number      => l_asg_object_version_number,
                      p_per_effective_start_date       => l_per_effective_start_date,
                      p_per_effective_end_date         => l_per_effective_end_date,
                      p_full_name                      => l_full_name,
                      p_per_comment_id                 => l_per_comment_id,
                      p_assignment_sequence            => l_assignment_seq,
                      p_assignment_number              => l_assignment_number,
                      p_name_combination_warning       => l_name_combination_warning,
                      p_assign_payroll_warning         => l_assign_payroll_warning,
                      p_orig_hire_warning              => l_orig_hire_warning,
                      p_email_address                  => i.email_id,
                      p_blood_type                     => i.blood_group,
                      p_country_of_birth               => i.country,
                      p_title                          => UPPER (i.title),
                      p_town_of_birth                  => i.city,
                      --p_nationality                    => 'UAE',--l_nationality,
                      p_per_information18              => l_nationality,
                      --Nationality
                      p_per_information12              => l_nationality,
                      p_per_information1               => i.father_name,
                      --father name
                      p_per_information3               => i.mother_name,
                      p_region_of_birth                => i.religion,
                      p_office_number                  => i.sector,
                      p_internal_location=>i.department
                     );

                  IF l_person_id IS NOT NULL
                  THEN
                     LOG (   'Employee with Employee Number: '
                          || i.employee_number
                          || ' created sucessfully'
                         );
                     COMMIT;

                     BEGIN
                        SELECT COUNT (*)
                          INTO p_count
                          FROM per_all_people_f
                         WHERE person_id = l_person_id;
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           p_count := NULL;
                           LOG ('Error at getting person_id ');
                     END;

                     IF p_count > 0
                     THEN
                        UPDATE xx_employee_master_stg
                           SET person_id = l_person_id,
                               sys_employee_num = l_employee_number,
                               interface_status = 'PROCESSED'
                         WHERE 1 = 1 AND employee_number = i.employee_number;

                        COMMIT;
                     END IF;

                     LOG ('------------------------------------------------');
                     LOG ('Calling CREATE_ADDRESS  API');

                     BEGIN
                        create_address (l_person_id);
                     --Creating Employee Address
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Address  is Not Created');
                     END;

                     BEGIN
                        xx_emp_jobs (l_person_id, l_business_group_id);
                     --creating Job
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Job is Not Created');
                     END;

                     BEGIN
                        xx_emp_grade (l_person_id, l_business_group_id);
                     --creating Grade
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Grade is Not Created');
                     END;

                     BEGIN
                        xx_emp_position (l_person_id, l_business_group_id);
                     --creating position
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Position is Not Created');
                     END;

                     BEGIN
                        xx_create_sit (l_person_id, l_business_group_id);
                     --creating SIT
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Special Info is Not Created');
                     END;

                     BEGIN
                        xx_create_eit (l_person_id);           --creating EIT
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Extra Info is Not Created');
                     END;

                     BEGIN
                        xx_emp_element_entry (l_person_id);
                     --creaing element entries
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Elements are not assigned');
                     END;

                     BEGIN
                        xx_emp_phone (l_person_id);
                     EXCEPTION
                        WHEN OTHERS
                        THEN
                           LOG ('Phone not Created');
                     END;

                     LOG ('------------------------------------------------');

                     IF l_assignment_id IS NOT NULL
                     THEN
                        LOG
                           ('------------------------------------------------'
                           );
                        LOG ('Calling CORRECT_ASSG_DET  API');
                        correct_assg_det (l_person_id, l_business_group_id);
                        LOG
                           ('------------------------------------------------');

                        BEGIN
                           xx_emp_per_pay_mtd (l_person_id,
                                               l_business_group_id
                                              );
                        --Creating personal Payment method
                        EXCEPTION
                           WHEN OTHERS
                           THEN
                              LOG ('Payment Method is Not Createed');
                        END;
                     ELSE
                        LOG
                           (   'Assignment Not Created for the Employee Number:'
                            || i.employee_number
                           );
                     END IF;
                  ELSE
                     LOG (   'Employee:'
                          || i.employee_number
                          || '    '
                          || 'Not Processed'
                          || SQLERRM
                         );

                     UPDATE xx_employee_master_stg
                        SET interface_status = 'API ERROR',
                            error_messgae = 'Error at API'
                      WHERE 1 = 1 AND employee_number = i.employee_number;

                     COMMIT;
                  END IF;
               EXCEPTION
                  WHEN OTHERS
                  THEN
                     LOG ('Error in API:' || SQLERRM);
               END;
            END IF;
         EXCEPTION
            WHEN OTHERS
            THEN
               LOG (   'Error in Loop for Employe:'
                    || i.employee_number
                    || '  '
                    || SQLERRM
                   );
         END;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         LOG ('error at ====>' || SQLERRM);
   END;

--
-- -----------------------------------------------------------------------------
-- -----------------After Create Emp,Create Address-----------------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE create_address (p_person_id NUMBER)
   IS
      ln_address_id              per_addresses.address_id%TYPE;
      ln_object_version_number   per_addresses.object_version_number%TYPE;
      --
      l_error_flag               VARCHAR2 (10);
      l_error_message            VARCHAR2 (10000);
      l_country_code             VARCHAR2 (20);
      l_eff_date                 DATE;

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   --
   BEGIN
      l_error_flag := 'N';
      l_eff_date := NULL;
      l_country_code := NULL;

--getting Details from the Per_all_peole_f Table
      BEGIN
         SELECT ppf.effective_start_date
           INTO l_eff_date
           FROM per_all_people_f ppf
          WHERE 1 = 1
            AND ppf.person_id = p_person_id
            AND TRUNC (SYSDATE) BETWEEN ppf.effective_start_date
                                    AND ppf.effective_end_date;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_flag := 'Y';
            l_error_message :=
                  l_error_message
               || ','
               || 'Error at Getting Effective Date at Address API';
      END;

      FOR r IN c1
      LOOP
--Getting Coutry Code
         BEGIN
            SELECT country_code
              INTO l_country_code
              FROM hz_geographies
             WHERE 1 = 1
               AND geography_type = 'COUNTRY'
               AND UPPER (geography_name) = UPPER (r.nationality)
               AND ROWNUM = 1;
         EXCEPTION
            WHEN OTHERS
            THEN
               l_error_flag := 'Y';
               l_error_message :=
                     l_error_message
                  || ','
                  || 'Error at Getting Country Code at Address API';
         END;

         IF l_error_flag = 'Y'
         THEN
            LOG ('Error Messagesat Address:' || l_error_message);
         ELSE
            BEGIN
               IF r.address1 IS NOT NULL
               THEN
                  LOG ('--Address Creating--');
                  hr_person_address_api.create_person_address
                         (p_effective_date             => l_eff_date,
                          p_person_id                  => p_person_id,
                          p_primary_flag               => 'Y',
                          p_style                      => l_country_code,
                          p_date_from                  => l_eff_date,
                          p_address_line1              => r.address1,
                          p_address_line2              => r.address2,
                          p_address_line3              => '1',
                           --p_town_or_city               => 'White Plains',
                           --p_region_1                   => 'Westchester',
                           --p_region_2                   => 'NY',
                          -- p_region_3                   => 'Westchester',
--                          p_postal_code                => 516172,
                          p_country                    => l_country_code,
                          --'US',
                          p_address_id                 => ln_address_id,
                          -- p_add_information13          => 'Test1',
--                          p_add_information14          => 'Proddatur',
                          --p_add_information15          => 'Test3',
                          p_object_version_number      => ln_object_version_number
                         );
                  COMMIT;
               END IF;

               IF ln_address_id IS NOT NULL
               THEN
                  COMMIT;
                  LOG ('----Address Created Id:' || ln_address_id);
               ELSE
                  LOG ('----Address not Created');
               END IF;
            EXCEPTION
               WHEN OTHERS
               THEN
                  LOG ('Error at Address API:' || SQLERRM);
            END;
         END IF;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         LOG ('Error at Address:' || SQLERRM);
   END;

--
-- -----------------------------------------------------------------------------
-- -----------------After Create Emp,Correct Assg Details-----------------------
-- -----------------------------------------------------------------------------
--
   PROCEDURE correct_assg_det (p_person_id NUMBER, p_business_group_id NUMBER)
   IS
      v_people_group_id                NUMBER;           --:=hr_api.g_number;
      v_object_version_number          NUMBER;
      v_special_ceiling_step_id        NUMBER;
      v_group_name                     VARCHAR2 (4000);
      v_effective_start_date           DATE;
      v_effective_end_date             DATE;
      v_org_now_no_manager_warning     BOOLEAN;
      v_other_manager_warning          BOOLEAN;
      v_spp_delete_warning             BOOLEAN;
      v_entries_changed_warning        VARCHAR2 (4000);
      v_tax_district_changed_warning   BOOLEAN;
      vl$fb_entra                      BOOLEAN                        := TRUE;
      v_concatenated_segments          VARCHAR2 (200);
      l_concatenated_segments          VARCHAR2 (200);
      -- := '101.000.000.6111203.000.000';
      v_gsp_post_process_warning       VARCHAR2 (200);
      v_soft_coding_keyflex_id         NUMBER;
      ln_comment_id                    per_all_assignments_f.comment_id%TYPE;
      lb_no_managers_warning           BOOLEAN;
      lb_other_manager_warning         BOOLEAN;
      --
      l_error_flag                     VARCHAR2 (10);
      l_error_message                  VARCHAR2 (10000);
      l_country_code                   VARCHAR2 (20);
      l_eff_date                       DATE;
      l_assign_id                      NUMBER;
      l_location_id                    NUMBER;
      l_org_id                         NUMBER;
      l_obj_ver_no                     NUMBER;
      l_position_id                    NUMBER;
      l_job_id                         NUMBER;
      l_grade_id                       NUMBER;

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   --
   BEGIN
      l_error_flag := 'N';
      l_eff_date := NULL;
      l_country_code := NULL;
      l_org_id := NULL;
      l_location_id := NULL;
      l_assign_id := NULL;
      l_obj_ver_no := NULL;

--getting Details from the Per_all_peole_f Table
      BEGIN
         SELECT pam.effective_start_date, pam.assignment_id,
                pam.location_id, pam.organization_id,
                pam.object_version_number
           INTO l_eff_date, l_assign_id,
                l_location_id, l_org_id,
                l_obj_ver_no
           FROM per_all_assignments_f pam
          WHERE 1 = 1
            AND pam.person_id = p_person_id
            AND TRUNC (SYSDATE) BETWEEN pam.effective_start_date
                                    AND pam.effective_end_date;
      EXCEPTION
         WHEN OTHERS
         THEN
            l_error_flag := 'Y';
            l_error_message :=
                  l_error_message
               || ','
               || 'Error at Assign Details at Assignment API';
      END;

      IF l_error_flag = 'Y'
      THEN
         LOG ('Error Messages at Assign API:' || l_error_message);
      ELSE
         BEGIN
            hr_assignment_api.update_emp_asg
                       (p_effective_date              => l_eff_date,
                        p_datetrack_update_mode       => 'CORRECTION',
                        p_assignment_id               => l_assign_id,
                                                                   --ln_assignment_id,
                        --p_supervisor_id                              => NULL,
                        --p_change_reason                           => NULL,
                        --p_manager_flag                              => 'N',
                        --p_bargaining_unit_code              => NULL,
                        --p_labour_union_member_flag   => NULL,
                        p_segment1                    => 83,
                        --Employer in Employment Details Tab
                        p_segment2                    => 100,
                        --Civil Regi Num in Employment Details Tab
                        p_segment3                    => 100,
                        --Social Security Num in Employment Details Tab
                        p_segment4                    => TO_CHAR (l_eff_date,
                                                                  'RRRR/MM/DD'
                                                                 ),
                        --Contr Start Date in Employment Details Tab
                        p_segment7                    => 'Y',
                        --Accomidation Flag in Employment Details Tab
                        p_segment8                    => 'N',
                        --Transport Flag in Employment Details Tab
                        p_default_code_comb_id        => 13264,
                                                         --UAT--3014,--(13264--DEV),
                        --Defulat Expense Account in Purchase Order Information Tab
                        p_set_of_books_id             => 2024,
                                                     ---(2024--DEV),UAT--2022,
                                    --Ledger in Purchase Order Information Tab
-- Output data elements
-- -------------------------------
                        p_object_version_number       => l_obj_ver_no,
                                                          --rec.object_version_number,
                        --ln_object_number,
                        p_soft_coding_keyflex_id      => v_soft_coding_keyflex_id,
                        p_concatenated_segments       => l_concatenated_segments,
                        p_comment_id                  => ln_comment_id,
                        p_effective_start_date        => v_effective_start_date,
                        p_effective_end_date          => v_effective_end_date,
                        p_no_managers_warning         => lb_no_managers_warning,
                        p_other_manager_warning       => lb_other_manager_warning
                       );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               LOG ('Error at UPDATE_EMP_ASG ;' || SQLERRM);
         END;

         FOR r IN c1
         LOOP
            BEGIN
               SELECT position_id, job_id
                 INTO l_position_id, l_job_id
                 FROM per_all_positions
                WHERE 1 = 1
                  AND NAME = r.POSITION
                  AND business_group_id = p_business_group_id
                  AND date_effective <= l_eff_date;
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_position_id := NULL;
                  l_job_id := NULL;
            END;

            BEGIN
               SELECT grade_id
                 INTO l_grade_id
                 FROM per_grades
                WHERE 1 = 1
                  AND NAME = r.grade
                  AND business_group_id = p_business_group_id;
            EXCEPTION
               WHEN OTHERS
               THEN
                  l_grade_id := NULL;
            END;

            BEGIN
               v_object_version_number := l_obj_ver_no;
               LOG ('--Assignment Correction--');
               hr_assignment_api.update_emp_asg_criteria
                  (p_effective_date                    => l_eff_date,
                   p_datetrack_update_mode             => 'CORRECTION',
                   p_assignment_id                     => l_assign_id,
                   p_validate                          => FALSE,
                   p_called_from_mass_update           => NULL,
                   p_grade_id                          => l_grade_id,
                   p_position_id                       => l_position_id,
                   --i.position_id,
                   p_job_id                            => l_job_id,
                   --i.job_id,
                   p_payroll_id                        => 61,
                   --i.payroll_id,-- SE Workers Payroll
                   p_location_id                       => l_location_id,
                   p_organization_id                   => l_org_id,
                   p_pay_basis_id                      => NULL,      --testing
                   p_segment1                          => 768,
                   --People Group Value in Assignment
                   p_segment2                          => NULL,
                   p_segment3                          => NULL,
                   p_segment4                          => NULL,
                   p_segment7                          => NULL,
                   p_segment8                          => NULL,
                   p_supervisor_assignment_id          => NULL,
                   --i.sup_assign_id,
                   p_object_version_number             => v_object_version_number,
                   p_special_ceiling_step_id           => v_special_ceiling_step_id,
                   p_people_group_id                   => v_people_group_id,
                   p_soft_coding_keyflex_id            => v_soft_coding_keyflex_id,
                   p_group_name                        => v_group_name,
                   p_effective_start_date              => v_effective_start_date,
                   p_effective_end_date                => v_effective_end_date,
                   p_org_now_no_manager_warning        => v_org_now_no_manager_warning,
                   p_other_manager_warning             => v_other_manager_warning,
                   p_spp_delete_warning                => v_spp_delete_warning,
                   p_entries_changed_warning           => v_entries_changed_warning,
                   p_tax_district_changed_warning      => v_tax_district_changed_warning,
                   p_concatenated_segments             => v_concatenated_segments,
                   --v_concatenated_segments,
                   p_gsp_post_process_warning          => v_gsp_post_process_warning
                  );
               COMMIT;
               LOG ('p_entries_changed_warning:' || v_entries_changed_warning);
            /* IF ln_address_id IS NOT NULL
             THEN
                COMMIT;
                LOG ('----Address Created Id:' || ln_address_id);
             ELSE
                LOG ('----Address not Created');
             END IF;*/
            EXCEPTION
               WHEN OTHERS
               THEN
                  LOG ('Error at Assignment API:' || SQLERRM);
            END;
         END LOOP;
      END IF;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         LOG ('Error at Assignment:' || SQLERRM);
   END;

-- Creating Speceial Information
   PROCEDURE xx_create_sit (p_person_id NUMBER, p_business_group_id NUMBER)
   AS
      --cursor
      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;

      v_person_id                   per_all_people_f.person_id%TYPE;
      p_analysis_criteria_id        NUMBER;
      p_person_analysis_id          NUMBER;
      p_per_object_version_number   NUMBER;
      p_medical_id                  VARCHAR2 (100);
      l_id_flex_number              NUMBER                            := NULL;
   BEGIN
      FOR r IN c1
      LOOP
         --SIT 1
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.emairate_id IS NOT NULL
         THEN
            -- SIT- Emirate ID
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Emirate ID';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Emirate ID Structure is not Defined '
                                    );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Emirate ID Structure '
                                    );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => r.last_hire_date,
                    p_date_to                        => r.emirates_id_expiry_date,
                    p_segment1                       => r.emairate_id,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 2
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF    r.insurance_company_name IS NOT NULL
            OR r.insurance_card_number IS NOT NULL
         THEN
            -- SIT- Insurance Info.
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Insurance Info.';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                 (fnd_file.LOG,
                                  'Insurance Info. Structure is not Defined '
                                 );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                   (fnd_file.LOG,
                                    'Problem With Insurance Info. Structure '
                                   );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => r.last_hire_date,
                    p_date_to                        => r.insurance_expiry_date,
                    p_segment1                       => r.insurance_card_number,
                    p_segment2                       => r.insurance_company_name,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 3
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.cnia_pass_number IS NOT NULL
         THEN
            -- SIT- ICNIA Pass Number
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'CNIA Pass Number';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                (fnd_file.LOG,
                                 'CNIA Pass Number Structure is not Defined '
                                );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                  (fnd_file.LOG,
                                   'Problem With CNIA Pass Number Structure '
                                  );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => NVL
                                                           (r.cnia_issue_date,
                                                            r.last_hire_date
                                                           ),
                    p_date_to                        => r.cnia_expiry_date,
                    p_segment1                       => r.cnia_pass_number,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 4
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.passport_number IS NOT NULL
         THEN
            -- SIT- Passport Number
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Passport Number';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                 (fnd_file.LOG,
                                  'Passport Number Structure is not Defined '
                                 );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                   (fnd_file.LOG,
                                    'Problem With Passport Number Structure '
                                   );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => NVL
                                                           (r.passport_isuue_date,
                                                            r.last_hire_date
                                                           ),
                    p_date_to                        => r.passport_expiry_date,
                    p_segment1                       => r.passport_number,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 5
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.unified_no IS NOT NULL
         THEN
            -- SIT- Unified Number
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Unified Number';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                  (fnd_file.LOG,
                                   'Unified Number Structure is not Defined '
                                  );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Unified Number Structure '
                                    );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => r.last_hire_date,
                    p_date_to                        => NULL,
                    p_segment1                       => r.unified_no,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 6
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.work_permit_id IS NOT NULL
         THEN
            -- SIT- Work Permit ID
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Work Permit ID';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                  (fnd_file.LOG,
                                   'Work Permit ID Structure is not Defined '
                                  );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Work Permit ID Structure '
                                    );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => NVL
                                                           (r.work_permit_issue_date,
                                                            r.last_hire_date
                                                           ),
                    p_date_to                        => r.work_permit_expiry_date,
                    p_segment1                       => r.work_permit_id,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 7
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.labor_card_no IS NOT NULL
         THEN
            -- SIT- Labor Card Info.
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name = 'Labor Card Info.';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                                (fnd_file.LOG,
                                 'Labor Card Info. Structure is not Defined '
                                );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                                  (fnd_file.LOG,
                                   'Problem With Labor Card Info. Structure '
                                  );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => NVL
                                                           (r.labor_card_issue_date,
                                                            r.last_hire_date
                                                           ),
                    p_date_to                        => r.labor_card_expiry_date,
                    p_segment1                       => r.labor_card_id,
                    p_segment2                       => r.labor_card_no,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;

         --SIT 8
         l_id_flex_number := NULL;
         p_analysis_criteria_id := NULL;
         p_person_analysis_id := NULL;
         p_per_object_version_number := 1;

         IF r.health_certificate_number IS NOT NULL
         THEN
            -- SIT- Health Certificate Number
            BEGIN
               SELECT fifv.id_flex_num
                 INTO l_id_flex_number
                 FROM fnd_id_flexs fif, fnd_id_flex_structures_vl fifv
                WHERE 1 = 1
                  AND fif.id_flex_code = 'PEA'
                  AND fif.id_flex_code = fifv.id_flex_code
                  AND fifv.id_flex_structure_name =
                                                   'Health Certificate Number';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                       (fnd_file.LOG,
                        'Health Certificate Number Structure is not Defined '
                       );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                         (fnd_file.LOG,
                          'Problem With Health Certificate Number Structure '
                         );
            END;

            hr_sit_api.create_sit
                   (p_validate                       => FALSE,
                    p_person_id                      => p_person_id,
                    p_business_group_id              => p_business_group_id,
                    p_id_flex_num                    => l_id_flex_number,
                    p_effective_date                 => r.last_hire_date,
                    p_date_from                      => NVL
                                                           (r.health_certificate_issue_date,
                                                            r.last_hire_date
                                                           ),
                    p_date_to                        => r.health_certificate_expiry_date,
                    p_segment1                       => r.health_certificate_number,
                    p_analysis_criteria_id           => p_analysis_criteria_id,
                    p_person_analysis_id             => p_person_analysis_id,
                    p_pea_object_version_number      => p_per_object_version_number
                   );
            COMMIT;
         END IF;
      END LOOP;
   END;

--Creating Extra Information
   PROCEDURE xx_create_eit (p_person_id NUMBER)
   AS
      ln_person_extra_info_id    per_people_extra_info.person_extra_info_id%TYPE;
      ln_object_version_number   per_people_extra_info.object_version_number%TYPE;
      l_img_count                NUMBER;
      l_img_no                   VARCHAR2 (120);

      --cursor
      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      FOR r IN c1
      LOOP
         --EIT 1
         ln_person_extra_info_id := NULL;
         ln_object_version_number := 1;

         IF     r.ticket_frequency IS NOT NULL
            AND r.ticket_no IS NOT NULL
            AND r.ticket_fare IS NOT NULL
         THEN
            BEGIN
               hr_person_extra_info_api.create_person_extra_info
                         (p_validate                      => FALSE,
                          p_person_id                     => p_person_id,
                          p_information_type              => 'TICKET_ELIGIBILITY',
                          p_pei_information_category      => 'TICKET_ELIGIBILITY',
                          p_pei_information1              => r.ticket_frequency,
                          p_pei_information2              => r.ticket_no,
                          p_pei_information3              => r.ticket_fare,
                          p_person_extra_info_id          => ln_person_extra_info_id,
                          p_object_version_number         => ln_object_version_number
                         );
               COMMIT;
            END;
         END IF;

         --EIT 2
         ln_person_extra_info_id := NULL;
         ln_object_version_number := 1;

         SELECT COUNT (*)
           INTO l_img_count
           FROM fnd_flex_value_sets ffv, fnd_flex_values_vl fv
          WHERE 1 = 1
            AND ffv.flex_value_set_name = 'Immigration Designation'
            AND ffv.flex_value_set_id = fv.flex_value_set_id
            AND fv.flex_value = r.immigration_designation;

         IF l_img_count = 0
         THEN
            BEGIN
--          fnd_global.apps_initialize (l_user_id, l_resp_id, l_resp_appl_id);
               apps.fnd_flex_val_api.create_independent_vset_value
                         (p_flex_value_set_name             => 'Immigration Designation',
                          p_flex_value                      => r.immigration_designation,
                          p_description                     => r.immigration_designation,
                          p_enabled_flag                    => 'Y',
                          p_start_date_active               => NULL,
                          p_end_date_active                 => NULL,
                          p_summary_flag                    => 'N',
                          p_structured_hierarchy_level      => NULL,
                          p_hierarchy_level                 => NULL,
                          x_storage_value                   => l_img_no
                         );
               COMMIT;
            EXCEPTION
               WHEN OTHERS
               THEN
                  DBMS_OUTPUT.put_line (   'Error is '
                                        || SUBSTR (SQLERRM, 1, 1000)
                                       );
            END;
         END IF;

         IF r.immigration_designation IS NOT NULL
         THEN
            BEGIN
               hr_person_extra_info_api.create_person_extra_info
                    (p_validate                      => FALSE,
                     p_person_id                     => p_person_id,
                     p_information_type              => 'Immigration_Designation',
                     p_pei_information_category      => 'Immigration_Designation',
                     p_pei_information1              => r.immigration_designation,
                     p_person_extra_info_id          => ln_person_extra_info_id,
                     p_object_version_number         => ln_object_version_number
                    );
               COMMIT;
            END;
         END IF;
      END LOOP;
   END;

-- Creating Employee Element entries
   PROCEDURE xx_emp_element_entry (p_person_id NUMBER)
   AS
      --Variables
      ln_element_link_id         pay_element_links_f.element_link_id%TYPE;
      ld_effective_start_date    DATE;
      ld_effective_end_date      DATE;
      ln_element_entry_id        pay_element_entries_f.element_entry_id%TYPE;
      ln_object_version_number   pay_element_entries_f.object_version_number%TYPE;
      lb_create_warning          BOOLEAN;
      ln_input_value_id          pay_input_values_f.input_value_id%TYPE;
      ln_screen_entry_value      pay_element_entry_values_f.screen_entry_value%TYPE;
      ln_element_type_id         pay_element_types_f.element_type_id%TYPE;
      l_assignment_id            NUMBER;
      l_element_type_id          NUMBER;
      l_business_group_id        NUMBER;
      l_input_value_id_1         NUMBER;
      l_input_value_id_2         NUMBER;
      l_input_value_id_3         NUMBER;
      l_input_value_id_4         NUMBER;

      --Cursor
      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      SELECT assignment_id, business_group_id
        INTO l_assignment_id, l_business_group_id
        FROM per_all_assignments_f
       WHERE 1 = 1
         AND person_id = p_person_id
         AND SYSDATE BETWEEN effective_start_date AND effective_end_date;

      FOR r IN c1
      LOOP
         BEGIN
------------Element1------------------------------------------
------------Assign Element Entry for Basic Salary-------------------
--Getting Element type id
            l_element_type_id := NULL;
            ln_element_link_id := NULL;
            l_input_value_id_1 := NULL;

            BEGIN
               SELECT element_type_id
                 INTO l_element_type_id
                 FROM pay_element_types_f_tl
                WHERE element_name = 'Basic Salary';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Basic Salarty Element is not Defined'
                                    );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Basic Salary'
                                    );
            END;

            --Getting Input value id
            BEGIN
               SELECT pivt.input_value_id
                 INTO l_input_value_id_1
                 FROM pay_input_values_f piv, pay_input_values_f_tl pivt
                WHERE 1 = 1
                  AND piv.element_type_id = l_element_type_id
                  AND piv.input_value_id = pivt.input_value_id
                  AND pivt.NAME = 'Monthly Amount';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Monthly Amount not defined under Basic Salary element'
                     );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Basic Salary element'
                                    );
            END;

-- Get Element Link Id
-- ------------------------------
            ln_element_link_id :=
               hr_entry_api.get_link (p_assignment_id        => l_assignment_id,
                                      p_element_type_id      => l_element_type_id,
                                      p_session_date         => r.last_hire_date
                                     );
----
-- Create Element Entry
  -- ------------------------------
            pay_element_entry_api.create_element_entry
                         (                    -- Input data elements
                                              -- -----------------------------
                          p_effective_date             => r.last_hire_date,
                          p_business_group_id          => l_business_group_id,
                          p_assignment_id              => l_assignment_id,
                          p_element_link_id            => ln_element_link_id,
                          p_entry_type                 => 'E',
                          p_input_value_id1            => l_input_value_id_1,
                          p_entry_value1               => r.basic_salary,
-- Output data elements
-- --------------------------------
                          p_effective_start_date       => ld_effective_start_date,
                          p_effective_end_date         => ld_effective_end_date,
                          p_element_entry_id           => ln_element_entry_id,
                          p_object_version_number      => ln_object_version_number,
                          p_create_warning             => lb_create_warning
                         );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line (fnd_file.LOG,
                                  'Basic Salary Element Entry not assigned'
                                 );
         END;

         BEGIN
------------Element2------------------------------------------
------------Assign Element Entry for Accommodation Allowance By Client-------------------
--Getting Element type id
            l_element_type_id := NULL;
            ln_element_link_id := NULL;
            l_input_value_id_1 := NULL;

            BEGIN
               SELECT element_type_id
                 INTO l_element_type_id
                 FROM pay_element_types_f_tl
                WHERE element_name = 'Accommodation Allowance By Client';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Accommodation Allowance By Client Element is not Defined'
                     );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                            (fnd_file.LOG,
                             'Problem With Accommodation Allowance By Client'
                            );
            END;

            --Getting Input value id
            BEGIN
               SELECT pivt.input_value_id
                 INTO l_input_value_id_1
                 FROM pay_input_values_f piv, pay_input_values_f_tl pivt
                WHERE 1 = 1
                  AND piv.element_type_id = l_element_type_id
                  AND piv.input_value_id = pivt.input_value_id
                  AND pivt.NAME = 'Monthly Amount';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Monthly Amount not defined under Accommodation Allowance By Client element'
                     );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Problem With Accommodation Allowance By Client element'
                     );
            END;

-- Get Element Link Id
-- ------------------------------
            ln_element_link_id :=
               hr_entry_api.get_link (p_assignment_id        => l_assignment_id,
                                      p_element_type_id      => l_element_type_id,
                                      p_session_date         => r.last_hire_date
                                     );
----
-- Create Element Entry
  -- ------------------------------
            pay_element_entry_api.create_element_entry
                         (                    -- Input data elements
                                              -- -----------------------------
                          p_effective_date             => r.last_hire_date,
                          p_business_group_id          => l_business_group_id,
                          p_assignment_id              => l_assignment_id,
                          p_element_link_id            => ln_element_link_id,
                          p_entry_type                 => 'E',
                          p_input_value_id2            => l_input_value_id_1,
                          p_entry_value2               => r.accomton_allowce_by_client,
-- Output data elements
-- --------------------------------
                          p_effective_start_date       => ld_effective_start_date,
                          p_effective_end_date         => ld_effective_end_date,
                          p_element_entry_id           => ln_element_entry_id,
                          p_object_version_number      => ln_object_version_number,
                          p_create_warning             => lb_create_warning
                         );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line
                  (fnd_file.LOG,
                   'Accommodation Allowance By Client Element Entry not assigned'
                  );
         END;

         BEGIN
------------Element3------------------------------------------
-----------Assign Element Entry for Accomodation Allowance-------------------
--Getting Element type id
            l_element_type_id := NULL;
            ln_element_link_id := NULL;

            BEGIN
               SELECT element_type_id
                 INTO l_element_type_id
                 FROM pay_element_types_f_tl
                WHERE element_name = 'Accomodation Allowance';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                             (fnd_file.LOG,
                              'Accomodation Allowance Element is not Defined'
                             );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Accomodation Allowance'
                                    );
            END;

            BEGIN
               SELECT pivt.input_value_id
                 INTO l_input_value_id_1
                 FROM pay_input_values_f piv, pay_input_values_f_tl pivt
                WHERE 1 = 1
                  AND piv.element_type_id = l_element_type_id
                  AND piv.input_value_id = pivt.input_value_id
                  AND pivt.NAME = 'Monthly Amount';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Monthly Amount not defined under Accomodation Allowance element'
                     );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                               (fnd_file.LOG,
                                'Problem With Accomodation Allowance element'
                               );
            END;

            -- Get Element Link Id
-- ------------------------------
            ln_element_link_id :=
               hr_entry_api.get_link (p_assignment_id        => l_assignment_id,
                                      p_element_type_id      => l_element_type_id,
                                      p_session_date         => r.last_hire_date
                                     );
----
-- Create Element Entry
  -- ------------------------------
            pay_element_entry_api.create_element_entry
                         (                    -- Input data elements
                                              -- -----------------------------
                          p_effective_date             => r.last_hire_date,
                          p_business_group_id          => l_business_group_id,
                          p_assignment_id              => l_assignment_id,
                          p_element_link_id            => ln_element_link_id,
                          p_entry_type                 => 'E',
                          p_input_value_id2            => l_input_value_id_1,
                          p_entry_value2               => r.accomodation_allowance,
-- Output data elements
-- --------------------------------
                          p_effective_start_date       => ld_effective_start_date,
                          p_effective_end_date         => ld_effective_end_date,
                          p_element_entry_id           => ln_element_entry_id,
                          p_object_version_number      => ln_object_version_number,
                          p_create_warning             => lb_create_warning
                         );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line
                         (fnd_file.LOG,
                          'Accomodation Allowance Element Entry not assigned'
                         );
         END;

         BEGIN
------------Element4------------------------------------------
------------Assign Element Entry for Emiratization Allowance-------------------
--Getting Element type id
            l_element_type_id := NULL;
            ln_element_link_id := NULL;
            l_input_value_id_1 := NULL;

            BEGIN
               SELECT element_type_id
                 INTO l_element_type_id
                 FROM pay_element_types_f_tl
                WHERE element_name = 'Emiratization Allowance';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                            (fnd_file.LOG,
                             'Emiratization Allowance Element is not Defined'
                            );
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Problem With Emiratization Allowance'
                                    );
            END;

            --Getting Input value id
            BEGIN
               SELECT pivt.input_value_id
                 INTO l_input_value_id_1
                 FROM pay_input_values_f piv, pay_input_values_f_tl pivt
                WHERE 1 = 1
                  AND piv.element_type_id = l_element_type_id
                  AND piv.input_value_id = pivt.input_value_id
                  AND pivt.NAME = 'Monthly Amount';
            EXCEPTION
               WHEN NO_DATA_FOUND
               THEN
                  fnd_file.put_line
                     (fnd_file.LOG,
                      'Monthly Amount not defined under Emiratization Allowance element'
                     );
               WHEN OTHERS
               THEN
                  fnd_file.put_line
                              (fnd_file.LOG,
                               'Problem With Emiratization Allowance element'
                              );
            END;

-- Get Element Link Id
-- ------------------------------
            ln_element_link_id :=
               hr_entry_api.get_link (p_assignment_id        => l_assignment_id,
                                      p_element_type_id      => l_element_type_id,
                                      p_session_date         => r.last_hire_date
                                     );
----
-- Create Element Entry
-- ------------------------------
            pay_element_entry_api.create_element_entry
                         (                    -- Input data elements
                                              -- -----------------------------
                          p_effective_date             => r.last_hire_date,
                          p_business_group_id          => l_business_group_id,
                          p_assignment_id              => l_assignment_id,
                          p_element_link_id            => ln_element_link_id,
                          p_entry_type                 => 'E',
                          p_input_value_id2            => l_input_value_id_1,
                          p_entry_value2               => r.emiratization_allowance,
-- Output data elements
-- --------------------------------
                          p_effective_start_date       => ld_effective_start_date,
                          p_effective_end_date         => ld_effective_end_date,
                          p_element_entry_id           => ln_element_entry_id,
                          p_object_version_number      => ln_object_version_number,
                          p_create_warning             => lb_create_warning
                         );
            COMMIT;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line
                        (fnd_file.LOG,
                         'Emiratization Allowance Element Entry not assigned'
                        );
         END;

       
      END LOOP;
   END;

   PROCEDURE xx_emp_jobs (p_person_id NUMBER, p_business_group_id NUMBER)
   AS
      --Local variables
      l_job_id                  NUMBER         := NULL;
      l_object_version_number   NUMBER         := NULL;
      l_err_msg                 VARCHAR2 (500) := NULL;
      l_name                    VARCHAR2 (500) := NULL;
      l_job_definition_id       NUMBER         := NULL;
      l_job_group_id            NUMBER;
      l_job_count               NUMBER;

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      BEGIN
         SELECT job_group_id
           INTO l_job_group_id
           FROM per_job_groups
          WHERE 1 = 1
            AND business_group_id = p_business_group_id
            AND internal_name = 'HR_82';
      EXCEPTION
         WHEN OTHERS
         THEN
            l_job_group_id := NULL;
      END;

      FOR r IN c1
      LOOP
         SELECT COUNT (*)
           INTO l_job_count
           FROM per_jobs
          WHERE 1 = 1
            AND NAME = r.immigration_designation
            AND business_group_id = p_business_group_id;

         IF l_job_count = 0
         THEN
            IF l_job_group_id IS NOT NULL
            THEN
               BEGIN
                  hr_job_api.create_job
                         (p_validate                   => FALSE,
                          p_business_group_id          => p_business_group_id,
                          p_date_from                  => TO_DATE
                                                               ('01-JAN-2000',
                                                                'DD-MON-YYYY'
                                                               ),
                          p_job_group_id               => l_job_group_id,
                          p_segment1                   => r.immigration_designation,
                          p_job_id                     => l_job_id,
                          p_object_version_number      => l_object_version_number,
                          p_job_definition_id          => l_job_definition_id,
                          p_name                       => l_name
                         );
                  COMMIT;
                  DBMS_OUTPUT.put_line ('Job has been created: ' || l_job_id);
               EXCEPTION
                  WHEN OTHERS
                  THEN
                     l_err_msg := SQLERRM;
                     DBMS_OUTPUT.put_line ('Inner Exception: ' || l_err_msg);
               END;
            END IF;
         END IF;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         l_err_msg := SQLERRM;
         DBMS_OUTPUT.put_line ('Main Exception: ' || l_err_msg);
   END;

   PROCEDURE xx_emp_grade (p_person_id NUMBER, p_business_group_id NUMBER)
   AS
      l_grade_no                VARCHAR2 (120);
      l_gd_count                NUMBER;
      l_user_id                 NUMBER       := fnd_profile.VALUE ('USER_ID');
      l_resp_appl_id            NUMBER         := 0;
      l_resp_id                 NUMBER;
      l_grd_seg                 NUMBER;
      l_object_version_number   NUMBER         := NULL;
      l_grade_definition_id     NUMBER         := NULL;
      l_grade_id                NUMBER;
      l_name                    VARCHAR2 (500) := NULL;
      l_emp_grd_count           NUMBER;

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      BEGIN
         SELECT responsibility_id
           INTO l_resp_id
           FROM fnd_responsibility_tl
          WHERE responsibility_name = 'Application Developer';
      EXCEPTION
         WHEN OTHERS
         THEN
            fnd_file.put_line (fnd_file.LOG, 'Responsibility Not defined');
      END;

      FOR r IN c1
      LOOP
         --Inserting values into GRADE Value SET
         SELECT COUNT (*)
           INTO l_gd_count
           FROM fnd_flex_value_sets ffv, fnd_flex_values_vl fv
          WHERE 1 = 1
            AND ffv.flex_value_set_name = 'GRADE'
            AND ffv.flex_value_set_id = fv.flex_value_set_id
            AND fv.flex_value = r.grade;

         IF l_gd_count = 0
         THEN
            BEGIN
--          fnd_global.apps_initialize (l_user_id, l_resp_id, l_resp_appl_id);
               apps.fnd_flex_val_api.create_independent_vset_value
                                       (p_flex_value_set_name             => 'GRADE',
                                        p_flex_value                      => r.grade,
                                        p_description                     => r.grade,
                                        p_enabled_flag                    => 'Y',
                                        p_start_date_active               => NULL,
                                        p_end_date_active                 => NULL,
                                        p_summary_flag                    => 'N',
                                        p_structured_hierarchy_level      => NULL,
                                        p_hierarchy_level                 => NULL,
                                        x_storage_value                   => l_grade_no
                                       );
               COMMIT;
            EXCEPTION
               WHEN OTHERS
               THEN
                  DBMS_OUTPUT.put_line (   'Error is '
                                        || SUBSTR (SQLERRM, 1, 1000)
                                       );
            END;
         END IF;

         --Create Emp Grade
         SELECT MAX (SEQUENCE)
           INTO l_grd_seg
           FROM per_grades
          WHERE 1 = 1;

         SELECT COUNT (*)
           INTO l_emp_grd_count
           FROM per_grades
          WHERE 1 = 1
            AND NAME = r.grade
            AND business_group_id = p_business_group_id;

         IF l_emp_grd_count = 0
         THEN
            BEGIN
               hr_grade_api.create_grade
                         (p_validate                   => FALSE,
                          p_business_group_id          => p_business_group_id,
                          p_date_from                  => TO_DATE
                                                               ('01-JAN-2000',
                                                                'DD-MON-YYYY'
                                                               ),
                          p_sequence                   => l_grd_seg + 1,
                          p_segment1                   => r.grade,
                          p_grade_id                   => l_grade_id,
                          p_object_version_number      => l_object_version_number,
                          p_grade_definition_id        => l_grade_definition_id,
                          p_name                       => l_name
                         );
            END;
         END IF;

         COMMIT;
      END LOOP;
   END;

   PROCEDURE xx_emp_position (p_person_id NUMBER, p_business_group_id NUMBER)
   AS
      l_pos_name                 VARCHAR2 (500);
      l_eff_start_date           DATE;
      l_eff_end_date             DATE;
      l_position_definition_id   NUMBER;
      l_object_version_number    NUMBER;
      l_position_id              NUMBER;
      l_job_id                   NUMBER;
      l_pos_count                NUMBER;

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      FOR r IN c1
      LOOP
         l_position_id := NULL;
         l_object_version_number := NULL;
         l_eff_start_date := NULL;
         l_eff_end_date := NULL;
         l_position_definition_id := NULL;
         l_pos_name := NULL;
         l_job_id := NULL;

         --
         BEGIN
            SELECT job_id
              INTO l_job_id
              FROM per_jobs
             WHERE 1 = 1
               AND NAME = 'Employee'
               --r.immigration_designation--Modified on 12-Dec-2019 as per Arun Suggestion
               AND business_group_id = p_business_group_id;
         END;

         SELECT COUNT (*)
           INTO l_pos_count
           FROM per_all_positions
          WHERE 1 = 1
            AND NAME = r.POSITION
            AND business_group_id = p_business_group_id;

         IF l_pos_count = 0
         THEN
            ---
            hr_position_api.create_position
                       (p_job_id                        => l_job_id,
                        p_organization_id               => p_business_group_id,
                        p_effective_date                => '01-JAN-2000',
                        p_date_effective                => '01-JAN-2000'
                                                                        --             ,p_date_end                    => null
            ,
                        p_validate                      => FALSE,
                        p_position_type                 => 'SHARED',
                        p_availability_status_id        => 1,
                        p_fte                           => 1,
                        p_max_persons                   => 1,
                        p_probation_period              => NULL,
                        p_probation_period_unit_cd      => NULL,
                        p_business_group_id             => NULL,
                        p_segment1                      => r.POSITION
                                                                     --             ,p_attribute8                  => null
                                                                     --             ,p_attribute9                  => null
                                                                     --             ,p_entry_grade_id              => null
            ,
                        p_bargaining_unit_cd            => NULL
                                                               --             ,p_attribute6                  => null
                                                                            --
            ,
                        p_working_hours                 => NULL,
                        p_frequency                     => NULL
                                                               --OUT
            ,
                        p_position_id                   => l_position_id,
                        p_object_version_number         => l_object_version_number,
                        p_effective_start_date          => l_eff_start_date,
                        p_effective_end_date            => l_eff_end_date
                                                                         --IN/OUT
            ,
                        p_position_definition_id        => l_position_definition_id,
                        p_name                          => l_pos_name
                       );

            IF l_position_id IS NULL OR l_object_version_number IS NULL
            THEN
               DBMS_OUTPUT.put_line
                            (   'hr_position_api.create_position API Error: '
                             || SQLERRM
                            );
               ROLLBACK;
            ELSE
               COMMIT;
            END IF;
         END IF;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         DBMS_OUTPUT.put_line
                (   'hr_position_api.create_position API failed with error :'
                 || SQLERRM
                );
         ROLLBACK;
   END;

   PROCEDURE xx_emp_per_pay_mtd (p_person_id NUMBER, p_business_group_id NUMBER)
   AS
      ln_method_id            pay_personal_payment_methods_f.personal_payment_method_id%TYPE;
      ln_ext_acc_id           pay_external_accounts.external_account_id%TYPE;
      ln_obj_ver_num          pay_personal_payment_methods_f.object_version_number%TYPE;
      ld_eff_start_date       DATE;
      ld_eff_end_date         DATE;
      ln_comment_id           NUMBER;
      l_assignment_id         NUMBER;
      l_personal_payment_id   NUMBER;
      l_per_pay_count         NUMBER;
      l_bank_code             VARCHAR2 (60);

      CURSOR c1
      IS
         SELECT xxe.*, xxe.ROWID row_id
           FROM xx_employee_master_stg xxe
          WHERE 1 = 1 AND person_id = p_person_id;
   BEGIN
      FOR r IN c1
      LOOP
         BEGIN
            SELECT assignment_id
              INTO l_assignment_id
              FROM per_all_assignments_f
             WHERE 1 = 1
               AND person_id = p_person_id
               AND SYSDATE BETWEEN effective_start_date AND effective_end_date;
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line (fnd_file.LOG, 'Assignment is not created');
         END;

         BEGIN
            SELECT org_payment_method_id
              INTO l_personal_payment_id
              FROM pay_org_payment_methods_f_tl
             WHERE 1 = 1 AND org_payment_method_name = 'SW Personal Payment';
         EXCEPTION
            WHEN OTHERS
            THEN
               fnd_file.put_line (fnd_file.LOG,
                                  'Payment method is not defined'
                                 );
         END;

         SELECT COUNT (*)
           INTO l_per_pay_count
           FROM pay_personal_payment_methods_f
          WHERE 1 = 1 AND assignment_id = l_assignment_id;

         IF l_per_pay_count = 0
         THEN
            l_bank_code := NULL;

            BEGIN
               SELECT lookup_code
                 INTO l_bank_code
                 FROM hr_lookups h
                WHERE 1 = 1
                  AND lookup_type = 'AE_BANK_NAMES'
                  AND lookup_code = r.bank_name;
            EXCEPTION
               WHEN OTHERS
               THEN
                  fnd_file.put_line (fnd_file.LOG,
                                     'Bank Name not defined in lookup'
                                    );
                  l_bank_code := NULL;
            END;

            IF l_bank_code IS NOT NULL
            THEN
-- Create Employee Payment Method
  -- --------------------------------------------------
               hr_personal_pay_method_api.create_personal_pay_method
                           (                -- Input data elements
                                            -- ------------------------------
                            p_effective_date                  => r.last_hire_date,
                            p_assignment_id                   => l_assignment_id,
                            p_org_payment_method_id           => l_personal_payment_id,
                            p_priority                        => 50,
                            p_percentage                      => 100,
                            p_territory_code                  => 'AE',
                            p_segment1                        => l_bank_code,
                            p_segment2                        => r.branch,
                            p_segment3                        => NULL,
                            p_segment4                        => r.account_no,
                            p_segment5                        => NULL,
                            p_segment7                        => r.routing_code,
-- Output data elements
-- --------------------------------
                            p_personal_payment_method_id      => ln_method_id,
                            p_external_account_id             => ln_ext_acc_id,
                            p_object_version_number           => ln_obj_ver_num,
                            p_effective_start_date            => ld_eff_start_date,
                            p_effective_end_date              => ld_eff_end_date,
                            p_comment_id                      => ln_comment_id
                           );
               COMMIT;
            END IF;
         END IF;
      END LOOP;
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         DBMS_OUTPUT.put_line (SQLERRM);
   END;

   PROCEDURE xx_emp_phone (p_person_id NUMBER)
   IS
      ln_phone_id                per_phones.phone_id%TYPE;
      ln_object_version_number   per_phones.object_version_number%TYPE;
      l_telephone                VARCHAR2 (100);
      l_start_date               DATE;
   BEGIN
--Getting Phone number from the stage table
      BEGIN
         SELECT telephone, last_hire_date
           INTO l_telephone, l_start_date
           FROM xx_employee_master_stg
          WHERE 1 = 1 AND person_id = p_person_id;
      EXCEPTION
         WHEN OTHERS
         THEN
            LOG ('Error at Phone:' || SQLERRM);
      END;

-- Create or Update Employee Phone Detail
-- -----------------------------------------------------------
      hr_phone_api.create_or_update_phone
                          (                   -- Input data elements
                                              -- -----------------------------
                           p_date_from                  => l_start_date,
                           p_phone_type                 => 'M',       --Mobile
                           p_phone_number               => l_telephone,
                           p_parent_id                  => p_person_id,
                           p_parent_table               => 'PER_ALL_PEOPLE_F',
                           p_effective_date             => TO_DATE
                                                                ('31-DEC-4712'),
-- Output data elements
-- --------------------------------
                           p_phone_id                   => ln_phone_id,
                           p_object_version_number      => ln_object_version_number
                          );
      COMMIT;
--   log('Phone ID:'||ln_phone_id);
   EXCEPTION
      WHEN OTHERS
      THEN
         ROLLBACK;
         LOG ('Erro at Phone:' || SQLERRM);
   END;
END xxse_emp_master_cre_api;
/




No comments:

Post a Comment

API to Delete Assignment Set

*** Before going to Delete Assignment Set first we have to delete the Assignment Amendments after that only we have to delete the Assignmen...