You are on page 1of 9

--------- Create External Enrolment

PROCEDURE XXCREATE_EXTERNAL_ENROLLMENT (
p_person_id IN NUMBER,
p_trng_title IN VARCHAR2,
p_activity_version_id IN NUMBER DEFAULT NULL ,
p_provider IN VARCHAR2,
p_type IN VARCHAR2 DEFAULT NULL ,
p_centre IN VARCHAR2 DEFAULT NULL ,
p_completion_date IN DATE,
p_duration IN NUMBER DEFAULT NULL ,
p_duration_units IN VARCHAR2 DEFAULT NULL ,
p_status IN VARCHAR2 DEFAULT NULL ,
p_organization_id IN NUMBER DEFAULT NULL ,
p_business_group_id IN NUMBER,
p_nota_history_id OUT NOCOPY NUMBER,
p_object_version_number OUT NOCOPY NUMBER,
p_some_warning OUT NOCOPY BOOLEAN,
p_error_message OUT VARCHAR2
)
IS
l_validate BOOLEAN := FALSE;
BEGIN
ota_nhs_api.create_non_ota_histories (
p_validate => l_validate,
p_effective_date => TRUNC (SYSDATE),
p_person_id => p_person_id,
p_trng_title => p_trng_title,
p_activity_version_id => p_activity_version_id,
p_provider => p_provider,
p_type => 'ILT',
p_centre => NULL,
p_completion_date => p_completion_date,
p_duration => p_duration,
p_duration_units => 'D',
p_status => 'ATT' --– Attended
,
p_organization_id => p_organization_id,
p_business_group_id => 81,
p_nota_history_id => p_nota_history_id,
p_object_version_number => p_object_version_number,
p_some_warning => p_some_warning
);

IF p_some_warning
THEN
p_error_message := 'Error External API: ' || SUBSTR (SQLERRM, 1, 250);
ELSE
p_error_message := 'Success';
END IF;

COMMIT;
EXCEPTION
WHEN OTHERS
THEN
p_error_message := 'Error Main Package: ' || SUBSTR (SQLERRM, 1, 250);
END;

---------------- Work flow Packages:


PROCEDURE XXOTA_APPROVAL_LST (ITEMTYPE IN VARCHAR2,
ITEMKEY IN VARCHAR2,
ACTID IN NUMBER,
FUNCMODE IN VARCHAR2,
RESULTOUT OUT VARCHAR2)
IS
l_role_name VARCHAR2 (100) := 'XXOLAAPR' || ITEMKEY;
l_role_display_name VARCHAR2 (100) := 'XXOLAAPR' || ITEMKEY;
l_users VARCHAR2 (800);
l_time VARCHAR2 (800);
l_description VARCHAR2 (800);
l_firstapproval VARCHAR2 (800);
l_trainingreq_no VARCHAR2 (200) := NULL;
l_supervisor_id VARCHAR2 (200) := NULL;
l_employee_number varchar2 (100) := NULL;
l_max_count NUMBER := 0;
l_current_value NUMBER := 0;
lcount NUMBER := 0;
lc_note VARCHAR2 (800) := NULL;
lc_ticket_status VARCHAR2 (800);
ln_fyi_cnt NUMBER;
lc_emp_Full_name varchar2 (250);
lc_org_name VARCHAR2 (800);
BEGIN
/*

select TO_CHAR(SYSDATE,'DDMMYYYYHHMMSS')
into l_time
from DUAL ;
l_role_name := l_role_name || l_time ;
l_role_display_name := l_role_display_name || l_time ;
*/

IF funcmode = 'RUN'
THEN
l_trainingreq_no :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'TRAINING_REQ_NUMBER');
l_max_count :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'XXAPPROVALCOUNT');
l_current_value :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'XXCURAPPR_VAL');
l_supervisor_id :=
wf_engine.getitemattrnumber (itemtype => itemtype,
itemkey => itemkey,
aname => 'SUPERVISOR_ID');
l_employee_number :=
wf_engine.GetItemAttrText (itemtype => itemtype,
itemkey => itemkey,
aname => 'EMPLOYEE_NUMBER');
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 1:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);

-----------------------------------------------------------------------------
IF l_current_value + 1 > l_max_count
THEN

