DBA Data[Home] [Help]

PACKAGE BODY: APPS.HZ_EVENT_PKG

Source


1 PACKAGE BODY hz_event_pkg AS
2 /*$Header: ARHEVESB.pls 120.7 2005/05/25 15:37:31 rborah noship $ */
3  --------------------------------------
4  -- package global variable declaration
5  --------------------------------------
6  G_DEBUG_COUNT       NUMBER  := 0;
7  --G_DEBUG             BOOLEAN := FALSE;
8 
9  ------------------------------------
10  -- declaration of private procedures
11  ------------------------------------
12  /*PROCEDURE enable_debug;
13 
14  PROCEDURE disable_debug;
15  */
16 
17  ------------------------------------------
18  -- PRIVATE PROCEDURE enable_debug
19  -- DESCRIPTION
20  --     Turn on debug mode.
21  -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
22  --     HZ_UTILITY_V2PUB.enable_debug
23  -- MODIFICATION HISTORY
24  --   07-31-2001    H. YU      o Created.
25  ------------------------------------------
26  /*PROCEDURE enable_debug IS
27  BEGIN
28     G_DEBUG_COUNT := G_DEBUG_COUNT + 1;
29     IF G_DEBUG_COUNT = 1 THEN
30         IF FND_PROFILE.value( 'HZ_API_FILE_DEBUG_ON' ) = 'Y' OR
31            FND_PROFILE.value( 'HZ_API_DBMS_DEBUG_ON' ) = 'Y'
32         THEN
33            HZ_UTILITY_V2PUB.enable_debug;
34            G_DEBUG := TRUE;
35         END IF;
36     END IF;
37  END enable_debug;
38  */
39 
40 
41  --------------------------------------------
42  -- PRIVATE PROCEDURE disable_debug
43  -- DESCRIPTION
44  --     Turn off debug mode.
45  -- EXTERNAL PROCEDURES/FUNCTIONS ACCESSED
46  --     HZ_UTILITY_V2PUB.disable_debug
47  -- MODIFICATION HISTORY
48  --   07-31-2001    H. YU      o Created.
49  --------------------------------------------
50  /*PROCEDURE disable_debug IS
51  BEGIN
52     IF G_DEBUG THEN
53         G_DEBUG_COUNT := G_DEBUG_COUNT - 1;
54         IF G_DEBUG_COUNT = 0 THEN
55             HZ_UTILITY_V2PUB.disable_debug;
56             G_DEBUG := FALSE;
57         END IF;
58     END IF;
59  END disable_debug;
60  */
61 
62 
63  FUNCTION exist_subscription(p_event_name IN VARCHAR2) RETURN VARCHAR2
64  -----------------------------------------------------------------------
65  -- Return 'Y' if the subscription hz_event_elt.hz_param_delete exist
66  -- Otherwise it returns 'N'
67  -----------------------------------------------------------------------
68  IS
69 -- Bug 3784725 : Modify the cursor so that it can use index
70 --		 WF_EVENT_SUBSCRIPTIONS_N1 defined on
71 --		 table wf_event_subscriptions for better performance.
72   CURSOR cu0 IS
73    SELECT 'Y'
74      FROM wf_events              eve,
75           wf_event_subscriptions sub,
76 	  wf_systems ws
77     WHERE eve.name   = p_event_name
78       AND eve.status = 'ENABLED'
79       AND eve.guid   = sub.event_filter_guid
80       AND UPPER(sub.rule_function) = 'HZ_EVENT_ELT.HZ_PARAM_DELETE'
81       AND sub.status = 'ENABLED'
82       AND ws.GUID = sub.SYSTEM_GUID
83       AND sub.source_type = 'LOCAL';
84   l_yn  VARCHAR2(1);
85  BEGIN
86   OPEN cu0;
87    FETCH cu0 INTO l_yn;
88    IF cu0%NOTFOUND THEN
89       l_yn := 'N';
90    END IF;
91   CLOSE cu0;
92   RETURN l_yn;
93  END;
94 
95  FUNCTION item_key(p_event_name  IN VARCHAR2) RETURN VARCHAR2
96  -----------------------------------------------------
97  -- Return Item_Key according to Hz Event to be raised
98  -- Item_Key is <Event_Name>-hzwfapp_s.nextval
99  -----------------------------------------------------
100  IS
101   RetKey VARCHAR2(240);
102  BEGIN
103   SELECT p_event_name || hz_wf_items_s.nextval INTO RetKey FROM DUAL;
104   RETURN RetKey;
105  END item_key;
106 
107  FUNCTION event(p_event_name IN VARCHAR2) RETURN VARCHAR2
108  -----------------------------------------------
109  -- Return event name if the entered event exist
110  -- Otherwise return NOTFOUND
111  -----------------------------------------------
112  IS
113   RetEvent VARCHAR2(240);
114  BEGIN
115    SELECT name INTO RetEvent
116      FROM wf_events
117     WHERE name = p_event_name;
118    IF SQL%NOTFOUND THEN
119      RetEvent := 'NOTFOUND';
120    END IF;
121    RETURN RetEvent;
122  END event;
123 
124 
125 /*
126 * TCA SSA Uptake (Bug 3456489)
127 *
128 *FUNCTION org_id RETURN NUMBER
129 *--------------------------------------------
130 *-- Return the org_id for the current session
131 *--------------------------------------------
132 *IS
133 *res  NUMBER;
134 *BEGIN
135 * IF SUBSTRB( USERENV('CLIENT_INFO'),1,1) <> ' ' THEN
136 *   res := TO_NUMBER(SUBSTRB(USERENV('CLIENT_INFO'),1,10));
137 * ELSE
138 *   res := NULL;
139 * END IF;
140 * RETURN res;
141 *END;
142 */
143 
144 PROCEDURE AddParamEnvToList
145 ------------------------------------------------------
146 -- Add Application-Context parameter to the enter list
147 ------------------------------------------------------
148 ( x_list              IN OUT NOCOPY  WF_PARAMETER_LIST_T,
149   p_user_id           IN VARCHAR2  DEFAULT NULL,
150   p_resp_id           IN VARCHAR2  DEFAULT NULL,
151   p_resp_appl_id      IN VARCHAR2  DEFAULT NULL,
152   p_security_group_id IN VARCHAR2  DEFAULT NULL,
153   p_org_id            IN VARCHAR2  DEFAULT NULL)
154 IS
155  l_user_id           VARCHAR2(255) := p_user_id;
156  l_resp_appl_id      VARCHAR2(255) := p_resp_appl_id;
157  l_resp_id           VARCHAR2(255) := p_resp_id;
158  l_security_group_id VARCHAR2(255) := p_security_group_id;
159  l_org_id            VARCHAR2(255) := p_org_id;
160  l_param             WF_PARAMETER_T;
161  l_rang              NUMBER;
162 BEGIN
163    l_rang :=  0;
164 
165    IF l_user_id IS NULL THEN
166      -- Fix bug 4271565, use FND_GLOBAL
167      --l_user_id := fnd_profile.value( 'USER_ID');
168      l_user_id := FND_GLOBAL.USER_ID;
169    END IF;
170 
171    l_param := WF_PARAMETER_T( NULL, NULL );
172    -- fill the parameters list
173    x_list.extend;
174    l_param.SetName( 'USER_ID' );
175    l_param.SetValue( l_user_id);
176    l_rang  := l_rang + 1;
177    x_list(l_rang) := l_param;
178 
179    IF l_resp_id IS NULL THEN
180      -- Fix bug 4271565, use FND_GLOBAL
181      --l_resp_id := fnd_profile.value( 'RESP_ID');
182       l_resp_id := FND_GLOBAL.RESP_ID;
183    END IF;
184 
185    l_param := WF_PARAMETER_T( NULL, NULL );
186    -- fill the parameters list
187    x_list.extend;
188    l_param.SetName( 'RESP_ID' );
189    l_param.SetValue( l_resp_id );
190    l_rang  := l_rang + 1;
191    x_list(l_rang) := l_param;
192 
193    IF l_resp_appl_id IS NULL THEN
194      -- Fix bug 4271565, use FND_GLOBAL
195      -- l_resp_appl_id := fnd_profile.value( 'RESP_APPL_ID');
196       l_resp_appl_id := FND_GLOBAL.RESP_APPL_ID;
197    END IF;
198 
199    l_param := WF_PARAMETER_T( NULL, NULL );
200    -- fill the parameters list
201    x_list.extend;
202    l_param.SetName( 'RESP_APPL_ID' );
203    l_param.SetValue( l_resp_appl_id );
204    l_rang  := l_rang + 1;
205    x_list(l_rang) := l_param;
206 
207    IF  l_security_group_id IS NULL THEN
208        --l_security_group_id := fnd_profile.value( 'SECURITY_GROUP_ID');
209        /* BugNo: 3007012 */
210        l_security_group_id := fnd_global.security_group_id;
211    END IF;
212    l_param := WF_PARAMETER_T( NULL, NULL );
213    -- fill the parameters list
214    x_list.extend;
215    l_param.SetName( 'SECURITY_GROUP_ID' );
216    l_param.SetValue( l_security_group_id );
217    l_rang  := l_rang + 1;
218    x_list(l_rang) := l_param;
219 
220   /* 3456489. Removed check for null org_id. */
221    IF (l_org_id IS NOT NULL) THEN
222    	l_param := WF_PARAMETER_T( NULL, NULL );
223    	-- fill the parameters list
224    	x_list.extend;
225    	l_param.SetName( 'ORG_ID' );
226    	l_param.SetValue(l_org_id );
227    	l_rang  := l_rang + 1;
228    	x_list(l_rang) := l_param;
229    END IF;
230 
231 
232 END;
233 
234 
235  PROCEDURE raise_event
236  ----------------------------------------------
237  -- Check if Event exist
238  -- Check if Event is like 'oracle.apps.ar.hz%'
239  -- Get the item_key
240  -- Raise event
241  ----------------------------------------------
242  (p_event_name          IN   VARCHAR2,
243   p_event_key           IN   VARCHAR2,
244   p_data                IN   CLOB DEFAULT NULL,
245   p_parameters          IN   wf_parameter_list_t DEFAULT NULL)
246  IS
247   l_item_key      VARCHAR2(240);
248   l_event         VARCHAR2(240);
249   EventNotFound   EXCEPTION;
250   EventNotHZ      EXCEPTION;
251   l_debug_prefix  VARCHAR2(30) := '';
252  BEGIN
253 
254   SAVEPOINT hz_raise_event;
255 
256   --enable_debug;
257 
258   l_event := event(p_event_name);
259 
260   IF l_event = 'NOTFOUND' THEN
261     RAISE EventNotFound;
262   END IF;
263 
264   IF SUBSTR(l_event,1,18) <> 'oracle.apps.ar.hz.' THEN
265     RAISE EventNotHZ;
266   END IF;
267 
268   Wf_Event.Raise
269   ( p_event_name   =>  l_event,
270     p_event_key    =>  p_event_key,
271     p_parameters   =>  p_parameters,
272     p_event_data   =>  p_data);
273 
274   --disable_debug;
275 
276   EXCEPTION
277     WHEN EventNotFound THEN
278 
279         FND_MESSAGE.SET_NAME( 'AR', 'HZ_EVENTNOTFOUND');
280         FND_MESSAGE.SET_TOKEN( 'EVENT' ,p_event_name );
281         FND_MSG_PUB.ADD;
282 
283         -- Debug info.
284 	IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
285 	    hz_utility_v2pub.debug(p_message=>'Tca event raise (-).  Warning hz_event_pkg :EventNotFound - '||p_event_name ||' not found.',
286 	                           p_prefix=>'ERROR',
287 			           p_msg_level=>fnd_log.level_error);
288         END IF;
289 
290         -- Check if API is called in debug mode. If yes, disable debug.
291         --disable_debug;
292 
293     WHEN EventNotHZ    THEN
294         FND_MESSAGE.SET_NAME( 'AR', 'HZ_EVENTNOTTCA');
295         FND_MESSAGE.SET_TOKEN( 'EVENT' ,p_event_name );
296         FND_MSG_PUB.ADD;
297 
298         -- Debug info.
299 	IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
300 	    hz_utility_v2pub.debug(p_message=>' Tca event raise  (-).  Warning hz_event_pkg:EventNotHZ - '||p_event_name ||' isnot TCA event.',
301 	                           p_prefix=>'ERROR',
302 			           p_msg_level=>fnd_log.level_error);
303         END IF;
304 
305         -- Check if API is called in debug mode. If yes, disable debug.
306         --disable_debug;
307 
308     WHEN NO_DATA_FOUND THEN
309         ROLLBACK TO hz_raise_event;
310 
311         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
315         -- Debug info.
312         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
313         FND_MSG_PUB.ADD;
314 
316 	IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
317 	    hz_utility_v2pub.debug(p_message=>'Tca event raise (-). Error hz_event_pkg:No_DaTa_Found '||TO_CHAR(SQLCODE)||': '||SQLERRM,
318 	                           p_prefix=>'ERROR',
319 			           p_msg_level=>fnd_log.level_error);
320         END IF;
321 
322         -- Check if API is called in debug mode. If yes, disable debug.
323         --disable_debug;
324 
325         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
326 
327     WHEN OTHERS        THEN
328         ROLLBACK TO hz_raise_event;
329 
330         FND_MESSAGE.SET_NAME( 'AR', 'HZ_API_OTHERS_EXCEP' );
331         FND_MESSAGE.SET_TOKEN( 'ERROR' ,SQLERRM );
332         FND_MSG_PUB.ADD;
333 
334         -- Debug info.
335 	IF fnd_log.level_error>=fnd_log.g_current_runtime_level THEN
336 	    hz_utility_v2pub.debug(p_message=>'Tca event raise (-). Error hz_event_pkg:OTHERS'||TO_CHAR(SQLCODE)||': '||SQLERRM,
337 	                           p_prefix=>'SQL ERROR',
338 			           p_msg_level=>fnd_log.level_error);
339         END IF;
340 
341         -- Check if API is called in debug mode. If yes, disable debug.
342         --disable_debug;
343 
344         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
345 
346 
347   END raise_event;
348 
349 
350 END;