Sie sind auf Seite 1von 5

DECLARE

LN_GRADE_ID NUMBER;
l_effective_start_date DATE := NULL;
l_effective_end_date DATE := NULL;
l_update_warning BOOLEAN;
l_element_type_id NUMBER := NULL;
l_input_stop_salary_id NUMBER := NULL;
l_business_group_id NUMBER := 81;
l_effective_date DATE ;
LD_EFFECTIVE_START_DATE date;
LN_ELEMENT_ENTRY_ID NUMBER;
LN_OBJECT_VERSION_NUMBER NUMBER;
l_delete_warning BOOLEAN;

V_PEOPLE_GROUP_ID NUMBER ;
V_SPECIAL_CEILING_STEP_ID NUMBER ;
V_SOFT_CODING_KEYFLEX_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;
V_CONCATENATED_SEGMENTS VARCHAR2 (200);
V_GSP_POST_PROCESS_WARNING VARCHAR2 (200);

LC_FLAG VARCHAR2(10):='Y';

CURSOR c1
IS
SELECT PEEF.ASSIGNMENT_ID,COUNT(*)FROM
PAY_ELEMENT_TYPES_F PATF,
PAY_ELEMENT_ENTRIES_F PEEF
WHERE PATF.ELEMENT_NAME LIKE 'Rarity Allowance'
and trunc(sysdate) between PATF.effective_Start_date and
PATF.effective_End_date
AND PATF.ELEMENT_TYPE_ID = PEEF.ELEMENT_TYPE_ID
AND PEEF.effective_Start_date >=TO_DATE('18-01-2018','DD-MM-RRRR')
AND PEEF.ASSIGNMENT_ID=4800
GROUP BY PEEF.ASSIGNMENT_ID
HAVING COUNT(*)>1;

CURSOR C2(P_ASSIGNMENT_ID NUMBER)


IS
SELECT * FROM PER_ALL_ASSIGNMENTS_F
WHERE ASSIGNMENT_ID=P_ASSIGNMENT_ID
AND PRIMARY_FLAG='Y'
AND EFFECTIVE_START_DATE >=TO_DATE('18-01-2018','DD-MM-RRRR');

CURSOR C3(P_ASSIGNMENT_ID NUMBER)


IS
SELECT peef.*
FROM
PAY_ELEMENT_TYPES_F PATF,
PAY_ELEMENT_ENTRIES_F PEEF
WHERE PATF.ELEMENT_NAME LIKE 'Rarity Allowance'
and trunc(sysdate) between PATF.effective_Start_date and
PATF.effective_End_date
AND PATF.ELEMENT_TYPE_ID = PEEF.ELEMENT_TYPE_ID
AND PEEF.effective_Start_date >=TO_DATE('19-01-2018','DD-MM-RRRR')
AND PEEF.ASSIGNMENT_ID=P_ASSIGNMENT_ID;

BEGIN
FOR i IN c1
LOOP
LN_ELEMENT_ENTRY_ID :=NULL;
LN_OBJECT_VERSION_NUMBER:=NULL;
LD_EFFECTIVE_START_DATE:=NULL;
LN_GRADE_ID :=NULL;
LC_FLAG :='Y';

BEGIN
SELECT GRADE_ID
INTO
LN_GRADE_ID
FROM PER_ALL_ASSIGNMENTS_F
WHERE ASSIGNMENT_ID=I.ASSIGNMENT_ID
AND PRIMARY_FLAG='Y'
AND EFFECTIVE_START_DATE =TO_DATE('18-01-2018','DD-MM-RRRR');
EXCEPTION
WHEN NO_DATA_FOUND
THEN
LN_GRADE_ID :=NULL;
WHEN TOO_MANY_ROWS
THEN
LN_GRADE_ID :=NULL;
WHEN OTHERS
THEN
LN_GRADE_ID :=NULL;
END;

FOR J IN C2(I.ASSIGNMENT_ID)
LOOP
V_PEOPLE_GROUP_ID:=NULL;
V_GROUP_NAME :=NULL;
V_EFFECTIVE_START_DATE:=NULL;
V_EFFECTIVE_END_DATE:=NULL;
V_ORG_NOW_NO_MANAGER_WARNING :=NULL;
V_OTHER_MANAGER_WARNING:=NULL;
V_SPP_DELETE_WARNING:=NULL;
V_ENTRIES_CHANGED_WARNING:=NULL;
V_TAX_DISTRICT_CHANGED_WARNING:=NULL;
V_CONCATENATED_SEGMENTS :=NULL;
V_GSP_POST_PROCESS_WARNING:=NULL;

