Thursday, July 31, 2014

Update/Delete Person - HRMS APIs

--
/*This update API updates person information in a United Kingdom business group.
  The person must exist in the relevant business group on the effective date.
*/
--
declare
--
   l_mode                     varchar2(10) := 'UPDATE'; --'DELETE'
   l_validate                 boolean      :=  false;
   l_date_track_mode          varchar2(30) := 'CORRECTION';
 
   --- DECLARE variables for HR_PERSON_API.update_gb_person
   --- IN variables
   l_person_id                per_all_people_f.person_id%type       := 123456;
   l_employee_number_upd      per_all_people_f.employee_number%type := '567891';
   l_npw_number_upd           per_all_people_f.npw_number%type default null;
   l_object_version_number    per_all_people_f.object_version_number%type :=1;
   --- OUT variables
   l_effective_start_date     date;
   l_effective_end_date       date;
   l_full_name                varchar2(300);
   l_comment_id               number;
   l_name_combination_warning boolean;
   l_assign_payroll_warning   boolean;
   l_orig_hire_warning        boolean;
   --out variable for delete_person
   l_person_org_manager_warning varchar2(100);
--
begin
  --
   if l_mode = 'UPDATE' then
       --
       hr_person_api.update_gb_person (
                         p_validate              => l_validate             --in    boolean   default false
                        ,p_effective_date        => trunc(sysdate)         --in    date
                        ,p_datetrack_update_mode => l_date_track_mode      --in    varchar2
                        ,p_person_id             => l_person_id            --in    number
                         --In/Out
                        ,p_object_version_number => l_object_version_number
                        ,p_employee_number       => l_employee_number_upd
                        ,p_npw_number            => l_npw_number_upd      
                         --Out
                        ,p_effective_start_date  => l_effective_start_date
                        ,p_effective_end_date    => l_effective_end_date
                        ,p_full_name             => l_full_name
                        ,p_comment_id            => l_comment_id
                        ,p_name_combination_warning => l_name_combination_warning
                        ,p_assign_payroll_warning   => l_assign_payroll_warning
                        ,p_orig_hire_warning        => l_orig_hire_warning
                        );
        --                  
        if (l_name_combination_warning = true
            or l_assign_payroll_warning = true
             or l_orig_hire_warning = true)
        then
            dbms_output.put_line('Warning validating API: hr_person_api.update_gb_person');
            rollback;
        else
            dbms_output.put_line('Person Updated');
            commit;
        end if;
  --
  elsif l_mode = 'DELETE' then
         --
         hr_person_api.delete_person(
                           p_validate        => l_validate
                          ,p_effective_date  => trunc(sysdate)
                          ,p_person_id       => l_person_id
                          ,p_perform_predel_validation  => false
                          ,p_person_org_manager_warning => l_person_org_manager_warning
                          );
        --                
        if l_person_org_manager_warning is not null then
            dbms_output.put_line('Warning validating API: hr_person_api.delete_person '||l_person_org_manager_warning||' : '||sqlerrm);
            rollback;
        else
            dbms_output.put_line('Person Deleted');
            commit;
        end if;
        --
  end if;
  --
exception
  when others then
     dbms_output.put_line('Error: '||sqlerrm);
     rollback;
end;

Create Employee - HRMS APIs

