Search This Blog

Sunday, May 20, 2018

Userhook on SIT Update oracle Apps R12






Requirement: To add Element, once the SIT is updated.


CREATE OR REPLACE PACKAGE APPS.XXFUJ_UPDATE_SIT_A_UHPKG IS

--USER HOOK PACKAGE FOR HR_SIT_BK1.CREATE_SIT_A

PROCEDURE XXFUJ_UPDATE_SIT_LEV_VAL

--THIS WILL VALIDATE THE SIT WITH REFERENCE TO THE LEAVE EXISTS.

/*

Example: If a emp is on Annual leave from 01-jan-2017 to 30-jan-2017

now we are entering in SIT (Training) 10-jan-2017 to 15-jan-2017

As training days falls between the annual leave days, then the user entering the SIT will be notified by warning message.

*/
(P_PERSON_ANALYSIS_ID in NUMBER
,P_PEA_OBJECT_VERSION_NUMBER in NUMBER
,P_COMMENTS in VARCHAR2
,P_DATE_FROM in DATE
,P_DATE_TO in DATE
,P_REQUEST_ID in NUMBER
,P_PROGRAM_APPLICATION_ID in NUMBER
,P_PROGRAM_ID in NUMBER
,P_PROGRAM_UPDATE_DATE in DATE
,P_ATTRIBUTE_CATEGORY in VARCHAR2
,P_ATTRIBUTE1 in VARCHAR2
,P_ATTRIBUTE2 in VARCHAR2
,P_ATTRIBUTE3 in VARCHAR2
,P_ATTRIBUTE4 in VARCHAR2
,P_ATTRIBUTE5 in VARCHAR2
,P_ATTRIBUTE6 in VARCHAR2
,P_ATTRIBUTE7 in VARCHAR2
,P_ATTRIBUTE8 in VARCHAR2
,P_ATTRIBUTE9 in VARCHAR2
,P_ATTRIBUTE10 in VARCHAR2
,P_ATTRIBUTE11 in VARCHAR2
,P_ATTRIBUTE12 in VARCHAR2
,P_ATTRIBUTE13 in VARCHAR2
,P_ATTRIBUTE14 in VARCHAR2
,P_ATTRIBUTE15 in VARCHAR2
,P_ATTRIBUTE16 in VARCHAR2
,P_ATTRIBUTE17 in VARCHAR2
,P_ATTRIBUTE18 in VARCHAR2
,P_ATTRIBUTE19 in VARCHAR2
,P_ATTRIBUTE20 in VARCHAR2
,P_SEGMENT1 in VARCHAR2
,P_SEGMENT2 in VARCHAR2
,P_SEGMENT3 in VARCHAR2
,P_SEGMENT4 in VARCHAR2
,P_SEGMENT5 in VARCHAR2
,P_SEGMENT6 in VARCHAR2
,P_SEGMENT7 in VARCHAR2
,P_SEGMENT8 in VARCHAR2
,P_SEGMENT9 in VARCHAR2
,P_SEGMENT10 in VARCHAR2
,P_SEGMENT11 in VARCHAR2
,P_SEGMENT12 in VARCHAR2
,P_SEGMENT13 in VARCHAR2
,P_SEGMENT14 in VARCHAR2
,P_SEGMENT15 in VARCHAR2
,P_SEGMENT16 in VARCHAR2
,P_SEGMENT17 in VARCHAR2
,P_SEGMENT18 in VARCHAR2
,P_SEGMENT19 in VARCHAR2
,P_SEGMENT20 in VARCHAR2
,P_SEGMENT21 in VARCHAR2
,P_SEGMENT22 in VARCHAR2
,P_SEGMENT23 in VARCHAR2
,P_SEGMENT24 in VARCHAR2
,P_SEGMENT25 in VARCHAR2
,P_SEGMENT26 in VARCHAR2
,P_SEGMENT27 in VARCHAR2
,P_SEGMENT28 in VARCHAR2
,P_SEGMENT29 in VARCHAR2
,P_SEGMENT30 in VARCHAR2
,P_CONCAT_SEGMENTS in VARCHAR2
,P_ANALYSIS_CRITERIA_ID in NUMBER);

END;

/

CREATE OR REPLACE PACKAGE BODY XXFUJ_UPDATE_SIT_A_UHPKG IS