-----------------------------------------------------------------------------
WF_DIRECTORY.CreateAdHocRole (
role_name => l_role_name,
role_display_name => l_role_display_name,
language => 'AMERICAN',
territory => 'AMERICA',
email_address => NULL,
notification_preference => 'MAILHTML'
);
--COMMIT; -- Commented on 08FEB2016
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 2:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);

FOR l_rec
IN (SELECT fu.user_name
FROM fnd_user fu,
per_all_people_f papf,
per_all_assignments_f paaf,
per_business_groups pbg
WHERE TRUNC (SYSDATE) BETWEEN NVL (fu.start_date,
TRUNC (SYSDATE))
AND NVL (fu.end_date,
TRUNC (SYSDATE))
AND fu.employee_id = papf.person_id
AND papf.current_employee_flag = 'Y'
AND TRUNC (SYSDATE) BETWEEN papf.effective_start_date
AND papf.effective_end_date
AND papf.person_id = paaf.person_id
AND papf.business_group_id = paaf.business_group_id
AND pbg.business_group_id = papf.business_group_id
AND pbg.business_group_id = 81
AND TRUNC (SYSDATE) BETWEEN paaf.effective_start_date
AND paaf.effective_end_date
AND papf.employee_number IN
(SELECT flv.meaning
FROM fnd_lookup_values flv,
fnd_lookup_types_tl fltt
WHERE flv.description IN
('Payroll Administrator',
'Procurement Section Head',
'Relations and Awareness Section
Head')
AND TRUNC (SYSDATE) BETWEEN NVL (

flv.start_date_active,

TRUNC(SYSDATE)
)
AND NVL (

flv.end_date_active,

TRUNC(SYSDATE)
)
AND flv.lookup_type =
fltt.lookup_type
AND fltt.lookup_type =
'XXSSDC_HRSSA_APPROVERS'
AND fltt.LANGUAGE = flv.LANGUAGE
AND fltt.LANGUAGE =
USERENV ('LANG')))
LOOP
lcount := lcount + 1;
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 3:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);

IF lcount = 1
THEN
l_users := l_rec.user_name;
ELSE
l_users := l_users || ' ' || l_rec.user_name;
END IF;
------- Added Employee also for FYI
END LOOP;

l_users := l_users || ' ' || 'U' || l_employee_number;


xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 4:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
|| ' -'
|| l_users
);
WF_DIRECTORY.AddUsersToAdHocRole (role_name => l_role_name,
role_users => l_users);
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'XXENROLLAPPROVED',
l_role_name);
-- Commented on 08FEB2016 COMMIT;
resultout := 'COMPLETE:Y';

-----------------------------------------------------------------------------
ELSE

-----------------------------------------------------------------------------
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 5:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);
BEGIN
SELECT fvl.meaning, fvl.description
INTO l_firstapproval, l_description
FROM FND_LOOKUP_VALUES_VL fvl
WHERE fvl.LOOKUP_TYPE = 'XXOLA_APPROVAL'
AND fvl.ENABLED_FLAG = 'Y'
AND TO_NUMBER (fvl.tag) = l_current_value + 1
ORDER BY TO_NUMBER (fvl.tag);

xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 6:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);

IF l_firstapproval = 'Supervisor'
THEN
/*

select user_name
into l_firstapproval
from fnd_user
where employee_id IN ( select supervisor_id from
XXOLA_ENROLLMENT_HDR where TRAINING_REQ_NUMBER = l_trainingreq_no );
*/
SELECT 'U' || per.employee_number
INTO l_firstapproval
FROM per_all_people_f per
WHERE per.person_id IN
(SELECT xper.supervisor_id
FROM XXOLA_ENROLLMENT_HDR xper
WHERE xper.TRAINING_REQ_NUMBER =
l_trainingreq_no)
AND TRUNC (SYSDATE) BETWEEN
TRUNC(per.EFFECTIVE_START_DATE)
AND TRUNC(NVL (

per.EFFECTIVE_END_DATE,
SYSDATE
));
ELSIF l_firstapproval = 'Employee'
THEN
SELECT 'U' || per.employee_number
INTO l_firstapproval
FROM per_all_people_f per
WHERE per.employee_number IN
(SELECT xper.EMPLOYEE_NUMBER
FROM XXOLA_ENROLLMENT_HDR xper
WHERE xper.TRAINING_REQ_NUMBER =
l_trainingreq_no)
AND TRUNC (SYSDATE) BETWEEN
TRUNC(per.EFFECTIVE_START_DATE)
AND TRUNC(NVL (

per.EFFECTIVE_END_DATE,
SYSDATE
));
END IF;