--
/*This API creates person in the United Kingdom business group.*/
--
declare
--
   l_validate                 boolean := false;
   --- DECLARE variables for HR_EMPLOYEE_WORKER_API.create_gb_employee
   --- IN variables
   l_hire_date       per_all_people_f.start_date%type           := trunc(sysdate);
   l_last_name       per_all_people_f.last_name%type            := 'Kumar';
   l_first_name      per_all_people_f.first_name%type           := 'Abhay';
   l_middle_names    per_all_people_f.middle_names%type         ;
   l_sex             per_all_people_f.sex%type                  := 'M';
   l_known_as        per_all_people_f.known_as%type ;
   --per_all_people_f.date_of_birth%type
   l_date_of_birth   date := to_date('11/11/1999','DD/MM/YYYY');
   --per_all_people_f.marital_status%type
   l_marital_status  varchar2(10) := 'S';    --hr_lookups--'MARITAL_STATUS'
   l_ni_number       per_all_people_f.national_identifier%type  := 123456;
   l_title           per_all_people_f.title%type     := 'MR.';  --hr_lookups--'TITLE'
   l_email           per_all_people_f.email%type  := 'testadd@abhayappssolution.com';
   l_nationality     per_all_people_f.nationality%type  := 'IN'; --hr_lookups--'NATIONALITY'
   l_employee_number per_all_people_f.employee_number%type  := 567890;
   l_director        varchar2(1) default 'N';
   l_ni_multiple_asg varchar2(1) default 'N';
   l_pensioner       varchar2(1);
   l_business_group_id per_business_groups.business_group_id%type := 101;
   l_person_type_id  per_person_types.person_type_id%type       := 1128;
   l_ethnic_origin   hr_lookups.lookup_code%type  := 'A_IND'; --hr_lookups--'ETH_TYPE'
   l_service_date    date;

      --- OUT variables
   l_person_id                 number default null;
   l_assignment_id             number default null;
   l_per_object_version_number number;
   l_asg_object_version_number number;
   l_per_effective_start_date  date;
   l_per_effective_end_date    date;
   l_full_name                 varchar2(300);
   l_per_comment_id            number;
   l_assignment_sequence       number;
   l_assignment_number         varchar2(10);
   l_name_combination_warning  boolean := false;
   l_assign_payroll_warning    boolean := false;
   l_orig_hire_warning         boolean := false;