BEGIN
HR_ASSIGNMENT_API.UPDATE_EMP_ASG_CRITERIA (
P_EFFECTIVE_DATE =>
J.EFFECTIVE_START_DATE,
P_DATETRACK_UPDATE_MODE => 'CORRECTION',
P_ASSIGNMENT_ID => J.ASSIGNMENT_ID,
P_VALIDATE => FALSE,
P_GRADE_ID => LN_GRADE_ID,
P_OBJECT_VERSION_NUMBER => J.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,
P_GSP_POST_PROCESS_WARNING => V_GSP_POST_PROCESS_WARNING);
COMMIT;
DBMS_OUTPUT.PUT_LINE('Main Assignment :'||
J.Assignment_id ||' '||'Successful');
EXCEPTION
WHEN OTHERS
THEN
LC_FLAG:='N';
DBMS_OUTPUT.PUT_LINE('Main Assignment :'||J.Assignment_id ||'
'||'Error: '||SQLERRM);
END;
END LOOP;

IF LC_FLAG='Y'
THEN
FOR K IN C3(I.ASSIGNMENT_ID)
LOOP
BEGIN
PAY_ELEMENT_ENTRY_API.DELETE_ELEMENT_ENTRY (
P_DATETRACK_DELETE_MODE => 'ZAP',
P_EFFECTIVE_DATE => K.EFFECTIVE_START_DATE,
P_ELEMENT_ENTRY_ID => K.ELEMENT_ENTRY_ID,
P_OBJECT_VERSION_NUMBER =>K.OBJECT_VERSION_NUMBER,
P_EFFECTIVE_START_DATE => L_EFFECTIVE_START_DATE,
P_EFFECTIVE_END_DATE => L_EFFECTIVE_END_DATE,
P_DELETE_WARNING => L_DELETE_WARNING
);
COMMIT;
DBMS_OUTPUT.put_line ('Element Entry has been Deleted: '
|| K.ELEMENT_ENTRY_ID);
EXCEPTION
WHEN OTHERS
THEN
LC_FLAG:='N';
DBMS_OUTPUT.put_line ('Element Deletion Exception: ' ||
SQLERRM || ' - ' || K.ELEMENT_ENTRY_ID);
END;
END LOOP;
END IF;

IF LC_FLAG='Y'
THEN

BEGIN
SELECT MIN(PEEF.EFFECTIVE_START_DATE)
INTO LD_EFFECTIVE_START_DATE
FROM
PAY_ELEMENT_TYPES_F PATF,
PAY_ELEMENT_ENTRIES_F PEEF
WHERE PATF.ELEMENT_NAME LIKE 'Rarity Allowance'
and trunc(sysdate) between PATF.effective_Start_date and
PATF.effective_End_date
AND PATF.ELEMENT_TYPE_ID = PEEF.ELEMENT_TYPE_ID
AND PEEF.effective_Start_date >=TO_DATE('18-01-2018','DD-MM-RRRR')
AND ASSIGNMENT_ID=I.ASSIGNMENT_ID;
DBMS_OUTPUT.put_line ('Element Entry First Min
LD_EFFECTIVE_START_DATE: ' || LD_EFFECTIVE_START_DATE);
END;

BEGIN
SELECT PEEF.ELEMENT_ENTRY_ID
INTO LN_ELEMENT_ENTRY_ID
FROM
PAY_ELEMENT_TYPES_F PATF,
PAY_ELEMENT_ENTRIES_F PEEF
WHERE PATF.ELEMENT_NAME LIKE 'Rarity Allowance'
and trunc(sysdate) between PATF.effective_Start_date and
PATF.effective_End_date
AND PATF.ELEMENT_TYPE_ID = PEEF.ELEMENT_TYPE_ID
AND PEEF.effective_Start_date =LD_EFFECTIVE_START_DATE
AND ASSIGNMENT_ID=I.ASSIGNMENT_ID;
DBMS_OUTPUT.put_line ('Element Entry LN_ELEMENT_ENTRY_ID: ' ||
LN_ELEMENT_ENTRY_ID);
END;

BEGIN
SELECT OBJECT_VERSION_NUMBER,EFFECTIVE_START_DATE
INTO LN_OBJECT_VERSION_NUMBER,
LD_EFFECTIVE_START_DATE
FROM
PAY_ELEMENT_ENTRIES_F PEEF
WHERE
ELEMENT_ENTRY_ID=LN_ELEMENT_ENTRY_ID
AND ASSIGNMENT_ID=I.ASSIGNMENT_ID
and EFFECTIVE_START_DATE=LD_EFFECTIVE_START_DATE;

DBMS_OUTPUT.put_line ('Element Entry LN_ELEMENT_ENTRY_ID: ' ||


LN_ELEMENT_ENTRY_ID);
END;

BEGIN
pay_element_entry_api.delete_element_entry (
p_datetrack_delete_mode => 'FUTURE_CHANGE',
p_effective_date => LD_EFFECTIVE_START_DATE,
p_element_entry_id => LN_ELEMENT_ENTRY_ID,
p_object_version_number =>LN_OBJECT_VERSION_NUMBER,
p_effective_start_date => l_effective_start_date,
p_effective_end_date => l_effective_end_date,
p_delete_warning => l_delete_warning
);
COMMIT;
DBMS_OUTPUT.put_line ('Main Element Entry has been Updated: ' ||
LN_ELEMENT_ENTRY_ID);
EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Main Element Entry Error: ' || SQLERRM || '
- ' || LN_ELEMENT_ENTRY_ID);
END;
END IF;
END LOOP;

EXCEPTION
WHEN OTHERS
THEN
DBMS_OUTPUT.put_line ('Main Exception: ' || SQLERRM);
END;

Das könnte Ihnen auch gefallen