------------ Message Comments:


lc_note := NULL;
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 7:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);

FOR l_rec
IN ( SELECT wtt.text_value
FROM wf_notification_attributes wtt,
wf_notifications wf
WHERE wtt.NOTIFICATION_ID = wf.notification_id
AND wf.MESSAGE_TYPE = 'XXOLA'
AND wf.message_name = 'XXENROLMSG'
AND wf.item_key = itemkey
AND wtt.name = 'XXCOMMENTS'
ORDER BY wf.notification_id DESC)
LOOP
lc_note := lc_note || l_rec.text_value;
EXIT;
END LOOP;
IF l_current_value = 1
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL1',
lc_note);
ELSIF l_current_value = 2
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL2',
lc_note);
ELSIF l_current_value = 3
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL3',
lc_note);
ELSIF l_current_value = 4
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL4',
lc_note);
ELSIF l_current_value = 5
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL5',
lc_note);
ELSIF l_current_value = 6
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL6',
lc_note);
ELSIF l_current_value = 7
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL7',
lc_note);
ELSIF l_current_value = 8
THEN
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'CEO_JUST_DTL8',
lc_note);
END IF;

xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 8:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);
------------ Message Comments:
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'XXCURAPPR_VAL',
l_current_value + 1);
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'XXENROLL',
l_firstapproval);
resultout := 'COMPLETE:N';
xxpo_ppc_utils.create_log (
'XXOLA:ITEMKEY 9:' || itemkey,
'Supplier ID: '
|| l_supervisor_id
|| ' Current Val: '
|| l_current_value
|| ' MAX COUNT: '
|| l_max_count
|| ' TRE REQ. NO: '
|| l_trainingreq_no
);
EXCEPTION
WHEN OTHERS
THEN
RAISE;
END;

BEGIN
SELECT papf.first_name || ' ' || papf.last_name, hot.name
INTO lc_emp_Full_name, lc_org_name
FROM per_All_people_F papf,
fnd_user fu,
per_All_assignments_F paaf,
HR_ALL_ORGANIZATION_UNITS_TL hot
WHERE fu.employee_id = papf.person_id
AND SYSDATE BETWEEN papf.effective_start_Date
AND papf.effective_end_Date
AND SYSDATE BETWEEN paaf.effective_Start_Date
AND paaf.effective_end_date
AND paaf.person_id = papf.person_id
AND hot.ORGANIZATION_ID = paaf.ORGANIZATION_ID
AND hot.language = 'US'
AND fu.user_name = l_firstapproval;
EXCEPTION
WHEN OTHERS
THEN
lc_emp_Full_name := NULL;
lc_org_name := NULL;
END;

UPDATE XXOLA_ENROLLMENT_HDR
SET approval_Status =
'Pending with'
|| ' '
|| lc_emp_Full_name
|| ' for '
|| lc_org_name
|| ' Department.',
TICKET_STATUS = 'Pending Approval'
WHERE TRAINING_REQ_NUMBER = l_trainingreq_no;

-----------------------------------------------------------------------------
END IF;

-----------------------------------------------------------------------------
WF_ENGINE.SetItemAttrText (itemtype,
itemkey,
'XXCOMMENTS',
NULL);

--- 14NOV2015

------------ Update the Status/Comments as Approved:


IF resultout = 'COMPLETE:Y'
THEN
SELECT ticket_status
INTO lc_ticket_status
FROM XXOLA_ENROLLMENT_HDR
WHERE TRAINING_REQ_NUMBER = l_trainingreq_no;

IF lc_ticket_status =
'Pending Approval for after training approval request'
THEN
UPDATE XXOLA_ENROLLMENT_HDR
SET TICKET_STATUS = 'Closed',
APPROVAL_STATUS = 'Approved'
WHERE TRAINING_REQ_NUMBER = l_trainingreq_no;
ELSE
UPDATE XXOLA_ENROLLMENT_HDR
SET TICKET_STATUS = 'Approved',
APPROVAL_STATUS = 'Approved'
WHERE TRAINING_REQ_NUMBER = l_trainingreq_no;
END IF;
END IF;

You might also like