--
begin
  --
    hr_employee_api.create_gb_employee (
         p_validate                 => l_validate            --in boolean  default false
        ,p_hire_date            => l_hire_date               --in     date
        ,p_business_group_id     => l_business_group_id      --in     number
        ,p_last_name             => l_last_name              --in     varchar2
        ,p_sex                     => l_sex                  --in     varchar2
        ,p_person_type_id         => l_person_type_id        --in     number   default null
        ,p_comments                 => null                  --in     varchar2 default null
        ,p_date_employee_data_verified => null               --in     date     default null
        ,p_date_of_birth         => l_date_of_birth          --in     date     default null
        ,p_email_address         => l_email                  --in     varchar2 default null
        ,p_employee_number         => l_employee_number
        ,p_expense_check_send_to_addres => 'H'               --Mailing address
        ,p_first_name             => l_first_name            --in     varchar2 default null
        ,p_known_as             => l_known_as                --in     varchar2 default null
        ,p_marital_status         => l_marital_status        --in     varchar2 default null
        ,p_middle_names         => l_middle_names            --in     varchar2 default null
        ,p_nationality             => l_nationality          --in     varchar2 default null
        ,p_ni_number             => l_ni_number              --in     varchar2 default null
        ,p_previous_last_name     => null                    --in     varchar2 default null
        ,p_registered_disabled_flag => null                  --in     varchar2 default null
        ,p_title                 => l_title                   --in     varchar2 default null
        ,p_vendor_id             => null                      --in     number   default null
        ,p_work_telephone         => null                     --in     varchar2 default null
        ,p_attribute_category     => null                     --in     varchar2 default null
        ,p_attribute1             => null                     --in     varchar2 default null
        ,p_attribute2             => null                     --in     varchar2 default null
        ,p_attribute30             => null                    --in     varchar2 default null
        ,p_ethnic_origin         => l_ethnic_origin           --in     varchar2 default null
        ,p_director             => l_director                 --in     varchar2 default 'N'
        ,p_pensioner             => l_pensioner               --in     varchar2 default 'N'
        ,p_work_permit_number     => null                     --in     varchar2 default null
        ,p_addl_pension_years     => null                     --in     varchar2 default null
        ,p_addl_pension_months     => null                    --in     varchar2 default null
        ,p_addl_pension_days     => null                      --in     varchar2 default null
        ,p_ni_multiple_asg         => l_ni_multiple_asg       --in     varchar2 default 'N'
        ,p_date_of_death         => null                      --in     date     default null
        ,p_background_check_status => null                    --in     varchar2 default null
        ,p_background_date_check => null                      --in     date     default null
        ,p_blood_type             => null                     --in     varchar2 default null
        ,p_correspondence_language => null                    --in     varchar2 default null
        ,p_fast_path_employee => null                         --in     varchar2 default null
        ,p_fte_capacity         => null                       --in     number   default null
        ,p_honors                 => null                     --in     varchar2 default null
        ,p_internal_location => null                          --in     varchar2 default null
        ,p_last_medical_test_by => null                             --in     varchar2 default null
        ,p_last_medical_test_date => null                           --in     date     default null
        ,p_mailstop     => null                                    
        ,p_office_number => null                                    --in     varchar2 default null
        ,p_on_military_service => null                              --in     varchar2 default null
        ,p_pre_name_adjunct => null                                 --in     varchar2 default null
        ,p_rehire_recommendation => null                            --in     varchar2 default null
        ,p_projected_start_date => null                             --in     date     default null
        ,p_resume_exists => null                                    --in     varchar2 default null
        ,p_resume_last_updated => null                              --in     date     default null
        ,p_second_passport_exists => null                           --in     varchar2 default null
        ,p_student_status => null                                   --in     varchar2 default null
        ,p_work_schedule => null                                    --in     varchar2 default null
        ,p_suffix => null                                           --in     varchar2 default null
        ,p_benefit_group_id => null                                 --in     number   default null
        ,p_receipt_of_death_cert_date => null                       --in     varchar2 default null
        ,p_coord_ben_med_pln_no => null                             --in     varchar2 default null
        ,p_coord_ben_no_cvg_flag => 'N'                             --in     varchar2 default 'N'
        ,p_coord_ben_med_ext_er => null                             --in     varchar2 default null
        ,p_coord_ben_med_pl_name => null                            --in     varchar2 default null
        ,p_coord_ben_med_insr_crr_name => null                      --in     varchar2 default null
        ,p_coord_ben_med_insr_crr_ident => null                     --in     varchar2 default null
        ,p_coord_ben_med_cvg_strt_dt => null                        --in     date     default null
        ,p_coord_ben_med_cvg_end_dt => null                         --in     date     default null
        ,p_uses_tobacco_flag => null                                --in     varchar2 default null
        ,p_dpdnt_adoption_date => null                              --in     date     default null
        ,p_dpdnt_vlntry_svce_flag => 'N'                            --in     varchar2 default 'N'
        ,p_original_date_of_hire => null                            --in     varchar2 default null
        ,p_adjusted_svc_date => l_service_date                      --in     date     default null
        ,p_town_of_birth => null                                    --in     varchar2 default null
        ,p_region_of_birth => null                                  --in     varchar2 default null
        ,p_country_of_birth => null                                 --in     varchar2 default null
        ,p_global_person_id => null                                 --in     varchar2 default null
        ,p_party_id => null                                         --in     number   default null
        --Out Variables
        ,p_person_id                     => l_person_id                 --out nocopy number
        ,p_assignment_id                 => l_assignment_id            
        ,p_per_object_version_number     => l_per_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_sequence
        ,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   --out nocopy boolean
        );
    --
    if (l_name_combination_warning = true or l_assign_payroll_warning = true or l_orig_hire_warning = true) then
        dbms_output.put_line('Warning validating API: hr_employee_api.create_gb_employee');
        rollback;
    else
        dbms_output.put_line('Employee Created: ');
        commit;
    end if;
  --
exception
  when others then
     dbms_output.put_line('Error: '||sqlerrm);
     rollback;
end;

Thursday, July 24, 2014

Create/Update/Delete Hierarchy Element - HRMS APIs