--USER HOOK PACKAGE FOR HR_SIT_BK1.CREATE_SIT_A

PROCEDURE XXFUJ_UPDATE_SIT_LEV_VAL

--THIS WILL VALIDATE THE SIT WITH REFERENCE TO THE LEAVE EXISTS.

/*

Example: If a emp is on Annual leave from 01-jan-2017 to 30-jan-2017

now we are entering in SIT (Training) 10-jan-2017 to 15-jan-2017

As training days falls between the annual leave days, then the user entering the SIT will be notified by warning message.

*/

(P_PERSON_ANALYSIS_ID in NUMBER
,P_PEA_OBJECT_VERSION_NUMBER in NUMBER
,P_COMMENTS in VARCHAR2
,P_DATE_FROM in DATE
,P_DATE_TO in DATE
,P_REQUEST_ID in NUMBER
,P_PROGRAM_APPLICATION_ID in NUMBER
,P_PROGRAM_ID in NUMBER
,P_PROGRAM_UPDATE_DATE in DATE
,P_ATTRIBUTE_CATEGORY in VARCHAR2
,P_ATTRIBUTE1 in VARCHAR2
,P_ATTRIBUTE2 in VARCHAR2
,P_ATTRIBUTE3 in VARCHAR2
,P_ATTRIBUTE4 in VARCHAR2
,P_ATTRIBUTE5 in VARCHAR2
,P_ATTRIBUTE6 in VARCHAR2
,P_ATTRIBUTE7 in VARCHAR2
,P_ATTRIBUTE8 in VARCHAR2
,P_ATTRIBUTE9 in VARCHAR2
,P_ATTRIBUTE10 in VARCHAR2
,P_ATTRIBUTE11 in VARCHAR2
,P_ATTRIBUTE12 in VARCHAR2
,P_ATTRIBUTE13 in VARCHAR2
,P_ATTRIBUTE14 in VARCHAR2
,P_ATTRIBUTE15 in VARCHAR2
,P_ATTRIBUTE16 in VARCHAR2
,P_ATTRIBUTE17 in VARCHAR2
,P_ATTRIBUTE18 in VARCHAR2
,P_ATTRIBUTE19 in VARCHAR2
,P_ATTRIBUTE20 in VARCHAR2
,P_SEGMENT1 in VARCHAR2
,P_SEGMENT2 in VARCHAR2
,P_SEGMENT3 in VARCHAR2
,P_SEGMENT4 in VARCHAR2
,P_SEGMENT5 in VARCHAR2
,P_SEGMENT6 in VARCHAR2
,P_SEGMENT7 in VARCHAR2
,P_SEGMENT8 in VARCHAR2
,P_SEGMENT9 in VARCHAR2
,P_SEGMENT10 in VARCHAR2
,P_SEGMENT11 in VARCHAR2
,P_SEGMENT12 in VARCHAR2
,P_SEGMENT13 in VARCHAR2
,P_SEGMENT14 in VARCHAR2
,P_SEGMENT15 in VARCHAR2
,P_SEGMENT16 in VARCHAR2
,P_SEGMENT17 in VARCHAR2
,P_SEGMENT18 in VARCHAR2
,P_SEGMENT19 in VARCHAR2
,P_SEGMENT20 in VARCHAR2
,P_SEGMENT21 in VARCHAR2
,P_SEGMENT22 in VARCHAR2
,P_SEGMENT23 in VARCHAR2
,P_SEGMENT24 in VARCHAR2
,P_SEGMENT25 in VARCHAR2
,P_SEGMENT26 in VARCHAR2
,P_SEGMENT27 in VARCHAR2
,P_SEGMENT28 in VARCHAR2
,P_SEGMENT29 in VARCHAR2
,P_SEGMENT30 in VARCHAR2
,P_CONCAT_SEGMENTS in VARCHAR2
,P_ANALYSIS_CRITERIA_ID in NUMBER)

IS

L_ANL VARCHAR2(1);
L_ERROR VARCHAR2(200);
L_ID_FLEX_NUM VARCHAR2(200);
L_SEGMENT1 VARCHAR2(200);
L_SEGMENT2 VARCHAR2(200);
L_SEGMENT3 VARCHAR2(200);
LCAL_ST_DT DATE;
LCAL_END_DT DATE;
L_ST_DT DATE;
L_END_DT DATE;
L_JOIN_DT DATE;
L_DAYS NUMBER;
L_PERSON_ID NUMBER;

