Employee Assignment API

Download as txt, pdf, or txt
Download as txt, pdf, or txt
You are on page 1of 4

/* Formatted on 2023/08/24 19:27 (Formatter Plus v4.8.

8) */
EXEC dbms_output.enable(999999999999999999999999999);

DECLARE
CURSOR c_emp_assg
IS
SELECT *
FROM xx_employee
WHERE NVL (assg_process_flag, 'N') <> 'Y';

lc_c_emp_assg c_emp_assg%ROWTYPE;
l_object_version_number NUMBER;
l_special_ceiling_step_id NUMBER;
l_people_group_id NUMBER;
l_soft_coding_keyflex_id NUMBER;
l_supervisor_id NUMBER;
l_payroll_id NUMBER;
l_group_name VARCHAR2 (100);
l_effective_start_date DATE;
l_effective_end_date DATE;
l_org_now_no_manager_warning BOOLEAN;
l_other_manager_warning BOOLEAN;
l_spp_delete_warning BOOLEAN;
l_entries_changed_warning VARCHAR2 (100);
l_tax_district_changed_warning BOOLEAN;
l_concatenated_segments VARCHAR2 (100);
l_gsp_post_process_warning VARCHAR2 (100);
error_desc VARCHAR2 (240);
lv_assg_flag CHAR (1);
l_job_id VARCHAR2 (20);
l_position_id VARCHAR2 (20);
l_grade_id VARCHAR2 (20);
l_org_id VARCHAR2 (20);
l_loc_id VARCHAR2 (20);
l_assg_cat VARCHAR2 (50);
l_assg_start_date DATE;
l_pf_flag CHAR (1);
BEGIN
OPEN c_emp_assg;

LOOP
FETCH c_emp_assg
INTO lc_c_emp_assg;

EXIT WHEN c_emp_assg%NOTFOUND;

BEGIN
---------------------------
-- Grade ID
---------------------------
BEGIN
SELECT pg.grade_id
INTO l_grade_id
FROM per_grades pg, per_grade_definitions pgd
WHERE pg.grade_definition_id = pgd.grade_definition_id
AND UPPER (pgd.segment1) = UPPER (lc_c_emp_assg.grad_segment1)
AND pg.business_group_id = 3767;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_grade_id := NULL;
END;

---------------------------------------------------------------
-- Organization ID
---------------------------------------------------------------
BEGIN
SELECT organization_id
INTO l_org_id
FROM hr_all_organization_units
WHERE UPPER (NAME) LIKE UPPER (lc_c_emp_assg.org_name);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_org_id := NULL;
END;

---------------------------------------------------------------
-- Location ID
---------------------------------------------------------------
BEGIN
SELECT location_id
INTO l_loc_id
FROM hr_locations_all
WHERE UPPER (location_code) LIKE
UPPER (lc_c_emp_assg.location_name);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_loc_id := NULL;
END;

BEGIN
SELECT ppf.payroll_id
INTO l_payroll_id
FROM pay_payrolls_f ppf
WHERE UPPER (ppf.payroll_name) = UPPER (lc_c_emp_assg.payroll);
EXCEPTION
WHEN NO_DATA_FOUND
THEN
l_payroll_id := NULL;
END;

SELECT lookup_code
INTO l_assg_cat
FROM fnd_lookup_values_vl
WHERE lookup_type = 'EMP_CAT'
AND UPPER (meaning) LIKE UPPER (lc_c_emp_assg.employment_category);

----------------------
-- Object Version Number
----------------------
SELECT paaf.object_version_number
INTO l_object_version_number
FROM per_all_assignments_f paaf
WHERE SYSDATE BETWEEN paaf.effective_start_date
AND paaf.effective_end_date
AND paaf.assignment_id = lc_c_emp_assg.assignment_id;
IF lc_c_emp_assg.assg_start_date IS NOT NULL
THEN
l_assg_start_date := lc_c_emp_assg.assg_start_date;
END IF;

-----------------------------------------------------------------------------
hr_assignment_api.update_emp_asg_criteria
(p_validate => FALSE,
p_effective_date => lc_c_emp_assg.hire_date,
p_datetrack_update_mode => 'CORRECTION' --'UPDATE'
,
p_assignment_id => lc_c_emp_assg.assignment_id,
p_job_id => NULL,
p_position_id => NULL,
p_grade_id => l_grade_id,
p_location_id => l_loc_id,
p_organization_id => l_org_id,
p_employment_category => l_assg_cat,
p_payroll_id => l_payroll_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_special_ceiling_step_id => l_special_ceiling_step_id,
p_people_group_id => l_people_group_id,
p_group_name => l_group_name,
p_org_now_no_manager_warning => l_org_now_no_manager_warning,
p_other_manager_warning => l_other_manager_warning,
p_spp_delete_warning => l_spp_delete_warning,
p_entries_changed_warning => l_entries_changed_warning,
p_tax_district_changed_warning => l_tax_district_changed_warning,
p_soft_coding_keyflex_id => l_soft_coding_keyflex_id,
p_concatenated_segments => l_concatenated_segments,
p_gsp_post_process_warning => l_gsp_post_process_warning
);

----------------for updating probation ---------------


xx_update_emp_prob (l_effective_start_date,
lc_c_emp_assg.probation_period,
lc_c_emp_assg.probation_unit,
lc_c_emp_assg.assignment_id,
lc_c_emp_assg.assg_number
);

IF l_effective_start_date IS NOT NULL


THEN
UPDATE xx_employee
SET error_description = NULL,
assg_process_flag = 'Y',
asg_obj_ver_number = l_object_version_number
WHERE emp_code = lc_c_emp_assg.emp_code
AND line_id = lc_c_emp_assg.line_id;

DBMS_OUTPUT.put_line ('Employee is Created without any Warning');


ELSE
error_desc := error_desc || SQLERRM;
DBMS_OUTPUT.put_line (error_desc);

UPDATE xx_employee
SET error_description = error_desc,
assg_process_flag = 'N'
WHERE emp_code = lc_c_emp_assg.emp_code
AND line_id = lc_c_emp_assg.line_id;
END IF;

DBMS_OUTPUT.put_line (lv_assg_flag);
END;

COMMIT;
END LOOP;

CLOSE c_emp_assg;
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line (SQLERRM);
END;
/

You might also like