DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_ITM_POST_PROCESS_HANDLER

Source


1 PACKAGE BODY WSH_ITM_POST_PROCESS_HANDLER AS
2 /* $Header: WSHITPHB.pls 120.3.12010000.2 2008/10/01 12:47:49 skanduku ship $ */
3         --
4         G_PKG_NAME CONSTANT VARCHAR2(50) := 'WSH_ITM_POST_PROCESS_HANDLER';
5         --
6         /*
7         ** This procedure checks if there are any pending requests
8         ** to be processed in case the request belongs to a
9         ** request set. It also calls the CALL_CUSTOM_API procedure
10         **
11         ** p_request_control_id - REQUEST CONTROL ID
12         ** p_request_set_id     - REQUEST SET ID
13         ** p_application_id     - APPLICATION ID
14         ** p_source             - SOURCE OF CALL
15         **                              ECX - XMLGATEWAY(ASYNCHRNOUS MODE)
16         **                              ITM - ITM JAVA CODE(SYNCHRNOUS MODE)
17         */
18         PROCEDURE CHECK_PENDING_CALL_API(p_request_control_id   NUMBER,
19                                          p_request_set_id       NUMBER,
20                                          p_application_id       NUMBER,
21                                          p_source               VARCHAR2) IS
22                 l_count         NUMBER;
23                 --
24                 l_debug_on    BOOLEAN;
25                 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CHECK_PENDING_CALL_API';
26                 --
27 
28         BEGIN
29                 --
30                 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
31                 --
32                 IF ( l_debug_on IS NULL )
33                 THEN
34                     l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
35                 END IF;
36                 --
37                 IF l_debug_on and p_source = 'ITM' THEN
38                     WSH_DEBUG_SV.Push(l_module_name);
39                     WSH_DEBUG_SV.Log(l_module_name, 'p_request_control_id', p_request_control_id );
40                     WSH_DEBUG_SV.Log(l_module_name, 'p_request_set_id', p_request_set_id );
41                     WSH_DEBUG_SV.Log(l_module_name, 'p_application_id', p_application_id );
42                     WSH_DEBUG_SV.Log(l_module_name, 'p_source', p_source );
43                 END IF;
44                 --
45 
46                 BEGIN
47                         IF p_request_set_id <> 0 THEN
48                                 SELECT COUNT(REQUEST_CONTROL_ID)
49                                 INTO   l_count
50                                 FROM   WSH_ITM_REQUEST_CONTROL
51                                 WHERE  REQUEST_SET_ID = p_request_set_id
52                                 AND    PROCESS_FLAG <= 0;
53 
54                                 IF l_count = 0 THEN
55                                         IF l_debug_on THEN
56                                            WSH_DEBUG_SV.logmsg(l_module_name, 'Calling Program Unit CALL_CUSTOM_API with p_request_set_id',WSH_DEBUG_SV.C_PROC_LEVEL);
57                                         END IF;
58                                         CALL_CUSTOM_API(0, p_request_set_id, p_application_id, p_source);
59                                 ELSE
60                                        IF l_debug_on AND P_SOURCE = 'ITM' THEN
61                                             WSH_DEBUG_SV.logmsg(l_module_name, 'Pending records for Request Set '|| p_request_set_id);
62                                         END IF;
63                                 END IF;
64                         ELSE
65                                 IF l_debug_on THEN
66                                    WSH_DEBUG_SV.logmsg(l_module_name, 'Calling Program Unit CALL_CUSTOM_API with p_request_control_id',WSH_DEBUG_SV.C_PROC_LEVEL);
67                                 END IF;
68                                 CALL_CUSTOM_API(p_request_control_id, 0, p_application_id, p_source);
69                         END IF;
70                 EXCEPTION
71                         WHEN OTHERS THEN
72 
73                              WSH_UTIL_CORE.Default_Handler(l_module_name);
74                              IF l_debug_on AND P_SOURCE = 'ITM' THEN
75                                 WSH_DEBUG_SV.logmsg(l_module_name, 'Error in calling CALL_CUSTOM_API '||SQLERRM);
76                              END IF;
77                 END;
78                 --
79                 IF l_debug_on AND p_source = 'ITM' THEN
80                    WSH_DEBUG_SV.Pop(l_module_name);
81                 END IF;
82                 --
83 
84         EXCEPTION
85            WHEN OTHERS THEN
86              IF l_debug_on AND p_source = 'ITM' THEN
87                 WSH_DEBUG_SV.logmsg(l_module_name,SQLCODE||'-'||SQLERRM);
88                 WSH_DEBUG_SV.Pop(l_module_name);
89              END IF;
90 
91         END;
92 
93         /*
94         ** This procedure gets the application short name and builds
95         ** the custom procedure which is coded by the integrating
96         ** application. This could drive the integrating application
97         ** into whatever process they have been into since they
98         ** entered ITM for soem kind of complaince check.
99         **
100         ** p_request_control_id - REQUEST CONTROL ID
101         ** p_request_set_id     - REQUEST SET ID
102         ** p_application_id     - APPLICATION ID
103         ** p_source             - SOURCE OF CALL
104         **                              ECX - XMLGATEWAY(ASYNCHRNOUS MODE)
105         **                              ITM - ITM JAVA CODE(SYNCHRNOUS MODE)
106         */
107         PROCEDURE CALL_CUSTOM_API( p_request_control_id NUMBER,
108                                    p_request_set_id     NUMBER,
109                                    p_application_id     NUMBER,
110                                    p_source             VARCHAR2) IS
111                 l_app_shname                    VARCHAR2(10);
112                 l_procedure_name                VARCHAR2(500);
113                 l_debug_on    BOOLEAN;
114                 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CALL_CUSTOM_API';
115         BEGIN
116                  --
117                 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
118                 --
119                 IF ( l_debug_on IS NULL )
120                 THEN
121                     l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
122                 END IF;
123                 --
124                 IF l_debug_on and p_source = 'ITM' THEN
125                     WSH_DEBUG_SV.Push(l_module_name);
126                 END IF;
127                 --
128 
129                 --GET APPLICATION SHORT NAME
130                 BEGIN
131                         SELECT APPLICATION_SHORT_NAME
132                         INTO   l_app_shname
133                         FROM   FND_APPLICATION
134                         WHERE  APPLICATION_ID = p_application_id;
135                 EXCEPTION
136                         WHEN OTHERS THEN
137                                WSH_UTIL_CORE.Default_Handler(l_module_name);
138                                IF l_debug_on AND p_source = 'ITM' THEN
139                                    WSH_DEBUG_SV.Log(l_module_name, 'Error getting application shortname for Id - ' || p_application_id, SQLERRM);
140                                END IF;
141                                goto end_block;
142                 END;
143 
144                 --      build procedure <short_name>_ITM_PKG.WSH_ITM_<short_name>
145                 l_procedure_name := ' BEGIN '||l_app_shname||'_ITM_PKG.WSH_ITM_'||l_app_shname ||'(p_request_control_id=>:p_request_control_id, p_request_set_id=>:p_request_set_id); END;';
146 
147                 IF l_debug_on AND p_source = 'ITM' THEN
148                     WSH_DEBUG_SV.Logmsg(l_module_name, 'l_procedure_name '||l_procedure_name );
149                 END IF;
150 
151                 BEGIN
152                         EXECUTE IMMEDIATE  l_procedure_name
153                                   USING  p_request_control_id,
154                                          p_request_set_id;
155                 EXCEPTION
156                         WHEN OTHERS THEN
157                                 WSH_UTIL_CORE.Default_Handler(l_module_name);
158                              IF l_debug_on AND p_source = 'ITM' THEN
159                                  WSH_DEBUG_SV.Logmsg(l_module_name, 'Error in Custom Procedure '|| SQLERRM);
160                              END IF;
161                              goto end_block;
162                 END;
163           --      Added as part of Additional Attributes required by G.E
164           --      build procedure <short_name>_ITM_CUSTOM_PROCESS.POST_PROCESS_REQUEST
165                 IF l_debug_on AND p_source = 'ITM' THEN
166                         WSH_DEBUG_SV.Logmsg(l_module_name, 'Calling WSH_ITM_CUSTOM_PROCESS.POST_PROCESS_'||l_app_shname||'_REQUEST');
167                 END IF;
168 
169                 l_procedure_name := ' BEGIN WSH_ITM_CUSTOM_PROCESS.POST_PROCESS_'||l_app_shname||'_REQUEST (p_request_control_id=>:p_request_control_id); END;';
170 
171                 BEGIN
172                         EXECUTE IMMEDIATE  l_procedure_name
173                                   USING  p_request_control_id;
174 
175                 EXCEPTION
176                         WHEN OTHERS THEN
177                                 IF l_debug_on AND p_source = 'ITM' THEN
178                                         WSH_DEBUG_SV.Logmsg(l_module_name, 'Error in Custom Procedure:' || l_procedure_name || ' - ' || SQLERRM);
179                                 END IF;
180                 END;
181                 <<end_block>>
182                 --
183                 IF l_debug_on AND p_source = 'ITM' THEN
184                    WSH_DEBUG_SV.Pop(l_module_name);
185                 END IF;
186                 --
187 
188          EXCEPTION
189            WHEN OTHERS THEN
190              IF l_debug_on AND p_source = 'ITM' THEN
191                 WSH_DEBUG_SV.logmsg(l_module_name,SQLCODE||'-'||SQLERRM);
192                 WSH_DEBUG_SV.Pop(l_module_name);
193              END IF;
194 
195         END CALL_CUSTOM_API;
196 
197         -- Bug 5222683
198         -- Overloaded API added for enabling shipping and OM debugging
199         PROCEDURE CHECK_PENDING_CALL_API(p_request_control_id   NUMBER,
200                                          p_request_set_id       NUMBER,
201                                          p_application_id       NUMBER,
202                                          p_source               VARCHAR2,
203                                          p_itm_log_level        NUMBER,
204                                          p_log_filename         VARCHAR2)
205         IS
206            l_file_ptr        UTL_FILE.File_Type;
207            l_debug_process   BOOLEAN;
208            l_log_directory   VARCHAR2(4000);
209         BEGIN
210 
211            --If ITM Log Severity is set to DEBUG then enable Shipping and OM Debugging
212            IF ( p_itm_log_level = '1' ) THEN -- {
213            BEGIN
214               fnd_profile.get('WSH_DEBUG_LOG_DIRECTORY',l_log_directory);
215               l_file_ptr := UTL_FILE.Fopen(l_log_directory, p_log_filename, 'a');
216               WSH_DEBUG_INTERFACE.Start_Debugger(
217                  p_dir_name    => l_log_directory,
218                  p_file_name   => p_log_filename,
219                  p_file_handle => l_file_ptr );
220               OE_DEBUG_PUB.Start_ONT_Debugger(
221                  p_directory   => l_log_directory,
222                  p_filename    => p_log_filename,
223                  p_file_handle => l_file_ptr );
224 
225               l_debug_process := TRUE;
226 
227            -- Added Exception handler so that we can call API Check_Pending_Call_API
228            -- even if file handling raises any exception.
229            EXCEPTION
230              WHEN OTHERS THEN
231                l_debug_process := FALSE;
232            END;
233            END IF; --}
234 
235            --Call Internal API
236            Check_Pending_Call_API( p_request_control_id => p_request_control_id,
237                                    p_request_set_id     => p_request_set_id,
238                                    p_application_id     => p_application_id,
239                                    p_source             => p_source);
240 
241 
242            --If ITM Log Severity is set to DEBUG then disable Shipping and OM Debugging
243            IF ( p_itm_log_level = '1' and l_debug_process ) THEN -- {
244               OE_DEBUG_PUB.Stop_ONT_Debugger;
245               WSH_DEBUG_INTERFACE.Stop_Debugger;
246               IF utl_file.is_open(l_file_ptr) THEN
247                  utl_file.fclose(l_file_ptr);
248               END IF;
249            END IF; --}
250 
251          EXCEPTION
252            WHEN OTHERS THEN
253                 IF ( p_itm_log_level = '1' ) THEN -- {
254                    OE_DEBUG_PUB.Stop_ONT_Debugger;
255                    WSH_DEBUG_INTERFACE.Stop_Debugger;
256                    IF utl_file.is_open(l_file_ptr) THEN
257                       utl_file.fclose(l_file_ptr);
258                    END IF;
259                 END IF; --}
260 
261         END CHECK_PENDING_CALL_API;
262 END WSH_ITM_POST_PROCESS_HANDLER;