L_EFF_DATE DATE;
L_ASSIGNMENT_ID NUMBER;
LN_ELEMENT_LINK_ID NUMBER;
LD_EFFECTIVE_START_DATE DATE;
LD_EFFECTIVE_END_DATE DATE;
LN_ELEMENT_ENTRY_ID NUMBER;
LN_OBJECT_VERSION_NUMBER NUMBER;
LB_CREATE_WARNING BOOLEAN;

BEGIN

BEGIN

SELECT PAC.ID_FLEX_NUM, SEGMENT1, SEGMENT2, SEGMENT3, PERSON_ID
INTO L_ID_FLEX_NUM, L_SEGMENT1, L_SEGMENT2, L_SEGMENT3, L_PERSON_ID
FROM PER_ANALYSIS_CRITERIA PAC,
per_person_analyses ppa
WHERE PAC.ANALYSIS_CRITERIA_ID = P_ANALYSIS_CRITERIA_ID
--where pac.id_flex_num = 50318
--and pac.ANALYSIS_CRITERIA_ID = 5167442
and pac.ANALYSIS_CRITERIA_ID = ppa.ANALYSIS_CRITERIA_ID
;

IF L_ID_FLEX_NUM = 50318 THEN

select start_date, end_date
into lcal_st_dt, lcal_end_dt
from per_calendar_entries;

L_ST_DT := fnd_conc_date.string_to_date(L_SEGMENT1);
L_END_DT := fnd_conc_date.string_to_date(L_SEGMENT2);
L_JOIN_DT := fnd_conc_date.string_to_date(L_SEGMENT3);

        if l_st_dt between lcal_st_dt and lcal_end_dt then
        l_days := least(lcal_end_dt,l_end_dt) - l_st_dt + 1 ;
        elsif
        l_end_dt between lcal_st_dt and lcal_end_dt then
        l_days := lcal_end_dt - l_end_dt + 1 ;
        elsif lcal_end_dt between l_st_dt and l_end_dt then
        l_days := lcal_end_dt - lcal_st_dt + 1;
        end if;
       
        L_EFF_DATE := TRUNC(L_JOIN_DT,'MM');
        L_ASSIGNMENT_ID  := XXPY_UPDATE_EMP_ASSIGNMENT.GET_EMP_ASSIGNMENT_ID(L_PERSON_ID,fnd_conc_date.string_to_date(sysdate));
       
        IF L_DAYS >'0'
        AND XX_FUJ_ENTRIES_ALLOWANCES.F_ELEMENT_EXISTS_YN(L_ASSIGNMENT_ID,'Fuj_Annual_Leave_Public_holiday','Days',L_EFF_DATE) = 'N'
        THEN
        --INSERT INTO TESTA        VALUES (L_DAYS,'TEST'||TO_CHAR(SYSDATE,'HH:MI'));
       
          BEGIN
      
       
                  LN_ELEMENT_LINK_ID :=
                     HR_ENTRY_API.get_link (
                        P_ASSIGNMENT_ID     => L_ASSIGNMENT_ID,
                        P_ELEMENT_TYPE_ID   => 2012,
                        P_SESSION_DATE      => SYSDATE);

                
                  PAY_ELEMENT_ENTRY_API.CREATE_ELEMENT_ENTRY(               -- Input data elements
                     -- -----------------------------
                     P_EFFECTIVE_DATE          => L_EFF_DATE,--to_date('01-MAY-2018'),
                     P_BUSINESS_GROUP_ID       => FND_PROFILE.VALUE ('PER_BUSINESS_GROUP_ID'),
                     P_ASSIGNMENT_ID           => L_ASSIGNMENT_ID,
                     P_ELEMENT_LINK_ID         => LN_ELEMENT_LINK_ID,
                     P_ENTRY_TYPE              => 'E',
                     P_INPUT_VALUE_ID1         => XXPY_CONSALIDATIONS.GET_INPUT_VALUE_ID(
                                                    'Fuj_Annual_Leave_Public_holiday',
                                                    'Days'),
                     P_ENTRY_VALUE1            => L_DAYS,
                     P_INPUT_VALUE_ID2         => XXPY_CONSALIDATIONS.GET_INPUT_VALUE_ID(
                                                    'Fuj_Annual_Leave_Public_holiday',
                                                    'Date'),
                     P_ENTRY_VALUE2            => L_EFF_DATE,
                     -- Output data elements
                     -- --------------------------------
                     P_EFFECTIVE_START_DATE    => LD_EFFECTIVE_START_DATE,
                     P_EFFECTIVE_END_DATE      => LD_EFFECTIVE_END_DATE,
                     P_ELEMENT_ENTRY_ID        => LN_ELEMENT_ENTRY_ID,
                     P_OBJECT_VERSION_NUMBER   => LN_OBJECT_VERSION_NUMBER,
                     P_CREATE_WARNING          => LB_CREATE_WARNING);
       END;
       
        --ELSE INSERT INTO TESTA   VALUES (L_DAYS,'EXISTS ALREADY'||TO_CHAR(SYSDATE,'HH:MI'));
       END IF;

