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