Wednesday, July 14, 2021

Employee Supervisor Update API in Oracle Apps

PROCEDURE emp_supervisor_update_p(errbuf IN VARCHAR2

                                 ,retcode  IN NUMBER

IS

l_person_id NUMBER;

l_assignment_id NUMBER;

l_effective_date DATE:= NULL;

l_supervisor_id NUMBER;

lb_correction BOOLEAN;

lb_update BOOLEAN;

lb_update_override BOOLEAN;

lb_update_change_insert BOOLEAN;

lc_dt_ud_mode VARCHAR2(100):= NULL;

l_obj_version_num NUMBER;

l_soft_coding_keyflex_id hr_soft_coding_keyflex.soft_coding_keyflex_id%TYPE;

l_concatenated_segments VARCHAR2(2000);

l_comment_id per_all_assignments_f.comment_id%TYPE;

l_effective_start_date per_all_assignments_f.effective_start_date%TYPE;

l_effective_end_date per_all_assignments_f.effective_end_date%TYPE;

l_no_managers_warning BOOLEAN;

l_other_manager_warning BOOLEAN;

err_msg         VARCHAR2(4000):= NULL;

current_records NUMBER;

total_records NUMBER;

error_records NUMBER;

l_effective_date_valid NUMBER;

error_msg          VARCHAR2(4000):= NULL;


CURSOR cur_emp_supervisor_upd 

IS

SELECT ROWID, stg.*

  FROM xx_emp_sup_update_stg stg 

WHERE stg.update_status IS NULL OR stg.update_status = 'E';


BEGIN

SELECT COUNT(*) 

  INTO current_records 

  FROM xx_emp_sup_update_stg stg 

WHERE stg.update_status IS NULL OR stg.update_status = 'E';


FOR rec_emp_supervisor_upd IN cur_emp_supervisor_upd 

LOOP

l_soft_coding_keyflex_id := NULL;

l_obj_version_num := NULL;


BEGIN

SELECT person_id 

  INTO l_person_id

  FROM per_all_people_f

WHERE employee_number =rec_emp_supervisor_upd.employee_id 

   AND SYSDATE BETWEEN effective_start_date

   AND effective_end_date;


dbms_output.put_line(l_person_id);


EXCEPTION 

WHEN OTHERS THEN

err_msg1 := err_msg1||SQLERRM||'.';

END;


BEGIN

SELECT MAX(object_version_number) 

  INTO l_obj_version_num

  FROM per_all_assignments_f

WHERE person_id = l_person_id

   AND SYSDATE BETWEEN effective_start_date AND effective_end_date;

EXCEPTION 

WHEN OTHERS THEN

err_msg1 := err_msg1||SQLERRM||' *';

END;


BEGIN

SELECT assignment_id

      ,effective_start_date

  INTO l_assignment_id

      ,l_effective_date         

  FROM per_all_assignments_f

WHERE person_id = l_person_id

   AND SYSDATE BETWEEN effective_start_date AND effective_end_date

   AND object_version_number = l_obj_version_num;

EXCEPTION 

WHEN OTHERS THEN

err_msg1 := err_msg1||SQLERRM||'.';

END;


IF rec_emp_supervisor_upd.effective_date >= l_effective_date THEN

l_effective_date_valid := 1;

ELSE

l_effective_date_valid := NULL;

END IF;


BEGIN


SELECT person_id 


  INTO l_supervisor_id


  FROM per_all_people_f


WHERE employee_number = rec_emp_supervisor_upd.new_manager_id


   AND SYSDATE BETWEEN effective_start_date


   AND effective_end_date;


dbms_output.put_line(l_supervisor_id);


EXCEPTION 


WHEN OTHERS THEN


err_msg1 := err_msg1||SQLERRM||' *';


END;


IF l_person_id IS NOT NULL 


AND l_assignment_id IS NOT NULL 


AND rec_emp_supervisor_upd.effective_date IS NOT NULL 


AND l_supervisor_id IS NOT NULL 


AND l_obj_version_num IS NOT NULL 


AND l_effective_date_valid IS NOT NULL 


THEN


BEGIN


dt_api.find_dt_upd_modes

    (p_effective_date         => (rec_emp_supervisor_upd.effective_date)

,p_base_table_name        => 'PER_ALL_ASSIGNMENTS_F'

,p_base_key_column        => 'ASSIGNMENT_ID'

,p_base_key_value         => l_assignment_id

,p_correction             => lb_correction

,p_update                 => lb_update

,p_update_override        => lb_update_override

,p_update_change_insert   => lb_update_change_insert

);


IF ( lb_update_override = TRUE OR lb_update_change_insert = TRUE )

THEN

lc_dt_ud_mode := 'UPDATE_OVERRIDE';

END IF;


IF lb_correction = TRUE

THEN

lc_dt_ud_mode := 'CORRECTION';

END IF;


IF lb_update = TRUE

THEN

lc_dt_ud_mode := 'UPDATE';

END IF;


hr_assignment_api.update_emp_asg

(

   p_effective_date             => rec_emp_supervisor_upd.effective_date

  ,p_datetrack_update_mode      => lc_dt_ud_mode

  ,p_assignment_id              => l_assignment_id

  ,p_supervisor_id              => l_supervisor_id

  ,p_change_reason              => NULL

  ,p_object_version_number      => l_obj_version_num

  ,p_soft_coding_keyflex_id     => l_soft_coding_keyflex_id

  ,p_concatenated_segments      => l_concatenated_segments

  ,p_comment_id                 => l_comment_id

  ,p_effective_start_date       => l_effective_start_date

  ,p_effective_end_date         => l_effective_end_date

  ,p_no_managers_warning        => l_no_managers_warning

  ,p_other_manager_warning      => l_other_manager_warning

);


IF l_effective_start_date IS NOT NULL THEN

UPDATE xx_emp_sup_update_stg 

   SET update_status = 'S' 

WHERE ROWID = rec_emp_supervisor_upd.ROWID;

dbms_output.put_line('employee_id: '||rec_emp_supervisor_upd.employee_id||' start date'||l_effective_start_date);

COMMIT;

ELSE

UPDATE xx_emp_sup_update_stg 

   SET update_status = 'E'

  ,err_msg = 'record not inserted due to api issue.' 

WHERE ROWID = rec_emp_supervisor_upd.ROWID;

dbms_output.put_line('employee_id: '||rec_emp_supervisor_upd.employee_id||' has failed to update.');

END IF;


EXCEPTION 

WHEN OTHERS THEN

error_msg := error_msg||SQLERRM||'..';

UPDATE xx_emp_sup_update_stg 

   SET update_status = 'E'

      ,err_msg = error_msg 

WHERE ROWID = rec_emp_supervisor_upd.ROWID;

COMMIT;

END;


ELSE 

IF l_person_id IS NULL THEN

err_msg:= err_msg||'no such employee exists.'; 

END IF;


IF l_assignment_id IS NULL THEN

err_msg:= err_msg||'no such assignment exists.'; 

END IF;


IF rec_emp_supervisor_upd.effective_date IS NULL THEN

err_msg:= err_msg||'please provide correct effective date.'; 

END IF;


IF l_supervisor_id IS NULL THEN

err_msg:= err_msg||'no such supervisor exists.'; 

END IF;


UPDATE xx_emp_sup_update_stg 

   SET update_status = 'E'

      ,err_msg = err_msg 

WHERE ROWID = rec_emp_supervisor_upd.ROWID;


COMMIT;


END IF;

END LOOP;


SELECT COUNT(1) 

  INTO total_records 

  FROM xx_emp_sup_update_stg;


SELECT COUNT(1) 

  INTO error_records 

  FROM xx_emp_sup_update_stg 

WHERE update_status = 'E';


fnd_file.put_line(fnd_file.log, '---------------RECORD VALIDATION STATS-------------------');

fnd_file.put_line(fnd_file.log,'total no. of records : '||total_records);

fnd_file.put_line(fnd_file.log,'current no. of records to insert : '||current_records);

fnd_file.put_line(fnd_file.log,'no. of records inserted : '||(current_records-error_records));

fnd_file.put_line(fnd_file.log,'no. of records failed to insert : '||error_records);

fnd_file.put_line(fnd_file.log, '---------------------------------------------------------');


fnd_file.put_line(fnd_file.output, '---------------record validation stats-------------------');

fnd_file.put_line(fnd_file.output,'total no. of records : '||total_records);  

fnd_file.put_line(fnd_file.output,'current no. of records to insert : '||(total_records-error_records));

fnd_file.put_line(fnd_file.output,'no. of records failed to insert : '||error_records);

fnd_file.put_line(fnd_file.output, '---------------------------------------------------------');

EXCEPTION 

WHEN OTHERS THEN

dbms_output.put_line(SQLERRM);

END;


/


No comments:

Post a Comment

SupplierAddressImportTemplate.xlsm South Africa Suburb Field mapping in POZ_SUPPLIER_ADDRESSES_INT

Suburb mpping in Supplier Address Import Template will be mapped to Address Element Attribute2 (HZ_LOCATIONS. ADDR_ELEMENT_ATTRIBUTE2)