END IF;

EXCEPTION WHEN OTHERS THEN
L_ERROR := SQLERRM;
INSERT INTO TESTA
SELECT 101,L_ERROR  FROM DUAL;
--DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;

EXCEPTION WHEN OTHERS THEN NULL;

DBMS_OUTPUT.PUT_LINE(SQLERRM);

END;

END;


SELECT ahk.api_hook_id,
ahk.api_module_id,
ahk.hook_package,
ahk.hook_procedure
FROM hr_api_hooks ahk, hr_api_modules ahm
WHERE ahm.module_name like '%UPDATE_SIT%'
AND ahm.api_module_type = 'BP'
AND ahk.api_hook_type = 'AP'
AND ahk.api_module_id = ahm.api_module_id

API_HOOK_ID = 2884-- 2879
API_MODULE_ID = 1281--1279

HR_SIT_BK2.UPDATE_SIT_A

2.

DECLARE
L_API_HOOK_ID NUMBER:= 2884;
L_API_HOOK_CALL_ID NUMBER;
L_OBJECT_VERSION_NUMBER NUMBER;
L_SEQUENCE NUMBER;
BEGIN
SELECT HR_API_HOOKS_S.NEXTVAL
INTO L_SEQUENCE
FROM DUAL;
R_API_HOOK_CALL_API.CREATE_API_HOOK_CALL
(P_VALIDATE => FALSE,
P_EFFECTIVE_DATE => TO_DATE('01-JAN-1952','DD-MON-YYYY'),
P_API_HOOK_ID =>L_API_HOOK_ID ,
P_API_HOOK_CALL_TYPE => 'PP',
P_SEQUENCE => L_SEQUENCE,
P_ENABLED_FLAG => 'Y',
P_CALL_PACKAGE => 'XXFUJ_UPDATE_SIT_A_UHPKG',
P_CALL_PROCEDURE => 'XXFUJ_UPDATE_SIT_LEV_VAL',
P_API_HOOK_CALL_ID => L_API_HOOK_CALL_ID,
P_OBJECT_VERSION_NUMBER => L_OBJECT_VERSION_NUMBER);
DBMS_OUTPUT.PUT_LINE('L_API_HOOK_CALL_ID '|| L_API_HOOK_CALL_ID);
END ;

COMMIT

SELECT API_HOOK_CALL_ID,API_HOOK_ID,
OBJECT_VERSION_NUMBER,
CALL_PACKAGE,
CALL_PROCEDURE,
ENABLED_FLAG,
STATUS, CREATION_DATE
--SELECT *
FROM HR_API_HOOK_CALLS
--WHERE api_hook_id = 2878
--WHERE API_HOOK_CALL_ID = 1263
WHERE CALL_PACKAGE LIKE '%FUJ%'

commit

3.

declare
l_api_module_id number := 1281; --Value 1731 is derived from Step 1 above using following query
begin
hr_api_user_hooks_utility.create_hooks_one_module (l_api_module_id);
dbms_output.put_line('Success');
exception when others then
dbms_output.put_line('Exception : '||SQLERRM);
end;

COMMIT


No comments:

Post a Comment