--------------------------------------------------------------------------
--Create/Update/Delete Hierarchy Element
--------------------------------------------------------------------------
--
declare
--
l_action                       varchar2(10) := 'CREATE'; --'UPDATE'--'DELETE'
l_validate_mode          boolean := true;
l_child_effective_date   date    := sysdate;
l_parent_org_id          hr_all_organization_units.organization_id%type;
l_child_org_id           hr_all_organization_units.organization_id%type;
l_org_structure_ver_id   per_org_structure_versions.org_structure_version_id%type;
l_business_group_id      NUMBER  := 101;
l_inactive_org_warning   BOOLEAN;
l_object_version_number  per_org_structure_elements.object_version_number%TYPE;
l_org_hierarchy          per_organization_structures.name%TYPE;
l_org_structure_element_id  per_org_structure_elements.org_structure_element_id%TYPE;
--
begin
   --
   l_parent_org_id            := 8719;
   l_child_org_id             := 4536;
   l_org_structure_ver_id     := 30061;
   /*select  posv.org_structure_version_id,pos.*
     from  per_org_structure_versions  posv
          ,per_organization_structures pos
    where   pos.name = :l_org_hierarchy
      and   posv.organization_structure_id = pos.organization_structure_id; */
   --  
   l_org_structure_element_id := null;
   l_object_version_number    := null;
   l_inactive_org_warning     := false;
   --
 
   if l_action = 'CREATE' then
 
      begin
          --
          hr_hierarchy_element_api.create_hierarchy_element
                (
                p_validate                  => l_validate_mode
               ,p_effective_date            => l_child_effective_date
               ,p_organization_id_parent    => l_parent_org_id
               ,p_org_structure_version_id  => l_org_structure_ver_id
               ,p_organization_id_child     => l_child_org_id
               ,p_business_group_id         => l_business_group_id
               ,p_pos_control_enabled_flag  => 'N'
               ,p_inactive_org_warning      => l_inactive_org_warning
               ,p_org_structure_element_id  => l_org_structure_element_id
               ,p_object_version_number     => l_object_version_number
                );
           
           if l_object_version_number is null or l_org_structure_element_id is null then
              dbms_output.put_line('create_hierarchy_element API Error: '||sqlerrm);
              rollback;
           elsif l_inactive_org_warning then
              dbms_output.put_line('Warning: Inactive Organization');
              rollback;    
           else
              dbms_output.put_line('hierarchy created Successfully ');
              commit;
           end if;
      exception
         when others then
            dbms_output.put_line('create_hierarchy_element API failed with error :'||sqlerrm);
            rollback;
      end;    

   elsif l_action = 'UPDATE' then
 
       l_org_structure_element_id := 180;
       l_object_version_number    := 3;

       begin
           --
           hr_hierarchy_element_api.update_hierarchy_element
                    (
                    p_validate                  => l_validate_mode
                   ,p_effective_date            => l_child_effective_date
                   ,p_org_structure_element_id  => l_org_structure_element_id
                   ,p_organization_id_parent    => l_parent_org_id
                   ,p_organization_id_child     => l_child_org_id
                   ,p_pos_control_enabled_flag  => 'N'
                   ,p_object_version_number     => l_object_version_number
                    );
                   
           if l_object_version_number is null then
              dbms_output.put_line('update_hierarchy_element API Error: '||sqlerrm);
              rollback;  
           else
              dbms_output.put_line('hierarchy updated Successfully ');
              commit;
           end if;
           
      exception
         when others then
            dbms_output.put_line('update_hierarchy_element API failed with error :'||sqlerrm);
            rollback;
      end;
     
   elsif l_action = 'DELETE' then
 
       l_org_structure_element_id := 180;
       l_object_version_number    := 4;
     
       begin
           --
           hr_hierarchy_element_api.delete_hierarchy_element
                    (
                    p_validate                  => l_validate_mode
                   ,p_org_structure_element_id  => l_org_structure_element_id
                   ,p_object_version_number     => l_object_version_number
                    );
           --          
           dbms_output.put_line('hierarchy deleted Successfully ');
           commit;          
           --
      exception
         when others then
            dbms_output.put_line('delete_hierarchy_element API failed with error :'||sqlerrm);
            rollback;
      end;            
                   
   end if;  

--
exception
  when others then
     dbms_output.put_line('hr_hierarchy_element_api API failed with error :'||sqlerrm);
     rollback;
end;
--

Wednesday, July 23, 2014

Create/Update/Delete Position - HRMS APIs

