DBA Data[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;