DBA Data[Home] [Help]

PACKAGE BODY: APPS.HXC_APPROVAL_HELPER

Source


1 PACKAGE body hxc_approval_helper AS
2 /* $Header: hxcaprhlp.pkb 120.1 2006/03/06 19:16:07 arundell noship $ */
3 
4   type user_info is record
5       (person_id number,
6        last_name varchar2(150),
7        full_name varchar2(240)
8        );
9 
10   p_user_info user_info;
11 
12   c_role_prefix constant varchar2(4) := 'OTL-';
13 
14   Function formAdHocRoleName
15      (p_user_info in user_info)
16      Return varchar2 is
17   Begin
18 
19      return c_role_prefix||p_user_info.person_id||'-'||upper(p_user_info.last_name);
20 
21   End formAdHocRoleName;
22 
23   Function getPersonInfo
24      (p_person_id in per_all_people_f.person_id%type)
25      Return user_info is
26 
27      cursor c_person_info(p_person_id in per_all_people_f.person_id%type) is
28        select p1.last_name,
29               p1.full_name
30          from per_all_people_f p1
31         where p1.person_id = p_person_id
32           and p1.effective_end_date =
33               (select max(p2.effective_end_date)
34                  from per_all_people_f p2
35                 where p2.person_id = p1.person_id);
36 
37      l_user_info user_info;
38 
39   Begin
40      l_user_info.person_id := p_person_id;
41      open c_person_info(p_person_id);
42      fetch c_person_info into l_user_info.last_name, l_user_info.full_name;
43      if(c_person_info%notfound) then
44         close c_person_info;
45         fnd_message.set_name('PER','PER_289467_REQ_INV_PERSON_ID');
46         fnd_message.raise_error;
47      else
48         close c_person_info;
49      end if;
50 
51      return l_user_info;
52   End getPersonInfo;
53 
54 /* Public Functions and Procedures */
55 
56   Function createAdHocUser
57      (p_resource_id in hxc_time_building_blocks.resource_id%type,
58       p_effective_date in hxc_time_building_blocks.start_time%type)
59      Return varchar2 is
60 
61      cursor c_dup_check
62         (p_name in wf_users.name%type) is
63        select 'Y'
64          from wf_users
65         where name = p_name;
66 
67      l_dummy varchar2(1);
68 
69      l_name wf_local_roles.name%type;
70      l_user_info user_info;
71 
72   Begin
73 
74      l_user_info := getPersonInfo(p_resource_id);
75      l_name := formAdHocRoleName(l_user_info);
76 
77      open c_dup_check(l_name);
78      fetch c_dup_check into l_dummy;
79      if(c_dup_check%notfound) then
80         wf_directory.createAdHocUser
81            (name => l_name,
82             display_name => l_user_info.full_name,
83             description => 'OTL Approval: AdHocRole Generated'
84             );
85      end if;
86      close c_dup_check;
87 
88      return l_name;
89 
90   End createAdHocUser;
91 
92 END hxc_approval_helper;