[Home] [Help]
PACKAGE BODY: APPS.WSH_ITM_ASYN_MSGMAP_ASSISTANT
Source
1 PACKAGE BODY WSH_ITM_ASYN_MSGMAP_ASSISTANT AS
2 /* $Header: WSHITMAB.pls 120.2 2007/08/06 13:42:30 ueshanka ship $ */
3 --
4 G_PKG_NAME CONSTANT VARCHAR2(50) := 'WSH_ITM_ASYN_MSGMAP_ASSISTANT';
5 G_ITM_LOG_LEVEL WSH_ITM_PARAMETER_SETUPS_B.VALUE%TYPE;
6 G_LOG_FILENAME VARCHAR2(100);
7 G_FILE_PTR UTL_FILE.File_Type;
8 G_REQ_CONTROL_ID NUMBER;
9 G_PRV_REQ_CONTROL_ID NUMBER := -1;
10 G_DEBUG_PROCESS BOOLEAN;
11 --
12 PROCEDURE Initialize_Debug;
13 PROCEDURE Close_Debug;
14 --
15 /*
16 ** This procedure is used have a post process Procedure call
17 ** that updates the request control table with appropriate
18 ** response header and process flag values
19 **
20 ** p_request_control_id - REQUEST CONTROL ID
21 ** p_response_header_id - RESPONSE HEADER ID
22 ** p_process_flag - PROCESS FLAG
23 **
24 */
25 PROCEDURE UPDATE_REQCTRL_REC( p_request_control_id IN NUMBER,
26 p_response_header_id IN NUMBER,
27 p_process_flag IN NUMBER) IS
28 --
29 l_debug_on BOOLEAN;
30 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'UPDATE_REQCTRL_REC';
31 --
32 BEGIN
33 --
34 Initialize_Debug;
35 --
36 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
37 --
38 IF ( l_debug_on IS NULL )
39 THEN
40 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
41 END IF;
42 --
43 IF l_debug_on THEN
44 WSH_DEBUG_SV.Push(l_module_name);
45 WSH_DEBUG_SV.Log(l_module_name, 'p_request_control_id', p_request_control_id );
46 WSH_DEBUG_SV.Log(l_module_name, 'p_response_header_id', p_response_header_id );
47 WSH_DEBUG_SV.Log(l_module_name, 'p_process_flag', p_process_flag );
48 END IF;
49
50 --UPDATING TABLE WSH_ITM_REQUEST_CONTROL WITH RESPECTIVE
51 -- RESPONSE_HEADER_ID and PROCESS_FLAG
52
53 UPDATE WSH_ITM_REQUEST_CONTROL SET
54 RESPONSE_HEADER_ID = p_response_header_id,
55 PROCESS_FLAG = p_process_flag
56 WHERE REQUEST_CONTROL_ID = p_request_control_id;
57 --
58 IF l_debug_on THEN
59 WSH_DEBUG_SV.Pop(l_module_name);
60 END IF;
61 --
62
63 END UPDATE_REQCTRL_REC;
64
65 /*
66 ** This procedure is used when there is an error tag in the header
67 ** level, i.e.. under response tag and it for multiple requests clubbed
68 ** in a single XML Request. In this case, multiple response headers
69 ** should be created for the respective request records and their request
70 ** records updated with the appropriate values.
71 **
72 ** p_message_id - MESSAGE ID (part of incoming response message)
73 ** p_error_code - ERROR CODE
74 ** p_error_type - ERROR TYPE
75 ** p_error_text - ERROR MESSAGE
76 **
77 */
78 PROCEDURE INSERT_ERROR( p_message_id IN VARCHAR2,
79 p_error_code IN VARCHAR2,
80 p_error_type IN VARCHAR2,
81 p_error_text IN VARCHAR2) IS
82 l_reqclrt_ids VARCHAR2(500);
83 l_service_type_code VARCHAR2(10);
84 l_vendor_id VARCHAR2(10);
85 l_reqclrt_id VARCHAR2(50);
86 l_response_header_id NUMBER DEFAULT -99;
87 --
88 l_debug_on BOOLEAN;
89 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'INSERT_ERROR';
90 --
91 BEGIN
92 Initialize_Debug;
93 --
94 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
95 --
96 IF ( l_debug_on IS NULL )
97 THEN
98 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
99 END IF;
100 --
101 IF l_debug_on THEN
102 WSH_DEBUG_SV.Push(l_module_name);
103 WSH_DEBUG_SV.Log(l_module_name, 'p_message_id', p_message_id );
104 WSH_DEBUG_SV.Log(l_module_name, 'p_error_code', p_error_code );
105 WSH_DEBUG_SV.Log(l_module_name, 'p_error_type', p_error_type );
106 WSH_DEBUG_SV.Log(l_module_name, 'p_error_text', p_error_text );
107 END IF;
108 --
109
110 TOKENIZE_MESSAGEID(p_message_id, l_reqclrt_ids, l_service_type_code, l_vendor_id);
111
112 LOOP
113 l_reqclrt_id := SUBSTR(l_reqclrt_ids, 0, (INSTR(l_reqclrt_ids, '-')-1));
114 IF (l_reqclrt_id IS NULL) THEN
115
116
117 BEGIN
118 SELECT WSH_ITM_RESPONSE_HEADERS_S.NEXTVAL INTO l_response_header_id FROM DUAL;
119 INSERT INTO WSH_ITM_RESPONSE_HEADERS
120 (
121 RESPONSE_HEADER_ID,
122 REQUEST_CONTROL_ID,
123 VENDOR_ID,
124 SERVICE_TYPE_CODE,
125 MESSAGE_ID,
126 RESPONSE_DATE,
127 ERROR_TYPE,
128 ERROR_CODE,
129 ERROR_TEXT,
130 LAST_UPDATE_DATE,
131 LAST_UPDATED_BY,
132 CREATION_DATE,
133 CREATED_BY,
134 LAST_UPDATE_LOGIN
135 )
136 VALUES
137 (
138 l_response_header_id,
139 l_reqclrt_ids,
140 l_vendor_id,
141 l_service_type_code,
142 p_message_id,
143 SYSDATE,
144 p_error_type,
145 p_error_code,
146 p_error_text,
147 SYSDATE,
148 1,
149 SYSDATE,
150 1,
151 1
152 );
153 EXCEPTION
154 WHEN OTHERS THEN
155 NULL;
156 END;
157
158 UPDATE WSH_ITM_REQUEST_CONTROL SET
159 PROCESS_FLAG = 2,
160 RESPONSE_HEADER_ID = l_response_header_id
161 WHERE REQUEST_CONTROL_ID=l_reqclrt_ids;
162
163 EXIT;
164 ELSE
165
166 BEGIN
167
168 SELECT WSH_ITM_RESPONSE_HEADERS_S.NEXTVAL INTO l_response_header_id FROM DUAL;
169 INSERT INTO WSH_ITM_RESPONSE_HEADERS
170 (
171 RESPONSE_HEADER_ID,
172 REQUEST_CONTROL_ID,
173 VENDOR_ID,
174 SERVICE_TYPE_CODE,
175 MESSAGE_ID,
176 RESPONSE_DATE,
177 ERROR_TYPE,
178 ERROR_CODE,
179 ERROR_TEXT,
180 LAST_UPDATE_DATE,
181 LAST_UPDATED_BY,
182 CREATION_DATE,
183 CREATED_BY,
184 LAST_UPDATE_LOGIN
185 )
186 VALUES
187 (
188 l_response_header_id,
189 l_reqclrt_id,
190 l_vendor_id,
191 l_service_type_code,
192 p_message_id,
193 SYSDATE,
194 p_error_type,
195 p_error_code,
196 p_error_text,
197 SYSDATE,
198 1,
199 SYSDATE,
200 1,
201 1
202 );
203 EXCEPTION
204 WHEN OTHERS THEN
205 NULL;
206 END;
207
208 UPDATE WSH_ITM_REQUEST_CONTROL SET
209 PROCESS_FLAG = 2,
210 RESPONSE_HEADER_ID = l_response_header_id
211 WHERE REQUEST_CONTROL_ID = l_reqclrt_id;
212
213 END IF;
214 l_reqclrt_ids := SUBSTR(l_reqclrt_ids, (INSTR(l_reqclrt_ids, '-')+1));
215 END LOOP;
216 --
217 IF l_debug_on THEN
218 WSH_DEBUG_SV.Pop(l_module_name);
219 END IF;
220 --
221
222 END INSERT_ERROR;
223
224 /*
225 ** This procedure is used especially for parsing the message_id
226 ** value and returns req_ctrl_ids, service_code for the request, vendor_id.
227
228 **
229 ** p_message_id - MESSAGE ID
230 ** x_reqclrt_ids - REQUEST CONTROL IDs separated by '-'
231 ** x_service_type_code - SERVICE CODES for current trasaction
232 ** x_vendor_id - VENDOR Id of vendor used for the
233 ** transaction
234 **
235 */
236 PROCEDURE TOKENIZE_MESSAGEID( p_message_id IN VARCHAR2,
237 x_reqclrt_ids OUT NOCOPY VARCHAR2,
238 x_service_type_code OUT NOCOPY VARCHAR2,
239 x_vendor_id OUT NOCOPY VARCHAR2) IS
240 l_temp_id VARCHAR2(500);
241 --
242 l_debug_on BOOLEAN;
243 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'TOKENIZE_MESSAGEID';
244 --
245
246 BEGIN
247 g_req_control_id := substr(p_message_id, 0, (instr(p_message_id, '~')-1));
248
249 Initialize_Debug;
250 --
251 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
252 --
253 IF ( l_debug_on IS NULL )
254 THEN
255 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
256 END IF;
257 --
258 IF l_debug_on THEN
259 WSH_DEBUG_SV.Push(l_module_name);
260 WSH_DEBUG_SV.Log(l_module_name, 'p_message_id', p_message_id );
261 END IF;
262 --
263
264 x_reqclrt_ids := substr(p_message_id, 0, (instr(p_message_id, '~')-1));
265 l_temp_id := substr(p_message_id, (instr(p_message_id, '~')+1));
266 x_service_type_code := substr(l_temp_id, 0, (instr(l_temp_id, '~')-1));
267 x_vendor_id := substr(l_temp_id, (instr(l_temp_id, '~')+1));
268 --
269 IF l_debug_on THEN
270 WSH_DEBUG_SV.Pop(l_module_name);
271 END IF;
272 --
273 END TOKENIZE_MESSAGEID;
274
275 /*
276 ** This procedure is used especially for parsing the party ID
277 ** which comes as part of the incoming XML response and
278 ** retuns the party_id that maps to WSH_ITM_PARTIES Table as out variables.
279 **
280 ** p_party_id - PARTY ID AS PER THE RESPONSE XML MESSAGE
281 ** x_actual_party_id - Party ID as per in WSH_ITM_PARTIES Table
282 **
283 */
284 PROCEDURE TOKENIZE_PARTYID( p_party_id IN VARCHAR2,
285 x_actual_party_id OUT NOCOPY VARCHAR2) IS
286 --
287 l_debug_on BOOLEAN;
288 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'TOKENIZE_PARTYID';
289 --
290 BEGIN
291 Initialize_Debug;
292 --
293 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
294 --
295 IF ( l_debug_on IS NULL )
296 THEN
297 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
298 END IF;
299 --
300 IF l_debug_on THEN
301 WSH_DEBUG_SV.Push(l_module_name);
302 WSH_DEBUG_SV.Log(l_module_name, 'p_party_id', p_party_id );
303 END IF;
304 --
305
306 x_actual_party_id := substr(p_party_id, (instr(p_party_id, '-')+1));
307 --
308 IF l_debug_on THEN
309 WSH_DEBUG_SV.Pop(l_module_name);
310 END IF;
311 --
312
313 END TOKENIZE_PARTYID;
314
315 /*
316 ** For processing response Acknowledgements, in case the request is sent
317 ** Asynchronously and the acknowledgment is also received Asynchronously,
318 ** the Message Map has calls this procedure to update the process flag to
319 ** '-4'(Marking the request record as ACKNOLEDGMENT received.
320 **
321 ** p_message_id - MESSAGE ID for which acknowledgement is received.
322 **
323 */
324 PROCEDURE PROCESS_ACK_RECEIPT(p_message_id IN VARCHAR2) IS
325 l_reqclrt_ids VARCHAR2(100);
326 l_reqclrt_id varchar2(50);
327 l_service_type_code VARCHAR2(250);
328 l_vendor_id VARCHAR2(100);
329 --
330 l_debug_on BOOLEAN;
331 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'PROCESS_ACK_RECEIPT';
332 --
333 BEGIN
334 Initialize_Debug;
335 --
336 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
337 --
338 IF ( l_debug_on IS NULL )
339 THEN
340 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
341 END IF;
342 --
343 IF l_debug_on THEN
344 WSH_DEBUG_SV.Push(l_module_name);
345 WSH_DEBUG_SV.Log(l_module_name, 'p_message_id', p_message_id );
346 END IF;
347 --
348
349 --GET THE ERQUEST CONTROL IDS
350 TOKENIZE_MESSAGEID(p_message_id, l_reqclrt_ids, l_service_type_code, l_vendor_id);
351 --CURRENTLY WE UPDATE THE WSH_REQUEST_CONTROL TABLE
352 -- PROCESS FLAG TO -4 FOR ALL REQUEST_CONTROL_IDS
353 -- WHO HAVE NOT RECEIVED ANY ACTUAL RESPONSES.
354 loop
355 l_reqclrt_id := substr(l_reqclrt_ids, 0, (instr(l_reqclrt_ids, '-')-1));
356 IF (l_reqclrt_id IS NULL) THEN
357
358 UPDATE WSH_ITM_REQUEST_CONTROL
359 SET PROCESS_FLAG = -4
360 WHERE REQUEST_CONTROL_ID = l_reqclrt_ids
361 AND PROCESS_FLAG IN (-2, -3);
362 EXIT;
363 ELSE
364 UPDATE WSH_ITM_REQUEST_CONTROL
365 SET PROCESS_FLAG = -4
366 WHERE REQUEST_CONTROL_ID = l_reqclrt_id
367 AND PROCESS_FLAG IN (-2, -3);
368 END IF;
369 l_reqclrt_ids := substr(l_reqclrt_ids, (instr(l_reqclrt_ids, '-')+1));
370 end loop;
371 --
372 IF l_debug_on THEN
373 WSH_DEBUG_SV.Pop(l_module_name);
374 END IF;
375 --
376
377 END PROCESS_ACK_RECEIPT;
378
379 /*
380 ** This procedure is used to update DENIED_PARTY_MATCH flag in WSH_ITM_RESPONSE_LINES
381 ** Table if a DENIED_PARTY_MATCH tag is found in the response.
382 **
383 ** p_response_line_id - RESPONSE LINE ID FOR WHICH DENIED PARTY HAS BEEN
384 ** FOUND IN THE RECEIVED RESPONSE.
385 **
386 */
387 PROCEDURE UPDATE_DENIED_PARTY_MATCH(p_response_line_id IN NUMBER) IS
388 --
389 l_debug_on BOOLEAN;
390 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'UPDATE_DENIED_PARTY_MATCH';
391 --
392 BEGIN
393 Initialize_Debug;
394 --
395 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
396 --
397 IF ( l_debug_on IS NULL )
398 THEN
399 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
400 END IF;
401 --
402 IF l_debug_on THEN
403 WSH_DEBUG_SV.Push(l_module_name);
404 WSH_DEBUG_SV.Log(l_module_name, 'p_response_line_id', p_response_line_id );
405 END IF;
406 --
407
408 --UPDATE WSH_ITM_RESPONSE_LINES SET DENIED_PARTY_MATCH = 'y'
409 UPDATE WSH_ITM_RESPONSE_LINES
410 SET DENIED_PARTY_FLAG = 'Y'
411 WHERE RESPONSE_LINE_ID = p_response_line_id;
412 --
413 IF l_debug_on THEN
414 WSH_DEBUG_SV.Pop(l_module_name);
415 END IF;
416 --
417 END UPDATE_DENIED_PARTY_MATCH;
418
419 /*
420 ** Create a new response header record in case x_create_resp_hdr = 1
421 ** else, uses the response header ID returned to create the lines
422 ** record for the header.
423 **
424 ** p_request_control_id - REQUEST CONTROL ID
425 ** x_response_header_id - RESPONSE HEADER ID
426 ** x_create_resp_hdr 1 - HEADER EXISTING (NO NEED TO CREATE)
427 ** NULL - NEW HEADER (INSERT DATA TO HDR TABLE)
428 **
429 */
430 PROCEDURE GET_RESPONSE_HDR(p_request_control_id IN NUMBER,
431 x_response_header_id OUT NOCOPY NUMBER,
432 x_create_resp_hdr OUT NOCOPY NUMBER) IS
433 --
434 l_debug_on BOOLEAN;
435 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_RESPONSE_HDR';
436 --
437 BEGIN
438 Initialize_Debug;
439 --
440 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
441 --
442 IF ( l_debug_on IS NULL )
443 THEN
444 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
445 END IF;
446 --
447 IF l_debug_on THEN
448 WSH_DEBUG_SV.Push(l_module_name);
449 WSH_DEBUG_SV.Log(l_module_name, 'p_request_control_id', p_request_control_id );
450 END IF;
451 --
452 BEGIN
453
454 SELECT RESPONSE_HEADER_ID INTO x_response_header_id
455 FROM WSH_ITM_REQUEST_CONTROL
456 WHERE REQUEST_CONTROL_ID = p_request_control_id
457 AND ROWNUM < 2;
458 EXCEPTION
459 WHEN NO_DATA_FOUND THEN
460 x_response_header_id := NULL;
461 END;
462
463 IF x_response_header_id IS NULL THEN
464 SELECT WSH_ITM_RESPONSE_HEADERS_S.NEXTVAL INTO
465 x_response_header_id FROM DUAL;
466 x_create_resp_hdr := 1;
467 ELSE
468 x_create_resp_hdr := NULL;
469 END IF;
470 --
471 IF l_debug_on THEN
472 WSH_DEBUG_SV.Pop(l_module_name);
473 END IF;
474 --
475 END GET_RESPONSE_HDR;
476
477 /*
478 ** As message Map calls with message ID a new procedure which first
479 ** parses the message id and then calls WSH_ITM_POST_PROCESS_HANDLER.CHECK_PENDING_CALL_API
480 ** for further processing.
481 **
482 ** p_message_ID - MESSAGE ID received.
483 **
484 */
485 PROCEDURE MESSAGE_POSTPROCESS(p_message_ID IN VARCHAR2) IS
486
487 l_reqclrt_ids VARCHAR2(100);
488 l_service_type_code VARCHAR2(100);
489 l_vendor_id VARCHAR2(5);
490 l_reqclrt_id NUMBER;
491 l_request_set_id NUMBER;
492 l_application_id NUMBER;
493 --
494 l_debug_on BOOLEAN;
495 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'MESSAGE_POSTPROCESS1';
496 --
497 BEGIN
498 Initialize_Debug;
499 --
500 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
501 --
502 IF ( l_debug_on IS NULL )
503 THEN
504 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
505 END IF;
506 --
507 IF l_debug_on THEN
508 WSH_DEBUG_SV.Push(l_module_name);
509 WSH_DEBUG_SV.Log(l_module_name, 'p_message_ID', p_message_ID );
510 END IF;
511 --
512
513
514 -- get request control IDs
515 TOKENIZE_MESSAGEID(p_message_ID,
516 l_reqclrt_ids,
517 l_service_type_code,
518 l_vendor_id);
519 LOOP
520 l_reqclrt_id := substr(l_reqclrt_ids, 0, (instr(l_reqclrt_ids, '-')-1));
521 IF (l_reqclrt_id IS NULL) THEN
522 l_reqclrt_id := l_reqclrt_ids;
523 SELECT REQUEST_SET_ID,
524 APPLICATION_ID
525 INTO l_request_set_id,
526 l_application_id
527 FROM WSH_ITM_REQUEST_CONTROL
528 WHERE REQUEST_CONTROL_ID = l_reqclrt_id;
529
530 WSH_ITM_POST_PROCESS_HANDLER.CHECK_PENDING_CALL_API(l_reqclrt_id,
531 l_request_set_id,
532 l_application_id,
533 'ECX');
534 EXIT;
535 ELSE
536 SELECT REQUEST_SET_ID,
537 APPLICATION_ID
538 INTO l_request_set_id,
539 l_application_id
540 FROM WSH_ITM_REQUEST_CONTROL
541 WHERE REQUEST_CONTROL_ID = l_reqclrt_id;
542
543 WSH_ITM_POST_PROCESS_HANDLER.CHECK_PENDING_CALL_API(l_reqclrt_id,
544 l_request_set_id,
545 l_application_id,
546 'ECX');
547 END IF;
548 l_reqclrt_ids := substr(l_reqclrt_ids, (instr(l_reqclrt_ids, '-')+1));
549
550 END LOOP;
551 --
552 IF l_debug_on THEN
553 WSH_DEBUG_SV.Pop(l_module_name);
554 END IF;
555 --
556
557 Close_Debug;
558
559 END MESSAGE_POSTPROCESS;
560
561 /*
562 ** As message Map calls with requestCtrl ID a new procedure which first
563 ** gets the requestSetID and application id and then calls
564 ** WSH_ITM_POST_PROCESS_HANDLER.CHECK_PENDING_CALL_API
565 ** for further processing.
566 **
567 ** p_reqCtrlID - REQUEST CONTROL ID received.
568 **
569 */
570 PROCEDURE MESSAGE_POSTPROCESS(p_reqCtrlID NUMBER) IS
571 l_request_set_id NUMBER;
572 l_application_id NUMBER;
573 --
574 l_debug_on BOOLEAN;
575 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'MESSAGE_POSTPROCESS';
576 --
577 BEGIN
578 Initialize_Debug;
579 --
580 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
581 --
582 IF ( l_debug_on IS NULL )
583 THEN
584 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
585 END IF;
586 --
587 IF l_debug_on THEN
588 WSH_DEBUG_SV.Push(l_module_name);
589 WSH_DEBUG_SV.Log(l_module_name, 'p_request_control_id', p_reqCtrlID );
590 END IF;
591 --
592
593 SELECT NVL(REQUEST_SET_ID, 0),
594 APPLICATION_ID
595 INTO l_request_set_id,
596 l_application_id
597 FROM WSH_ITM_REQUEST_CONTROL
598 WHERE REQUEST_CONTROL_ID = p_reqCtrlID;
599
600 WSH_ITM_POST_PROCESS_HANDLER.CHECK_PENDING_CALL_API(p_reqCtrlID,
601 l_request_set_id,
602 l_application_id,
603 'ECX');
604
605 --
606 IF l_debug_on THEN
607 WSH_DEBUG_SV.Pop(l_module_name);
608 END IF;
609 --
610 END MESSAGE_POSTPROCESS;
611 PROCEDURE Initialize_Debug IS
612 l_file_ptr UTL_FILE.File_Type;
613 l_log_directory VARCHAR2(4000);
614 l_log_filename VARCHAR2(100);
615 l_dbg_level VARCHAR2(100);
616 l_dbg_module VARCHAR2(100);
617 --
618 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Initialize_Debug';
619 --
620 BEGIN
621 IF G_ITM_LOG_LEVEL IS NULL THEN
622 BEGIN
623 select value
624 into G_ITM_LOG_LEVEL
625 from WSH_ITM_PARAMETER_SETUPS_B
626 where parameter_name = 'WSH_ITM_LOG_SEVERITY';
627
628 EXCEPTION
629 when no_data_found then
630 G_ITM_LOG_LEVEL := '0';
631 END;
632 END IF;
633
634 IF G_ITM_LOG_LEVEL = '1' THEN
635 BEGIN
636 IF G_LOG_FILENAME IS NULL OR
637 G_PRV_REQ_CONTROL_ID <> G_REQ_CONTROL_ID
638 THEN
639 --Generating log file for each Request Control even if it processed
640 --within one concurrent process
641 --Close the file if its already open
642 IF G_PRV_REQ_CONTROL_ID <> G_REQ_CONTROL_ID THEN
643 IF utl_file.is_open(g_file_ptr) THEN
644 utl_file.fclose(g_file_ptr);
645 END IF;
646 END IF;
647
648 G_PRV_REQ_CONTROL_ID := G_REQ_CONTROL_ID;
649
650 --Get profile option value from SITE level for debug log directory
651 l_log_directory := FND_PROFILE.VALUE_SPECIFIC( 'WSH_DEBUG_LOG_DIRECTORY', -1, -1, -1, -1, -1 );
652 l_dbg_level := FND_PROFILE.VALUE_SPECIFIC( 'WSH_DEBUG_LEVEL', -1, -1, -1, -1, -1 );
653 l_dbg_module := FND_PROFILE.VALUE_SPECIFIC( 'WSH_DEBUG_MODULE', -1, -1, -1, -1, -1 );
654
655 FND_PROFILE.PUT('WSH_DEBUG_LEVEL', l_dbg_level);
656 FND_PROFILE.PUT('WSH_DEBUG_MODULE',l_dbg_module);
657
658 --G_LOG_FILENAME := 'wshitm_async_' || g_req_control_id || '.dbg';
659
660 G_LOG_FILENAME := 'wshitm_' || g_req_control_id || '_' || to_char(sysdate,'MMYYHH24MISS') ||'.dbg';
661
662 l_file_ptr := UTL_FILE.Fopen(l_log_directory, G_LOG_FILENAME, 'a');
663
664 --Debug messages will be generated in a log file instead of
665 --being printed in concurrent request log file
666 WSH_DEBUG_SV.G_ITM_ASYN_PROC := TRUE;
667
668 WSH_DEBUG_INTERFACE.Start_Debugger(
669 p_dir_name => l_log_directory,
670 p_file_name => G_LOG_FILENAME,
671 p_file_handle => l_file_ptr );
672 OE_DEBUG_PUB.Start_ONT_Debugger(
673 p_directory => l_log_directory,
674 p_filename => G_LOG_FILENAME,
675 p_file_handle => l_file_ptr );
676
677 G_FILE_PTR := l_file_ptr;
678 G_DEBUG_PROCESS := TRUE;
679
680 --Deleting pl/sql table g_CallStack so that debug messages
681 --will be indented properly if more than one ITM request
682 --controls are processed by same concurrent process.
683 WSH_DEBUG_SV.g_CallStack.DELETE;
684 --Calling Set_Debug_Count to reinitialize debug global
685 --variables in debug package WSH_DEBUG_SV
686 WSH_DEBUG_SV.Set_Debug_Count;
687
688 WSH_DEBUG_SV.Push(l_module_name);
689 WSH_DEBUG_SV.Log(l_module_name, 'Concurrent Request Id', fnd_global.conc_request_id );
690 WSH_DEBUG_SV.Log(l_module_name, 'User Name', fnd_global.user_name );
691 WSH_DEBUG_SV.Log(l_module_name, 'Responsibility Id', fnd_global.resp_id );
692 WSH_DEBUG_SV.Log(l_module_name, 'Responsibility Application Id', fnd_global.resp_appl_id );
693 WSH_DEBUG_SV.Pop(l_module_name);
694 ELSE
695 G_DEBUG_PROCESS := FALSE;
696 END IF;
697
698 -- Added Exception handler so that we will proceed further
699 -- even if file handling raises any exception.
700 EXCEPTION
701 WHEN OTHERS THEN
702 G_DEBUG_PROCESS := FALSE;
703 END;
704 END IF;
705 END Initialize_Debug;
706
707 PROCEDURE Close_Debug IS
708 --
709 l_debug_on BOOLEAN;
710 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'Close_Debug';
711 --
712 BEGIN
713 --
714 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
715 --
716 IF ( l_debug_on IS NULL )
717 THEN
718 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
719 END IF;
720 --
721 IF l_debug_on THEN
722 WSH_DEBUG_SV.Push(l_module_name);
723 WSH_DEBUG_SV.Logmsg(l_module_name, 'Closing debug log file' );
724 WSH_DEBUG_SV.Pop(l_module_name);
725
726 --If ITM Log Severity is set to DEBUG then disable Shipping and OM Debugging
727 WSH_DEBUG_INTERFACE.stop_debugger;
728 OE_DEBUG_PUB.STOP_ONT_DEBUGGER;
729 --
730 END IF;
731 --
732
733 IF ( G_DEBUG_PROCESS ) THEN
734 IF utl_file.is_open(g_file_ptr) THEN
735 utl_file.fclose(g_file_ptr);
736 END IF;
737 END IF;
738
739 -- Added Exception handler so that we will proceed further
740 -- even if file handling raises any exception.
741 EXCEPTION
742 WHEN OTHERS THEN
743 null;
744 END Close_Debug;
745
746 END WSH_ITM_ASYN_MSGMAP_ASSISTANT;