----------------------------------
--Create Position
----------------------------------
declare
l_eff_start_date           date;
l_eff_end_date             date;
l_effective_date           date := sysdate;
l_date_end                 date := hr_general.end_of_time;
l_job_id                   per_positions.job_id%type;
l_pos_org_id               per_positions.position_id%type;
l_validate_mode            boolean := false;
l_pos_type                 fnd_lookup_values.lookup_code%type;
l_avail_id                 per_shared_types.shared_type_id%type;
l_fte                      number;
l_max_persons              number;
l_probation_period         number;
l_probation_unit_desc      varchar2(500);
l_business_group_id        number := 101;
l_segment1                 varchar2(20) := '123456';
l_orcl_pos_title_code      fnd_lookup_values.lookup_code%type;
l_attribute8               hr_all_positions_f.attribute8%type;
l_attribute9               hr_all_positions_f.attribute9%type;
l_grade_id                 hr_all_positions_f.entry_grade_id%type;
l_barg_unit_cd             hr_all_positions_f.bargaining_unit_cd%type;
l_attribute6               hr_all_positions_f.attribute6%type;
l_working_hours            hr_all_positions_f.working_hours%type;
l_frequency                hr_all_positions_f.frequency%type;
l_position_id              per_positions.position_id%type;
l_object_version_number    hr_all_positions_f.object_version_number%type;
l_position_definition_id   number;
l_pos_name                 per_positions.name%type;
--
begin
   ---    
    l_pos_org_id               := 9780;
    l_effective_date           := trunc(sysdate);
    l_date_end                 := hr_general.end_of_time;
    l_job_id                   := 1082;
    l_pos_type                 := 'SHARED';
    l_avail_id                 := 1;
    l_fte                      := 1;
    l_max_persons              := 100;
    l_probation_period         := 6;
    l_probation_unit_desc      := 'M';
    l_frequency                := 'W';
    l_working_hours            := 37;  
    l_grade_id                 := 1124;
    l_barg_unit_cd             := 'EWP';
    l_attribute6               := NULL;
    l_orcl_pos_title_code      := 'MECH_TECH';
    --
    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;
 
    --
    hr_position_api.create_position
            (
              p_job_id                      => l_job_id             --The job for the position
             ,p_organization_id             => l_pos_org_id
             ,p_effective_date              => l_effective_date  
             ,p_date_effective              => l_effective_date     --The date on which the position becomes active
             ,p_date_end                    => l_date_end
             ,p_validate                    => l_validate_mode
             ,p_position_type               => l_pos_type
             ,p_availability_status_id      => l_avail_id
             ,p_fte                         => l_fte
             ,p_max_persons                 => l_max_persons
             ,p_probation_period            => l_probation_period
             ,p_probation_period_unit_cd    => l_probation_unit_desc
             ,p_business_group_id           => l_business_group_id
             ,p_segment1                    => l_segment1
             ,p_segment2                    => l_orcl_pos_title_code
             ,p_attribute8                  => l_attribute8
             ,p_attribute9                  => l_attribute9
             ,p_entry_grade_id              => l_grade_id
             ,p_bargaining_unit_cd          => l_barg_unit_cd
             ,p_attribute6                  => l_attribute6
             --
             ,p_working_hours               => l_working_hours
             ,p_frequency                   => l_frequency
             --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;  
--
exception
  when others then
     dbms_output.put_line('hr_position_api.create_position API failed with error :'||sqlerrm);
     rollback;
end;                    

----------------------------------
----------------------------------
--Update Position
----------------------------------
declare
l_eff_start_date           date;
l_eff_end_date             date;
l_effective_date           date := sysdate;
l_validate_mode            boolean := false;
l_position_id              per_positions.position_id%type;
l_object_version_number    hr_all_positions_f.object_version_number%type;
l_position_definition_id   number;
l_pos_name                 per_positions.name%type;
l_segment1                 varchar2(20) := '123456';
l_pos_title_code           fnd_lookup_values.lookup_code%type;
l_status                   varchar2(40);
l_valid_grades_changed_warning BOOLEAN;
--
begin
   ---    
   l_datetrack_mode         := 'UPDATE';
   l_position_id            := 1918920;
   l_position_definition_id := NULL;
   l_eff_start_date         := NULL;
   l_eff_end_date           := NULL;
   l_pos_name               := NULL;
   l_effective_date         := trunc(sysdate);
   l_pos_number             := '80304589.';
   l_pos_title_code         := 'MECH_TECH';
   l_object_version_number  := 3;
   l_status                 := 'INVALID';
 
   --
   hr_position_api.update_position
                 ( p_validate                       => l_validate_mode
                  ,p_position_id                  => l_position_id
                  ,p_effective_start_date     => l_eff_start_date
                  ,p_effective_end_date      => l_eff_end_date
                  ,p_position_definition_id   => l_position_definition_id
                  ,p_valid_grades_changed_warning => l_valid_grades_changed_warning
                  ,p_status                          => l_status        
                  ,p_name                          => l_pos_name
                  ,p_segment1                    => l_segment1
                  ,p_segment2                    => l_pos_title_code                      
                  ,p_object_version_number              => l_object_version_number
                  ,p_effective_date             => l_effective_date
                  ,p_datetrack_mode         => l_datetrack_mode
                 );
                       
     dbms_output.put_line('Update Successful : ');
     --Important: regenerate_position_name needs to be called when there is a name update
     --                      
     apps.hr_position_api.regenerate_position_name(l_position_id);
     --                  
     dbms_output.put_line('Regenerate Successful : ');
                     
   if l_object_version_number is null then
      dbms_output.put_line('hr_position_api.update_position API Error: '||sqlerrm);
      rollback;
   elsif l_valid_grades_changed_warning then
      dbms_output.put_line('Warning: Grade changed');
      rollback;    
   else
      commit;
   end if;  
--
exception
  when others then
     dbms_output.put_line('hr_position_api.update_position API failed with error :'||sqlerrm);
     rollback;
end;          

----------------------------------
--Delete Position
----------------------------------  
declare
--
l_object_version_number number ;
l_pos_name              hr_all_positions_f.name%type;
l_pos_id                number ;
l_eff_start_date           date;
l_eff_end_date             date;

cursor cur_del_pos is
select  max(pos.object_version_number) object_version_number
         ,pos.position_id
         ,pos.name
from   hr_all_positions_f    pos  
where  pos.position_id = 2182095
and    pos.business_group_id      = 101
group by position_id,name
;
--
begin
  --
  for i in cur_del_pos loop
     l_object_version_number   := i.object_version_number;
     l_pos_id                  := i.position_id;

     dbms_output.put_line('Deleting Position '||i.position_id);
               
     hr_position_api.delete_position(
                                      p_validate    => false
                                     ,p_position_id => l_pos_id
                                     ,p_object_version_number => l_object_version_number
                                    ,p_effective_start_date => l_effective_start_date
                                    ,p_effective_end_date  => l_effective_end_date
                                    ,p_effective_date         => trunc(sysdate)
                                    ,p_datetrack_mode     => 'ZAP'
                                    );
  end loop;
  --
  commit;
  dbms_output.put_line('Success: ');
exception
  when others then
     dbms_output.put_line('Error: '||sqlerrm);
     rollback;
end;     

Tuesday, July 22, 2014

Create/Update Organization - HRMS APIs

-----------------------------------
--Create Organization
-----------------------------------
declare
l_validate_mode          BOOLEAN := TRUE;
l_begin_date             DATE    := SYSDATE;
l_end_date               DATE    := hr_general.end_of_time;
l_business_group_id      NUMBER  := 101;
l_orgname                hr_all_organization_units.name%TYPE := 'Test Org';
l_intl_extl              fnd_lookup_values.meaning%TYPE;
l_organization_id        hr_all_organization_units.organization_id%TYPE;
l_object_version_number  hr_all_organization_units.object_version_number%TYPE;
l_duplicate_org_warning  BOOLEAN;
begin
  apps.hr_organization_api.create_organization
  (
     p_validate                    => l_validate_mode
    ,p_effective_date           => l_begin_date --Reference date for validating lookup values
    ,p_business_group_id    => l_business_group_id
    ,p_date_from                => l_begin_date --Date the organization takes effect
    ,p_name                        => l_orgname
    ,p_location_id                => null
    ,p_date_to                     => l_end_date
    ,p_internal_external_flag  => l_intl_extl--'INT' --Internal/External org flag
    ,p_internal_address_line  => null
    ,p_type                           => null  --Org type -- Lookup Type ORG_TYPE
    ,p_comments                   => null
    ,p_attribute_category       => null
    ,p_attribute1                    => null
    ,p_attribute2                    => 'Test Org'
    ,p_attribute3                    => null
    ,p_attribute4                    => null
    ,p_attribute5                    => null
    --Out Variables
    ,p_organization_id                 => l_organization_id
    ,p_object_version_number      => l_object_version_number
    ,p_duplicate_org_warning       => l_duplicate_org_warning
    );

   if l_organization_id is null or l_object_version_number is null then
      dbms_output.put_line('hr_organization_api.update_organization API Error: '||sqlerrm);
      rollback;
   elsif l_duplicate_org_warning then
      dbms_output.put_line('Warning: Duplicate Organization');
      rollback;
   else
      commit;
   end if;  
--
exception
  when others then
     dbms_output.put_line('hr_organization_api.create_organization API failed with error :'||sqlerrm);
     rollback;
end;

-----------------------------------
-----------------------------------
--Update Organization
-----------------------------------

declare
l_validate_mode          BOOLEAN := TRUE;
l_begin_date             DATE    := SYSDATE;
l_end_date               DATE    := hr_general.end_of_time;
l_organization_id        hr_all_organization_units.organization_id%TYPE := 104;
l_orgname                hr_all_organization_units.name%TYPE := 'Test Org';
l_object_version_number  hr_all_organization_units.object_version_number%TYPE;
l_duplicate_org_warning  BOOLEAN;
begin
   --
   hr_organization_api.update_organization
      (
        p_validate                  => l_validate_mode
       ,p_effective_date         => l_begin_date --Reference date for validating lookup values
       ,p_date_from               => l_begin_date --Date the organization takes effect
       ,p_date_to                   => l_end_date
       ,p_organization_id        => l_organization_id
       ,p_name                      => l_orgname
       ,p_attribute_category    => null
       ,p_attribute1                => null
       ,p_attribute2                => 'Test Org'
       --Out Variables
       ,p_object_version_number    => l_object_version_number
       ,p_duplicate_org_warning     => l_duplicate_org_warning
      );

   if l_object_version_number is null then
      dbms_output.put_line('hr_organization_api.update_organization API Error: '||sqlerrm);
      rollback;
   elsif l_duplicate_org_warning then
      dbms_output.put_line('Warning: Duplicate Organization');
      rollback;
   else
      commit;
   end if;
--
exception
  when others then
     dbms_output.put_line('hr_organization_api.update_organization API failed with error :'||sqlerrm);
     rollback;
end;

Find The Date Track Mode - HRMS APIs

Hmmm....it's been a long time since I've posted here. Currently I am working on an HRMS project so I shall try to provide the details of HRMS related APIs and try to cover as many as possible.

I have noticed that below three parameters are common and important for these APIs.
1> Date track mode
   >> I won't explain the date track mode in detail, please refer the script below. I hope I have given the enough description above each mode there.
2> Validate mode
   >> It's better to use the API first in the validate mode with passing this parameter as TRUE and then in process mode by passing this parameter as FALSE.
3> Version number
   >> Make sure you pass the correct version number.

I shall start with Organization Management APIs (Org/position/hierarchy) followed by Personal Administration(PA) (Person/Contacts/Assignment/Termination) and at last the User account one (User/Responsibility). - Please refer posts under HRMS lebels.

-----------------------------------------------------------
-- Determine the date track mode
-----------------------------------------------------------
declare
  lv_assignmnet_id    number;
  lv_effective_date   date;
  -- DT_API Output Variables
  lv_correction       boolean;
  lv_update           boolean;
  lv_update_override  boolean;
  lv_update_change_insert boolean;
  lv_mode             varchar2(50);

begin
    -- determine the datetrack mode
    dt_api.find_dt_upd_modes
        (p_effective_date       => lv_effective_date,
         p_base_table_name   => 'PER_ALL_ASSIGNMENTS_F', --'PER_ALL_PEOPLE_F'
         p_base_key_column   => 'ASSIGNMENT_ID',         --'PERSON_ID'
         p_base_key_value      => lv_assignmnet_id,        --lv_person_id
         --Out Variables
         p_correction               => lv_correction,
         p_update                    => lv_update,
         p_update_override      => lv_update_override,
         p_update_change_insert => lv_update_change_insert
        );
 
    if lv_correction then
      --Correction - Over writes the existing record, no history will be maintained
      lv_mode:='CORRECTION';
    elsif lv_update then
      --Inserts a new record effective as of the effective date parameter and keeps the history
      lv_mode:='UPDATE';
    elsif lv_update_override then
      --Future dated changes - do insert then overrides the future record
      lv_mode:='UPDATE_OVERRIDE';
    elsif lv_update_change_insert then
      --Future dated changes - do insert and keeps the future record
      lv_mode:='UPDATE_CHANGE_INSERT';
    end if;    
    --  
exception
   when others then
      dbms_output.put_line('Error: '||sqlerrm);
end;