[Home] [Help]
PACKAGE BODY: APPS.JTF_FM_REQUEST_GRP
Source
1 PACKAGE BODY JTF_FM_Request_GRP AS
2 /* $Header: jtfgfmb.pls 120.11 2006/06/20 22:31:30 ahattark ship $*/
3 G_PKG_NAME CONSTANT VARCHAR2(200) := 'jtf.plsql.jtfgfmb.JTF_FM_REQUEST_GRP';
4 G_FILE_NAME CONSTANT VARCHAR2(12) := 'jtfgfmb.pls';
5 --
6 G_VALID_LEVEL_LOGIN CONSTANT NUMBER := FND_API.G_VALID_LEVEL_FULL;
7
8
9 ---------------------------------------------------------------
10 -- Please do not remove this from this package
11 -- See Bug # 1310227 for details
12 -- Utility function to replace XML tags
13 ---------------------------------------------------------------
14
15 FUNCTION REPLACE_TAG
16 (
17 p_string IN VARCHAR2
18 )
19 RETURN VARCHAR2 IS
20 l_message VARCHAR2(32767);
21 l_tag VARCHAR2(10);
22 l_api_name CONSTANT VARCHAR2(30) := 'REPLACE_TAG';
23 l_full_name CONSTANT VARCHAR2(100) := G_PKG_NAME || '.' || l_api_name;
24 BEGIN
25 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
26
27
28 -- Initialize the string
29 l_message := p_string;
30
31 -- Replace the tags <,>,',&," with corresponding xml tags.
32 l_tag := '&' || 'amp;';
33 l_message := replace(l_message, '&', l_tag);
34
35 l_tag := '&' || 'lt;';
36 l_message := replace(l_message, '<', l_tag);
37
38 l_tag := '&' || 'gt;';
39 l_message := replace(l_message, '>', l_tag);
40
41 l_tag := '&' || 'quot;';
42 l_message := replace(l_message, '"', l_tag);
43
44 l_tag := '&' || 'apos;';
45 l_message := replace(l_message, '''', l_tag);
46
47 l_tag := '^@' || ' ';
48 l_message := replace(l_message, FND_API.G_MISS_CHAR, l_tag);
49
50 l_tag := '^@' || ' ';
51 l_message := replace(l_message, '''', l_tag);
52
53
54 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
55
56 RETURN l_message;
57 END REPLACE_TAG;
58
59
60 /**
61 Private Function to return queue name based on server_id and request_type
62
63 */
64
65 FUNCTION GET_QUEUE_NAME (
66 p_request_type IN VARCHAR2,
67 p_server_id IN NUMBER
68 )
69 RETURN VARCHAR2
70 IS
71 l_queue_name VARCHAR2(30);
72 l_api_name CONSTANT VARCHAR2(30) := 'GET_QUEUE_NAME';
73 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
74
75 BEGIN
76 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
77
78 SELECT DECODE(p_request_type,'M', MASS_REQUEST_Q, 'B' , BATCH_REQUEST_Q, 'MP', MASS_PAUSE_Q, BATCH_PAUSE_Q)
79 INTO l_queue_name
80 FROM JTF_FM_SERVICE_ALL
81 WHERE SERVer_ID = p_server_id;
82
83 JTF_FM_UTL_V.PRINT_MESSAGE('END function GET_QUEU_NAME', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_QUEUE_NAME');
84
85 RETURN l_queue_name;
86
87 EXCEPTION
88 WHEN NO_DATA_FOUND
89 THEN
90 --l_Error_Msg := 'Could not find queue_names in the database';
91 JTF_FM_UTL_V.Handle_ERROR('JTF_FM_API_QUEUE_NOTFOUND',to_char(p_server_id));
92
93 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
94
95 END GET_QUEUE_NAME;
96
97 FUNCTION GET_FILE_NAME (
98 p_file_id IN NUMBER
99 )
100 RETURN VARCHAR2
101 IS
102 l_file_name VARCHAR2(256);
103 l_api_name CONSTANT VARCHAR2(30) := 'GET_FILE_NAME';
104 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
105
106 BEGIN
107 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name , JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
108 JTF_FM_UTL_V.PRINT_MESSAGE('File Id' || p_file_id, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
109 SELECT FILE_NAME into l_file_name from fnd_lobs where file_id = p_file_id and LANGUAGE = USERENV('LANG') ;
110
111 JTF_FM_UTL_V.PRINT_MESSAGE('END function ', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_QUEUE_NAME');
112
113 RETURN l_file_name;
114
115 EXCEPTION
116 WHEN NO_DATA_FOUND
117 THEN
118 --l_Error_Msg := 'Could not find queue_names in the database';
119 JTF_FM_UTL_V.Handle_ERROR('JTF_FM_API_FILENAME_NOTFOUND',to_char(p_file_id));
120
121 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
122
123 END GET_FILE_NAME;
124
125
126
127 /***
128 PROCEDURE To SWAP QUEUES
129
130 */
131 PROCEDURE SWAP_QUEUES
132 ( p_dequeue_name IN VARCHAR2,
133 p_in_msg IN RAW,
134 p_enqueue_name IN VARCHAR2,
135 x_new_msg_handle OUT NOCOPY RAW)
136 IS
137
138 l_dequeue_options dbms_aq.dequeue_options_t;
139 l_enqueue_options dbms_aq.enqueue_options_t;
140 l_message_properties dbms_aq.message_properties_t;
141 l_message RAW(32767);
142 l_in_msg RAW(16) := p_in_msg;
143 l_api_name CONSTANT VARCHAR2(30) := 'SWAP_QUEUES';
144 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
145
146 BEGIN
147 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
148
149 --default the queue values
150
151 l_dequeue_options.wait := dbms_aq.no_wait;
152 l_dequeue_options.navigation := dbms_aq.first_message;
153 l_dequeue_options.msgid := p_in_msg;
154 l_dequeue_options.dequeue_mode := DBMS_AQ.REMOVE;
155
156
157 dbms_aq.dequeue(queue_name => p_dequeue_name, dequeue_options =>
158 l_dequeue_options, message_properties => l_message_properties,payload => l_message,
159 MSGID => l_in_msg);
160
161
162 -- Enqueue the message into the pause queue
163 dbms_aq.enqueue(queue_name => p_enqueue_name, enqueue_options => l_enqueue_options,
164 message_properties => l_message_properties,
165 payload => l_message, msgid => x_new_msg_handle);
166
167 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
168
169 END SWAP_QUEUES;
170 /**
171 Procedure to update JTF_FM_REQUESTS_AQ table.
172 */
173
174 PROCEDURE UPDATE_RESUBMITTED
175 (
176 p_parent_req_id IN NUMBER,
177 p_job IN NUMBER,
178 p_request_id IN VARCHAR2
179 )
180 IS
181
182 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_RESUBMITTED';
183 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
184
185 BEGIN
186 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
187
188 INSERT INTO JTF_FM_RESUBMITTED (
189 PARENT_REQ_ID, JOB_ID, REQUEST_ID,
190 CREATED_BY, CREATION_DATE, LAST_UPDATED_BY,
191 LAST_UPDATE_DATE, LAST_UPDATE_LOGIN)
192 VALUES (p_parent_req_id ,p_job ,p_request_id ,
193 FND_GLOBAL.USER_ID,SYSDATE,FND_GLOBAL.USER_ID,
194 SYSDATE, FND_GLOBAL.LOGIN_ID);
195
196 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.UPDATE_REQUESTS_AQ');
197
198 END UPDATE_RESUBMITTED;
199
200
201 ------------------------------------------------------------
202 --Determines which route the request has taken for its processing.
203 --The NEWROUTE/OLDROUTE
204 ----------------------------------------------------------------
205 PROCEDURE Determine_Request_Path --anchaudh added
206 (
207 x_return_status OUT NOCOPY VARCHAR2,
208 x_msg_count OUT NOCOPY NUMBER,
209 x_msg_data OUT NOCOPY VARCHAR2,
210 x_determined_path OUT NOCOPY VARCHAR2,
211 p_request_id IN NUMBER
212 )
213 IS
214
215 l_api_name CONSTANT VARCHAR2(30) := 'Determine_Request_Path';
216 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
217
218 CURSOR crequest_path IS
219 SELECT decode(count(1),0,'N', 'Y','Y')
220 FROM JTF_FM_INT_REQUEST_HEADER
221 WHERE request_id = p_request_id;
222 BEGIN
223
224 OPEN crequest_path;
225 FETCH crequest_path INTO x_determined_path;
226 close crequest_path;
227 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
228 THEN
229 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
230 FND_MESSAGE.Set_Token('ARG1', l_full_name);
231 FND_MSG_PUB.Add;
232 END IF;
233 -- Debug Message
234 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
235 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
236 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
237 FND_MSG_PUB.Add;
238 END IF;
239 --Standard call to get message count and if count=1, get the message
240 FND_MSG_PUB.Count_And_Get (
241 p_encoded => FND_API.g_false,
242 p_count => x_msg_count,
243 p_data => x_msg_data
244 );
245
246 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
247 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_CANCEL_SUCCESS');
248 FND_MSG_PUB.Add;
249 END IF;
250 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
251 EXCEPTION
252 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
253 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
254 --JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
255 -- Standard call to get message count and if count=1, get the message
256 FND_MSG_PUB.Count_And_Get (
257 p_encoded => FND_API.g_false,
258 p_count => x_msg_count,
259 p_data => x_msg_data
260 );
261 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
262 WHEN FND_API.G_EXC_ERROR THEN
263 x_return_status := FND_API.G_RET_STS_ERROR;
264 --JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
265 -- Standard call to get message count and if count=1, get the message
266 FND_MSG_PUB.Count_And_Get (
267 p_encoded => FND_API.g_false,
268 p_count => x_msg_count,
269 p_data => x_msg_data
270 );
271 JTF_FM_UTL_V.PRINT_MESSAGE('x_message: '||x_msg_data,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
272 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
273 WHEN OTHERS THEN
274 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
275 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
276 IF FND_MSG_PUB.Check_Msg_Level
277 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
278 THEN
279 FND_MSG_PUB.Add_Exc_Msg
280 (G_PKG_NAME, l_api_name);
281 END IF;
282 -- Standard call to get message count and if count=1, get the message
283 FND_MSG_PUB.Count_And_Get (
284 p_encoded => FND_API.g_false,
285 p_count => x_msg_count,
286 p_data => x_msg_data
287 );
288 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
289 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
290 END Determine_Request_Path;
291
292
293 ---------------------------------------------------------------------
294 -- PROCEDURE
295 -- New_Cancel_Request
296 --
297 -- PURPOSE
298 -- Allows the agent/user to cancel a fulfillment that is already in the system.
299 --
300 -- PARAMETERS
301 -- p_request_id: System generated fulfillment request id - from the previously
302 -- created request
303 --
304 -- NOTES
305 --
306 ---------------------------------------------------------------------
307 PROCEDURE New_Cancel_Request --anchaudh added
308 (
309 p_api_version IN NUMBER,
310 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
311 p_commit IN VARCHAR2 := FND_API.G_FALSE,
312 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
313 x_return_status OUT NOCOPY VARCHAR2,
314 x_msg_count OUT NOCOPY NUMBER,
315 x_msg_data OUT NOCOPY VARCHAR2,
316 p_request_id IN NUMBER,
317 p_submit_dt_tm IN DATE := FND_API.G_MISS_DATE
318 )
319 IS
320
321 l_api_version CONSTANT NUMBER := 1.0;
322 l_Error_Msg VARCHAR2(2000);
323 l_api_name CONSTANT VARCHAR2(30) := 'New_Cancel_Request';
324 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
325
326 l_return_status varchar2(1);
327 l_msg_count NUMBER;
328 l_msg_data VARCHAR2(2000);
329 BEGIN
330 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
331 -- Standard begin of API savepoint
332 SAVEPOINT new_Cancel;
333
334 IF NOT FND_API.Compatible_API_Call (
335 l_api_version,
336 p_api_version,
337 l_api_name,
338 G_PKG_NAME)
339 THEN
340 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
341 END IF;
342
343 --Initialize message list if p_init_msg_list is TRUE.
344 IF FND_API.To_Boolean (p_init_msg_list) THEN
345 FND_MSG_PUB.initialize;
346 END IF;
347
348 -- Debug Message
349 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
350 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
351 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
352 FND_MSG_PUB.Add;
353 END IF;
354
355 -- Initialize API return status to success
356 x_return_status := FND_API.G_RET_STS_SUCCESS;
357 Cancel_Request(
358 p_api_version => 1.0,
359 p_init_msg_list => p_init_msg_list ,
360 p_commit => p_commit,
361 p_validation_level => p_validation_level,
362 x_return_status => l_return_status,
363 x_msg_count => l_msg_count,
364 x_msg_data => l_msg_data,
365 p_request_id => p_request_id,
366 p_submit_dt_tm => p_submit_dt_tm
367 ) ;
368
369
370 update JTF_FM_INT_REQUEST_HEADER
371 set request_status = 'CANCELLED'
372 where REQUEST_ID = p_request_id ;
373 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.UPDATE_REQUESTS_AQ');
374
375 -- Success message
376 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
377 THEN
378 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
379 FND_MESSAGE.Set_Token('ARG1', l_full_name);
380 FND_MSG_PUB.Add;
381 END IF;
382 --Standard check of commit
383 IF FND_API.To_Boolean ( p_commit ) THEN
384 COMMIT WORK;
385 END IF;
386 -- Debug Message
387 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
388 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
389 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
390 FND_MSG_PUB.Add;
391 END IF;
392 --Standard call to get message count and if count=1, get the message
393 FND_MSG_PUB.Count_And_Get (
394 p_encoded => FND_API.g_false,
395 p_count => x_msg_count,
396 p_data => x_msg_data
397 );
398
399 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
400 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_CANCEL_SUCCESS');
401 FND_MSG_PUB.Add;
402 END IF;
403 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
404 EXCEPTION
405 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
406 ROLLBACK TO new_cancel;
407 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
408 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
409 -- Standard call to get message count and if count=1, get the message
410 FND_MSG_PUB.Count_And_Get (
411 p_encoded => FND_API.g_false,
412 p_count => x_msg_count,
413 p_data => x_msg_data
414 );
415 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
416 WHEN FND_API.G_EXC_ERROR THEN
417 ROLLBACK TO new_cancel;
418 x_return_status := FND_API.G_RET_STS_ERROR;
419 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
420 -- Standard call to get message count and if count=1, get the message
421 FND_MSG_PUB.Count_And_Get (
422 p_encoded => FND_API.g_false,
423 p_count => x_msg_count,
424 p_data => x_msg_data
425 );
426 JTF_FM_UTL_V.PRINT_MESSAGE('x_message: '||x_msg_data,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
427 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
428 WHEN OTHERS THEN
429 ROLLBACK TO new_cancel;
430 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
431 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
432 IF FND_MSG_PUB.Check_Msg_Level
433 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
434 THEN
435 FND_MSG_PUB.Add_Exc_Msg
436 (G_PKG_NAME, l_api_name);
437 END IF;
438 -- Standard call to get message count and if count=1, get the message
439 FND_MSG_PUB.Count_And_Get (
440 p_encoded => FND_API.g_false,
441 p_count => x_msg_count,
442 p_data => x_msg_data
443 );
444 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
445 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
446 END New_Cancel_Request;
447
448
449 ---------------------------------------------------------------------------
450 --What parameters does it need?
451 -- 1. REQUEST_ID
452 -- 2. WHAT_TO_DO : EITHER PAUSE OR RESUME
453 --
454 --What does it do?
455 --
456 --This should be available to public.
457 -------------------------------------------------------------
458 PROCEDURE NEW_PAUSE_RESUME_REQUEST --anchaudh added
459 (
460 p_api_version IN NUMBER,
461 p_init_msg_list IN VARCHAR2,
462 p_commit IN VARCHAR2,
463 p_validation_level IN NUMBER,
464 x_return_status OUT NOCOPY VARCHAR2,
465 x_msg_count OUT NOCOPY NUMBER,
466 x_msg_data OUT NOCOPY VARCHAR2,
467 p_request_id IN NUMBER,
468 p_what_to_do IN VARCHAR
469 )
470 IS
471
472 l_api_name CONSTANT VARCHAR2(30) := 'NEW_PAUSE_RESUME_REQUEST';
473 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
474
475 BEGIN
476
477 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.UPDATE_REQUESTS_AQ');
478
479 END NEW_PAUSE_RESUME_REQUEST;
480
481 /*****************************************************
482 -- Procedure To insert Query into FND_LOBS,
483 -- if file_id is invalid
484
485 ******************************************************/
486 PROCEDURE INSERT_QUERY
487 (
488 p_query_id IN NUMBER,
489 x_query_file_id OUT NOCOPY NUMBER
490 )
491 IS
492 cursor query_c is
493 select query_name, query_id, query_string
494 from jtf_fm_queries_all
495 where query_id = p_query_id;
496
497 l_Error_Msg VARCHAR2(240);
498 l_amount INTEGER;
499 l_query VARCHAR2(4000);
500 l_query_raw RAW(4000);
501 l_file_id NUMBER;
502 l_file_name VARCHAR2(256);
503 l_file_content_type VARCHAR2(256) := 'text/html';
504 l_file_data BLOB;
505 l_upload_date DATE := sysdate;
506 l_file_format VARCHAR2(10) := 'text';
507 l_query_id NUMBER;
508 l_query_name VARCHAR2(240);
509 l_query_string VARCHAR2(4000);
510
511 l_api_name CONSTANT VARCHAR2(30) := 'INSERT_QUERY';
512 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
513
514 BEGIN
515 -- Standard savepoint
516 SAVEPOINT query_status;
517
518
519 OPEN query_c;
520 FETCH query_c INTO l_query_name, l_query_id, l_query_string;
521 JTF_FM_UTL_V.PRINT_MESSAGE('Fetching file_id..',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
522
523
524
525 IF (query_c%NOTFOUND) THEN
526 JTF_FM_UTL_V.PRINT_MESSAGE('Invalid Content_id',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
527
528 CLOSE query_c;
529 l_Error_Msg := 'Could not find content in the database';
530 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_QUERY_NOT_FOUND',p_query_id);
531 RAISE FND_API.G_EXC_ERROR;
532 ELSE
533
534 select fnd_lobs_s.nextval into x_query_file_id from dual;
535 JTF_FM_UTL_V.PRINT_MESSAGE('GOT FILE ID SEQ from FND_LOBS '|| x_query_file_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
536 JTF_FM_UTL_V.PRINT_MESSAGE('Query Name is :'|| l_query_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
537 --JTF_FM_UTL_V.PRINT_MESSAGE('Query String is :'|| l_query_string,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
538 JTF_FM_UTL_V.PRINT_MESSAGE('Query ID is :'|| l_query_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
539
540 --dbms_output.put_line('File Id is :' || to_char(l_file_id));
541 -- dbms_output.put_line('Inserting empty_blob() row');
542 INSERT INTO fnd_lobs (
543 FILE_ID,
544 FILE_NAME,
545 FILE_CONTENT_TYPE,
546 FILE_DATA,
547 UPLOAD_DATE,
548 FILE_FORMAT
549 )
550 VALUES
551 (
552 x_query_file_id,
553 l_query_name,
554 l_file_content_type,
555 empty_blob(),
556 l_upload_date,
557 l_file_format
558 );
559
560 l_query := trim(l_query_string) || ' ';
561 --dbms_output.put_line('QUERY LENGTH: ' || to_char(length(l_query)));
562 --dbms_output.put_line('QUERY: ' || substr(l_query,1,200));
563
564 --dbms_output.put_line('casting to raw...');
565 l_query_raw := UTL_RAW.CAST_TO_RAW(l_query);
566
567 JTF_FM_UTL_V.PRINT_MESSAGE('Query converted to RAW',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
568
569 --dbms_output.put_line('Length of l_query...' || to_char(length(l_query)));
570
571 select file_data into l_file_data
572 from fnd_lobs
573 where file_id = x_query_file_id
574 for update;
575
576 l_amount := length(l_query ) ;
577 DBMS_LOB.OPEN(l_file_data,DBMS_LOB.LOB_READWRITE);
578 DBMS_LOB.WRITE(l_file_data, l_amount, 1, l_query_raw);
579 DBMS_LOB.CLOSE(l_file_data);
580
581 JTF_FM_UTL_V.PRINT_MESSAGE('Uploaded Query into FND_LOBS ',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
582
583 update jtf_fm_queries_all set file_id = x_query_file_id
584 where query_id = p_query_id;
585
586 COMMIT;
587
588 JTF_FM_UTL_V.PRINT_MESSAGE('UPDATED Query Tables with FILEID '|| x_query_file_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
589
590
591 END IF; --IF (query_c%NOTFOUND) THEN
592
593
594 exception
595 when others then
596 ROLLBACK TO query_status;
597 l_Error_Msg := 'Could not find Query Details in JTF_FM_QUERIES_ALL table';
598 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_QUERY_NOT_FOUND',p_query_id);
599 RAISE FND_API.G_EXC_ERROR;
600
601 END INSERT_QUERY;
602
603 /*****************************************************
604 -- Procedure To insert Query into FND_LOBS,
605 -- if file_id is invalid
606
607 ******************************************************/
608 PROCEDURE CHECK_AND_INSERT_QUERY
609 (
610 p_query_id IN NUMBER,
611 p_query_file_id IN NUMBER,
612 x_query_file_id OUT NOCOPY NUMBER
613 )
614 IS
615 cursor query_c is
616 select query_name, query_id, query_string
617 from jtf_fm_queries_all
618 where query_id = p_query_id;
619
620 l_Error_Msg VARCHAR2(2000);
621 l_api_name CONSTANT VARCHAR2(30) := 'CHECK_AND_INSERT_QUERY';
622 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
623
624 BEGIN
625 -- Standard savepoint
626 SAVEPOINT query_status;
627 BEGIN
628 Select file_id into x_query_file_id from fnd_lobs where file_id = p_query_file_id;
629 JTF_FM_UTL_V.PRINT_MESSAGE('File PRESENT Id in FND_LOBS ',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
630
631 EXCEPTION
632 WHEN NO_DATA_FOUND THEN
633 JTF_FM_UTL_V.PRINT_MESSAGE('No File Id in FND_LOBS',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
634
635 INSERT_QUERY(p_query_id, x_query_file_id);
636 END;
637
638 exception
639 when others then
640 ROLLBACK TO query_status;
641 l_Error_Msg := 'Could not find Query Details in JTF_FM_QUERIES_ALL table';
642 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_QUERY_NOT_FOUND',p_query_id);
643 RAISE FND_API.G_EXC_ERROR;
644
645 END CHECK_AND_INSERT_QUERY;
646
647 /**
648 Procedure to INSERT JTF_FM_REQUEST_CONTENTS table.
649 */
650
651 PROCEDURE INSERT_REQ_CONTENTS
652 (
653 p_request_id IN NUMBER,
654 x_request_id IN NUMBER
655 )
656 IS
657
658 l_api_name CONSTANT VARCHAR2(30) := 'INSERT_REQ_CONTENTS';
659 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
660 l_content_id NUMBER;
661 l_content_number NUMBER;
662 l_content_name VARCHAR2(100);
663 l_content_type VARCHAR2(20);
664 l_document_type VARCHAR2(50);
665 l_body VARCHAR2(1);
666 l_user_notes VARCHAR2(2000);
667 l_quantity NUMBER;
668 l_media_type VARCHAR2(3);
669 l_content_source VARCHAR2(3);
670 l_file_id NUMBER;
671
672 l_error_msg VARCHAR2(2000);
673
674 CURSOR CCONT IS
675 SELECT CONTENT_ID, CONTENT_NUMBER,
676 CONTENT_NAME, CONTENT_TYPE, DOCUMENT_TYPE,
677 BODY, USER_NOTES, QUANTITY,MEDIA_TYPE, CONTENT_SOURCE, FND_FILE_ID
678 FROM JTF_FM_REQUEST_CONTENTS
679 where request_id = p_request_id;
680
681 BEGIN
682 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
683
684 OPEN CCONT;
685 IF(CCONT%NOTFOUND)
686 THEN
687 CLOSE CCONT;
688 l_Error_Msg := 'Could not find REQUEST DATA in the database';
689 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND',to_char(p_request_id));
690 END IF; -- End IF(CMASSMSG%NOTFOUND)
691 LOOP -- looping through all the batches queued and removing them
692 FETCH CCONT INTO l_content_id,l_content_number,
693 l_content_name,l_content_type,l_document_type,l_body,
694 l_user_notes,l_quantity,l_media_type,l_content_source,l_file_id;
695 EXIT WHEN CCONT%NOTFOUND;
696 INSERT INTO JTF_FM_REQUEST_CONTENTS (
697 REQUEST_ID, CONTENT_ID, CONTENT_NUMBER,
698 CONTENT_NAME, CONTENT_TYPE, DOCUMENT_TYPE,
699 BODY, USER_NOTES, QUANTITY,
700 CREATED_BY, CREATION_DATE,
701 LAST_UPDATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_LOGIN,
702 MEDIA_TYPE, CONTENT_SOURCE, FND_FILE_ID)
703 VALUES ( x_request_id, l_content_id,l_content_number ,
704 l_content_name,l_content_type ,l_document_type ,
705 l_body,l_user_notes , l_quantity,
706 FND_GLOBAL.USER_ID,SYSDATE,
707 FND_GLOBAL.USER_ID,SYSDATE, FND_GLOBAL.LOGIN_ID,
708 l_media_type,l_content_source ,l_file_id );
709
710 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
711
712 END LOOP;
713
714 CLOSE CCONT;
715
716 COMMIT WORK;
717
718 END INSERT_REQ_CONTENTS;
719
720 /**
721 Procedure to update JTF_FM_REQUESTS_AQ table.
722 */
723
724 PROCEDURE UPDATE_REQUESTS_AQ
725 (
726 p_new_msg_handle IN RAW,
727 p_request_id IN NUMBER,
728 p_queue_type IN VARCHAR2,
729 p_old_msg_handle In RAW
730 )
731 IS
732
733 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_REQUESTS_AQ';
734 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
735
736 BEGIN
737 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
738
739 --UPDATE JTF_FM_REQUESTS_AQ with the new information
740 UPDATE JTF_FM_REQUESTS_AQ
741 SET QUEUE_TYPE = p_queue_type ,
742 AQ_MSG_ID = p_new_msg_handle
743 WHERE REQUEST_ID = p_request_id
744 AND AQ_MSG_ID = p_old_msg_handle;
745 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.UPDATE_REQUESTS_AQ');
746
747 END UPDATE_REQUESTS_AQ;
748
749 /**
750 Procedure to update JTF_FM_STATUS and JTF_FM_REQUEST_HISTORY table.
751 */
752
753 PROCEDURE UPDATE_STATUS_HISTORY
754 (
755 p_request_id IN NUMBER,
756 p_outcome_code IN VARCHAR2,
757 p_msg_id IN RAW
758 )
759 IS
760 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_STATUS_HISTORY';
761 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
762
763 BEGIN
764
765 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
766
767 UPDATE JTF_FM_STATUS_ALL
768 SET
769 REQUEST_STATUS = p_outcome_code
770 WHERE
771 request_id = p_request_id;
772
773 UPDATE JTF_FM_REQUEST_HISTORY_ALL
774 SET
775 outcome_code = p_outcome_code,
776 message_id = p_msg_id
777 WHERE
778 hist_req_id = p_request_id;
779
780 JTF_FM_UTL_V.PRINT_MESSAGE('Begin procedure UPDATE_STATUS_HISTORY', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.UPDATE_STATUS_HISTORY');
781
782
783 END UPDATE_STATUS_HISTORY;
784
785 PROCEDURE INSERT_REQUEST_CONTENTS(
786 p_request_id IN NUMBER,
787 p_content_id IN NUMBER,
788 p_content_number IN NUMBER,
789 p_content_name IN VARCHAR2,
790 p_content_type IN VARCHAR2,
791 p_document_type IN VARCHAR2,
792 p_body IN VARCHAR2,
793 p_user_note IN VARCHAR2,
794 p_quantity IN NUMBER,
795 p_media_type IN VARCHAR2,
796 p_content_source IN VARCHAR2,
797 p_file_id IN NUMBER
798 )
799 IS
800 l_api_name CONSTANT VARCHAR2(30) := 'INSERT_REQUEST_CONTENTS';
801 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
802
803 BEGIN
804 JTF_FM_UTL_V.PRINT_MESSAGE('Begin PROCEDURE INSERT_REQUEST_CONTENTS', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
805
806 INSERT INTO JTF_FM_REQUEST_CONTENTS (
807 REQUEST_ID,
808 CONTENT_ID,
809 CONTENT_NUMBER,
810 CONTENT_NAME,
811 CONTENT_TYPE,
812 DOCUMENT_TYPE,
813 BODY,
814 USER_NOTES,
815 QUANTITY,
816 CREATED_BY,
817 CREATION_DATE,
818 LAST_UPDATED_BY,
819 LAST_UPDATE_DATE,
820 LAST_UPDATE_LOGIN,
821 MEDIA_TYPE,
822 CONTENT_SOURCE,
823 FND_FILE_ID)
824 VALUES (
825 p_request_id ,
826 p_content_id,
827 p_content_number,
828 p_content_name,
829 p_content_type,
830 p_document_type,
831 p_body,
832 p_user_note,
833 p_quantity ,
834 FND_GLOBAL.USER_ID ,
835 SYSDATE ,
836 FND_GLOBAL.USER_ID ,
837 SYSDATE,
838 FND_GLOBAL.LOGIN_ID ,
839 p_media_type ,
840 p_content_source ,
841 p_file_id );
842
843 JTF_FM_UTL_V.PRINT_MESSAGE('End PROCEDURE INSERT_REQUEST_CONTENTS', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
844
845 EXCEPTION
846 WHEN OTHERS
847 THEN
848 JTF_FM_UTL_V.PRINT_MESSAGE('UNEXPECTED ERROR IN PROCEDURE INSERT_REQUEST_CONTENTS', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
849
850 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
851
852 END INSERT_REQUEST_CONTENTS;
853
854
855 -----------------------------------------------------------
856 -- Following Functions and utilities to support RESUBMITS
857
858
859 -----------------------------------------------------------
860 FUNCTION GET_CONTENT_NUMBER(p_request_id IN NUMBER,
861 p_file_id IN NUMBER)
862 RETURN NUMBER
863 IS
864 l_content_number NUMBER;
865
866 BEGIN
867 SELECT CONTENT_NUMBER into l_content_number FROM JTF_FM_REQUEST_CONTENTS
868 where REQUEST_ID = p_request_id and fnd_file_id = p_file_id;
869
870 RETURN l_content_number;
871
872 END GET_CONTENT_NUMBER;
873
874 -- prints the attributes of each element in a document
875 PROCEDURE Modify_XML(
876 doc IN OUT NOCOPY xmldom.DOMDocument,
877 p_request_id IN NUMBER,
878 remove_query IN Boolean)
879 is
880 nl xmldom.DOMNodeList;
881 len1 number;
882 len2 number;
883 n xmldom.DOMNode;
884 e xmldom.DOMElement;
885 nnm xmldom.DOMNamedNodeMap;
886 attrname varchar2(100);
887 attrval varchar2(100);
888 childNode xmldom.DOMNode;
889 child varchar2(250);
890 bind_present boolean;
891 headers_present boolean;
892 is_content_present boolean := false;
893 file_id NUMBER;
894 l_content_no NUMBER;
895 queryId VARCHAR2(1000);
896 contentNo VARCHAR2(1000);
897
898
899 begin
900
901 -- get all elements
902 nl := xmldom.getElementsByTagName(doc, 'file');
903 len1 := xmldom.getLength(nl);
904
905 -- loop through elements
906 for j in 0..len1-1 loop
907 queryId := null; -- reset the query_id
908 n := xmldom.item(nl, j);
909 e := xmldom.makeElement(n);
910
911 queryId := xmldom.getAttribute(e,'query_id');
912 file_id := xmldom.getAttribute(e,'id');
913 IF queryId IS NOT NULL THEN
914 xmldom.setattribute(e, 'body', 'merge');
915 IF remove_query THEN
916 xmldom.removeattribute(e,'query_id');
917 END IF;
918 END IF;
919 contentNo := xmldom.getattribute(e,'content_no');
920 IF contentNo is NULL THEN
921 l_content_no := GET_CONTENT_NUMBER(p_request_id, file_id);
922 xmldom.setAttribute(e,'content_no', l_content_no);
923 END IF;
924 end loop;
925 end Modify_XML;
926
927
928 -- prints the attributes of each element in a document
929 procedure BUILD_BIND(
930 doc IN xmldom.DOMDocument,
931 l_xml OUT NOCOPY LONG) is
932 nl xmldom.DOMNodeList;
933 len1 number;
934 len2 number;
935 n xmldom.DOMNode;
936 e xmldom.DOMElement;
937 nnm xmldom.DOMNamedNodeMap;
938 attrname varchar2(100);
939 attrval varchar2(100);
940
941 begin
942
943 -- get all elements
944 nl := xmldom.getElementsByTagName(doc, '*');
945 len1 := xmldom.getLength(nl);
946
947 l_xml := '<bind><record>';
948
949 -- loop through elements
950 for j in 0..len1-1 loop
951 n := xmldom.item(nl, j);
952 e := xmldom.makeElement(n);
953 --dbms_output.put_line(xmldom.getTagName(e) || ':');
954
955 IF (xmldom.getTagName(e) = 'var' ) THEN
956
957 -- get all attributes of element
958 nnm := xmldom.getAttributes(n);
959
960 if (xmldom.isNull(nnm) = FALSE) then
961 len2 := xmldom.getLength(nnm);
962
963 -- loop through attributes
964 for i in 0..len2-1 loop
965 n := xmldom.item(nnm, i);
966 attrname := xmldom.getNodeName(n);
967 attrval := xmldom.getNodeValue(n);
968 IF attrname = 'name' THEN
969 l_xml := l_xml || '<bind_var bind_type = "VARCHAR2" bind_object = "' || attrval;
970 END IF;
971 IF attrname = 'value' THEN
972 l_xml := l_xml || '">' || attrval || '</bind_var>';
973 END IF;
974
975 end loop;
976 --dbms_output.put_line('');
977 end if;
978
979 END IF; -- End IF (xmldom.getTagName(e) = 'name' or xmldom.getTagName(e) = 'value')
980 end loop;
981 l_xml := l_xml || '</record></bind>';
982
983 end BUILD_BIND;
984
985
986 PROCEDURE GET_BIND_INFO( p_request_id IN NUMBER
987 , p_job_id IN NUMBER
988 , x_bind_info OUT NOCOPY LONG
989 ) IS
990 l_bind BLOB;
991 l_amount NUMBER;
992 l_buffer RAW(32767);
993 l_api_name CONSTANT VARCHAR2(30) := 'GET_BIND_INFO';
994 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
995 l_parser xmlparser.parser;
996 l_doc xmldom.domdocument;
997 l_header_row jtf_fm_int_request_header%ROWTYPE;
998 l_processed_row jtf_fm_processed%ROWTYPE;
999 l_bind_xml LONG := '';
1000 l_bind_open_tag_begin VARCHAR2(32767) := '<bind_var bind_type="VARCHAR2" bind_object="';
1001 l_bind_open_tag_end VARCHAR2(32767) := '">';
1002 l_bind_end_tag VARCHAR2(32767) := '</bind_var>';
1003 l_bind_empty_tag VARCHAR2(32767) := '"/>';
1004 e_parameters_read EXCEPTION;
1005 BEGIN
1006 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
1007
1008 BEGIN
1009 --select merge_xml into l_bind from JTF_FM_PROCESSED where request_id = p_request_id and job = p_job_id;
1010
1011 --Getting record from jtf_fm_int_request_header table based upon request_id
1012 SELECT *
1013 INTO l_header_row
1014 FROM jtf_fm_int_request_header
1015 WHERE request_id = p_request_id
1016 ;
1017
1018 --Getting record from jtf_fm_processed table based upon request_id and job id
1019 SELECT *
1020 INTO l_processed_row
1021 FROM jtf_fm_processed
1022 WHERE request_id = p_request_id
1023 AND job = p_job_id
1024 ;
1025
1026
1027 --Appending the beginning elements
1028 l_bind_xml := '<bind><record>';
1029
1030
1031 --Looping thru the parameter columns and the col columns. Exiting when the no_of_parameters is reached.
1032 BEGIN
1033 IF (l_header_row.no_of_parameters >= 1 )
1034 THEN
1035 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter1;
1036 IF (l_processed_row.col1 IS NOT NULL)
1037 THEN
1038 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col1 || l_bind_end_tag;
1039 ELSE
1040 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1041 END IF;
1042 ELSE
1043 RAISE e_parameters_read;
1044 END IF;
1045
1046 IF (l_header_row.no_of_parameters >= 2 )
1047 THEN
1048 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter2;
1049 IF (l_processed_row.col2 IS NOT NULL)
1050 THEN
1051 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col2 || l_bind_end_tag;
1052 ELSE
1053 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1054 END IF;
1055 ELSE
1056 RAISE e_parameters_read;
1057 END IF;
1058
1059 IF (l_header_row.no_of_parameters >= 3 )
1060 THEN
1061 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter3;
1062 IF (l_processed_row.col3 IS NOT NULL)
1063 THEN
1064 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col3 || l_bind_end_tag;
1065 ELSE
1066 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1067 END IF;
1068 ELSE
1069 RAISE e_parameters_read;
1070 END IF;
1071
1072 IF (l_header_row.no_of_parameters >= 4 )
1073 THEN
1074 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter4;
1075 IF (l_processed_row.col4 IS NOT NULL)
1076 THEN
1077 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col4 || l_bind_end_tag;
1078 ELSE
1079 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1080 END IF;
1081 ELSE
1082 RAISE e_parameters_read;
1083 END IF;
1084
1085 IF (l_header_row.no_of_parameters >= 5 )
1086 THEN
1087 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter5;
1088 IF (l_processed_row.col5 IS NOT NULL)
1089 THEN
1090 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col5 || l_bind_end_tag;
1091 ELSE
1092 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1093 END IF;
1094 ELSE
1095 RAISE e_parameters_read;
1096 END IF;
1097
1098 IF (l_header_row.no_of_parameters >= 6 )
1099 THEN
1100 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter6;
1101 IF (l_processed_row.col6 IS NOT NULL)
1102 THEN
1103 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col6 || l_bind_end_tag;
1104 ELSE
1105 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1106 END IF;
1107 ELSE
1108 RAISE e_parameters_read;
1109 END IF;
1110
1111 IF (l_header_row.no_of_parameters >= 7 )
1112 THEN
1113 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter7;
1114 IF (l_processed_row.col7 IS NOT NULL)
1115 THEN
1116 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col7 || l_bind_end_tag;
1117 ELSE
1118 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1119 END IF;
1120 ELSE
1121 RAISE e_parameters_read;
1122 END IF;
1123
1124 IF (l_header_row.no_of_parameters >= 8 )
1125 THEN
1126 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter8;
1127 IF (l_processed_row.col8 IS NOT NULL)
1128 THEN
1129 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col8 || l_bind_end_tag;
1130 ELSE
1131 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1132 END IF;
1133 ELSE
1134 RAISE e_parameters_read;
1135 END IF;
1136
1137 IF (l_header_row.no_of_parameters >= 9 )
1138 THEN
1139 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter9;
1140 IF (l_processed_row.col9 IS NOT NULL)
1141 THEN
1142 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col9 || l_bind_end_tag;
1143 ELSE
1144 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1145 END IF;
1146 ELSE
1147 RAISE e_parameters_read;
1148 END IF;
1149
1150 IF (l_header_row.no_of_parameters >= 10 )
1151 THEN
1152 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter10;
1153 IF (l_processed_row.col10 IS NOT NULL)
1154 THEN
1155 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col10 || l_bind_end_tag;
1156 ELSE
1157 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1158 END IF;
1159 ELSE
1160 RAISE e_parameters_read;
1161 END IF;
1162
1163 IF (l_header_row.no_of_parameters >= 11 )
1164 THEN
1165 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter11;
1166 IF (l_processed_row.col11 IS NOT NULL)
1167 THEN
1168 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col11 || l_bind_end_tag;
1169 ELSE
1170 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1171 END IF;
1172 ELSE
1173 RAISE e_parameters_read;
1174 END IF;
1175
1176 IF (l_header_row.no_of_parameters >= 12 )
1177 THEN
1178 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter12;
1179 IF (l_processed_row.col12 IS NOT NULL)
1180 THEN
1181 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col12 || l_bind_end_tag;
1182 ELSE
1183 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1184 END IF;
1185 ELSE
1186 RAISE e_parameters_read;
1187 END IF;
1188
1189 IF (l_header_row.no_of_parameters >= 13 )
1190 THEN
1191 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter13;
1192 IF (l_processed_row.col13 IS NOT NULL)
1193 THEN
1194 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col13 || l_bind_end_tag;
1195 ELSE
1196 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1197 END IF;
1198 ELSE
1199 RAISE e_parameters_read;
1200 END IF;
1201
1202 IF (l_header_row.no_of_parameters >= 14 )
1203 THEN
1204 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter14;
1205 IF (l_processed_row.col14 IS NOT NULL)
1206 THEN
1207 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col14 || l_bind_end_tag;
1208 ELSE
1209 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1210 END IF;
1211 ELSE
1212 RAISE e_parameters_read;
1213 END IF;
1214
1215 IF (l_header_row.no_of_parameters >= 15 )
1216 THEN
1217 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter15;
1218 IF (l_processed_row.col15 IS NOT NULL)
1219 THEN
1220 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col15 || l_bind_end_tag;
1221 ELSE
1222 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1223 END IF;
1224 ELSE
1225 RAISE e_parameters_read;
1226 END IF;
1227
1228 IF (l_header_row.no_of_parameters >= 16 )
1229 THEN
1230 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter16;
1231 IF (l_processed_row.col16 IS NOT NULL)
1232 THEN
1233 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col16 || l_bind_end_tag;
1234 ELSE
1235 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1236 END IF;
1237 ELSE
1238 RAISE e_parameters_read;
1239 END IF;
1240
1241 IF (l_header_row.no_of_parameters >= 17 )
1242 THEN
1243 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter17;
1244 IF (l_processed_row.col17 IS NOT NULL)
1245 THEN
1246 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col17 || l_bind_end_tag;
1247 ELSE
1248 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1249 END IF;
1250 ELSE
1251 RAISE e_parameters_read;
1252 END IF;
1253
1254 IF (l_header_row.no_of_parameters >= 18 )
1255 THEN
1256 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter18;
1257 IF (l_processed_row.col18 IS NOT NULL)
1258 THEN
1259 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col18 || l_bind_end_tag;
1260 ELSE
1261 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1262 END IF;
1263 ELSE
1264 RAISE e_parameters_read;
1265 END IF;
1266
1267 IF (l_header_row.no_of_parameters >= 19 )
1268 THEN
1269 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter19;
1270 IF (l_processed_row.col19 IS NOT NULL)
1271 THEN
1272 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col19 || l_bind_end_tag;
1273 ELSE
1274 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1275 END IF;
1276 ELSE
1277 RAISE e_parameters_read;
1278 END IF;
1279
1280 IF (l_header_row.no_of_parameters >= 20 )
1281 THEN
1282 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter20;
1283 IF (l_processed_row.col20 IS NOT NULL)
1284 THEN
1285 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col20 || l_bind_end_tag;
1286 ELSE
1287 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1288 END IF;
1289 ELSE
1290 RAISE e_parameters_read;
1291 END IF;
1292
1293 IF (l_header_row.no_of_parameters >= 21 )
1294 THEN
1295 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter21;
1296 IF (l_processed_row.col21 IS NOT NULL)
1297 THEN
1298 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col21 || l_bind_end_tag;
1299 ELSE
1300 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1301 END IF;
1302 ELSE
1303 RAISE e_parameters_read;
1304 END IF;
1305
1306 IF (l_header_row.no_of_parameters >= 22 )
1307 THEN
1308 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter22;
1309 IF (l_processed_row.col22 IS NOT NULL)
1310 THEN
1311 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col22 || l_bind_end_tag;
1312 ELSE
1313 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1314 END IF;
1315 ELSE
1316 RAISE e_parameters_read;
1317 END IF;
1318
1319 IF (l_header_row.no_of_parameters >= 23 )
1320 THEN
1321 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter23;
1322 IF (l_processed_row.col23 IS NOT NULL)
1323 THEN
1324 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col23 || l_bind_end_tag;
1325 ELSE
1326 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1327 END IF;
1328 ELSE
1329 RAISE e_parameters_read;
1330 END IF;
1331
1332 IF (l_header_row.no_of_parameters >= 24 )
1333 THEN
1334 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter24;
1335 IF (l_processed_row.col24 IS NOT NULL)
1336 THEN
1337 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col24 || l_bind_end_tag;
1338 ELSE
1339 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1340 END IF;
1341 ELSE
1342 RAISE e_parameters_read;
1343 END IF;
1344
1345 IF (l_header_row.no_of_parameters >= 25 )
1346 THEN
1347 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter25;
1348 IF (l_processed_row.col25 IS NOT NULL)
1349 THEN
1350 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col25 || l_bind_end_tag;
1351 ELSE
1352 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1353 END IF;
1354 ELSE
1355 RAISE e_parameters_read;
1356 END IF;
1357
1358 IF (l_header_row.no_of_parameters >= 26 )
1359 THEN
1360 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter26;
1361 IF (l_processed_row.col26 IS NOT NULL)
1362 THEN
1363 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col26 || l_bind_end_tag;
1364 ELSE
1365 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1366 END IF;
1367 ELSE
1368 RAISE e_parameters_read;
1369 END IF;
1370
1371 IF (l_header_row.no_of_parameters >= 27 )
1372 THEN
1373 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter27;
1374 IF (l_processed_row.col27 IS NOT NULL)
1375 THEN
1376 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col27 || l_bind_end_tag;
1377 ELSE
1378 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1379 END IF;
1380 ELSE
1381 RAISE e_parameters_read;
1382 END IF;
1383
1384 IF (l_header_row.no_of_parameters >= 28 )
1385 THEN
1386 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter28;
1387 IF (l_processed_row.col28 IS NOT NULL)
1388 THEN
1389 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col28 || l_bind_end_tag;
1390 ELSE
1391 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1392 END IF;
1393 ELSE
1394 RAISE e_parameters_read;
1395 END IF;
1396
1397 IF (l_header_row.no_of_parameters >= 29 )
1398 THEN
1399 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter29;
1400 IF (l_processed_row.col29 IS NOT NULL)
1401 THEN
1402 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col29 || l_bind_end_tag;
1403 ELSE
1404 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1405 END IF;
1406 ELSE
1407 RAISE e_parameters_read;
1408 END IF;
1409
1410 IF (l_header_row.no_of_parameters >= 30 )
1411 THEN
1412 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter30;
1413 IF (l_processed_row.col30 IS NOT NULL)
1414 THEN
1415 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col30 || l_bind_end_tag;
1416 ELSE
1417 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1418 END IF;
1419 ELSE
1420 RAISE e_parameters_read;
1421 END IF;
1422
1423 IF (l_header_row.no_of_parameters >= 31 )
1424 THEN
1425 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter31;
1426 IF (l_processed_row.col31 IS NOT NULL)
1427 THEN
1428 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col31 || l_bind_end_tag;
1429 ELSE
1430 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1431 END IF;
1432 ELSE
1433 RAISE e_parameters_read;
1434 END IF;
1435
1436 IF (l_header_row.no_of_parameters >= 32 )
1437 THEN
1438 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter32;
1439 IF (l_processed_row.col32 IS NOT NULL)
1440 THEN
1441 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col32 || l_bind_end_tag;
1442 ELSE
1443 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1444 END IF;
1445 ELSE
1446 RAISE e_parameters_read;
1447 END IF;
1448
1449 IF (l_header_row.no_of_parameters >= 33 )
1450 THEN
1451 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter33;
1452 IF (l_processed_row.col33 IS NOT NULL)
1453 THEN
1454 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col33 || l_bind_end_tag;
1455 ELSE
1456 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1457 END IF;
1458 ELSE
1459 RAISE e_parameters_read;
1460 END IF;
1461
1462 IF (l_header_row.no_of_parameters >= 34 )
1463 THEN
1464 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter34;
1465 IF (l_processed_row.col34 IS NOT NULL)
1466 THEN
1467 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col34 || l_bind_end_tag;
1468 ELSE
1469 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1470 END IF;
1471 ELSE
1472 RAISE e_parameters_read;
1473 END IF;
1474
1475 IF (l_header_row.no_of_parameters >= 35 )
1476 THEN
1477 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter35;
1478 IF (l_processed_row.col35 IS NOT NULL)
1479 THEN
1480 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col35 || l_bind_end_tag;
1481 ELSE
1482 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1483 END IF;
1484 ELSE
1485 RAISE e_parameters_read;
1486 END IF;
1487
1488 IF (l_header_row.no_of_parameters >= 36 )
1489 THEN
1490 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter36;
1491 IF (l_processed_row.col36 IS NOT NULL)
1492 THEN
1493 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col36 || l_bind_end_tag;
1494 ELSE
1495 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1496 END IF;
1497 ELSE
1498 RAISE e_parameters_read;
1499 END IF;
1500
1501 IF (l_header_row.no_of_parameters >= 37 )
1502 THEN
1503 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter37;
1504 IF (l_processed_row.col37 IS NOT NULL)
1505 THEN
1506 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col37 || l_bind_end_tag;
1507 ELSE
1508 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1509 END IF;
1510 ELSE
1511 RAISE e_parameters_read;
1512 END IF;
1513
1514 IF (l_header_row.no_of_parameters >= 38 )
1515 THEN
1516 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter38;
1517 IF (l_processed_row.col38 IS NOT NULL)
1518 THEN
1519 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col38 || l_bind_end_tag;
1520 ELSE
1521 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1522 END IF;
1523 ELSE
1524 RAISE e_parameters_read;
1525 END IF;
1526
1527 IF (l_header_row.no_of_parameters >= 39 )
1528 THEN
1529 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter39;
1530 IF (l_processed_row.col39 IS NOT NULL)
1531 THEN
1532 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col39 || l_bind_end_tag;
1533 ELSE
1534 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1535 END IF;
1536 ELSE
1537 RAISE e_parameters_read;
1538 END IF;
1539
1540 IF (l_header_row.no_of_parameters >= 40 )
1541 THEN
1542 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter40;
1543 IF (l_processed_row.col40 IS NOT NULL)
1544 THEN
1545 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col40 || l_bind_end_tag;
1546 ELSE
1547 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1548 END IF;
1549 ELSE
1550 RAISE e_parameters_read;
1551 END IF;
1552
1553 IF (l_header_row.no_of_parameters >= 41 )
1554 THEN
1555 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter41;
1556 IF (l_processed_row.col41 IS NOT NULL)
1557 THEN
1558 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col41 || l_bind_end_tag;
1559 ELSE
1560 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1561 END IF;
1562 ELSE
1563 RAISE e_parameters_read;
1564 END IF;
1565
1566 IF (l_header_row.no_of_parameters >= 42 )
1567 THEN
1568 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter42;
1569 IF (l_processed_row.col42 IS NOT NULL)
1570 THEN
1571 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col42 || l_bind_end_tag;
1572 ELSE
1573 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1574 END IF;
1575 ELSE
1576 RAISE e_parameters_read;
1577 END IF;
1578
1579 IF (l_header_row.no_of_parameters >= 43 )
1580 THEN
1581 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter43;
1582 IF (l_processed_row.col43 IS NOT NULL)
1583 THEN
1584 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col43 || l_bind_end_tag;
1585 ELSE
1586 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1587 END IF;
1588 ELSE
1589 RAISE e_parameters_read;
1590 END IF;
1591
1592 IF (l_header_row.no_of_parameters >= 44 )
1593 THEN
1594 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter44;
1595 IF (l_processed_row.col44 IS NOT NULL)
1596 THEN
1597 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col44 || l_bind_end_tag;
1598 ELSE
1599 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1600 END IF;
1601 ELSE
1602 RAISE e_parameters_read;
1603 END IF;
1604
1605 IF (l_header_row.no_of_parameters >= 45 )
1606 THEN
1607 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter45;
1608 IF (l_processed_row.col45 IS NOT NULL)
1609 THEN
1610 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col45 || l_bind_end_tag;
1611 ELSE
1612 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1613 END IF;
1614 ELSE
1615 RAISE e_parameters_read;
1616 END IF;
1617
1618 IF (l_header_row.no_of_parameters >= 46 )
1619 THEN
1620 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter46;
1621 IF (l_processed_row.col46 IS NOT NULL)
1622 THEN
1623 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col46 || l_bind_end_tag;
1624 ELSE
1625 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1626 END IF;
1627 ELSE
1628 RAISE e_parameters_read;
1629 END IF;
1630
1631 IF (l_header_row.no_of_parameters >= 47 )
1632 THEN
1633 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter47;
1634 IF (l_processed_row.col47 IS NOT NULL)
1635 THEN
1636 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col47 || l_bind_end_tag;
1637 ELSE
1638 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1639 END IF;
1640 ELSE
1641 RAISE e_parameters_read;
1642 END IF;
1643
1644 IF (l_header_row.no_of_parameters >= 48 )
1645 THEN
1646 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter48;
1647 IF (l_processed_row.col48 IS NOT NULL)
1648 THEN
1649 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col48 || l_bind_end_tag;
1650 ELSE
1651 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1652 END IF;
1653 ELSE
1654 RAISE e_parameters_read;
1655 END IF;
1656
1657 IF (l_header_row.no_of_parameters >= 49 )
1658 THEN
1659 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter49;
1660 IF (l_processed_row.col49 IS NOT NULL)
1661 THEN
1662 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col49 || l_bind_end_tag;
1663 ELSE
1664 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1665 END IF;
1666 ELSE
1667 RAISE e_parameters_read;
1668 END IF;
1669
1670 IF (l_header_row.no_of_parameters >= 50 )
1671 THEN
1672 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter50;
1673 IF (l_processed_row.col50 IS NOT NULL)
1674 THEN
1675 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col50 || l_bind_end_tag;
1676 ELSE
1677 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1678 END IF;
1679 ELSE
1680 RAISE e_parameters_read;
1681 END IF;
1682
1683 IF (l_header_row.no_of_parameters >= 51 )
1684 THEN
1685 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter51;
1686 IF (l_processed_row.col51 IS NOT NULL)
1687 THEN
1688 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col51 || l_bind_end_tag;
1689 ELSE
1690 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1691 END IF;
1692 ELSE
1693 RAISE e_parameters_read;
1694 END IF;
1695
1696 IF (l_header_row.no_of_parameters >= 52 )
1697 THEN
1698 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter52;
1699 IF (l_processed_row.col52 IS NOT NULL)
1700 THEN
1701 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col52 || l_bind_end_tag;
1702 ELSE
1703 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1704 END IF;
1705 ELSE
1706 RAISE e_parameters_read;
1707 END IF;
1708
1709 IF (l_header_row.no_of_parameters >= 53 )
1710 THEN
1711 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter53;
1712 IF (l_processed_row.col53 IS NOT NULL)
1713 THEN
1714 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col53 || l_bind_end_tag;
1715 ELSE
1716 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1717 END IF;
1718 ELSE
1719 RAISE e_parameters_read;
1720 END IF;
1721
1722 IF (l_header_row.no_of_parameters >= 54 )
1723 THEN
1724 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter54;
1725 IF (l_processed_row.col54 IS NOT NULL)
1726 THEN
1727 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col54 || l_bind_end_tag;
1728 ELSE
1729 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1730 END IF;
1731 ELSE
1732 RAISE e_parameters_read;
1733 END IF;
1734
1735 IF (l_header_row.no_of_parameters >= 55 )
1736 THEN
1737 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter55;
1738 IF (l_processed_row.col55 IS NOT NULL)
1739 THEN
1740 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col55 || l_bind_end_tag;
1741 ELSE
1742 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1743 END IF;
1744 ELSE
1745 RAISE e_parameters_read;
1746 END IF;
1747
1748 IF (l_header_row.no_of_parameters >= 56 )
1749 THEN
1750 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter56;
1751 IF (l_processed_row.col56 IS NOT NULL)
1752 THEN
1753 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col56 || l_bind_end_tag;
1754 ELSE
1755 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1756 END IF;
1757 ELSE
1758 RAISE e_parameters_read;
1759 END IF;
1760
1761 IF (l_header_row.no_of_parameters >= 57 )
1762 THEN
1763 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter57;
1764 IF (l_processed_row.col57 IS NOT NULL)
1765 THEN
1766 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col57 || l_bind_end_tag;
1767 ELSE
1768 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1769 END IF;
1770 ELSE
1771 RAISE e_parameters_read;
1772 END IF;
1773
1774 IF (l_header_row.no_of_parameters >= 58 )
1775 THEN
1776 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter58;
1777 IF (l_processed_row.col58 IS NOT NULL)
1778 THEN
1779 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col58 || l_bind_end_tag;
1780 ELSE
1781 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1782 END IF;
1783 ELSE
1784 RAISE e_parameters_read;
1785 END IF;
1786
1787 IF (l_header_row.no_of_parameters >= 59 )
1788 THEN
1789 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter59;
1790 IF (l_processed_row.col59 IS NOT NULL)
1791 THEN
1792 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col59 || l_bind_end_tag;
1793 ELSE
1794 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1795 END IF;
1796 ELSE
1797 RAISE e_parameters_read;
1798 END IF;
1799
1800 IF (l_header_row.no_of_parameters >= 60 )
1801 THEN
1802 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter60;
1803 IF (l_processed_row.col60 IS NOT NULL)
1804 THEN
1805 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col60 || l_bind_end_tag;
1806 ELSE
1807 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1808 END IF;
1809 ELSE
1810 RAISE e_parameters_read;
1811 END IF;
1812
1813 IF (l_header_row.no_of_parameters >= 61 )
1814 THEN
1815 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter61;
1816 IF (l_processed_row.col61 IS NOT NULL)
1817 THEN
1818 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col61 || l_bind_end_tag;
1819 ELSE
1820 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1821 END IF;
1822 ELSE
1823 RAISE e_parameters_read;
1824 END IF;
1825
1826 IF (l_header_row.no_of_parameters >= 62 )
1827 THEN
1828 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter62;
1829 IF (l_processed_row.col62 IS NOT NULL)
1830 THEN
1831 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col62 || l_bind_end_tag;
1832 ELSE
1833 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1834 END IF;
1835 ELSE
1836 RAISE e_parameters_read;
1837 END IF;
1838
1839 IF (l_header_row.no_of_parameters >= 63 )
1840 THEN
1841 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter63;
1842 IF (l_processed_row.col63 IS NOT NULL)
1843 THEN
1844 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col63 || l_bind_end_tag;
1845 ELSE
1846 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1847 END IF;
1848 ELSE
1849 RAISE e_parameters_read;
1850 END IF;
1851
1852 IF (l_header_row.no_of_parameters >= 64 )
1853 THEN
1854 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter64;
1855 IF (l_processed_row.col64 IS NOT NULL)
1856 THEN
1857 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col64 || l_bind_end_tag;
1858 ELSE
1859 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1860 END IF;
1861 ELSE
1862 RAISE e_parameters_read;
1863 END IF;
1864
1865 IF (l_header_row.no_of_parameters >= 65 )
1866 THEN
1867 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter65;
1868 IF (l_processed_row.col65 IS NOT NULL)
1869 THEN
1870 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col65 || l_bind_end_tag;
1871 ELSE
1872 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1873 END IF;
1874 ELSE
1875 RAISE e_parameters_read;
1876 END IF;
1877
1878 IF (l_header_row.no_of_parameters >= 66 )
1879 THEN
1880 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter66;
1881 IF (l_processed_row.col66 IS NOT NULL)
1882 THEN
1883 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col66 || l_bind_end_tag;
1884 ELSE
1885 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1886 END IF;
1887 ELSE
1888 RAISE e_parameters_read;
1889 END IF;
1890
1891 IF (l_header_row.no_of_parameters >= 67 )
1892 THEN
1893 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter67;
1894 IF (l_processed_row.col67 IS NOT NULL)
1895 THEN
1896 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col67 || l_bind_end_tag;
1897 ELSE
1898 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1899 END IF;
1900 ELSE
1901 RAISE e_parameters_read;
1902 END IF;
1903
1904 IF (l_header_row.no_of_parameters >= 68 )
1905 THEN
1906 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter68;
1907 IF (l_processed_row.col68 IS NOT NULL)
1908 THEN
1909 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col68 || l_bind_end_tag;
1910 ELSE
1911 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1912 END IF;
1913 ELSE
1914 RAISE e_parameters_read;
1915 END IF;
1916
1917 IF (l_header_row.no_of_parameters >= 69 )
1918 THEN
1919 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter69;
1920 IF (l_processed_row.col69 IS NOT NULL)
1921 THEN
1922 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col69 || l_bind_end_tag;
1923 ELSE
1924 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1925 END IF;
1926 ELSE
1927 RAISE e_parameters_read;
1928 END IF;
1929
1930 IF (l_header_row.no_of_parameters >= 70 )
1931 THEN
1932 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter70;
1933 IF (l_processed_row.col70 IS NOT NULL)
1934 THEN
1935 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col70 || l_bind_end_tag;
1936 ELSE
1937 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1938 END IF;
1939 ELSE
1940 RAISE e_parameters_read;
1941 END IF;
1942
1943 IF (l_header_row.no_of_parameters >= 71 )
1944 THEN
1945 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter71;
1946 IF (l_processed_row.col71 IS NOT NULL)
1947 THEN
1948 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col71 || l_bind_end_tag;
1949 ELSE
1950 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1951 END IF;
1952 ELSE
1953 RAISE e_parameters_read;
1954 END IF;
1955
1956 IF (l_header_row.no_of_parameters >= 72 )
1957 THEN
1958 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter72;
1959 IF (l_processed_row.col72 IS NOT NULL)
1960 THEN
1961 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col72 || l_bind_end_tag;
1962 ELSE
1963 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1964 END IF;
1965 ELSE
1966 RAISE e_parameters_read;
1967 END IF;
1968
1969 IF (l_header_row.no_of_parameters >= 73 )
1970 THEN
1971 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter73;
1972 IF (l_processed_row.col73 IS NOT NULL)
1973 THEN
1974 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col73 || l_bind_end_tag;
1975 ELSE
1976 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1977 END IF;
1978 ELSE
1979 RAISE e_parameters_read;
1980 END IF;
1981
1982 IF (l_header_row.no_of_parameters >= 74 )
1983 THEN
1984 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter74;
1985 IF (l_processed_row.col74 IS NOT NULL)
1986 THEN
1987 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col74 || l_bind_end_tag;
1988 ELSE
1989 l_bind_xml := l_bind_xml || l_bind_empty_tag;
1990 END IF;
1991 ELSE
1992 RAISE e_parameters_read;
1993 END IF;
1994
1995 IF (l_header_row.no_of_parameters >= 75 )
1996 THEN
1997 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter75;
1998 IF (l_processed_row.col75 IS NOT NULL)
1999 THEN
2000 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col75 || l_bind_end_tag;
2001 ELSE
2002 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2003 END IF;
2004 ELSE
2005 RAISE e_parameters_read;
2006 END IF;
2007
2008 IF (l_header_row.no_of_parameters >= 76 )
2009 THEN
2010 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter76;
2011 IF (l_processed_row.col76 IS NOT NULL)
2012 THEN
2013 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col76 || l_bind_end_tag;
2014 ELSE
2015 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2016 END IF;
2017 ELSE
2018 RAISE e_parameters_read;
2019 END IF;
2020
2021 IF (l_header_row.no_of_parameters >= 77 )
2022 THEN
2023 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter77;
2024 IF (l_processed_row.col77 IS NOT NULL)
2025 THEN
2026 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col77 || l_bind_end_tag;
2027 ELSE
2028 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2029 END IF;
2030 ELSE
2031 RAISE e_parameters_read;
2032 END IF;
2033
2034 IF (l_header_row.no_of_parameters >= 78 )
2035 THEN
2036 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter78;
2037 IF (l_processed_row.col78 IS NOT NULL)
2038 THEN
2039 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col78 || l_bind_end_tag;
2040 ELSE
2041 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2042 END IF;
2043 ELSE
2044 RAISE e_parameters_read;
2045 END IF;
2046
2047 IF (l_header_row.no_of_parameters >= 79 )
2048 THEN
2049 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter79;
2050 IF (l_processed_row.col79 IS NOT NULL)
2051 THEN
2052 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col79 || l_bind_end_tag;
2053 ELSE
2054 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2055 END IF;
2056 ELSE
2057 RAISE e_parameters_read;
2058 END IF;
2059
2060 IF (l_header_row.no_of_parameters >= 80 )
2061 THEN
2062 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter80;
2063 IF (l_processed_row.col80 IS NOT NULL)
2064 THEN
2065 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col80 || l_bind_end_tag;
2066 ELSE
2067 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2068 END IF;
2069 ELSE
2070 RAISE e_parameters_read;
2071 END IF;
2072
2073 IF (l_header_row.no_of_parameters >= 81 )
2074 THEN
2075 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter81;
2076 IF (l_processed_row.col81 IS NOT NULL)
2077 THEN
2078 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col81 || l_bind_end_tag;
2079 ELSE
2080 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2081 END IF;
2082 ELSE
2083 RAISE e_parameters_read;
2084 END IF;
2085
2086 IF (l_header_row.no_of_parameters >= 82)
2087 THEN
2088 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter82;
2089 IF (l_processed_row.col82 IS NOT NULL)
2090 THEN
2091 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col82 || l_bind_end_tag;
2092 ELSE
2093 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2094 END IF;
2095 ELSE
2096 RAISE e_parameters_read;
2097 END IF;
2098
2099 IF (l_header_row.no_of_parameters >= 83 )
2100 THEN
2101 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter83;
2102 IF (l_processed_row.col83 IS NOT NULL)
2103 THEN
2104 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col83 || l_bind_end_tag;
2105 ELSE
2106 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2107 END IF;
2108 ELSE
2109 RAISE e_parameters_read;
2110 END IF;
2111
2112 IF (l_header_row.no_of_parameters >= 84 )
2113 THEN
2114 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter84;
2115 IF (l_processed_row.col84 IS NOT NULL)
2116 THEN
2117 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col84 || l_bind_end_tag;
2118 ELSE
2119 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2120 END IF;
2121 ELSE
2122 RAISE e_parameters_read;
2123 END IF;
2124
2125 IF (l_header_row.no_of_parameters >= 85 )
2126 THEN
2127 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter85;
2128 IF (l_processed_row.col85 IS NOT NULL)
2129 THEN
2130 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col85 || l_bind_end_tag;
2131 ELSE
2132 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2133 END IF;
2134 ELSE
2135 RAISE e_parameters_read;
2136 END IF;
2137
2138 IF (l_header_row.no_of_parameters >= 86 )
2139 THEN
2140 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter86;
2141 IF (l_processed_row.col86 IS NOT NULL)
2142 THEN
2143 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col86 || l_bind_end_tag;
2144 ELSE
2145 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2146 END IF;
2147 ELSE
2148 RAISE e_parameters_read;
2149 END IF;
2150
2151 IF (l_header_row.no_of_parameters >= 87 )
2152 THEN
2153 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter87;
2154 IF (l_processed_row.col87 IS NOT NULL)
2155 THEN
2156 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col87 || l_bind_end_tag;
2157 ELSE
2158 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2159 END IF;
2160 ELSE
2161 RAISE e_parameters_read;
2162 END IF;
2163
2164 IF (l_header_row.no_of_parameters >= 88)
2165 THEN
2166 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter88;
2167 IF (l_processed_row.col88 IS NOT NULL)
2168 THEN
2169 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col88 || l_bind_end_tag;
2170 ELSE
2171 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2172 END IF;
2173 ELSE
2174 RAISE e_parameters_read;
2175 END IF;
2176
2177 IF (l_header_row.no_of_parameters >= 89 )
2178 THEN
2179 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter89;
2180 IF (l_processed_row.col89 IS NOT NULL)
2181 THEN
2182 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col89 || l_bind_end_tag;
2183 ELSE
2184 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2185 END IF;
2186 ELSE
2187 RAISE e_parameters_read;
2188 END IF;
2189
2190 IF (l_header_row.no_of_parameters >= 90 )
2191 THEN
2192 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter90;
2193 IF (l_processed_row.col90 IS NOT NULL)
2194 THEN
2195 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col90 || l_bind_end_tag;
2196 ELSE
2197 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2198 END IF;
2199 ELSE
2200 RAISE e_parameters_read;
2201 END IF;
2202
2203 IF (l_header_row.no_of_parameters >= 91 )
2204 THEN
2205 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter91;
2206 IF (l_processed_row.col91 IS NOT NULL)
2207 THEN
2208 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col91 || l_bind_end_tag;
2209 ELSE
2210 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2211 END IF;
2212 ELSE
2213 RAISE e_parameters_read;
2214 END IF;
2215
2216 IF (l_header_row.no_of_parameters >= 92 )
2217 THEN
2218 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter92;
2219 IF (l_processed_row.col92 IS NOT NULL)
2220 THEN
2221 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col92 || l_bind_end_tag;
2222 ELSE
2223 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2224 END IF;
2225 ELSE
2226 RAISE e_parameters_read;
2227 END IF;
2228
2229 IF (l_header_row.no_of_parameters >= 93 )
2230 THEN
2231 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter93;
2232 IF (l_processed_row.col93 IS NOT NULL)
2233 THEN
2234 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col93 || l_bind_end_tag;
2235 ELSE
2236 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2237 END IF;
2238 ELSE
2239 RAISE e_parameters_read;
2240 END IF;
2241
2242 IF (l_header_row.no_of_parameters >= 94 )
2243 THEN
2244 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter94;
2245 IF (l_processed_row.col94 IS NOT NULL)
2246 THEN
2247 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col94 || l_bind_end_tag;
2248 ELSE
2249 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2250 END IF;
2251 ELSE
2252 RAISE e_parameters_read;
2253 END IF;
2254
2255 IF (l_header_row.no_of_parameters >= 95)
2256 THEN
2257 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter95;
2258 IF (l_processed_row.col95 IS NOT NULL)
2259 THEN
2260 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col95 || l_bind_end_tag;
2261 ELSE
2262 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2263 END IF;
2264 ELSE
2265 RAISE e_parameters_read;
2266 END IF;
2267
2268 IF (l_header_row.no_of_parameters >= 96 )
2269 THEN
2270 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter96;
2271 IF (l_processed_row.col96 IS NOT NULL)
2272 THEN
2273 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col96 || l_bind_end_tag;
2274 ELSE
2275 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2276 END IF;
2277 ELSE
2278 RAISE e_parameters_read;
2279 END IF;
2280
2281 IF (l_header_row.no_of_parameters >= 97 )
2282 THEN
2283 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter97;
2284 IF (l_processed_row.col97 IS NOT NULL)
2285 THEN
2286 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col97 || l_bind_end_tag;
2287 ELSE
2288 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2289 END IF;
2290 ELSE
2291 RAISE e_parameters_read;
2292 END IF;
2293
2294 IF (l_header_row.no_of_parameters >= 98 )
2295 THEN
2296 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter98;
2297 IF (l_processed_row.col98 IS NOT NULL)
2298 THEN
2299 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col98 || l_bind_end_tag;
2300 ELSE
2301 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2302 END IF;
2303 ELSE
2304 RAISE e_parameters_read;
2305 END IF;
2306
2307 IF (l_header_row.no_of_parameters >= 99 )
2308 THEN
2309 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter99;
2310 IF (l_processed_row.col99 IS NOT NULL)
2311 THEN
2312 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col99 || l_bind_end_tag;
2313 ELSE
2314 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2315 END IF;
2316 ELSE
2317 RAISE e_parameters_read;
2318 END IF;
2319
2320 IF (l_header_row.no_of_parameters = 100 )
2321 THEN
2322 l_bind_xml := l_bind_xml || l_bind_open_tag_begin || l_header_row.parameter100;
2323 IF (l_processed_row.col100 IS NOT NULL)
2324 THEN
2325 l_bind_xml := l_bind_xml || l_bind_open_tag_end || l_processed_row.col100 || l_bind_end_tag;
2326 ELSE
2327 l_bind_xml := l_bind_xml || l_bind_empty_tag;
2328 END IF;
2329 ELSE
2330 RAISE e_parameters_read;
2331 END IF;
2332
2333 EXCEPTION
2334 WHEN e_parameters_read
2335 THEN
2336 NULL;
2337 END;
2338
2339 --Appending the end of bind elements
2340 l_bind_xml := l_bind_xml || '<bind_var bind_type="VARCHAR2" bind_object="fulfillment_user_note">User_Note</bind_var></record></bind>';
2341
2342 x_bind_info := l_bind_xml;
2343
2344
2345 EXCEPTION
2346 WHEN NO_DATA_FOUND
2347 THEN
2348 JTF_FM_UTL_V.PRINT_MESSAGE('JTF_FM_JOB_NOT_FOUND', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_FILE_ID');
2349 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2350 THEN
2351 FND_MESSAGE.set_name('JTF', 'JTF_FM_JOB_NOT_FOUND');
2352 FND_MESSAGE.Set_Token('ARG1',p_job_id);
2353 FND_MESSAGE.Set_Token('ARG2',p_request_id);
2354 FND_MSG_PUB.Add;
2355 END IF;
2356
2357 RAISE FND_API.G_EXC_ERROR;
2358 END;
2359
2360 /*
2361 l_amount := DBMS_LOB.GETLENGTH(l_bind);
2362
2363 JTF_FM_UTL_V.PRINT_MESSAGE('LOB LEngth' || l_amount,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
2364 DBMS_LOB.READ (l_bind, l_amount, 1, l_buffer);
2365
2366 l_parser := xmlparser.newparser();
2367 xmlparser.parseBuffer(l_parser, UTL_RAW.CAST_TO_VARCHAR2(l_buffer));
2368 l_doc := xmlparser.getdocument(l_parser);
2369 BUILD_BIND(l_doc,x_bind_info);
2370 xmlparser.FREEPARSER(l_parser);
2371 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2372 */
2373 END GET_BIND_INFO;
2374
2375 PROCEDURE GET_MEDIA(
2376 p_media_type IN VARCHAR2,
2377 p_media_address IN VARCHAR2,
2378 l_message OUT NOCOPY VARCHAR2
2379 )
2380
2381 IS
2382 l_temp NUMBER;
2383 a VARCHAR2(1):= ' ';
2384 l_Error_Msg VARCHAR2(2000);
2385 l_api_name CONSTANT VARCHAR2(30) := 'GET_MEDIA';
2386 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
2387 BEGIN
2388 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2389
2390 l_message := l_message||' <media_type> '||a;
2391
2392 -- Identify the media types requested
2393 IF (INSTR(UPPER(p_media_type), 'PRINTER') > 0)
2394 THEN
2395 IF p_media_address = FND_API.G_MISS_CHAR
2396 THEN
2397 l_message := l_message||'<printer> '||null||'</printer> '||a;
2398 ELSE -- IF p_printer
2399 l_message := l_message||'<printer> '||p_media_address||'</printer> '||a;
2400 END IF; -- IF p_printer
2401
2402 l_temp := l_temp + 1;
2403 END IF; -- IF (INSTR(p_media_type,
2404
2405 IF (INSTR(UPPER(p_media_type), 'EMAIL') > 0)
2406 THEN
2407 IF p_media_address = FND_API.G_MISS_CHAR
2408 THEN
2409 l_message := l_message||'<email> '||null||'</email> '||a;
2410 ELSE -- IF p_email
2411 l_message := l_message||'<email> '||p_media_address||'</email> '||a;
2412 END IF; -- IF p_email
2413
2414 l_temp := l_temp + 1;
2415 END IF; -- IF (INSTR(p_media_type
2416
2417 IF (INSTR(UPPER(p_media_type), 'FAX') > 0)
2418 THEN
2419 IF p_media_address = FND_API.G_MISS_CHAR
2420 THEN
2421 l_message := l_message||'<fax> '||null||'</fax> '||a;
2422 ELSE -- IF p_fax
2423 l_message := l_message||'<fax> '||p_media_address||'</fax> '||a;
2424 END IF; -- IF p_fax
2425
2426 l_temp := l_temp + 1;
2427 END IF; -- IF (INSTR(p_media_type
2428
2429 -- Check if atleast one valid media type has been specified
2430 IF (l_temp = 0)
2431 THEN
2432 l_Error_Msg := 'Invalid media type specified. Allowed media_types are EMAIL, FAX, PRINTER';
2433 JTF_FM_UTL_V.PRINT_MESSAGE('Invalid media type specified. Allowed media_types are EMAIL, FAX, PRINTER' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2434
2435 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
2436 THEN
2437 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_INVALID_MEDIATYPE');
2438 FND_MSG_PUB.Add;
2439 END IF; -- IF FND_MSG_PUB.check_msg_level
2440
2441 RAISE FND_API.G_EXC_ERROR;
2442
2443 END IF; -- IF (l_temp = 0)
2444
2445 l_message := l_message||'</media_type> '||a;
2446 --dbms_output.put_line('l_message is :' || l_message);
2447
2448 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2449
2450 END GET_MEDIA;
2451
2452
2453
2454
2455 FUNCTION IS_HTML
2456 (
2457 p_item_name IN VARCHAR2
2458 )
2459 RETURN VARCHAR2 IS
2460 x_html VARCHAR2(5):= 'false';
2461 l_api_name CONSTANT VARCHAR2(30) := 'IS_HTML';
2462 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
2463
2464 BEGIN
2465 JTF_FM_UTL_V.PRINT_MESSAGE('Begin function IS_HTML', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.IS_HTML');
2466
2467 -- Get the last index of .
2468 -- Search for htm, if htm, return true else return false
2469 IF(INSTR(SUBSTR(p_item_name, Length(p_item_name)-4 ,Length(p_item_name)),'htm') > 0) THEN
2470 x_html := 'true';
2471 JTF_FM_UTL_V.PRINT_MESSAGE('Document is a html doc', JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.IS_HTML');
2472
2473 END IF;
2474
2475 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2476
2477 RETURN x_html;
2478 END IS_HTML;
2479
2480 FUNCTION GET_FILE_ID
2481 (
2482 p_content_id IN VARCHAR2,
2483 p_request_id IN NUMBER
2484 )
2485 RETURN VARCHAR2 IS
2486
2487 file_id NUMBER;
2488 l_api_name CONSTANT VARCHAR2(30) := 'GET_FILE_ID';
2489 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
2490 l_req_count NUMBER := 0;
2491
2492 BEGIN
2493
2494 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name,
2495 JTF_FM_UTL_V.G_LEVEL_PROCEDURE, l_full_name);
2496
2497 SELECT DISTINCT COUNT(REQUEST_ID) INTO l_req_count FROM JTF_FM_TEST_REQUESTS
2498 WHERE REQUEST_ID = p_request_id ;
2499
2500 BEGIN
2501
2502 -- If this is a test request...
2503 IF l_req_count > 0 THEN
2504
2505 SELECT ATTACH_FID INTO file_id FROM ibc_citems_v
2506 WHERE CITEM_ID = p_content_id
2507 and LANGUAGE = USERENV('LANG')
2508 and rownum=1;
2509
2510 ELSE
2511
2512 -- First get the approved CITEM_VER_ID for the given content ID.
2513 SELECT ATTACH_FID INTO file_id FROM ibc_citems_v
2514 WHERE CITEM_ID = p_content_id
2515 and item_status = 'APPROVED'
2516 and LANGUAGE = USERENV('LANG')
2517 and rownum=1;
2518
2519 END IF;
2520
2521 EXCEPTION
2522 WHEN NO_DATA_FOUND THEN
2523 JTF_FM_UTL_V.PRINT_MESSAGE('JTF_FM_OCM_NOTAPP_OR_ABS',
2524 JTF_FM_UTL_V.G_LEVEL_PROCEDURE, 'JTF_FM_REQUEST_GRP.GET_FILE_ID');
2525 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_OCM_NOTAPP_OR_ABS', p_content_id);
2526 RAISE FND_API.G_EXC_ERROR;
2527 END;
2528
2529 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name,
2530 JTF_FM_UTL_V.G_LEVEL_PROCEDURE, l_full_name);
2531 RETURN file_id;
2532
2533 END GET_FILE_ID;
2534
2535
2536 FUNCTION GET_ATTACH_FILE_ID
2537 (
2538 p_content_id IN VARCHAR2,
2539 p_request_id IN NUMBER
2540 )
2541 RETURN VARCHAR2 IS
2542 file_id NUMBER;
2543 l_cItemVersionId NUMBER :=0;
2544 l_req_count NUMBER := 0;
2545 attribute_type_codes JTF_VARCHAR2_TABLE_100;
2546 attribute_type_names JTF_VARCHAR2_TABLE_300;
2547 attributes JTF_VARCHAR2_TABLE_4000;
2548 return_status VARCHAR2(1);
2549 msg_count NUMBER;
2550 msg_data VARCHAR2(2000);
2551 counter NUMBER := 0;
2552 att_count NUMBER;
2553 ovn NUMBER;
2554 l_api_name CONSTANT VARCHAR2(30) := 'GET_ATTACH_FILE_ID';
2555 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
2556
2557 BEGIN
2558
2559 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2560
2561 JTF_FM_UTL_V.PRINT_MESSAGE(' THE REQUEST_ID IS ' || p_request_id, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_ATTACH_FILE_ID');
2562
2563 SELECT DISTINCT COUNT(REQUEST_ID) INTO l_req_count FROM JTF_FM_TEST_REQUESTS
2564 WHERE REQUEST_ID = p_request_id ;
2565 BEGIN
2566 IF l_req_count > 0
2567 THEN
2568 JTF_FM_UTL_V.PRINT_MESSAGE(' THE COUNT IS ' || l_req_count, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_ATTACH_FILE_ID');
2569
2570 SELECT CITEM_VER_ID INTO l_cItemVersionId FROM IBC_CITEMS_V
2571 WHERE CITEM_ID = TO_NUMBER(p_content_id)
2572 and LANGUAGE = USERENV('LANG');
2573
2574
2575 ELSE
2576
2577 SELECT CITEM_VER_ID INTO l_cItemVersionId FROM IBC_CITEMS_V
2578 WHERE CITEM_ID = TO_NUMBER(p_content_id) and item_status = 'APPROVED'
2579 and LANGUAGE = USERENV('LANG');
2580
2581 END IF;
2582 EXCEPTION
2583 WHEN NO_DATA_FOUND
2584 THEN
2585 JTF_FM_UTL_V.PRINT_MESSAGE(' JTF_FM_OCM_NOTAPP_OR_ABS' ||' : ' || p_content_id, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_ATTACH_FILE_ID');
2586 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_OCM_NOTAPP_OR_ABS', p_content_id);
2587 RAISE FND_API.G_EXC_ERROR;
2588
2589 END;
2590
2591
2592 JTF_FM_UTL_V.PRINT_MESSAGE('Before Ibc_Citem_Admin_Grp.get_attribute_bundle call ' , JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_ATTACH_FILE_ID');
2593
2594
2595 Ibc_Citem_Admin_Grp.get_attribute_bundle(
2596 p_citem_ver_id => l_cItemVersionId
2597 ,p_init_msg_list => Fnd_Api.g_false
2598 ,p_api_version_number => Ibc_Citem_Admin_Grp.G_API_VERSION_DEFAULT
2599 ,x_attribute_type_codes => attribute_type_codes
2600 ,x_attribute_type_names => attribute_type_names
2601 ,x_attributes => attributes
2602 ,x_object_version_number => ovn
2603 ,x_return_status => return_status
2604 ,x_msg_count => msg_count
2605 ,x_msg_data => msg_data
2606 );
2607
2608 if (return_status <> FND_API.G_RET_STS_SUCCESS) then
2609 RAISE FND_API.G_EXC_ERROR;
2610 else
2611 att_count := attribute_type_codes.COUNT;
2612
2613 LOOP
2614 EXIT WHEN att_count = counter;
2615 counter := counter + 1;
2616 IF attribute_type_codes(counter) = 'HTML_DATA_FND_ID'
2617 THEN
2618 file_id := TO_NUMBER(attributes(counter));
2619 END IF;
2620 END LOOP;
2621
2622 END IF;
2623
2624 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2625 RETURN file_id;
2626
2627 END GET_ATTACH_FILE_ID;
2628 --------------------------------------------------------------
2629 -- PROCEDURE
2630 -- GET_OCM_ITEM_DETAILS
2631 -- DESCRIPTION
2632 -- Queries IBC_CITEM_ADMIN_GRP.get_item to get details on Content Id passed
2633 --
2634 --
2635 -- HISTORY
2636 -- 10/29/02 sxkrishn Create.
2637 -- Need to figure out whether Query is attached to the document
2638
2639 ---------------------------------------------------------------
2640
2641 PROCEDURE GET_OCM_ITEM_DETAILS
2642 (
2643
2644 p_content_id IN NUMBER,
2645 p_request_id IN NUMBER,
2646 p_user_note IN VARCHAR2,
2647 p_quantity IN NUMBER,
2648 p_media_type IN VARCHAR2,
2649 p_version IN NUMBER,
2650 p_content_nm IN VARCHAR2,
2651 x_citem_name OUT NOCOPY VARCHAR2,
2652 x_query_id OUT NOCOPY NUMBER ,
2653 x_html OUT NOCOPY VARCHAR2 ,
2654 x_return_status OUT NOCOPY VARCHAR2,
2655 x_msg_count OUT NOCOPY NUMBER,
2656 x_msg_data OUT NOCOPY VARCHAR2
2657
2658 ) IS
2659
2660 content_item_id NUMBER;
2661 citem_name VARCHAR2(240);
2662 citem_version NUMBER;
2663 dir_node_id NUMBER;
2664 dir_node_name VARCHAR2(240);
2665 dir_node_code VARCHAR2(100);
2666 item_status VARCHAR2(30);
2667 version_status VARCHAR2(30);
2668 version_number NUMBER;
2669 citem_description VARCHAR2(2000);
2670 ctype_code VARCHAR2(100);
2671 ctype_name VARCHAR2(240);
2672 start_date DATE;
2673 end_date DATE;
2674 owner_resource_id NUMBER;
2675 owner_resource_type VARCHAR2(100);
2676 reference_code VARCHAR2(100);
2677 trans_required VARCHAR2(1);
2678 parent_item_id NUMBER;
2679 locked_by NUMBER;
2680 wd_restricted VARCHAR2(1);
2681 attach_file_id NUMBER;
2682 attach_file_name VARCHAR2(256);
2683 object_version_number NUMBER;
2684 created_by NUMBER;
2685 creation_date DATE;
2686 last_updated_by NUMBER;
2687 last_update_date DATE;
2688 attribute_type_codes JTF_VARCHAR2_TABLE_100 DEFAULT NULL;
2689 attribute_type_names JTF_VARCHAR2_TABLE_300 DEFAULT NULL;
2690 attributes JTF_VARCHAR2_TABLE_4000 DEFAULT NULL;
2691 component_citems JTF_NUMBER_TABLE := JTF_NUMBER_TABLE();
2692 component_attrib_types JTF_VARCHAR2_TABLE_100 DEFAULT NULL;
2693 component_citem_names JTF_VARCHAR2_TABLE_300 DEFAULT NULL;
2694 component_owner_ids JTF_NUMBER_TABLE DEFAULT NULL;
2695 component_owner_types JTF_VARCHAR2_TABLE_100 DEFAULT NULL;
2696 component_sort_orders JTF_NUMBER_TABLE DEFAULT NULL;
2697 return_status VARCHAR2(1) DEFAULT NULL;
2698 msg_count NUMBER;
2699 msg_data VARCHAR2(2000);
2700 x_item_version_id NUMBER;
2701
2702 counter NUMBER := 0;
2703 att_count NUMBER;
2704 comp_count NUMBER;
2705 l_query_id NUMBER;
2706
2707 l_count_total NUMBER :=0;
2708
2709
2710 x_attach_file_name VARCHAR2(250) := '';
2711 x_attach_file_id NUMBER;
2712 a VARCHAR2(1) := '';
2713 query_flag VARCHAR2(1) := 'N';
2714 x_query_file_id NUMBER := 0;
2715 x_temp_file_id NUMBER;
2716 l_req_count NUMBER := 0;
2717 l_api_name CONSTANT varchar2(30) := 'GET_OCM_ITEM_DETAILS';
2718 l_full_name CONSTANT varchar2(2000) := G_PKG_NAME||'.'||l_api_name;
2719 x_file_id NUMBER;
2720 l_file_name VARCHAR2(256);
2721 html_fnd_id NUMBER ;
2722 text_fnd_id NUMBER ;
2723
2724 BEGIN
2725
2726 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name,
2727 JTF_FM_UTL_V.G_LEVEL_PROCEDURE, l_full_name);
2728
2729 -- Initialize API return status to success
2730 x_return_status := FND_API.G_RET_STS_SUCCESS;
2731
2732
2733 SELECT DISTINCT COUNT(REQUEST_ID) INTO l_req_count FROM JTF_FM_TEST_REQUESTS
2734 WHERE REQUEST_ID = p_request_id ;
2735
2736 BEGIN
2737 IF l_req_count > 0 THEN
2738
2739 JTF_FM_UTL_V.PRINT_MESSAGE(' IT IS A TEST REQUEST:THE COUNT IS ' ||
2740 l_req_count, JTF_FM_UTL_V.G_LEVEL_PROCEDURE,
2741 'JTF_FM_REQUEST_GRP.GET_OCM_ITEM_DETAILS');
2742
2743 IF(p_version IS NOT NULL AND p_version <> FND_API.G_MISS_NUM) THEN
2744
2745 -- In 11.5.9 Fulfillment had users pass 1 or 1.0 in as the version
2746 -- number (meaning "live")and hence had code that "looked up" the right
2747 -- x_item_version_id to pass to GET_ITEM. However in 11.5.10, the
2748 -- rules changed or a problem was discovered and in 11.5.10 the
2749 -- passed in version was supposed to correspond directly to the
2750 -- x_item_version_id. In the GET_CONTENT_XML procedure that calls
2751 -- this procedure, a check is made to see if p_version is 1 or 1.0. If
2752 -- it is, it is changed to null and the next ELSE block takes effect.
2753 -- It if has not been nulled, then we are assuming it is a real
2754 -- x_item_version_id and using it as it.
2755 x_item_version_id := p_version;
2756
2757 ELSE
2758
2759 -- Comment via email from [email protected]
2760 -- *******************************************************************
2761 -- For a test request, I think the calling program should always
2762 -- pass the version number, it is possible that the user might be
2763 -- updating a version which is not the latest version, although we
2764 -- display only "Live Version" or "Latest version" in the coverletter
2765 -- summary UI, there could be a situation when two users are
2766 -- concurrently updating the same cover letter - one picks the live
2767 -- version to update and the other picks the latest version.
2768 --
2769 -- All and all this SQL would work in all cases except the one I
2770 -- outlined above.
2771 -- *******************************************************************
2772 -- The following gets the max version regardless of any status;
2773 -- item_status or version_status
2774
2775 SELECT MAX(CITEM_VER_ID) INTO x_item_version_id
2776 FROM IBC_CITEMS_V
2777 WHERE CITEM_ID = TO_NUMBER(p_content_id)
2778 AND LANGUAGE = USERENV('LANG') ;
2779
2780 END IF;
2781
2782 ELSE
2783
2784 IF(p_version IS NOT NULL AND p_version <> FND_API.G_MISS_NUM) THEN
2785
2786 -- See comment above for test requests where p_version is not null!
2787 x_item_version_id := p_version;
2788
2789 ELSE
2790
2791 -- When no version is passed in, we should use the live version.
2792 -- **** Query provided and approved by OCM in bug 4398752 ****
2793 SELECT live_citem_version_id INTO x_item_version_id
2794 FROM ibc_content_items
2795 WHERE content_item_id = p_content_id;
2796
2797 END IF;
2798
2799 END IF;
2800
2801 EXCEPTION
2802
2803 WHEN NO_DATA_FOUND THEN
2804
2805 JTF_FM_UTL_V.PRINT_MESSAGE(
2806 'Content is either not present in OCM or is not approved' ||
2807 p_content_id, JTF_FM_UTL_V.G_LEVEL_PROCEDURE, l_full_name);
2808 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_OCM_NOTAPP_OR_ABS', p_content_id);
2809
2810 RAISE FND_API.G_EXC_ERROR;
2811
2812 END;
2813
2814 JTF_FM_UTL_V.PRINT_MESSAGE(' Before calling IBC_CITEM_ADMIN_GRP.get_item' ,
2815 JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2816
2817 BEGIN
2818
2819 IBC_CITEM_ADMIN_GRP.get_item(
2820 p_citem_ver_id => x_item_version_id
2821 ,p_init_msg_list => FND_API.g_true
2822 ,p_api_version_number => IBC_CITEM_ADMIN_GRP.G_API_VERSION_DEFAULT
2823 ,x_content_item_id => content_item_id
2824 ,x_citem_name => citem_name
2825 ,x_citem_version => citem_version
2826 ,x_dir_node_id => dir_node_id
2827 ,x_dir_node_name => dir_node_name
2828 ,x_dir_node_code => dir_node_code
2829 ,x_item_status => item_status
2830 ,x_version_status => version_status
2831 ,x_citem_description => citem_description
2832 ,x_ctype_code => ctype_code
2833 ,x_ctype_name => ctype_name
2834 ,x_start_date => start_date
2835 ,x_end_date => end_date
2836 ,x_owner_resource_id => owner_resource_id
2837 ,x_owner_resource_type => owner_resource_type
2838 ,x_reference_code => reference_code
2839 ,x_trans_required => trans_required
2840 ,x_parent_item_id => parent_item_id
2841 ,x_locked_by => locked_by
2842 ,x_wd_restricted => wd_restricted
2843 ,x_attach_file_id => attach_file_id
2844 ,x_attach_file_name => attach_file_name
2845 ,x_object_version_number => object_version_number
2846 ,x_created_by => created_by
2847 ,x_creation_date => creation_date
2848 ,x_last_updated_by => last_updated_by
2849 ,x_last_update_date => last_update_date
2850 ,x_attribute_type_codes => attribute_type_codes
2851 ,x_attribute_type_names => attribute_type_names
2852 ,x_attributes => attributes
2853 ,x_component_citems => component_citems
2854 ,x_component_attrib_types => component_attrib_types
2855 ,x_component_citem_names => component_citem_names
2856 ,x_component_owner_ids => component_owner_ids
2857 ,x_component_owner_types => component_owner_types
2858 ,x_component_sort_orders => component_sort_orders
2859 ,x_return_status => return_status
2860 ,x_msg_count => msg_count
2861 ,x_msg_data => msg_data
2862 );
2863
2864 EXCEPTION
2865 WHEN OTHERS THEN
2866 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_EXCEPTION_IN_GET_ITEM', p_content_id);
2867
2868 RAISE FND_API.G_EXC_ERROR;
2869
2870 END;
2871
2872
2873
2874 JTF_FM_UTL_V.PRINT_MESSAGE('Return status from GET ITEM IS:'|| return_status,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2875 if (return_status <> FND_API.G_RET_STS_SUCCESS)
2876 then
2877 RAISE FND_API.G_EXC_ERROR;
2878 else
2879 JTF_FM_UTL_V.PRINT_MESSAGE('IN GET_OCM_ITEM_DETAILS name = '||citem_name ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2880 JTF_FM_UTL_V.PRINT_MESSAGE('THE REQUEST ID IS name = '|| p_request_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2881
2882 IF attribute_type_codes IS NOT NULL THEN
2883 att_count := attribute_type_codes.COUNT;
2884 JTF_FM_UTL_V.PRINT_MESSAGE('att_count size is ' || att_count,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2885 x_html := '<files> ' || a;
2886
2887
2888 LOOP
2889 EXIT WHEN att_count = counter;
2890 counter := counter + 1;
2891
2892 JTF_FM_UTL_V.PRINT_MESSAGE('type_code = ' || attribute_type_codes(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2893 JTF_FM_UTL_V.PRINT_MESSAGE('type_name = ' || attribute_type_names(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_OCM_ITEM_DETAILS');
2894 JTF_FM_UTL_V.PRINT_MESSAGE('attribute = ' || attributes(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_OCM_ITEM_DETAILS');
2895 JTF_FM_UTL_V.PRINT_MESSAGE('------------------------------------------------',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_OCM_ITEM_DETAILS');
2896 -- 11.5.9 ibc does not support Renditiosn, but 11.5.10 does
2897 -- For Backward compatibility, the HTML fnd Id and Text fnd Id
2898 -- are stored in these two variables and will be used if the Renditions API
2899 -- throws an error.
2900 IF attribute_type_codes(counter) = 'HTML_DATA_FND_ID' THEN
2901 x_html := x_html || '<file id="' || attributes(counter) || '" ' || a;
2902 x_html := x_html || ' body="merge" ';
2903
2904 l_count_total := l_count_total + 1;
2905
2906 html_fnd_id := attributes(counter) ;
2907
2908 INSERT_REQUEST_CONTENTS(
2909 p_request_id,
2910 p_content_id,
2911 l_count_total,
2912 l_file_name,
2913 'TEMPLATE',
2914 'TEXT/HTML',
2915 'Y',
2916 p_user_note,
2917 p_quantity,
2918 p_media_type,
2919 'ocm' ,
2920 html_fnd_id);
2921
2922 END IF;
2923
2924 IF attribute_type_codes(counter) = 'TEXT_DATA_FND_ID' THEN
2925 x_html := x_html || ' txt_id="' || attributes(counter) || '" ' || a;
2926
2927
2928 text_fnd_id := attributes(counter) ;
2929
2930 INSERT_REQUEST_CONTENTS(
2931 p_request_id,
2932 p_content_id,
2933 l_count_total,
2934 l_file_name,
2935 'TEMPLATE',
2936 'text/plain',
2937 'Y',
2938 p_user_note,
2939 p_quantity,
2940 p_media_type,
2941 'ocm' ,
2942 text_fnd_id);
2943
2944 END IF;
2945
2946 IF attribute_type_codes(counter) = 'QUERY_ID'
2947 THEN
2948 x_query_id := attributes(counter);
2949 x_query_file_id := GET_FILE_ID(x_query_id,p_request_id);
2950
2951 x_html := x_html || ' query_id="' || x_query_file_id || '"' || a;
2952
2953
2954 x_html := x_html || ' content_no= "' || l_count_total || '" ' ||a;
2955
2956 x_html := x_html || ' ></file>' || a;
2957
2958 END IF;
2959
2960
2961 END LOOP;
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971 JTF_FM_UTL_V.PRINT_MESSAGE('Done with Attributes',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2972 counter := 0;
2973 IF component_citems IS NOT NULL
2974 THEN
2975
2976 comp_count := component_citems.COUNT;
2977 JTF_FM_UTL_V.PRINT_MESSAGE('com count'|| comp_count,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2978
2979 LOOP
2980 EXIT WHEN comp_count = counter;
2981 counter := counter + 1;
2982
2983 JTF_FM_UTL_V.PRINT_MESSAGE('component citems = ' || component_citems(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2984 JTF_FM_UTL_V.PRINT_MESSAGE('component_attrib_types = ' || component_attrib_types(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2985 JTF_FM_UTL_V.PRINT_MESSAGE('component_citem_names = ' || component_citem_names(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2986 JTF_FM_UTL_V.PRINT_MESSAGE('component_owner_types = ' || component_owner_types(counter),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
2987 --DBMS_OUTPUT.put_line('component_sort_orders = ' || component_sort_orders(counter));
2988 IF component_attrib_types(counter) = 'AMF_ATTACHMENT' THEN
2989 l_count_total := l_count_total +1;
2990 x_temp_file_id := GET_FILE_ID(TO_NUMBER(component_citems(counter)),p_request_id);
2991 x_html := x_html || '<file id="' || x_temp_file_id || '" ' || a;
2992 x_html := x_html || ' body="no" ' || a;
2993 x_html := x_html || ' content_no="' || l_count_total || '" ' ||a;
2994 x_html := x_html || '></file>';
2995
2996
2997 l_file_name := GET_FILE_NAME(x_temp_file_id);
2998 INSERT_REQUEST_CONTENTS(
2999 p_request_id,
3000 p_content_id,
3001 l_count_total,
3002 l_file_name,
3003 'ATTACHMENT',
3004 'text/html',
3005 'N',
3006 p_user_note,
3007 p_quantity,
3008 p_media_type,
3009 'ocm' ,
3010 x_temp_file_id);
3011 ELSIF component_attrib_types(counter)= 'AMF_EMAIL_DELIVERABLE' THEN
3012 l_count_total := l_count_total +1;
3013
3014 x_temp_file_id := GET_ATTACH_FILE_ID(component_citems(counter),p_request_id);
3015 x_html := x_html || '<file id = "' || x_temp_file_id || '" ' || a;
3016 x_html := x_html || ' body="yes"'|| a;
3017 x_html := x_html || ' content_no="' || l_count_total || '" ' ||a;
3018 x_html := x_html || ' ></file>';
3019
3020 l_file_name := GET_FILE_NAME(x_temp_file_id);
3021 INSERT_REQUEST_CONTENTS(
3022 p_request_id,
3023 p_content_id,
3024 l_count_total,
3025 l_file_name,
3026 'DELIVERABLE',
3027 'text/html',
3028 'Y',
3029 p_user_note,
3030 p_quantity,
3031 p_media_type,
3032 'ocm' ,
3033 x_temp_file_id);
3034
3035 END IF;
3036
3037 JTF_FM_UTL_V.PRINT_MESSAGE('x_html :' || x_html,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3038 JTF_FM_UTL_V.PRINT_MESSAGE('------------------------------------------------',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3039 END LOOP;
3040 END IF;
3041
3042
3043 x_html := x_html || '</files>' || a;
3044
3045 ELSE
3046 JTF_FM_UTL_V.PRINT_MESSAGE(' Should have HTML Rendition' ||p_content_id, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3047 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_OCM_HTML_REND_ABS', p_content_id);
3048 RAISE FND_API.G_EXC_ERROR;
3049
3050 END IF;
3051
3052 end if;
3053
3054 DELETE FROM JTF_FM_TEST_REQUESTS WHERE REQUEST_ID = p_request_id;
3055
3056 JTF_FM_UTL_V.PRINT_MESSAGE('End GET_OCM_ITEM_DETAILS',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3057
3058
3059 EXCEPTION
3060
3061 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3062 THEN
3063
3064 x_citem_name := NULL;
3065 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3066 -- Standard call to get message count and if count=1, get the message
3067 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3068 p_count => x_msg_count,
3069 p_data => x_msg_data
3070 );
3071 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3072
3073 WHEN FND_API.G_EXC_ERROR
3074 THEN
3075
3076 x_citem_name := NULL;
3077 x_return_status := FND_API.G_RET_STS_ERROR;
3078
3079 -- Standard call to get message count and if count=1, get the message
3080 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3081 p_count => x_msg_count,
3082 p_data => x_msg_data
3083 );
3084 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3085
3086 WHEN OTHERS
3087 THEN
3088
3089 x_citem_name := NULL;
3090 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3091 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
3092
3093 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3094 THEN
3095 FND_MSG_PUB.Add_Exc_Msg('JTF_FM_REQUEST_GRP', G_PKG_NAME );
3096 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
3097
3098 -- Standard call to get message count and if count=1, get the message
3099 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3100 p_count => x_msg_count,
3101 p_data => x_msg_data
3102 );
3103 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3104
3105 for i in 0..x_msg_count loop
3106 JTF_FM_UTL_V.PRINT_MESSAGE(FND_MSG_PUB.get(i,FND_API.G_FALSE),JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,'JTF_FM_REQUEST_GRP.GET_OCM_ITEM_DETAILS');
3107
3108 end loop;
3109
3110
3111 END GET_OCM_ITEM_DETAILS;
3112
3113 --------------------------------------------------------------
3114 -- PROCEDURE
3115 -- GET_MES_ITEM_DETAILS
3116 -- DESCRIPTION
3117 -- Queries IBC_CITEM_ADMIN_GRP.get_item to get details on Content Id passed
3118 --
3119 --
3120 -- HISTORY
3121 -- 10/29/02 nyalaman Create.
3122
3123 ---------------------------------------------------------------
3124
3125 PROCEDURE GET_MES_ITEM_DETAILS
3126 (
3127 p_content_id IN NUMBER,
3128 p_content_type IN VARCHAR2,
3129 p_request_id IN NUMBER,
3130 p_user_note IN VARCHAR2,
3131 p_quantity IN NUMBER,
3132 p_media_type IN VARCHAR2,
3133 x_citem_name OUT NOCOPY VARCHAR2,
3134 x_query_id OUT NOCOPY NUMBER ,
3135 x_html OUT NOCOPY VARCHAR2 ,
3136 x_return_status OUT NOCOPY VARCHAR2,
3137 x_msg_count OUT NOCOPY NUMBER,
3138 x_msg_data OUT NOCOPY VARCHAR2
3139
3140 )
3141 IS
3142 l_error_msg VARCHAR2(2000);
3143 l_file_id NUMBER;
3144 l_count NUMBER;
3145 l_query_file_id NUMBER;
3146 x_query_file_id NUMBER;
3147 l_body varchar2(10);
3148 l_body2 VARCHAR2(1);
3149 l_count_total NUMBER := 0;
3150 l_content_nm VARCHAR2(100);
3151 l_file_id_type VARCHAR2(100);
3152 l_file_type VARCHAR2(100);
3153
3154 l_api_name CONSTANT VARCHAR2(100) := 'GET_MES_ITEM_DETAILS';
3155 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || 'GET_MES_ITEM_DETAILS';
3156 -------------------------------------------------
3157 -- mpetrosi 4-oct-2001 added join to fnd_lobs
3158 -- Cursor to get the content_nm using the content_id for QUERY/COLLATERAL
3159 -- This cursor also checks if the content_id passed is valid
3160 CURSOR CCONT IS
3161 SELECT L.FILE_ID,L.FILE_NAME
3162 FROM JTF_AMV_ATTACHMENTS A,
3163 FND_LOBS L
3164 WHERE A.ATTACHMENT_USED_BY_ID = p_content_id
3165 AND A.FILE_ID = L.FILE_ID AND
3166 A.ATTACHMENT_USED_BY = 'ITEM';
3167 -------------------------------------------------
3168
3169 -- Cursor to get the content_nm using the content_id for ATTACHMENTS
3170 CURSOR CATTACH IS
3171 SELECT FILE_ID, FILE_NAME
3172 FROM FND_LOBS
3173 WHERE
3174 FILE_ID = p_content_id;
3175
3176 CURSOR CQUER IS
3177 SELECT query_id
3178 FROM JTF_FM_QUERY_MES
3179 WHERE MES_DOC_ID = p_content_id;
3180
3181 BEGIN
3182
3183 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3184
3185 -- Initialize API return status to success
3186 x_return_status := FND_API.G_RET_STS_SUCCESS;
3187
3188 JTF_FM_UTL_V.PRINT_MESSAGE('Procedure to check MES contents',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3189
3190 /***
3191 -- Do the following to get the correct content_no from JTF_FM_REQUEST_CONTENTS table
3192
3193 ***/
3194 select nvl(max(content_number),0) into l_count_total from JTF_FM_REQUEST_CONTENTS where request_id = p_request_id;
3195
3196
3197 IF(p_content_type = 'ATTACHMENT') THEN
3198
3199 OPEN CATTACH;
3200 FETCH CATTACH INTO l_file_id, l_content_nm;
3201 JTF_FM_UTL_V.PRINT_MESSAGE('Fetching file_id..',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3202
3203
3204
3205 IF (CATTACH%NOTFOUND) THEN
3206 JTF_FM_UTL_V.PRINT_MESSAGE('Invalid Content_id',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3207 CLOSE CATTACH;
3208 l_Error_Msg := 'Could not find content in the database';
3209 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_DISP_CONTENT_NOT_FOUND',p_content_id);
3210 RAISE FND_API.G_EXC_ERROR;
3211 ELSE
3212
3213 IF (JTF_FM_UTL_V.CONFIRM_RTF(l_file_id)) THEN
3214 l_file_id_type := ' rtf_id = " ';
3215 l_file_type := 'APPLICATION/RTF';
3216 ELSIF(JTF_FM_UTL_V.CONFIRM_PDF(l_file_id)) THEN
3217 l_file_id_type := ' pdf_id = "';
3218 l_file_type := 'APPLICATION/PDF';
3219 ELSIF(JTF_FM_UTL_V.CONFIRM_TEXT_HTML(l_file_id)) THEN
3220 l_file_id_type := ' id = "';
3221 l_file_type := 'TEXT/HTML';
3222 ELSE
3223 l_file_id_type := ' id = "';
3224 l_file_type := 'APPLICATION/OCTET-STREAM';
3225 END IF;
3226
3227
3228
3229 l_count_total := l_count_total +1;
3230 x_html := x_html ||'<files><file ' || l_file_id_type || l_file_id ||'" body="no"' ;
3231 x_html := x_html || ' content_no = "' || l_count_total || '" ' ;
3232 x_html := x_html || '></file></files>';
3233
3234
3235 INSERT_REQUEST_CONTENTS(
3236 p_request_id,
3237 p_content_id,
3238 l_count_total,
3239 l_content_nm,
3240 'ATTACHMENT',
3241 l_file_type,
3242 'N',
3243 p_user_note,
3244 p_quantity,
3245 p_media_type,
3246 'mes' ,
3247 l_file_id);
3248
3249
3250 END IF; -- IF (CATTACH%NOTFOUND)
3251
3252 CLOSE CATTACH;
3253
3254 ELSIF (upper(P_CONTENT_TYPE) = 'QUERY') THEN
3255
3256
3257 OPEN CCONT;
3258 FETCH CCONT INTO l_file_id, l_content_nm;
3259 JTF_FM_UTL_V.PRINT_MESSAGE('Fetching file_id..',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3260
3261 IF (CCONT%NOTFOUND) THEN
3262
3263 JTF_FM_UTL_V.PRINT_MESSAGE('Could not find content in the database',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3264 CLOSE CCONT;
3265 l_Error_Msg := 'Could not find content in the database';
3266 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_DISP_CONTENT_NOT_FOUND',p_content_id);
3267 RAISE FND_API.G_EXC_ERROR;
3268 ELSE
3269
3270 -- Validate that the content has a query associated with it
3271 OPEN CQUER;
3272 FETCH CQUER INTO x_query_id;
3273 IF (CQUER%NOTFOUND) THEN
3274 CLOSE CQUER;
3275 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_CONT_NOT_QUERY',p_content_id);
3276 RAISE FND_API.G_EXC_ERROR;
3277 ELSE
3278
3279 IF ((INSTR(UPPER(p_media_type), 'E') > 0) OR (INSTR(UPPER(p_media_type), 'F') > 0)) THEN-- If Email or Fax
3280 IF (JTF_FM_UTL_V.CONFIRM_RTF(l_file_id)) THEN -- If RTF
3281 l_Error_Msg := 'Cant send an RTF through Email or Fax';
3282 JTF_FM_UTL_V.PRINT_MESSAGE('Cant send an RTF through Email or Fax' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3283 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3284 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_RTF_EMAIL_FAX');
3285 FND_MSG_PUB.Add;
3286 END IF; -- IF FND_MSG_PUB.check_msg_level
3287 RAISE FND_API.G_EXC_ERROR;
3288 ELSIF(JTF_FM_UTL_V.CONFIRM_PDF(l_file_id)) THEN -- IF PDF
3289 l_Error_Msg := 'Cant send a PDF through Email or Fax';
3290 JTF_FM_UTL_V.PRINT_MESSAGE('Cant send a PDF through Email or Fax' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3291 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3292 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_PDF_EMAIL_FAX');
3293 FND_MSG_PUB.Add;
3294 END IF; -- IF FND_MSG_PUB.check_msg_level
3295 RAISE FND_API.G_EXC_ERROR;
3296 ELSIF(JTF_FM_UTL_V.CONFIRM_TEXT_HTML(l_file_id)) THEN -- If it is a Text or HTML
3297 x_html := x_html ||'<files><file id="' || l_file_id ||'" body="merge" ';
3298 l_count_total := l_count_total +1;
3299 INSERT_REQUEST_CONTENTS(
3300 p_request_id,
3301 p_content_id,
3302 l_count_total,
3303 l_content_nm,
3304 'QUERY',
3305 'TEXT/HTML',
3306 'Y',
3307 p_user_note,
3308 p_quantity,
3309 p_media_type,
3310 'mes' ,
3311 l_file_id);
3312
3313
3314 ELSE -- Some other Content Type
3315
3316 l_Error_Msg := 'The Content Type of the document is not supported';
3317 JTF_FM_UTL_V.PRINT_MESSAGE('The Content Type of the document is not supported' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name );
3318 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3319 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_CONTENT_TYPE');
3320 FND_MSG_PUB.Add;
3321 END IF; -- IF FND_MSG_PUB.check_msg_level
3322 RAISE FND_API.G_EXC_ERROR;
3323
3324 END IF; -- JTF_FM_UTL_V.CONFIRM_RTF, PDF, TEXT_HTML
3325
3326 ELSE -- If Print media_type
3327
3328 IF (JTF_FM_UTL_V.CONFIRM_RTF(l_file_id)) THEN -- If the File is an RTF
3329 x_html := x_html ||'<files><file rtf_id="' || l_file_id ||'" body="merge" ';
3330 l_count_total := l_count_total +1;
3331 INSERT_REQUEST_CONTENTS(
3332 p_request_id,
3333 p_content_id,
3334 l_count_total,
3335 l_content_nm,
3336 'QUERY',
3337 'APPLICATION/RTF',
3338 'Y',
3339 p_user_note,
3340 p_quantity,
3341 p_media_type,
3342 'mes' ,
3343 l_file_id);
3344 ELSIF(JTF_FM_UTL_V.CONFIRM_PDF(l_file_id)) THEN -- If the File is an PDF
3345 x_html := x_html ||'<files><file pdf_id="' || l_file_id ||'" body="merge" ';
3346 l_count_total := l_count_total +1;
3347 INSERT_REQUEST_CONTENTS(
3348 p_request_id,
3349 p_content_id,
3350 l_count_total,
3351 l_content_nm,
3352 'QUERY',
3353 'APPLICATION/PDF',
3354 'Y',
3355 p_user_note,
3356 p_quantity,
3357 p_media_type,
3358 'mes' ,
3359 l_file_id);
3360 ELSIF(JTF_FM_UTL_V.CONFIRM_TEXT_HTML(l_file_id)) -- If the File is HTML or TEXT
3361 THEN
3362 x_html := x_html ||'<files><file id="' || l_file_id ||'" body="merge" ';
3363 l_count_total := l_count_total +1;
3364 INSERT_REQUEST_CONTENTS(
3365 p_request_id,
3366 p_content_id,
3367 l_count_total,
3368 l_content_nm,
3369 'QUERY',
3370 'TEXT/HTML',
3371 'Y',
3372 p_user_note,
3373 p_quantity,
3374 p_media_type,
3375 'mes' ,
3376 l_file_id);
3377
3378 ELSE -- If the File is of some other format
3379
3380 l_Error_Msg := 'The Content Type of the document is not supported';
3381 JTF_FM_UTL_V.PRINT_MESSAGE('The Content Type of the document is not supported' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name );
3382 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3383 THEN
3384 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_CONTENT_TYPE');
3385 FND_MSG_PUB.Add;
3386 END IF; -- IF FND_MSG_PUB.check_msg_level
3387 RAISE FND_API.G_EXC_ERROR;
3388
3389 END IF; -- JTF_FM_UTL_V.CONFIRM_RTF, PDF, TEXT_HTML
3390 END IF; -- EMAIL, PRINTER, FAX
3391
3392 --Gagan's code ends here
3393
3394 select file_id into l_query_file_id from jtf_fm_queries_all where query_id = x_query_id;
3395
3396 IF l_query_file_id IS NOT NULL THEN
3397 JTF_FM_UTL_V.PRINT_MESSAGE('Query has file id :' || l_query_file_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3398 CHECK_AND_INSERT_QUERY(x_query_id, l_query_file_id, x_query_file_id);
3399 ELSE
3400 JTF_FM_UTL_V.PRINT_MESSAGE('Query IS NULL' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3401 INSERT_QUERY(x_query_id, x_query_file_id);
3402 END IF;
3403
3404 x_html := x_html ||' query_id="'||x_query_file_id ||'" ' ;
3405 x_html := x_html || ' content_no = "' || l_count_total || '" ' ;
3406 x_html := x_html || '></file></files> ' ;
3407 END IF; -- IF (CQUER%NOTFOUND)
3408 CLOSE CQUER;
3409
3410 END IF; -- IF (CCONT%NOTFOUND)
3411
3412 CLOSE CCONT;
3413
3414
3415
3416 ELSE
3417 JTF_FM_UTL_V.PRINT_MESSAGE('In else Loop',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3418
3419
3420 -- OPEN CCONT;
3421
3422 l_count := 0;
3423 FOR CCONT_rec IN CCONT LOOP
3424 JTF_FM_UTL_V.PRINT_MESSAGE('In for Loop',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3425
3426 l_count := l_count + 1;
3427 IF l_count = 1
3428 THEN
3429 x_html := x_html ||'<files>' || '';
3430 END IF;
3431
3432 IF (CCONT%NOTFOUND)
3433 THEN
3434 JTF_FM_UTL_V.PRINT_MESSAGE('Could not find content_id',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3435
3436 CLOSE CCONT;
3437 l_Error_Msg := 'Could not find content in the database';
3438 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_DISP_CONTENT_NOT_FOUND',p_content_id);
3439
3440 END IF;
3441
3442 l_file_id := CCONT_rec.file_id;
3443 l_content_nm := CCONT_rec.file_name;
3444 JTF_FM_UTL_V.PRINT_MESSAGE('file_id is :' || l_file_id,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3445
3446
3447
3448 IF (JTF_FM_UTL_V.CONFIRM_RTF(l_file_id)) THEN
3449 l_file_id_type := ' rtf_id = " ';
3450 l_file_type := 'APPLICATION/RTF';
3451 l_body := 'no';
3452 l_body2 := 'N';
3453 ELSIF(JTF_FM_UTL_V.CONFIRM_PDF(l_file_id)) THEN
3454 l_file_id_type := ' pdf_id = "';
3455 l_file_type := 'APPLICATION/PDF';
3456 l_body := 'no';
3457 l_body2 := 'N';
3458 ELSIF(JTF_FM_UTL_V.CONFIRM_TEXT_HTML(l_file_id)) THEN
3459 l_file_id_type := ' id = "';
3460 l_file_type := 'TEXT/HTML';
3461 IF (upper(P_CONTENT_TYPE) = 'DATA') THEN
3462 l_body := 'merge';
3463 l_body2 := 'Y';
3464 ELSE
3465 l_body := 'no';
3466 l_body2 := 'N';
3467 END IF;
3468 ELSE
3469 l_file_id_type := ' id = "';
3470 l_file_type := 'APPLICATION/OCTET-STREAM';
3471
3472 IF (upper(P_CONTENT_TYPE) = 'DATA') THEN
3473 l_body := 'merge';
3474 l_body2 := 'Y';
3475 ELSE
3476 l_body := 'no';
3477 l_body2 := 'N';
3478 END IF;
3479 END IF;
3480
3481
3482
3483 l_count_total := l_count_total +1;
3484 x_html := x_html ||'<file ' || l_file_id_type || l_file_id ||'" body="' || l_body ||'"' ;
3485 x_html := x_html || ' content_no = "' || l_count_total || '" ' ;
3486 x_html := x_html || '></file>';
3487
3488 INSERT_REQUEST_CONTENTS(
3489 p_request_id,
3490 p_content_id,
3491 l_count_total,
3492 l_content_nm,
3493 upper(P_CONTENT_TYPE),
3494 l_file_type,
3495 l_body2,
3496 p_user_note,
3497 p_quantity,
3498 p_media_type,
3499 'mes' ,
3500 l_file_id);
3501
3502 --Gagan's code ends here
3503
3504 END LOOP;
3505 IF l_count >0
3506 THEN
3507 x_html := x_html ||'</files>' || '';
3508 JTF_FM_UTL_V.PRINT_MESSAGE('x_html is' || x_html,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3509
3510
3511 ELSE
3512 JTF_FM_UTL_V.PRINT_MESSAGE('could not find Content_id' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3513
3514
3515 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_DISP_CONTENT_NOT_FOUND',p_content_id);
3516 RAISE FND_API.G_EXC_ERROR;
3517
3518 END IF;
3519
3520 --CLOSE CCONT;
3521 END IF;
3522
3523 JTF_FM_UTL_V.PRINT_MESSAGE('END PROCEDURE GET_MES_ITEM_DETAILS' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3524
3525 EXCEPTION
3526 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
3527 THEN
3528
3529 x_citem_name := NULL;
3530 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3531 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
3532 -- Standard call to get message count and if count=1, get the message
3533 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3534 p_count => x_msg_count,
3535 p_data => x_msg_data
3536 );
3537 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3538
3539 WHEN FND_API.G_EXC_ERROR
3540 THEN
3541 x_citem_name := NULL;
3542 x_return_status := FND_API.G_RET_STS_ERROR;
3543 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
3544 -- Standard call to get message count and if count=1, get the message
3545 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3546 p_count => x_msg_count,
3547 p_data => x_msg_data
3548 );
3549 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3550
3551 WHEN OTHERS
3552 THEN
3553
3554 x_citem_name := NULL;
3555 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3556 JTF_FM_UTL_V.PRINT_MESSAGE(SQLERRM ,JTF_FM_UTL_V.G_LEVEL_ERROR ,l_full_name);
3557
3558 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3559 THEN
3560 FND_MSG_PUB.Add_Exc_Msg('JTF_FM_REQUEST_GRP', l_api_name);
3561 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
3562
3563 -- Standard call to get message count and if count=1, get the message
3564 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
3565 p_count => x_msg_count,
3566 p_data => x_msg_data
3567 );
3568 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3569
3570 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3571 END GET_MES_ITEM_DETAILS;
3572
3573 ---------------------------------------------------------------
3574 -- PROCEDURE
3575 -- Start_Request
3576 --
3577 -- HISTORY
3578 -- 10/01/99 nyalaman Create.
3579 ---------------------------------------------------------------
3580
3581 PROCEDURE Start_Request
3582 (
3583 p_api_version IN NUMBER,
3584 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3585 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3586 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3587 x_return_status OUT NOCOPY VARCHAR2,
3588 x_msg_count OUT NOCOPY NUMBER,
3589 x_msg_data OUT NOCOPY VARCHAR2,
3590 x_request_id OUT NOCOPY NUMBER
3591 ) IS
3592 l_api_name CONSTANT VARCHAR2(30) := 'START_REQUEST';
3593 l_api_version CONSTANT NUMBER := 1.0;
3594 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
3595 --
3596 l_user_id NUMBER := -1;
3597 l_login_user_id NUMBER := -1;
3598 l_login_user_status NUMBER;
3599 l_Error_Msg VARCHAR2(2000);
3600 --
3601 BEGIN
3602
3603 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3604
3605 -- Standard begin of API savepoint
3606 SAVEPOINT Start_request;
3607
3608 IF NOT FND_API.Compatible_API_Call (
3609 l_api_version,
3610 p_api_version,
3611 l_api_name,
3612 G_PKG_NAME)
3613 THEN
3614 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3615 END IF;
3616
3617 --Initialize message list if p_init_msg_list is TRUE.
3618 IF FND_API.To_Boolean (p_init_msg_list) THEN
3619 FND_MSG_PUB.initialize;
3620 END IF;
3621
3622 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
3623 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_DEBUG_MESSAGE');
3624 FND_MESSAGE.Set_Token('ARG1', l_full_name||': Start');
3625 FND_MSG_PUB.Add;
3626 END IF;
3627
3628 -- Initialize API return status to success
3629 x_return_status := FND_API.G_RET_STS_SUCCESS;
3630
3631 JTF_FM_UTL_V.PRINT_MESSAGE('Start_Request called by ' || to_number(FND_GLOBAL.USER_ID) ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3632
3633 SELECT JTF_FM_REQUESTHISTID_S.NEXTVAL INTO x_request_id FROM DUAL;
3634
3635 -- Success message
3636 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_SUCCESS) THEN
3637 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
3638 FND_MESSAGE.Set_Token('ARG1', l_full_name);
3639 FND_MSG_PUB.Add;
3640 END IF;
3641
3642 --Standard check of commit
3643 IF FND_API.To_Boolean ( p_commit ) THEN
3644 COMMIT WORK;
3645 END IF;
3646 JTF_FM_UTL_V.PRINT_MESSAGE('End procedure start_request ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3647
3648 -- Debug Message
3649 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
3650 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_DEBUG_MESSAGE');
3651 FND_MESSAGE.Set_Token('ARG1', l_full_name||': End');
3652 FND_MSG_PUB.Add;
3653 END IF;
3654
3655 --Standard call to get message count and if count=1, get the message
3656 FND_MSG_PUB.count_and_get(
3657 p_encoded => FND_API.g_false,
3658 p_count => x_msg_count,
3659 p_data => x_msg_data
3660 );
3661 EXCEPTION
3662 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3663 ROLLBACK TO Start_Request;
3664 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3665 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
3666 -- Standard call to get message count and if count=1, get the message
3667 FND_MSG_PUB.count_and_get(
3668 p_encoded => FND_API.g_false,
3669 p_count => x_msg_count,
3670 p_data => x_msg_data
3671 );
3672 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3673 WHEN FND_API.G_EXC_ERROR THEN
3674 ROLLBACK TO Start_Request;
3675 x_return_status := FND_API.G_RET_STS_ERROR;
3676 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
3677 -- Standard call to get message count and if count=1, get the message
3678 FND_MSG_PUB.count_and_get(
3679 p_encoded => FND_API.g_false,
3680 p_count => x_msg_count,
3681 p_data => x_msg_data
3682 );
3683 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3684 WHEN OTHERS THEN
3685 ROLLBACK TO Start_Request;
3686 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
3687 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
3688 IF FND_MSG_PUB.Check_Msg_Level
3689 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
3690 THEN
3691 FND_MSG_PUB.Add_Exc_Msg
3692 (G_PKG_NAME, l_api_name);
3693 END IF;
3694 -- Standard call to get message count and if count=1, get the message
3695 FND_MSG_PUB.count_and_get(
3696 p_encoded => FND_API.g_false,
3697 p_count => x_msg_count,
3698 p_data => x_msg_data
3699 );
3700 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
3701 END Start_Request;
3702
3703
3704 ---------------------------------------------------------------
3705 -- PROCEDURE
3706 -- Get_Content_XML
3707 --
3708 -- HISTORY
3709 -- 10/01/99 nyalaman Create.
3710 ---------------------------------------------------------------
3711
3712 PROCEDURE Get_Content_XML
3713 (
3714 p_api_version IN NUMBER,
3715 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
3716 p_commit IN VARCHAR2 := FND_API.G_FALSE,
3717 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
3718 x_return_status OUT NOCOPY VARCHAR2,
3719 x_msg_count OUT NOCOPY NUMBER,
3720 x_msg_data OUT NOCOPY VARCHAR2,
3721 p_content_id IN NUMBER,
3722 p_content_nm IN VARCHAR2 := FND_API.G_MISS_CHAR,
3723 p_document_type IN VARCHAR2 := FND_API.G_MISS_CHAR, -- depreciated
3724 p_quantity IN NUMBER := 1,
3725 p_media_type IN VARCHAR2,
3726 p_printer IN VARCHAR2 := FND_API.G_MISS_CHAR,
3727 p_email IN VARCHAR2 := FND_API.G_MISS_CHAR,
3728 p_fax IN VARCHAR2 := FND_API.G_MISS_CHAR,
3729 p_file_path IN VARCHAR2 := FND_API.G_MISS_CHAR,
3730 p_user_note IN VARCHAR2 := FND_API.G_MISS_CHAR,
3731 p_content_type IN VARCHAR2,
3732 p_bind_var IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
3733 p_bind_val IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
3734 p_bind_var_type IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
3735 p_request_id IN NUMBER,
3736 x_content_xml OUT NOCOPY VARCHAR2,
3737 p_content_source IN VARCHAR2 := 'mes',
3738 p_version IN NUMBER
3739 ) IS
3740 l_api_name CONSTANT VARCHAR2(30) := 'Get_Content_XML';
3741 l_api_version CONSTANT NUMBER := 1.0;
3742 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
3743 --
3744 l_user_id NUMBER := -1;
3745 l_login_user_id NUMBER := -1;
3746 l_login_user_status NUMBER;
3747 l_Error_Msg VARCHAR2(2000);
3748 --
3749 l_message VARCHAR2(32767) := '';
3750 l_temp NUMBER := 0;
3751 l_count NUMBER := 0;
3752 l_destination VARCHAR2(200) := NULL;
3753 l_content_nm VARCHAR2(200);
3754 l_meaning VARCHAR2(200);
3755 l_query_id NUMBER;
3756 l_media VARCHAR2(30);
3757 l_version NUMBER;
3758 --
3759 b VARCHAR2(1);
3760 c VARCHAR2(1);
3761 a VARCHAR2(2);
3762
3763 x_citem_name VARCHAR2(250);
3764 x_html VARCHAR2(2000);
3765 x_query_id NUMBER;
3766 l_email_format VARCHAR2(50) := NULL;
3767 bind_set NUMBER;
3768
3769 G_MIME_TBL JTF_VARCHAR2_TABLE_100:= JTF_VARCHAR2_TABLE_100('APPLICATION/RTF', 'APPLICATION/X-RTF', 'TEXT/RICHTEXT','APPLICATION/OCTET-STREAM');
3770 --
3771 -- Moved all cursors to JTF_FM_UTILITY PACKAGE
3772
3773 BEGIN
3774
3775 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3776
3777 -- Standard begin of API savepoint
3778 SAVEPOINT Content_XML;
3779
3780 -- Select end-of-line character from dual
3781 /* select chr(13) cr, chr(10) lf into b, c from dual;
3782 a:= b||c; */
3783 a := '';
3784
3785 -- Check for API version compatibility
3786 IF NOT FND_API.Compatible_API_Call (l_api_version,
3787 p_api_version,
3788 l_api_name,
3789 G_PKG_NAME)
3790 THEN
3791 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3792 END IF; -- NOT FND_API.Compatible_API_Call
3793
3794 --Initialize message list if p_init_msg_list is TRUE.
3795 IF FND_API.To_Boolean (p_init_msg_list)
3796 THEN
3797 FND_MSG_PUB.initialize;
3798 END IF; -- FND_API.To_Boolean
3799
3800 -- Debug Message
3801 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
3802 THEN
3803 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
3804 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
3805 FND_MSG_PUB.Add;
3806 END IF; -- FND_MSG_PUB.Check_Msg_level
3807
3808 -- Initialize API return status to success
3809 x_return_status := FND_API.G_RET_STS_SUCCESS;
3810
3811 -- Check if Content_id parameter is NULL. Content_id represents the
3812 -- unique identifier for getting the document from MES tables
3813 IF (p_content_id IS NULL)
3814 THEN
3815 l_Error_Msg := 'Must pass p_content_id parameter';
3816 JTF_FM_UTL_V.PRINT_MESSAGE('Must pass p_content_id parameter ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3817
3818 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3819 THEN
3820 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_CONTENT_ID');
3821 FND_MSG_PUB.Add;
3822 END IF; -- IF FND_MSG_PUB.check_msg_level
3823
3824 RAISE FND_API.G_EXC_ERROR;
3825
3826 -- check if the media_type paramater is NULL. No point in processing a
3827 -- request without a media_type
3828 ELSIF (p_media_type IS NULL) -- IF (p_media_type IS NULL)
3829 THEN
3830 l_Error_Msg := 'Must pass p_media_type parameters';
3831 JTF_FM_UTL_V.PRINT_MESSAGE('Must pass p_media_type parameter ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3832
3833 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3834 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_MEDIA_TYPE');
3835 FND_MSG_PUB.Add;
3836 END IF; -- IF FND_MSG_PUB.check_msg_level
3837
3838 RAISE FND_API.G_EXC_ERROR;
3839 -- Must pass a request_type
3840 ELSIF (p_content_type IS NULL) -- IF (p_content_id IS NULL)
3841 THEN
3842 l_Error_Msg := 'Must pass p_content_type parameters';
3843 JTF_FM_UTL_V.PRINT_MESSAGE('Must pass p_content_type parameter ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3844
3845 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3846 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_CONTENTTYPE');
3847 FND_MSG_PUB.Add;
3848 END IF; -- IF FND_MSG_PUB.check_msg_level
3849
3850 RAISE FND_API.G_EXC_ERROR;
3851 ELSIF (p_request_id IS NULL) -- IF (p_request_id IS NULL)
3852 THEN
3853 l_Error_Msg := 'Must pass p_request_id parameters';
3854 JTF_FM_UTL_V.PRINT_MESSAGE('Must pass p_request_id parameter ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3855
3856 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
3857 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
3858 FND_MSG_PUB.Add;
3859 END IF; -- IF _FND_MSG_PUB.check_msg_level
3860
3861 RAISE FND_API.G_EXC_ERROR;
3862 ELSE -- IF (p_content_id IS NULL)
3863
3864 -- Start forming the XML Request for the content
3865
3866 l_message := '<item>'||a;
3867
3868 l_message := l_message||' <media_type>'||a;
3869
3870 -- Identify the media types requested
3871 IF (INSTR(p_media_type, 'PRINTER') > 0)
3872 THEN
3873 IF p_printer = FND_API.G_MISS_CHAR
3874 THEN
3875 l_message := l_message||'<printer>'||null||'</printer> '||a;
3876 ELSE -- IF p_printer
3877 l_message := l_message||'<printer>'||p_printer||'</printer> '||a;
3878 END IF; -- IF p_printer
3879
3880 l_destination := l_destination ||', '|| p_printer;
3881 l_temp := l_temp + 1;
3882 END IF; -- IF (INSTR(p_media_type,
3883
3884 IF (INSTR(p_media_type, 'EMAIL') > 0)
3885 THEN
3886 IF p_email = FND_API.G_MISS_CHAR
3887 THEN
3888 l_message := l_message||'<email>'||null||'</email> '||a;
3889 ELSE -- IF p_email
3890 l_message := l_message||'<email>'||p_email||'</email> '||a;
3891 END IF; -- IF p_email
3892
3893 l_destination := l_destination ||', '|| p_email;
3894 l_temp := l_temp + 1;
3895 END IF; -- IF (INSTR(p_media_type
3896
3897 IF (INSTR(p_media_type, 'FAX') > 0)
3898 THEN
3899 IF p_fax = FND_API.G_MISS_CHAR
3900 THEN
3901 l_message := l_message||'<fax>'||null||'</fax> '||a;
3902 ELSE -- IF p_fax
3903 l_message := l_message||'<fax>'||p_fax||'</fax> '||a;
3904 END IF; -- IF p_fax
3905
3906 l_destination := l_destination ||', '|| p_fax;
3907 l_temp := l_temp + 1;
3908 END IF; -- IF (INSTR(p_media_type
3909
3910 -- Check if atleast one valid media type has been specified
3911 IF (l_temp = 0)
3912 THEN
3913 l_Error_Msg := 'Invalid media type specified. Allowed media_types are EMAIL, FAX, PRINTER';
3914 JTF_FM_UTL_V.PRINT_MESSAGE('Invalid media type specified. Allowed media_types are EMAIL, FAX, PRINTER' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3915
3916 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
3917 THEN
3918 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_INVALID_MEDIATYPE');
3919 FND_MSG_PUB.Add;
3920 END IF; -- IF FND_MSG_PUB.check_msg_level
3921
3922 RAISE FND_API.G_EXC_ERROR;
3923
3924 END IF; -- IF (l_temp = 0)
3925
3926 l_message := l_message||'</media_type> '||a;
3927
3928 -- New XML code added by sxkrishn 10-25-02
3929 JTF_FM_UTL_V.PRINT_MESSAGE('Right after media has been formed' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3930
3931
3932 l_message := l_message||'<item_content id="'|| p_content_id || '" '||a;
3933
3934 l_message := l_message||' quantity="'||to_char(p_quantity)||'" user_note="'|| REPLACE_TAG(p_user_note)||'" source ="' || p_content_source || '" '||a;
3935
3936 IF p_version <> FND_API.G_MISS_NUM THEN
3937 l_message := l_message||' version_id="' || p_version || '"' || a;
3938
3939 END IF;
3940
3941 l_message := l_message|| ' >'||a;
3942
3943 l_media := JTF_FM_UTL_V.GET_MEDIA(l_message);
3944 --dbms_output.PUT_LINE('media type is :' || l_media);
3945
3946
3947 -- Fill in based on whether it is OCM or MES
3948 IF (upper(p_content_source) = 'OCM') THEN
3949 -- Following changes were made for Bug # 3211971
3950 -- If version id passed is 1 we will pass null so that the live version will be picked up
3951 IF p_version = 1 OR p_version = 1.0
3952 OR p_version = FND_API.G_MISS_NUM THEN
3953
3954 l_version := null;
3955
3956 ELSE
3957
3958 l_version := p_version;
3959
3960 END IF;
3961
3962 --- First try to get the Renditons
3963 -- If that is unsuccessful, then use the old method to get the OCM details
3964 JTF_FM_UTL_V.PRINT_MESSAGE('Trying to get OCM Renditions detail',
3965 JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3966
3967 JTF_FM_OCM_REND_REQ.GET_OCM_REND_DETAILS(
3968 p_content_id,
3969 p_request_id,
3970 p_user_note,
3971 p_quantity,
3972 l_media,
3973 l_version,
3974 p_content_nm,
3975 l_email_format,
3976 x_citem_name ,
3977 x_query_id,
3978 x_html,
3979 x_return_status ,
3980 x_msg_count ,
3981 x_msg_data);
3982
3983 IF(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
3984
3985 JTF_FM_UTL_V.PRINT_MESSAGE('Got back the details from Renditons Successfully',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3986 JTF_FM_UTL_V.PRINT_MESSAGE('Item present in OCM Rend Repository' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3987
3988 l_message := l_message|| x_html;
3989
3990 ELSE
3991 JTF_FM_UTL_V.PRINT_MESSAGE('No details from Renditons',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3992 JTF_FM_UTL_V.PRINT_MESSAGE('So, will try to get them the old way',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
3993
3994 GET_OCM_ITEM_DETAILS(p_content_id,
3995 p_request_id,
3996 p_user_note,
3997 p_quantity,
3998 l_media,
3999 l_version,
4000 p_content_nm,
4001 x_citem_name ,
4002 x_query_id,
4003 x_html,
4004 x_return_status ,
4005 x_msg_count ,
4006 x_msg_data
4007 );
4008 IF(x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4009 JTF_FM_UTL_V.PRINT_MESSAGE('Got OCM Items details the old way successfully',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4010 JTF_FM_UTL_V.PRINT_MESSAGE('Item present in OCM Repository' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4011
4012 l_message := l_message|| x_html;
4013 ELSIF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4014 RAISE FND_API.G_EXC_ERROR;
4015 ELSE
4016 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4017
4018 JTF_FM_UTL_V.PRINT_MESSAGE('Item NOT present in OCM Repository',JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4019 END IF;
4020 END IF;
4021
4022 ELSE
4023 JTF_FM_UTL_V.PRINT_MESSAGE('Check MES Repository',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4024 GET_MES_ITEM_DETAILS(p_content_id,
4025 p_content_type,
4026 p_request_id,
4027 p_user_note,
4028 p_quantity,
4029 l_media,
4030 x_citem_name ,
4031 x_query_id,
4032 x_html,
4033 x_return_status ,
4034 x_msg_count ,
4035 x_msg_data
4036 );
4037 IF(x_return_status = FND_API.G_RET_STS_SUCCESS)
4038 THEN
4039 JTF_FM_UTL_V.PRINT_MESSAGE('Item present in MES Repository',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4040 l_message := l_message|| x_html;
4041 ELSIF(x_return_status = FND_API.G_RET_STS_ERROR)
4042 THEN
4043 JTF_FM_UTL_V.PRINT_MESSAGE('Item NOT present in MES Repository',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4044 RAISE FND_API.G_EXC_ERROR;
4045 ELSE
4046 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4047 JTF_FM_UTL_V.PRINT_MESSAGE('Item NOT present in MES Repository',JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4048 END IF;
4049 END IF;
4050
4051
4052 IF (p_bind_var.count <> 0)
4053 THEN
4054 bind_set := 0;
4055 FOR i IN 1..p_bind_var.count LOOP
4056
4057 IF (p_bind_var(i) is not null)
4058 THEN
4059 IF (bind_set = 0)
4060 THEN
4061 bind_set := 1;
4062 l_message := l_message||'<bind> '||a;
4063 l_message := l_message||'<record> '||a;
4064 END IF;
4065
4066
4067 l_message := l_message||'<bind_var bind_type="'
4068 ||REPLACE_TAG(p_bind_var_type(i));
4069 l_message := l_message||'" bind_object="'
4070 ||REPLACE_TAG(p_bind_var(i))||'" > '
4071 ||REPLACE_TAG(p_bind_val(i))||'</bind_var>'||a;
4072
4073 END IF; -- For p_bind_var(i) has valid value.
4074 END LOOP; -- FOR i IN
4075 IF (bind_set = 1)
4076 THEN
4077 l_message := l_message||'</record> '||a;
4078 l_message := l_message||'</bind> '||a;
4079 END IF;
4080 END IF; -- IF (p_bind_var.count
4081
4082 l_message := l_message||'</item_content> '||a;
4083 l_message := l_message||'</item> '||a;
4084
4085 --dbms_output.put_line('created the XML');
4086 -- End of the XML Request
4087
4088 --SPLIT_LINE(l_message,80);
4089
4090 x_content_xml := l_message;
4091
4092 END IF; -- IF (p_content_id IS NULL)
4093
4094 -- Success message
4095 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
4096 THEN
4097 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
4098 FND_MESSAGE.Set_Token('ARG1', l_full_name);
4099 FND_MSG_PUB.Add;
4100 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
4101
4102 --Standard check of commit
4103
4104 IF FND_API.To_Boolean ( p_commit )
4105 THEN
4106 COMMIT WORK;
4107 END IF; -- IF FND_API.To_Boolean
4108
4109 -- Debug Message
4110 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4111 THEN
4112 FND_MESSAGE.Set_Name('FFM','JTF_FM_API_DEBUG_MESSAGE');
4113 FND_MESSAGE.Set_Token('ROW',l_full_name||': End');
4114 FND_MSG_PUB.Add;
4115 END IF; -- IF FND_MSG_PUB.Check_Msg_level
4116
4117 --Standard call to get message count and if count=1, get the message
4118 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4119 p_count => x_msg_count,
4120 p_data => x_msg_data
4121 );
4122
4123 EXCEPTION
4124 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
4125 THEN
4126 ROLLBACK TO Content_XML;
4127 x_content_xml := NULL;
4128 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4129 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4130 -- Standard call to get message count and if count=1, get the message
4131 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4132 p_count => x_msg_count,
4133 p_data => x_msg_data
4134 );
4135 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4136
4137 WHEN FND_API.G_EXC_ERROR
4138 THEN
4139 ROLLBACK TO Content_XML;
4140 x_content_xml := NULL;
4141 x_return_status := FND_API.G_RET_STS_ERROR;
4142 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4143 -- Standard call to get message count and if count=1, get the message
4144 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4145 p_count => x_msg_count,
4146 p_data => x_msg_data
4147 );
4148 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4149
4150 WHEN OTHERS
4151 THEN
4152 ROLLBACK TO Content_XML;
4153 x_content_xml := NULL;
4154 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4155 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
4156
4157 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4158 THEN
4159 FND_MSG_PUB.Add_Exc_Msg
4160 (G_PKG_NAME, l_api_name);
4161 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
4162
4163 -- Standard call to get message count and if count=1, get the message
4164 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4165 p_count => x_msg_count,
4166 p_data => x_msg_data
4167 );
4168 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4169
4170 JTF_FM_UTL_V.PRINT_MESSAGE('END ' || l_full_name , JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4171
4172 END Get_Content_XML;
4173
4174 ---------------------------------------------------------------
4175 -- PROCEDURE
4176 -- Get_Content_XML
4177 --
4178 -- HISTORY
4179 -- 10/01/99 nyalaman Create.
4180 ---------------------------------------------------------------
4181
4182 PROCEDURE Get_Content_XML
4183 (
4184 p_api_version IN NUMBER,
4185 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4186 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4187 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4188 x_return_status OUT NOCOPY VARCHAR2,
4189 x_msg_count OUT NOCOPY NUMBER,
4190 x_msg_data OUT NOCOPY VARCHAR2,
4191 p_content_id IN NUMBER,
4192 p_content_nm IN VARCHAR2 := FND_API.G_MISS_CHAR,
4193 p_document_type IN VARCHAR2 := FND_API.G_MISS_CHAR, -- depreciated
4194 p_quantity IN NUMBER := 1,
4195 p_media_type IN VARCHAR2,
4196 p_printer IN VARCHAR2 := FND_API.G_MISS_CHAR,
4197 p_email IN VARCHAR2 := FND_API.G_MISS_CHAR,
4198 p_fax IN VARCHAR2 := FND_API.G_MISS_CHAR,
4199 p_file_path IN VARCHAR2 := FND_API.G_MISS_CHAR,
4200 p_user_note IN VARCHAR2 := FND_API.G_MISS_CHAR,
4201 p_content_type IN VARCHAR2,
4202 p_bind_var IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
4203 p_bind_val IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
4204 p_bind_var_type IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
4205 p_request_id IN NUMBER,
4206 x_content_xml OUT NOCOPY VARCHAR2
4207 ) IS
4208 l_content_source VARCHAR2(30) := 'mes';
4209 l_body VARCHAR2(30) := 'no';
4210 l_version NUMBER := FND_API.G_MISS_NUM;
4211 l_api_name CONSTANT varchar2(100) := 'GET_CONTENT_XML';
4212 l_full_name CONSTANT varchar2(2000) := G_PKG_NAME || '.' || l_api_name;
4213
4214 BEGIN
4215 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4216 Get_Content_XML
4217 (
4218 p_api_version,
4219 p_init_msg_list,
4220 p_commit,
4221 p_validation_level,
4222 x_return_status,
4223 x_msg_count,
4224 x_msg_data,
4225 p_content_id ,
4226 p_content_nm,
4227 p_document_type, -- depreciated
4228 p_quantity,
4229 p_media_type,
4230 p_printer,
4231 p_email,
4232 p_fax,
4233 p_file_path,
4234 p_user_note,
4235 p_content_type,
4236 p_bind_var,
4237 p_bind_val,
4238 p_bind_var_type,
4239 p_request_id,
4240 x_content_xml,
4241 l_content_source,
4242 l_version);
4243
4244 END Get_Content_XML;
4245
4246 --Utility function to get the database encoding:
4247
4248
4249
4250 ---------------------------------------------------------------
4251 -- PROCEDURE
4252 -- Send_Request (New)
4253 --
4254 -- HISTORY
4255 -- 10/01/99 nyalaman Create.
4256 -- 05/07/01 Colin Furtaw overloaded
4257 -- 10/29/02 Sushila Krishnamurthi Overloaded
4258 ---------------------------------------------------------------
4259
4260 PROCEDURE Send_Request
4261 (p_api_version IN NUMBER,
4262 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4263 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4264 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4265 x_return_status OUT NOCOPY VARCHAR2,
4266 x_msg_count OUT NOCOPY NUMBER,
4267 x_msg_data OUT NOCOPY VARCHAR2,
4268 p_template_id IN NUMBER := FND_API.G_MISS_NUM,
4269 p_subject IN VARCHAR2 := FND_API.G_MISS_CHAR,
4270 p_party_id IN NUMBER := FND_API.G_MISS_NUM,
4271 p_party_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
4272 p_user_id IN NUMBER,
4273 p_priority IN NUMBER := G_PRIORITY_REGULAR,
4274 p_source_code_id IN NUMBER := FND_API.G_MISS_NUM,
4275 p_source_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
4276 p_object_type IN VARCHAR2 := FND_API.G_MISS_CHAR,
4277 p_object_id IN NUMBER := FND_API.G_MISS_NUM,
4278 p_order_id IN NUMBER := FND_API.G_MISS_NUM,
4279 p_doc_id IN NUMBER := FND_API.G_MISS_NUM,
4280 p_doc_ref IN VARCHAR2 := FND_API.G_MISS_CHAR,
4281 p_server_id IN NUMBER := FND_API.G_MISS_NUM,
4282 p_queue_response IN VARCHAR2 := 'S',
4283 p_extended_header IN VARCHAR2 := FND_API.G_MISS_CHAR,
4284 p_content_xml IN VARCHAR2,
4285 p_request_id IN NUMBER,
4286 p_preview IN VARCHAR2 := FND_API.G_FALSE
4287 ) IS
4288 l_api_name CONSTANT VARCHAR2(30) := 'Submit_Single_Request';
4289 l_api_version CONSTANT NUMBER := 1.0;
4290 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
4291 l_fulfill_electronic_rec JTF_FM_OCM_REQUEST_GRP.FULFILL_ELECTRONIC_REC_TYPE;
4292 l_fm_pvt_rec JTF_FM_UTL_V.FM_PVT_REC_TYPE;
4293 l_error_msg VARCHAR2(2000);
4294
4295 BEGIN
4296 -- Standard begin of API savepoint
4297 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN ' || l_full_name , JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
4298 --
4299 SAVEPOINT SEND_Request;
4300
4301 IF p_template_id <> FND_API.G_MISS_NUM THEN
4302 l_fulfill_electronic_rec.template_id := p_template_id;
4303 END IF;
4304 IF p_object_type <> FND_API.G_MISS_CHAR THEN
4305 l_fulfill_electronic_rec.object_type := p_object_type;
4306 END IF;
4307 IF p_object_id <> FND_API.G_MISS_NUM THEN
4308 l_fulfill_electronic_rec.object_id := p_object_id;
4309 END IF;
4310 IF p_source_code <> FND_API.G_MISS_CHAR THEN
4311 l_fulfill_electronic_rec.source_code := p_source_code;
4312 END IF;
4313 IF p_source_code_id <> FND_API.G_MISS_NUM THEN
4314 l_fulfill_electronic_rec.source_code_id := p_source_code_id;
4315 END IF;
4316 IF p_user_id <> FND_API.G_MISS_NUM THEN
4317 l_fulfill_electronic_rec.requestor_id := p_user_id;
4318 END IF;
4319 IF p_order_id <> FND_API.G_MISS_NUM THEN
4320 l_fulfill_electronic_rec.order_id := p_order_id;
4321 END IF;
4322 IF p_subject <> FND_API.G_MISS_CHAR THEN
4323 l_fulfill_electronic_rec.subject := p_subject;
4324 END IF;
4325 IF p_extended_header <> FND_API.G_MISS_CHAR THEN
4326 l_fulfill_electronic_rec.extended_header := p_extended_header;
4327 END IF;
4328
4329 IF p_content_xml<> FND_API.G_MISS_CHAR THEN
4330 l_fm_pvt_rec.content_xml := p_content_xml;
4331 END IF;
4332 IF p_request_id <> FND_API.G_MISS_NUM THEN
4333 l_fm_pvt_rec.request_id := p_request_id ;
4334 END IF;
4335 IF p_party_id <> FND_API.G_MISS_NUM THEN
4336 l_fm_pvt_rec.party_id := p_party_id ;
4337 END IF;
4338
4339 IF p_queue_response <> FND_API.G_MISS_CHAR THEN
4340 IF p_queue_response = 'T' THEN
4341 l_fm_pvt_rec.queue := 'S';
4342 ELSE
4343 l_fm_pvt_rec.queue := p_queue_response;
4344 END IF;
4345 ELSIF p_queue_response IS NULL THEN
4346 l_fm_pvt_rec.queue := 'S';
4347 ELSE
4348 l_fm_pvt_rec.queue := p_queue_response;
4349 END IF;
4350
4351 IF p_preview <> FND_API.G_MISS_CHAR THEN
4352 l_fm_pvt_rec.preview := p_preview;
4353 END IF;
4354 IF p_priority <> FND_API.G_MISS_NUM THEN
4355 l_fm_pvt_rec.priority := p_priority;
4356 END IF;
4357 IF p_doc_id <> FND_API.G_MISS_NUM THEN
4358 l_fm_pvt_rec.doc_ref := p_doc_ref;
4359 l_fm_pvt_rec.doc_id := p_doc_id;
4360 END IF;
4361
4362 -- Details of this change are documented in Bug #2763448
4363 -- The logic is this API will be called only when
4364 -- the 3 step call(start,get_contentxml, send_request) approach is used
4365 -- And in those cases we want the server to not use the stoplist
4366 -- This flag bypasses the TCA check list
4367
4368 l_fulfill_electronic_rec.stop_list_bypass := 'stoplist';
4369
4370 JTF_FM_UTL_V.FM_SUBMIT_REQ_V1
4371 (p_api_version ,
4372 p_init_msg_list,
4373 p_commit,
4374 x_return_status,
4375 x_msg_count,
4376 x_msg_data,
4377 l_fulfill_electronic_rec,
4378 l_fm_pvt_rec
4379
4380 );
4381
4382 IF (x_return_status = FND_API.G_RET_STS_SUCCESS) THEN
4383
4384 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
4385 THEN
4386 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
4387 FND_MESSAGE.Set_Token('ARG1', l_full_name);
4388 FND_MSG_PUB.Add;
4389 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
4390
4391 --Standard check of commit
4392 IF FND_API.To_Boolean ( p_commit )
4393 THEN
4394 COMMIT WORK;
4395 END IF; -- IF FND_API.To_Boolean
4396 ELSIF(x_return_status = FND_API.G_RET_STS_ERROR) THEN
4397
4398 RAISE FND_API.G_EXC_ERROR;
4399 ELSE
4400 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4401
4402
4403 END IF;
4404
4405 -- Debug Message
4406 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4407 THEN
4408 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
4409 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
4410 FND_MSG_PUB.Add;
4411 END IF; -- IF FND_MSG.PUB.Check_Msg_level
4412
4413 --Standard call to get message count and if count=1, get the message
4414 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4415 p_count => x_msg_count,
4416 p_data => x_msg_data
4417 );
4418 EXCEPTION
4419
4420 WHEN FND_API.G_EXC_UNEXPECTED_ERROR
4421 THEN
4422 ROLLBACK TO Send_Request;
4423 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4424 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4425 -- Standard call to get message count and if count=1, get the message
4426 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4427 p_count => x_msg_count,
4428 p_data => x_msg_data
4429 );
4430 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4431
4432 WHEN FND_API.G_EXC_ERROR
4433 THEN
4434 ROLLBACK TO Send_Request;
4435 x_return_status := FND_API.G_RET_STS_ERROR;
4436 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4437 JTF_FM_UTL_V.PRINT_MESSAGE('Expected Error Occured'||l_Error_Msg,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
4438 -- Standard call to get message count and if count=1, get the message
4439 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
4440 p_count => x_msg_count,
4441 p_data => x_msg_data
4442 );
4443 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4444
4445 WHEN OTHERS
4446 THEN
4447 ROLLBACK TO Send_Request;
4448 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4449 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
4450
4451 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4452 THEN
4453 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
4454 END IF; -- IF FND_MSG_PUB.Check_Msg_Level
4455
4456 -- Standard call to get message count and if count=1, get the message
4457 FND_MSG_PUB.Count_And_Get(p_encoded => FND_API.g_false,
4458 p_count => x_msg_count,
4459 p_data => x_msg_data
4460 );
4461 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4462 JTF_FM_UTL_V.PRINT_MESSAGE('END'||l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4463 END Send_Request;
4464
4465
4466 ------------------------------------------------------------------------------------------------
4467 -- PROCEDURE
4468 -- Submit_Request
4469 --
4470 -- HISTORY
4471 -- 10/01/99 nyalaman Create.
4472 ---------------------------------------------------------------
4473
4474 PROCEDURE Submit_Request
4475 (p_api_version IN NUMBER,
4476 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4477 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4478 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4479 x_return_status OUT NOCOPY VARCHAR2,
4480 x_msg_count OUT NOCOPY NUMBER,
4481 x_msg_data OUT NOCOPY VARCHAR2,
4482 p_template_id IN NUMBER := FND_API.G_MISS_NUM,
4483 p_subject IN VARCHAR2 := FND_API.G_MISS_CHAR,
4484 p_party_id IN NUMBER := FND_API.G_MISS_NUM,
4485 p_party_name IN VARCHAR2 := FND_API.G_MISS_CHAR,
4486 p_user_id IN NUMBER,
4487 p_priority IN NUMBER := G_PRIORITY_REGULAR,
4488 p_source_code_id IN NUMBER := FND_API.G_MISS_NUM,
4489 p_source_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
4490 p_object_type IN VARCHAR2 := FND_API.G_MISS_CHAR,
4491 p_object_id IN NUMBER := FND_API.G_MISS_NUM,
4492 p_order_id IN NUMBER := FND_API.G_MISS_NUM,
4493 p_doc_id IN NUMBER := FND_API.G_MISS_NUM,
4494 p_doc_ref IN VARCHAR2 := FND_API.G_MISS_CHAR,
4495 p_server_id IN NUMBER := FND_API.G_MISS_NUM,
4496 p_queue_response IN VARCHAR2 := FND_API.G_FALSE,
4497 p_extended_header IN VARCHAR2 := FND_API.G_MISS_CHAR,
4498 p_content_xml IN VARCHAR2,
4499 p_request_id IN NUMBER
4500 ) IS
4501 l_queue_response VARCHAR2(2) := 'S';
4502 l_api_name CONSTANT varchar2(100) := 'SUBMIT_REQUEST';
4503 l_full_name CONSTANT varchar2(2000) := G_PKG_NAME || '.' || l_api_name;
4504 --
4505 BEGIN
4506 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN'||l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4507 JTF_FM_UTL_V.PRINT_MESSAGE('CALLING SEND_REQUEST:',JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4508 Send_Request(p_api_version,
4509 p_init_msg_list,
4510 p_commit,
4511 p_validation_level,
4512 x_return_status,
4513 x_msg_count,
4514 x_msg_data,
4515 p_template_id,
4516 p_subject,
4517 p_party_id,
4518 p_party_name,
4519 p_user_id,
4520 p_priority,
4521 p_source_code_id,
4522 p_source_code,
4523 p_object_type,
4524 p_object_id,
4525 p_order_id,
4526 p_doc_id,
4527 p_doc_ref,
4528 p_server_id,
4529 l_queue_response,
4530 p_extended_header,
4531 p_content_xml,
4532 p_request_id,
4533 FND_API.G_FALSE
4534 );
4535
4536 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4537 END Submit_Request;
4538
4539 ---------------------------------------------------------------
4540 -- PROCEDURE
4541 -- Submit_Previewed_Request
4542 --
4543 -- HISTORY
4544 -- 05-26-2001 Colin Furtaw created
4545 ---------------------------------------------------------------
4546
4547 PROCEDURE Submit_Previewed_Request(
4548 p_api_version IN NUMBER,
4549 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4550 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4551 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4552 x_return_status OUT NOCOPY VARCHAR2,
4553 x_msg_count OUT NOCOPY NUMBER,
4554 x_msg_data OUT NOCOPY VARCHAR2,
4555 p_request_id IN NUMBER
4556 ) IS
4557 l_api_name CONSTANT VARCHAR2(30) := 'SUBMIT_PREVIEWED_REQUEST';
4558 l_api_version CONSTANT NUMBER := 1.0;
4559 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
4560 --
4561 l_user_id NUMBER := -1;
4562 l_login_user_id NUMBER := -1;
4563 l_login_user_status NUMBER;
4564 l_Error_Msg VARCHAR2(2000);
4565 --
4566 l_message1 VARCHAR2(32767);
4567 l_message2 VARCHAR2(32767);
4568 l_request_queue VARCHAR2(100);
4569 l_response_queue VARCHAR2(100);
4570 l_cnt NUMBER := 0;
4571 l_enqueue_options dbms_aq.enqueue_options_t;
4572 l_message_properties dbms_aq.message_properties_t;
4573 l_message_handle RAW(16);
4574 l_mesg RAW(32767);
4575 l_priority NUMBER;
4576 l_server_id NUMBER;
4577 l_submit_dt DATE;
4578 l_template_id NUMBER;
4579 l_req_user_id NUMBER;
4580 l_meaning VARCHAR2(100) := NULL;
4581 l_parser xmlparser.parser;
4582 l_doc xmldom.domdocument;
4583 l_doc_elem xmldom.domelement;
4584 l_request_clob CLOB;
4585 l_status VARCHAR2(15);
4586 l_xml VARCHAR2(32767);
4587 --
4588 CURSOR CREQ IS
4589 SELECT REQUEST_QUEUE_NAME, RESPONSE_QUEUE_NAME
4590 FROM JTF_FM_SERVICE
4591 WHERE
4592 SERVER_ID = l_server_id;
4593
4594 CURSOR GETREQUEST IS
4595 SELECT REQUEST, SERVER_ID
4596 FROM JTF_FM_REQUEST_HISTORY_ALL
4597 WHERE
4598 HIST_REQ_ID = p_request_id;
4599
4600 BEGIN
4601
4602 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4603 -- Standard begin of API savepoint
4604 SAVEPOINT Previewed;
4605
4606 IF NOT FND_API.Compatible_API_Call (
4607 l_api_version,
4608 p_api_version,
4609 l_api_name,
4610 G_PKG_NAME)
4611 THEN
4612 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4613 END IF; -- IF NOT FND_API.Compatible_API_Call (
4614
4615 --Initialize message list if p_init_msg_list is TRUE.
4616 IF FND_API.To_Boolean (p_init_msg_list)
4617 THEN
4618 FND_MSG_PUB.initialize;
4619 END IF; -- IF FND_API.To_Boolean (p_init_msg_list)
4620
4621 -- Debug Message
4622 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4623 THEN
4624 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
4625 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
4626 FND_MSG_PUB.Add;
4627 END IF; -- IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW)
4628
4629 -- Initialize API return status to success
4630 x_return_status := FND_API.G_RET_STS_SUCCESS;
4631
4632 IF (p_request_id IS NULL)
4633 THEN
4634 l_Error_Msg := 'Must pass p_request_id parameter';
4635 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4636 THEN
4637 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
4638 FND_MSG_PUB.Add;
4639 END IF; -- IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4640 RAISE FND_API.G_EXC_ERROR;
4641 ELSE
4642
4643 OPEN GETREQUEST;
4644 FETCH GETREQUEST
4645 INTO
4646 l_request_clob, l_server_id;
4647
4648 IF (GETREQUEST%NOTFOUND)
4649 THEN
4650 CLOSE GETREQUEST;
4651 l_Error_Msg := 'Could not find REQUEST DATA in the database';
4652 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND', p_request_id);
4653
4654 RAISE FND_API.G_EXC_ERROR;
4655 ELSE
4656 -- dbms_output.put_line('server id : ' || l_server_id);
4657 -- Get the request and response queue names
4658 OPEN CREQ;
4659 FETCH CREQ
4660 INTO
4661 l_request_queue,
4662 l_response_queue;
4663
4664 -- Check if the queue names were available for the server_id
4665 IF(CREQ%NOTFOUND)
4666 THEN
4667 CLOSE CREQ;
4668 l_Error_Msg := 'Could not find queue_names in the database';
4669 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_QUEUE_NOTFOUND',l_server_id);
4670
4671 RAISE FND_API.G_EXC_ERROR;
4672 ELSE
4673 -- dbms_output.put_line('request queue : ' || l_request_queue);
4674 -- dbms_output.put_line('response queue : ' || l_response_queue);
4675
4676 l_parser := xmlparser.newparser();
4677 xmlparser.setvalidationmode(l_parser, TRUE);
4678 xmlparser.parseclob(l_parser, l_request_clob);
4679 l_doc := xmlparser.getdocument(l_parser);
4680 l_doc_elem := xmldom.getdocumentelement(l_doc);
4681 l_status := xmldom.getattribute(l_doc_elem, 'status');
4682 l_priority := xmldom.getattribute(l_doc_elem, 'priority');
4683 l_submit_dt := to_date(xmldom.getattribute(l_doc_elem, 'submit_time'),
4684 'YYYY-MM-DD HH24:MI:SS');
4685 -- dbms_output.put_line('Status : ' || l_status);
4686 -- dbms_output.put_line('Priority : ' || to_char(l_priority));
4687 -- dbms_output.put_line('Submit Time : ' || to_char(l_submit_dt));
4688
4689 -- Already has a status of 'PREVIEWED' in the XML.
4690 IF (INSTR(l_status, 'PREVIEWED') > 0)
4691 THEN
4692 l_Error_Msg := 'Preview has already been submitted';
4693 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4694 THEN
4695 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_ALREADY_PREVIEWED');
4696 FND_MSG_PUB.Add;
4697 END IF; -- IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
4698
4699 RAISE FND_API.G_EXC_ERROR;
4700
4701 -- Has a status of 'PREVIEW' in the XML. This is the one that will be
4702 -- honored
4703 ELSIF (INSTR(l_status, 'PREVIEW') > 0)
4704 THEN
4705 xmldom.setattribute(l_doc_elem, 'status', 'PREVIEWED');
4706 xmldom.writeToBuffer(l_doc, l_xml);
4707
4708 -- Convert the message to RAW so that it can be enqueued
4709 -- as RAW payload
4710 l_mesg := UTL_RAW.CAST_TO_RAW(l_xml);
4711 -- Set the default message properties
4712 l_message_properties.priority := l_priority;
4713 -- Enqueue the request in to the Request queue for the
4714 -- fulfillment Processor
4715 dbms_aq.enqueue(queue_name => l_request_queue,
4716 enqueue_options => l_enqueue_options,
4717 message_properties => l_message_properties,
4718 payload => l_mesg, msgid => l_message_handle);
4719
4720 l_meaning := 'PREVIEWED_SUBMITTED';
4721
4722 UPDATE JTF_FM_REQUEST_HISTORY_ALL
4723 SET
4724 outcome_code = 'PREVIEWED_SUBMITTED',
4725 outcome_desc = 'JTF_FM_API_PREVIEWED_SUBMITTED',
4726 last_update_date = sysdate
4727 WHERE
4728 hist_req_id = p_request_id
4729 AND
4730 submit_dt_tm = l_submit_dt;
4731
4732 UPDATE JTF_FM_STATUS_ALL
4733 SET
4734 request_status='PREVIEWED_SUBMITTED',
4735 last_update_date = sysdate
4736 WHERE
4737 request_id = p_request_id
4738 AND
4739 submit_dt_tm = l_submit_dt;
4740
4741 JTF_FM_UTL_V.PRINT_MESSAGE('Successfully enqueued the request',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
4742
4743 -- Had not been previewed
4744 ELSE
4745 l_Error_Msg := 'Trying to submit a non-previewed request';
4746 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_NOT_PREVIEWED' ,p_request_id);
4747
4748 END IF; -- IF (INSTR(l_status, 'PREVIEWED') > 0)
4749 CLOSE CREQ;
4750 END IF; -- IF(CREQ%NOTFOUND)
4751 CLOSE GETREQUEST;
4752 END IF; -- IF (GETREQUEST%NOTFOUND)
4753 END IF; -- IF (p_request_id IS NULL)
4754
4755 --Standard check of commit
4756 IF FND_API.To_Boolean ( p_commit ) THEN
4757 COMMIT WORK;
4758 END IF;
4759 -- Debug Message
4760 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
4761 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
4762 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
4763 FND_MSG_PUB.Add;
4764 END IF;
4765 -- Success message
4766 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
4767 THEN
4768 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
4769 FND_MESSAGE.Set_Token('ARG1', l_full_name);
4770 FND_MSG_PUB.Add;
4771 END IF;
4772
4773 --Standard call to get message count and if count=1, get the message
4774 FND_MSG_PUB.Count_And_Get (
4775 p_encoded => FND_API.g_false,
4776 p_count => x_msg_count,
4777 p_data => x_msg_data
4778 );
4779
4780 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_success) THEN
4781 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_PREVIEWED_SUBMITTED');
4782 FND_MSG_PUB.Add;
4783 END IF;
4784
4785 EXCEPTION
4786 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4787 ROLLBACK TO Previewed;
4788 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4789 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4790 -- Standard call to get message count and if count=1, get the message
4791 FND_MSG_PUB.Count_And_Get (
4792 p_encoded => FND_API.g_false,
4793 p_count => x_msg_count,
4794 p_data => x_msg_data
4795 );
4796 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4797 WHEN FND_API.G_EXC_ERROR THEN
4798 ROLLBACK TO Previewed;
4799 x_return_status := FND_API.G_RET_STS_ERROR;
4800 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
4801 -- Standard call to get message count and if count=1, get the message
4802 FND_MSG_PUB.Count_And_Get (
4803 p_encoded => FND_API.g_false,
4804 p_count => x_msg_count,
4805 p_data => x_msg_data
4806 );
4807 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4808 WHEN OTHERS THEN
4809 ROLLBACK TO Previewed;
4810 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
4811 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
4812 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
4813 THEN
4814 FND_MSG_PUB.Add_Exc_Msg(G_PKG_NAME, l_api_name);
4815 END IF;
4816 -- Standard call to get message count and if count=1, get the message
4817 FND_MSG_PUB.Count_And_Get (
4818 p_encoded => FND_API.g_false,
4819 p_count => x_msg_count,
4820 p_data => x_msg_data
4821 );
4822 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
4823
4824 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4825 END Submit_Previewed_Request;
4826
4827 ---------------------------------------------------------------
4828 -- PROCEDURE
4829 -- Resubmit_Request (Overloaded this method )
4830 -- OUT parameter is x_request_id
4831 --
4832 -- HISTORY
4833 -- 10/01/99 nyalaman Create.
4834 -- 10/24/02 sxkrishn modified the following for new schema mod
4835 -- Now creating new request id's for resubmitted requests
4836 -- x_request_id is a new out parameter
4837 -- Mod curosr to get new column values.
4838 ---------------------------------------------------------------
4839
4840 PROCEDURE Resubmit_Request(
4841 p_api_version IN NUMBER,
4842 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
4843 p_commit IN VARCHAR2 := FND_API.G_FALSE,
4844 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
4845 x_return_status OUT NOCOPY VARCHAR2,
4846 x_msg_count OUT NOCOPY NUMBER,
4847 x_msg_data OUT NOCOPY VARCHAR2,
4848 p_request_id IN NUMBER,
4849 x_request_id OUT NOCOPY NUMBER
4850
4851 ) IS
4852 l_api_name CONSTANT VARCHAR2(30) := 'RESUBMIT_REQUEST';
4853 l_api_version CONSTANT NUMBER := 1.0;
4854 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
4855 --
4856 l_user_id NUMBER := -1;
4857 l_login_user_id NUMBER := -1;
4858 l_login_user_status NUMBER;
4859 l_Error_Msg VARCHAR2(2000);
4860 --
4861 l_message1 VARCHAR2(32767);
4862 l_message2 VARCHAR2(32767);
4863 l_message3 VARCHAR2(32767);
4864 l_message4 VARCHAR2(32767);
4865 l_request_queue VARCHAR2(100);
4866 l_response_queue VARCHAR2(100);
4867 l_cnt NUMBER := 0;
4868 l_enqueue_options dbms_aq.enqueue_options_t;
4869 l_message_properties dbms_aq.message_properties_t;
4870 l_message_handle RAW(16);
4871 l_buffer VARCHAR2(32767);
4872 l_attachment BLOB;
4873 l_mesg RAW(32767);
4874 l_priority NUMBER;
4875 l_request CLOB;
4876 l_amount INTEGER;
4877 l_server_id NUMBER;
4878 l_submit_dt DATE;
4879 l_template_id NUMBER;
4880 l_req_user_id NUMBER;
4881 l_source_code_id NUMBER;
4882 l_source_code VARCHAR2(30);
4883 l_object_type VARCHAR2(30);
4884 l_object_id NUMBER;
4885 l_order_id NUMBER;
4886 l_requeue_count NUMBER;
4887 l_meaning VARCHAR2(100) := NULL;
4888 l_pos1 NUMBER := -1;
4889 l_pos2 NUMBER := -1;
4890 l_pos3 NUMBER := -1;
4891 l_pos4 NUMBER := -1;
4892 l_pos5 NUMBER := -1;
4893 l_request_type VARCHAR2(20);
4894 l_media_type VARCHAR2(30);
4895 a VARCHAR2(2) := '';
4896
4897 l_org_id NUMBER;
4898
4899 remove_query BOOLEAN := false;
4900 l_parser xmlparser.parser;
4901 l_doc xmldom.domdocument;
4902 l_doc_elem xmldom.domelement;
4903
4904 --
4905
4906 CURSOR CDATA IS
4907 SELECT
4908 REQUEST,
4909 PRIORITY,
4910 SERVER_ID,
4911 TEMPLATE_ID,
4912 USER_ID,
4913 SOURCE_CODE_ID,
4914 SOURCE_CODE,
4915 OBJECT_TYPE,
4916 OBJECT_ID,
4917 ORDER_ID,
4918 RESUBMIT_COUNT,
4919 REQUEST_TYPE,
4920 MEDIA_TYPE
4921 FROM JTF_FM_REQUEST_HISTORY_ALL
4922 WHERE
4923 HIST_REQ_ID = p_request_id;
4924
4925 BEGIN
4926 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
4927 -- Standard begin of API savepoint
4928 SAVEPOINT Resubmit;
4929
4930 IF NOT FND_API.Compatible_API_Call (
4931 l_api_version,
4932 p_api_version,
4933 l_api_name,
4934 G_PKG_NAME)
4935 THEN
4936 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4937 END IF;
4938
4939 --Initialize message list if p_init_msg_list is TRUE.
4940 IF FND_API.To_Boolean (p_init_msg_list) THEN
4941 FND_MSG_PUB.initialize;
4942 END IF;
4943
4944 -- Debug Message
4945 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
4946 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
4947 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
4948 FND_MSG_PUB.Add;
4949 END IF;
4950
4951 -- Initialize API return status to success
4952 x_return_status := FND_API.G_RET_STS_SUCCESS;
4953
4954 --Modified the following query as per bug 3651321
4955 select to_number(decode(substrb(userenv('CLIENT_INFO'),1,1),' ',null,substrb(userenv('CLIENT_INFO'),1,10)))
4956 into l_org_id
4957 from dual;
4958
4959 IF (p_request_id IS NULL) THEN
4960 l_Error_Msg := 'Must pass p_request_id parameter';
4961 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
4962 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
4963 FND_MSG_PUB.Add;
4964 END IF;
4965 RAISE FND_API.G_EXC_ERROR;
4966 ELSE
4967 -- Get data from request_history for the request_id passed.
4968 OPEN CDATA;
4969 FETCH CDATA
4970 INTO
4971 l_request,
4972 l_priority,
4973 l_server_id,
4974 l_template_id,
4975 l_req_user_id,
4976 l_source_code_id,
4977 l_source_code,
4978 l_object_type,
4979 l_object_id,
4980 l_order_id,
4981 l_requeue_count,
4982 l_request_type,
4983 l_media_type;
4984
4985
4986 JTF_FM_UTL_V.PRINT_MESSAGE('REQUEST PARAMS' || l_priority||l_template_id || l_request_type || l_media_type,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
4987 IF(CDATA%NOTFOUND) THEN
4988 CLOSE CDATA;
4989 l_Error_Msg := 'Could not find REQUEST DATA in the database';
4990 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND' ,p_request_id);
4991 RAISE FND_API.G_EXC_ERROR;
4992 ELSE
4993 -- Get the new request id for the resubmitted Request
4994 SELECT JTF_FM_REQUESTHISTID_S.NEXTVAL INTO x_request_id FROM DUAL;
4995 -- Get the request and response queue names
4996
4997 SELECT DECODE(l_request_type,'M', MASS_REQUEST_Q, 'B',BATCH_REQUEST_Q,'T',BATCH_REQUEST_Q, REQUEST_QUEUE_NAME)
4998 INTO l_request_queue
4999 FROM JTF_FM_SERVICE
5000 WHERE
5001 SERVER_ID = l_server_id;
5002
5003 JTF_FM_UTL_V.PRINT_MESSAGE('QUEUE is :' || l_request_queue,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5004 -- Check if the queue names were available for the server_id
5005 IF(l_request_queue IS NULL) THEN
5006
5007 l_Error_Msg := 'Could not find queue_names in the database';
5008 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_QUEUE_NOTFOUND',l_server_id);
5009
5010 RAISE FND_API.G_EXC_ERROR;
5011 ELSE
5012 -- Read the XML request from the CLOB
5013 l_amount := DBMS_LOB.GETLENGTH(l_request);
5014 JTF_FM_UTL_V.PRINT_MESSAGE('LOB LEngth' || l_amount,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5015 DBMS_LOB.READ (l_request, l_amount, 1, l_buffer);
5016 l_message_properties.priority := l_priority;
5017
5018
5019
5020 -- Get the timestamp and add it to the message
5021 l_submit_dt := sysdate;
5022
5023 l_parser := xmlparser.newparser();
5024 xmlparser.setvalidationmode(l_parser, FALSE);
5025 xmlparser.parseclob(l_parser, l_request);
5026 l_doc := xmlparser.getdocument(l_parser);
5027 l_doc_elem := xmldom.getdocumentelement(l_doc);
5028
5029 xmldom.setattribute(l_doc_elem, 'id', x_request_id );
5030 xmldom.setattribute(l_doc_elem, 'submit_time', to_char(l_submit_dt, 'YYYY-MM-DD HH24:MI:SS') );
5031
5032
5033 Modify_XML(l_doc,p_request_id,remove_query);
5034
5035 xmldom.writeToBuffer(l_doc, l_message1);
5036
5037 xmlparser.FREEPARSER(l_parser);
5038
5039 -- Enqueue the message into the request queue
5040 dbms_aq.enqueue(queue_name => l_request_queue,
5041 enqueue_options => l_enqueue_options,
5042 message_properties => l_message_properties,
5043 payload => UTL_RAW.CAST_TO_RAW(l_message1), msgid => l_message_handle);
5044
5045 l_meaning := 'RESUBMITTED';
5046
5047 -- Following modifications by sxkrishn
5048 --- Get a new request id for the resubmitted request
5049
5050 INSERT_REQ_CONTENTS(p_request_id,x_request_id);
5051 l_media_type := JTF_FM_UTL_V.GET_MEDIA_TYPE(l_message1);
5052
5053 INSERT INTO JTF_FM_REQUEST_HISTORY_ALL
5054 (
5055 MESSAGE_ID,
5056 SUBMIT_DT_TM,
5057 TEMPLATE_ID,
5058 USER_ID,
5059 PRIORITY,
5060 CREATION_DATE,
5061 CREATED_BY,
5062 LAST_UPDATE_DATE,
5063 LAST_UPDATED_BY,
5064 LAST_UPDATE_LOGIN,
5065 SOURCE_CODE_ID,
5066 SOURCE_CODE,
5067 OBJECT_TYPE,
5068 OBJECT_ID,
5069 ORDER_ID,
5070 SERVER_ID,
5071 RESUBMIT_COUNT,
5072 OUTCOME_CODE,
5073 HIST_REQ_ID,
5074 REQUEST,
5075 ORG_ID,
5076 OBJECT_VERSION_NUMBER,
5077 REQUEST_TYPE,
5078 PARENT_REQ_ID,
5079 MEDIA_TYPE)
5080 VALUES
5081 (
5082 l_message_handle,
5083 l_submit_dt,
5084 l_template_id,
5085 l_req_user_id,
5086 l_priority,
5087 l_submit_dt,
5088 FND_GLOBAL.USER_ID,
5089 l_submit_dt,
5090 FND_GLOBAL.USER_ID,
5091 FND_GLOBAL.CONC_LOGIN_ID,
5092 l_source_code_id,
5093 l_source_code,
5094 l_object_type,
5095 l_object_id,
5096 l_order_id,
5097 l_server_id,
5098 (l_requeue_count+1),
5099 l_meaning,
5100 x_request_id,
5101 empty_clob(),
5102 l_org_id,
5103 1,
5104 l_request_type,
5105 p_request_id,
5106 l_media_type);
5107
5108 -- Insert the XML request into the History record created above
5109 SELECT REQUEST INTO l_request
5110 FROM JTF_FM_REQUEST_HISTORY_ALL
5111 WHERE HIST_REQ_ID = x_request_id
5112 AND SUBMIT_DT_TM = l_submit_dt
5113 FOR UPDATE;
5114 DBMS_LOB.OPEN(l_request, DBMS_LOB.LOB_READWRITE);
5115 l_amount := LENGTH(l_message1);
5116 DBMS_LOB.WRITE (l_request, l_amount, 1, l_message1);
5117 DBMS_LOB.CLOSE (l_request);
5118
5119 -- Create a new record in the status table.
5120 INSERT INTO JTF_FM_STATUS_ALL
5121 (
5122 SUBMIT_DT_TM,
5123 TEMPLATE_ID,
5124 USER_ID,
5125 PRIORITY,
5126 CREATION_DATE,
5127 CREATED_BY,
5128 LAST_UPDATE_DATE,
5129 LAST_UPDATED_BY,
5130 LAST_UPDATE_LOGIN,
5131 SOURCE_CODE_ID,
5132 SOURCE_CODE,
5133 OBJECT_TYPE,
5134 OBJECT_ID,
5135 ORDER_ID,
5136 SERVER_ID,
5137 REQUEUE_COUNT,
5138 MESSAGE_ID,
5139 REQUEST_STATUS,
5140 REQUEST_ID,
5141 ORG_ID,
5142 OBJECT_VERSION_NUMBER)
5143 VALUES
5144 (
5145 l_submit_dt,
5146 l_template_id,
5147 l_req_user_id,
5148 l_priority,
5149 l_submit_dt,
5150 FND_GLOBAL.USER_ID,
5151 l_submit_dt,
5152 FND_GLOBAL.USER_ID,
5153 FND_GLOBAL.CONC_LOGIN_ID,
5154 l_source_code_id,
5155 l_source_code,
5156 l_object_type,
5157 l_object_id,
5158 l_order_id,
5159 l_server_id,
5160 l_requeue_count,
5161 l_message_handle,
5162 l_meaning,
5163 x_request_id,
5164 l_org_id,
5165 1);
5166
5167 JTF_FM_UTL_V.PRINT_MESSAGE('Successfully enqueued the request',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5168
5169 JTF_FM_UTL_V.INSERT_EMAIL_STATS(x_request_id);
5170
5171
5172
5173 END IF;
5174
5175 END IF;
5176 CLOSE CDATA;
5177 END IF;
5178
5179 --Standard check of commit
5180 IF FND_API.To_Boolean ( p_commit ) THEN
5181 COMMIT WORK;
5182 END IF;
5183 -- Debug Message
5184 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
5185 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
5186 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
5187 FND_MSG_PUB.Add;
5188 END IF;
5189 -- Success message
5190 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
5191 THEN
5192 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
5193 FND_MESSAGE.Set_Token('ARG1', l_full_name);
5194 FND_MSG_PUB.Add;
5195 END IF;
5196 --Standard call to get message count and if count=1, get the message
5197 FND_MSG_PUB.Count_And_Get (
5198 p_encoded => FND_API.g_false,
5199 p_count => x_msg_count,
5200 p_data => x_msg_data
5201 );
5202 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_success) THEN
5203 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_RESUBMIT_SUCCESS');
5204 FND_MSG_PUB.Add;
5205 END IF;
5206 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5207 EXCEPTION
5208 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5209 ROLLBACK TO Resubmit;
5210 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5211 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5212 -- Standard call to get message count and if count=1, get the message
5213 FND_MSG_PUB.Count_And_Get (
5214 p_encoded => FND_API.g_false,
5215 p_count => x_msg_count,
5216 p_data => x_msg_data
5217 );
5218 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5219 WHEN FND_API.G_EXC_ERROR THEN
5220 ROLLBACK TO Resubmit;
5221 x_return_status := FND_API.G_RET_STS_ERROR;
5222 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5223 -- Standard call to get message count and if count=1, get the message
5224 FND_MSG_PUB.Count_And_Get (
5225 p_encoded => FND_API.g_false,
5226 p_count => x_msg_count,
5227 p_data => x_msg_data
5228 );
5229 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5230 WHEN OTHERS THEN
5231 ROLLBACK TO Resubmit;
5232 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5233 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
5234 IF FND_MSG_PUB.Check_Msg_Level
5235 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5236 THEN
5237 FND_MSG_PUB.Add_Exc_Msg
5238 (G_PKG_NAME, l_api_name);
5239 END IF;
5240 -- Standard call to get message count and if count=1, get the message
5241 FND_MSG_PUB.Count_And_Get (
5242 p_encoded => FND_API.g_false,
5243 p_count => x_msg_count,
5244 p_data => x_msg_data
5245 );
5246 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5247 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5248 END Resubmit_Request;
5249
5250
5251 ---------------------------------------------------------------
5252 -- PROCEDURE
5253 -- Resubmit_Request
5254 --
5255 -- HISTORY
5256 -- 10/01/99 nyalaman Create.
5257 -- 10/24/02 sxkrishn modified the following for new schema mod
5258 -- Now creating new request id's for resubmitted requests
5259 -- x_request_id is a new out parameter
5260 -- Mod curosr to get new column values.
5261 ---------------------------------------------------------------
5262
5263 PROCEDURE Resubmit_Request(
5264 p_api_version IN NUMBER,
5265 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
5266 p_commit IN VARCHAR2 := FND_API.G_FALSE,
5267 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
5268 x_return_status OUT NOCOPY VARCHAR2,
5269 x_msg_count OUT NOCOPY NUMBER,
5270 x_msg_data OUT NOCOPY VARCHAR2,
5271 p_request_id IN NUMBER
5272
5273 ) IS
5274 x_request_id NUMBER;
5275 l_api_name CONSTANT varchar2(100) := 'RESUBMIT_REQUEST';
5276 l_full_name CONSTANT varchar2(2000) := G_PKG_NAME || '.' || l_api_name;
5277 BEGIN
5278 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5279 Resubmit_Request(
5280 p_api_version ,
5281 p_init_msg_list,
5282 p_commit ,
5283 p_validation_level ,
5284 x_return_status ,
5285 x_msg_count ,
5286 x_msg_data ,
5287 p_request_id ,
5288 x_request_id
5289
5290 ) ;
5291 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5292 END Resubmit_Request;
5293
5294 --------------------------------------------------------------
5295 -- RESUBMIT_JOB
5296 --
5297 -- Created BY SK on July 14- 2003
5298 --
5299 -- Desc: API to re-submit a single JOB within a Mass REQUEST
5300 -- to a new address
5301 ---------------------------------------------------------------
5302
5303 PROCEDURE RESUBMIT_JOB(
5304 p_api_version IN NUMBER,
5305 p_init_msg_list IN VARCHAR2,
5306 p_commit IN VARCHAR2,
5307 p_validation_level IN NUMBER,
5308 x_return_status OUT NOCOPY VARCHAR2,
5309 x_msg_count OUT NOCOPY NUMBER,
5310 x_msg_data OUT NOCOPY VARCHAR2,
5311 p_request_id IN NUMBER,
5312 p_job_id IN NUMBER,
5313 p_media_type IN VARCHAR2,
5314 p_media_address IN VARCHAR2,
5315 x_request_id OUT NOCOPY NUMBER
5316
5317 ) IS
5318 l_api_name CONSTANT VARCHAR2(30) := 'RESUBMIT_JOB';
5319 l_api_version CONSTANT NUMBER := 1.0;
5320 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
5321 --
5322 l_user_id NUMBER := -1;
5323 l_login_user_id NUMBER := -1;
5324 l_login_user_status NUMBER;
5325 l_Error_Msg VARCHAR2(2000);
5326 --
5327 l_message1 LONG;
5328 l_message2 LONG;
5329 l_nmessage1 LONG;
5330 l_nmessage2 LONG;
5331 l_message LONG;
5332 l_request_queue VARCHAR2(100);
5333 l_response_queue VARCHAR2(100);
5334 l_cnt NUMBER := 0;
5335 l_enqueue_options dbms_aq.enqueue_options_t;
5336 l_message_properties dbms_aq.message_properties_t;
5337 l_message_handle RAW(16);
5338 l_buffer LONG;
5339 l_attachment BLOB;
5340 l_mesg RAW(32767);
5341 l_priority NUMBER;
5342 l_request CLOB;
5343 l_amount INTEGER;
5344 l_server_id NUMBER;
5345 l_submit_dt DATE;
5346 l_template_id NUMBER;
5347 l_req_user_id NUMBER;
5348 l_source_code_id NUMBER;
5349 l_source_code VARCHAR2(30);
5350 l_object_type VARCHAR2(30);
5351 l_object_id NUMBER;
5352 l_order_id NUMBER;
5353 l_requeue_count NUMBER;
5354 l_meaning VARCHAR2(100) := NULL;
5355 l_pos1 NUMBER := -1;
5356 l_pos2 NUMBER := -1;
5357 l_pos3 NUMBER := -1;
5358 l_pos4 NUMBER := -1;
5359 l_pos5 NUMBER := -1;
5360 l_request_type VARCHAR2(20);
5361 l_media_type VARCHAR2(30);
5362 a VARCHAR2(2) := '';
5363 l_footprint_xml VARCHAR2(32767);
5364 l_media VARCHAR2(32767);
5365 x_bind_info LONG;
5366 newXML LONG;
5367
5368 l_temp VARCHAR2(32767);
5369 l_DTD VARCHAR2(32767);
5370
5371 remove_query boolean := true;
5372
5373 l_org_id NUMBER;
5374 --
5375 l_vparser xmlparser.parser;
5376
5377 p_content_xml VARCHAR2(2000);
5378 l_parser xmlparser.parser;
5379 l_doc xmldom.domdocument;
5380 l_doc_elem xmldom.domelement;
5381 l_doc_elem_2 xmldom.domelement;
5382 l_xml VARCHAR2(32767);
5383 xmlwithoutPI VARCHAR2(32767);
5384
5385 l_mediatype VARCHAR2(200);
5386
5387 l_email VARCHAR2(200);
5388 l_email_address VARCHAR2(200);
5389 l_first_child xmldom.domNode;
5390 l_node xmldom.domNode;
5391 l_node2 xmldom.domNode;
5392 l_emailNode xmldom.domNode;
5393 l_faxNode xmldom.domNode;
5394 l_printerNode xmldom.domNode;
5395 l_node4 xmldom.domNode;
5396 l_nodeListMedia xmldom.domnodelist;
5397 l_nodeListFax xmldom.domnodelist;
5398 l_nodeListPrinter xmldom.domnodelist;
5399 l_nodeListFile xmldom.domnodelist;
5400
5401 --l_email_address := '[email protected]';
5402
5403 CURSOR CDATA IS
5404 SELECT
5405 REQUEST,
5406 PRIORITY,
5407 SERVER_ID,
5408 TEMPLATE_ID,
5409 USER_ID,
5410 SOURCE_CODE_ID,
5411 SOURCE_CODE,
5412 OBJECT_TYPE,
5413 OBJECT_ID,
5414 ORDER_ID,
5415 RESUBMIT_COUNT,
5416 REQUEST_TYPE,
5417 MEDIA_TYPE
5418 FROM JTF_FM_REQUEST_HISTORY_ALL
5419 WHERE
5420 HIST_REQ_ID = p_request_id;
5421
5422
5423 BEGIN
5424
5425 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5426 -- Standard begin of API savepoint
5427 SAVEPOINT Resubmit_job;
5428
5429 IF NOT FND_API.Compatible_API_Call (
5430 l_api_version,
5431 p_api_version,
5432 l_api_name,
5433 G_PKG_NAME)
5434 THEN
5435 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5436 END IF;
5437
5438
5439 -- Debug Message
5440 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
5441 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
5442 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
5443 FND_MSG_PUB.Add;
5444 END IF;
5445
5446 -- Initialize API return status to success
5447 x_return_status := FND_API.G_RET_STS_SUCCESS;
5448
5449 --Modified the foolowing query as per bug 3651321
5450 select to_number(decode(substrb(userenv('CLIENT_INFO'),1,1),' ',null,substrb(userenv('CLIENT_INFO'),1,10)))
5451 into l_org_id
5452 from dual;
5453
5454 -- check if job id is present
5455 IF(p_job_id IS NULL or p_job_id = FND_API.G_MISS_NUM ) THEN
5456 l_ERROR_MSG := 'Must pass job id parmeter';
5457 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_JOB_ID');
5458
5459 END IF;
5460 -- check if media type is present
5461 IF(p_media_type IS NULL or p_media_type = FND_API.G_MISS_CHAR or p_media_type = '') THEN
5462 l_ERROR_MSG := 'Must pass media type parmeter';
5463 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_MEDIA_TYPE');
5464 ELSE
5465 IF(upper(TRIM(p_media_type))) ='EMAIL' OR (upper(TRIM(p_media_type))) = 'FAX'
5466 OR (upper(TRIM(p_media_type))) = 'PRINTER' THEN
5467 NULL; -- Allowed media tyoe
5468 ELSE
5469 l_ERROR_MSG := 'Invalid Media Type Passed';
5470 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_INV_MEDIA_TYPE');
5471 END IF;
5472
5473 END IF;
5474 -- check media address is present
5475 IF(p_media_address IS NULL or p_media_address = FND_API.G_MISS_CHAR or p_media_address = '') THEN
5476 l_ERROR_MSG := 'Must pass media type parmeter';
5477 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_MEDIA_ADD');
5478
5479 END IF;
5480
5481 IF (p_request_id IS NULL) THEN
5482 l_Error_Msg := 'Must pass p_request_id parameter';
5483 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
5484 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
5485 FND_MSG_PUB.Add;
5486 END IF;
5487 RAISE FND_API.G_EXC_ERROR;
5488 ELSE
5489 GET_MEDIA(p_media_type,p_media_address,l_media);
5490
5491 -- Get data from request_history for the request_id passed.
5492 OPEN CDATA;
5493 FETCH CDATA
5494 INTO
5495 l_request,
5496 l_priority,
5497 l_server_id,
5498 l_template_id,
5499 l_req_user_id,
5500 l_source_code_id,
5501 l_source_code,
5502 l_object_type,
5503 l_object_id,
5504 l_order_id,
5505 l_requeue_count,
5506 l_request_type,
5507 l_media_type;
5508
5509
5510 JTF_FM_UTL_V.PRINT_MESSAGE('REQUEST PARAMS' || l_priority||l_template_id || l_request_type || l_media_type,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5511 IF(CDATA%NOTFOUND) THEN
5512 CLOSE CDATA;
5513 l_Error_Msg := 'Could not find REQUEST DATA in the database';
5514 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND' ,p_request_id);
5515 RAISE FND_API.G_EXC_ERROR;
5516 ELSE
5517 -- Get the new request id for the resubmitted Request
5518 SELECT JTF_FM_REQUESTHISTID_S.NEXTVAL INTO x_request_id FROM DUAL;
5519 -- Get the request and response queue names
5520
5521 SELECT REQUEST_QUEUE_NAME
5522 INTO l_request_queue
5523 FROM JTF_FM_SERVICE
5524 WHERE
5525 SERVER_ID = l_server_id;
5526
5527 JTF_FM_UTL_V.PRINT_MESSAGE('QUEUE is :' || l_request_queue,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5528 -- Check if the queue names were available for the server_id
5529 IF(l_request_queue IS NULL) THEN
5530
5531 l_Error_Msg := 'Could not find queue_names in the database';
5532 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_QUEUE_NOTFOUND',l_server_id);
5533
5534 RAISE FND_API.G_EXC_ERROR;
5535 ELSE
5536 -- Read the XML request from the CLOB
5537 l_amount := DBMS_LOB.GETLENGTH(l_request);
5538 JTF_FM_UTL_V.PRINT_MESSAGE('LOB LEngth' || l_amount,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5539 DBMS_LOB.READ (l_request, l_amount, 1, l_buffer);
5540 l_message_properties.priority := l_priority;
5541
5542
5543
5544 -- Get the timestamp and add it to the message
5545 l_submit_dt := sysdate;
5546
5547
5548 /*******************************************************************
5549 -- This is a resubmit_job: The query has been executed and the bind
5550 -- info is stored in the JTF_FM_PROCESSED table for this job_id and request_id
5551 -- Extract the CLOB from JTF_FM_REQUEST_HISTORT_ALL, Modify it,
5552 -- Extract the BLOB from JTF_FM_PROCESSED, Add the info from the BLOB to the
5553 -- CLOB and create it as a new CLOB and submit the request as a new req
5554 -- The parent_req_id col should be updated with the original_request_id
5555
5556 *****************************************************/
5557
5558
5559
5560
5561
5562 l_parser := xmlparser.newparser();
5563 xmlparser.setvalidationmode(l_parser, FALSE);
5564 xmlparser.parseclob(l_parser, l_request);
5565 l_doc := xmlparser.getdocument(l_parser);
5566 l_doc_elem := xmldom.getdocumentelement(l_doc);
5567
5568 xmldom.setattribute(l_doc_elem, 'id', x_request_id );
5569 xmldom.setattribute(l_doc_elem, 'submit_time', to_char(l_submit_dt, 'YYYY-MM-DD HH24:MI:SS') );
5570
5571
5572 Modify_XML(l_doc,p_request_id,remove_query);
5573
5574 xmldom.writeToBuffer(l_doc, newXML);
5575
5576 xmlparser.FREEPARSER(l_parser);
5577
5578
5579 l_pos1 := instr(newXML, '<media_type');
5580
5581 l_pos2 := instr(newXML, '<item_');
5582
5583
5584 JTF_FM_UTL_V.PRINT_MESSAGE('1:' ||l_pos1,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5585 JTF_FM_UTL_V.PRINT_MESSAGE('2:' ||l_pos2,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5586
5587 IF l_pos1 <= 0 OR l_pos2 <= 0 THEN
5588 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5589 ELSE
5590 l_nmessage1 := substr(newXML, 1, (l_pos1-1));
5591 l_nmessage2 := substr(newXML, l_pos2);
5592 l_message := l_nmessage1 || l_media || l_nmessage2;
5593 END IF;
5594
5595
5596 --- Remove the old bind and replace it with the new bind information
5597 -- Get XML for bind for that Job
5598
5599 GET_BIND_INFO(p_request_id,p_job_id,x_bind_info);
5600 l_pos1 := instr(l_message, '</files>');
5601
5602 l_pos2 := instr(l_message, '</item_content>');
5603
5604
5605 IF l_pos1 <= 0 OR l_pos2 <= 0 THEN
5606 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5607 ELSE
5608 l_message1 := substr(l_message, 1, (l_pos1+8));
5609 l_message2 := substr(l_message, l_pos2);
5610 newXML := l_message1 || x_bind_info || l_message2;
5611 END IF;
5612
5613
5614
5615
5616
5617
5618 JTF_FM_UTL_V.Get_Dtd(l_dtd);
5619
5620 -- validate the xml
5621 -- While validating the xml, PI(processing instruction) instructions(?xml tags) need to be at the beg
5622 -- But our request XML already has this tag
5623 -- So the error in Bug # 3299822
5624 -- To fix this problem, while validating, we need to strip the enc info
5625 -- But need to retain it while saving it
5626 -- So added the next three lines
5627
5628 l_pos1 := instr(newXML, '<ffm_request');
5629
5630 xmlwithoutPI := substr(newXML,l_pos1);
5631
5632 l_temp := l_dtd || xmlwithoutPI;
5633
5634
5635 l_vparser := xmlparser.newparser();
5636 xmlparser.setvalidationmode(l_vparser,FALSE);
5637 xmlparser.showwarnings(l_vparser, TRUE);
5638
5639 --xmlparser.SETDOCTYPE(l_parser,l_dtd);
5640
5641 xmlparser.parseBuffer(l_vparser, l_temp);
5642 xmlparser.FREEPARSER(l_vparser);
5643
5644
5645 -- Create the footprint XML and enque the message
5646
5647 l_footprint_xml := '<ffm_request_alert id="' ||x_request_id || '" type="new"/> ';
5648
5649 --Set request type to "Single" as all resubmits will be of this kind
5650 l_request_type := 'S';
5651
5652
5653 -- Enqueue the message into the request queue
5654
5655 dbms_aq.enqueue(queue_name => l_request_queue,
5656 enqueue_options => l_enqueue_options,
5657 message_properties => l_message_properties,
5658 payload => UTL_RAW.CAST_TO_RAW(l_footprint_xml), msgid => l_message_handle);
5659
5660 l_meaning := 'RESUBMITTED';
5661
5662
5663
5664 -- Following modifications by sxkrishn
5665 --- Get a new request id for the resubmitted request
5666 l_media_type := JTF_FM_UTL_V.GET_MEDIA_TYPE(newXML);
5667
5668
5669 INSERT INTO JTF_FM_REQUEST_HISTORY_ALL
5670 (
5671 MESSAGE_ID,
5672 SUBMIT_DT_TM,
5673 TEMPLATE_ID,
5674 USER_ID,
5675 PRIORITY,
5676 CREATION_DATE,
5677 CREATED_BY,
5678 LAST_UPDATE_DATE,
5679 LAST_UPDATED_BY,
5680 LAST_UPDATE_LOGIN,
5681 SOURCE_CODE_ID,
5682 SOURCE_CODE,
5683 OBJECT_TYPE,
5684 OBJECT_ID,
5685 ORDER_ID,
5686 SERVER_ID,
5687 RESUBMIT_COUNT,
5688 OUTCOME_CODE,
5689 HIST_REQ_ID,
5690 REQUEST,
5691 ORG_ID,
5692 OBJECT_VERSION_NUMBER,
5693 REQUEST_TYPE,
5694 PARENT_REQ_ID,
5695 MEDIA_TYPE)
5696 VALUES
5697 (
5698 l_message_handle,
5699 l_submit_dt,
5700 l_template_id,
5701 l_req_user_id,
5702 l_priority,
5703 l_submit_dt,
5704 FND_GLOBAL.USER_ID,
5705 l_submit_dt,
5706 FND_GLOBAL.USER_ID,
5707 FND_GLOBAL.CONC_LOGIN_ID,
5708 l_source_code_id,
5709 l_source_code,
5710 l_object_type,
5711 l_object_id,
5712 l_order_id,
5713 l_server_id,
5714 1,
5715 l_meaning,
5716 x_request_id,
5717 empty_clob(),
5718 l_org_id,
5719 1,
5720 l_request_type,
5721 p_request_id,
5722 l_media_type);
5723
5724 -- Insert the XML request into the History record created above
5725 SELECT REQUEST INTO l_request
5726 FROM JTF_FM_REQUEST_HISTORY_ALL
5727 WHERE HIST_REQ_ID = x_request_id
5728 AND SUBMIT_DT_TM = l_submit_dt
5729 FOR UPDATE;
5730 DBMS_LOB.OPEN(l_request, DBMS_LOB.LOB_READWRITE);
5731 l_amount := LENGTH(newXML);
5732 DBMS_LOB.WRITE (l_request, l_amount, 1, newXML);
5733 DBMS_LOB.CLOSE (l_request);
5734
5735 -- Create a new record in the status table.
5736 INSERT INTO JTF_FM_STATUS_ALL
5737 (
5738 SUBMIT_DT_TM,
5739 TEMPLATE_ID,
5740 USER_ID,
5741 PRIORITY,
5742 CREATION_DATE,
5743 CREATED_BY,
5744 LAST_UPDATE_DATE,
5745 LAST_UPDATED_BY,
5746 LAST_UPDATE_LOGIN,
5747 SOURCE_CODE_ID,
5748 SOURCE_CODE,
5749 OBJECT_TYPE,
5750 OBJECT_ID,
5751 ORDER_ID,
5752 SERVER_ID,
5753 REQUEUE_COUNT,
5754 MESSAGE_ID,
5755 REQUEST_STATUS,
5756 REQUEST_ID,
5757 ORG_ID,
5758 OBJECT_VERSION_NUMBER)
5759 VALUES
5760 (
5761 l_submit_dt,
5762 l_template_id,
5763 l_req_user_id,
5764 l_priority,
5765 l_submit_dt,
5766 FND_GLOBAL.USER_ID,
5767 l_submit_dt,
5768 FND_GLOBAL.USER_ID,
5769 FND_GLOBAL.CONC_LOGIN_ID,
5770 l_source_code_id,
5771 l_source_code,
5772 l_object_type,
5773 l_object_id,
5774 l_order_id,
5775 l_server_id,
5776 l_requeue_count,
5777 l_message_handle,
5778 l_meaning,
5779 x_request_id,
5780 l_org_id,
5781 1);
5782
5783 INSERT_REQ_CONTENTS(p_request_id,x_request_id);
5784
5785
5786
5787 -- Update the resubmit_count of the parent_request_id
5788 UPDATE JTF_FM_REQUEST_HISTORY_ALL
5789 set resubmit_count = l_requeue_count+1
5790 where hist_req_id = p_request_id;
5791
5792 UPDATE JTF_FM_EMAIL_STATS
5793 SET RESUBMITTED_JOB_COUNT = RESUBMITTED_JOB_COUNT+1
5794 where request_id = p_request_id;
5795
5796 JTF_FM_UTL_V.INSERT_EMAIL_STATS(x_request_id);
5797
5798 UPDATE_RESUBMITTED(p_request_id,p_job_id,x_request_id);
5799
5800 JTF_FM_UTL_V.PRINT_MESSAGE('Successfully enqueued the request',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
5801 -- Get the position of the timestamp(submit_date) and
5802
5803
5804
5805 END IF;
5806
5807 END IF;
5808 CLOSE CDATA;
5809 END IF;
5810
5811 --Standard check of commit
5812 IF FND_API.To_Boolean ( p_commit )
5813 THEN
5814 COMMIT WORK;
5815 END IF;
5816
5817 -- Debug Message
5818 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
5819 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
5820 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
5821 FND_MSG_PUB.Add;
5822 END IF;
5823 -- Success message
5824 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
5825 THEN
5826 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
5827 FND_MESSAGE.Set_Token('ARG1', l_full_name);
5828 FND_MSG_PUB.Add;
5829 END IF;
5830 --Standard call to get message count and if count=1, get the message
5831 FND_MSG_PUB.Count_And_Get (
5832 p_encoded => FND_API.g_false,
5833 p_count => x_msg_count,
5834 p_data => x_msg_data
5835 );
5836 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_success) THEN
5837 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_RESUBMIT_SUCCESS');
5838 FND_MSG_PUB.Add;
5839 END IF;
5840 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5841 EXCEPTION
5842 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5843 ROLLBACK TO Resubmit_job;
5844 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5845 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5846 -- Standard call to get message count and if count=1, get the message
5847 FND_MSG_PUB.Count_And_Get (
5848 p_encoded => FND_API.g_false,
5849 p_count => x_msg_count,
5850 p_data => x_msg_data
5851 );
5852 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5853 WHEN FND_API.G_EXC_ERROR THEN
5854 ROLLBACK TO Resubmit_job;
5855 x_return_status := FND_API.G_RET_STS_ERROR;
5856 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5857 -- Standard call to get message count and if count=1, get the message
5858 FND_MSG_PUB.Count_And_Get (
5859 p_encoded => FND_API.g_false,
5860 p_count => x_msg_count,
5861 p_data => x_msg_data
5862 );
5863 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5864 WHEN OTHERS THEN
5865 ROLLBACK TO Resubmit_job;
5866 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5867 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
5868 IF FND_MSG_PUB.Check_Msg_Level
5869 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5870 THEN
5871 FND_MSG_PUB.Add_Exc_Msg
5872 (G_PKG_NAME, l_api_name);
5873 END IF;
5874 -- Standard call to get message count and if count=1, get the message
5875 FND_MSG_PUB.Count_And_Get (
5876 p_encoded => FND_API.g_false,
5877 p_count => x_msg_count,
5878 p_data => x_msg_data
5879 );
5880 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
5881 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5882
5883 END RESUBMIT_JOB;
5884
5885
5886
5887 PROCEDURE CORRECT_MALFORM_JOB(
5888 p_request_id IN NUMBER,
5889 p_job IN NUMBER,
5890 p_corrected_address IN VARCHAR2,
5891 x_return_status OUT NOCOPY VARCHAR2)
5892 IS
5893 l_api_name CONSTANT VARCHAR2(30) := 'CORRECT_MALFORMED_ADD';
5894 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
5895 l_error_msg VARCHAR2(2000) := '';
5896
5897 BEGIN
5898 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
5899 SAVEPOINT pre_correction;
5900 -- Initialize API return status to success
5901 x_return_status := FND_API.G_RET_STS_SUCCESS;
5902
5903 UPDATE JTF_FM_CONTENT_FAILURES
5904 set corrected_address = p_corrected_address,
5905 corrected_flag = 'Y'
5906 where
5907 request_id = p_request_id
5908 and job = p_job
5909 and MEDIA_TYPE = 'EMAIL'
5910 and FAILURE = 'MALFORMED_ADDRESS';
5911
5912 COMMIT WORK;
5913 -- Success message
5914 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
5915 THEN
5916 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
5917 FND_MESSAGE.Set_Token('ARG1', l_full_name);
5918 FND_MSG_PUB.Add;
5919 END IF;
5920
5921 EXCEPTION
5922 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5923 ROLLBACK TO pre_correction;
5924 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5925 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5926
5927 WHEN FND_API.G_EXC_ERROR THEN
5928 ROLLBACK TO pre_correction;
5929 x_return_status := FND_API.G_RET_STS_ERROR;
5930 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
5931
5932 WHEN OTHERS THEN
5933 ROLLBACK TO pre_correction;
5934 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
5935 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
5936 IF FND_MSG_PUB.Check_Msg_Level
5937 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
5938 THEN
5939 FND_MSG_PUB.Add_Exc_Msg
5940 (G_PKG_NAME, l_api_name);
5941 END IF;
5942
5943 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
5944
5945
5946 END CORRECT_MALFORM_JOB;
5947
5948 PROCEDURE CORRECT_MALFORMED
5949 (
5950 p_api_version IN NUMBER,
5951 p_init_msg_list IN VARCHAR2,
5952 p_commit IN VARCHAR2,
5953 p_validation_level IN NUMBER,
5954 x_msg_count OUT NOCOPY NUMBER,
5955 x_msg_data OUT NOCOPY VARCHAR2,
5956 p_request_id IN NUMBER,
5957 p_job IN JTF_FM_REQUEST_GRP.G_NUMBER_TBL_TYPE,
5958 p_corrected_address IN JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE,
5959 x_return_status OUT NOCOPY VARCHAR2)
5960 IS
5961 l_api_name CONSTANT VARCHAR2(30) := 'CORRECT_MALFORMED_ADD';
5962 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
5963 l_error_msg VARCHAR2(2000) := '';
5964 l_job_count NUMBER := 0;
5965 l_add_count NUMBER := 0;
5966
5967 BEGIN
5968 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
5969 SAVEPOINT pre_correction;
5970 -- Initialize API return status to success
5971 x_return_status := FND_API.G_RET_STS_SUCCESS;
5972
5973 l_job_count := p_job.LAST;
5974 l_add_count := p_corrected_address.LAST;
5975
5976 IF l_job_count <> l_add_count THEN
5977 -- Every job should have its corrected email address
5978 -- If not throw an error
5979 l_Error_Msg := 'Should pass corrected address for each job in the list';
5980 JTF_FM_UTL_V.PRINT_MESSAGE('The number of JOB IDs must be the same as the list of addrsses ' ,JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
5981
5982 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error)
5983 THEN
5984 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQ_INFO');
5985 FND_MSG_PUB.Add;
5986 END IF; -- IF FND_MSG_PUB.check_msg_level
5987
5988 RAISE FND_API.G_EXC_ERROR;
5989 ELSE
5990
5991 FOR i IN 1..l_job_count LOOP
5992 CORRECT_MALFORM_JOB(p_request_id,p_job(i),p_corrected_address(i),x_return_status);
5993
5994
5995 END LOOP;
5996 END IF;
5997
5998 --Standard check of commit
5999 IF FND_API.To_Boolean ( p_commit )
6000 THEN
6001 COMMIT WORK;
6002 END IF;
6003 -- Success message
6004 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
6005 THEN
6006 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
6007 FND_MESSAGE.Set_Token('ARG1', l_full_name);
6008 FND_MSG_PUB.Add;
6009 END IF;
6010 --Standard call to get message count and if count=1, get the message
6011 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
6012 p_count => x_msg_count,
6013 p_data => x_msg_data
6014 );
6015
6016 EXCEPTION
6017 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6018 ROLLBACK TO pre_correction;
6019 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6020 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6021
6022 WHEN FND_API.G_EXC_ERROR THEN
6023 ROLLBACK TO pre_correction;
6024 x_return_status := FND_API.G_RET_STS_ERROR;
6025 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6026
6027 WHEN OTHERS THEN
6028 ROLLBACK TO pre_correction;
6029 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6030 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
6031 IF FND_MSG_PUB.Check_Msg_Level
6032 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6033 THEN
6034 FND_MSG_PUB.Add_Exc_Msg
6035 (G_PKG_NAME, l_api_name);
6036 END IF;
6037
6038 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6039
6040
6041 END CORRECT_MALFORMED;
6042
6043 PROCEDURE RESUBMIT_MALFORMED(
6044 p_api_version IN NUMBER,
6045 p_init_msg_list IN VARCHAR2,
6046 p_commit IN VARCHAR2,
6047 p_validation_level IN NUMBER,
6048 x_msg_count OUT NOCOPY NUMBER,
6049 x_msg_data OUT NOCOPY VARCHAR2,
6050 p_request_id IN NUMBER,
6051 x_request_id OUT NOCOPY JTF_FM_REQUEST_GRP.G_NUMBER_TBL_TYPE,
6052 x_return_status OUT NOCOPY VARCHAR2
6053 )
6054 IS
6055 l_api_name CONSTANT VARCHAR2(30) := 'RESUBMIT_MALFORMED_REQUEST';
6056 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME || '.' || l_api_name;
6057 l_error_msg VARCHAR2(2000) := '';
6058 l_job NUMBER;
6059 l_corrected_address VARCHAR2(400) ;
6060 l_request_id NUMBER;
6061 l_count NUMBER := 0;
6062
6063
6064 CURSOR CGET_MALFORMED_CORRECTED IS
6065 SELECT JOB, CORRECTED_ADDRESS FROM
6066 JTF_FM_CONTENT_FAILURES
6067 WHERE
6068 REQUEST_ID = p_request_id
6069 AND CORRECTED_FLAG = 'Y'
6070 and MEDIA_TYPE = 'EMAIL'
6071 and FAILURE = 'MALFORMED_ADDRESS';
6072 BEGIN
6073 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
6074
6075 -- Initialize API return status to success
6076 x_return_status := FND_API.G_RET_STS_SUCCESS;
6077
6078 SAVEPOINT pre_resubmit;
6079
6080 OPEN CGET_MALFORMED_CORRECTED;
6081
6082
6083
6084 IF (CGET_MALFORMED_CORRECTED%NOTFOUND)
6085 THEN
6086 JTF_FM_UTL_V.PRINT_MESSAGE('Invalid request_id',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
6087
6088 CLOSE CGET_MALFORMED_CORRECTED;
6089 l_Error_Msg := 'Could not find any corrected address for the malformed request';
6090 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_NO_MAL_CORRECTION_FOUND',p_request_id);
6091
6092 RAISE FND_API.G_EXC_ERROR;
6093 END IF;
6094 LOOP
6095 FETCH CGET_MALFORMED_CORRECTED INTO l_job, l_corrected_address;
6096 EXIT WHEN CGET_MALFORMED_CORRECTED%NOTFOUND;
6097 JTF_FM_UTL_V.PRINT_MESSAGE('Fetching corrected jobs',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
6098
6099 l_count := l_count + 1;
6100 JTF_FM_UTL_V.PRINT_MESSAGE('Found some corrected jobs. Resubmitting them.',JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
6101 RESUBMIT_JOB (
6102 p_api_version,
6103 p_init_msg_list,
6104 p_commit,
6105 p_validation_level,
6106 x_return_status ,
6107 x_msg_count ,
6108 x_msg_data,
6109 p_request_id,
6110 l_job ,
6111 'EMAIL' ,
6112 l_corrected_address,
6113 l_request_id
6114 );
6115
6116
6117 x_request_id(l_count) := l_request_id;
6118
6119 UPDATE JTF_FM_EMAIL_STATS
6120 SET RESUBMITTED_MALFORMED = RESUBMITTED_MALFORMED+1
6121 where request_id = l_request_id;
6122
6123 if (x_return_status <> FND_API.G_RET_STS_SUCCESS)
6124 then
6125 RAISE FND_API.G_EXC_ERROR;
6126 end if;
6127 END LOOP;
6128 CLOSE CGET_MALFORMED_CORRECTED;
6129
6130
6131 --Standard check of commit
6132 IF FND_API.To_Boolean ( p_commit )
6133 THEN
6134 COMMIT WORK;
6135 END IF;
6136 -- Success message
6137 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
6138 THEN
6139 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
6140 FND_MESSAGE.Set_Token('ARG1', l_full_name);
6141 FND_MSG_PUB.Add;
6142 END IF;
6143
6144 --Standard call to get message count and if count=1, get the message
6145 FND_MSG_PUB.Count_And_Get (p_encoded => FND_API.g_false,
6146 p_count => x_msg_count,
6147 p_data => x_msg_data
6148 );
6149
6150 EXCEPTION
6151 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6152 ROLLBACK TO pre_resubmit;
6153 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6154 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6155
6156 WHEN FND_API.G_EXC_ERROR THEN
6157 ROLLBACK TO pre_resubmit;
6158 x_return_status := FND_API.G_RET_STS_ERROR;
6159 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6160
6161 WHEN OTHERS THEN
6162 ROLLBACK TO pre_resubmit;
6163 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6164 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
6165 IF FND_MSG_PUB.Check_Msg_Level
6166 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6167 THEN
6168 FND_MSG_PUB.Add_Exc_Msg
6169 (G_PKG_NAME, l_api_name);
6170 END IF;
6171
6172 JTF_FM_UTL_V.PRINT_MESSAGE('END' || l_full_name, JTF_FM_UTL_V.G_LEVEL_PROCEDURE ,l_full_name);
6173 END RESUBMIT_MALFORMED;
6174
6175
6176
6177 ---------------------------------------------------------------
6178 -- PROCEDURE
6179 -- Cancel_Request
6180 --
6181 -- HISTORY
6182 -- 10/01/99 nyalaman Create.
6183 -- 10/24/02 sxkrishn Modifed for new schema changes
6184 -- Based on the request_id, get the type of request.
6185
6186 -- If request_type = 'S''|| 'B' -proceed as ususal
6187 -- if request_type = 'M' then get msg_ids from JTF_FM_REQUESTS_AQ for that request_id
6188 -- And then dequeue them .
6189 ---------------------------------------------------------------
6190
6191 PROCEDURE Cancel_Request(
6192 p_api_version IN NUMBER,
6193 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6194 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6195 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6196 x_return_status OUT NOCOPY VARCHAR2,
6197 x_msg_count OUT NOCOPY NUMBER,
6198 x_msg_data OUT NOCOPY VARCHAR2,
6199 p_request_id IN NUMBER,
6200 p_submit_dt_tm IN DATE := FND_API.G_MISS_DATE
6201 ) IS
6202 l_api_name CONSTANT VARCHAR2(30) := 'Cancel_Request';
6203 l_api_version CONSTANT NUMBER := 1.0;
6204 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
6205 --
6206 l_user_id NUMBER := -1;
6207 l_login_user_id NUMBER := -1;
6208 l_login_user_status NUMBER;
6209 l_Error_Msg VARCHAR2(2000);
6210 --
6211 l_request_queue VARCHAR2(100);
6212 l_response_queue VARCHAR2(100);
6213 l_dequeue_options dbms_aq.dequeue_options_t;
6214 l_message_properties dbms_aq.message_properties_t;
6215 l_message_handle RAW(16);
6216 l_mesg RAW(32767);
6217 l_server_id NUMBER;
6218 l_meaning VARCHAR2(20);
6219 l_submit_dt_tm DATE;
6220 l_count NUMBER := 0;
6221 l_request_type VARCHAR2(1);
6222 l_request_status VARCHAR2(20);
6223 --
6224 l_no_messages exception;
6225 -- l_end_of_group exception;
6226 l_message_not_found exception;
6227
6228 l_queue_type VARCHAR2(2);
6229 --
6230 pragma exception_init(l_no_messages, -25228);
6231 -- pragma exception_init(l_end_of_group, -25235);
6232 pragma exception_init(l_message_not_found, -25263);
6233 --
6234
6235 --
6236
6237 CURSOR CMESG IS
6238 SELECT MESSAGE_ID, SERVER_ID, REQUEST_TYPE,OUTCOME_CODE
6239 FROM JTF_FM_REQUEST_HISTORY_ALL
6240 WHERE
6241 HIST_REQ_ID=p_request_id;
6242
6243 --
6244 CURSOR CMASSMSG IS
6245 SELECT AQ_MSG_ID, QUEUE_TYPE
6246 FROM JTF_FM_REQUESTS_AQ
6247 WHERE REQUEST_ID = p_request_id;
6248
6249 BEGIN
6250 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6251 -- Standard begin of API savepoint
6252 SAVEPOINT Cancel;
6253
6254 IF NOT FND_API.Compatible_API_Call (
6255 l_api_version,
6256 p_api_version,
6257 l_api_name,
6258 G_PKG_NAME)
6259 THEN
6260 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6261 END IF;
6262
6263 --Initialize message list if p_init_msg_list is TRUE.
6264 IF FND_API.To_Boolean (p_init_msg_list) THEN
6265 FND_MSG_PUB.initialize;
6266 END IF;
6267
6268 -- Debug Message
6269 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
6270 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
6271 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
6272 FND_MSG_PUB.Add;
6273 END IF;
6274
6275 -- Initialize API return status to success
6276 x_return_status := FND_API.G_RET_STS_SUCCESS;
6277 JTF_FM_UTL_V.PRINT_MESSAGE('Entering If condition',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6278 IF (p_request_id IS NULL) THEN
6279 l_Error_Msg := 'Must pass p_request_id parameter';
6280 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6281 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
6282 FND_MSG_PUB.Add;
6283 END IF;
6284 RAISE FND_API.G_EXC_ERROR;
6285
6286 ELSE
6287 OPEN CMESG;
6288
6289 FETCH CMESG INTO l_message_handle, l_server_id, l_request_type,l_request_status;
6290 IF(CMESG%NOTFOUND) THEN
6291 CLOSE CMESG;
6292 l_Error_Msg := 'Could not find REQUEST DATA in the database';
6293 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND' ,p_request_id);
6294 RAISE FND_API.G_EXC_ERROR;
6295 END IF;
6296 --dbms_output.put_line('serverId, req type , req status is:' || l_server_id ||':' || l_request_type || ':' || l_request_status);
6297 CLOSE CMESG;
6298
6299
6300
6301 SELECT DECODE(l_request_type,'M', MASS_REQUEST_Q, 'B',BATCH_REQUEST_Q,'T',BATCH_REQUEST_Q, REQUEST_QUEUE_NAME)
6302 INTO l_request_queue
6303 FROM JTF_FM_SERVICE_ALL
6304 WHERE
6305 SERVER_ID = l_server_id;
6306
6307 JTF_FM_UTL_V.PRINT_MESSAGE('Queue found ' || l_request_queue,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6308 --dbms_output.put_line('Queue found ' || l_request_queue);
6309 IF(l_request_queue IS NULL) THEN
6310
6311 l_Error_Msg := 'Could not find queue_names in the database';
6312 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_QUEUE_NOTFOUND',l_server_id);
6313
6314 RAISE FND_API.G_EXC_ERROR;
6315 END IF;
6316
6317 l_dequeue_options.wait := dbms_aq.no_wait;
6318 l_dequeue_options.navigation := dbms_aq.first_message;
6319 l_dequeue_options.msgid := l_message_handle;
6320 l_dequeue_options.dequeue_mode := DBMS_AQ.REMOVE;
6321
6322 -- Based on the req type, get the Queue Name
6323 -- If it was a Mass req, check JTF_FM_REQUESTS_AQ as the mass req would have
6324 -- been split into several batch requests.
6325 -- Remove them from the queue
6326
6327 IF l_request_type = 'M'
6328 THEN
6329
6330 IF l_request_status = 'SUBMITTED' THEN
6331 -- It is still in the mass queue, server has not picked it up
6332 -- So, remove it from there
6333 BEGIN
6334 dbms_aq.dequeue(queue_name => l_request_queue, dequeue_options =>
6335 l_dequeue_options, message_properties => l_message_properties,
6336 payload => l_mesg, msgid => l_message_handle);
6337 EXCEPTION
6338 WHEN OTHERS THEN
6339 l_Error_Msg := 'Could not find the payload for request_id ' || p_request_id || ' in the Queue Table';
6340 JTF_FM_UTL_V.PRINT_MESSAGE(l_api_name, JTF_FM_UTL_V.G_LEVEL_ERROR,l_error_msg);
6341 END;
6342 ELSIF l_request_status = 'CANCELLED' THEN
6343 l_Error_Msg := 'The request has already been canceled. ';
6344 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_ALREADY_CANCELED', to_char(p_request_id));
6345
6346 ELSE
6347
6348 -- Mass request, so get records from JTF_FM_REQUESTS_AQ and dequeue them
6349
6350 --dbms_output.put_line('Mass req - so have to remove from AQ');
6351 OPEN CMASSMSG;
6352 IF(CMASSMSG%NOTFOUND)
6353 THEN
6354
6355 CLOSE CMASSMSG;
6356 l_Error_Msg := 'Could not find REQUEST DATA in the database';
6357 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND',p_request_id);
6358 RAISE FND_API.G_EXC_ERROR;
6359 END IF;
6360
6361
6362 LOOP -- looping through all the batches queued and removing them
6363 FETCH CMASSMSG INTO l_message_handle,l_queue_type;
6364 EXIT WHEN CMASSMSG%NOTFOUND;
6365 l_request_queue := GET_QUEUE_NAME(l_queue_type,l_server_id);
6366 l_dequeue_options.msgid := l_message_handle;
6367 --dbms_output.put_line('Removing from queue' || l_request_queue);
6368 --dbms_output.put_line('message Id is :'|| l_message_handle);
6369 dbms_aq.dequeue(queue_name => l_request_queue, dequeue_options =>
6370 l_dequeue_options, message_properties => l_message_properties,
6371 payload => l_mesg, msgid => l_message_handle);
6372
6373 --dbms_output.put_line('dequed');
6374
6375 END LOOP;
6376 CLOSE CMASSMSG;
6377
6378
6379 END IF;
6380 ELSE --- Request type is Single or Batch, so req has only one message_id
6381 --dbms_output.put_line('Single or Batch removing from its queue');
6382 BEGIN
6383 dbms_aq.dequeue(queue_name => l_request_queue, dequeue_options =>
6384 l_dequeue_options, message_properties => l_message_properties,
6385 payload => l_mesg, msgid => l_message_handle);
6386 EXCEPTION
6387 WHEN OTHERS THEN
6388 l_Error_Msg := 'Could not find the payload for request_id ' || p_request_id || ' in the Queue Table';
6389 JTF_FM_UTL_V.PRINT_MESSAGE(l_api_name, JTF_FM_UTL_V.G_LEVEL_ERROR,l_error_msg);
6390 END;
6391 END IF; --End IF l_request_type = 'M'
6392
6393 -- Delete the entry from the status table
6394 DELETE FROM JTF_FM_STATUS_ALL
6395 WHERE
6396 request_id = p_request_id;
6397
6398 l_meaning := 'CANCELLED';
6399
6400 UPDATE JTF_FM_REQUEST_HISTORY_ALL
6401 SET
6402 outcome_code = l_meaning
6403 WHERE
6404 hist_req_id = p_request_id;
6405
6406 END IF;
6407
6408
6409 -- Success message
6410 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
6411 THEN
6412 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
6413 FND_MESSAGE.Set_Token('ARG1', l_full_name);
6414 FND_MSG_PUB.Add;
6415 END IF;
6416 --Standard check of commit
6417 IF FND_API.To_Boolean ( p_commit ) THEN
6418 COMMIT WORK;
6419 END IF;
6420 -- Debug Message
6421 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
6422 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
6423 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
6424 FND_MSG_PUB.Add;
6425 END IF;
6426 --Standard call to get message count and if count=1, get the message
6427 FND_MSG_PUB.Count_And_Get (
6428 p_encoded => FND_API.g_false,
6429 p_count => x_msg_count,
6430 p_data => x_msg_data
6431 );
6432
6433 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
6434 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_CANCEL_SUCCESS');
6435 FND_MSG_PUB.Add;
6436 END IF;
6437 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6438 EXCEPTION
6439 WHEN L_MESSAGE_NOT_FOUND OR L_NO_MESSAGES THEN
6440 ROLLBACK TO Cancel;
6441 x_return_status := FND_API.G_RET_STS_ERROR;
6442 IF l_count > 0 THEN
6443 l_Error_Msg := 'Successfully cancelled some messages';
6444 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6445 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_success) THEN
6446 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_CANCEL_SUCCESS');
6447 FND_MSG_PUB.Add;
6448 END IF;
6449 ELSE
6450 l_Error_Msg := 'Message not found in the request queue';
6451 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6452 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_error) THEN
6453 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_CANCEL_FAILED');
6454 FND_MSG_PUB.Add;
6455 END IF;
6456 END IF;
6457 -- Standard call to get message count and if count=1, get the message
6458 FND_MSG_PUB.Count_And_Get (
6459 p_encoded => FND_API.g_false,
6460 p_count => x_msg_count,
6461 p_data => x_msg_data
6462 );
6463 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6464 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6465 ROLLBACK TO Cancel;
6466 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6467 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6468 -- Standard call to get message count and if count=1, get the message
6469 FND_MSG_PUB.Count_And_Get (
6470 p_encoded => FND_API.g_false,
6471 p_count => x_msg_count,
6472 p_data => x_msg_data
6473 );
6474 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6475 WHEN FND_API.G_EXC_ERROR THEN
6476 ROLLBACK TO Cancel;
6477 x_return_status := FND_API.G_RET_STS_ERROR;
6478 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6479 -- Standard call to get message count and if count=1, get the message
6480 FND_MSG_PUB.Count_And_Get (
6481 p_encoded => FND_API.g_false,
6482 p_count => x_msg_count,
6483 p_data => x_msg_data
6484 );
6485 JTF_FM_UTL_V.PRINT_MESSAGE('x_message: '||x_msg_data,JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6486 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6487 WHEN OTHERS THEN
6488 ROLLBACK TO Cancel;
6489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6490 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
6491 IF FND_MSG_PUB.Check_Msg_Level
6492 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6493 THEN
6494 FND_MSG_PUB.Add_Exc_Msg
6495 (G_PKG_NAME, l_api_name);
6496 END IF;
6497 -- Standard call to get message count and if count=1, get the message
6498 FND_MSG_PUB.Count_And_Get (
6499 p_encoded => FND_API.g_false,
6500 p_count => x_msg_count,
6501 p_data => x_msg_data
6502 );
6503 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6504 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6505 END Cancel_Request;
6506
6507 ---------------------------------------------------------------
6508 -- PROCEDURE
6509 -- Get_Multiple_Content_XML
6510 --
6511 -- HISTORY
6512 -- 10/01/99 nyalaman Create.
6513 ---------------------------------------------------------------
6514
6515 PROCEDURE Get_Multiple_Content_XML
6516 (
6517 p_api_version IN NUMBER,
6518 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6519 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6520 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6521 x_return_status OUT NOCOPY VARCHAR2,
6522 x_msg_count OUT NOCOPY NUMBER,
6523 x_msg_data OUT NOCOPY VARCHAR2,
6524 p_request_id IN NUMBER,
6525 p_content_type IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6526 p_content_id IN G_NUMBER_TBL_TYPE := L_NUMBER_TBL,
6527 p_content_nm IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6528 p_document_type IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL, --depreciated
6529 p_media_type IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6530 p_printer IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6531 p_email IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6532 p_fax IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6533 p_file_path IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6534 p_user_note IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6535 p_quantity IN G_NUMBER_TBL_TYPE := L_NUMBER_TBL,
6536 x_content_xml OUT NOCOPY VARCHAR2
6537 ) IS
6538 l_api_name CONSTANT VARCHAR2(30) := 'GET_MULTIPLE_CONTENT_XML';
6539 l_api_version CONSTANT NUMBER := 1.0;
6540 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
6541 --
6542 l_user_id NUMBER := -1;
6543 l_login_user_id NUMBER := -1;
6544 l_login_user_status NUMBER;
6545 l_Error_Msg VARCHAR2(2000);
6546 l_attachment_id NUMBER;
6547 l_temp NUMBER;
6548 l_count NUMBER := 0;
6549 l_destination VARCHAR2(200) := NULL;
6550 --
6551 l_email_count NUMBER := -1;
6552 l_fax_count NUMBER := -1;
6553 l_printer_count NUMBER := -1;
6554 l_file_path_count NUMBER := -1;
6555 l_user_note_count NUMBER := -1;
6556 l_quantity_count NUMBER := -1;
6557 --
6558 l_email VARCHAR(1000);
6559 l_fax VARCHAR(1000);
6560 l_printer VARCHAR(1000);
6561 l_file_path VARCHAR(1000);
6562 l_user_note VARCHAR(1000);
6563 l_quantity NUMBER := -1;
6564 --
6565 l_message VARCHAR2(32767);
6566 --
6567 BEGIN
6568 -- Standard begin of API savepoint
6569 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6570 SAVEPOINT Attachment_XML;
6571
6572 IF NOT FND_API.Compatible_API_Call (
6573 l_api_version,
6574 p_api_version,
6575 l_api_name,
6576 G_PKG_NAME)
6577 THEN
6578 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6579 END IF;
6580
6581 --Initialize message list if p_init_msg_list is TRUE.
6582 IF FND_API.To_Boolean (p_init_msg_list) THEN
6583 FND_MSG_PUB.initialize;
6584 END IF;
6585
6586 -- Debug Message
6587 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
6588 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
6589 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
6590 FND_MSG_PUB.Add;
6591 END IF;
6592
6593 -- Initialize API return status to success
6594 x_return_status := FND_API.G_RET_STS_SUCCESS;
6595
6596 IF (p_request_id IS NULL) THEN
6597 l_Error_Msg := 'Must pass p_request_id parameter';
6598 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6599 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_REQUEST_ID');
6600 FND_MSG_PUB.Add;
6601 END IF;
6602 RAISE FND_API.G_EXC_ERROR;
6603 ELSIF p_content_id.count > p_content_type.count THEN
6604 l_Error_Msg := 'Must specify content_type for all contents passed';
6605 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6606 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_CONTENT_ID');
6607 FND_MSG_PUB.Add;
6608 END IF;
6609 RAISE FND_API.G_EXC_ERROR;
6610 ELSIF p_content_id.count > p_media_type.count THEN
6611 l_Error_Msg := 'Must specify media_type for all contents passed';
6612 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6613 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_MEDIA_TYPE');
6614 FND_MSG_PUB.Add;
6615 END IF;
6616 RAISE FND_API.G_EXC_ERROR;
6617 -- ELSIF p_content_id.count > p_document_type.count THEN
6618 -- l_Error_Msg := 'Must specify document_type for all contents passed';
6619 -- IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6620 -- FND_MESSAGE.set_name('JTF', 'JTF_FM_PARAMREQD');
6621 -- FND_MESSAGE.Set_Token('ARG1','p_document_type');
6622 -- FND_MSG_PUB.Add;
6623 -- END IF;
6624 -- RAISE FND_API.G_EXC_ERROR;
6625 -- ELSIF p_content_id.count > p_content_nm.count THEN
6626 -- l_Error_Msg := 'Must specify content_name for all contents passed';
6627 -- IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6628 -- FND_MESSAGE.set_name('JTF', 'JTF_FM_PARAMREQD');
6629 -- FND_MESSAGE.Set_Token('ARG1','p_content_nm');
6630 -- FND_MSG_PUB.Add;
6631 -- END IF;
6632 -- RAISE FND_API.G_EXC_ERROR;
6633 ELSE
6634 l_email_count := p_email.count;
6635 l_fax_count := p_fax.count;
6636 l_printer_count := p_printer.count;
6637 l_file_path_count := p_file_path.count;
6638 l_user_note_count := p_user_note.count;
6639 l_quantity_count := p_quantity.count;
6640 FOR i IN 1..p_content_id.count LOOP
6641 -- Get the Attachment_id based on the currval of the Sequence
6642 -- SELECT JTF_FM_REQUESTHISTID_S.CURRVAL INTO l_attachment_id FROM DUAL;
6643 l_message:='<item>';
6644 l_message := l_message||'<item_destination>';
6645 l_message := l_message||'<media_type>';
6646
6647 l_destination := NULL;
6648 l_temp := 0;
6649 -- Identify the media types requested and form the XML
6650 IF (INSTR(p_media_type(i), 'PRINTER') > 0) THEN
6651 IF l_printer_count >= i THEN
6652 l_printer := p_printer(i);
6653 ELSE
6654 l_printer := '';
6655 END IF;
6656 l_message := l_message||'<printer> '||l_printer||'</printer>';
6657 l_destination := l_destination ||' '|| l_printer;
6658 l_temp := l_temp + 1;
6659 END IF;
6660
6661 IF (INSTR(p_media_type(i), 'EMAIL') > 0) THEN
6662 IF l_email_count >= i THEN
6663 l_email := p_email(i);
6664 ELSE
6665 l_email := '';
6666 END IF;
6667 l_message := l_message||'<email> '||l_email||'</email>';
6668 l_destination := l_destination ||' '|| l_email;
6669 l_temp := l_temp + 1;
6670 END IF;
6671 IF (INSTR(p_media_type(i), 'FAX') > 0) THEN
6672 IF l_fax_count >= i THEN
6673 l_fax := p_fax(i);
6674 ELSE
6675 l_fax := '';
6676 END IF;
6677 l_message := l_message||'<fax> '||l_fax||'</fax>';
6678 l_destination := l_destination ||', '|| l_fax;
6679 l_temp := l_temp + 1;
6680 END IF;
6681 JTF_FM_UTL_V.PRINT_MESSAGE('Forming the Content XML3',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6682 -- Check if atleast one valid media type has been specified
6683 IF (l_temp = 0) THEN
6684 l_Error_Msg := 'Invalid media type specified. Allowed media_types are EMAIL, FAX, PRINTER ';
6685 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6686 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_INVALID_MEDIATYPE');
6687 FND_MESSAGE.Set_Token('ARG1', p_media_type(i));
6688 FND_MESSAGE.Set_Token('ARG2', p_content_id(i));
6689 FND_MSG_PUB.Add;
6690 END IF;
6691 RAISE FND_API.G_EXC_ERROR;
6692 ELSIF l_temp > 1 THEN
6693 l_Error_Msg := 'Only one of the media_types EMAIL, FAX, PRINTER can be sent per request';
6694 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6695 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MULTIPLE_MEDIATYPE');
6696 FND_MESSAGE.Set_Token('ARG1', to_char(p_content_id(i)));
6697 FND_MSG_PUB.Add;
6698 END IF;
6699 RAISE FND_API.G_EXC_ERROR;
6700 ELSE
6701 null;
6702 END IF;
6703
6704 l_message := l_message||'</media_type>';
6705 l_message := l_message||'</item_destination>';
6706
6707 l_message := l_message||'<item_content content_id="'||to_char(p_content_id(i))||'" ';
6708
6709 -- check if the quantity has been passed else default it to 1.
6710 IF l_quantity_count >= i THEN
6711 l_quantity := p_quantity(i);
6712 ELSE
6713 l_quantity := 1;
6714 END IF;
6715 l_message := l_message||'quantity="'||to_char(l_quantity)||'" ';
6716
6717 -- check if the user note has been passed. Else put an empty string.
6718 IF l_user_note_count >= i THEN
6719 l_user_note := p_user_note(i);
6720 ELSE
6721 l_user_note :='';
6722 END IF;
6723 l_message := l_message||'user_note="'||l_user_note||'" >';
6724
6725 IF (upper(p_CONTENT_TYPE(i)) = 'ATTACHMENT') THEN
6726 l_message := l_message||'<attachment>'||p_content_nm(i)||'</attachment>';
6727
6728 ELSIF (upper(P_CONTENT_TYPE(i)) = 'COLLATERAL') THEN
6729 l_message := l_message||'<collateral>'||p_content_nm(i)||'</collateral>';
6730
6731 ELSE
6732 l_Error_Msg := 'Invalid content type specified. Allowed content types are ATTACHMENT and COLLATERAL';
6733 RAISE FND_API.G_EXC_ERROR;
6734 END IF;
6735 -- End of ITEM
6736 l_message := l_message||'</item_content>';
6737 l_message := l_message||'</item>';
6738 END LOOP;
6739 -- End of the XML
6740
6741 x_content_xml := l_message;
6742
6743 END IF;
6744
6745 -- Success message
6746 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
6747 THEN
6748 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
6749 FND_MESSAGE.Set_Token('ARG1', l_full_name);
6750 FND_MSG_PUB.Add;
6751 END IF;
6752 --Standard check of commit
6753 IF FND_API.To_Boolean ( p_commit ) THEN
6754 COMMIT WORK;
6755 END IF;
6756 -- Debug Message
6757 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
6758 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
6759 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
6760 FND_MSG_PUB.Add;
6761 END IF;
6762 --Standard call to get message count and if count=1, get the message
6763 FND_MSG_PUB.Count_And_Get (
6764 p_encoded => FND_API.g_false,
6765 p_count => x_msg_count,
6766 p_data => x_msg_data
6767 );
6768 EXCEPTION
6769 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6770 ROLLBACK TO Attachment_XML;
6771 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6772 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6773 -- Standard call to get message count and if count=1, get the message
6774 FND_MSG_PUB.Count_And_Get (
6775 p_encoded => FND_API.g_false,
6776 p_count => x_msg_count,
6777 p_data => x_msg_data
6778 );
6779 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6780 WHEN FND_API.G_EXC_ERROR THEN
6781 ROLLBACK TO Attachment_XML;
6782 x_return_status := FND_API.G_RET_STS_ERROR;
6783 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
6784 -- Standard call to get message count and if count=1, get the message
6785 FND_MSG_PUB.Count_And_Get (
6786 p_encoded => FND_API.g_false,
6787 p_count => x_msg_count,
6788 p_data => x_msg_data
6789 );
6790 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6791 WHEN OTHERS THEN
6792 ROLLBACK TO Attachment_XML;
6793 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6794 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
6795 IF FND_MSG_PUB.Check_Msg_Level
6796 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6797 THEN
6798 FND_MSG_PUB.Add_Exc_Msg
6799 (G_PKG_NAME, l_api_name);
6800 END IF;
6801 -- Standard call to get message count and if count=1, get the message
6802 FND_MSG_PUB.Count_And_Get (
6803 p_encoded => FND_API.g_false,
6804 p_count => x_msg_count,
6805 p_data => x_msg_data
6806 );
6807 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
6808 JTF_FM_UTL_V.PRINT_MESSAGE('END: '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6809 END Get_Multiple_Content_XML;
6810
6811 ---------------------------------------------------------------
6812 -- PROCEDURE
6813 -- Submit_Batch_Request
6814 --
6815 -- HISTORY
6816 -- 10/01/99 nyalaman Create.
6817 -- 10/29/02 sxkrishn added org_id and overloaded this method
6818 ---------------------------------------------------------------
6819
6820 PROCEDURE Submit_Batch_Request
6821 ( p_api_version IN NUMBER,
6822 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
6823 p_commit IN VARCHAR2 := FND_API.G_FALSE,
6824 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
6825 x_return_status OUT NOCOPY VARCHAR2,
6826 x_msg_count OUT NOCOPY NUMBER,
6827 x_msg_data OUT NOCOPY VARCHAR2,
6828 p_template_id IN NUMBER := NULL,
6829 p_subject IN VARCHAR2 := FND_API.G_MISS_CHAR,
6830 p_user_id IN NUMBER,
6831 p_source_code_id IN NUMBER := FND_API.G_MISS_NUM,
6832 p_source_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
6833 p_object_type IN VARCHAR2 := FND_API.G_MISS_CHAR,
6834 p_object_id IN NUMBER := FND_API.G_MISS_NUM,
6835 p_order_id IN NUMBER := FND_API.G_MISS_NUM,
6836 p_doc_id IN NUMBER := FND_API.G_MISS_NUM,
6837 p_doc_ref IN VARCHAR2 := FND_API.G_MISS_CHAR,
6838 p_list_type IN VARCHAR2,
6839 p_view_nm IN VARCHAR2 := FND_API.G_MISS_CHAR,
6840 p_party_id IN G_NUMBER_TBL_TYPE := L_NUMBER_TBL,
6841 p_party_name IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6842 p_printer IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6843 p_email IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6844 p_fax IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6845 p_file_path IN G_VARCHAR_TBL_TYPE := L_VARCHAR_TBL,
6846 p_server_id IN NUMBER := FND_API.G_MISS_NUM,
6847 p_queue_response IN VARCHAR2 := FND_API.G_FALSE,
6848 p_extended_header IN VARCHAR2 := FND_API.G_MISS_CHAR,
6849 p_content_xml IN VARCHAR2,
6850 p_request_id IN NUMBER,
6851 p_per_user_history IN VARCHAR2 := FND_API.G_FALSE
6852 ) IS
6853 l_api_name CONSTANT VARCHAR2(30) := 'SUBMIT_BATCH_REQUEST';
6854 l_api_version CONSTANT NUMBER := 1.0;
6855 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
6856 --
6857 l_user_id NUMBER := -1;
6858 l_login_user_id NUMBER := -1;
6859 l_login_user_status NUMBER;
6860 l_Error_Msg VARCHAR2(2000);
6861 --
6862 l_message VARCHAR2(32767);
6863 l_party_id NUMBER := -1;
6864 l_index BINARY_INTEGER;
6865 l_printer_count INTEGER;
6866 l_fax_count INTEGER;
6867 l_file_path_count INTEGER;
6868 l_email_count INTEGER;
6869 l_queue_response VARCHAR2(2) := 'B';
6870 --
6871 BEGIN
6872 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
6873 -- Standard begin of API savepoint
6874 SAVEPOINT Batch_Request;
6875
6876 IF NOT FND_API.Compatible_API_Call (
6877 l_api_version,
6878 p_api_version,
6879 l_api_name,
6880 G_PKG_NAME)
6881 THEN
6882 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6883 END IF;
6884
6885 --Initialize message list if p_init_msg_list is TRUE.
6886 IF FND_API.To_Boolean (p_init_msg_list) THEN
6887 FND_MSG_PUB.initialize;
6888 END IF;
6889
6890 -- Debug Message
6891 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
6892 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
6893 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
6894 FND_MSG_PUB.Add;
6895 END IF;
6896
6897 -- Initialize API return status to success
6898 x_return_status := FND_API.G_RET_STS_SUCCESS;
6899
6900 IF (p_list_type IS NULL) THEN
6901 l_Error_Msg := 'Must pass p_list_type parameter';
6902 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6903 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_LIST_TYPE');
6904 FND_MSG_PUB.Add;
6905 END IF;
6906 RAISE FND_API.G_EXC_ERROR;
6907 ELSIF (p_content_xml IS NULL) THEN
6908 l_Error_Msg := 'Must pass p_content_xml parameter';
6909 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6910 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_CONTENT_XML');
6911 FND_MESSAGE.Set_Token('ARG1','p_content_xml');
6912 FND_MSG_PUB.Add;
6913 END IF;
6914 RAISE FND_API.G_EXC_ERROR;
6915 END IF;
6916
6917 l_message := '<items>' || p_content_xml || '</items>';
6918 --Print_message('Message1: ' || substr(l_message, 1, 200));
6919
6920 IF (upper(p_list_type) = 'VIEW') THEN
6921 IF (p_view_nm IS NULL) THEN
6922 l_Error_Msg := 'Must pass p_view_name parameter';
6923 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6924 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_VIEW_NAME');
6925 FND_MSG_PUB.Add;
6926 END IF;
6927 RAISE FND_API.G_EXC_ERROR;
6928 ELSE
6929 JTF_FM_UTL_V.PRINT_MESSAGE('Creating View XML ..',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6930 l_message := l_message || '<batch>';
6931 l_message := l_message || '<view name="'||p_view_nm||'" > </view>';
6932 l_message := l_message || '</batch>';
6933 END IF;
6934
6935 ELSIF (upper(p_list_type) = 'ADDRESS') THEN
6936
6937 JTF_FM_UTL_V.PRINT_MESSAGE('Creating Batch XML ..',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6938 l_index := 0;
6939 -- Get the greatest index of the last entry in all the address tables.
6940 IF l_index < p_printer.LAST THEN
6941 l_index := p_printer.LAST;
6942 END IF;
6943 IF l_index < p_fax.LAST THEN
6944 l_index := p_fax.LAST;
6945 END IF;
6946 IF l_index < p_email.LAST THEN
6947 l_index := p_email.LAST;
6948 END IF;
6949 IF l_index < p_file_path.LAST THEN
6950 l_index := p_file_path.LAST;
6951 END IF;
6952 JTF_FM_UTL_V.PRINT_MESSAGE (to_char(l_index),JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6953
6954 -- Get the greatest index of the last entry in all the address tables.
6955 --SELECT GREATEST(l_email_count, l_printer_count, l_file_path_count, l_fax_count)
6956 --INTO l_index FROM DUAL;
6957
6958 IF (l_index = 0) THEN
6959 l_Error_Msg := 'Must pass batch address list';
6960 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
6961 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_BATCH_LIST');
6962 FND_MSG_PUB.Add;
6963 END IF;
6964 RAISE FND_API.G_EXC_ERROR;
6965 ELSE
6966 l_message := l_message||'<batch><list>';
6967 JTF_FM_UTL_V.PRINT_MESSAGE('Getting the greatest value ..'||TO_CHAR(l_index),JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
6968 FOR i IN 1..l_index LOOP
6969
6970 -- Check if atleast one destination address has been passed
6971 IF(p_printer.EXISTS(i) OR p_email.EXISTS(i) OR p_file_path.EXISTS(i) OR p_fax.EXISTS(i)) THEN
6972
6973 -- For each table check if the record exists. If yes then add it to the XML
6974 l_message := l_message||'<party ';
6975 IF p_party_id.EXISTS(i)
6976 THEN
6977 l_message := l_message || ' id= "'||to_char(p_party_id(i))||'"> ';
6978 ELSE
6979 l_message := l_message || '>';
6980 END IF;
6981
6982 l_message := l_message||'<media_type>';
6983 IF p_printer.EXISTS(i) THEN
6984 l_message := l_message||'<printer>'||p_printer(i)||'</printer>';
6985 END IF;
6986 IF p_file_path.EXISTS(i) THEN
6987 l_message := l_message||'<path>'||p_file_path(i)||'</path>';
6988 END IF;
6989 IF p_email.EXISTS(i) THEN
6990 l_message := l_message||'<email>'||p_email(i)||'</email>';
6991 END IF;
6992 IF p_fax.EXISTS(i) THEN
6993 l_message := l_message||'<fax>'||p_fax(i)||'</fax>';
6994 END IF;
6995 l_message := l_message||'</media_type></party>';
6996
6997
6998 END IF;
6999 END LOOP;
7000 IF l_index > 0
7001 THEN
7002 l_message := l_message||'</list>';
7003 END IF;
7004 l_message := l_message||'</batch>';
7005 END IF;
7006 ELSE
7007 l_Error_Msg := 'The value of p_list_type parameter must be either "VIEW" or "ADDRESS"';
7008 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_INVALID_LISTTYPE',p_list_type);
7009 RAISE FND_API.G_EXC_ERROR;
7010 END IF;
7011
7012 -- Check if the agent wants detailed history
7013 IF p_per_user_history = FND_API.G_FALSE THEN
7014 l_party_id := -229929;
7015 END IF;
7016
7017
7018 Send_Request
7019 ( p_api_version => p_api_version,
7020 p_init_msg_list => p_init_msg_list,
7021 p_commit => p_commit,
7022 p_validation_level => p_validation_level,
7023 x_return_status => x_return_status ,
7024 x_msg_count => x_msg_count,
7025 x_msg_data => x_msg_data,
7026 p_template_id => p_template_id,
7027 p_subject => p_subject,
7028 p_party_id => l_party_id,
7029 p_user_id => p_user_id,
7030 p_doc_id => p_doc_id,
7031 p_doc_ref => p_doc_ref,
7032 p_priority => G_PRIORITY_BATCH_REQUEST,
7033 p_source_code_id => p_source_code_id,
7034 p_source_code => p_source_code,
7035 p_object_type => p_object_type,
7036 p_object_id => p_object_id,
7037 p_order_id => p_order_id,
7038 p_server_id => p_server_id,
7039 p_queue_response => l_queue_response,
7040 p_extended_header => p_extended_header,
7041 p_content_xml => l_message,
7042 p_request_id => p_request_id
7043 );
7044
7045 -- Success message
7046 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
7047 THEN
7048 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
7049 FND_MESSAGE.Set_Token('ARG1', l_full_name);
7050 FND_MSG_PUB.Add;
7051 END IF;
7052 --Standard check of commit
7053 IF FND_API.To_Boolean ( p_commit ) THEN
7054 COMMIT WORK;
7055 END IF;
7056 -- Debug Message
7057 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
7058 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
7059 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
7060 FND_MSG_PUB.Add;
7061 END IF;
7062 --Standard call to get message count and if count=1, get the message
7063 FND_MSG_PUB.Count_And_Get (
7064 p_encoded => FND_API.g_false,
7065 p_count => x_msg_count,
7066 p_data => x_msg_data
7067 );
7068 EXCEPTION
7069 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7070 ROLLBACK TO Batch_Request;
7071 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7072 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7073 -- Standard call to get message count and if count=1, get the message
7074 FND_MSG_PUB.Count_And_Get (
7075 p_encoded => FND_API.g_false,
7076 p_count => x_msg_count,
7077 p_data => x_msg_data
7078 );
7079 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7080 WHEN FND_API.G_EXC_ERROR THEN
7081 ROLLBACK TO Batch_Request;
7082 x_return_status := FND_API.G_RET_STS_ERROR;
7083 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7084 -- Standard call to get message count and if count=1, get the message
7085 FND_MSG_PUB.Count_And_Get (
7086 p_encoded => FND_API.g_false,
7087 p_count => x_msg_count,
7088 p_data => x_msg_data
7089 );
7090 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7091 WHEN OTHERS THEN
7092 ROLLBACK TO Batch_Request;
7093 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7094 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
7095 IF FND_MSG_PUB.Check_Msg_Level
7096 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7097 THEN
7098 FND_MSG_PUB.Add_Exc_Msg
7099 (G_PKG_NAME, l_api_name);
7100 END IF;
7101 -- Standard call to get message count and if count=1, get the message
7102 FND_MSG_PUB.Count_And_Get (
7103 p_encoded => FND_API.g_false,
7104 p_count => x_msg_count,
7105 p_data => x_msg_data
7106 );
7107 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7108
7109 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
7110 END SUBMIT_BATCH_REQUEST;
7111
7112 ---------------------------------------------------------------
7113 -- PROCEDURE
7114 -- Submit_Mass_Request_NEW
7115 -- DESCRIPTION
7116 -- Handle large batches using a query_id and bind variables
7117 -- to determine the recipient list.
7118 --
7119 -- HISTORY
7120 -- 10/01/99 nyalaman Create.
7121 -- 9-Aug-2001 mpetrosi copied and modified from submit_batch_request
7122 ---------------------------------------------------------------
7123
7124 PROCEDURE Submit_Mass_Request
7125 ( p_api_version IN NUMBER,
7126 p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE,
7127 p_commit IN VARCHAR2 := FND_API.G_FALSE,
7128 p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL,
7129 x_return_status OUT NOCOPY VARCHAR2,
7130 x_msg_count OUT NOCOPY NUMBER,
7131 x_msg_data OUT NOCOPY VARCHAR2,
7132 p_template_id IN NUMBER := NULL,
7133 p_subject IN VARCHAR2 := FND_API.G_MISS_CHAR,
7134 p_user_id IN NUMBER,
7135 p_source_code_id IN NUMBER := FND_API.G_MISS_NUM,
7136 p_source_code IN VARCHAR2 := FND_API.G_MISS_CHAR,
7137 p_object_type IN VARCHAR2 := FND_API.G_MISS_CHAR,
7138 p_object_id IN NUMBER := FND_API.G_MISS_NUM,
7139 p_order_id IN NUMBER := FND_API.G_MISS_NUM,
7140 p_doc_id IN NUMBER := FND_API.G_MISS_NUM,
7141 p_doc_ref IN VARCHAR2 := FND_API.G_MISS_CHAR,
7142 p_list_type IN VARCHAR2, --deprecated
7143 p_view_nm IN VARCHAR2 := FND_API.G_MISS_CHAR,
7144 p_server_id IN NUMBER := FND_API.G_MISS_NUM,
7145 p_queue_response IN VARCHAR2 := FND_API.G_FALSE,
7146 p_extended_header IN VARCHAR2 := FND_API.G_MISS_CHAR,
7147 p_content_xml IN VARCHAR2,
7148 p_request_id IN NUMBER,
7149 p_per_user_history IN VARCHAR2 := FND_API.G_FALSE,
7150 p_mass_query_id IN NUMBER, --deprecated
7151 p_mass_bind_var IN JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL, --deprecated
7152 p_mass_bind_var_type IN JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL, --deprecated
7153 p_mass_bind_val IN JTF_FM_REQUEST_GRP.G_VARCHAR_TBL_TYPE := JTF_FM_REQUEST_GRP.L_VARCHAR_TBL --deprecated
7154
7155 ) IS
7156 l_api_name CONSTANT VARCHAR2(30) := 'SUBMIT_MASS_REQUEST';
7157 l_api_version CONSTANT NUMBER := 1.0;
7158 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
7159
7160 l_queue_response VARCHAR2(2) := 'M';
7161 --
7162 l_user_id NUMBER := -1;
7163 l_login_user_id NUMBER := -1;
7164 l_login_user_status NUMBER;
7165 l_Error_Msg VARCHAR2(2000);
7166 --
7167 l_message VARCHAR2(32767);
7168 l_party_id NUMBER := -1;
7169 l_index BINARY_INTEGER;
7170 l_printer_count INTEGER;
7171 l_fax_count INTEGER;
7172 l_file_path_count INTEGER;
7173 l_email_count INTEGER;
7174 l_content_id NUMBER ;
7175 x_citem_name VARCHAR2(250);
7176 x_query_id NUMBER;
7177 x_item_version_id NUMBER;
7178 x_html VARCHAR2(15);
7179 l_temp VARCHAR2(2000);
7180 l_head VARCHAR2(2000);
7181 l_tail VARCHAR2(2000);
7182
7183
7184 --
7185 BEGIN
7186 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
7187
7188 -- Standard begin of API savepoint
7189 SAVEPOINT Mass_Request;
7190
7191 IF NOT FND_API.Compatible_API_Call (
7192 l_api_version,
7193 p_api_version,
7194 l_api_name,
7195 G_PKG_NAME)
7196 THEN
7197 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
7198 END IF;
7199
7200 --Initialize message list if p_init_msg_list is TRUE.
7201 IF FND_API.To_Boolean (p_init_msg_list) THEN
7202 FND_MSG_PUB.initialize;
7203 END IF;
7204
7205 -- Debug Message
7206 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
7207 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
7208 FND_MESSAGE.Set_Token('ARG1',l_full_name||': Start');
7209 FND_MSG_PUB.Add;
7210 END IF;
7211
7212 -- Initialize API return status to success
7213 x_return_status := FND_API.G_RET_STS_SUCCESS;
7214
7215 IF (p_content_xml IS NULL) THEN
7216 l_Error_Msg := 'Must pass p_content_xml parameter';
7217
7218 IF FND_MSG_PUB.check_msg_level(FND_MSG_PUB.g_msg_lvl_error) THEN
7219 FND_MESSAGE.set_name('JTF', 'JTF_FM_API_MISSING_CONTENT_XML');
7220 FND_MESSAGE.Set_Token('ARG1','p_content_xml');
7221 FND_MSG_PUB.Add;
7222 END IF;
7223 RAISE FND_API.G_EXC_ERROR;
7224
7225 ELSE
7226 -- check if content_source is 'ocm', else throw error
7227 -- Mass request is supported only for OCM contents
7228
7229 -- Proceed
7230 IF(INSTR(p_content_xml,'query_id') >0)
7231 THEN
7232 JTF_FM_UTL_V.PRINT_MESSAGE('Item item has a valid query ',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
7233 l_message := '<items>' || p_content_xml || '</items><batch><mass/></batch>';
7234 ELSE
7235 -- throw error, item should have a query assoc for mass requests
7236 l_Error_Msg := 'Content must have a valid query associated with it.';
7237 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_MISSING_OCM_QUERY',l_content_id);
7238 RAISE FND_API.G_EXC_ERROR;
7239 END IF;
7240
7241 END IF;
7242
7243
7244 -- Check if the agent wants detailed history
7245 IF p_per_user_history = FND_API.G_FALSE THEN
7246 l_party_id := -229929;
7247 END IF;
7248
7249 JTF_FM_UTL_V.Print_message('Before Submit Request',JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
7250
7251 JTF_FM_UTL_V.Print_message('Message: ' || substr(l_message, 1, 200),JTF_FM_UTL_V.G_LEVEL_STATEMENT,l_full_name);
7252
7253 Send_Request
7254 ( p_api_version => p_api_version,
7255 p_init_msg_list => p_init_msg_list,
7256 p_commit => p_commit,
7257 p_validation_level => p_validation_level,
7258 x_return_status => x_return_status ,
7259 x_msg_count => x_msg_count,
7260 x_msg_data => x_msg_data,
7261 p_template_id => p_template_id,
7262 p_subject => p_subject,
7263 p_party_id => l_party_id,
7264 p_user_id => p_user_id,
7265 p_doc_id => p_doc_id,
7266 p_doc_ref => p_doc_ref,
7267 p_priority => JTF_FM_REQUEST_GRP.G_PRIORITY_BATCH_REQUEST,
7268 p_source_code_id => p_source_code_id,
7269 p_source_code => p_source_code,
7270 p_object_type => p_object_type,
7271 p_object_id => p_object_id,
7272 p_server_id => p_server_id,
7273 p_queue_response => l_queue_response,
7274 p_extended_header => p_extended_header,
7275 p_content_xml => l_message,
7276 p_request_id => p_request_id
7277 );
7278
7279 -- Success message
7280 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
7281 THEN
7282 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
7283 FND_MESSAGE.Set_Token('ARG1', l_full_name);
7284 FND_MSG_PUB.Add;
7285 END IF;
7286 --Standard check of commit
7287 IF FND_API.To_Boolean ( p_commit ) THEN
7288 COMMIT WORK;
7289 END IF;
7290 -- Debug Message
7291 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.G_MSG_LVL_DEBUG_LOW) THEN
7292 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_DEBUG_MESSAGE');
7293 FND_MESSAGE.Set_Token('ARG1',l_full_name||': End');
7294 FND_MSG_PUB.Add;
7295 END IF;
7296 --Standard call to get message count and if count=1, get the message
7297 FND_MSG_PUB.Count_And_Get (
7298 p_encoded => FND_API.g_false,
7299 p_count => x_msg_count,
7300 p_data => x_msg_data
7301 );
7302 EXCEPTION
7303 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7304 ROLLBACK TO Mass_Request;
7305 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7306 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7307 -- Standard call to get message count and if count=1, get the message
7308 FND_MSG_PUB.Count_And_Get (
7309 p_encoded => FND_API.g_false,
7310 p_count => x_msg_count,
7311 p_data => x_msg_data
7312 );
7313 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7314 WHEN FND_API.G_EXC_ERROR THEN
7315 ROLLBACK TO Mass_Request;
7316 x_return_status := FND_API.G_RET_STS_ERROR;
7317 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7318 -- Standard call to get message count and if count=1, get the message
7319 FND_MSG_PUB.Count_And_Get (
7320 p_encoded => FND_API.g_false,
7321 p_count => x_msg_count,
7322 p_data => x_msg_data
7323 );
7324 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7325 WHEN OTHERS THEN
7326 ROLLBACK TO Mass_Request;
7327 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7328 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
7329 IF FND_MSG_PUB.Check_Msg_Level
7330 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7331 THEN
7332 FND_MSG_PUB.Add_Exc_Msg
7333 (G_PKG_NAME, l_api_name);
7334 END IF;
7335 -- Standard call to get message count and if count=1, get the message
7336 FND_MSG_PUB.Count_And_Get (
7337 p_encoded => FND_API.g_false,
7338 p_count => x_msg_count,
7339 p_data => x_msg_data
7340 );
7341 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7342 JTF_FM_UTL_V.PRINT_MESSAGE('END '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
7343 END Submit_Mass_Request;
7344
7345 -----------------------------------------------------------
7346 -- PROCEDURE
7347 -- PAUSE_BATCH
7348 --
7349 -- HISTORY
7350 -----------------------------------------------------------
7351 PROCEDURE PAUSE_RESUME_REQUEST
7352 (
7353 p_api_version IN NUMBER,
7354 p_init_msg_list IN VARCHAR2 ,
7355 p_commit IN VARCHAR2,
7356 p_validation_level IN NUMBER,
7357 x_return_status OUT NOCOPY VARCHAR2,
7358 x_msg_count OUT NOCOPY NUMBER,
7359 x_msg_data OUT NOCOPY VARCHAR2,
7360 p_request_id IN NUMBER,
7361 p_what_to_do IN VARCHAR
7362
7363 )
7364 IS
7365 l_api_name CONSTANT VARCHAR2(30) := 'PAUSE_RESUME';
7366 l_api_version CONSTANT NUMBER := 1.0;
7367 l_full_name CONSTANT VARCHAR2(2000) := G_PKG_NAME ||'.'|| l_api_name;
7368 l_error_msg VARCHAR2(2000);
7369 l_dequeue_name VARCHAR2(1000);
7370 l_enqueue_name VARCHAR2(1000) ;
7371 l_server_id NUMBER ;
7372 l_request_type VARCHAR(2);
7373 l_request_status VARCHAR2(30);
7374 l_message_handle RAW(16);
7375 l_message_handle_new RAW(16);
7376 l_meaning VARCHAR2(20);
7377 l_enqueue_options dbms_aq.enqueue_options_t;
7378 l_message_properties dbms_aq.message_properties_t;
7379 l_request_queue VARCHAR2(1000);
7380 l_footprint_xml VARCHAR2(32767);
7381
7382 --GET THE SERVER ID, message and QueueType
7383 /**
7384
7385 This cursor returns the ACTIVE queuename.
7386
7387 Assumption is one mass request would go to one
7388 one server only.
7389 In the future if this functionality changes,
7390 the cursor has to change
7391 **/
7392 --
7393
7394 CURSOR CMASSMSG IS
7395 SELECT AQ_MSG_ID
7396 FROM JTF_FM_REQUESTS_AQ
7397 WHERE REQUEST_ID = p_request_id;
7398
7399 --
7400 CURSOR CSTATUS( p_request_id NUMBER) IS
7401 SELECT outcome_code, request_type, MESSAGE_ID, SERVER_ID
7402 FROM JTF_FM_REQUEST_HISTORY_ALL
7403 WHERE HIST_REQ_ID = p_request_id;
7404
7405
7406 BEGIN
7407 JTF_FM_UTL_V.PRINT_MESSAGE('BEGIN: '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
7408 -- Standard begin of API savepoint
7409 SAVEPOINT PAUSE_RESUME;
7410 -- Initialize API return status to success
7411 x_return_status := FND_API.G_RET_STS_SUCCESS;
7412
7413 --GET THE SERVER ID
7414
7415 OPEN CSTATUS(p_request_id);
7416 FETCH CSTATUS INTO l_request_status, l_request_type,l_message_handle, l_server_id ;
7417
7418 IF(CSTATUS%NOTFOUND)
7419 THEN
7420 CLOSE CSTATUS;
7421 l_Error_Msg := 'Could not find REQUEST DATA in the database';
7422 JTF_FM_UTL_V.Handle_ERROR('JTF_FM_API_REQUEST_NOTFOUND' ,to_char(p_request_id));
7423
7424 END IF; -- End IF(CSTATUS%NOTFOUND) THEN
7425 CLOSE CSTATUS;
7426
7427 --END CURSOR
7428 IF l_request_type = 'M'
7429 THEN
7430 -- Proceed
7431 IF upper(p_what_to_do) = 'PAUSE'
7432 THEN
7433 IF l_request_status = 'SUBMITTED'
7434 THEN
7435
7436 l_dequeue_name := GET_QUEUE_NAME('M',l_server_id);
7437 l_enqueue_name := GET_QUEUE_NAME('MP',l_server_id);
7438
7439 -- Call Swap_queues procedure to swap
7440
7441 SWAP_QUEUES(l_dequeue_name,l_message_handle,l_enqueue_name,l_message_handle_new);
7442
7443 l_meaning := 'PAUSED';
7444
7445 UPDATE_STATUS_HISTORY(p_request_id,l_meaning,l_message_handle_new);
7446
7447 ELSIF l_request_status = 'IN_PROCESS'
7448 THEN
7449
7450 -- Based on the req type, get the Queue Name
7451 -- If it was a Mass req, check JTF_FM_REQUESTS_AQ as the mass req would have
7452 -- been split into several batch requests.
7453 -- Remove them from the queue
7454 -- Mass request, so get records from JTF_FM_REQUESTS_AQ and dequeue them
7455 OPEN CMASSMSG;
7456 IF(CMASSMSG%NOTFOUND)
7457 THEN
7458 CLOSE CMASSMSG;
7459 l_Error_Msg := 'Could not find REQUEST DATA in the database';
7460 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_REQUEST_NOTFOUND',to_char(p_request_id));
7461 END IF; -- End IF(CMASSMSG%NOTFOUND)
7462 l_dequeue_name := GET_QUEUE_NAME('B',l_server_id);
7463 l_enqueue_name := GET_QUEUE_NAME('BP',l_server_id);
7464
7465 LOOP -- looping through all the batches queued and removing them
7466 FETCH CMASSMSG INTO l_message_handle;
7467 EXIT WHEN CMASSMSG%NOTFOUND;
7468 -- Call Swap_queues procedure to swap
7469
7470 SWAP_QUEUES(l_dequeue_name,l_message_handle,l_enqueue_name,l_message_handle_new);
7471
7472 l_meaning := 'PAUSED';
7473 --UPDATE JTF_FM_REQUESTS_AQ with the new information
7474 UPDATE_REQUESTS_AQ(l_message_handle_new,p_request_id ,'BP', l_message_handle);
7475
7476 END LOOP;
7477
7478 CLOSE CMASSMSG;
7479
7480 l_meaning := 'PAUSED';
7481
7482 UPDATE_STATUS_HISTORY(p_request_id,l_meaning,l_message_handle_new);
7483
7484 ---??? Doesn't make sense to update new msg
7485 --handle info as the mass has been split into batch
7486 ELSIF l_request_status = 'PAUSED' THEN
7487 l_Error_Msg := 'The request has already been paused. ';
7488 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_ALREADY_PAUSED', to_char(p_request_id));
7489
7490 ELSE -- ELSIF l_request_status = 'IN_PROCESS'
7491
7492 l_Error_Msg := 'Too Late, Request has already been processed. ';
7493 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_PAUSE_RES_TOO_LATE', to_char(p_request_id));
7494
7495 END IF; -- ELSIF l_request_status
7496
7497 ELSIF upper(p_what_to_do) = 'RESUME'
7498 THEN
7499 -- First check if the request has been paused
7500 IF l_request_status = 'PAUSED'
7501 THEN
7502
7503
7504 OPEN CMASSMSG;
7505 IF(CMASSMSG%NOTFOUND)
7506 THEN
7507 CLOSE CMASSMSG;
7508 -- This means it is in the Mass Pause Queue
7509
7510 l_dequeue_name := GET_QUEUE_NAME('MP',l_server_id);
7511 l_enqueue_name := GET_QUEUE_NAME('M',l_server_id);
7512
7513 -- Call Swap_queues procedure to swap
7514
7515 SWAP_QUEUES(l_dequeue_name,l_message_handle,l_enqueue_name,l_message_handle_new);
7516
7517 l_meaning := 'RESUMED';
7518 --UPDATE JTF_FM_REQUESTS_AQ with the new information
7519 UPDATE_REQUESTS_AQ(l_message_handle_new,p_request_id ,'M',l_message_handle);
7520 END IF; -- IF(CMASSMSG%NOTFOUND)
7521
7522
7523 l_dequeue_name := GET_QUEUE_NAME('BP',l_server_id);
7524 l_enqueue_name := GET_QUEUE_NAME('B',l_server_id);
7525
7526 LOOP -- looping through all the batches queued and removing them
7527 FETCH CMASSMSG INTO l_message_handle;
7528 EXIT WHEN CMASSMSG%NOTFOUND;
7529 -- Call Swap_queues procedure to swap
7530
7531 SWAP_QUEUES(l_dequeue_name,l_message_handle,l_enqueue_name,l_message_handle_new);
7532
7533 l_meaning := 'RESUMED';
7534 --UPDATE JTF_FM_REQUESTS_AQ with the new information
7535 UPDATE_REQUESTS_AQ(l_message_handle_new,p_request_id ,'B',l_message_handle);
7536
7537 END LOOP;
7538
7539 CLOSE CMASSMSG;
7540
7541 l_meaning := 'RESUMED';
7542
7543
7544 UPDATE_STATUS_HISTORY(p_request_id,l_meaning,l_message_handle_new);
7545 -- Create the footprint XML and enque the message
7546
7547 l_footprint_xml := '<ffm_request_alert id="' ||p_request_id || '" type="resumed"/> ';
7548
7549 -- Enqueue the message into the request queue
7550 l_request_queue := GET_QUEUE_NAME('M',l_server_id);
7551 dbms_aq.enqueue(queue_name => l_request_queue,
7552 enqueue_options => l_enqueue_options,
7553 message_properties => l_message_properties,
7554 payload => UTL_RAW.CAST_TO_RAW(l_footprint_xml), msgid => l_message_handle);
7555
7556 ELSIF l_request_status = 'RESUMED' THEN
7557 l_Error_Msg := 'The request has already been resumed. ';
7558 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_ALREADY_RESUMED', to_char(p_request_id));
7559
7560 ---??? Doesn't make sense to update new msg handle info as the mass has been split into batch
7561 ELSE -- IF NOT l_request_status = 'PAUSED'
7562 -- Throw Error
7563 l_Error_Msg := 'Only paused requests can be resumed';
7564 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_INVALID_RESUME_REQUEST', to_char(p_request_id));
7565 END IF; -- END IF l_request_status = 'PAUSED'
7566
7567 ELSE -- p_what_to_do
7568 l_Error_Msg := 'Pause_resume can be called only for Mass Requests. ';
7569
7570 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_INVALID_RESUME_REQUEST', to_char(p_request_id));
7571
7572 END IF; -- End p_what_to_do
7573
7574 ELSE
7575 -- Throw error
7576 l_Error_Msg := 'Pause_resume can be called only for Mass Requests. ';
7577 JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_INVALID_RESUME_REQUEST', to_char(p_request_id));
7578
7579 END IF;
7580
7581 -- Success message
7582
7583 -- Success message
7584 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_SUCCESS)
7585 THEN
7586 FND_MESSAGE.Set_Name('JTF', 'JTF_FM_API_SUCCESS_MESSAGE');
7587 FND_MESSAGE.Set_Token('ARG1', l_full_name);
7588 FND_MSG_PUB.Add;
7589 END IF;
7590 --JTF_FM_UTL_V.HANDLE_ERROR('JTF_FM_API_SUCCESS_MESSAGE', l_full_name);
7591 --Standard check of commit
7592 IF FND_API.To_Boolean ( p_commit )
7593 THEN
7594 COMMIT WORK;
7595 END IF;
7596
7597 --Standard call to get message count and if count=1, get the message
7598 FND_MSG_PUB.Count_And_Get (
7599 p_encoded => FND_API.g_false,
7600 p_count => x_msg_count,
7601 p_data => x_msg_data
7602 );
7603
7604 IF FND_MSG_PUB.Check_Msg_level (FND_MSG_PUB.g_msg_lvl_success)
7605 THEN
7606 FND_MESSAGE.Set_Name('JTF','JTF_FM_API_PAUSE_RESUME_SUCCES');
7607 FND_MSG_PUB.Add;
7608 END IF;
7609 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7610 EXCEPTION
7611 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
7612 ROLLBACK TO PAUSE_RESUME;
7613 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7614 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7615 -- Standard call to get message count and if count=1, get the message
7616 FND_MSG_PUB.Count_And_Get (
7617 p_encoded => FND_API.g_false,
7618 p_count => x_msg_count,
7619 p_data => x_msg_data
7620 );
7621 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7622 WHEN FND_API.G_EXC_ERROR THEN
7623 ROLLBACK TO PAUSE_RESUME;
7624 x_return_status := FND_API.G_RET_STS_ERROR;
7625 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, l_Error_Msg);
7626 -- Standard call to get message count and if count=1, get the message
7627 FND_MSG_PUB.Count_And_Get (
7628 p_encoded => FND_API.g_false,
7629 p_count => x_msg_count,
7630 p_data => x_msg_data
7631 );
7632 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7633 WHEN OTHERS THEN
7634 ROLLBACK TO PAUSE_RESUME;
7635 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
7636 JTF_FM_UTL_V.ADD_ERROR_MESSAGE (l_api_name, SQLERRM);
7637 IF FND_MSG_PUB.Check_Msg_Level
7638 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
7639 THEN
7640 FND_MSG_PUB.Add_Exc_Msg
7641 (G_PKG_NAME, l_api_name);
7642 END IF;
7643 -- Standard call to get message count and if count=1, get the message
7644 FND_MSG_PUB.Count_And_Get (
7645 p_encoded => FND_API.g_false,
7646 p_count => x_msg_count,
7647 p_data => x_msg_data
7648 );
7649 JTF_FM_UTL_V.GET_ERROR_MESSAGE(x_msg_data);
7650
7651 JTF_FM_UTL_V.PRINT_MESSAGE('END: '|| l_full_name,JTF_FM_UTL_V.G_LEVEL_PROCEDURE,l_full_name);
7652 END PAUSE_RESUME_REQUEST;
7653
7654 END JTF_FM_Request_GRP;