Thursday, 1 June 2017

HRMS Batch Element Entries API R12.1.3

---------------BATCH HEADER UPLOADING-------------------------------
DECLARE
   l_batch_id                NUMBER := NULL;
   l_object_version_number   NUMBER := NULL;
BEGIN
   pay_batch_element_entry_api.create_batch_header (
      p_session_date            => TRUNC (SYSDATE),
      p_batch_name              => 'BATCH_THROUGH_API',
      p_business_group_id       => 81, --relevant business group id
      p_action_if_exists        => 'I',
      p_batch_id                => l_batch_id,
      p_object_version_number   => l_object_version_number
   );
   COMMIT;
   DBMS_OUTPUT.put_line (l_batch_id || ': SUCCESS');
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Main Exception: ' || SQLERRM);
END;
---------------BATCH HEADER UPLOADING-------------------------------

-- To Create Batch Line (Batch Element Entry)-----------------------
DECLARE
   v_eff_start_date                DATE := NULL;
   v_eff_end_date                  DATE := NULL;
   v_input_value_id                NUMBER := NULL;
   v_element_link_id               NUMBER := NULL;
   v_element_name                  VARCHAR2 (500) := NULL;
   v_element_type_id               NUMBER := NULL;
   v_batch_id                      NUMBER := NULL;
   v_batch_line_id                 NUMBER := NULL;
   v_batch_object_version_number   NUMBER := NULL;

CURSOR emp_details
is
Select '3601' assignment_number, '1919' assignment_id
from dual; -- table where your data is uploaded.
--You can use in above statement you relevant data for all the records you need to enter in batch entry

BEGIN
 
   fnd_global.APPS_INITIALIZE(user_id => 1741, resp_id => 50678, resp_appl_id => 800); --non mandetory
 
   -- BLOCK to Get Batch ID
   BEGIN
      SELECT   batch_id
        INTO   v_batch_id
        FROM   pay_batch_headers pbh
       WHERE   TRIM (pbh.batch_name) = 'BATCH_THROUGH_API'; --Same as used above
   EXCEPTION
      WHEN OTHERS
      THEN
         NULL;
   END;
 
    -- Get Element Details as per your Element
   BEGIN
      SELECT   pivf.input_value_id,
               pelf.element_link_id,
               petf.element_name,
               petf.element_type_id
        INTO   v_input_value_id,
               v_element_link_id,
               v_element_name,
               v_element_type_id
        FROM   pay_element_types_f petf,
               pay_element_links_f pelf,
               pay_input_values_f pivf
       WHERE   pelf.element_type_id = petf.element_type_id
               AND TRUNC (SYSDATE) BETWEEN petf.effective_start_date
                                       AND  petf.effective_end_date
               AND TRUNC (SYSDATE) BETWEEN pelf.effective_start_date
                                       AND  pelf.effective_end_date
               AND pelf.payroll_id = 12 --<<Your payroll id>>
               AND pivf.element_type_id = pivf.element_type_id
               AND pivf.NAME = 'Hours'--<<Name of the Input value>>
               AND TRUNC (SYSDATE) BETWEEN pivf.effective_start_date
                                       AND  pivf.effective_end_date
               AND pivf.element_type_id = pelf.element_type_id
               AND petf.element_name = 'ELEMENT NAME'; --<<Name of the Element>>
   EXCEPTION
      WHEN OTHERS
      THEN
         v_input_value_id := NULL;
         v_element_link_id := NULL;
   END;
FOR i IN emp_details
LOOP
BEGIN
   -- API to create ELEMENT
   pay_batch_element_entry_api.create_batch_line (
      p_session_date            => TRUNC (SYSDATE),
      p_batch_id                => v_batch_id,
      p_assignment_id           => i.assignment_id,
      p_assignment_number       => i.assignment_number,
      p_date_earned             => TRUNC (SYSDATE),
      p_effective_date          => TRUNC (SYSDATE),
      p_effective_start_date    => v_eff_start_date,
      p_effective_end_date      => v_eff_end_date,
      p_element_name            => v_element_name,
      p_element_type_id         => v_element_type_id,
      p_value_2                 => 3,
      p_batch_line_id           => v_batch_line_id,
      p_object_version_number   => v_batch_object_version_number
   );
   COMMIT;
   DBMS_OUTPUT.put_line (v_batch_id || ': SUCCESS');
   DBMS_OUTPUT.put_line (v_batch_line_id || ': SUCCESS');
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Exception for '||i.assignment_number||' : '||SQLERRM);
END;
END LOOP;
EXCEPTION
   WHEN OTHERS
   THEN
      DBMS_OUTPUT.put_line ('Main Exception: ' || SQLERRM);
END;
-- To Create Batch Line (Batch Element Entry)-----------------------

HRMS Absence API in oracle applications R12.1.3

DECLARE
   l_absence_attendance_id       NUMBER;
   l_object_version_number       NUMBER;
   l_occurrence                  NUMBER;
   l_dur_dys_less_warning        BOOLEAN;
   l_dur_hrs_less_warning        BOOLEAN;
   l_exceeds_pto_entit_warning   BOOLEAN;
   l_exceeds_run_total_warning   BOOLEAN;
   l_abs_overlap_warning         BOOLEAN;
   l_abs_day_after_warning       BOOLEAN;
   l_dur_overwritten_warning     BOOLEAN;
   l_absence_days                NUMBER := NULL;
   l_absence_hours               NUMBER := NULL;
   error_msg                     VARCHAR2(500);
BEGIN
   fnd_global.APPS_INITIALIZE(user_id => 1741, resp_id => 50678, resp_appl_id => 800);

   HR_PERSON_ABSENCE_API.create_person_absence (
      p_validate                     => FALSE,
      p_effective_date               => SYSDATE,
      p_person_id                    => 2009,
      p_business_group_id            => 81,
      p_absence_attendance_type_id   => 1063,
      p_abs_attendance_reason_id     => NULL,
      p_comments                     => 'Uploaded through API',
      p_date_notification            => TO_DATE ('01-MAR-2017', 'DD-MON-YYYY'),
      p_date_start                   => TO_DATE ('02-MAR-2017', 'DD-MON-YYYY'),
      p_date_end                     => TO_DATE ('03-MAR-2017', 'DD-MON-YYYY'),
      p_absence_days                 => l_absence_days,
      p_absence_hours                => l_absence_hours,
      p_attribute_category           => 'Emergency Leave', -- Absence Type
      p_absence_attendance_id        => l_absence_attendance_id,
      p_object_version_number        => l_object_version_number,
      p_occurrence                   => l_occurrence,
      p_dur_dys_less_warning         => l_dur_dys_less_warning,
      p_dur_hrs_less_warning         => l_dur_hrs_less_warning,
      p_exceeds_pto_entit_warning    => l_exceeds_pto_entit_warning,
      p_exceeds_run_total_warning    => l_exceeds_run_total_warning,
      p_abs_overlap_warning          => l_abs_overlap_warning,
      p_abs_day_after_warning        => l_abs_day_after_warning,
      p_dur_overwritten_warning      => l_dur_overwritten_warning
   );
    COMMIT;
    dbms_output.put_line('p_absence_attendance_id Message: '||l_absence_attendance_id);
    dbms_output.put_line('p_occurrence: '||l_occurrence);
    dbms_output.put_line('p_absence_days: '||l_absence_days);
   exception when others then
    error_msg := SUBSTR (SQLERRM, 1, 99);
   dbms_output.put_line('Error Message: '||error_msg);
END;